Commit f8f793ac authored by mercury233's avatar mercury233

change CardId enum to class

parent 138d2a2c
......@@ -10,28 +10,28 @@ namespace WindBot.Game.AI.Decks
[Deck("Blackwing", "AI_Blackwing", "NotFinished")]
public class BlackwingExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
KrisTheCrackOfDawn = 81105204,
SiroccoTheDawn = 75498415,
ShuraTheBlueFlame = 58820853,
BoraTheSpear = 49003716,
KalutTheMoonShadow = 85215458,
GaleTheWhirlwind = 2009101,
BlizzardTheFarNorth = 22835145,
MistralTheSilverShield = 46710683,
Raigeki = 12580477,
DarkHole = 53129443,
MysticalSpaceTyphoon = 5318639,
BlackWhirlwind = 91351370,
MirrorForce = 44095762,
DeltaCrowAntiReverse = 59839761,
DimensionalPrison = 70342110,
SilverwindTheAscendant = 33236860,
BlackWingedDragon = 9012916,
ArmorMaster = 69031175,
ArmedWing = 76913983,
GramTheShiningStar = 17377751
public static int KrisTheCrackOfDawn = 81105204;
public static int SiroccoTheDawn = 75498415;
public static int ShuraTheBlueFlame = 58820853;
public static int BoraTheSpear = 49003716;
public static int KalutTheMoonShadow = 85215458;
public static int GaleTheWhirlwind = 2009101;
public static int BlizzardTheFarNorth = 22835145;
public static int MistralTheSilverShield = 46710683;
public static int Raigeki = 12580477;
public static int DarkHole = 53129443;
public static int MysticalSpaceTyphoon = 5318639;
public static int BlackWhirlwind = 91351370;
public static int MirrorForce = 44095762;
public static int DeltaCrowAntiReverse = 59839761;
public static int DimensionalPrison = 70342110;
public static int SilverwindTheAscendant = 33236860;
public static int BlackWingedDragon = 9012916;
public static int ArmorMaster = 69031175;
public static int ArmedWing = 76913983;
public static int GramTheShiningStar = 17377751;
}
public BlackwingExecutor(GameAI ai, Duel duel)
......@@ -39,45 +39,45 @@ namespace WindBot.Game.AI.Decks
{
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, (int)CardId.BlackWhirlwind, BlackWhirlwindEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.KrisTheCrackOfDawn);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.KrisTheCrackOfDawn);
AddExecutor(ExecutorType.Summon, (int)CardId.SiroccoTheDawn, SiroccoTheDawnSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.ShuraTheBlueFlame, ShuraTheBlueFlameSummon);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.ShuraTheBlueFlame);
AddExecutor(ExecutorType.SpSummon, (int)CardId.BoraTheSpear);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.BoraTheSpear);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.KalutTheMoonShadow, KalutTheMoonShadowSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GaleTheWhirlwind);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.GaleTheWhirlwind);
AddExecutor(ExecutorType.Summon, (int)CardId.BlizzardTheFarNorth, BlizzardTheFarNorthSummon);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.MistralTheSilverShield);
AddExecutor(ExecutorType.SpSummon, (int)CardId.SilverwindTheAscendant);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ArmorMaster);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GramTheShiningStar);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ArmedWing);
AddExecutor(ExecutorType.SpSummon, (int)CardId.BlackWingedDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.DimensionalPrison, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.DeltaCrowAntiReverse, DeltaCrowAntiReverseEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.BlizzardTheFarNorth);
AddExecutor(ExecutorType.Activate, (int)CardId.ShuraTheBlueFlame);
AddExecutor(ExecutorType.Activate, (int)CardId.BoraTheSpear, BoraTheSpearEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.KalutTheMoonShadow, AttackUpEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.SiroccoTheDawn, AttackUpEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GaleTheWhirlwind, GaleTheWhirlwindEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.SilverwindTheAscendant);
AddExecutor(ExecutorType.Activate, (int)CardId.BlackWingedDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.ArmorMaster);
AddExecutor(ExecutorType.Activate, (int)CardId.ArmedWing);
AddExecutor(ExecutorType.Activate, (int)CardId.GramTheShiningStar);
AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, CardId.BlackWhirlwind, BlackWhirlwindEffect);
AddExecutor(ExecutorType.SpSummon, CardId.KrisTheCrackOfDawn);
AddExecutor(ExecutorType.SummonOrSet, CardId.KrisTheCrackOfDawn);
AddExecutor(ExecutorType.Summon, CardId.SiroccoTheDawn, SiroccoTheDawnSummon);
AddExecutor(ExecutorType.Summon, CardId.ShuraTheBlueFlame, ShuraTheBlueFlameSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.ShuraTheBlueFlame);
AddExecutor(ExecutorType.SpSummon, CardId.BoraTheSpear);
AddExecutor(ExecutorType.SummonOrSet, CardId.BoraTheSpear);
AddExecutor(ExecutorType.SummonOrSet, CardId.KalutTheMoonShadow, KalutTheMoonShadowSummon);
AddExecutor(ExecutorType.SpSummon, CardId.GaleTheWhirlwind);
AddExecutor(ExecutorType.SummonOrSet, CardId.GaleTheWhirlwind);
AddExecutor(ExecutorType.Summon, CardId.BlizzardTheFarNorth, BlizzardTheFarNorthSummon);
AddExecutor(ExecutorType.MonsterSet, CardId.MistralTheSilverShield);
AddExecutor(ExecutorType.SpSummon, CardId.SilverwindTheAscendant);
AddExecutor(ExecutorType.SpSummon, CardId.ArmorMaster);
AddExecutor(ExecutorType.SpSummon, CardId.GramTheShiningStar);
AddExecutor(ExecutorType.SpSummon, CardId.ArmedWing);
AddExecutor(ExecutorType.SpSummon, CardId.BlackWingedDragon);
AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.DimensionalPrison, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.DeltaCrowAntiReverse, DeltaCrowAntiReverseEffect);
AddExecutor(ExecutorType.Activate, CardId.BlizzardTheFarNorth);
AddExecutor(ExecutorType.Activate, CardId.ShuraTheBlueFlame);
AddExecutor(ExecutorType.Activate, CardId.BoraTheSpear, BoraTheSpearEffect);
AddExecutor(ExecutorType.Activate, CardId.KalutTheMoonShadow, AttackUpEffect);
AddExecutor(ExecutorType.Activate, CardId.SiroccoTheDawn, AttackUpEffect);
AddExecutor(ExecutorType.Activate, CardId.GaleTheWhirlwind, GaleTheWhirlwindEffect);
AddExecutor(ExecutorType.Activate, CardId.SilverwindTheAscendant);
AddExecutor(ExecutorType.Activate, CardId.BlackWingedDragon);
AddExecutor(ExecutorType.Activate, CardId.ArmorMaster);
AddExecutor(ExecutorType.Activate, CardId.ArmedWing);
AddExecutor(ExecutorType.Activate, CardId.GramTheShiningStar);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
......@@ -91,7 +91,7 @@ namespace WindBot.Game.AI.Decks
private bool ShuraTheBlueFlameSummon()
{
if (Bot.HasInMonstersZone((int)CardId.SiroccoTheDawn) && Bot.GetMonsters().GetHighestAttackMonster().Attack < 3800)
if (Bot.HasInMonstersZone(CardId.SiroccoTheDawn) && Bot.GetMonsters().GetHighestAttackMonster().Attack < 3800)
return true;
return false;
}
......@@ -101,7 +101,7 @@ namespace WindBot.Game.AI.Decks
if (Card.Location == CardLocation.Hand && Bot.HasInSpellZone(Card.Id))
return false;
if (ActivateDescription == AI.Utils.GetStringId((int)Card.Id,0))
AI.SelectCard((int)CardId.GaleTheWhirlwind);
AI.SelectCard(CardId.GaleTheWhirlwind);
return true;
}
......@@ -118,7 +118,7 @@ namespace WindBot.Game.AI.Decks
{
List<ClientCard> monster = Bot.GetMonsters();
foreach (ClientCard card in monster)
if (card != null && card.Id == (int)CardId.KrisTheCrackOfDawn || card.Id == (int)CardId.KalutTheMoonShadow || card.Id == (int)CardId.GaleTheWhirlwind || card.Id == (int)CardId.BoraTheSpear || card.Id == (int)CardId.SiroccoTheDawn || card.Id == (int)CardId.ShuraTheBlueFlame || card.Id == (int)CardId.BlizzardTheFarNorth)
if (card != null && card.Id == CardId.KrisTheCrackOfDawn || card.Id == CardId.KalutTheMoonShadow || card.Id == CardId.GaleTheWhirlwind || card.Id == CardId.BoraTheSpear || card.Id == CardId.SiroccoTheDawn || card.Id == CardId.ShuraTheBlueFlame || card.Id == CardId.BlizzardTheFarNorth)
return true;
return false;
}
......@@ -126,7 +126,7 @@ namespace WindBot.Game.AI.Decks
private bool KalutTheMoonShadowSummon()
{
foreach (ClientCard card in Bot.Hand)
if (card != null && card.Id == (int)CardId.KrisTheCrackOfDawn || card.Id == (int)CardId.GaleTheWhirlwind || card.Id == (int)CardId.BoraTheSpear || card.Id == (int)CardId.SiroccoTheDawn || card.Id == (int)CardId.ShuraTheBlueFlame || card.Id == (int)CardId.BlizzardTheFarNorth)
if (card != null && card.Id == CardId.KrisTheCrackOfDawn || card.Id == CardId.GaleTheWhirlwind || card.Id == CardId.BoraTheSpear || card.Id == CardId.SiroccoTheDawn || card.Id == CardId.ShuraTheBlueFlame || card.Id == CardId.BlizzardTheFarNorth)
return false;
return true;
}
......@@ -134,7 +134,7 @@ namespace WindBot.Game.AI.Decks
private bool BlizzardTheFarNorthSummon()
{
foreach (ClientCard card in Bot.Graveyard)
if (card != null && card.Id == (int)CardId.KalutTheMoonShadow || card.Id == (int)CardId.BoraTheSpear || card.Id == (int)CardId.ShuraTheBlueFlame || card.Id == (int)CardId.KrisTheCrackOfDawn)
if (card != null && card.Id == CardId.KalutTheMoonShadow || card.Id == CardId.BoraTheSpear || card.Id == CardId.ShuraTheBlueFlame || card.Id == CardId.KrisTheCrackOfDawn)
return true;
return false;
}
......@@ -145,7 +145,7 @@ namespace WindBot.Game.AI.Decks
List<ClientCard> monster = Bot.GetMonsters();
foreach (ClientCard card in monster)
if (card != null && card.Id == (int)CardId.KrisTheCrackOfDawn || card.Id == (int)CardId.KalutTheMoonShadow || card.Id == (int)CardId.GaleTheWhirlwind || card.Id == (int)CardId.BoraTheSpear || card.Id == (int)CardId.SiroccoTheDawn || card.Id == (int)CardId.ShuraTheBlueFlame || card.Id == (int)CardId.BlizzardTheFarNorth)
if (card != null && card.Id == CardId.KrisTheCrackOfDawn || card.Id == CardId.KalutTheMoonShadow || card.Id == CardId.GaleTheWhirlwind || card.Id == CardId.BoraTheSpear || card.Id == CardId.SiroccoTheDawn || card.Id == CardId.ShuraTheBlueFlame || card.Id == CardId.BlizzardTheFarNorth)
Count++;
if (Count == 3)
......
......@@ -9,30 +9,30 @@ namespace WindBot.Game.AI.Decks
[Deck("Burn", "AI_Burn", "Easy")]
public class BurnExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
LavaGolem = 102380,
ReflectBounder = 2851070,
FencingFireFerret = 97396380,
BlastSphere = 26302522,
Marshmallon = 31305911,
SpiritReaper = 23205979,
NaturiaBeans = 44789585,
ThunderShort = 20264508,
Ookazi = 19523799,
GoblinThief = 45311864,
TremendousFire = 46918794,
SwordsOfRevealingLight = 72302403,
SupremacyBerry = 98380593,
ChainEnergy = 79323590,
DarkRoomofNightmare = 85562745,
PoisonOfTheOldMan = 8842266,
OjamaTrio = 29843091,
Ceasefire = 36468556,
MagicCylinder = 62279055,
MinorGoblinOfficial = 1918087,
ChainBurst = 48276469,
SkullInvitation = 98139712
public static int LavaGolem = 102380;
public static int ReflectBounder = 2851070;
public static int FencingFireFerret = 97396380;
public static int BlastSphere = 26302522;
public static int Marshmallon = 31305911;
public static int SpiritReaper = 23205979;
public static int NaturiaBeans = 44789585;
public static int ThunderShort = 20264508;
public static int Ookazi = 19523799;
public static int GoblinThief = 45311864;
public static int TremendousFire = 46918794;
public static int SwordsOfRevealingLight = 72302403;
public static int SupremacyBerry = 98380593;
public static int ChainEnergy = 79323590;
public static int DarkRoomofNightmare = 85562745;
public static int PoisonOfTheOldMan = 8842266;
public static int OjamaTrio = 29843091;
public static int Ceasefire = 36468556;
public static int MagicCylinder = 62279055;
public static int MinorGoblinOfficial = 1918087;
public static int ChainBurst = 48276469;
public static int SkullInvitation = 98139712;
}
public BurnExecutor(GameAI ai, Duel duel)
......@@ -42,39 +42,39 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
// Activate Spells
AddExecutor(ExecutorType.Activate, (int)CardId.DarkRoomofNightmare);
AddExecutor(ExecutorType.Activate, (int)CardId.Ookazi);
AddExecutor(ExecutorType.Activate, (int)CardId.GoblinThief);
AddExecutor(ExecutorType.Activate, (int)CardId.TremendousFire);
AddExecutor(ExecutorType.Activate, (int)CardId.SwordsOfRevealingLight, SwordsOfRevealingLight);
AddExecutor(ExecutorType.Activate, (int)CardId.SupremacyBerry, SupremacyBerry);
AddExecutor(ExecutorType.Activate, (int)CardId.PoisonOfTheOldMan, PoisonOfTheOldMan);
AddExecutor(ExecutorType.Activate, (int)CardId.ThunderShort, ThunderShort);
AddExecutor(ExecutorType.Activate, CardId.DarkRoomofNightmare);
AddExecutor(ExecutorType.Activate, CardId.Ookazi);
AddExecutor(ExecutorType.Activate, CardId.GoblinThief);
AddExecutor(ExecutorType.Activate, CardId.TremendousFire);
AddExecutor(ExecutorType.Activate, CardId.SwordsOfRevealingLight, SwordsOfRevealingLight);
AddExecutor(ExecutorType.Activate, CardId.SupremacyBerry, SupremacyBerry);
AddExecutor(ExecutorType.Activate, CardId.PoisonOfTheOldMan, PoisonOfTheOldMan);
AddExecutor(ExecutorType.Activate, CardId.ThunderShort, ThunderShort);
// Hello, my name is Lava Golem
AddExecutor(ExecutorType.SpSummon, (int)CardId.LavaGolem, LavaGolem);
AddExecutor(ExecutorType.SpSummon, CardId.LavaGolem, LavaGolem);
// Set an invincible monster
AddExecutor(ExecutorType.MonsterSet, (int)CardId.Marshmallon, SetInvincibleMonster);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.SpiritReaper, SetInvincibleMonster);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.BlastSphere);
AddExecutor(ExecutorType.MonsterSet, CardId.Marshmallon, SetInvincibleMonster);
AddExecutor(ExecutorType.MonsterSet, CardId.SpiritReaper, SetInvincibleMonster);
AddExecutor(ExecutorType.MonsterSet, CardId.BlastSphere);
// Set other monsters
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.FencingFireFerret);
AddExecutor(ExecutorType.Summon, (int)CardId.ReflectBounder);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.NaturiaBeans);
AddExecutor(ExecutorType.SummonOrSet, CardId.FencingFireFerret);
AddExecutor(ExecutorType.Summon, CardId.ReflectBounder);
AddExecutor(ExecutorType.MonsterSet, CardId.NaturiaBeans);
// We're a coward
AddExecutor(ExecutorType.Repos, ReposEverything);
// Chain traps
AddExecutor(ExecutorType.Activate, (int)CardId.MagicCylinder, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.Ceasefire, Ceasefire);
AddExecutor(ExecutorType.Activate, (int)CardId.OjamaTrio);
AddExecutor(ExecutorType.Activate, (int)CardId.MinorGoblinOfficial);
AddExecutor(ExecutorType.Activate, (int)CardId.ChainBurst);
AddExecutor(ExecutorType.Activate, (int)CardId.SkullInvitation);
AddExecutor(ExecutorType.Activate, (int)CardId.ChainEnergy);
AddExecutor(ExecutorType.Activate, CardId.MagicCylinder, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.Ceasefire, Ceasefire);
AddExecutor(ExecutorType.Activate, CardId.OjamaTrio);
AddExecutor(ExecutorType.Activate, CardId.MinorGoblinOfficial);
AddExecutor(ExecutorType.Activate, CardId.ChainBurst);
AddExecutor(ExecutorType.Activate, CardId.SkullInvitation);
AddExecutor(ExecutorType.Activate, CardId.ChainEnergy);
}
public override bool OnSelectHand()
......@@ -84,7 +84,7 @@ namespace WindBot.Game.AI.Decks
private bool SwordsOfRevealingLight()
{
int count = Bot.SpellZone.GetCardCount((int)CardId.SwordsOfRevealingLight);
int count = Bot.SpellZone.GetCardCount(CardId.SwordsOfRevealingLight);
return count == 0;
}
......@@ -108,7 +108,7 @@ namespace WindBot.Game.AI.Decks
{
foreach (ClientCard card in Bot.GetMonsters())
{
if (card.Id == (int)CardId.Marshmallon || card.Id == (int)CardId.SpiritReaper)
if (card.Id == CardId.Marshmallon || card.Id == CardId.SpiritReaper)
{
return false;
}
......@@ -134,9 +134,9 @@ namespace WindBot.Game.AI.Decks
private bool ReposEverything()
{
if (Card.Id == (int)CardId.ReflectBounder)
if (Card.Id == CardId.ReflectBounder)
return Card.IsDefense();
if (Card.Id == (int)CardId.FencingFireFerret)
if (Card.Id == CardId.FencingFireFerret)
return DefaultMonsterRepos();
if (Card.IsAttack())
return true;
......
......@@ -12,114 +12,114 @@ namespace WindBot.Game.AI.Decks
{
bool PowerBondUsed = false;
public enum CardId
public class CardId
{
CyberLaserDragon = 4162088,
CyberBarrierDragon = 68774379,
CyberDragon = 70095154,
CyberDragonDrei = 59281922,
CyberPhoenix = 3370104,
ArmoredCybern = 67159705,
ProtoCyberDragon = 26439287,
CyberKirin = 76986005,
CyberDragonCore = 23893227,
CyberValley = 3657444,
Raigeki = 12580477,
DarkHole = 53129443,
DifferentDimensionCapsule = 11961740,
Polymerization = 24094653,
PowerBond = 37630732,
EvolutionBurst = 52875873,
PhotonGeneratorUnit = 66607691,
DeFusion = 95286165,
BottomlessTrapHole = 29401950,
MirrorForce = 44095762,
AttackReflectorUnit = 91989718,
CyberneticHiddenTechnology = 92773018,
CallOfTheHaunted = 97077563,
SevenToolsOfTheBandit = 3819470,
CyberTwinDragon = 74157028,
CyberEndDragon = 1546123,
CyberDragonNova = 58069384
public static int CyberLaserDragon = 4162088;
public static int CyberBarrierDragon = 68774379;
public static int CyberDragon = 70095154;
public static int CyberDragonDrei = 59281922;
public static int CyberPhoenix = 3370104;
public static int ArmoredCybern = 67159705;
public static int ProtoCyberDragon = 26439287;
public static int CyberKirin = 76986005;
public static int CyberDragonCore = 23893227;
public static int CyberValley = 3657444;
public static int Raigeki = 12580477;
public static int DarkHole = 53129443;
public static int DifferentDimensionCapsule = 11961740;
public static int Polymerization = 24094653;
public static int PowerBond = 37630732;
public static int EvolutionBurst = 52875873;
public static int PhotonGeneratorUnit = 66607691;
public static int DeFusion = 95286165;
public static int BottomlessTrapHole = 29401950;
public static int MirrorForce = 44095762;
public static int AttackReflectorUnit = 91989718;
public static int CyberneticHiddenTechnology = 92773018;
public static int CallOfTheHaunted = 97077563;
public static int SevenToolsOfTheBandit = 3819470;
public static int CyberTwinDragon = 74157028;
public static int CyberEndDragon = 1546123;
public static int CyberDragonNova = 58069384;
}
public CyberDragonExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.SpellSet, (int)CardId.DeFusion);
AddExecutor(ExecutorType.Activate, (int)CardId.DifferentDimensionCapsule, Capsule);
AddExecutor(ExecutorType.Activate, (int)CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, (int)CardId.Polymerization, PolymerizationEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.PowerBond, PowerBondEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.EvolutionBurst, EvolutionBurstEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.PhotonGeneratorUnit);
AddExecutor(ExecutorType.Activate, (int)CardId.DeFusion, DeFusionEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.AttackReflectorUnit);
AddExecutor(ExecutorType.Activate, (int)CardId.SevenToolsOfTheBandit, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.CallOfTheHaunted, DefaultCallOfTheHaunted);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.CyberDragonDrei, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.CyberPhoenix, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.Summon, (int)CardId.CyberValley, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.CyberDragonCore, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.ArmoredCybern, ArmoredCybernSet);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.ProtoCyberDragon, ProtoCyberDragonSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.CyberKirin, CyberKirinSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberEndDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberTwinDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberBarrierDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberLaserDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberBarrierDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberLaserDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberDragonDrei);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberPhoenix);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberKirin);
AddExecutor(ExecutorType.Activate, (int)CardId.ArmoredCybern, ArmoredCybernEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberValley);
AddExecutor(ExecutorType.SpellSet, CardId.DeFusion);
AddExecutor(ExecutorType.Activate, CardId.DifferentDimensionCapsule, Capsule);
AddExecutor(ExecutorType.Activate, CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, CardId.Polymerization, PolymerizationEffect);
AddExecutor(ExecutorType.Activate, CardId.PowerBond, PowerBondEffect);
AddExecutor(ExecutorType.Activate, CardId.EvolutionBurst, EvolutionBurstEffect);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.PhotonGeneratorUnit);
AddExecutor(ExecutorType.Activate, CardId.DeFusion, DeFusionEffect);
AddExecutor(ExecutorType.Activate, CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.AttackReflectorUnit);
AddExecutor(ExecutorType.Activate, CardId.SevenToolsOfTheBandit, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.CallOfTheHaunted, DefaultCallOfTheHaunted);
AddExecutor(ExecutorType.SummonOrSet, CardId.CyberDragonDrei, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.CyberPhoenix, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.Summon, CardId.CyberValley, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.MonsterSet, CardId.CyberDragonCore, NoCyberDragonSpsummon);
AddExecutor(ExecutorType.MonsterSet, CardId.ArmoredCybern, ArmoredCybernSet);
AddExecutor(ExecutorType.SummonOrSet, CardId.ProtoCyberDragon, ProtoCyberDragonSummon);
AddExecutor(ExecutorType.Summon, CardId.CyberKirin, CyberKirinSummon);
AddExecutor(ExecutorType.SpSummon, CardId.CyberDragon);
AddExecutor(ExecutorType.SpSummon, CardId.CyberEndDragon);
AddExecutor(ExecutorType.SpSummon, CardId.CyberTwinDragon);
AddExecutor(ExecutorType.SpSummon, CardId.CyberBarrierDragon);
AddExecutor(ExecutorType.SpSummon, CardId.CyberLaserDragon);
AddExecutor(ExecutorType.Activate, CardId.CyberBarrierDragon);
AddExecutor(ExecutorType.Activate, CardId.CyberLaserDragon);
AddExecutor(ExecutorType.Activate, CardId.CyberDragonDrei);
AddExecutor(ExecutorType.Activate, CardId.CyberPhoenix);
AddExecutor(ExecutorType.Activate, CardId.CyberKirin);
AddExecutor(ExecutorType.Activate, CardId.ArmoredCybern, ArmoredCybernEffect);
AddExecutor(ExecutorType.Activate, CardId.CyberValley);
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
private bool CyberDragonInHand() { return Bot.HasInHand((int)CardId.CyberDragon); }
private bool CyberDragonInGraveyard() { return Bot.HasInGraveyard((int)CardId.CyberDragon); }
private bool CyberDragonInMonsterZone() { return Bot.HasInMonstersZone((int)CardId.CyberDragon); }
private bool CyberDragonIsBanished() { return Bot.HasInBanished((int)CardId.CyberDragon); }
private bool CyberDragonInHand() { return Bot.HasInHand(CardId.CyberDragon); }
private bool CyberDragonInGraveyard() { return Bot.HasInGraveyard(CardId.CyberDragon); }
private bool CyberDragonInMonsterZone() { return Bot.HasInMonstersZone(CardId.CyberDragon); }
private bool CyberDragonIsBanished() { return Bot.HasInBanished(CardId.CyberDragon); }
private bool Capsule()
{
List<int> SelectedCard = new List<int>();
SelectedCard.Add((int)CardId.PowerBond);
SelectedCard.Add((int)CardId.DarkHole);
SelectedCard.Add((int)CardId.Raigeki);
SelectedCard.Add(CardId.PowerBond);
SelectedCard.Add(CardId.DarkHole);
SelectedCard.Add(CardId.Raigeki);
AI.SelectCard(SelectedCard);
return true;
}
private bool PolymerizationEffect()
{
if (Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.ProtoCyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragonDrei) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragonDrei) + Bot.GetCountCardInZone(Bot.Hand, (int)CardId.CyberDragon) >= 3)
AI.SelectCard((int)CardId.CyberEndDragon);
if (Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.ProtoCyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragonDrei) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragonDrei) + Bot.GetCountCardInZone(Bot.Hand, CardId.CyberDragon) >= 3)
AI.SelectCard(CardId.CyberEndDragon);
else
AI.SelectCard((int)CardId.CyberTwinDragon);
AI.SelectCard(CardId.CyberTwinDragon);
return true;
}
private bool PowerBondEffect()
{
PowerBondUsed = true;
if (Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.ProtoCyberDragon) + Bot.GetCountCardInZone(Bot.Hand, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Hand, (int)CardId.CyberDragonCore) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.CyberDragonCore) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.CyberDragonDrei) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragonDrei) >= 3)
AI.SelectCard((int)CardId.CyberEndDragon);
if (Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.ProtoCyberDragon) + Bot.GetCountCardInZone(Bot.Hand, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Hand, CardId.CyberDragonCore) + Bot.GetCountCardInZone(Bot.Graveyard, CardId.CyberDragonCore) + Bot.GetCountCardInZone(Bot.Graveyard, CardId.CyberDragonDrei) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragonDrei) >= 3)
AI.SelectCard(CardId.CyberEndDragon);
else
AI.SelectCard((int)CardId.CyberTwinDragon);
AI.SelectCard(CardId.CyberTwinDragon);
return true;
}
......@@ -142,16 +142,16 @@ namespace WindBot.Game.AI.Decks
private bool ArmoredCybernSet()
{
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand((int)CardId.CyberDragonDrei) || Bot.HasInHand((int)CardId.CyberPhoenix)) && !AI.Utils.IsOneEnemyBetterThanValue(1800,true))
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand(CardId.CyberDragonDrei) || Bot.HasInHand(CardId.CyberPhoenix)) && !AI.Utils.IsOneEnemyBetterThanValue(1800,true))
return false;
return true;
}
private bool ProtoCyberDragonSummon()
{
if (Bot.GetCountCardInZone(Bot.Hand, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragonCore) >= 1 && Bot.HasInHand((int)CardId.Polymerization) || Bot.GetCountCardInZone(Bot.Hand, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, (int)CardId.CyberDragonCore) >= 1 && Bot.HasInHand((int)CardId.PowerBond))
if (Bot.GetCountCardInZone(Bot.Hand, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragonCore) >= 1 && Bot.HasInHand(CardId.Polymerization) || Bot.GetCountCardInZone(Bot.Hand, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, CardId.CyberDragonCore) >= 1 && Bot.HasInHand(CardId.PowerBond))
return true;
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand((int)CardId.CyberDragonDrei) || Bot.HasInHand((int)CardId.CyberPhoenix)) && !AI.Utils.IsOneEnemyBetterThanValue(1800, true))
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand(CardId.CyberDragonDrei) || Bot.HasInHand(CardId.CyberPhoenix)) && !AI.Utils.IsOneEnemyBetterThanValue(1800, true))
return false;
return true;
}
......@@ -168,7 +168,7 @@ namespace WindBot.Game.AI.Decks
else if (Card.Location == CardLocation.SpellZone)
{
if (AI.Utils.IsOneEnemyBetterThanValue(Bot.GetMonsters().GetHighestAttackMonster().Attack, true))
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.ArmoredCybern, 2))
if (ActivateDescription == AI.Utils.GetStringId(CardId.ArmoredCybern, 2))
return true;
return false;
}
......
......@@ -9,10 +9,10 @@ namespace WindBot.Game.AI.Decks
[Deck("Test", "AI_Test", "Test")]
public class DoEverythingExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
LeoWizard = 4392470,
Bunilla = 69380702
public static int LeoWizard = 4392470;
public static int Bunilla = 69380702;
}
public DoEverythingExecutor(GameAI ai, Duel duel)
......
......@@ -9,34 +9,34 @@ namespace WindBot.Game.AI.Decks
[Deck("Dragunity", "AI_Dragunity")]
public class DragunityExecutor : DefaultExecutor
{
public enum CardId
{
StardustDragonAssaultMode = 61257789,
DragunityArmaMysletainn = 876330,
AssaultBeast = 3431737,
DragunityDux = 28183605,
DragunityPhalanx = 59755122,
AssaultTeleport = 29863101,
CardsOfConsonance = 39701395,
UpstartGoblin = 70368879,
DragonsMirror = 71490127,
Terraforming = 73628505,
FoolishBurial = 81439173,
MonsterReborn = 83764718,
MysticalSpaceTyphoon = 5318639,
FireFormationTenki = 57103969,
DragunitySpearOfDestiny = 60004971,
DragonRavine = 62265044,
MirrorForce = 44095762,
StarlightRoad = 58120309,
DimensionalPrison = 70342110,
AssaultModeActivate = 80280737,
FiveHeadedDragon = 99267150,
CrystalWingSynchroDragon = 50954680,
ScrapDragon = 76774528,
StardustDragon = 44508094,
DragunityKnightGaeDearg = 34116027,
DragunityKnightVajrayana = 21249921
public class CardId
{
public static int StardustDragonAssaultMode = 61257789;
public static int DragunityArmaMysletainn = 876330;
public static int AssaultBeast = 3431737;
public static int DragunityDux = 28183605;
public static int DragunityPhalanx = 59755122;
public static int AssaultTeleport = 29863101;
public static int CardsOfConsonance = 39701395;
public static int UpstartGoblin = 70368879;
public static int DragonsMirror = 71490127;
public static int Terraforming = 73628505;
public static int FoolishBurial = 81439173;
public static int MonsterReborn = 83764718;
public static int MysticalSpaceTyphoon = 5318639;
public static int FireFormationTenki = 57103969;
public static int DragunitySpearOfDestiny = 60004971;
public static int DragonRavine = 62265044;
public static int MirrorForce = 44095762;
public static int StarlightRoad = 58120309;
public static int DimensionalPrison = 70342110;
public static int AssaultModeActivate = 80280737;
public static int FiveHeadedDragon = 99267150;
public static int CrystalWingSynchroDragon = 50954680;
public static int ScrapDragon = 76774528;
public static int StardustDragon = 44508094;
public static int DragunityKnightGaeDearg = 34116027;
public static int DragunityKnightVajrayana = 21249921;
}
public DragunityExecutor(GameAI ai, Duel duel)
......@@ -46,60 +46,60 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
// Execute spells
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.AssaultTeleport);
AddExecutor(ExecutorType.Activate, (int)CardId.UpstartGoblin);
AddExecutor(ExecutorType.Activate, (int)CardId.DragonRavine, DragonRavineField);
AddExecutor(ExecutorType.Activate, (int)CardId.Terraforming, Terraforming);
AddExecutor(ExecutorType.Activate, (int)CardId.FoolishBurial, FoolishBurial);
AddExecutor(ExecutorType.Activate, (int)CardId.MonsterReborn, MonsterReborn);
AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.AssaultTeleport);
AddExecutor(ExecutorType.Activate, CardId.UpstartGoblin);
AddExecutor(ExecutorType.Activate, CardId.DragonRavine, DragonRavineField);
AddExecutor(ExecutorType.Activate, CardId.Terraforming, Terraforming);
AddExecutor(ExecutorType.Activate, CardId.FoolishBurial, FoolishBurial);
AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterReborn);
// Execute monsters
AddExecutor(ExecutorType.Activate, (int)CardId.ScrapDragon, ScrapDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.DragunityPhalanx);
AddExecutor(ExecutorType.Activate, (int)CardId.DragunityKnightVajrayana);
AddExecutor(ExecutorType.Activate, (int)CardId.DragunityArmaMysletainn, DragunityArmaMysletainnEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.DragunityDux);
AddExecutor(ExecutorType.Activate, CardId.ScrapDragon, ScrapDragonEffect);
AddExecutor(ExecutorType.Activate, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonEffect);
AddExecutor(ExecutorType.Activate, CardId.DragunityPhalanx);
AddExecutor(ExecutorType.Activate, CardId.DragunityKnightVajrayana);
AddExecutor(ExecutorType.Activate, CardId.DragunityArmaMysletainn, DragunityArmaMysletainnEffect);
AddExecutor(ExecutorType.Activate, CardId.DragunityDux);
// Summon
AddExecutor(ExecutorType.Activate, (int)CardId.DragonsMirror, DragonsMirror);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ScrapDragon, ScrapDragonSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.StardustDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.DragunityKnightVajrayana);
AddExecutor(ExecutorType.SpSummon, (int)CardId.DragunityKnightGaeDearg);
AddExecutor(ExecutorType.Summon, (int)CardId.DragunityPhalanx, DragunityPhalanxSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.DragunityArmaMysletainn, DragunityArmaMysletainn);
AddExecutor(ExecutorType.Summon, (int)CardId.DragunityArmaMysletainn, DragunityArmaMysletainnTribute);
AddExecutor(ExecutorType.Activate, CardId.DragonsMirror, DragonsMirror);
AddExecutor(ExecutorType.SpSummon, CardId.ScrapDragon, ScrapDragonSummon);
AddExecutor(ExecutorType.SpSummon, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragonSummon);
AddExecutor(ExecutorType.SpSummon, CardId.StardustDragon);
AddExecutor(ExecutorType.SpSummon, CardId.DragunityKnightVajrayana);
AddExecutor(ExecutorType.SpSummon, CardId.DragunityKnightGaeDearg);
AddExecutor(ExecutorType.Summon, CardId.DragunityPhalanx, DragunityPhalanxSummon);
AddExecutor(ExecutorType.SpSummon, CardId.DragunityArmaMysletainn, DragunityArmaMysletainn);
AddExecutor(ExecutorType.Summon, CardId.DragunityArmaMysletainn, DragunityArmaMysletainnTribute);
// Use draw effects if we can't do anything else
AddExecutor(ExecutorType.Activate, (int)CardId.CardsOfConsonance);
AddExecutor(ExecutorType.Activate, (int)CardId.DragonRavine, DragonRavineEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.FireFormationTenki, FireFormationTenki);
AddExecutor(ExecutorType.Activate, (int)CardId.DragunitySpearOfDestiny);
AddExecutor(ExecutorType.Activate, CardId.CardsOfConsonance);
AddExecutor(ExecutorType.Activate, CardId.DragonRavine, DragonRavineEffect);
AddExecutor(ExecutorType.Activate, CardId.FireFormationTenki, FireFormationTenki);
AddExecutor(ExecutorType.Activate, CardId.DragunitySpearOfDestiny);
// Summon
AddExecutor(ExecutorType.Summon, (int)CardId.DragunityDux, DragunityDux);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.DragunityPhalanx, DragunityPhalanxSet);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.AssaultBeast);
AddExecutor(ExecutorType.Summon, CardId.DragunityDux, DragunityDux);
AddExecutor(ExecutorType.MonsterSet, CardId.DragunityPhalanx, DragunityPhalanxSet);
AddExecutor(ExecutorType.SummonOrSet, CardId.AssaultBeast);
// Draw assault mode if we don't have one
AddExecutor(ExecutorType.Activate, (int)CardId.AssaultBeast, AssaultBeast);
AddExecutor(ExecutorType.Activate, CardId.AssaultBeast, AssaultBeast);
// Set useless cards
AddExecutor(ExecutorType.SpellSet, (int)CardId.DragonsMirror, SetUselessCards);
AddExecutor(ExecutorType.SpellSet, (int)CardId.Terraforming, SetUselessCards);
AddExecutor(ExecutorType.SpellSet, (int)CardId.AssaultTeleport, SetUselessCards);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CardsOfConsonance, SetUselessCards);
AddExecutor(ExecutorType.SpellSet, CardId.DragonsMirror, SetUselessCards);
AddExecutor(ExecutorType.SpellSet, CardId.Terraforming, SetUselessCards);
AddExecutor(ExecutorType.SpellSet, CardId.AssaultTeleport, SetUselessCards);
AddExecutor(ExecutorType.SpellSet, CardId.CardsOfConsonance, SetUselessCards);
// Chain traps and monsters
AddExecutor(ExecutorType.Activate, (int)CardId.StardustDragonAssaultMode, DefaultStardustDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.StardustDragon, DefaultStardustDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.StarlightRoad, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.DimensionalPrison, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.AssaultModeActivate, AssaultModeActivate);
AddExecutor(ExecutorType.Activate, CardId.StardustDragonAssaultMode, DefaultStardustDragonEffect);
AddExecutor(ExecutorType.Activate, CardId.StardustDragon, DefaultStardustDragonEffect);
AddExecutor(ExecutorType.Activate, CardId.StarlightRoad, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.DimensionalPrison, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.AssaultModeActivate, AssaultModeActivate);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
......@@ -117,61 +117,61 @@ namespace WindBot.Game.AI.Decks
return false;
int tributeId = -1;
if (Bot.HasInHand((int)CardId.DragunityPhalanx))
tributeId = (int)CardId.DragunityPhalanx;
else if (Bot.HasInHand((int)CardId.FireFormationTenki))
tributeId = (int)CardId.FireFormationTenki;
else if (Bot.HasInHand((int)CardId.Terraforming))
tributeId = (int)CardId.Terraforming;
else if (Bot.HasInHand((int)CardId.DragonRavine))
tributeId = (int)CardId.DragonRavine;
else if (Bot.HasInHand((int)CardId.AssaultTeleport))
tributeId = (int)CardId.AssaultTeleport;
else if (Bot.HasInHand((int)CardId.AssaultBeast))
tributeId = (int)CardId.AssaultBeast;
if (Bot.HasInHand(CardId.DragunityPhalanx))
tributeId = CardId.DragunityPhalanx;
else if (Bot.HasInHand(CardId.FireFormationTenki))
tributeId = CardId.FireFormationTenki;
else if (Bot.HasInHand(CardId.Terraforming))
tributeId = CardId.Terraforming;
else if (Bot.HasInHand(CardId.DragonRavine))
tributeId = CardId.DragonRavine;
else if (Bot.HasInHand(CardId.AssaultTeleport))
tributeId = CardId.AssaultTeleport;
else if (Bot.HasInHand(CardId.AssaultBeast))
tributeId = CardId.AssaultBeast;
else if (Bot.HasInHand((int) CardId.DragunityArmaMysletainn))
tributeId = (int)CardId.DragunityArmaMysletainn;
tributeId = CardId.DragunityArmaMysletainn;
else
{
int count = 0;
foreach (ClientCard card in Bot.Hand)
{
if (card.Id == (int)CardId.DragunityDux)
if (card.Id == CardId.DragunityDux)
++count;
}
if (count >= 2)
tributeId = (int)CardId.DragunityDux;
tributeId = CardId.DragunityDux;
}
if (tributeId == -1 && Bot.HasInHand((int)CardId.StardustDragonAssaultMode))
tributeId = (int)CardId.StardustDragonAssaultMode;
if (tributeId == -1 && Bot.HasInHand((int)CardId.DragunitySpearOfDestiny))
tributeId = (int)CardId.StardustDragonAssaultMode;
if (tributeId == -1 && Bot.HasInHand((int)CardId.DragonsMirror)
if (tributeId == -1 && Bot.HasInHand(CardId.StardustDragonAssaultMode))
tributeId = CardId.StardustDragonAssaultMode;
if (tributeId == -1 && Bot.HasInHand(CardId.DragunitySpearOfDestiny))
tributeId = CardId.StardustDragonAssaultMode;
if (tributeId == -1 && Bot.HasInHand(CardId.DragonsMirror)
&& Bot.GetMonsterCount() == 0)
tributeId = (int)CardId.StardustDragonAssaultMode;
tributeId = CardId.StardustDragonAssaultMode;
if (tributeId == -1)
return false;
int needId = -1;
if (!Bot.HasInMonstersZone((int)CardId.DragunityPhalanx) &&
!Bot.HasInGraveyard((int)CardId.DragunityPhalanx))
needId = (int)CardId.DragunityPhalanx;
if (!Bot.HasInMonstersZone(CardId.DragunityPhalanx) &&
!Bot.HasInGraveyard(CardId.DragunityPhalanx))
needId = CardId.DragunityPhalanx;
else if (Bot.GetMonsterCount() == 0)
needId = (int)CardId.DragunityDux;
needId = CardId.DragunityDux;
else
{
/*bool hasRealMonster = false;
foreach (ClientCard card in Bot.GetMonsters())
{
if (card.Id != (int)CardId.AssaultBeast)
if (card.Id != CardId.AssaultBeast)
{
hasRealMonster = true;
break;
}
}
if (!hasRealMonster || AI.Utils.GetProblematicCard() != null)*/
needId = (int)CardId.DragunityDux;
needId = CardId.DragunityDux;
}
if (needId == -1)
......@@ -179,8 +179,8 @@ namespace WindBot.Game.AI.Decks
int option;
if (tributeId == (int)CardId.DragunityPhalanx)
needId = (int)CardId.DragunityDux;
if (tributeId == CardId.DragunityPhalanx)
needId = CardId.DragunityDux;
int remaining = 3;
foreach (ClientCard card in Bot.Hand)
......@@ -195,12 +195,12 @@ namespace WindBot.Game.AI.Decks
if (remaining <= 0)
return false;
if (needId == (int)CardId.DragunityPhalanx)
if (needId == CardId.DragunityPhalanx)
option = 2;
else
option = 1;
if (ActivateDescription != (int)CardId.DragonRavine*16 + option)
if (ActivateDescription != CardId.DragonRavine*16 + option)
return false;
AI.SelectCard(tributeId);
......@@ -211,7 +211,7 @@ namespace WindBot.Game.AI.Decks
private bool Terraforming()
{
if (Bot.HasInHand((int)CardId.DragonRavine))
if (Bot.HasInHand(CardId.DragonRavine))
return false;
if (Bot.SpellZone[5] != null)
return false;
......@@ -222,13 +222,13 @@ namespace WindBot.Game.AI.Decks
{
ClientField field = Bot;
if (field.HasInSpellZone((int)CardId.FireFormationTenki))
if (field.HasInSpellZone(CardId.FireFormationTenki))
return false;
if (field.HasInSpellZone((int)CardId.AssaultTeleport))
if (field.HasInSpellZone(CardId.AssaultTeleport))
return false;
if (field.HasInSpellZone((int)CardId.CardsOfConsonance))
if (field.HasInSpellZone(CardId.CardsOfConsonance))
return false;
if (field.HasInSpellZone((int)CardId.DragonsMirror))
if (field.HasInSpellZone(CardId.DragonsMirror))
return false;
return Bot.GetSpellCountWithoutField() < 4;
......@@ -243,17 +243,17 @@ namespace WindBot.Game.AI.Decks
private bool FoolishBurial()
{
if (Bot.HasInGraveyard((int)CardId.DragunityPhalanx))
if (Bot.HasInGraveyard(CardId.DragunityPhalanx))
return false;
if (Bot.HasInHand((int)CardId.DragunityPhalanx))
if (Bot.HasInHand(CardId.DragunityPhalanx))
return false;
int remaining = 3;
foreach (ClientCard card in Bot.Banished)
if (card.Id == (int)CardId.DragunityPhalanx)
if (card.Id == CardId.DragunityPhalanx)
remaining--;
if (remaining > 0)
{
AI.SelectCard((int)CardId.DragunityPhalanx);
AI.SelectCard(CardId.DragunityPhalanx);
return true;
}
return false;
......@@ -335,7 +335,7 @@ namespace WindBot.Game.AI.Decks
if (tributes.Count < 5)
return false;
AI.SelectCard((int)CardId.FiveHeadedDragon);
AI.SelectCard(CardId.FiveHeadedDragon);
AI.SelectNextCard(tributes);
return true;
}
......@@ -355,20 +355,20 @@ namespace WindBot.Game.AI.Decks
return false;
int tributeId = -1;
if (Bot.HasInSpellZone((int)CardId.FireFormationTenki))
tributeId = (int)CardId.FireFormationTenki;
else if (Bot.HasInSpellZone((int)CardId.Terraforming))
tributeId = (int)CardId.Terraforming;
else if (Bot.HasInSpellZone((int)CardId.DragonsMirror))
tributeId = (int)CardId.DragonsMirror;
else if (Bot.HasInSpellZone((int)CardId.CardsOfConsonance))
tributeId = (int)CardId.CardsOfConsonance;
else if (Bot.HasInSpellZone((int)CardId.AssaultTeleport))
tributeId = (int)CardId.AssaultTeleport;
else if (Bot.HasInSpellZone((int)CardId.AssaultModeActivate))
tributeId = (int)CardId.AssaultModeActivate;
else if (Bot.HasInSpellZone((int)CardId.DragonRavine))
tributeId = (int)CardId.DragonRavine;
if (Bot.HasInSpellZone(CardId.FireFormationTenki))
tributeId = CardId.FireFormationTenki;
else if (Bot.HasInSpellZone(CardId.Terraforming))
tributeId = CardId.Terraforming;
else if (Bot.HasInSpellZone(CardId.DragonsMirror))
tributeId = CardId.DragonsMirror;
else if (Bot.HasInSpellZone(CardId.CardsOfConsonance))
tributeId = CardId.CardsOfConsonance;
else if (Bot.HasInSpellZone(CardId.AssaultTeleport))
tributeId = CardId.AssaultTeleport;
else if (Bot.HasInSpellZone(CardId.AssaultModeActivate))
tributeId = CardId.AssaultModeActivate;
else if (Bot.HasInSpellZone(CardId.DragonRavine))
tributeId = CardId.DragonRavine;
List<ClientCard> monsters = Enemy.GetMonsters();
monsters.Sort(AIFunctions.CompareCardAttack);
......@@ -399,9 +399,9 @@ namespace WindBot.Game.AI.Decks
private bool CrystalWingSynchroDragonSummon()
{
return !Bot.HasInHand((int)CardId.AssaultModeActivate)
&& !Bot.HasInHand((int)CardId.AssaultBeast)
&& !Bot.HasInSpellZone((int)CardId.AssaultModeActivate);
return !Bot.HasInHand(CardId.AssaultModeActivate)
&& !Bot.HasInHand(CardId.AssaultBeast)
&& !Bot.HasInSpellZone(CardId.AssaultModeActivate);
}
private bool CrystalWingSynchroDragonEffect()
......@@ -411,19 +411,19 @@ namespace WindBot.Game.AI.Decks
private bool DragunityPhalanxSummon()
{
return Bot.HasInHand((int)CardId.DragunityArmaMysletainn);
return Bot.HasInHand(CardId.DragunityArmaMysletainn);
}
private bool DragunityArmaMysletainn()
{
if (Bot.HasInMonstersZone((int)CardId.DragunityPhalanx))
if (Bot.HasInMonstersZone(CardId.DragunityPhalanx))
{
AI.SelectCard((int)CardId.DragunityPhalanx);
AI.SelectCard(CardId.DragunityPhalanx);
return true;
}
if (Bot.HasInMonstersZone((int)CardId.DragunityDux))
if (Bot.HasInMonstersZone(CardId.DragunityDux))
{
AI.SelectCard((int)CardId.DragunityDux);
AI.SelectCard(CardId.DragunityDux);
return true;
}
return false;
......@@ -431,35 +431,35 @@ namespace WindBot.Game.AI.Decks
private bool DragunityArmaMysletainnEffect()
{
AI.SelectCard((int)CardId.DragunityPhalanx);
AI.SelectCard(CardId.DragunityPhalanx);
return true;
}
private bool DragunityArmaMysletainnTribute()
{
if ((Bot.HasInMonstersZone((int)CardId.AssaultBeast)
&& Bot.HasInGraveyard((int)CardId.DragunityPhalanx))
|| Bot.HasInMonstersZone((int)CardId.DragunityPhalanx)
|| Bot.HasInHand((int)CardId.DragunitySpearOfDestiny))
if ((Bot.HasInMonstersZone(CardId.AssaultBeast)
&& Bot.HasInGraveyard(CardId.DragunityPhalanx))
|| Bot.HasInMonstersZone(CardId.DragunityPhalanx)
|| Bot.HasInHand(CardId.DragunitySpearOfDestiny))
return true;
return false;
}
private bool DragunityDux()
{
return Bot.HasInGraveyard((int)CardId.DragunityPhalanx) ||
(Bot.GetMonsterCount() == 0 && Bot.HasInHand((int)CardId.DragunityArmaMysletainn) ||
Bot.HasInHand((int)CardId.DragunitySpearOfDestiny));
return Bot.HasInGraveyard(CardId.DragunityPhalanx) ||
(Bot.GetMonsterCount() == 0 && Bot.HasInHand(CardId.DragunityArmaMysletainn) ||
Bot.HasInHand(CardId.DragunitySpearOfDestiny));
}
private bool DragunityPhalanxSet()
{
return Bot.GetMonsterCount() == 0 || !Bot.HasInGraveyard((int)CardId.DragunityPhalanx);
return Bot.GetMonsterCount() == 0 || !Bot.HasInGraveyard(CardId.DragunityPhalanx);
}
private bool AssaultBeast()
{
if (!Bot.HasInSpellZone((int)CardId.AssaultModeActivate))
if (!Bot.HasInSpellZone(CardId.AssaultModeActivate))
return true;
return false;
}
......@@ -471,7 +471,7 @@ namespace WindBot.Game.AI.Decks
List<ClientCard> monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters)
{
if (monster.Id == (int)CardId.StardustDragon && monster.Attacked)
if (monster.Id == CardId.StardustDragon && monster.Attacked)
{
AI.SelectCard(monster);
return true;
......
......@@ -10,25 +10,25 @@ namespace WindBot.Game.AI.Decks
[Deck("Evilswarm", "AI_Evilswarm", "NotFinished")]
public class EvilswarmExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
DarkHole = 53129443,
CosmicCyclone = 8267140,
InfestationPandemic = 27541267,
SolemnJudgment = 41420027,
SolemnWarning = 84749824,
SolemnStrike = 40605147
public static int DarkHole = 53129443;
public static int CosmicCyclone = 8267140;
public static int InfestationPandemic = 27541267;
public static int SolemnJudgment = 41420027;
public static int SolemnWarning = 84749824;
public static int SolemnStrike = 40605147;
}
public EvilswarmExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnJudgment, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.SpellSet, (int)CardId.InfestationPandemic);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, CardId.SolemnJudgment, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.SpellSet, CardId.InfestationPandemic);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
AddExecutor(ExecutorType.Summon);
AddExecutor(ExecutorType.SpSummon);
......
......@@ -9,27 +9,27 @@ namespace WindBot.Game.AI.Decks
[Deck("Frog", "AI_Frog", "Easy")]
public class FrogExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
CryomancerOfTheIceBarrier = 23950192,
DewdarkOfTheIceBarrier = 90311614,
SubmarineFrog = 63948258,
SwapFrog = 9126351,
FlipFlopFrog = 81278754,
Unifrog = 56052205,
Ronintoadin = 1357146,
DupeFrog = 46239604,
Tradetoad = 23408872,
TreebornFrog = 12538374,
DarkHole = 53129443,
Raigeki = 12580477,
Terraforming = 73628505,
PotOfDuality = 98645731,
Solidarity = 86780027,
Wetlands = 2084239,
FroggyForcefield = 34351849,
GravityBind = 85742772,
TheHugeRevolutionIsOver = 99188141
public static int CryomancerOfTheIceBarrier = 23950192;
public static int DewdarkOfTheIceBarrier = 90311614;
public static int SubmarineFrog = 63948258;
public static int SwapFrog = 9126351;
public static int FlipFlopFrog = 81278754;
public static int Unifrog = 56052205;
public static int Ronintoadin = 1357146;
public static int DupeFrog = 46239604;
public static int Tradetoad = 23408872;
public static int TreebornFrog = 12538374;
public static int DarkHole = 53129443;
public static int Raigeki = 12580477;
public static int Terraforming = 73628505;
public static int PotOfDuality = 98645731;
public static int Solidarity = 86780027;
public static int Wetlands = 2084239;
public static int FroggyForcefield = 34351849;
public static int GravityBind = 85742772;
public static int TheHugeRevolutionIsOver = 99188141;
}
public FrogExecutor(GameAI ai, Duel duel)
......@@ -37,48 +37,48 @@ namespace WindBot.Game.AI.Decks
{
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.Solidarity, Solidarity);
AddExecutor(ExecutorType.Activate, (int)CardId.Terraforming, Terraforming);
AddExecutor(ExecutorType.Activate, (int)CardId.Wetlands, DefaultField);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, (int)CardId.PotOfDuality, PotOfDuality);
AddExecutor(ExecutorType.SpSummon, (int)CardId.SwapFrog, SwapFrogSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.SwapFrog, SwapFrogActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.DupeFrog, DupeFrog);
AddExecutor(ExecutorType.Activate, (int)CardId.FlipFlopFrog, FlipFlopFrog);
AddExecutor(ExecutorType.Activate, (int)CardId.Ronintoadin, Ronintoadin);
AddExecutor(ExecutorType.Activate, (int)CardId.TreebornFrog);
AddExecutor(ExecutorType.Activate, (int)CardId.Unifrog);
AddExecutor(ExecutorType.Summon, (int)CardId.CryomancerOfTheIceBarrier, SummonFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.DewdarkOfTheIceBarrier, SummonFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.SubmarineFrog, SummonFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.SwapFrog, SummonFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.Unifrog, SummonFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.Ronintoadin, SummonFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.DupeFrog, SummonFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.Tradetoad, SummonFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.TreebornFrog, SummonFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.FlipFlopFrog, SummonFrog);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.FlipFlopFrog);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.DupeFrog);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.Tradetoad);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.Ronintoadin);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.TreebornFrog);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.Unifrog);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.SwapFrog);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.SubmarineFrog);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.DewdarkOfTheIceBarrier);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.CryomancerOfTheIceBarrier);
AddExecutor(ExecutorType.Activate, CardId.Solidarity, Solidarity);
AddExecutor(ExecutorType.Activate, CardId.Terraforming, Terraforming);
AddExecutor(ExecutorType.Activate, CardId.Wetlands, DefaultField);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, CardId.PotOfDuality, PotOfDuality);
AddExecutor(ExecutorType.SpSummon, CardId.SwapFrog, SwapFrogSummon);
AddExecutor(ExecutorType.Activate, CardId.SwapFrog, SwapFrogActivate);
AddExecutor(ExecutorType.Activate, CardId.DupeFrog, DupeFrog);
AddExecutor(ExecutorType.Activate, CardId.FlipFlopFrog, FlipFlopFrog);
AddExecutor(ExecutorType.Activate, CardId.Ronintoadin, Ronintoadin);
AddExecutor(ExecutorType.Activate, CardId.TreebornFrog);
AddExecutor(ExecutorType.Activate, CardId.Unifrog);
AddExecutor(ExecutorType.Summon, CardId.CryomancerOfTheIceBarrier, SummonFrog);
AddExecutor(ExecutorType.Summon, CardId.DewdarkOfTheIceBarrier, SummonFrog);
AddExecutor(ExecutorType.Summon, CardId.SubmarineFrog, SummonFrog);
AddExecutor(ExecutorType.Summon, CardId.SwapFrog, SummonFrog);
AddExecutor(ExecutorType.Summon, CardId.Unifrog, SummonFrog);
AddExecutor(ExecutorType.Summon, CardId.Ronintoadin, SummonFrog);
AddExecutor(ExecutorType.Summon, CardId.DupeFrog, SummonFrog);
AddExecutor(ExecutorType.Summon, CardId.Tradetoad, SummonFrog);
AddExecutor(ExecutorType.Summon, CardId.TreebornFrog, SummonFrog);
AddExecutor(ExecutorType.Summon, CardId.FlipFlopFrog, SummonFrog);
AddExecutor(ExecutorType.MonsterSet, CardId.FlipFlopFrog);
AddExecutor(ExecutorType.MonsterSet, CardId.DupeFrog);
AddExecutor(ExecutorType.MonsterSet, CardId.Tradetoad);
AddExecutor(ExecutorType.MonsterSet, CardId.Ronintoadin);
AddExecutor(ExecutorType.MonsterSet, CardId.TreebornFrog);
AddExecutor(ExecutorType.MonsterSet, CardId.Unifrog);
AddExecutor(ExecutorType.MonsterSet, CardId.SwapFrog);
AddExecutor(ExecutorType.MonsterSet, CardId.SubmarineFrog);
AddExecutor(ExecutorType.MonsterSet, CardId.DewdarkOfTheIceBarrier);
AddExecutor(ExecutorType.MonsterSet, CardId.CryomancerOfTheIceBarrier);
AddExecutor(ExecutorType.Repos, FrogMonsterRepos);
AddExecutor(ExecutorType.Activate, (int)CardId.FroggyForcefield, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.TheHugeRevolutionIsOver, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.GravityBind, GravityBind);
AddExecutor(ExecutorType.Activate, CardId.FroggyForcefield, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.TheHugeRevolutionIsOver, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.GravityBind, GravityBind);
}
private int m_swapFrogSummoned;
......@@ -86,9 +86,9 @@ namespace WindBot.Game.AI.Decks
public override bool OnPreBattleBetween(ClientCard attacker, ClientCard defender)
{
if (attacker.Id == (int)CardId.Unifrog || attacker.Id == (int)CardId.DewdarkOfTheIceBarrier)
if (attacker.Id == CardId.Unifrog || attacker.Id == CardId.DewdarkOfTheIceBarrier)
return true;
if (defender.IsMonsterInvincible() && !defender.IsMonsterDangerous() && attacker.Id == (int)CardId.SubmarineFrog)
if (defender.IsMonsterInvincible() && !defender.IsMonsterDangerous() && attacker.Id == CardId.SubmarineFrog)
return true;
return base.OnPreBattleBetween(attacker, defender);
}
......@@ -99,7 +99,7 @@ namespace WindBot.Game.AI.Decks
if (AI.Utils.IsAllEnemyBetterThanValue(atk, true))
return false;
AI.SelectCard((int)CardId.Ronintoadin);
AI.SelectCard(CardId.Ronintoadin);
m_swapFrogSummoned = Duel.Turn;
return true;
}
......@@ -110,10 +110,10 @@ namespace WindBot.Game.AI.Decks
return false;
m_swapFrogSummoned = -1;
if (Bot.GetRemainingCount((int)CardId.Ronintoadin, 2) == 0)
if (Bot.GetRemainingCount(CardId.Ronintoadin, 2) == 0)
return false;
AI.SelectCard((int)CardId.Ronintoadin);
AI.SelectCard(CardId.Ronintoadin);
return true;
}
......@@ -156,7 +156,7 @@ namespace WindBot.Game.AI.Decks
if (AI.Utils.IsOneEnemyBetterThanValue(atk, true))
return false;
if (Card.Id == (int)CardId.SwapFrog)
if (Card.Id == CardId.SwapFrog)
m_swapFrogSummoned = Duel.Turn;
return true;
}
......@@ -167,18 +167,18 @@ namespace WindBot.Game.AI.Decks
if (AI.Utils.IsOneEnemyBetter())
{
cards.Add((int)CardId.FlipFlopFrog);
cards.Add(CardId.FlipFlopFrog);
}
if (Bot.SpellZone[5] == null)
{
cards.Add((int)CardId.Terraforming);
cards.Add((int)CardId.Wetlands);
cards.Add(CardId.Terraforming);
cards.Add(CardId.Wetlands);
}
cards.Add((int)CardId.DarkHole);
cards.Add((int)CardId.SwapFrog);
cards.Add((int)CardId.GravityBind);
cards.Add(CardId.DarkHole);
cards.Add(CardId.SwapFrog);
cards.Add(CardId.GravityBind);
if (cards.Count > 0)
{
......@@ -191,7 +191,7 @@ namespace WindBot.Game.AI.Decks
private bool Terraforming()
{
if (Bot.HasInHand((int)CardId.Wetlands))
if (Bot.HasInHand(CardId.Wetlands))
return false;
if (Bot.SpellZone[5] != null)
return false;
......@@ -209,7 +209,7 @@ namespace WindBot.Game.AI.Decks
List<ClientCard> spells = Bot.GetSpells();
foreach (ClientCard spell in spells)
{
if (spell.Id == (int)CardId.GravityBind && !spell.IsFacedown())
if (spell.Id == CardId.GravityBind && !spell.IsFacedown())
return false;
}
return true;
......@@ -217,9 +217,9 @@ namespace WindBot.Game.AI.Decks
private bool FrogMonsterRepos()
{
if (Card.Id == (int)CardId.Unifrog)
if (Card.Id == CardId.Unifrog)
return Card.IsDefense();
if (Card.Id == (int)CardId.DewdarkOfTheIceBarrier)
if (Card.Id == CardId.DewdarkOfTheIceBarrier)
return Card.IsDefense();
bool enemyBetter = AI.Utils.IsOneEnemyBetterThanValue(Card.Attack + (Card.IsFacedown() ? GetSpellBonus() : 0), true);
......@@ -231,10 +231,10 @@ namespace WindBot.Game.AI.Decks
if (Card.IsDefense() && !enemyBetter)
result = true;
if (!result && Card.Id == (int)CardId.FlipFlopFrog && Enemy.GetMonsterCount() > 0 && Card.IsFacedown())
if (!result && Card.Id == CardId.FlipFlopFrog && Enemy.GetMonsterCount() > 0 && Card.IsFacedown())
result = true;
if (Card.Id == (int)CardId.FlipFlopFrog && Card.IsFacedown() && result)
if (Card.Id == CardId.FlipFlopFrog && Card.IsFacedown() && result)
m_flipFlopFrogSummoned = Duel.Turn;
return result;
......@@ -251,7 +251,7 @@ namespace WindBot.Game.AI.Decks
{
foreach (ClientCard card in Bot.GetSpells())
{
if (card.Id == (int)CardId.Solidarity)
if (card.Id == CardId.Solidarity)
atk += 800;
}
}
......
......@@ -10,32 +10,32 @@ namespace WindBot.Game.AI.Decks
[Deck("Gravekeeper", "AI_Gravekeeper", "NotFinished")]
public class GravekeeperExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
GravekeepersOracle = 25524823,
MaleficStardustDragon = 36521459,
GravekeepersVisionary = 3825890,
GravekeepersChief = 62473983,
ThunderKingRaiOh = 71564252,
GravekeepersCommandant = 17393207,
GravekeepersAssailant = 25262697,
GravekeepersDescendant = 30213599,
GravekeepersSpy = 24317029,
GravekeepersRecruiter = 93023479,
AllureOfDarkness = 1475311,
DarkHole = 53129443,
RoyalTribute = 72405967,
GravekeepersStele = 99523325,
MysticalSpaceTyphoon = 5318639,
BookofMoon = 14087893,
HiddenTemplesOfNecrovalley = 70000776,
Necrovalley = 47355498,
BottomlessTrapHole = 29401950,
RiteOfSpirit = 30450531,
TorrentialTribute = 53582587,
DimensionalPrison = 70342110,
SolemnWarning = 84749824,
ImperialTombsOfNecrovalley = 90434657
public static int GravekeepersOracle = 25524823;
public static int MaleficStardustDragon = 36521459;
public static int GravekeepersVisionary = 3825890;
public static int GravekeepersChief = 62473983;
public static int ThunderKingRaiOh = 71564252;
public static int GravekeepersCommandant = 17393207;
public static int GravekeepersAssailant = 25262697;
public static int GravekeepersDescendant = 30213599;
public static int GravekeepersSpy = 24317029;
public static int GravekeepersRecruiter = 93023479;
public static int AllureOfDarkness = 1475311;
public static int DarkHole = 53129443;
public static int RoyalTribute = 72405967;
public static int GravekeepersStele = 99523325;
public static int MysticalSpaceTyphoon = 5318639;
public static int BookofMoon = 14087893;
public static int HiddenTemplesOfNecrovalley = 70000776;
public static int Necrovalley = 47355498;
public static int BottomlessTrapHole = 29401950;
public static int RiteOfSpirit = 30450531;
public static int TorrentialTribute = 53582587;
public static int DimensionalPrison = 70342110;
public static int SolemnWarning = 84749824;
public static int ImperialTombsOfNecrovalley = 90434657;
}
public GravekeeperExecutor(GameAI ai, Duel duel)
......@@ -43,41 +43,41 @@ namespace WindBot.Game.AI.Decks
{
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.AllureOfDarkness);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.RoyalTribute);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersStele);
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.BookofMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, (int)CardId.HiddenTemplesOfNecrovalley, HiddenTemplesOfNecrovalleyEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Necrovalley, NecrovalleyActivate);
AddExecutor(ExecutorType.Activate, CardId.AllureOfDarkness);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.RoyalTribute);
AddExecutor(ExecutorType.Activate, CardId.GravekeepersStele);
AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.BookofMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, CardId.HiddenTemplesOfNecrovalley, HiddenTemplesOfNecrovalleyEffect);
AddExecutor(ExecutorType.Activate, CardId.Necrovalley, NecrovalleyActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.DimensionalPrison, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.RiteOfSpirit, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.ImperialTombsOfNecrovalley, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, CardId.DimensionalPrison, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.RiteOfSpirit, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.ImperialTombsOfNecrovalley, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersOracle);
AddExecutor(ExecutorType.SpSummon, (int)CardId.MaleficStardustDragon, MaleficStardustDragonSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersVisionary);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersChief);
AddExecutor(ExecutorType.Summon, (int)CardId.ThunderKingRaiOh);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersCommandant, GravekeepersCommandantSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersAssailant);
AddExecutor(ExecutorType.Summon, (int)CardId.GravekeepersDescendant);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.GravekeepersSpy);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.GravekeepersRecruiter);
AddExecutor(ExecutorType.Summon, CardId.GravekeepersOracle);
AddExecutor(ExecutorType.SpSummon, CardId.MaleficStardustDragon, MaleficStardustDragonSummon);
AddExecutor(ExecutorType.Summon, CardId.GravekeepersVisionary);
AddExecutor(ExecutorType.Summon, CardId.GravekeepersChief);
AddExecutor(ExecutorType.Summon, CardId.ThunderKingRaiOh);
AddExecutor(ExecutorType.Summon, CardId.GravekeepersCommandant, GravekeepersCommandantSummon);
AddExecutor(ExecutorType.Summon, CardId.GravekeepersAssailant);
AddExecutor(ExecutorType.Summon, CardId.GravekeepersDescendant);
AddExecutor(ExecutorType.MonsterSet, CardId.GravekeepersSpy);
AddExecutor(ExecutorType.MonsterSet, CardId.GravekeepersRecruiter);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersOracle);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersVisionary);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersChief);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersCommandant, GravekeepersCommandantEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersAssailant, GravekeepersAssailantEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersDescendant, GravekeepersDescendantEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersSpy, SearchForDescendant);
AddExecutor(ExecutorType.Activate, (int)CardId.GravekeepersRecruiter, SearchForDescendant);
AddExecutor(ExecutorType.Activate, CardId.GravekeepersOracle);
AddExecutor(ExecutorType.Activate, CardId.GravekeepersVisionary);
AddExecutor(ExecutorType.Activate, CardId.GravekeepersChief);
AddExecutor(ExecutorType.Activate, CardId.GravekeepersCommandant, GravekeepersCommandantEffect);
AddExecutor(ExecutorType.Activate, CardId.GravekeepersAssailant, GravekeepersAssailantEffect);
AddExecutor(ExecutorType.Activate, CardId.GravekeepersDescendant, GravekeepersDescendantEffect);
AddExecutor(ExecutorType.Activate, CardId.GravekeepersSpy, SearchForDescendant);
AddExecutor(ExecutorType.Activate, CardId.GravekeepersRecruiter, SearchForDescendant);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
......@@ -105,7 +105,7 @@ namespace WindBot.Game.AI.Decks
private bool GravekeepersCommandantEffect()
{
if (!Bot.HasInHand((int)CardId.Necrovalley) && !Bot.HasInSpellZone((int)CardId.Necrovalley))
if (!Bot.HasInHand(CardId.Necrovalley) && !Bot.HasInSpellZone(CardId.Necrovalley))
return true;
return false;
}
......@@ -140,7 +140,7 @@ namespace WindBot.Game.AI.Decks
private bool SearchForDescendant()
{
AI.SelectCard((int)CardId.GravekeepersDescendant);
AI.SelectCard(CardId.GravekeepersDescendant);
return true;
}
}
......
......@@ -10,23 +10,23 @@ namespace WindBot.Game.AI.Decks
[Deck("Graydle", "AI_Graydle", "NotFinished")]
public class GraydleExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
DarkHole = 53129443,
CosmicCyclone = 8267140,
SolemnJudgment = 41420027,
SolemnWarning = 84749824,
SolemnStrike = 40605147
public static int DarkHole = 53129443;
public static int CosmicCyclone = 8267140;
public static int SolemnJudgment = 41420027;
public static int SolemnWarning = 84749824;
public static int SolemnStrike = 40605147;
}
public GraydleExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnJudgment, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, CardId.SolemnJudgment, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
AddExecutor(ExecutorType.MonsterSet);
AddExecutor(ExecutorType.SpSummon);
......
......@@ -9,81 +9,81 @@ namespace WindBot.Game.AI.Decks
[Deck("Horus", "AI_Horus", "Easy")]
public class HorusExecutor : DefaultExecutor
{
public enum CardId
{
AlexandriteDragon = 43096270,
LusterDragon = 11091375,
WhiteNightDragon = 79473793,
HorusTheBlackFlameDragonLv8 = 48229808,
HorusTheBlackFlameDragonLv6 = 11224103,
CyberDragon = 70095154,
AxeDragonute = 84914462,
DodgerDragon = 47013502,
GolemDragon = 9666558,
Raigeki = 12580477,
HammerShot = 26412047,
DarkHole = 53129443,
Fissure = 66788016,
StampingDestruction = 81385346,
FoolishBurial = 81439173,
MonsterReborn = 83764718,
MysticalSpaceTyphoon = 5318639,
BellowOfTheSilverDragon = 80600103,
Mountain = 50913601,
DragonsRebirth = 20638610,
MirrorForce = 44095762,
DimensionalPrison = 70342110
public class CardId
{
public static int AlexandriteDragon = 43096270;
public static int LusterDragon = 11091375;
public static int WhiteNightDragon = 79473793;
public static int HorusTheBlackFlameDragonLv8 = 48229808;
public static int HorusTheBlackFlameDragonLv6 = 11224103;
public static int CyberDragon = 70095154;
public static int AxeDragonute = 84914462;
public static int DodgerDragon = 47013502;
public static int GolemDragon = 9666558;
public static int Raigeki = 12580477;
public static int HammerShot = 26412047;
public static int DarkHole = 53129443;
public static int Fissure = 66788016;
public static int StampingDestruction = 81385346;
public static int FoolishBurial = 81439173;
public static int MonsterReborn = 83764718;
public static int MysticalSpaceTyphoon = 5318639;
public static int BellowOfTheSilverDragon = 80600103;
public static int Mountain = 50913601;
public static int DragonsRebirth = 20638610;
public static int MirrorForce = 44095762;
public static int DimensionalPrison = 70342110;
}
public HorusExecutor(GameAI ai, Duel duel) : base(ai, duel)
{
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.HorusTheBlackFlameDragonLv6);
AddExecutor(ExecutorType.Activate, (int)CardId.StampingDestruction, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.FoolishBurial, FoolishBurial);
AddExecutor(ExecutorType.Activate, (int)CardId.Mountain, DefaultField);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.HorusTheBlackFlameDragonLv6);
AddExecutor(ExecutorType.Activate, CardId.StampingDestruction, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.FoolishBurial, FoolishBurial);
AddExecutor(ExecutorType.Activate, CardId.Mountain, DefaultField);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberDragon);
AddExecutor(ExecutorType.SpSummon, CardId.CyberDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, (int)CardId.HammerShot, DefaultHammerShot);
AddExecutor(ExecutorType.Activate, (int)CardId.Fissure);
AddExecutor(ExecutorType.Activate, CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, CardId.HammerShot, DefaultHammerShot);
AddExecutor(ExecutorType.Activate, CardId.Fissure);
AddExecutor(ExecutorType.Activate, (int)CardId.BellowOfTheSilverDragon, BellowOfTheSilverDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.MonsterReborn, MonsterReborn);
AddExecutor(ExecutorType.Activate, CardId.BellowOfTheSilverDragon, BellowOfTheSilverDragon);
AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterReborn);
AddExecutor(ExecutorType.Summon, (int)CardId.WhiteNightDragon, WhiteNightDragon);
AddExecutor(ExecutorType.Summon, (int)CardId.HorusTheBlackFlameDragonLv6, DefaultTributeSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.AlexandriteDragon);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.AxeDragonute);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.DodgerDragon);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.GolemDragon);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.LusterDragon);
AddExecutor(ExecutorType.Summon, CardId.WhiteNightDragon, WhiteNightDragon);
AddExecutor(ExecutorType.Summon, CardId.HorusTheBlackFlameDragonLv6, DefaultTributeSummon);
AddExecutor(ExecutorType.Summon, CardId.AlexandriteDragon);
AddExecutor(ExecutorType.SummonOrSet, CardId.AxeDragonute);
AddExecutor(ExecutorType.SummonOrSet, CardId.DodgerDragon);
AddExecutor(ExecutorType.MonsterSet, CardId.GolemDragon);
AddExecutor(ExecutorType.SummonOrSet, CardId.LusterDragon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Activate, (int)CardId.HorusTheBlackFlameDragonLv8, HorusTheBlackFlameDragonLv8);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.DimensionalPrison, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.DragonsRebirth, DragonsRebirth);
AddExecutor(ExecutorType.Activate, CardId.HorusTheBlackFlameDragonLv8, HorusTheBlackFlameDragonLv8);
AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.DimensionalPrison, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.DragonsRebirth, DragonsRebirth);
}
private bool FoolishBurial()
{
if (Bot.HasInGraveyard((int)CardId.WhiteNightDragon))
if (Bot.HasInGraveyard(CardId.WhiteNightDragon))
return false;
if (Bot.HasInHand((int)CardId.WhiteNightDragon))
if (Bot.HasInHand(CardId.WhiteNightDragon))
return false;
int remaining = 2;
foreach (ClientCard card in Bot.Banished)
if (card.Id == (int)CardId.WhiteNightDragon)
if (card.Id == CardId.WhiteNightDragon)
remaining--;
if (remaining > 0)
{
AI.SelectCard((int)CardId.WhiteNightDragon);
AI.SelectCard(CardId.WhiteNightDragon);
return true;
}
return false;
......@@ -197,7 +197,7 @@ namespace WindBot.Game.AI.Decks
ClientCard monster = cards[i];
if (monster.Attack < 2300)
return false;
if (monster.Race == (int)CardRace.Dragon && monster.Id != (int)CardId.HorusTheBlackFlameDragonLv8)
if (monster.Race == (int)CardRace.Dragon && monster.Id != CardId.HorusTheBlackFlameDragonLv8)
{
summonCard = monster;
break;
......
......@@ -10,44 +10,43 @@ namespace WindBot.Game.AI.Decks
[Deck("Lightsworn", "AI_Lightsworn", "NotFinished")]
public class LightswornExecutor : DefaultExecutor
{
public enum CardId
{
JudgmentDragon = 57774843,
Wulf = 58996430,
Garoth = 59019082,
Raiden = 77558536,
Lyla = 22624373,
Felis = 73176465,
Lumina = 95503687,
Minerva = 40164421,
Ryko = 21502796,
PerformageTrickClown = 67696066,
Goblindbergh = 25259669,
ThousandBlades = 1833916,
Honest = 37742478,
GlowUpBulb = 67441435,
SolarRecharge = 691925,
GalaxyCyclone = 5133471,
HarpiesFeatherDuster = 18144506,
ReinforcementOfTheArmy = 32807846,
MetalfoesFusion = 73594093,
ChargeOfTheLightBrigade = 94886282,
Michael = 4779823,
MinervaTheExalted = 30100551,
TrishulaDragonOfTheIceBarrier = 52687916,
ScarlightRedDragonArchfiend = 80666118,
PSYFramelordOmega = 74586817,
PSYFramelordZeta = 37192109,
NumberS39UtopiatheLightning = 56832966,
Number39Utopia = 84013237,
CastelTheSkyblasterMusketeer = 82633039,
EvilswarmExcitonKnight = 46772449,
DanteTravelerOfTheBurningAbyss = 83531441,
DecodeTalker = 1861629,
MissusRadiant = 3987233
public class CardId
{
public static int JudgmentDragon = 57774843;
public static int Wulf = 58996430;
public static int Garoth = 59019082;
public static int Raiden = 77558536;
public static int Lyla = 22624373;
public static int Felis = 73176465;
public static int Lumina = 95503687;
public static int Minerva = 40164421;
public static int Ryko = 21502796;
public static int PerformageTrickClown = 67696066;
public static int Goblindbergh = 25259669;
public static int ThousandBlades = 1833916;
public static int Honest = 37742478;
public static int GlowUpBulb = 67441435;
public static int SolarRecharge = 691925;
public static int GalaxyCyclone = 5133471;
public static int HarpiesFeatherDuster = 18144506;
public static int ReinforcementOfTheArmy = 32807846;
public static int MetalfoesFusion = 73594093;
public static int ChargeOfTheLightBrigade = 94886282;
public static int Michael = 4779823;
public static int MinervaTheExalted = 30100551;
public static int TrishulaDragonOfTheIceBarrier = 52687916;
public static int ScarlightRedDragonArchfiend = 80666118;
public static int PSYFramelordOmega = 74586817;
public static int PSYFramelordZeta = 37192109;
public static int NumberS39UtopiatheLightning = 56832966;
public static int Number39Utopia = 84013237;
public static int CastelTheSkyblasterMusketeer = 82633039;
public static int EvilswarmExcitonKnight = 46772449;
public static int DanteTravelerOfTheBurningAbyss = 83531441;
public static int DecodeTalker = 1861629;
public static int MissusRadiant = 3987233;
}
bool ClownUsed = false;
......@@ -55,36 +54,36 @@ namespace WindBot.Game.AI.Decks
public LightswornExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, (int)CardId.GalaxyCyclone, DefaultGalaxyCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, CardId.HarpiesFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, CardId.GalaxyCyclone, DefaultGalaxyCyclone);
AddExecutor(ExecutorType.Activate, CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, (int)CardId.MetalfoesFusion);
AddExecutor(ExecutorType.Activate, (int)CardId.GlowUpBulb);
AddExecutor(ExecutorType.Activate, CardId.MetalfoesFusion);
AddExecutor(ExecutorType.Activate, CardId.GlowUpBulb);
AddExecutor(ExecutorType.Activate, (int)CardId.JudgmentDragon, DefaultDarkHole);
AddExecutor(ExecutorType.SpSummon, (int)CardId.JudgmentDragon);
AddExecutor(ExecutorType.Activate, CardId.JudgmentDragon, DefaultDarkHole);
AddExecutor(ExecutorType.SpSummon, CardId.JudgmentDragon);
AddExecutor(ExecutorType.Activate, (int)CardId.ReinforcementOfTheArmy, ReinforcementOfTheArmyEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.ChargeOfTheLightBrigade, ChargeOfTheLightBrigadeEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.SolarRecharge, SolarRechargeEffect);
AddExecutor(ExecutorType.Activate, CardId.ReinforcementOfTheArmy, ReinforcementOfTheArmyEffect);
AddExecutor(ExecutorType.Activate, CardId.ChargeOfTheLightBrigade, ChargeOfTheLightBrigadeEffect);
AddExecutor(ExecutorType.Activate, CardId.SolarRecharge, SolarRechargeEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.Goblindbergh, GoblindberghSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.Goblindbergh, GoblindberghEffect);
AddExecutor(ExecutorType.Summon, CardId.Goblindbergh, GoblindberghSummon);
AddExecutor(ExecutorType.Activate, CardId.Goblindbergh, GoblindberghEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CastelTheSkyblasterMusketeer, DefaultCastelTheSkyblasterMusketeerSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.CastelTheSkyblasterMusketeer, DefaultCastelTheSkyblasterMusketeerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ScarlightRedDragonArchfiend, DefaultScarlightRedDragonArchfiendSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.ScarlightRedDragonArchfiend, DefaultScarlightRedDragonArchfiendEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Number39Utopia, DefaultNumberS39UtopiaTheLightningSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.SpSummon, CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightSummon);
AddExecutor(ExecutorType.Activate, CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.SpSummon, CardId.CastelTheSkyblasterMusketeer, DefaultCastelTheSkyblasterMusketeerSummon);
AddExecutor(ExecutorType.Activate, CardId.CastelTheSkyblasterMusketeer, DefaultCastelTheSkyblasterMusketeerEffect);
AddExecutor(ExecutorType.SpSummon, CardId.ScarlightRedDragonArchfiend, DefaultScarlightRedDragonArchfiendSummon);
AddExecutor(ExecutorType.Activate, CardId.ScarlightRedDragonArchfiend, DefaultScarlightRedDragonArchfiendEffect);
AddExecutor(ExecutorType.SpSummon, CardId.Number39Utopia, DefaultNumberS39UtopiaTheLightningSummon);
AddExecutor(ExecutorType.SpSummon, CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.PerformageTrickClown, PerformageTrickClownEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.ThousandBlades);
AddExecutor(ExecutorType.Activate, (int)CardId.Honest, HonestEffect);
AddExecutor(ExecutorType.Activate, CardId.PerformageTrickClown, PerformageTrickClownEffect);
AddExecutor(ExecutorType.Activate, CardId.ThousandBlades);
AddExecutor(ExecutorType.Activate, CardId.Honest, HonestEffect);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
......@@ -101,11 +100,11 @@ namespace WindBot.Game.AI.Decks
if (defender.IsMonsterDangerous() || defender.IsDefense())
return false;
}
if (!(defender.Id == (int)CardId.NumberS39UtopiatheLightning))
if (!(defender.Id == CardId.NumberS39UtopiatheLightning))
{
if (attacker.Attribute == (int)CardAttribute.Light && Bot.HasInHand((int)CardId.Honest))
if (attacker.Attribute == (int)CardAttribute.Light && Bot.HasInHand(CardId.Honest))
attacker.RealPower = attacker.RealPower + defender.Attack;
if (attacker.Id == (int)CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, (int)CardId.Number39Utopia))
if (attacker.Id == CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, CardId.Number39Utopia))
attacker.RealPower = 5000;
}
return attacker.RealPower > defender.GetDefensePower();
......@@ -125,7 +124,7 @@ namespace WindBot.Game.AI.Decks
IList<ClientCard> result = new List<ClientCard>();
foreach (ClientCard card in cards)
{
if (!result.Contains(card) && (!ClownUsed || card.Id != (int)CardId.PerformageTrickClown))
if (!result.Contains(card) && (!ClownUsed || card.Id != CardId.PerformageTrickClown))
result.Add(card);
if (result.Count >= 2)
break;
......@@ -148,24 +147,24 @@ namespace WindBot.Game.AI.Decks
private bool ReinforcementOfTheArmyEffect()
{
if (!Bot.HasInHand((int)CardId.Goblindbergh))
AI.SelectCard((int)CardId.Goblindbergh);
else if (!Bot.HasInHand((int)CardId.Raiden))
AI.SelectCard((int)CardId.Raiden);
if (!Bot.HasInHand(CardId.Goblindbergh))
AI.SelectCard(CardId.Goblindbergh);
else if (!Bot.HasInHand(CardId.Raiden))
AI.SelectCard(CardId.Raiden);
return true;
}
private bool ChargeOfTheLightBrigadeEffect()
{
if (!Bot.HasInHand((int)CardId.Lumina))
AI.SelectCard((int)CardId.Lumina);
if (!Bot.HasInHand(CardId.Lumina))
AI.SelectCard(CardId.Lumina);
else
AI.SelectCard(new[]
{
(int)CardId.Raiden,
(int)CardId.Lumina,
(int)CardId.Minerva,
(int)CardId.Lyla
CardId.Raiden,
CardId.Lumina,
CardId.Minerva,
CardId.Lyla
});
return true;
}
......@@ -174,11 +173,11 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.Wulf,
(int)CardId.Felis,
(int)CardId.Minerva,
(int)CardId.Lyla,
(int)CardId.Raiden
CardId.Wulf,
CardId.Felis,
CardId.Minerva,
CardId.Lyla,
CardId.Raiden
});
return true;
}
......@@ -197,11 +196,11 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.Felis,
(int)CardId.Wulf,
(int)CardId.Raiden,
(int)CardId.PerformageTrickClown,
(int)CardId.ThousandBlades
CardId.Felis,
CardId.Wulf,
CardId.Raiden,
CardId.PerformageTrickClown,
CardId.ThousandBlades
});
return true;
}
......
......@@ -9,10 +9,10 @@ namespace WindBot.Game.AI.Decks
[Deck("MokeyMokey", "AI_MokeyMokey", "Easy")]
public class MokeyMokeyExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
LeoWizard = 4392470,
Bunilla = 69380702
public static int LeoWizard = 4392470;
public static int Bunilla = 69380702;
}
private int RockCount = 0;
......
......@@ -9,10 +9,10 @@ namespace WindBot.Game.AI.Decks
[Deck("MokeyMokeyKing", "AI_MokeyMokeyKing", "Easy")]
public class MokeyMokeyKingExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
LeoWizard = 4392470,
Bunilla = 69380702
public static int LeoWizard = 4392470;
public static int Bunilla = 69380702;
}
private int RockCount = 0;
......
......@@ -10,33 +10,33 @@ namespace WindBot.Game.AI.Decks
[Deck("Nekroz", "AI_Nekroz", "NotFinished")]
public class NekrozExecutor : DefaultExecutor
{
public enum CardId
{
DancePrincess = 52738610,
ThousandHands = 23401839,
TenThousandHands = 95492061,
Shurit = 90307777,
MaxxC = 23434538,
DecisiveArmor = 88240999,
Trishula = 52068432,
Valkyrus = 25857246,
Gungnir = 74122412,
Brionac = 26674724,
Unicore = 89463537,
Clausolas = 99185129,
PhantomOfChaos = 30312361,
public class CardId
{
public static int DancePrincess = 52738610;
public static int ThousandHands = 23401839;
public static int TenThousandHands = 95492061;
public static int Shurit = 90307777;
public static int MaxxC = 23434538;
public static int DecisiveArmor = 88240999;
public static int Trishula = 52068432;
public static int Valkyrus = 25857246;
public static int Gungnir = 74122412;
public static int Brionac = 26674724;
public static int Unicore = 89463537;
public static int Clausolas = 99185129;
public static int PhantomOfChaos = 30312361;
DarkHole = 53129443,
ReinforcementOfTheArmy = 32807846,
TradeIn = 38120068,
PreparationOfRites = 96729612,
Mirror = 14735698,
Kaleidoscope = 51124303,
Cycle = 97211663,
MysticalSpaceTyphoon = 5318639,
RoyalDecree = 51452091,
EvilswarmExcitonKnight = 46772449,
HeraldOfTheArcLight = 79606837
public static int DarkHole = 53129443;
public static int ReinforcementOfTheArmy = 32807846;
public static int TradeIn = 38120068;
public static int PreparationOfRites = 96729612;
public static int Mirror = 14735698;
public static int Kaleidoscope = 51124303;
public static int Cycle = 97211663;
public static int MysticalSpaceTyphoon = 5318639;
public static int RoyalDecree = 51452091;
public static int EvilswarmExcitonKnight = 46772449;
public static int HeraldOfTheArcLight = 79606837;
}
List<int> NekrozRituelCard = new List<int>();
......@@ -45,79 +45,79 @@ namespace WindBot.Game.AI.Decks
public NekrozExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
NekrozRituelCard.Add((int)CardId.Clausolas);
NekrozRituelCard.Add((int)CardId.Unicore);
NekrozRituelCard.Add((int)CardId.DecisiveArmor);
NekrozRituelCard.Add((int)CardId.Brionac);
NekrozRituelCard.Add((int)CardId.Trishula);
NekrozRituelCard.Add((int)CardId.Gungnir);
NekrozRituelCard.Add((int)CardId.Valkyrus);
NekrozRituelCard.Add(CardId.Clausolas);
NekrozRituelCard.Add(CardId.Unicore);
NekrozRituelCard.Add(CardId.DecisiveArmor);
NekrozRituelCard.Add(CardId.Brionac);
NekrozRituelCard.Add(CardId.Trishula);
NekrozRituelCard.Add(CardId.Gungnir);
NekrozRituelCard.Add(CardId.Valkyrus);
NekrozSpellCard.Add((int)CardId.Mirror);
NekrozSpellCard.Add((int)CardId.Kaleidoscope);
NekrozSpellCard.Add((int)CardId.Cycle);
NekrozSpellCard.Add(CardId.Mirror);
NekrozSpellCard.Add(CardId.Kaleidoscope);
NekrozSpellCard.Add(CardId.Cycle);
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.ReinforcementOfTheArmy, ReinforcementOfTheArmyEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.TradeIn);
AddExecutor(ExecutorType.Activate, (int)CardId.PreparationOfRites);
AddExecutor(ExecutorType.Activate, (int)CardId.Mirror);
AddExecutor(ExecutorType.Activate, (int)CardId.Kaleidoscope);
AddExecutor(ExecutorType.Activate, (int)CardId.Cycle);
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.RoyalDecree);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.ReinforcementOfTheArmy, ReinforcementOfTheArmyEffect);
AddExecutor(ExecutorType.Activate, CardId.TradeIn);
AddExecutor(ExecutorType.Activate, CardId.PreparationOfRites);
AddExecutor(ExecutorType.Activate, CardId.Mirror);
AddExecutor(ExecutorType.Activate, CardId.Kaleidoscope);
AddExecutor(ExecutorType.Activate, CardId.Cycle);
AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.RoyalDecree);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.DancePrincess, DancePrincessSummon);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.Shurit, ShuritSet);
AddExecutor(ExecutorType.Summon, (int)CardId.ThousandHands, ThousandHandsSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.TenThousandHands, TenThousandHandsSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.PhantomOfChaos, PhantomOfChaosSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.DancePrincess, DancePrincessSummon);
AddExecutor(ExecutorType.MonsterSet, CardId.Shurit, ShuritSet);
AddExecutor(ExecutorType.Summon, CardId.ThousandHands, ThousandHandsSummon);
AddExecutor(ExecutorType.Summon, CardId.TenThousandHands, TenThousandHandsSummon);
AddExecutor(ExecutorType.Summon, CardId.PhantomOfChaos, PhantomOfChaosSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.Unicore, UnicoreEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.DecisiveArmor, DecisiveArmorEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Valkyrus, ValkyrusEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Gungnir, GungnirEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Brionac, BrionacEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Clausolas, ClausolasEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Trishula);
AddExecutor(ExecutorType.Activate, (int)CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.PhantomOfChaos, PhantomOfChaosEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.MaxxC);
AddExecutor(ExecutorType.Activate, (int)CardId.ThousandHands, ThousandHandsEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.TenThousandHands, BrionacEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.HeraldOfTheArcLight);
AddExecutor(ExecutorType.Activate, (int)CardId.Shurit);
AddExecutor(ExecutorType.Activate, CardId.Unicore, UnicoreEffect);
AddExecutor(ExecutorType.Activate, CardId.DecisiveArmor, DecisiveArmorEffect);
AddExecutor(ExecutorType.Activate, CardId.Valkyrus, ValkyrusEffect);
AddExecutor(ExecutorType.Activate, CardId.Gungnir, GungnirEffect);
AddExecutor(ExecutorType.Activate, CardId.Brionac, BrionacEffect);
AddExecutor(ExecutorType.Activate, CardId.Clausolas, ClausolasEffect);
AddExecutor(ExecutorType.Activate, CardId.Trishula);
AddExecutor(ExecutorType.Activate, CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.Activate, CardId.PhantomOfChaos, PhantomOfChaosEffect);
AddExecutor(ExecutorType.Activate, CardId.MaxxC);
AddExecutor(ExecutorType.Activate, CardId.ThousandHands, ThousandHandsEffect);
AddExecutor(ExecutorType.Activate, CardId.TenThousandHands, BrionacEffect);
AddExecutor(ExecutorType.Activate, CardId.HeraldOfTheArcLight);
AddExecutor(ExecutorType.Activate, CardId.Shurit);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Trishula);
AddExecutor(ExecutorType.SpSummon, (int)CardId.DecisiveArmor);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Valkyrus);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Gungnir);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Brionac);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Unicore);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Clausolas);
AddExecutor(ExecutorType.SpSummon, (int)CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightSummon);
AddExecutor(ExecutorType.SpSummon, CardId.Trishula);
AddExecutor(ExecutorType.SpSummon, CardId.DecisiveArmor);
AddExecutor(ExecutorType.SpSummon, CardId.Valkyrus);
AddExecutor(ExecutorType.SpSummon, CardId.Gungnir);
AddExecutor(ExecutorType.SpSummon, CardId.Brionac);
AddExecutor(ExecutorType.SpSummon, CardId.Unicore);
AddExecutor(ExecutorType.SpSummon, CardId.Clausolas);
AddExecutor(ExecutorType.SpSummon, CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightSummon);
}
private bool ThousandHandsSummon()
{
if (!Bot.HasInHand(NekrozRituelCard) || Bot.HasInHand((int)CardId.Shurit) || !Bot.HasInHand(NekrozSpellCard))
if (!Bot.HasInHand(NekrozRituelCard) || Bot.HasInHand(CardId.Shurit) || !Bot.HasInHand(NekrozSpellCard))
return true;
foreach (ClientCard Card in Bot.Hand)
if (Card != null && Card.Id == (int)CardId.Kaleidoscope && !Bot.HasInHand((int)CardId.Unicore))
if (Card != null && Card.Id == CardId.Kaleidoscope && !Bot.HasInHand(CardId.Unicore))
return true;
else if (Card.Id == (int)CardId.Trishula || Card.Id == (int)CardId.DecisiveArmor && !Bot.HasInHand((int)CardId.Mirror) || !Bot.HasInHand((int)CardId.Shurit))
else if (Card.Id == CardId.Trishula || Card.Id == CardId.DecisiveArmor && !Bot.HasInHand(CardId.Mirror) || !Bot.HasInHand(CardId.Shurit))
return true;
return false;
}
private bool ReinforcementOfTheArmyEffect()
{
if (!Bot.HasInGraveyard((int)CardId.Shurit) && !Bot.HasInHand((int)CardId.Shurit))
if (!Bot.HasInGraveyard(CardId.Shurit) && !Bot.HasInHand(CardId.Shurit))
{
AI.SelectCard((int)CardId.Shurit);
AI.SelectCard(CardId.Shurit);
return true;
}
return false;
......@@ -125,34 +125,34 @@ namespace WindBot.Game.AI.Decks
private bool TenThousandHandsSummon()
{
if (!Bot.HasInHand((int)CardId.ThousandHands) || !Bot.HasInHand((int)CardId.Shurit))
if (!Bot.HasInHand(CardId.ThousandHands) || !Bot.HasInHand(CardId.Shurit))
return true;
return false;
}
private bool DancePrincessSummon()
{
if (!Bot.HasInHand((int)CardId.ThousandHands) && !Bot.HasInHand((int)CardId.TenThousandHands))
if (!Bot.HasInHand(CardId.ThousandHands) && !Bot.HasInHand(CardId.TenThousandHands))
return true;
return false;
}
private bool PhantomOfChaosSummon()
{
if (Bot.HasInGraveyard((int)CardId.Shurit) && Bot.HasInHand(NekrozSpellCard) && Bot.HasInHand(NekrozRituelCard))
if (Bot.HasInGraveyard(CardId.Shurit) && Bot.HasInHand(NekrozSpellCard) && Bot.HasInHand(NekrozRituelCard))
return true;
return false;
}
private bool PhantomOfChaosEffect()
{
AI.SelectCard((int)CardId.Shurit);
AI.SelectCard(CardId.Shurit);
return true;
}
private bool ShuritSet()
{
if (!Bot.HasInHand((int)CardId.ThousandHands) && !Bot.HasInHand((int)CardId.TenThousandHands) && !Bot.HasInHand((int)CardId.DancePrincess))
if (!Bot.HasInHand(CardId.ThousandHands) && !Bot.HasInHand(CardId.TenThousandHands) && !Bot.HasInHand(CardId.DancePrincess))
return true;
return false;
}
......@@ -161,7 +161,7 @@ namespace WindBot.Game.AI.Decks
{
if (AI.Utils.IsAllEnemyBetterThanValue(3300, true))
{
AI.SelectCard((int)CardId.DecisiveArmor);
AI.SelectCard(CardId.DecisiveArmor);
return true;
}
return false;
......@@ -186,34 +186,34 @@ namespace WindBot.Game.AI.Decks
private bool BrionacEffect()
{
if (!Bot.HasInHand((int)CardId.Shurit))
if (!Bot.HasInHand(CardId.Shurit))
{
AI.SelectCard((int)CardId.Shurit);
AI.SelectCard(CardId.Shurit);
return true;
}
else if (!Bot.HasInHand(NekrozSpellCard))
{
AI.SelectCard((int)CardId.Mirror);
AI.SelectCard(CardId.Mirror);
return true;
}
else if (AI.Utils.IsOneEnemyBetterThanValue(3300, true) && !Bot.HasInHand((int)CardId.Trishula))
else if (AI.Utils.IsOneEnemyBetterThanValue(3300, true) && !Bot.HasInHand(CardId.Trishula))
{
AI.SelectCard((int)CardId.Trishula);
AI.SelectCard(CardId.Trishula);
return true;
}
else if (AI.Utils.IsAllEnemyBetterThanValue(2700,true) && !Bot.HasInHand((int)CardId.DecisiveArmor))
else if (AI.Utils.IsAllEnemyBetterThanValue(2700,true) && !Bot.HasInHand(CardId.DecisiveArmor))
{
AI.SelectCard((int)CardId.DecisiveArmor);
AI.SelectCard(CardId.DecisiveArmor);
return true;
}
else if (Bot.HasInHand((int)CardId.Unicore) && !Bot.HasInHand((int)CardId.Kaleidoscope))
else if (Bot.HasInHand(CardId.Unicore) && !Bot.HasInHand(CardId.Kaleidoscope))
{
AI.SelectCard((int)CardId.Kaleidoscope);
AI.SelectCard(CardId.Kaleidoscope);
return true;
}
else if (!Bot.HasInHand((int)CardId.Unicore) && Bot.HasInHand((int)CardId.Kaleidoscope))
else if (!Bot.HasInHand(CardId.Unicore) && Bot.HasInHand(CardId.Kaleidoscope))
{
AI.SelectCard((int)CardId.Unicore);
AI.SelectCard(CardId.Unicore);
return true;
}
return true;
......@@ -221,19 +221,19 @@ namespace WindBot.Game.AI.Decks
private bool ThousandHandsEffect()
{
if (AI.Utils.IsOneEnemyBetterThanValue(3300, true) && !Bot.HasInHand((int)CardId.Trishula))
if (AI.Utils.IsOneEnemyBetterThanValue(3300, true) && !Bot.HasInHand(CardId.Trishula))
{
AI.SelectCard((int)CardId.Trishula);
AI.SelectCard(CardId.Trishula);
return true;
}
else if (AI.Utils.IsAllEnemyBetterThanValue(2700, true) && !Bot.HasInHand((int)CardId.DecisiveArmor))
else if (AI.Utils.IsAllEnemyBetterThanValue(2700, true) && !Bot.HasInHand(CardId.DecisiveArmor))
{
AI.SelectCard((int)CardId.DecisiveArmor);
AI.SelectCard(CardId.DecisiveArmor);
return true;
}
else if (!Bot.HasInHand((int)CardId.Unicore) && Bot.HasInHand((int)CardId.Kaleidoscope))
else if (!Bot.HasInHand(CardId.Unicore) && Bot.HasInHand(CardId.Kaleidoscope))
{
AI.SelectCard((int)CardId.Unicore);
AI.SelectCard(CardId.Unicore);
return true;
}
return true;
......@@ -241,9 +241,9 @@ namespace WindBot.Game.AI.Decks
private bool UnicoreEffect()
{
if (Bot.HasInGraveyard((int)CardId.Shurit))
if (Bot.HasInGraveyard(CardId.Shurit))
{
AI.SelectCard((int)CardId.Shurit);
AI.SelectCard(CardId.Shurit);
return true;
}
return false;
......@@ -253,7 +253,7 @@ namespace WindBot.Game.AI.Decks
{
if (!Bot.HasInHand(NekrozSpellCard))
{
AI.SelectCard((int)CardId.Mirror);
AI.SelectCard(CardId.Mirror);
return true;
}
return false;
......@@ -261,7 +261,7 @@ namespace WindBot.Game.AI.Decks
private bool IsTheLastPossibility()
{
if (!Bot.HasInHand((int)CardId.DecisiveArmor) && !Bot.HasInHand((int)CardId.Trishula))
if (!Bot.HasInHand(CardId.DecisiveArmor) && !Bot.HasInHand(CardId.Trishula))
return true;
return false;
}
......@@ -277,42 +277,42 @@ namespace WindBot.Game.AI.Decks
foreach (int Id in NekrozCard)
{
if (Id == (int)CardId.Trishula && AI.Utils.IsAllEnemyBetterThanValue(2700, true) && Bot.HasInHand((int)CardId.DecisiveArmor))
if (Id == CardId.Trishula && AI.Utils.IsAllEnemyBetterThanValue(2700, true) && Bot.HasInHand(CardId.DecisiveArmor))
{
AI.SelectCard((int)CardId.Trishula);
AI.SelectCard(CardId.Trishula);
return true;
}
else if (Id == (int)CardId.DecisiveArmor)
else if (Id == CardId.DecisiveArmor)
{
AI.SelectCard((int)CardId.DecisiveArmor);
AI.SelectCard(CardId.DecisiveArmor);
return true;
}
else if (Id == (int)CardId.Unicore && Bot.HasInHand((int)CardId.Kaleidoscope) && !Bot.HasInGraveyard((int)CardId.Shurit))
else if (Id == CardId.Unicore && Bot.HasInHand(CardId.Kaleidoscope) && !Bot.HasInGraveyard(CardId.Shurit))
{
AI.SelectCard((int)CardId.Unicore);
AI.SelectCard(CardId.Unicore);
return true;
}
else if (Id == (int)CardId.Valkyrus)
else if (Id == CardId.Valkyrus)
{
if (IsTheLastPossibility())
{
AI.SelectCard((int)CardId.Valkyrus);
AI.SelectCard(CardId.Valkyrus);
return true;
}
}
else if (Id == (int)CardId.Gungnir)
else if (Id == CardId.Gungnir)
{
if (IsTheLastPossibility())
{
AI.SelectCard((int)CardId.Gungnir);
AI.SelectCard(CardId.Gungnir);
return true;
}
}
else if (Id == (int)CardId.Clausolas)
else if (Id == CardId.Clausolas)
{
if (IsTheLastPossibility())
{
AI.SelectCard((int)CardId.Clausolas);
AI.SelectCard(CardId.Clausolas);
return true;
}
}
......
......@@ -9,44 +9,64 @@ namespace WindBot.Game.AI.Decks
[Deck("OldSchool", "AI_OldSchool", "Easy")]
public class OldSchoolExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
Raigeki = 12580477
public static int AncientGearGolem = 83104731;
public static int Frostosaurus = 6631034;
public static int AlexandriteDragon = 43096270;
public static int GeneWarpedWarwolf = 69247929;
public static int GearGolemTheMovingFortress = 30190809;
public static int EvilswarmHeliotrope = 77542832;
public static int LusterDragon = 11091375;
public static int InsectKnight = 35052053;
public static int ArchfiendSoldier = 49881766;
public static int HeavyStorm = 19613556;
public static int DarkHole = 53129443;
public static int Raigeki = 12580477;
public static int HammerShot = 26412047;
public static int Fissure = 66788016;
public static int SwordsOfRevealingLight = 72302403;
public static int DoubleSummon = 43422537;
public static int MirrorForce = 44095762;
public static int DimensionalPrison = 70342110;
}
public OldSchoolExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, 19613556, DefaultHeavyStorm);
AddExecutor(ExecutorType.Activate, CardId.HeavyStorm, DefaultHeavyStorm);
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, 53129443, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, 26412047, DefaultHammerShot);
AddExecutor(ExecutorType.Activate, 66788016);
AddExecutor(ExecutorType.Activate, 72302403, SwordsOfRevealingLight);
AddExecutor(ExecutorType.Activate, 43422537, DoubleSummon);
AddExecutor(ExecutorType.Summon, 83104731, DefaultTributeSummon);
AddExecutor(ExecutorType.Summon, 6631034, DefaultTributeSummon);
AddExecutor(ExecutorType.SummonOrSet, 43096270);
AddExecutor(ExecutorType.SummonOrSet, 69247929);
AddExecutor(ExecutorType.MonsterSet, 30190809);
AddExecutor(ExecutorType.SummonOrSet, 77542832);
AddExecutor(ExecutorType.SummonOrSet, 11091375);
AddExecutor(ExecutorType.SummonOrSet, 35052053);
AddExecutor(ExecutorType.SummonOrSet, 49881766);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, CardId.HammerShot, DefaultHammerShot);
AddExecutor(ExecutorType.Activate, CardId.Fissure);
AddExecutor(ExecutorType.Activate, CardId.SwordsOfRevealingLight, SwordsOfRevealingLight);
AddExecutor(ExecutorType.Activate, CardId.DoubleSummon, DoubleSummon);
AddExecutor(ExecutorType.Summon, CardId.AncientGearGolem, DefaultTributeSummon);
AddExecutor(ExecutorType.Summon, CardId.Frostosaurus, DefaultTributeSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.AlexandriteDragon);
AddExecutor(ExecutorType.SummonOrSet, CardId.GeneWarpedWarwolf);
AddExecutor(ExecutorType.MonsterSet, CardId.GearGolemTheMovingFortress);
AddExecutor(ExecutorType.SummonOrSet, CardId.EvilswarmHeliotrope);
AddExecutor(ExecutorType.SummonOrSet, CardId.LusterDragon);
AddExecutor(ExecutorType.SummonOrSet, CardId.InsectKnight);
AddExecutor(ExecutorType.SummonOrSet, CardId.ArchfiendSoldier);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Activate, 44095762, DefaultTrap);
AddExecutor(ExecutorType.Activate, 70342110, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.DimensionalPrison, DefaultTrap);
}
private int _lastDoubleSummon;
public override bool OnPreBattleBetween(ClientCard attacker, ClientCard defender)
{
if (defender.IsMonsterInvincible() && !defender.IsMonsterDangerous() && attacker.Id == 83104731)
if (defender.IsMonsterInvincible() && !defender.IsMonsterDangerous() && attacker.Id == CardId.AncientGearGolem)
return true;
return base.OnPreBattleBetween(attacker, defender);
}
......
......@@ -9,113 +9,113 @@ namespace WindBot.Game.AI.Decks
[Deck("Qliphort", "AI_Qliphort")]
public class QliphortExecutor : DefaultExecutor
{
public enum CardId
{
Scout = 65518099,
Stealth = 13073850,
Shell = 90885155,
Helix = 37991342,
Carrier = 91907707,
DarkHole = 53129443,
CardOfDemise = 59750328,
SummonersArt = 79816536,
PotOfDuality = 98645731,
Saqlifice = 17639150,
MirrorForce = 44095762,
TorrentialTribute = 53582587,
DimensionalBarrier = 83326048,
CompulsoryEvacuationDevice = 94192409,
VanitysEmptiness = 5851097,
SkillDrain = 82732705,
SolemnStrike = 40605147,
TheHugeRevolutionIsOver = 99188141
public class CardId
{
public static int Scout = 65518099;
public static int Stealth = 13073850;
public static int Shell = 90885155;
public static int Helix = 37991342;
public static int Carrier = 91907707;
public static int DarkHole = 53129443;
public static int CardOfDemise = 59750328;
public static int SummonersArt = 79816536;
public static int PotOfDuality = 98645731;
public static int Saqlifice = 17639150;
public static int MirrorForce = 44095762;
public static int TorrentialTribute = 53582587;
public static int DimensionalBarrier = 83326048;
public static int CompulsoryEvacuationDevice = 94192409;
public static int VanitysEmptiness = 5851097;
public static int SkillDrain = 82732705;
public static int SolemnStrike = 40605147;
public static int TheHugeRevolutionIsOver = 99188141;
}
bool CardOfDemiseUsed = false;
List<int> LowScaleCards = new List<int>
{
(int)CardId.Stealth,
(int)CardId.Carrier
CardId.Stealth,
CardId.Carrier
};
List<int> HighScaleCards = new List<int>
{
(int)CardId.Scout,
(int)CardId.Shell,
(int)CardId.Helix
CardId.Scout,
CardId.Shell,
CardId.Helix
};
public QliphortExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.SummonersArt);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.SummonersArt);
AddExecutor(ExecutorType.Activate, (int)CardId.Scout, ScoutActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.Scout, ScoutEffect);
AddExecutor(ExecutorType.Activate, CardId.Scout, ScoutActivate);
AddExecutor(ExecutorType.Activate, CardId.Scout, ScoutEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Stealth, ScaleActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.Shell, ScaleActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.Helix, ScaleActivate);
AddExecutor(ExecutorType.Activate, (int)CardId.Carrier, ScaleActivate);
AddExecutor(ExecutorType.Activate, CardId.Stealth, ScaleActivate);
AddExecutor(ExecutorType.Activate, CardId.Shell, ScaleActivate);
AddExecutor(ExecutorType.Activate, CardId.Helix, ScaleActivate);
AddExecutor(ExecutorType.Activate, CardId.Carrier, ScaleActivate);
AddExecutor(ExecutorType.Summon, NormalSummon);
AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.Saqlifice, SaqlificeEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Stealth, StealthEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Helix, HelixEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Carrier, CarrierEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SkillDrain, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DimensionalBarrier, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TorrentialTribute, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MirrorForce, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CompulsoryEvacuationDevice, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TheHugeRevolutionIsOver, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.Saqlifice, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SkillDrain, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DimensionalBarrier, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TorrentialTribute, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MirrorForce, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CompulsoryEvacuationDevice, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TheHugeRevolutionIsOver, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DarkHole, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SummonersArt, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.PotOfDuality, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.Activate, (int)CardId.PotOfDuality, PotOfDualityEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CardOfDemise);
AddExecutor(ExecutorType.Activate, (int)CardId.CardOfDemise, CardOfDemiseEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.Saqlifice, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SkillDrain, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DimensionalBarrier, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TorrentialTribute, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MirrorForce, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CompulsoryEvacuationDevice, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TheHugeRevolutionIsOver, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DarkHole, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SummonersArt, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.PotOfDuality, CardOfDemiseAcivated);
AddExecutor(ExecutorType.Activate, (int)CardId.TheHugeRevolutionIsOver, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, (int)CardId.SkillDrain, SkillDrainEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.VanitysEmptiness, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.CompulsoryEvacuationDevice, DefaultCompulsoryEvacuationDevice);
AddExecutor(ExecutorType.Activate, (int)CardId.DimensionalBarrier, DefaultDimensionalBarrier);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, CardId.Saqlifice, SaqlificeEffect);
AddExecutor(ExecutorType.Activate, CardId.Stealth, StealthEffect);
AddExecutor(ExecutorType.Activate, CardId.Helix, HelixEffect);
AddExecutor(ExecutorType.Activate, CardId.Carrier, CarrierEffect);
AddExecutor(ExecutorType.SpellSet, CardId.SkillDrain, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.VanitysEmptiness, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.DimensionalBarrier, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.TorrentialTribute, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnStrike, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.MirrorForce, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.CompulsoryEvacuationDevice, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.TheHugeRevolutionIsOver, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.Saqlifice, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.SkillDrain, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.VanitysEmptiness, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.DimensionalBarrier, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.TorrentialTribute, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnStrike, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.MirrorForce, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.CompulsoryEvacuationDevice, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.TheHugeRevolutionIsOver, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.DarkHole, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.SummonersArt, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.PotOfDuality, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.Activate, CardId.PotOfDuality, PotOfDualityEffect);
AddExecutor(ExecutorType.SpellSet, CardId.CardOfDemise);
AddExecutor(ExecutorType.Activate, CardId.CardOfDemise, CardOfDemiseEffect);
AddExecutor(ExecutorType.SpellSet, CardId.Saqlifice, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.SkillDrain, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.VanitysEmptiness, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.DimensionalBarrier, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.TorrentialTribute, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnStrike, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.MirrorForce, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.CompulsoryEvacuationDevice, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.TheHugeRevolutionIsOver, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.DarkHole, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.SummonersArt, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.PotOfDuality, CardOfDemiseAcivated);
AddExecutor(ExecutorType.Activate, CardId.TheHugeRevolutionIsOver, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, CardId.SkillDrain, SkillDrainEffect);
AddExecutor(ExecutorType.Activate, CardId.VanitysEmptiness, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.CompulsoryEvacuationDevice, DefaultCompulsoryEvacuationDevice);
AddExecutor(ExecutorType.Activate, CardId.DimensionalBarrier, DefaultDimensionalBarrier);
AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
......@@ -147,7 +147,7 @@ namespace WindBot.Game.AI.Decks
private bool NormalSummon()
{
if (Card.Id == (int)CardId.Scout)
if (Card.Id == CardId.Scout)
return false;
if (Card.Level < 8)
AI.SelectOption(1);
......@@ -163,16 +163,16 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.Scout,
(int)CardId.SkillDrain,
(int)CardId.VanitysEmptiness,
(int)CardId.DimensionalBarrier,
(int)CardId.Stealth,
(int)CardId.Shell,
(int)CardId.Helix,
(int)CardId.Carrier,
(int)CardId.SolemnStrike,
(int)CardId.CardOfDemise
CardId.Scout,
CardId.SkillDrain,
CardId.VanitysEmptiness,
CardId.DimensionalBarrier,
CardId.Stealth,
CardId.Shell,
CardId.Helix,
CardId.Carrier,
CardId.SolemnStrike,
CardId.CardOfDemise
});
return !ShouldPendulum();
}
......@@ -214,7 +214,7 @@ namespace WindBot.Game.AI.Decks
ClientCard l = AI.Utils.GetPZone(0, 0);
ClientCard r = AI.Utils.GetPZone(0, 1);
if (l == null && r == null)
AI.SelectCard((int)CardId.Scout);
AI.SelectCard(CardId.Scout);
}
return true;
}
......@@ -301,9 +301,9 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.Saqlifice,
(int)CardId.Shell,
(int)CardId.Helix
CardId.Saqlifice,
CardId.Shell,
CardId.Helix
});
}
else
......
......@@ -9,47 +9,47 @@ namespace WindBot.Game.AI.Decks
[Deck("Rainbow", "AI_Rainbow")]
class RainbowExecutor : DefaultExecutor
{
public enum CardId
{
MysteryShellDragon = 18108166,
PhantomGryphon = 74852097,
MasterPendulumTheDracoslayer = 75195825,
AngelTrumpeter = 87979586,
MetalfoesGoldriver = 33256280,
Kabazauls = 51934376,
RescueRabbit = 85138716,
UnexpectedDai = 911883,
HarpiesFeatherDuster = 18144506,
PotOfDesires = 35261759,
MonsterReborn = 83764718,
SmashingGround = 97169186,
QuakingMirrorForce = 40838625,
DrowningMirrorForce = 47475363,
BlazingMirrorForce = 75249652,
StormingMirrorForce = 5650082,
MirrorForce = 44095762,
DarkMirrorForce = 20522190,
BottomlessTrapHole = 29401950,
TraptrixTrapHoleNightmare = 29616929,
StarlightRoad = 58120309,
ScarlightRedDragonArchfiend = 80666118,
IgnisterProminenceTheBlastingDracoslayer = 18239909,
StardustDragon = 44508094,
NumberS39UtopiatheLightning = 56832966,
Number37HopeWovenDragonSpiderShark = 37279508,
Number39Utopia = 84013237,
EvolzarLaggia = 74294676,
Number59CrookedCook = 82697249,
CastelTheSkyblasterMusketeer = 82633039,
StarliegePaladynamo = 61344030,
LightningChidori = 22653490,
EvilswarmExcitonKnight = 46772449,
GagagaCowboy = 12014404,
EvilswarmNightmare = 359563,
TraptrixRafflesia = 6511113
public class CardId
{
public static int MysteryShellDragon = 18108166;
public static int PhantomGryphon = 74852097;
public static int MasterPendulumTheDracoslayer = 75195825;
public static int AngelTrumpeter = 87979586;
public static int MetalfoesGoldriver = 33256280;
public static int Kabazauls = 51934376;
public static int RescueRabbit = 85138716;
public static int UnexpectedDai = 911883;
public static int HarpiesFeatherDuster = 18144506;
public static int PotOfDesires = 35261759;
public static int MonsterReborn = 83764718;
public static int SmashingGround = 97169186;
public static int QuakingMirrorForce = 40838625;
public static int DrowningMirrorForce = 47475363;
public static int BlazingMirrorForce = 75249652;
public static int StormingMirrorForce = 5650082;
public static int MirrorForce = 44095762;
public static int DarkMirrorForce = 20522190;
public static int BottomlessTrapHole = 29401950;
public static int TraptrixTrapHoleNightmare = 29616929;
public static int StarlightRoad = 58120309;
public static int ScarlightRedDragonArchfiend = 80666118;
public static int IgnisterProminenceTheBlastingDracoslayer = 18239909;
public static int StardustDragon = 44508094;
public static int NumberS39UtopiatheLightning = 56832966;
public static int Number37HopeWovenDragonSpiderShark = 37279508;
public static int Number39Utopia = 84013237;
public static int EvolzarLaggia = 74294676;
public static int Number59CrookedCook = 82697249;
public static int CastelTheSkyblasterMusketeer = 82633039;
public static int StarliegePaladynamo = 61344030;
public static int LightningChidori = 22653490;
public static int EvilswarmExcitonKnight = 46772449;
public static int GagagaCowboy = 12014404;
public static int EvilswarmNightmare = 359563;
public static int TraptrixRafflesia = 6511113;
}
private bool NormalSummoned = false;
......@@ -57,83 +57,83 @@ namespace WindBot.Game.AI.Decks
public RainbowExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, (int)CardId.UnexpectedDai, UnexpectedDaiEffect);
AddExecutor(ExecutorType.Activate, CardId.UnexpectedDai, UnexpectedDaiEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.RescueRabbit);
AddExecutor(ExecutorType.Activate, (int)CardId.RescueRabbit, RescueRabbitEffect);
AddExecutor(ExecutorType.Summon, CardId.RescueRabbit);
AddExecutor(ExecutorType.Activate, CardId.RescueRabbit, RescueRabbitEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.PotOfDesires, DefaultPotOfDesires);
AddExecutor(ExecutorType.Activate, CardId.PotOfDesires, DefaultPotOfDesires);
AddExecutor(ExecutorType.Summon, (int)CardId.AngelTrumpeter, AngelTrumpeterSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.Kabazauls, KabazaulsSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.MasterPendulumTheDracoslayer, MasterPendulumTheDracoslayerSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.MysteryShellDragon, MysteryShellDragonSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.PhantomGryphon, PhantomGryphonSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.MetalfoesGoldriver, MetalfoesGoldriverSummon);
AddExecutor(ExecutorType.Summon, CardId.AngelTrumpeter, AngelTrumpeterSummon);
AddExecutor(ExecutorType.Summon, CardId.Kabazauls, KabazaulsSummon);
AddExecutor(ExecutorType.Summon, CardId.MasterPendulumTheDracoslayer, MasterPendulumTheDracoslayerSummon);
AddExecutor(ExecutorType.Summon, CardId.MysteryShellDragon, MysteryShellDragonSummon);
AddExecutor(ExecutorType.Summon, CardId.PhantomGryphon, PhantomGryphonSummon);
AddExecutor(ExecutorType.Summon, CardId.MetalfoesGoldriver, MetalfoesGoldriverSummon);
AddExecutor(ExecutorType.Summon, NormalSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GagagaCowboy, GagagaCowboySummon);
AddExecutor(ExecutorType.Activate, (int)CardId.GagagaCowboy);
AddExecutor(ExecutorType.SpSummon, (int)CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.EvolzarLaggia, EvolzarLaggiaSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.EvolzarLaggia, EvolzarLaggiaEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.EvilswarmNightmare, EvilswarmNightmareSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.EvilswarmNightmare);
AddExecutor(ExecutorType.SpSummon, (int)CardId.StarliegePaladynamo, StarliegePaladynamoSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.StarliegePaladynamo, StarliegePaladynamoEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.LightningChidori, LightningChidoriSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.LightningChidori, LightningChidoriEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Number37HopeWovenDragonSpiderShark, Number37HopeWovenDragonSpiderSharkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.Number37HopeWovenDragonSpiderShark);
AddExecutor(ExecutorType.SpSummon, (int)CardId.TraptrixRafflesia, TraptrixRafflesiaSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.TraptrixRafflesia);
AddExecutor(ExecutorType.Activate, (int)CardId.SmashingGround, DefaultSmashingGround);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CastelTheSkyblasterMusketeer, DefaultCastelTheSkyblasterMusketeerSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.CastelTheSkyblasterMusketeer, DefaultCastelTheSkyblasterMusketeerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ScarlightRedDragonArchfiend, DefaultScarlightRedDragonArchfiendSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.ScarlightRedDragonArchfiend, DefaultScarlightRedDragonArchfiendEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Number39Utopia, DefaultNumberS39UtopiaTheLightningSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.SpSummon, (int)CardId.StardustDragon, DefaultStardustDragonSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.StardustDragon, DefaultStardustDragonEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Number59CrookedCook, Number59CrookedCookSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.Number59CrookedCook, Number59CrookedCookEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.StarlightRoad, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.QuakingMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DrowningMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.BlazingMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.StormingMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DarkMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.BottomlessTrapHole, TrapSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TraptrixTrapHoleNightmare, TrapSet);
AddExecutor(ExecutorType.Activate, (int)CardId.StarlightRoad, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.QuakingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.DrowningMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.BlazingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.StormingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.TraptrixTrapHoleNightmare, DefaultUniqueTrap);
AddExecutor(ExecutorType.SpSummon, CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerSummon);
AddExecutor(ExecutorType.Activate, CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerEffect);
AddExecutor(ExecutorType.SpSummon, CardId.GagagaCowboy, GagagaCowboySummon);
AddExecutor(ExecutorType.Activate, CardId.GagagaCowboy);
AddExecutor(ExecutorType.SpSummon, CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightSummon);
AddExecutor(ExecutorType.Activate, CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.SpSummon, CardId.EvolzarLaggia, EvolzarLaggiaSummon);
AddExecutor(ExecutorType.Activate, CardId.EvolzarLaggia, EvolzarLaggiaEffect);
AddExecutor(ExecutorType.SpSummon, CardId.EvilswarmNightmare, EvilswarmNightmareSummon);
AddExecutor(ExecutorType.Activate, CardId.EvilswarmNightmare);
AddExecutor(ExecutorType.SpSummon, CardId.StarliegePaladynamo, StarliegePaladynamoSummon);
AddExecutor(ExecutorType.Activate, CardId.StarliegePaladynamo, StarliegePaladynamoEffect);
AddExecutor(ExecutorType.SpSummon, CardId.LightningChidori, LightningChidoriSummon);
AddExecutor(ExecutorType.Activate, CardId.LightningChidori, LightningChidoriEffect);
AddExecutor(ExecutorType.SpSummon, CardId.Number37HopeWovenDragonSpiderShark, Number37HopeWovenDragonSpiderSharkSummon);
AddExecutor(ExecutorType.Activate, CardId.Number37HopeWovenDragonSpiderShark);
AddExecutor(ExecutorType.SpSummon, CardId.TraptrixRafflesia, TraptrixRafflesiaSummon);
AddExecutor(ExecutorType.Activate, CardId.TraptrixRafflesia);
AddExecutor(ExecutorType.Activate, CardId.SmashingGround, DefaultSmashingGround);
AddExecutor(ExecutorType.SpSummon, CardId.CastelTheSkyblasterMusketeer, DefaultCastelTheSkyblasterMusketeerSummon);
AddExecutor(ExecutorType.Activate, CardId.CastelTheSkyblasterMusketeer, DefaultCastelTheSkyblasterMusketeerEffect);
AddExecutor(ExecutorType.SpSummon, CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerSummon);
AddExecutor(ExecutorType.Activate, CardId.IgnisterProminenceTheBlastingDracoslayer, IgnisterProminenceTheBlastingDracoslayerEffect);
AddExecutor(ExecutorType.SpSummon, CardId.ScarlightRedDragonArchfiend, DefaultScarlightRedDragonArchfiendSummon);
AddExecutor(ExecutorType.Activate, CardId.ScarlightRedDragonArchfiend, DefaultScarlightRedDragonArchfiendEffect);
AddExecutor(ExecutorType.SpSummon, CardId.Number39Utopia, DefaultNumberS39UtopiaTheLightningSummon);
AddExecutor(ExecutorType.SpSummon, CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.SpSummon, CardId.StardustDragon, DefaultStardustDragonSummon);
AddExecutor(ExecutorType.Activate, CardId.StardustDragon, DefaultStardustDragonEffect);
AddExecutor(ExecutorType.SpSummon, CardId.Number59CrookedCook, Number59CrookedCookSummon);
AddExecutor(ExecutorType.Activate, CardId.Number59CrookedCook, Number59CrookedCookEffect);
AddExecutor(ExecutorType.SpellSet, CardId.StarlightRoad, TrapSet);
AddExecutor(ExecutorType.SpellSet, CardId.QuakingMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, CardId.DrowningMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, CardId.BlazingMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, CardId.StormingMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, CardId.MirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, CardId.DarkMirrorForce, TrapSet);
AddExecutor(ExecutorType.SpellSet, CardId.BottomlessTrapHole, TrapSet);
AddExecutor(ExecutorType.SpellSet, CardId.TraptrixTrapHoleNightmare, TrapSet);
AddExecutor(ExecutorType.Activate, CardId.StarlightRoad, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.QuakingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.DrowningMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.BlazingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.StormingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.DarkMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.TraptrixTrapHoleNightmare, DefaultUniqueTrap);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
......@@ -155,11 +155,11 @@ namespace WindBot.Game.AI.Decks
if (defender.IsMonsterDangerous() || defender.IsDefense())
return false;
}
if (!(defender.Id == (int)CardId.NumberS39UtopiatheLightning))
if (!(defender.Id == CardId.NumberS39UtopiatheLightning))
{
if (attacker.Id == (int)CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, (int)CardId.Number39Utopia))
if (attacker.Id == CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, CardId.Number39Utopia))
attacker.RealPower = 5000;
if (Bot.HasInMonstersZone((int)CardId.Number37HopeWovenDragonSpiderShark, true, true))
if (Bot.HasInMonstersZone(CardId.Number37HopeWovenDragonSpiderShark, true, true))
attacker.RealPower = attacker.RealPower + 1000;
}
return attacker.RealPower > defender.GetDefensePower();
......@@ -167,34 +167,34 @@ namespace WindBot.Game.AI.Decks
private bool UnexpectedDaiEffect()
{
if (Bot.HasInHand((int)CardId.RescueRabbit) || NormalSummoned)
if (Bot.HasInHand(CardId.RescueRabbit) || NormalSummoned)
AI.SelectCard(new[]
{
(int)CardId.MysteryShellDragon,
(int)CardId.PhantomGryphon
CardId.MysteryShellDragon,
CardId.PhantomGryphon
});
else if (AI.Utils.IsTurn1OrMain2())
{
if (Bot.HasInHand((int)CardId.MysteryShellDragon))
AI.SelectCard((int)CardId.MysteryShellDragon);
else if (Bot.HasInHand((int)CardId.Kabazauls))
AI.SelectCard((int)CardId.Kabazauls);
else if (Bot.HasInHand((int)CardId.AngelTrumpeter))
AI.SelectCard((int)CardId.AngelTrumpeter);
if (Bot.HasInHand(CardId.MysteryShellDragon))
AI.SelectCard(CardId.MysteryShellDragon);
else if (Bot.HasInHand(CardId.Kabazauls))
AI.SelectCard(CardId.Kabazauls);
else if (Bot.HasInHand(CardId.AngelTrumpeter))
AI.SelectCard(CardId.AngelTrumpeter);
}
else
{
if (Bot.HasInHand((int)CardId.Kabazauls))
AI.SelectCard((int)CardId.Kabazauls);
else if (Bot.HasInHand((int)CardId.MasterPendulumTheDracoslayer))
AI.SelectCard((int)CardId.MasterPendulumTheDracoslayer);
else if (Bot.HasInHand((int)CardId.PhantomGryphon))
AI.SelectCard((int)CardId.PhantomGryphon);
else if (Bot.HasInHand((int)CardId.AngelTrumpeter))
if (Bot.HasInHand(CardId.Kabazauls))
AI.SelectCard(CardId.Kabazauls);
else if (Bot.HasInHand(CardId.MasterPendulumTheDracoslayer))
AI.SelectCard(CardId.MasterPendulumTheDracoslayer);
else if (Bot.HasInHand(CardId.PhantomGryphon))
AI.SelectCard(CardId.PhantomGryphon);
else if (Bot.HasInHand(CardId.AngelTrumpeter))
AI.SelectCard(new[]
{
(int)CardId.MetalfoesGoldriver,
(int)CardId.MasterPendulumTheDracoslayer
CardId.MetalfoesGoldriver,
CardId.MasterPendulumTheDracoslayer
});
}
return true;
......@@ -205,44 +205,44 @@ namespace WindBot.Game.AI.Decks
if (AI.Utils.IsTurn1OrMain2())
AI.SelectCard(new[]
{
(int)CardId.Kabazauls,
(int)CardId.MysteryShellDragon
CardId.Kabazauls,
CardId.MysteryShellDragon
});
else
AI.SelectCard(new[]
{
(int)CardId.MasterPendulumTheDracoslayer,
(int)CardId.PhantomGryphon,
(int)CardId.Kabazauls,
(int)CardId.MetalfoesGoldriver,
(int)CardId.AngelTrumpeter
CardId.MasterPendulumTheDracoslayer,
CardId.PhantomGryphon,
CardId.Kabazauls,
CardId.MetalfoesGoldriver,
CardId.AngelTrumpeter
});
return true;
}
private bool MysteryShellDragonSummon()
{
return Bot.HasInMonstersZone((int)CardId.MysteryShellDragon);
return Bot.HasInMonstersZone(CardId.MysteryShellDragon);
}
private bool PhantomGryphonSummon()
{
return Bot.HasInMonstersZone((int)CardId.PhantomGryphon);
return Bot.HasInMonstersZone(CardId.PhantomGryphon);
}
private bool MasterPendulumTheDracoslayerSummon()
{
return Bot.HasInMonstersZone((int)CardId.MasterPendulumTheDracoslayer);
return Bot.HasInMonstersZone(CardId.MasterPendulumTheDracoslayer);
}
private bool AngelTrumpeterSummon()
{
return Bot.HasInMonstersZone((int)CardId.AngelTrumpeter);
return Bot.HasInMonstersZone(CardId.AngelTrumpeter);
}
private bool MetalfoesGoldriverSummon()
{
return Bot.HasInMonstersZone((int)CardId.MetalfoesGoldriver);
return Bot.HasInMonstersZone(CardId.MetalfoesGoldriver);
}
private bool KabazaulsSummon()
{
return Bot.HasInMonstersZone((int)CardId.Kabazauls);
return Bot.HasInMonstersZone(CardId.Kabazauls);
}
private bool NormalSummon()
{
......@@ -266,7 +266,7 @@ namespace WindBot.Game.AI.Decks
private bool IgnisterProminenceTheBlastingDracoslayerEffect()
{
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.IgnisterProminenceTheBlastingDracoslayer, 1))
if (ActivateDescription == AI.Utils.GetStringId(CardId.IgnisterProminenceTheBlastingDracoslayer, 1))
return true;
ClientCard target1 = null;
ClientCard target2 = AI.Utils.GetProblematicEnemyCard();
......@@ -365,7 +365,7 @@ namespace WindBot.Game.AI.Decks
private bool TraptrixRafflesiaSummon()
{
if (AI.Utils.IsTurn1OrMain2() && (Bot.GetRemainingCount((int)CardId.BottomlessTrapHole, 1) + Bot.GetRemainingCount((int)CardId.TraptrixTrapHoleNightmare, 1)) > 0)
if (AI.Utils.IsTurn1OrMain2() && (Bot.GetRemainingCount(CardId.BottomlessTrapHole, 1) + Bot.GetRemainingCount(CardId.TraptrixTrapHoleNightmare, 1)) > 0)
{
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
......@@ -417,7 +417,7 @@ namespace WindBot.Game.AI.Decks
private bool TrapSet()
{
return !Bot.HasInMonstersZone((int)CardId.Number59CrookedCook, true, true);
return !Bot.HasInMonstersZone(CardId.Number59CrookedCook, true, true);
}
}
}
......@@ -9,34 +9,34 @@ namespace WindBot.Game.AI.Decks
[Deck("Rank V", "AI_Rank5")]
public class Rank5Executor : DefaultExecutor
{
public enum CardId
{
MistArchfiend = 28601770,
CyberDragon = 70095154,
ZWEagleClaw = 29353756,
SolarWindJammer = 33911264,
QuickdrawSynchron = 20932152,
WindUpSoldier = 12299841,
StarDrawing = 24610207,
ChronomalyGoldenJet = 88552992,
InstantFusion = 1845204,
DoubleSummon = 43422537,
MysticalSpaceTyphoon = 5318639,
BookOfMoon = 14087893,
XyzUnit = 13032689,
XyzReborn = 26708437,
MirrorForce = 44095762,
TorrentialTribute = 53582587,
XyzVeil = 96457619,
PanzerDragon = 72959823,
GaiaDragonTheThunderCharger = 91949988,
CyberDragonInfinity = 10443957,
TirasKeeperOfGenesis = 31386180,
Number61Volcasaurus = 29669359,
SharkFortress = 50449881,
CyberDragonNova = 58069384
public class CardId
{
public static int MistArchfiend = 28601770;
public static int CyberDragon = 70095154;
public static int ZWEagleClaw = 29353756;
public static int SolarWindJammer = 33911264;
public static int QuickdrawSynchron = 20932152;
public static int WindUpSoldier = 12299841;
public static int StarDrawing = 24610207;
public static int ChronomalyGoldenJet = 88552992;
public static int InstantFusion = 1845204;
public static int DoubleSummon = 43422537;
public static int MysticalSpaceTyphoon = 5318639;
public static int BookOfMoon = 14087893;
public static int XyzUnit = 13032689;
public static int XyzReborn = 26708437;
public static int MirrorForce = 44095762;
public static int TorrentialTribute = 53582587;
public static int XyzVeil = 96457619;
public static int PanzerDragon = 72959823;
public static int GaiaDragonTheThunderCharger = 91949988;
public static int CyberDragonInfinity = 10443957;
public static int TirasKeeperOfGenesis = 31386180;
public static int Number61Volcasaurus = 29669359;
public static int SharkFortress = 50449881;
public static int CyberDragonNova = 58069384;
}
private bool NormalSummoned = false;
......@@ -49,49 +49,49 @@ namespace WindBot.Game.AI.Decks
: base(ai, duel)
{
// Quick spells
AddExecutor(ExecutorType.Activate, (int)CardId.BookOfMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.BookOfMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
// Cyber Dragon Infinity first
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberDragonNova, CyberDragonNovaSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberDragonNova, CyberDragonNovaEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberDragonInfinity, CyberDragonInfinitySummon);
AddExecutor(ExecutorType.Activate, (int)CardId.CyberDragonInfinity, CyberDragonInfinityEffect);
AddExecutor(ExecutorType.SpSummon, CardId.CyberDragonNova, CyberDragonNovaSummon);
AddExecutor(ExecutorType.Activate, CardId.CyberDragonNova, CyberDragonNovaEffect);
AddExecutor(ExecutorType.SpSummon, CardId.CyberDragonInfinity, CyberDragonInfinitySummon);
AddExecutor(ExecutorType.Activate, CardId.CyberDragonInfinity, CyberDragonInfinityEffect);
// Level 5 monsters without side effects
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.SolarWindJammer, SolarWindJammerSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ZWEagleClaw);
AddExecutor(ExecutorType.Summon, (int)CardId.ChronomalyGoldenJet, NormalSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.ChronomalyGoldenJet, ChronomalyGoldenJetEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.StarDrawing, NormalSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.WindUpSoldier, NormalSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.WindUpSoldier, WindUpSoldierEffect);
AddExecutor(ExecutorType.SpSummon, CardId.CyberDragon);
AddExecutor(ExecutorType.SpSummon, CardId.SolarWindJammer, SolarWindJammerSummon);
AddExecutor(ExecutorType.SpSummon, CardId.ZWEagleClaw);
AddExecutor(ExecutorType.Summon, CardId.ChronomalyGoldenJet, NormalSummon);
AddExecutor(ExecutorType.Activate, CardId.ChronomalyGoldenJet, ChronomalyGoldenJetEffect);
AddExecutor(ExecutorType.Summon, CardId.StarDrawing, NormalSummon);
AddExecutor(ExecutorType.Summon, CardId.WindUpSoldier, NormalSummon);
AddExecutor(ExecutorType.Activate, CardId.WindUpSoldier, WindUpSoldierEffect);
// XYZ Monsters: Summon
AddExecutor(ExecutorType.SpSummon, (int)CardId.Number61Volcasaurus, Number61VolcasaurusSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.Number61Volcasaurus, Number61VolcasaurusEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.TirasKeeperOfGenesis);
AddExecutor(ExecutorType.Activate, (int)CardId.TirasKeeperOfGenesis, TirasKeeperOfGenesisEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.SharkFortress);
AddExecutor(ExecutorType.Activate, (int)CardId.SharkFortress);
AddExecutor(ExecutorType.SpSummon, CardId.Number61Volcasaurus, Number61VolcasaurusSummon);
AddExecutor(ExecutorType.Activate, CardId.Number61Volcasaurus, Number61VolcasaurusEffect);
AddExecutor(ExecutorType.SpSummon, CardId.TirasKeeperOfGenesis);
AddExecutor(ExecutorType.Activate, CardId.TirasKeeperOfGenesis, TirasKeeperOfGenesisEffect);
AddExecutor(ExecutorType.SpSummon, CardId.SharkFortress);
AddExecutor(ExecutorType.Activate, CardId.SharkFortress);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GaiaDragonTheThunderCharger, GaiaDragonTheThunderChargerSummon);
AddExecutor(ExecutorType.SpSummon, CardId.GaiaDragonTheThunderCharger, GaiaDragonTheThunderChargerSummon);
// Level 5 monsters with side effects
AddExecutor(ExecutorType.SpSummon, (int)CardId.QuickdrawSynchron, QuickdrawSynchronSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.MistArchfiend, MistArchfiendSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.InstantFusion, InstantFusionEffect);
AddExecutor(ExecutorType.SpSummon, CardId.QuickdrawSynchron, QuickdrawSynchronSummon);
AddExecutor(ExecutorType.Summon, CardId.MistArchfiend, MistArchfiendSummon);
AddExecutor(ExecutorType.Activate, CardId.InstantFusion, InstantFusionEffect);
// Useful spells
AddExecutor(ExecutorType.Activate, (int)CardId.DoubleSummon, DoubleSummonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.XyzUnit, XyzUnitEffect);
AddExecutor(ExecutorType.Activate, CardId.DoubleSummon, DoubleSummonEffect);
AddExecutor(ExecutorType.Activate, CardId.XyzUnit, XyzUnitEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.XyzReborn, XyzRebornEffect);
AddExecutor(ExecutorType.Activate, CardId.XyzReborn, XyzRebornEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.PanzerDragon, PanzerDragonEffect);
AddExecutor(ExecutorType.Activate, CardId.PanzerDragon, PanzerDragonEffect);
// Reposition
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
......@@ -99,9 +99,9 @@ namespace WindBot.Game.AI.Decks
// Set and activate traps
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.XyzVeil, XyzVeilEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.XyzVeil, XyzVeilEffect);
AddExecutor(ExecutorType.Activate, CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultTrap);
}
public override bool OnSelectHand()
......@@ -136,14 +136,14 @@ namespace WindBot.Game.AI.Decks
return false;
AI.SelectCard(new[]
{
(int)CardId.QuickdrawSynchron,
(int)CardId.ZWEagleClaw,
(int)CardId.SolarWindJammer,
(int)CardId.CyberDragon,
(int)CardId.MistArchfiend,
(int)CardId.WindUpSoldier,
(int)CardId.StarDrawing,
(int)CardId.ChronomalyGoldenJet
CardId.QuickdrawSynchron,
CardId.ZWEagleClaw,
CardId.SolarWindJammer,
CardId.CyberDragon,
CardId.MistArchfiend,
CardId.WindUpSoldier,
CardId.StarDrawing,
CardId.ChronomalyGoldenJet
});
return true;
}
......@@ -173,13 +173,13 @@ namespace WindBot.Game.AI.Decks
IList<ClientCard> hand = Bot.Hand;
foreach (ClientCard card in hand)
{
if (card.Id == (int)CardId.InstantFusion && !InstantFusionUsed)
if (card.Id == CardId.InstantFusion && !InstantFusionUsed)
++lv5Count;
if (card.Id == (int)CardId.QuickdrawSynchron && Bot.Hand.ContainsMonsterWithLevel(4))
if (card.Id == CardId.QuickdrawSynchron && Bot.Hand.ContainsMonsterWithLevel(4))
++lv5Count;
if (card.Id == (int)CardId.MistArchfiend && !NormalSummoned)
if (card.Id == CardId.MistArchfiend && !NormalSummoned)
++lv5Count;
if (card.Id == (int)CardId.DoubleSummon && DoubleSummonEffect())
if (card.Id == CardId.DoubleSummon && DoubleSummonEffect())
++lv5Count;
}
if (lv5Count >= 2)
......@@ -204,10 +204,10 @@ namespace WindBot.Game.AI.Decks
IList<ClientCard> hand = Bot.Hand;
foreach (ClientCard card in hand)
{
if (card.Id == (int)CardId.MistArchfiend ||
card.Id == (int)CardId.WindUpSoldier ||
card.Id == (int)CardId.StarDrawing ||
card.Id == (int)CardId.ChronomalyGoldenJet)
if (card.Id == CardId.MistArchfiend ||
card.Id == CardId.WindUpSoldier ||
card.Id == CardId.StarDrawing ||
card.Id == CardId.ChronomalyGoldenJet)
{
NormalSummoned = false;
DoubleSummonUsed = true;
......@@ -224,7 +224,7 @@ namespace WindBot.Game.AI.Decks
private bool CyberDragonNovaEffect()
{
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.CyberDragonNova, 0))
if (ActivateDescription == AI.Utils.GetStringId(CardId.CyberDragonNova, 0))
{
return true;
}
......@@ -279,7 +279,7 @@ namespace WindBot.Game.AI.Decks
ClientCard target = AI.Utils.GetProblematicEnemyMonster(2000);
if (target != null)
{
AI.SelectCard((int)CardId.CyberDragon);
AI.SelectCard(CardId.CyberDragon);
AI.SelectNextCard(target);
Number61VolcasaurusUsed = true;
return true;
......@@ -299,9 +299,9 @@ namespace WindBot.Game.AI.Decks
private bool GaiaDragonTheThunderChargerSummon()
{
if (Number61VolcasaurusUsed && Bot.HasInMonstersZone((int)CardId.Number61Volcasaurus))
if (Number61VolcasaurusUsed && Bot.HasInMonstersZone(CardId.Number61Volcasaurus))
{
AI.SelectCard((int)CardId.Number61Volcasaurus);
AI.SelectCard(CardId.Number61Volcasaurus);
return true;
}
List<ClientCard> monsters = Bot.GetMonsters();
......@@ -327,11 +327,11 @@ namespace WindBot.Game.AI.Decks
}
AI.SelectCard(new[]
{
(int)CardId.CyberDragonInfinity,
(int)CardId.CyberDragonNova,
(int)CardId.TirasKeeperOfGenesis,
(int)CardId.SharkFortress,
(int)CardId.Number61Volcasaurus
CardId.CyberDragonInfinity,
CardId.CyberDragonNova,
CardId.TirasKeeperOfGenesis,
CardId.SharkFortress,
CardId.Number61Volcasaurus
});
return true;
}
......@@ -358,7 +358,7 @@ namespace WindBot.Game.AI.Decks
List<ClientCard> spells = Bot.GetSpells();
foreach (ClientCard spell in spells)
{
if (spell.Id == (int)CardId.XyzVeil && !spell.IsFacedown())
if (spell.Id == CardId.XyzVeil && !spell.IsFacedown())
return false;
}
List<ClientCard> monsters = Bot.GetMonsters();
......@@ -378,8 +378,8 @@ namespace WindBot.Game.AI.Decks
if (monster.HasType(CardType.Monster) &&
!monster.HasType(CardType.Xyz) &&
(monster.Level == 5
|| monster.Id == (int)CardId.StarDrawing
|| (monster.Id == (int)CardId.WindUpSoldier) && !monster.Equals(Card)))
|| monster.Id == CardId.StarDrawing
|| (monster.Id == CardId.WindUpSoldier) && !monster.Equals(Card)))
return true;
}
return false;
......
......@@ -9,46 +9,46 @@ namespace WindBot.Game.AI.Decks
[Deck("ST1732", "AI_ST1732", "Normal")]
public class ST1732Executor : DefaultExecutor
{
public enum CardId
{
Digitron = 32295838,
Bitron = 36211150,
DualAssembloom = 7445307,
BootStagguard = 70950698,
Linkslayer = 35595518,
RAMClouder = 9190563,
ROMCloudia = 44956694,
BalancerLord = 8567955,
Backlinker = 71172240,
Kleinant = 45778242,
Draconnet = 62706865,
DotScaper = 18789533,
MindControl = 37520316,
DarkHole = 53129443,
MonsterReborn = 83764718,
MysticalSpaceTyphoon = 5318639,
CosmicCyclone = 8267140,
BookOfMoon = 14087893,
CynetBackdoor = 43839002,
MoonMirrorShield = 19508728,
CynetUniverse = 61583217,
BottomlessTrapHole = 29401950,
MirrorForce = 44095762,
TorrentialTribute = 53582587,
RecodedAlive = 70238111,
DimensionalBarrier = 83326048,
CompulsoryEvacuationDevice = 94192409,
SolemnStrike = 40605147,
DecodeTalker = 1861629,
EncodeTalker = 6622715,
TriGateWizard = 32617464,
Honeybot = 34472920,
BinarySorceress = 79016563,
LinkSpider = 98978921,
StagToken = 70950699
public class CardId
{
public static int Digitron = 32295838;
public static int Bitron = 36211150;
public static int DualAssembloom = 7445307;
public static int BootStagguard = 70950698;
public static int Linkslayer = 35595518;
public static int RAMClouder = 9190563;
public static int ROMCloudia = 44956694;
public static int BalancerLord = 8567955;
public static int Backlinker = 71172240;
public static int Kleinant = 45778242;
public static int Draconnet = 62706865;
public static int DotScaper = 18789533;
public static int MindControl = 37520316;
public static int DarkHole = 53129443;
public static int MonsterReborn = 83764718;
public static int MysticalSpaceTyphoon = 5318639;
public static int CosmicCyclone = 8267140;
public static int BookOfMoon = 14087893;
public static int CynetBackdoor = 43839002;
public static int MoonMirrorShield = 19508728;
public static int CynetUniverse = 61583217;
public static int BottomlessTrapHole = 29401950;
public static int MirrorForce = 44095762;
public static int TorrentialTribute = 53582587;
public static int RecodedAlive = 70238111;
public static int DimensionalBarrier = 83326048;
public static int CompulsoryEvacuationDevice = 94192409;
public static int SolemnStrike = 40605147;
public static int DecodeTalker = 1861629;
public static int EncodeTalker = 6622715;
public static int TriGateWizard = 32617464;
public static int Honeybot = 34472920;
public static int BinarySorceress = 79016563;
public static int LinkSpider = 98978921;
public static int StagToken = 70950699;
}
bool BalancerLordUsed = false;
......@@ -56,89 +56,89 @@ namespace WindBot.Game.AI.Decks
public ST1732Executor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.BookOfMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.BookOfMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, (int)CardId.CynetUniverse, CynetUniverseEffect);
AddExecutor(ExecutorType.Activate, CardId.CynetUniverse, CynetUniverseEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Linkslayer);
AddExecutor(ExecutorType.Activate, (int)CardId.Linkslayer, LinkslayerEffect);
AddExecutor(ExecutorType.SpSummon, CardId.Linkslayer);
AddExecutor(ExecutorType.Activate, CardId.Linkslayer, LinkslayerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.LinkSpider);
AddExecutor(ExecutorType.Activate, (int)CardId.LinkSpider);
AddExecutor(ExecutorType.SpSummon, CardId.LinkSpider);
AddExecutor(ExecutorType.Activate, CardId.LinkSpider);
AddExecutor(ExecutorType.Activate, (int)CardId.MindControl, MindControlEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Backlinker);
AddExecutor(ExecutorType.Activate, (int)CardId.Backlinker, BacklinkerEffect);
AddExecutor(ExecutorType.Activate, CardId.MindControl, MindControlEffect);
AddExecutor(ExecutorType.SpSummon, CardId.Backlinker);
AddExecutor(ExecutorType.Activate, CardId.Backlinker, BacklinkerEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.BootStagguard, BootStagguardEffect);
AddExecutor(ExecutorType.Activate, CardId.BootStagguard, BootStagguardEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.MonsterReborn, MonsterRebornEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.MoonMirrorShield, MoonMirrorShieldEffect);
AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterRebornEffect);
AddExecutor(ExecutorType.Activate, CardId.MoonMirrorShield, MoonMirrorShieldEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.CynetBackdoor, CynetBackdoorEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.RecodedAlive);
AddExecutor(ExecutorType.Activate, CardId.CynetBackdoor, CynetBackdoorEffect);
AddExecutor(ExecutorType.Activate, CardId.RecodedAlive);
AddExecutor(ExecutorType.Summon, (int)CardId.BalancerLord, BalancerLordSummon);
AddExecutor(ExecutorType.Summon, CardId.BalancerLord, BalancerLordSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.ROMCloudia, ROMCloudiaSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.ROMCloudia, ROMCloudiaEffect);
AddExecutor(ExecutorType.Summon, CardId.ROMCloudia, ROMCloudiaSummon);
AddExecutor(ExecutorType.Activate, CardId.ROMCloudia, ROMCloudiaEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.Draconnet, DraconnetSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.Draconnet, DraconnetEffect);
AddExecutor(ExecutorType.Summon, CardId.Draconnet, DraconnetSummon);
AddExecutor(ExecutorType.Activate, CardId.Draconnet, DraconnetEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.Kleinant);
AddExecutor(ExecutorType.Activate, (int)CardId.Kleinant, KleinantEffect);
AddExecutor(ExecutorType.Summon, CardId.Kleinant);
AddExecutor(ExecutorType.Activate, CardId.Kleinant, KleinantEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.RAMClouder);
AddExecutor(ExecutorType.Activate, (int)CardId.RAMClouder, RAMClouderEffect);
AddExecutor(ExecutorType.Summon, CardId.RAMClouder);
AddExecutor(ExecutorType.Activate, CardId.RAMClouder, RAMClouderEffect);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.DotScaper);
AddExecutor(ExecutorType.Activate, (int)CardId.DotScaper, DotScaperEffect);
AddExecutor(ExecutorType.SummonOrSet, CardId.DotScaper);
AddExecutor(ExecutorType.Activate, CardId.DotScaper, DotScaperEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.BalancerLord);
AddExecutor(ExecutorType.Summon, (int)CardId.ROMCloudia);
AddExecutor(ExecutorType.Summon, (int)CardId.Draconnet);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.Backlinker);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.Digitron);
AddExecutor(ExecutorType.SummonOrSet, (int)CardId.Bitron);
AddExecutor(ExecutorType.Summon, CardId.BalancerLord);
AddExecutor(ExecutorType.Summon, CardId.ROMCloudia);
AddExecutor(ExecutorType.Summon, CardId.Draconnet);
AddExecutor(ExecutorType.SummonOrSet, CardId.Backlinker);
AddExecutor(ExecutorType.SummonOrSet, CardId.Digitron);
AddExecutor(ExecutorType.SummonOrSet, CardId.Bitron);
AddExecutor(ExecutorType.Activate, (int)CardId.BalancerLord, BalancerLordEffect);
AddExecutor(ExecutorType.Activate, CardId.BalancerLord, BalancerLordEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.DecodeTalker, LinkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.DecodeTalker);
AddExecutor(ExecutorType.SpSummon, CardId.DecodeTalker, LinkSummon);
AddExecutor(ExecutorType.Activate, CardId.DecodeTalker);
AddExecutor(ExecutorType.SpSummon, (int)CardId.TriGateWizard, LinkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.TriGateWizard);
AddExecutor(ExecutorType.SpSummon, CardId.TriGateWizard, LinkSummon);
AddExecutor(ExecutorType.Activate, CardId.TriGateWizard);
AddExecutor(ExecutorType.SpSummon, (int)CardId.EncodeTalker, LinkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.EncodeTalker);
AddExecutor(ExecutorType.SpSummon, CardId.EncodeTalker, LinkSummon);
AddExecutor(ExecutorType.Activate, CardId.EncodeTalker);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Honeybot, LinkSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.BinarySorceress, LinkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.BinarySorceress);
AddExecutor(ExecutorType.SpSummon, CardId.Honeybot, LinkSummon);
AddExecutor(ExecutorType.SpSummon, CardId.BinarySorceress, LinkSummon);
AddExecutor(ExecutorType.Activate, CardId.BinarySorceress);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CynetBackdoor, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.RecodedAlive, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.CynetBackdoor, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.RecodedAlive, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CompulsoryEvacuationDevice, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DimensionalBarrier, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.TorrentialTribute, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MirrorForce, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.BottomlessTrapHole, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.BookOfMoon, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CosmicCyclone, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MysticalSpaceTyphoon, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnStrike, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.CompulsoryEvacuationDevice, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.DimensionalBarrier, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.TorrentialTribute, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.MirrorForce, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.BottomlessTrapHole, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.BookOfMoon, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.CosmicCyclone, DefaultSpellSet);
AddExecutor(ExecutorType.SpellSet, CardId.MysticalSpaceTyphoon, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, (int)CardId.CompulsoryEvacuationDevice, DefaultCompulsoryEvacuationDevice);
AddExecutor(ExecutorType.Activate, (int)CardId.DimensionalBarrier, DefaultDimensionalBarrier);
AddExecutor(ExecutorType.Activate, (int)CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, (int)CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, CardId.CompulsoryEvacuationDevice, DefaultCompulsoryEvacuationDevice);
AddExecutor(ExecutorType.Activate, CardId.DimensionalBarrier, DefaultDimensionalBarrier);
AddExecutor(ExecutorType.Activate, CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, CardId.MirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.BottomlessTrapHole, DefaultUniqueTrap);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
......@@ -176,10 +176,10 @@ namespace WindBot.Game.AI.Decks
if (targets.Count > 0)
{
AI.SelectCard(new[]{
(int)CardId.DualAssembloom,
(int)CardId.Bitron,
(int)CardId.Digitron,
(int)CardId.RecodedAlive
CardId.DualAssembloom,
CardId.Bitron,
CardId.Digitron,
CardId.RecodedAlive
});
AI.SelectNextCard(targets);
return true;
......@@ -213,19 +213,19 @@ namespace WindBot.Game.AI.Decks
private bool MonsterRebornEffect()
{
List<int> targets = new List<int> {
(int)CardId.DecodeTalker,
(int)CardId.EncodeTalker,
(int)CardId.TriGateWizard,
(int)CardId.BinarySorceress,
(int)CardId.Honeybot,
(int)CardId.DualAssembloom,
(int)CardId.BootStagguard,
(int)CardId.BalancerLord,
(int)CardId.ROMCloudia,
(int)CardId.Linkslayer,
(int)CardId.RAMClouder,
(int)CardId.Backlinker,
(int)CardId.Kleinant
CardId.DecodeTalker,
CardId.EncodeTalker,
CardId.TriGateWizard,
CardId.BinarySorceress,
CardId.Honeybot,
CardId.DualAssembloom,
CardId.BootStagguard,
CardId.BalancerLord,
CardId.ROMCloudia,
CardId.Linkslayer,
CardId.RAMClouder,
CardId.Backlinker,
CardId.Kleinant
};
if (!Bot.HasInGraveyard(targets))
{
......@@ -292,7 +292,7 @@ namespace WindBot.Game.AI.Decks
monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters)
{
if (monster.Id == (int)CardId.BalancerLord)
if (monster.Id == CardId.BalancerLord)
{
AI.SelectCard(monster);
selected = true;
......@@ -316,11 +316,11 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectNextCard(new[]
{
(int)CardId.ROMCloudia,
(int)CardId.BalancerLord,
(int)CardId.Kleinant,
(int)CardId.Draconnet,
(int)CardId.Backlinker
CardId.ROMCloudia,
CardId.BalancerLord,
CardId.Kleinant,
CardId.Draconnet,
CardId.Backlinker
});
return true;
}
......@@ -337,12 +337,12 @@ namespace WindBot.Game.AI.Decks
if (Card.Location == CardLocation.Removed)
return true;
bool hastarget = Bot.HasInHand(new List<int> {
(int)CardId.Draconnet,
(int)CardId.Kleinant,
(int)CardId.BalancerLord,
(int)CardId.ROMCloudia,
(int)CardId.RAMClouder,
(int)CardId.DotScaper
CardId.Draconnet,
CardId.Kleinant,
CardId.BalancerLord,
CardId.ROMCloudia,
CardId.RAMClouder,
CardId.DotScaper
});
if (hastarget && !BalancerLordUsed)
{
......@@ -355,12 +355,12 @@ namespace WindBot.Game.AI.Decks
private bool ROMCloudiaSummon()
{
return Bot.HasInGraveyard(new List<int> {
(int)CardId.BootStagguard,
(int)CardId.BalancerLord,
(int)CardId.Kleinant,
(int)CardId.Linkslayer,
(int)CardId.Draconnet,
(int)CardId.RAMClouder
CardId.BootStagguard,
CardId.BalancerLord,
CardId.Kleinant,
CardId.Linkslayer,
CardId.Draconnet,
CardId.RAMClouder
});
}
......@@ -369,22 +369,22 @@ namespace WindBot.Game.AI.Decks
if (Card.Location == CardLocation.MonsterZone)
{
AI.SelectCard(new[]{
(int)CardId.BootStagguard,
(int)CardId.BalancerLord,
(int)CardId.Kleinant,
(int)CardId.Linkslayer,
(int)CardId.Draconnet,
(int)CardId.RAMClouder
CardId.BootStagguard,
CardId.BalancerLord,
CardId.Kleinant,
CardId.Linkslayer,
CardId.Draconnet,
CardId.RAMClouder
});
return true;
}
else
{
AI.SelectCard(new[]{
(int)CardId.BalancerLord,
(int)CardId.Kleinant,
(int)CardId.RAMClouder,
(int)CardId.DotScaper
CardId.BalancerLord,
CardId.Kleinant,
CardId.RAMClouder,
CardId.DotScaper
});
return true;
}
......@@ -392,23 +392,23 @@ namespace WindBot.Game.AI.Decks
private bool DraconnetSummon()
{
return Bot.GetRemainingCount((int)CardId.Digitron, 1) > 0
|| Bot.GetRemainingCount((int)CardId.Bitron, 1) > 0;
return Bot.GetRemainingCount(CardId.Digitron, 1) > 0
|| Bot.GetRemainingCount(CardId.Bitron, 1) > 0;
}
private bool DraconnetEffect()
{
AI.SelectCard((int)CardId.Bitron);
AI.SelectCard(CardId.Bitron);
return true;
}
private bool KleinantEffect()
{
IList<int> targets = new[] {
(int)CardId.DualAssembloom,
(int)CardId.Bitron,
(int)CardId.Digitron,
(int)CardId.DotScaper
CardId.DualAssembloom,
CardId.Bitron,
CardId.Digitron,
CardId.DotScaper
};
foreach (ClientCard monster in Bot.Hand)
{
......@@ -419,10 +419,10 @@ namespace WindBot.Game.AI.Decks
}
}
IList<int> targets2 = new[] {
(int)CardId.StagToken,
(int)CardId.Bitron,
(int)CardId.Digitron,
(int)CardId.DotScaper
CardId.StagToken,
CardId.Bitron,
CardId.Digitron,
CardId.DotScaper
};
foreach (ClientCard monster in Bot.GetMonsters())
{
......@@ -438,26 +438,26 @@ namespace WindBot.Game.AI.Decks
private bool RAMClouderEffect()
{
AI.SelectCard(new[]{
(int)CardId.StagToken,
(int)CardId.Bitron,
(int)CardId.Digitron,
(int)CardId.DotScaper,
(int)CardId.Draconnet,
(int)CardId.Backlinker,
(int)CardId.RAMClouder
CardId.StagToken,
CardId.Bitron,
CardId.Digitron,
CardId.DotScaper,
CardId.Draconnet,
CardId.Backlinker,
CardId.RAMClouder
});
AI.SelectNextCard(new[]{
(int)CardId.DecodeTalker,
(int)CardId.EncodeTalker,
(int)CardId.TriGateWizard,
(int)CardId.BinarySorceress,
(int)CardId.Honeybot,
(int)CardId.DualAssembloom,
(int)CardId.BootStagguard,
(int)CardId.BalancerLord,
(int)CardId.ROMCloudia,
(int)CardId.Linkslayer,
(int)CardId.RAMClouder
CardId.DecodeTalker,
CardId.EncodeTalker,
CardId.TriGateWizard,
CardId.BinarySorceress,
CardId.Honeybot,
CardId.DualAssembloom,
CardId.BootStagguard,
CardId.BalancerLord,
CardId.ROMCloudia,
CardId.Linkslayer,
CardId.RAMClouder
});
return true;
}
......
......@@ -9,101 +9,101 @@ namespace WindBot.Game.AI.Decks
[Deck("Toadally Awesome", "AI_ToadallyAwesome", "OutDated")]
public class ToadallyAwesomeExecutor : DefaultExecutor
{
public enum CardId
{
CryomancerOfTheIceBarrier = 23950192,
DewdarkOfTheIceBarrier = 90311614,
SwapFrog = 9126351,
PriorOfTheIceBarrier = 50088247,
Ronintoadin = 1357146,
DupeFrog = 46239604,
GraydleSlimeJr = 80250319,
GalaxyCyclone = 5133471,
HarpiesFeatherDuster = 18144506,
Surface = 33057951,
DarkHole = 53129443,
CardDestruction = 72892473,
FoolishBurial = 81439173,
MonsterReborn = 83764718,
MedallionOfTheIceBarrier = 84206435,
Salvage = 96947648,
AquariumStage = 29047353,
HeraldOfTheArcLight = 79606837,
ToadallyAwesome = 90809975,
SkyCavalryCentaurea = 36776089,
DaigustoPhoenix = 2766877,
CatShark = 84224627,
MysticalSpaceTyphoon = 5318639,
BookOfMoon = 14087893,
CallOfTheHaunted = 97077563,
TorrentialTribute = 53582587,
NumberS39UtopiatheLightning = 56832966
public class CardId
{
public static int CryomancerOfTheIceBarrier = 23950192;
public static int DewdarkOfTheIceBarrier = 90311614;
public static int SwapFrog = 9126351;
public static int PriorOfTheIceBarrier = 50088247;
public static int Ronintoadin = 1357146;
public static int DupeFrog = 46239604;
public static int GraydleSlimeJr = 80250319;
public static int GalaxyCyclone = 5133471;
public static int HarpiesFeatherDuster = 18144506;
public static int Surface = 33057951;
public static int DarkHole = 53129443;
public static int CardDestruction = 72892473;
public static int FoolishBurial = 81439173;
public static int MonsterReborn = 83764718;
public static int MedallionOfTheIceBarrier = 84206435;
public static int Salvage = 96947648;
public static int AquariumStage = 29047353;
public static int HeraldOfTheArcLight = 79606837;
public static int ToadallyAwesome = 90809975;
public static int SkyCavalryCentaurea = 36776089;
public static int DaigustoPhoenix = 2766877;
public static int CatShark = 84224627;
public static int MysticalSpaceTyphoon = 5318639;
public static int BookOfMoon = 14087893;
public static int CallOfTheHaunted = 97077563;
public static int TorrentialTribute = 53582587;
public static int NumberS39UtopiatheLightning = 56832966;
}
public ToadallyAwesomeExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, (int)CardId.GalaxyCyclone, DefaultGalaxyCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.AquariumStage, AquariumStageEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.MedallionOfTheIceBarrier, MedallionOfTheIceBarrierEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.FoolishBurial, FoolishBurialEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.PriorOfTheIceBarrier);
AddExecutor(ExecutorType.Summon, (int)CardId.GraydleSlimeJr, GraydleSlimeJrSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.SwapFrog, SwapFrogSpsummon);
AddExecutor(ExecutorType.Activate, (int)CardId.SwapFrog, SwapFrogEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.GraydleSlimeJr, GraydleSlimeJrEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Ronintoadin, RonintoadinEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.PriorOfTheIceBarrier);
AddExecutor(ExecutorType.Activate, (int)CardId.DupeFrog);
AddExecutor(ExecutorType.Activate, (int)CardId.Surface, SurfaceEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.MonsterReborn, SurfaceEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Salvage, SalvageEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.SwapFrog);
AddExecutor(ExecutorType.Summon, (int)CardId.DewdarkOfTheIceBarrier, IceBarrierSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.CryomancerOfTheIceBarrier, IceBarrierSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.CardDestruction);
AddExecutor(ExecutorType.Summon, (int)CardId.GraydleSlimeJr, NormalSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.PriorOfTheIceBarrier, NormalSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.Ronintoadin, NormalSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.DupeFrog, NormalSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.PriorOfTheIceBarrier, PriorOfTheIceBarrierSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CatShark, CatSharkSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.CatShark, CatSharkEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.SkyCavalryCentaurea, SkyCavalryCentaureaSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.SkyCavalryCentaurea);
AddExecutor(ExecutorType.SpSummon, (int)CardId.DaigustoPhoenix, DaigustoPhoenixSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.DaigustoPhoenix);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ToadallyAwesome);
AddExecutor(ExecutorType.Activate, (int)CardId.ToadallyAwesome, ToadallyAwesomeEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.HeraldOfTheArcLight, HeraldOfTheArcLightSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.HeraldOfTheArcLight);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.GraydleSlimeJr);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.DupeFrog);
AddExecutor(ExecutorType.MonsterSet, (int)CardId.Ronintoadin);
AddExecutor(ExecutorType.Activate, CardId.HarpiesFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, CardId.GalaxyCyclone, DefaultGalaxyCyclone);
AddExecutor(ExecutorType.Activate, CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.AquariumStage, AquariumStageEffect);
AddExecutor(ExecutorType.Activate, CardId.MedallionOfTheIceBarrier, MedallionOfTheIceBarrierEffect);
AddExecutor(ExecutorType.Activate, CardId.FoolishBurial, FoolishBurialEffect);
AddExecutor(ExecutorType.SpSummon, CardId.PriorOfTheIceBarrier);
AddExecutor(ExecutorType.Summon, CardId.GraydleSlimeJr, GraydleSlimeJrSummon);
AddExecutor(ExecutorType.SpSummon, CardId.SwapFrog, SwapFrogSpsummon);
AddExecutor(ExecutorType.Activate, CardId.SwapFrog, SwapFrogEffect);
AddExecutor(ExecutorType.Activate, CardId.GraydleSlimeJr, GraydleSlimeJrEffect);
AddExecutor(ExecutorType.Activate, CardId.Ronintoadin, RonintoadinEffect);
AddExecutor(ExecutorType.Activate, CardId.PriorOfTheIceBarrier);
AddExecutor(ExecutorType.Activate, CardId.DupeFrog);
AddExecutor(ExecutorType.Activate, CardId.Surface, SurfaceEffect);
AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, SurfaceEffect);
AddExecutor(ExecutorType.Activate, CardId.Salvage, SalvageEffect);
AddExecutor(ExecutorType.Summon, CardId.SwapFrog);
AddExecutor(ExecutorType.Summon, CardId.DewdarkOfTheIceBarrier, IceBarrierSummon);
AddExecutor(ExecutorType.Summon, CardId.CryomancerOfTheIceBarrier, IceBarrierSummon);
AddExecutor(ExecutorType.Activate, CardId.CardDestruction);
AddExecutor(ExecutorType.Summon, CardId.GraydleSlimeJr, NormalSummon);
AddExecutor(ExecutorType.Summon, CardId.PriorOfTheIceBarrier, NormalSummon);
AddExecutor(ExecutorType.Summon, CardId.Ronintoadin, NormalSummon);
AddExecutor(ExecutorType.Summon, CardId.DupeFrog, NormalSummon);
AddExecutor(ExecutorType.Summon, CardId.PriorOfTheIceBarrier, PriorOfTheIceBarrierSummon);
AddExecutor(ExecutorType.SpSummon, CardId.CatShark, CatSharkSummon);
AddExecutor(ExecutorType.Activate, CardId.CatShark, CatSharkEffect);
AddExecutor(ExecutorType.SpSummon, CardId.SkyCavalryCentaurea, SkyCavalryCentaureaSummon);
AddExecutor(ExecutorType.Activate, CardId.SkyCavalryCentaurea);
AddExecutor(ExecutorType.SpSummon, CardId.DaigustoPhoenix, DaigustoPhoenixSummon);
AddExecutor(ExecutorType.Activate, CardId.DaigustoPhoenix);
AddExecutor(ExecutorType.SpSummon, CardId.ToadallyAwesome);
AddExecutor(ExecutorType.Activate, CardId.ToadallyAwesome, ToadallyAwesomeEffect);
AddExecutor(ExecutorType.SpSummon, CardId.HeraldOfTheArcLight, HeraldOfTheArcLightSummon);
AddExecutor(ExecutorType.Activate, CardId.HeraldOfTheArcLight);
AddExecutor(ExecutorType.MonsterSet, CardId.GraydleSlimeJr);
AddExecutor(ExecutorType.MonsterSet, CardId.DupeFrog);
AddExecutor(ExecutorType.MonsterSet, CardId.Ronintoadin);
AddExecutor(ExecutorType.Repos, Repos);
// cards got by Toadall yAwesome
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, (int)CardId.BookOfMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, (int)CardId.CallOfTheHaunted, SurfaceEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.BookOfMoon, DefaultBookOfMoon);
AddExecutor(ExecutorType.Activate, CardId.CallOfTheHaunted, SurfaceEffect);
AddExecutor(ExecutorType.Activate, CardId.TorrentialTribute, DefaultTorrentialTribute);
AddExecutor(ExecutorType.Activate, OtherSpellEffect);
AddExecutor(ExecutorType.Activate, OtherTrapEffect);
AddExecutor(ExecutorType.Activate, OtherMonsterEffect);
......@@ -121,9 +121,9 @@ namespace WindBot.Game.AI.Decks
if (defender.IsMonsterDangerous() || defender.IsDefense())
return false;
}
if (!(defender.Id == (int)CardId.NumberS39UtopiatheLightning))
if (!(defender.Id == CardId.NumberS39UtopiatheLightning))
{
if (attacker.Id == (int)CardId.SkyCavalryCentaurea && !attacker.IsDisabled() && attacker.HasXyzMaterial())
if (attacker.Id == CardId.SkyCavalryCentaurea && !attacker.IsDisabled() && attacker.HasXyzMaterial())
attacker.RealPower = Duel.LifePoints[0] + attacker.Attack;
}
return attacker.RealPower >= defender.GetDefensePower();
......@@ -133,22 +133,22 @@ namespace WindBot.Game.AI.Decks
{
if (Bot.HasInHand(new List<int>
{
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DewdarkOfTheIceBarrier
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier
}) || Bot.HasInMonstersZone(new List<int>
{
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DewdarkOfTheIceBarrier
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier
}))
{
AI.SelectCard((int)CardId.PriorOfTheIceBarrier);
AI.SelectCard(CardId.PriorOfTheIceBarrier);
}
else
{
AI.SelectCard(new[]
{
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DewdarkOfTheIceBarrier
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier
});
}
return true;
......@@ -158,14 +158,14 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.ToadallyAwesome,
(int)CardId.HeraldOfTheArcLight,
(int)CardId.SwapFrog,
(int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DupeFrog,
(int)CardId.Ronintoadin,
(int)CardId.GraydleSlimeJr
CardId.ToadallyAwesome,
CardId.HeraldOfTheArcLight,
CardId.SwapFrog,
CardId.DewdarkOfTheIceBarrier,
CardId.CryomancerOfTheIceBarrier,
CardId.DupeFrog,
CardId.Ronintoadin,
CardId.GraydleSlimeJr
});
return true;
}
......@@ -183,22 +183,22 @@ namespace WindBot.Game.AI.Decks
private bool FoolishBurialEffect()
{
if (Bot.HasInHand((int)CardId.GraydleSlimeJr) && !Bot.HasInGraveyard((int)CardId.GraydleSlimeJr))
AI.SelectCard((int)CardId.GraydleSlimeJr);
else if (Bot.HasInGraveyard((int)CardId.Ronintoadin) && !Bot.HasInGraveyard((int)CardId.DupeFrog))
AI.SelectCard((int)CardId.DupeFrog);
else if (Bot.HasInGraveyard((int)CardId.DupeFrog) && !Bot.HasInGraveyard((int)CardId.Ronintoadin))
AI.SelectCard((int)CardId.Ronintoadin);
if (Bot.HasInHand(CardId.GraydleSlimeJr) && !Bot.HasInGraveyard(CardId.GraydleSlimeJr))
AI.SelectCard(CardId.GraydleSlimeJr);
else if (Bot.HasInGraveyard(CardId.Ronintoadin) && !Bot.HasInGraveyard(CardId.DupeFrog))
AI.SelectCard(CardId.DupeFrog);
else if (Bot.HasInGraveyard(CardId.DupeFrog) && !Bot.HasInGraveyard(CardId.Ronintoadin))
AI.SelectCard(CardId.Ronintoadin);
else
AI.SelectCard(new[]
{
(int)CardId.GraydleSlimeJr,
(int)CardId.Ronintoadin,
(int)CardId.DupeFrog,
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.PriorOfTheIceBarrier,
(int)CardId.SwapFrog
CardId.GraydleSlimeJr,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.PriorOfTheIceBarrier,
CardId.SwapFrog
});
return true;
}
......@@ -207,31 +207,31 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.SwapFrog,
(int)CardId.PriorOfTheIceBarrier,
(int)CardId.GraydleSlimeJr
CardId.SwapFrog,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr
});
return true;
}
private bool SwapFrogSpsummon()
{
if (Bot.GetCountCardInZone(Bot.Hand, (int)CardId.GraydleSlimeJr)>=2 && !Bot.HasInGraveyard((int)CardId.GraydleSlimeJr))
AI.SelectCard((int)CardId.GraydleSlimeJr);
else if (Bot.HasInGraveyard((int)CardId.Ronintoadin) && !Bot.HasInGraveyard((int)CardId.DupeFrog))
AI.SelectCard((int)CardId.DupeFrog);
else if (Bot.HasInGraveyard((int)CardId.DupeFrog) && !Bot.HasInGraveyard((int)CardId.Ronintoadin))
AI.SelectCard((int)CardId.Ronintoadin);
if (Bot.GetCountCardInZone(Bot.Hand, CardId.GraydleSlimeJr)>=2 && !Bot.HasInGraveyard(CardId.GraydleSlimeJr))
AI.SelectCard(CardId.GraydleSlimeJr);
else if (Bot.HasInGraveyard(CardId.Ronintoadin) && !Bot.HasInGraveyard(CardId.DupeFrog))
AI.SelectCard(CardId.DupeFrog);
else if (Bot.HasInGraveyard(CardId.DupeFrog) && !Bot.HasInGraveyard(CardId.Ronintoadin))
AI.SelectCard(CardId.Ronintoadin);
else
AI.SelectCard(new[]
{
(int)CardId.Ronintoadin,
(int)CardId.DupeFrog,
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.PriorOfTheIceBarrier,
(int)CardId.GraydleSlimeJr,
(int)CardId.SwapFrog
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr,
CardId.SwapFrog
});
return true;
}
......@@ -244,13 +244,13 @@ namespace WindBot.Game.AI.Decks
}
else
{
if (Bot.HasInHand((int)CardId.DupeFrog))
if (Bot.HasInHand(CardId.DupeFrog))
{
AI.SelectCard(new[]
{
(int)CardId.PriorOfTheIceBarrier,
(int)CardId.GraydleSlimeJr,
(int)CardId.SwapFrog
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr,
CardId.SwapFrog
});
return true;
}
......@@ -260,22 +260,22 @@ namespace WindBot.Game.AI.Decks
private bool GraydleSlimeJrSummon()
{
return Bot.HasInGraveyard((int)CardId.GraydleSlimeJr);
return Bot.HasInGraveyard(CardId.GraydleSlimeJr);
}
private bool GraydleSlimeJrEffect()
{
AI.SelectCard((int)CardId.GraydleSlimeJr);
AI.SelectCard(CardId.GraydleSlimeJr);
AI.SelectPosition(CardPosition.FaceUpDefence);
AI.SelectNextCard(new[]
{
(int)CardId.SwapFrog,
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.Ronintoadin,
(int)CardId.DupeFrog,
(int)CardId.PriorOfTheIceBarrier,
(int)CardId.GraydleSlimeJr
CardId.SwapFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr
});
return true;
}
......@@ -301,12 +301,12 @@ namespace WindBot.Game.AI.Decks
private bool IceBarrierSummon()
{
return Bot.GetCountCardInZone(Bot.Hand, (int)CardId.PriorOfTheIceBarrier) > 0;
return Bot.GetCountCardInZone(Bot.Hand, CardId.PriorOfTheIceBarrier) > 0;
}
private bool PriorOfTheIceBarrierSummon()
{
return Bot.GetCountCardInZone(Bot.Hand, (int)CardId.PriorOfTheIceBarrier) >= 2;
return Bot.GetCountCardInZone(Bot.Hand, CardId.PriorOfTheIceBarrier) >= 2;
}
private bool ToadallyAwesomeEffect()
......@@ -316,11 +316,11 @@ namespace WindBot.Game.AI.Decks
// negate effect, select a cost for it
List<ClientCard> monsters = Bot.GetMonsters();
List<int> suitableCost = new List<int> {
(int)CardId.SwapFrog,
(int)CardId.Ronintoadin,
(int)CardId.GraydleSlimeJr,
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DewdarkOfTheIceBarrier
CardId.SwapFrog,
CardId.Ronintoadin,
CardId.GraydleSlimeJr,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier
};
foreach (ClientCard monster in monsters)
{
......@@ -330,29 +330,29 @@ namespace WindBot.Game.AI.Decks
return true;
}
}
bool haveAquariumStage = Bot.HasInSpellZone((int)CardId.AquariumStage, true);
bool haveAquariumStage = Bot.HasInSpellZone(CardId.AquariumStage, true);
foreach (ClientCard monster in monsters)
{
if (monster.Id == (int)CardId.DupeFrog && !haveAquariumStage)
if (monster.Id == CardId.DupeFrog && !haveAquariumStage)
{
AI.SelectCard(monster);
return true;
}
}
monsters = (List<ClientCard>)Bot.Hand;
bool HaveTwoGraydleSlimeJrInHand = Bot.GetCountCardInZone(Bot.Hand, (int)CardId.GraydleSlimeJr) >= 2;
bool HaveTwoGraydleSlimeJrInHand = Bot.GetCountCardInZone(Bot.Hand, CardId.GraydleSlimeJr) >= 2;
foreach (ClientCard monster in monsters)
{
if (monster.Id == (int)CardId.GraydleSlimeJr && HaveTwoGraydleSlimeJrInHand)
if (monster.Id == CardId.GraydleSlimeJr && HaveTwoGraydleSlimeJrInHand)
{
AI.SelectCard(monster);
return true;
}
}
bool NeedDupeFrogInGrave = Bot.HasInGraveyard((int)CardId.Ronintoadin) && !Bot.HasInGraveyard((int)CardId.DupeFrog) && !Bot.HasInGraveyard((int)CardId.SwapFrog);
bool NeedDupeFrogInGrave = Bot.HasInGraveyard(CardId.Ronintoadin) && !Bot.HasInGraveyard(CardId.DupeFrog) && !Bot.HasInGraveyard(CardId.SwapFrog);
foreach (ClientCard monster in monsters)
{
if (monster.Id == (int)CardId.DupeFrog && NeedDupeFrogInGrave)
if (monster.Id == CardId.DupeFrog && NeedDupeFrogInGrave)
{
AI.SelectCard(monster);
return true;
......@@ -360,7 +360,7 @@ namespace WindBot.Game.AI.Decks
}
foreach (ClientCard monster in monsters)
{
if (monster.Id == (int)CardId.Ronintoadin || monster.Id == (int)CardId.DupeFrog)
if (monster.Id == CardId.Ronintoadin || monster.Id == CardId.DupeFrog)
{
AI.SelectCard(monster);
return true;
......@@ -375,17 +375,17 @@ namespace WindBot.Game.AI.Decks
}
else if (Card.Location == CardLocation.Grave)
{
if (!Bot.HasInExtra((int)CardId.ToadallyAwesome))
if (!Bot.HasInExtra(CardId.ToadallyAwesome))
{
AI.SelectCard((int)CardId.ToadallyAwesome);
AI.SelectCard(CardId.ToadallyAwesome);
}
else
{
AI.SelectCard(new[]
{
(int)CardId.SwapFrog,
(int)CardId.PriorOfTheIceBarrier,
(int)CardId.GraydleSlimeJr
CardId.SwapFrog,
CardId.PriorOfTheIceBarrier,
CardId.GraydleSlimeJr
});
}
return true;
......@@ -397,24 +397,24 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectNextCard(new[]
{
(int)CardId.SwapFrog,
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.Ronintoadin,
(int)CardId.DupeFrog,
(int)CardId.GraydleSlimeJr
CardId.SwapFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.GraydleSlimeJr
});
}
else
{
AI.SelectNextCard(new[]
{
(int)CardId.DupeFrog,
(int)CardId.SwapFrog,
(int)CardId.Ronintoadin,
(int)CardId.GraydleSlimeJr,
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DewdarkOfTheIceBarrier
CardId.DupeFrog,
CardId.SwapFrog,
CardId.Ronintoadin,
CardId.GraydleSlimeJr,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier
});
AI.SelectPosition(CardPosition.FaceUpDefence);
}
......@@ -425,14 +425,14 @@ namespace WindBot.Game.AI.Decks
private bool CatSharkSummon()
{
bool should = Bot.HasInMonstersZone((int)CardId.ToadallyAwesome)
bool should = Bot.HasInMonstersZone(CardId.ToadallyAwesome)
&& ((AI.Utils.IsOneEnemyBetter(true)
&& !Bot.HasInMonstersZone(new List<int>
{
(int)CardId.CatShark,
(int)CardId.SkyCavalryCentaurea
CardId.CatShark,
CardId.SkyCavalryCentaurea
}, true, true))
|| !Bot.HasInExtra((int)CardId.ToadallyAwesome));
|| !Bot.HasInExtra(CardId.ToadallyAwesome));
if (should)
{
AI.SelectPosition(CardPosition.FaceUpDefence);
......@@ -446,7 +446,7 @@ namespace WindBot.Game.AI.Decks
List<ClientCard> monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters)
{
if (monster.Id == (int)CardId.ToadallyAwesome && monster.Attack <= 2200)
if (monster.Id == CardId.ToadallyAwesome && monster.Attack <= 2200)
{
SelectXYZDetach(Card.Overlays);
AI.SelectNextCard(monster);
......@@ -455,7 +455,7 @@ namespace WindBot.Game.AI.Decks
}
foreach (ClientCard monster in monsters)
{
if (monster.Id == (int)CardId.SkyCavalryCentaurea && monster.Attack <= 2000)
if (monster.Id == CardId.SkyCavalryCentaurea && monster.Attack <= 2000)
{
SelectXYZDetach(Card.Overlays);
AI.SelectNextCard(monster);
......@@ -464,7 +464,7 @@ namespace WindBot.Game.AI.Decks
}
foreach (ClientCard monster in monsters)
{
if (monster.Id == (int)CardId.DaigustoPhoenix && monster.Attack <= 1500)
if (monster.Id == CardId.DaigustoPhoenix && monster.Attack <= 1500)
{
SelectXYZDetach(Card.Overlays);
AI.SelectNextCard(monster);
......@@ -490,7 +490,7 @@ namespace WindBot.Game.AI.Decks
&& num < 4
&& !Bot.HasInMonstersZone(new List<int>
{
(int)CardId.SkyCavalryCentaurea
CardId.SkyCavalryCentaurea
}, true, true);
}
......@@ -568,22 +568,22 @@ namespace WindBot.Game.AI.Decks
private void SelectXYZDetach(List<int> Overlays)
{
if (Overlays.Contains((int)CardId.GraydleSlimeJr) && Bot.HasInHand((int)CardId.GraydleSlimeJr) && !Bot.HasInGraveyard((int)CardId.GraydleSlimeJr))
AI.SelectCard((int)CardId.GraydleSlimeJr);
else if (Overlays.Contains((int)CardId.DupeFrog) && Bot.HasInGraveyard((int)CardId.Ronintoadin) && !Bot.HasInGraveyard((int)CardId.DupeFrog))
AI.SelectCard((int)CardId.DupeFrog);
else if (Overlays.Contains((int)CardId.Ronintoadin) && Bot.HasInGraveyard((int)CardId.DupeFrog) && !Bot.HasInGraveyard((int)CardId.Ronintoadin))
AI.SelectCard((int)CardId.Ronintoadin);
if (Overlays.Contains(CardId.GraydleSlimeJr) && Bot.HasInHand(CardId.GraydleSlimeJr) && !Bot.HasInGraveyard(CardId.GraydleSlimeJr))
AI.SelectCard(CardId.GraydleSlimeJr);
else if (Overlays.Contains(CardId.DupeFrog) && Bot.HasInGraveyard(CardId.Ronintoadin) && !Bot.HasInGraveyard(CardId.DupeFrog))
AI.SelectCard(CardId.DupeFrog);
else if (Overlays.Contains(CardId.Ronintoadin) && Bot.HasInGraveyard(CardId.DupeFrog) && !Bot.HasInGraveyard(CardId.Ronintoadin))
AI.SelectCard(CardId.Ronintoadin);
else
AI.SelectCard(new[]
{
(int)CardId.GraydleSlimeJr,
(int)CardId.Ronintoadin,
(int)CardId.DupeFrog,
(int)CardId.CryomancerOfTheIceBarrier,
(int)CardId.DewdarkOfTheIceBarrier,
(int)CardId.PriorOfTheIceBarrier,
(int)CardId.SwapFrog
CardId.GraydleSlimeJr,
CardId.Ronintoadin,
CardId.DupeFrog,
CardId.CryomancerOfTheIceBarrier,
CardId.DewdarkOfTheIceBarrier,
CardId.PriorOfTheIceBarrier,
CardId.SwapFrog
});
}
}
......
......@@ -9,42 +9,42 @@ namespace WindBot.Game.AI.Decks
[Deck("Yosenju", "AI_Yosenju")]
public class YosenjuExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
YosenjuKama1 = 65247798,
YosenjuKama2 = 92246806,
YosenjuKama3 = 28630501,
YosenjuTsujik = 25244515,
HarpiesFeatherDuster = 18144507,
DarkHole = 53129443,
CardOfDemise = 59750328,
PotOfDuality = 98645731,
CosmicCyclone = 8267140,
QuakingMirrorForce = 40838625,
DrowningMirrorForce = 47475363,
StarlightRoad = 58120309,
VanitysEmptiness = 5851097,
MacroCosmos = 30241314,
SolemnStrike = 40605147,
SolemnWarning = 84749824,
SolemnJudgment = 41420027,
MagicDrain = 59344077,
StardustDragon = 44508094,
NumberS39UtopiatheLightning = 56832966,
NumberS39UtopiaOne = 86532744,
DarkRebellionXyzDragon = 16195942,
Number39Utopia = 84013237,
Number103Ragnazero = 94380860,
BrotherhoodOfTheFireFistTigerKing = 96381979,
Number106GiantHand = 63746411,
CastelTheSkyblasterMusketeer = 82633039,
DiamondDireWolf = 95169481,
LightningChidori = 22653490,
EvilswarmExcitonKnight = 46772449,
AbyssDweller = 21044178,
GagagaCowboy = 12014404
public static int YosenjuKama1 = 65247798;
public static int YosenjuKama2 = 92246806;
public static int YosenjuKama3 = 28630501;
public static int YosenjuTsujik = 25244515;
public static int HarpiesFeatherDuster = 18144507;
public static int DarkHole = 53129443;
public static int CardOfDemise = 59750328;
public static int PotOfDuality = 98645731;
public static int CosmicCyclone = 8267140;
public static int QuakingMirrorForce = 40838625;
public static int DrowningMirrorForce = 47475363;
public static int StarlightRoad = 58120309;
public static int VanitysEmptiness = 5851097;
public static int MacroCosmos = 30241314;
public static int SolemnStrike = 40605147;
public static int SolemnWarning = 84749824;
public static int SolemnJudgment = 41420027;
public static int MagicDrain = 59344077;
public static int StardustDragon = 44508094;
public static int NumberS39UtopiatheLightning = 56832966;
public static int NumberS39UtopiaOne = 86532744;
public static int DarkRebellionXyzDragon = 16195942;
public static int Number39Utopia = 84013237;
public static int Number103Ragnazero = 94380860;
public static int BrotherhoodOfTheFireFistTigerKing = 96381979;
public static int Number106GiantHand = 63746411;
public static int CastelTheSkyblasterMusketeer = 82633039;
public static int DiamondDireWolf = 95169481;
public static int LightningChidori = 22653490;
public static int EvilswarmExcitonKnight = 46772449;
public static int AbyssDweller = 21044178;
public static int GagagaCowboy = 12014404;
}
bool CardOfDemiseUsed = false;
......@@ -53,95 +53,95 @@ namespace WindBot.Game.AI.Decks
: base(ai, duel)
{
// do the end phase effect of Card Of Demise before Yosenjus return to hand
AddExecutor(ExecutorType.Activate, (int)CardId.CardOfDemise, CardOfDemiseEPEffect);
AddExecutor(ExecutorType.Activate, CardId.CardOfDemise, CardOfDemiseEPEffect);
// burn if enemy's LP is below 800
AddExecutor(ExecutorType.SpSummon, (int)CardId.GagagaCowboy, GagagaCowboySummon);
AddExecutor(ExecutorType.Activate, (int)CardId.GagagaCowboy);
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, (int)CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.PotOfDuality, PotOfDualityEffect);
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.YosenjuKama1);
AddExecutor(ExecutorType.Summon, (int)CardId.YosenjuKama2);
AddExecutor(ExecutorType.Summon, (int)CardId.YosenjuKama3);
AddExecutor(ExecutorType.Summon, (int)CardId.YosenjuTsujik);
AddExecutor(ExecutorType.Activate, (int)CardId.YosenjuKama1, YosenjuEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.YosenjuKama2, YosenjuEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.YosenjuKama3, YosenjuEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.YosenjuTsujik, YosenjuEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnJudgment, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, TrapSetUnique);
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.MagicDrain, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DrowningMirrorForce, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.QuakingMirrorForce, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.StarlightRoad, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnJudgment, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnStrike, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.SolemnWarning, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MacroCosmos, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MagicDrain, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DrowningMirrorForce, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.QuakingMirrorForce, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.StarlightRoad, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.HarpiesFeatherDuster, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DarkHole, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.PotOfDuality, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CosmicCyclone, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CardOfDemise);
AddExecutor(ExecutorType.Activate, (int)CardId.CardOfDemise, CardOfDemiseEffect);
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.MacroCosmos, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.VanitysEmptiness, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.MagicDrain, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DrowningMirrorForce, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.QuakingMirrorForce, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.StarlightRoad, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.HarpiesFeatherDuster, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.DarkHole, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.PotOfDuality, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, (int)CardId.CosmicCyclone, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpSummon, (int)CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.DarkRebellionXyzDragon, DarkRebellionXyzDragonSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkRebellionXyzDragon, DarkRebellionXyzDragonEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Number39Utopia, DefaultNumberS39UtopiaTheLightningSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiaOne);
AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.StardustDragon, DefaultStardustDragonEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.StarlightRoad, DefaultTrap);
AddExecutor(ExecutorType.Activate, (int)CardId.MagicDrain);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnJudgment, DefaultSolemnJudgment);
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.QuakingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.SpSummon, CardId.GagagaCowboy, GagagaCowboySummon);
AddExecutor(ExecutorType.Activate, CardId.GagagaCowboy);
AddExecutor(ExecutorType.Activate, CardId.HarpiesFeatherDuster, DefaultHarpiesFeatherDusterFirst);
AddExecutor(ExecutorType.Activate, CardId.CosmicCyclone, DefaultCosmicCyclone);
AddExecutor(ExecutorType.Activate, CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.PotOfDuality, PotOfDualityEffect);
AddExecutor(ExecutorType.Summon, CardId.YosenjuKama1, HaveAnotherYosenjuWithSameNameInHand);
AddExecutor(ExecutorType.Summon, CardId.YosenjuKama2, HaveAnotherYosenjuWithSameNameInHand);
AddExecutor(ExecutorType.Summon, CardId.YosenjuKama3, HaveAnotherYosenjuWithSameNameInHand);
AddExecutor(ExecutorType.Summon, CardId.YosenjuKama1);
AddExecutor(ExecutorType.Summon, CardId.YosenjuKama2);
AddExecutor(ExecutorType.Summon, CardId.YosenjuKama3);
AddExecutor(ExecutorType.Summon, CardId.YosenjuTsujik);
AddExecutor(ExecutorType.Activate, CardId.YosenjuKama1, YosenjuEffect);
AddExecutor(ExecutorType.Activate, CardId.YosenjuKama2, YosenjuEffect);
AddExecutor(ExecutorType.Activate, CardId.YosenjuKama3, YosenjuEffect);
AddExecutor(ExecutorType.Activate, CardId.YosenjuTsujik, YosenjuEffect);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnJudgment, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnStrike, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnWarning, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.MacroCosmos, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.VanitysEmptiness, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.MagicDrain, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.DrowningMirrorForce, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.QuakingMirrorForce, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.StarlightRoad, TrapSetUnique);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnJudgment, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnStrike, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnWarning, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.MacroCosmos, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.VanitysEmptiness, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.MagicDrain, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.DrowningMirrorForce, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.QuakingMirrorForce, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.StarlightRoad, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.HarpiesFeatherDuster, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.DarkHole, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.PotOfDuality, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.CosmicCyclone, TrapSetWhenZoneFree);
AddExecutor(ExecutorType.SpellSet, CardId.CardOfDemise);
AddExecutor(ExecutorType.Activate, CardId.CardOfDemise, CardOfDemiseEffect);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnJudgment, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnStrike, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.SolemnWarning, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.MacroCosmos, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.VanitysEmptiness, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.MagicDrain, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.DrowningMirrorForce, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.QuakingMirrorForce, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.StarlightRoad, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.HarpiesFeatherDuster, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.DarkHole, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.PotOfDuality, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpellSet, CardId.CosmicCyclone, CardOfDemiseAcivated);
AddExecutor(ExecutorType.SpSummon, CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightSummon);
AddExecutor(ExecutorType.Activate, CardId.EvilswarmExcitonKnight, DefaultEvilswarmExcitonKnightEffect);
AddExecutor(ExecutorType.SpSummon, CardId.DarkRebellionXyzDragon, DarkRebellionXyzDragonSummon);
AddExecutor(ExecutorType.Activate, CardId.DarkRebellionXyzDragon, DarkRebellionXyzDragonEffect);
AddExecutor(ExecutorType.SpSummon, CardId.Number39Utopia, DefaultNumberS39UtopiaTheLightningSummon);
AddExecutor(ExecutorType.SpSummon, CardId.NumberS39UtopiaOne);
AddExecutor(ExecutorType.SpSummon, CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, CardId.StardustDragon, DefaultStardustDragonEffect);
AddExecutor(ExecutorType.Activate, CardId.StarlightRoad, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.MagicDrain);
AddExecutor(ExecutorType.Activate, CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, CardId.SolemnJudgment, DefaultSolemnJudgment);
AddExecutor(ExecutorType.Activate, CardId.MacroCosmos, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.VanitysEmptiness, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.DrowningMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Activate, CardId.QuakingMirrorForce, DefaultUniqueTrap);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
}
......@@ -163,7 +163,7 @@ namespace WindBot.Game.AI.Decks
if (Card == null)
return true;
// Logger.DebugWriteLine(Card.Name);
if (Card.Id == (int)CardId.YosenjuKama2)
if (Card.Id == CardId.YosenjuKama2)
return Card.ShouldDirectAttack;
else
return true;
......@@ -176,11 +176,11 @@ namespace WindBot.Game.AI.Decks
if (defender.IsMonsterDangerous() || defender.IsDefense())
return false;
}
if (!(defender.Id == (int)CardId.NumberS39UtopiatheLightning))
if (!(defender.Id == CardId.NumberS39UtopiatheLightning))
{
if (attacker.Attribute == (int)CardAttribute.Wind && Bot.HasInHand((int)CardId.YosenjuTsujik))
if (attacker.Attribute == (int)CardAttribute.Wind && Bot.HasInHand(CardId.YosenjuTsujik))
attacker.RealPower = attacker.RealPower + 1000;
if (attacker.Id == (int)CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, (int)CardId.Number39Utopia))
if (attacker.Id == CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, CardId.Number39Utopia))
attacker.RealPower = 5000;
}
return attacker.RealPower > defender.GetDefensePower();
......@@ -192,37 +192,37 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.StarlightRoad,
(int)CardId.MagicDrain,
(int)CardId.SolemnJudgment,
(int)CardId.VanitysEmptiness,
(int)CardId.HarpiesFeatherDuster,
(int)CardId.DrowningMirrorForce,
(int)CardId.QuakingMirrorForce,
(int)CardId.SolemnStrike,
(int)CardId.SolemnWarning,
(int)CardId.MacroCosmos,
(int)CardId.CardOfDemise
CardId.StarlightRoad,
CardId.MagicDrain,
CardId.SolemnJudgment,
CardId.VanitysEmptiness,
CardId.HarpiesFeatherDuster,
CardId.DrowningMirrorForce,
CardId.QuakingMirrorForce,
CardId.SolemnStrike,
CardId.SolemnWarning,
CardId.MacroCosmos,
CardId.CardOfDemise
});
}
else
{
AI.SelectCard(new[]
{
(int)CardId.YosenjuKama3,
(int)CardId.YosenjuKama1,
(int)CardId.YosenjuKama2,
(int)CardId.StarlightRoad,
(int)CardId.MagicDrain,
(int)CardId.VanitysEmptiness,
(int)CardId.HarpiesFeatherDuster,
(int)CardId.DrowningMirrorForce,
(int)CardId.QuakingMirrorForce,
(int)CardId.SolemnStrike,
(int)CardId.SolemnJudgment,
(int)CardId.SolemnWarning,
(int)CardId.MacroCosmos,
(int)CardId.CardOfDemise,
CardId.YosenjuKama3,
CardId.YosenjuKama1,
CardId.YosenjuKama2,
CardId.StarlightRoad,
CardId.MagicDrain,
CardId.VanitysEmptiness,
CardId.HarpiesFeatherDuster,
CardId.DrowningMirrorForce,
CardId.QuakingMirrorForce,
CardId.SolemnStrike,
CardId.SolemnJudgment,
CardId.SolemnWarning,
CardId.MacroCosmos,
CardId.CardOfDemise,
});
}
return true;
......@@ -275,9 +275,9 @@ namespace WindBot.Game.AI.Decks
return false;
AI.SelectCard(new[]
{
(int)CardId.YosenjuKama1,
(int)CardId.YosenjuKama2,
(int)CardId.YosenjuKama3
CardId.YosenjuKama1,
CardId.YosenjuKama2,
CardId.YosenjuKama3
});
return true;
}
......
......@@ -9,116 +9,116 @@ namespace WindBot.Game.AI.Decks
[Deck("Zexal Weapons", "AI_ZexalWeapons")]
class ZexalWeaponsExecutor : DefaultExecutor
{
public enum CardId
public class CardId
{
CyberDragon = 70095155,
ZwTornadoBringer = 81471108,
ZwLightningBlade = 45082499,
ZwAsuraStrike = 40941889,
SolarWindJammer = 33911264,
PhotonTrasher = 65367484,
StarDrawing = 24610207,
SacredCrane = 30914564,
Goblindbergh = 25259669,
Honest = 37742478,
Kagetokage = 94656263,
HeroicChallengerExtraSword = 34143852,
TinGoldfish = 18063928,
SummonerMonk = 423585,
InstantFusion = 1845204,
Raigeki = 12580477,
ReinforcementOfTheArmy = 32807846,
DarkHole = 53129443,
MysticalSpaceTyphoon = 5318639,
BreakthroughSkill = 78474168,
SolemnWarning = 84749824,
SolemnStrike = 40605147,
XyzChangeTactics = 11705261,
public static int CyberDragon = 70095155;
public static int ZwTornadoBringer = 81471108;
public static int ZwLightningBlade = 45082499;
public static int ZwAsuraStrike = 40941889;
public static int SolarWindJammer = 33911264;
public static int PhotonTrasher = 65367484;
public static int StarDrawing = 24610207;
public static int SacredCrane = 30914564;
public static int Goblindbergh = 25259669;
public static int Honest = 37742478;
public static int Kagetokage = 94656263;
public static int HeroicChallengerExtraSword = 34143852;
public static int TinGoldfish = 18063928;
public static int SummonerMonk = 423585;
public static int InstantFusion = 1845204;
public static int Raigeki = 12580477;
public static int ReinforcementOfTheArmy = 32807846;
public static int DarkHole = 53129443;
public static int MysticalSpaceTyphoon = 5318639;
public static int BreakthroughSkill = 78474168;
public static int SolemnWarning = 84749824;
public static int SolemnStrike = 40605147;
public static int XyzChangeTactics = 11705261;
FlameSwordsman = 45231177,
DarkfireDragon = 17881964,
GaiaDragonTheThunderCharger = 91949988,
ZwLionArms = 60992364,
AdreusKeeperOfArmageddon = 94119480,
Number61Volcasaurus = 29669359,
GemKnightPearl = 71594310,
Number39Utopia = 84013237,
NumberS39UtopiaOne= 86532744,
NumberS39UtopiatheLightning = 56832966,
MaestrokeTheSymphonyDjinn = 25341652,
GagagaCowboy = 12014404
public static int FlameSwordsman = 45231177;
public static int DarkfireDragon = 17881964;
public static int GaiaDragonTheThunderCharger = 91949988;
public static int ZwLionArms = 60992364;
public static int AdreusKeeperOfArmageddon = 94119480;
public static int Number61Volcasaurus = 29669359;
public static int GemKnightPearl = 71594310;
public static int Number39Utopia = 84013237;
public static int NumberS39UtopiaOne = 86532744;
public static int NumberS39UtopiatheLightning = 56832966;
public static int MaestrokeTheSymphonyDjinn = 25341652;
public static int GagagaCowboy = 12014404;
}
public ZexalWeaponsExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
// Quick spells
AddExecutor(ExecutorType.Activate, (int)CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
AddExecutor(ExecutorType.Activate, CardId.MysticalSpaceTyphoon, DefaultMysticalSpaceTyphoon);
// Spell cards
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, (int)CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, (int)CardId.ReinforcementOfTheArmy, ReinforcementOfTheArmy);
AddExecutor(ExecutorType.Activate, (int)CardId.XyzChangeTactics, XyzChangeTactics);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.Raigeki, DefaultRaigeki);
AddExecutor(ExecutorType.Activate, CardId.ReinforcementOfTheArmy, ReinforcementOfTheArmy);
AddExecutor(ExecutorType.Activate, CardId.XyzChangeTactics, XyzChangeTactics);
// XYZ summons
AddExecutor(ExecutorType.SpSummon, (int)CardId.Number39Utopia);
AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiaOne);
AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Number61Volcasaurus, Number61Volcasaurus);
AddExecutor(ExecutorType.SpSummon, (int)CardId.ZwLionArms);
AddExecutor(ExecutorType.SpSummon, (int)CardId.AdreusKeeperOfArmageddon);
AddExecutor(ExecutorType.SpSummon, CardId.Number39Utopia);
AddExecutor(ExecutorType.SpSummon, CardId.NumberS39UtopiaOne);
AddExecutor(ExecutorType.SpSummon, CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.SpSummon, CardId.Number61Volcasaurus, Number61Volcasaurus);
AddExecutor(ExecutorType.SpSummon, CardId.ZwLionArms);
AddExecutor(ExecutorType.SpSummon, CardId.AdreusKeeperOfArmageddon);
// XYZ effects
AddExecutor(ExecutorType.Activate, (int)CardId.Number39Utopia, Number39Utopia);
AddExecutor(ExecutorType.Activate, (int)CardId.NumberS39UtopiaOne);
AddExecutor(ExecutorType.Activate, (int)CardId.NumberS39UtopiatheLightning, NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.ZwLionArms, ZwLionArms);
AddExecutor(ExecutorType.Activate, (int)CardId.AdreusKeeperOfArmageddon);
AddExecutor(ExecutorType.Activate, (int)CardId.Number61Volcasaurus);
AddExecutor(ExecutorType.Activate, CardId.Number39Utopia, Number39Utopia);
AddExecutor(ExecutorType.Activate, CardId.NumberS39UtopiaOne);
AddExecutor(ExecutorType.Activate, CardId.NumberS39UtopiatheLightning, NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, CardId.ZwLionArms, ZwLionArms);
AddExecutor(ExecutorType.Activate, CardId.AdreusKeeperOfArmageddon);
AddExecutor(ExecutorType.Activate, CardId.Number61Volcasaurus);
// Weapons
AddExecutor(ExecutorType.Activate, (int)CardId.ZwTornadoBringer);
AddExecutor(ExecutorType.Activate, (int)CardId.ZwLightningBlade);
AddExecutor(ExecutorType.Activate, (int)CardId.ZwAsuraStrike);
AddExecutor(ExecutorType.Activate, CardId.ZwTornadoBringer);
AddExecutor(ExecutorType.Activate, CardId.ZwLightningBlade);
AddExecutor(ExecutorType.Activate, CardId.ZwAsuraStrike);
// Special summons
AddExecutor(ExecutorType.SpSummon, (int)CardId.PhotonTrasher);
AddExecutor(ExecutorType.SpSummon, (int)CardId.CyberDragon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.SolarWindJammer, SolarWindJammer);
AddExecutor(ExecutorType.SpSummon, CardId.PhotonTrasher);
AddExecutor(ExecutorType.SpSummon, CardId.CyberDragon);
AddExecutor(ExecutorType.SpSummon, CardId.SolarWindJammer, SolarWindJammer);
AddExecutor(ExecutorType.Activate, (int)CardId.InstantFusion, InstantFusion);
AddExecutor(ExecutorType.Activate, CardId.InstantFusion, InstantFusion);
// Normal summons
AddExecutor(ExecutorType.Summon, (int)CardId.Goblindbergh, GoblindberghFirst);
AddExecutor(ExecutorType.Summon, (int)CardId.TinGoldfish, GoblindberghFirst);
AddExecutor(ExecutorType.Summon, (int)CardId.StarDrawing);
AddExecutor(ExecutorType.Summon, (int)CardId.SacredCrane);
AddExecutor(ExecutorType.Summon, (int)CardId.HeroicChallengerExtraSword);
AddExecutor(ExecutorType.Summon, (int)CardId.Goblindbergh);
AddExecutor(ExecutorType.Summon, (int)CardId.TinGoldfish);
AddExecutor(ExecutorType.Summon, (int)CardId.SummonerMonk);
AddExecutor(ExecutorType.Summon, CardId.Goblindbergh, GoblindberghFirst);
AddExecutor(ExecutorType.Summon, CardId.TinGoldfish, GoblindberghFirst);
AddExecutor(ExecutorType.Summon, CardId.StarDrawing);
AddExecutor(ExecutorType.Summon, CardId.SacredCrane);
AddExecutor(ExecutorType.Summon, CardId.HeroicChallengerExtraSword);
AddExecutor(ExecutorType.Summon, CardId.Goblindbergh);
AddExecutor(ExecutorType.Summon, CardId.TinGoldfish);
AddExecutor(ExecutorType.Summon, CardId.SummonerMonk);
// Summons: Effects
AddExecutor(ExecutorType.Activate, (int)CardId.Goblindbergh, GoblindberghEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.TinGoldfish, GoblindberghEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Kagetokage);
AddExecutor(ExecutorType.Activate, (int)CardId.SummonerMonk, SummonerMonkEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Honest, Honest);
AddExecutor(ExecutorType.Activate, CardId.Goblindbergh, GoblindberghEffect);
AddExecutor(ExecutorType.Activate, CardId.TinGoldfish, GoblindberghEffect);
AddExecutor(ExecutorType.Activate, CardId.Kagetokage);
AddExecutor(ExecutorType.Activate, CardId.SummonerMonk, SummonerMonkEffect);
AddExecutor(ExecutorType.Activate, CardId.Honest, Honest);
// Reposition
AddExecutor(ExecutorType.Repos, MonsterRepos);
// Spummon GaiaDragonTheThunderCharger if Volcasaurus or ZwLionArms had been used
AddExecutor(ExecutorType.SpSummon, (int)CardId.GaiaDragonTheThunderCharger);
AddExecutor(ExecutorType.SpSummon, CardId.GaiaDragonTheThunderCharger);
// Set and activate traps
AddExecutor(ExecutorType.SpellSet, DefaultSpellSet);
AddExecutor(ExecutorType.Activate, (int)CardId.BreakthroughSkill, DefaultBreakthroughSkill);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, (int)CardId.SolemnStrike, DefaultSolemnStrike);
AddExecutor(ExecutorType.Activate, CardId.BreakthroughSkill, DefaultBreakthroughSkill);
AddExecutor(ExecutorType.Activate, CardId.SolemnWarning, DefaultSolemnWarning);
AddExecutor(ExecutorType.Activate, CardId.SolemnStrike, DefaultSolemnStrike);
}
public override bool OnSelectHand()
......@@ -133,11 +133,11 @@ namespace WindBot.Game.AI.Decks
if (defender.IsMonsterDangerous() || defender.IsDefense())
return false;
}
if (!(defender.Id == (int)CardId.NumberS39UtopiatheLightning))
if (!(defender.Id == CardId.NumberS39UtopiatheLightning))
{
if (attacker.Attribute == (int)CardAttribute.Light && Bot.HasInHand((int)CardId.Honest))
if (attacker.Attribute == (int)CardAttribute.Light && Bot.HasInHand(CardId.Honest))
attacker.RealPower = attacker.RealPower + defender.Attack;
if (attacker.Id == (int)CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, (int)CardId.Number39Utopia))
if (attacker.Id == CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, CardId.Number39Utopia))
attacker.RealPower = 5000;
}
return attacker.RealPower > defender.GetDefensePower();
......@@ -157,9 +157,9 @@ namespace WindBot.Game.AI.Decks
private bool ZwLionArms()
{
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.ZwLionArms, 0))
if (ActivateDescription == AI.Utils.GetStringId(CardId.ZwLionArms, 0))
return true;
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.ZwLionArms, 1))
if (ActivateDescription == AI.Utils.GetStringId(CardId.ZwLionArms, 1))
return !Card.IsDisabled();
return false;
}
......@@ -168,11 +168,11 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.Goblindbergh,
(int)CardId.TinGoldfish,
(int)CardId.StarDrawing,
(int)CardId.Kagetokage,
(int)CardId.SacredCrane
CardId.Goblindbergh,
CardId.TinGoldfish,
CardId.StarDrawing,
CardId.Kagetokage,
CardId.SacredCrane
});
return true;
}
......@@ -193,12 +193,12 @@ namespace WindBot.Game.AI.Decks
}
if (count5 == 1)
{
AI.SelectCard((int)CardId.FlameSwordsman);
AI.SelectCard(CardId.FlameSwordsman);
return true;
}
else if (count4 == 1)
{
AI.SelectCard((int)CardId.DarkfireDragon);
AI.SelectCard(CardId.DarkfireDragon);
return true;
}
return false;
......@@ -234,33 +234,33 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.SacredCrane,
(int)CardId.HeroicChallengerExtraSword,
(int)CardId.StarDrawing,
(int)CardId.SummonerMonk
CardId.SacredCrane,
CardId.HeroicChallengerExtraSword,
CardId.StarDrawing,
CardId.SummonerMonk
});
return true;
}
private bool SummonerMonkEffect()
{
if (Bot.HasInHand((int)CardId.InstantFusion) ||
Bot.HasInHand((int)CardId.MysticalSpaceTyphoon))
if (Bot.HasInHand(CardId.InstantFusion) ||
Bot.HasInHand(CardId.MysticalSpaceTyphoon))
{
AI.SelectCard(new[]
{
(int)CardId.InstantFusion,
(int)CardId.MysticalSpaceTyphoon
CardId.InstantFusion,
CardId.MysticalSpaceTyphoon
});
return true;
}
AI.SelectNextCard(new[]
{
(int)CardId.Goblindbergh,
(int)CardId.TinGoldfish,
(int)CardId.StarDrawing,
(int)CardId.Kagetokage,
(int)CardId.SacredCrane
CardId.Goblindbergh,
CardId.TinGoldfish,
CardId.StarDrawing,
CardId.Kagetokage,
CardId.SacredCrane
});
return false;
}
......@@ -268,8 +268,8 @@ namespace WindBot.Game.AI.Decks
private bool SolarWindJammer()
{
if (!Bot.HasInHand(new List<int> {
(int)CardId.StarDrawing,
(int)CardId.InstantFusion
CardId.StarDrawing,
CardId.InstantFusion
}))
return false;
AI.SelectPosition(CardPosition.FaceUpDefence);
......@@ -278,7 +278,7 @@ namespace WindBot.Game.AI.Decks
private bool MonsterRepos()
{
if (Card.Id == (int)CardId.NumberS39UtopiatheLightning)
if (Card.Id == CardId.NumberS39UtopiatheLightning)
return false;
return base.DefaultMonsterRepos();
}
......
......@@ -9,39 +9,39 @@ namespace WindBot.Game.AI.Decks
[Deck("Zoodiac", "AI_Zoodiac", "OutDated")]
class ZoodiacExecutor : DefaultExecutor
{
public enum CardId
{
JizukirutheStarDestroyingKaiju = 63941210,
GadarlatheMysteryDustKaiju = 36956512,
GamecieltheSeaTurtleKaiju = 55063751,
RadiantheMultidimensionalKaiju = 28674152,
KumongoustheStickyStringKaiju = 29726552,
PhotonThrasher = 65367484,
Thoroughblade = 77150143,
Whiptail = 31755044,
Ratpier = 78872731,
AleisterTheInvoker = 86120751,
HarpiesFeatherDuster = 18144506,
DarkHole = 53129443,
Terraforming = 73628505,
Invocation = 74063034,
MonsterReborn = 83764718,
InterruptedKaijuSlumber = 99330325,
ZoodiacBarrage = 46060017,
FireFormationTenki = 57103969,
MagicalMeltdown = 47679935,
ZoodiacCombo = 73881652,
InvokedMechaba = 75286621,
InvokedMagellanica = 48791583,
NumberS39UtopiatheLightning = 56832966,
Number39Utopia = 84013237,
DaigustoEmeral = 581014,
Tigermortar = 11510448,
Chakanine = 41375811,
Drident = 48905153,
Broadbull = 85115440
public class CardId
{
public static int JizukirutheStarDestroyingKaiju = 63941210;
public static int GadarlatheMysteryDustKaiju = 36956512;
public static int GamecieltheSeaTurtleKaiju = 55063751;
public static int RadiantheMultidimensionalKaiju = 28674152;
public static int KumongoustheStickyStringKaiju = 29726552;
public static int PhotonThrasher = 65367484;
public static int Thoroughblade = 77150143;
public static int Whiptail = 31755044;
public static int Ratpier = 78872731;
public static int AleisterTheInvoker = 86120751;
public static int HarpiesFeatherDuster = 18144506;
public static int DarkHole = 53129443;
public static int Terraforming = 73628505;
public static int Invocation = 74063034;
public static int MonsterReborn = 83764718;
public static int InterruptedKaijuSlumber = 99330325;
public static int ZoodiacBarrage = 46060017;
public static int FireFormationTenki = 57103969;
public static int MagicalMeltdown = 47679935;
public static int ZoodiacCombo = 73881652;
public static int InvokedMechaba = 75286621;
public static int InvokedMagellanica = 48791583;
public static int NumberS39UtopiatheLightning = 56832966;
public static int Number39Utopia = 84013237;
public static int DaigustoEmeral = 581014;
public static int Tigermortar = 11510448;
public static int Chakanine = 41375811;
public static int Drident = 48905153;
public static int Broadbull = 85115440;
}
bool TigermortarSpsummoned = false;
......@@ -53,65 +53,65 @@ namespace WindBot.Game.AI.Decks
: base(ai, duel)
{
// Quick spells
AddExecutor(ExecutorType.Activate, (int)CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, (int)CardId.InterruptedKaijuSlumber, DefaultInterruptedKaijuSlumber);
AddExecutor(ExecutorType.Activate, (int)CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.Activate, CardId.HarpiesFeatherDuster);
AddExecutor(ExecutorType.Activate, CardId.InterruptedKaijuSlumber, DefaultInterruptedKaijuSlumber);
AddExecutor(ExecutorType.Activate, CardId.DarkHole, DefaultDarkHole);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GamecieltheSeaTurtleKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.KumongoustheStickyStringKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.GadarlatheMysteryDustKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.RadiantheMultidimensionalKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.JizukirutheStarDestroyingKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, CardId.GamecieltheSeaTurtleKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, CardId.KumongoustheStickyStringKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, CardId.GadarlatheMysteryDustKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, CardId.RadiantheMultidimensionalKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, CardId.JizukirutheStarDestroyingKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.Activate, (int)CardId.Terraforming);
AddExecutor(ExecutorType.Activate, (int)CardId.MagicalMeltdown);
AddExecutor(ExecutorType.Activate, (int)CardId.FireFormationTenki, FireFormationTenkiEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.ZoodiacBarrage, ZoodiacBarrageEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.DaigustoEmeral, DaigustoEmeralEffect);
AddExecutor(ExecutorType.Activate, CardId.Terraforming);
AddExecutor(ExecutorType.Activate, CardId.MagicalMeltdown);
AddExecutor(ExecutorType.Activate, CardId.FireFormationTenki, FireFormationTenkiEffect);
AddExecutor(ExecutorType.Activate, CardId.ZoodiacBarrage, ZoodiacBarrageEffect);
AddExecutor(ExecutorType.Activate, CardId.DaigustoEmeral, DaigustoEmeralEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.PhotonThrasher, PhotonThrasherSummon);
AddExecutor(ExecutorType.SpSummon, CardId.PhotonThrasher, PhotonThrasherSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Number39Utopia, DefaultNumberS39UtopiaTheLightningSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.SpSummon, CardId.Number39Utopia, DefaultNumberS39UtopiaTheLightningSummon);
AddExecutor(ExecutorType.SpSummon, CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, CardId.NumberS39UtopiatheLightning);
AddExecutor(ExecutorType.Activate, (int)CardId.InvokedMechaba, DefaultTrap);
AddExecutor(ExecutorType.Activate, CardId.InvokedMechaba, DefaultTrap);
AddExecutor(ExecutorType.Activate, RatpierMaterialEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Drident, DridentEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Broadbull, BroadbullEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Tigermortar, TigermortarEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Chakanine, ChakanineEffect);
AddExecutor(ExecutorType.Activate, CardId.Drident, DridentEffect);
AddExecutor(ExecutorType.Activate, CardId.Broadbull, BroadbullEffect);
AddExecutor(ExecutorType.Activate, CardId.Tigermortar, TigermortarEffect);
AddExecutor(ExecutorType.Activate, CardId.Chakanine, ChakanineEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Chakanine, ChakanineSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Tigermortar, TigermortarSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Broadbull, BroadbullSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Drident, DridentSummon);
AddExecutor(ExecutorType.SpSummon, CardId.Chakanine, ChakanineSummon);
AddExecutor(ExecutorType.SpSummon, CardId.Tigermortar, TigermortarSummon);
AddExecutor(ExecutorType.SpSummon, CardId.Broadbull, BroadbullSummon);
AddExecutor(ExecutorType.SpSummon, CardId.Drident, DridentSummon);
AddExecutor(ExecutorType.Summon, (int)CardId.Ratpier);
AddExecutor(ExecutorType.Activate, (int)CardId.Ratpier, RatpierEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.Thoroughblade);
AddExecutor(ExecutorType.Activate, (int)CardId.Thoroughblade, RatpierEffect);
AddExecutor(ExecutorType.Summon, (int)CardId.AleisterTheInvoker);
AddExecutor(ExecutorType.Activate, (int)CardId.AleisterTheInvoker, AleisterTheInvokerEffect);
AddExecutor(ExecutorType.Summon, CardId.Ratpier);
AddExecutor(ExecutorType.Activate, CardId.Ratpier, RatpierEffect);
AddExecutor(ExecutorType.Summon, CardId.Thoroughblade);
AddExecutor(ExecutorType.Activate, CardId.Thoroughblade, RatpierEffect);
AddExecutor(ExecutorType.Summon, CardId.AleisterTheInvoker);
AddExecutor(ExecutorType.Activate, CardId.AleisterTheInvoker, AleisterTheInvokerEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.DaigustoEmeral, DaigustoEmeralSummon);
AddExecutor(ExecutorType.SpSummon, CardId.DaigustoEmeral, DaigustoEmeralSummon);
AddExecutor(ExecutorType.SpSummon, (int)CardId.Broadbull, BroadbullXYZSummon);
AddExecutor(ExecutorType.SpSummon, CardId.Broadbull, BroadbullXYZSummon);
AddExecutor(ExecutorType.Activate, (int)CardId.MonsterReborn, MonsterRebornEffect);
AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterRebornEffect);
AddExecutor(ExecutorType.SpSummon, (int)CardId.PhotonThrasher);
AddExecutor(ExecutorType.Summon, (int)CardId.Whiptail);
AddExecutor(ExecutorType.SpSummon, CardId.PhotonThrasher);
AddExecutor(ExecutorType.Summon, CardId.Whiptail);
AddExecutor(ExecutorType.Activate, (int)CardId.Invocation, InvocationEffect);
AddExecutor(ExecutorType.Activate, CardId.Invocation, InvocationEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.Whiptail, WhiptailEffect);
AddExecutor(ExecutorType.Activate, CardId.Whiptail, WhiptailEffect);
AddExecutor(ExecutorType.Activate, (int)CardId.ZoodiacCombo, ZoodiacComboEffect);
AddExecutor(ExecutorType.Activate, CardId.ZoodiacCombo, ZoodiacComboEffect);
AddExecutor(ExecutorType.SpellSet, (int)CardId.ZoodiacCombo);
AddExecutor(ExecutorType.SpellSet, CardId.ZoodiacCombo);
AddExecutor(ExecutorType.Repos, MonsterRepos);
}
......@@ -138,11 +138,11 @@ namespace WindBot.Game.AI.Decks
if (defender.IsMonsterDangerous() || defender.IsDefense())
return false;
}
if (!(defender.Id == (int)CardId.NumberS39UtopiatheLightning))
if (!(defender.Id == CardId.NumberS39UtopiatheLightning))
{
//if (attacker.HasType(CardType.Fusion) && Bot.HasInHand((int)CardId.AleisterTheInvoker))
//if (attacker.HasType(CardType.Fusion) && Bot.HasInHand(CardId.AleisterTheInvoker))
// attacker.RealPower = attacker.RealPower + 1000;
if (attacker.Id == (int)CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, (int)CardId.Number39Utopia))
if (attacker.Id == CardId.NumberS39UtopiatheLightning && !attacker.IsDisabled() && attacker.HasXyzMaterial(2, CardId.Number39Utopia))
attacker.RealPower = 5000;
}
return attacker.RealPower > defender.GetDefensePower();
......@@ -150,9 +150,9 @@ namespace WindBot.Game.AI.Decks
private bool PhotonThrasherSummon()
{
return Bot.HasInHand((int)CardId.AleisterTheInvoker)
&& !Bot.HasInHand((int)CardId.Ratpier)
&& !Bot.HasInHand((int)CardId.Thoroughblade);
return Bot.HasInHand(CardId.AleisterTheInvoker)
&& !Bot.HasInHand(CardId.Ratpier)
&& !Bot.HasInHand(CardId.Thoroughblade);
}
private bool AleisterTheInvokerEffect()
......@@ -194,7 +194,7 @@ namespace WindBot.Game.AI.Decks
}
if (mat != null)
{
AI.SelectCard((int)CardId.InvokedMechaba);
AI.SelectCard(CardId.InvokedMechaba);
SelectAleisterInGrave();
AI.SelectThirdCard(mat);
AI.SelectPosition(CardPosition.FaceUpAttack);
......@@ -218,7 +218,7 @@ namespace WindBot.Game.AI.Decks
}
if (mat != null)
{
AI.SelectCard((int)CardId.InvokedMagellanica);
AI.SelectCard(CardId.InvokedMagellanica);
SelectAleisterInGrave();
AI.SelectThirdCard(mat);
AI.SelectPosition(CardPosition.FaceUpAttack);
......@@ -233,7 +233,7 @@ namespace WindBot.Game.AI.Decks
IList<ClientCard> materials1 = Enemy.Graveyard;
foreach (ClientCard card in materials1)
{
if (card.Id == (int)CardId.AleisterTheInvoker)
if (card.Id == CardId.AleisterTheInvoker)
{
AI.SelectNextCard(card);
return;
......@@ -241,28 +241,28 @@ namespace WindBot.Game.AI.Decks
}
foreach (ClientCard card in materials0)
{
if (card.Id == (int)CardId.AleisterTheInvoker)
if (card.Id == CardId.AleisterTheInvoker)
{
AI.SelectNextCard(card);
return;
}
}
AI.SelectNextCard((int)CardId.AleisterTheInvoker);
AI.SelectNextCard(CardId.AleisterTheInvoker);
}
private bool ChakanineSummon()
{
if (Bot.HasInMonstersZone((int)CardId.Ratpier) && !ChakanineSpsummoned)
if (Bot.HasInMonstersZone(CardId.Ratpier) && !ChakanineSpsummoned)
{
AI.SelectCard((int)CardId.Ratpier);
AI.SelectCard(CardId.Ratpier);
AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence);
ChakanineSpsummoned = true;
return true;
}
if (Bot.HasInMonstersZone((int)CardId.Broadbull) && !ChakanineSpsummoned)
if (Bot.HasInMonstersZone(CardId.Broadbull) && !ChakanineSpsummoned)
{
AI.SelectCard((int)CardId.Broadbull);
AI.SelectCard(CardId.Broadbull);
AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence);
ChakanineSpsummoned = true;
......@@ -273,21 +273,21 @@ namespace WindBot.Game.AI.Decks
private bool ChakanineEffect()
{
if (Bot.HasInGraveyard((int)CardId.Whiptail) || Bot.HasInGraveyard((int)CardId.Thoroughblade))
if (Bot.HasInGraveyard(CardId.Whiptail) || Bot.HasInGraveyard(CardId.Thoroughblade))
{
AI.SelectCard(new[]
{
(int)CardId.Broadbull,
(int)CardId.Tigermortar,
(int)CardId.Chakanine,
(int)CardId.Thoroughblade,
(int)CardId.Ratpier,
(int)CardId.Whiptail
CardId.Broadbull,
CardId.Tigermortar,
CardId.Chakanine,
CardId.Thoroughblade,
CardId.Ratpier,
CardId.Whiptail
});
AI.SelectNextCard(new[]
{
(int)CardId.Whiptail,
(int)CardId.Thoroughblade
CardId.Whiptail,
CardId.Thoroughblade
});
return true;
}
......@@ -296,38 +296,38 @@ namespace WindBot.Game.AI.Decks
private bool TigermortarSummon()
{
if (Bot.HasInMonstersZone((int)CardId.Chakanine) && !TigermortarSpsummoned)
if (Bot.HasInMonstersZone(CardId.Chakanine) && !TigermortarSpsummoned)
{
AI.SelectCard((int)CardId.Chakanine);
AI.SelectCard(CardId.Chakanine);
AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence);
TigermortarSpsummoned = true;
return true;
}
if (Bot.HasInMonstersZone((int)CardId.Ratpier) && !TigermortarSpsummoned)
if (Bot.HasInMonstersZone(CardId.Ratpier) && !TigermortarSpsummoned)
{
AI.SelectCard((int)CardId.Ratpier);
AI.SelectCard(CardId.Ratpier);
AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence);
TigermortarSpsummoned = true;
return true;
}
if (Bot.HasInMonstersZone((int)CardId.Thoroughblade) && !TigermortarSpsummoned
if (Bot.HasInMonstersZone(CardId.Thoroughblade) && !TigermortarSpsummoned
&& Bot.HasInGraveyard(new List<int>
{
(int)CardId.Whiptail,
(int)CardId.Ratpier
CardId.Whiptail,
CardId.Ratpier
}))
{
AI.SelectCard((int)CardId.Thoroughblade);
AI.SelectCard(CardId.Thoroughblade);
AI.SelectYesNo(true);
TigermortarSpsummoned = true;
return true;
}
if (Bot.HasInMonstersZone((int)CardId.Whiptail) && !TigermortarSpsummoned
&& Bot.HasInGraveyard((int)CardId.Ratpier))
if (Bot.HasInMonstersZone(CardId.Whiptail) && !TigermortarSpsummoned
&& Bot.HasInGraveyard(CardId.Ratpier))
{
AI.SelectCard((int)CardId.Whiptail);
AI.SelectCard(CardId.Whiptail);
AI.SelectYesNo(true);
TigermortarSpsummoned = true;
return true;
......@@ -337,48 +337,48 @@ namespace WindBot.Game.AI.Decks
private bool TigermortarEffect()
{
//if (Card.HasXyzMaterial((int)CardId.Ratpier) || !Bot.HasInGraveyard((int)CardId.Ratpier))
//if (Card.HasXyzMaterial(CardId.Ratpier) || !Bot.HasInGraveyard(CardId.Ratpier))
// return false;
AI.SelectCard((int)CardId.Chakanine);
AI.SelectNextCard((int)CardId.Tigermortar);
AI.SelectCard(CardId.Chakanine);
AI.SelectNextCard(CardId.Tigermortar);
AI.SelectThirdCard(new[]
{
(int)CardId.Ratpier,
(int)CardId.Whiptail,
(int)CardId.Thoroughblade
CardId.Ratpier,
CardId.Whiptail,
CardId.Thoroughblade
});
return true;
}
private bool BroadbullSummon()
{
if (Bot.HasInMonstersZone((int)CardId.Tigermortar) && !BroadbullSpsummoned)
if (Bot.HasInMonstersZone(CardId.Tigermortar) && !BroadbullSpsummoned)
{
AI.SelectCard((int)CardId.Tigermortar);
AI.SelectCard(CardId.Tigermortar);
AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence);
BroadbullSpsummoned = true;
return true;
}
if (Bot.HasInMonstersZone((int)CardId.Chakanine) && !BroadbullSpsummoned)
if (Bot.HasInMonstersZone(CardId.Chakanine) && !BroadbullSpsummoned)
{
AI.SelectCard((int)CardId.Chakanine);
AI.SelectCard(CardId.Chakanine);
AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence);
BroadbullSpsummoned = true;
return true;
}
if (Bot.HasInMonstersZone((int)CardId.Ratpier) && !BroadbullSpsummoned)
if (Bot.HasInMonstersZone(CardId.Ratpier) && !BroadbullSpsummoned)
{
AI.SelectCard((int)CardId.Ratpier);
AI.SelectCard(CardId.Ratpier);
AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence);
BroadbullSpsummoned = true;
return true;
}
if (Bot.HasInMonstersZone((int)CardId.Thoroughblade) && !BroadbullSpsummoned)
if (Bot.HasInMonstersZone(CardId.Thoroughblade) && !BroadbullSpsummoned)
{
AI.SelectCard((int)CardId.Thoroughblade);
AI.SelectCard(CardId.Thoroughblade);
AI.SelectYesNo(true);
AI.SelectPosition(CardPosition.FaceUpDefence);
BroadbullSpsummoned = true;
......@@ -391,16 +391,16 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.Tigermortar,
(int)CardId.Chakanine,
(int)CardId.Drident,
(int)CardId.AleisterTheInvoker,
(int)CardId.PhotonThrasher
CardId.Tigermortar,
CardId.Chakanine,
CardId.Drident,
CardId.AleisterTheInvoker,
CardId.PhotonThrasher
});
if (Bot.HasInHand((int)CardId.Whiptail) && !Bot.HasInHand((int)CardId.Ratpier))
AI.SelectNextCard((int)CardId.Ratpier);
if (Bot.HasInHand(CardId.Whiptail) && !Bot.HasInHand(CardId.Ratpier))
AI.SelectNextCard(CardId.Ratpier);
else
AI.SelectNextCard((int)CardId.Whiptail);
AI.SelectNextCard(CardId.Whiptail);
return true;
}
......@@ -410,10 +410,10 @@ namespace WindBot.Game.AI.Decks
AI.SelectPosition(CardPosition.FaceUpDefence);
AI.SelectCard(new[]
{
(int)CardId.Ratpier,
(int)CardId.PhotonThrasher,
(int)CardId.Whiptail,
(int)CardId.AleisterTheInvoker
CardId.Ratpier,
CardId.PhotonThrasher,
CardId.Whiptail,
CardId.AleisterTheInvoker
});
return true;
}
......@@ -422,17 +422,17 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.Broadbull,
(int)CardId.Tigermortar,
(int)CardId.Chakanine,
(int)CardId.Thoroughblade
CardId.Broadbull,
CardId.Tigermortar,
CardId.Chakanine,
CardId.Thoroughblade
});
return true;
}
private bool RatpierMaterialEffect()
{
if (ActivateDescription == AI.Utils.GetStringId((int)CardId.Ratpier, 1))
if (ActivateDescription == AI.Utils.GetStringId(CardId.Ratpier, 1))
{
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
......@@ -450,7 +450,7 @@ namespace WindBot.Game.AI.Decks
List<ClientCard> monsters = Bot.GetMonsters();
foreach (ClientCard monster in monsters)
{
if (monster.IsFaceup() && monster.Id == (int)CardId.Drident && !monster.HasXyzMaterial())
if (monster.IsFaceup() && monster.Id == CardId.Drident && !monster.HasXyzMaterial())
{
target = monster;
break;
......@@ -460,7 +460,7 @@ namespace WindBot.Game.AI.Decks
{
foreach (ClientCard monster in monsters)
{
if (monster.IsFaceup() && monster.Type == (int)CardType.Xyz && monster.Id != (int)CardId.DaigustoEmeral && !monster.HasXyzMaterial())
if (monster.IsFaceup() && monster.Type == (int)CardType.Xyz && monster.Id != CardId.DaigustoEmeral && !monster.HasXyzMaterial())
{
target = monster;
break;
......@@ -471,7 +471,7 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.Drident
CardId.Drident
});
}
WhiptailEffectCount++;
......@@ -482,9 +482,9 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.ZoodiacCombo,
(int)CardId.Thoroughblade,
(int)CardId.ZoodiacBarrage
CardId.ZoodiacCombo,
CardId.Thoroughblade,
CardId.ZoodiacBarrage
});
return true;
}
......@@ -498,12 +498,12 @@ namespace WindBot.Game.AI.Decks
return false;
AI.SelectCard(new[]
{
(int)CardId.Broadbull,
(int)CardId.Tigermortar,
(int)CardId.Chakanine,
(int)CardId.Thoroughblade,
(int)CardId.Ratpier,
(int)CardId.Whiptail
CardId.Broadbull,
CardId.Tigermortar,
CardId.Chakanine,
CardId.Thoroughblade,
CardId.Ratpier,
CardId.Whiptail
});
AI.SelectNextCard(target);
return true;
......@@ -518,29 +518,29 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.Ratpier,
(int)CardId.AleisterTheInvoker,
(int)CardId.Whiptail
CardId.Ratpier,
CardId.AleisterTheInvoker,
CardId.Whiptail
});
AI.SelectNextCard(new[]
{
(int)CardId.Ratpier,
(int)CardId.DaigustoEmeral
CardId.Ratpier,
CardId.DaigustoEmeral
});
return true;
}
private bool FireFormationTenkiEffect()
{
if (Bot.HasInHand((int)CardId.ZoodiacBarrage)
|| Bot.HasInSpellZone((int)CardId.ZoodiacBarrage)
|| Bot.HasInHand((int)CardId.Ratpier))
if (Bot.HasInHand(CardId.ZoodiacBarrage)
|| Bot.HasInSpellZone(CardId.ZoodiacBarrage)
|| Bot.HasInHand(CardId.Ratpier))
{
AI.SelectCard((int)CardId.Whiptail);
AI.SelectCard(CardId.Whiptail);
}
else
{
AI.SelectCard((int)CardId.Ratpier);
AI.SelectCard(CardId.Ratpier);
}
AI.SelectYesNo(true);
return true;
......@@ -551,20 +551,20 @@ namespace WindBot.Game.AI.Decks
IList<ClientCard> spells = Bot.GetSpells();
foreach (ClientCard spell in spells)
{
if (spell.Id == (int)CardId.ZoodiacBarrage && !Card.Equals(spell))
if (spell.Id == CardId.ZoodiacBarrage && !Card.Equals(spell))
return false;
}
AI.SelectCard(new[]
{
(int)CardId.FireFormationTenki,
(int)CardId.MagicalMeltdown,
(int)CardId.ZoodiacBarrage
CardId.FireFormationTenki,
CardId.MagicalMeltdown,
CardId.ZoodiacBarrage
});
AI.SelectNextCard(new[]
{
(int)CardId.Ratpier,
(int)CardId.Whiptail,
(int)CardId.Thoroughblade
CardId.Ratpier,
CardId.Whiptail,
CardId.Thoroughblade
});
AI.SelectPosition(CardPosition.FaceUpDefence);
return true;
......@@ -576,12 +576,12 @@ namespace WindBot.Game.AI.Decks
return false;
if (Card.Location != CardLocation.Grave)
{
AI.SelectCard((int)CardId.Drident);
AI.SelectCard(CardId.Drident);
AI.SelectNextCard(new[]
{
(int)CardId.Whiptail,
(int)CardId.Ratpier,
(int)CardId.Thoroughblade
CardId.Whiptail,
CardId.Ratpier,
CardId.Thoroughblade
});
}
return true;
......@@ -591,21 +591,21 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(new[]
{
(int)CardId.Ratpier,
(int)CardId.Whiptail,
(int)CardId.InvokedMechaba,
(int)CardId.JizukirutheStarDestroyingKaiju,
(int)CardId.InvokedMagellanica,
(int)CardId.Tigermortar,
(int)CardId.Chakanine,
(int)CardId.Broadbull
CardId.Ratpier,
CardId.Whiptail,
CardId.InvokedMechaba,
CardId.JizukirutheStarDestroyingKaiju,
CardId.InvokedMagellanica,
CardId.Tigermortar,
CardId.Chakanine,
CardId.Broadbull
});
return true;
}
private bool MonsterRepos()
{
if (Card.Id == (int)CardId.NumberS39UtopiatheLightning)
if (Card.Id == CardId.NumberS39UtopiatheLightning)
return false;
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