Commit f379e16a authored by handsomekiwi's avatar handsomekiwi Committed by mercury233

update LightswornShaddoldinosour and ChainBurn deck (#43)

parent 3f231833
...@@ -354,7 +354,12 @@ namespace WindBot.Game.AI.Decks ...@@ -354,7 +354,12 @@ namespace WindBot.Game.AI.Decks
} }
expected_blood = (Enemy.GetMonsterCount() * 500 * just_count + Enemy.GetFieldHandCount() * 200 * barrel_count + Enemy.GetFieldCount() * 300 * blast_count); expected_blood = (Enemy.GetMonsterCount() * 500 * just_count + Enemy.GetFieldHandCount() * 200 * barrel_count + Enemy.GetFieldCount() * 300 * blast_count);
//if (Enemy.LifePoints <= expected_blood && Duel.Player == 1) one_turn_kill = true; if (Enemy.LifePoints <= expected_blood && Duel.Player == 1)
{
Logger.DebugWriteLine(" one_turn_kill");
one_turn_kill = true;
}
expected_blood = 0;
if (greed_count >= 2) greed_count = 1; if (greed_count >= 2) greed_count = 1;
if (blast_count >= 2) blast_count = 1; if (blast_count >= 2) blast_count = 1;
if (just_count >= 2) just_count = 1; if (just_count >= 2) just_count = 1;
...@@ -370,8 +375,12 @@ namespace WindBot.Game.AI.Decks ...@@ -370,8 +375,12 @@ namespace WindBot.Game.AI.Decks
//if (currentchain >= 3 && Duel.Player == 1) drawfirst = true; //if (currentchain >= 3 && Duel.Player == 1) drawfirst = true;
currentchain = Duel.CurrentChain.Count+ blast_count + just_count+barrel_count; currentchain = Duel.CurrentChain.Count+ blast_count + just_count+barrel_count;
expected_blood = (Enemy.GetMonsterCount() * 500 * just_count + Enemy.GetFieldHandCount() * 200 * barrel_count + Enemy.GetFieldCount() * 300 * blast_count+(currentchain+1)*400); expected_blood = (Enemy.GetMonsterCount() * 500 * just_count + Enemy.GetFieldHandCount() * 200 * barrel_count + Enemy.GetFieldCount() * 300 * blast_count+(currentchain+1)*400);
//if (Enemy.LifePoints <= expected_blood && Duel.Player==1) one_turn_kill_1 = true;
/*if (!one_turn_kill && Enemy.LifePoints <= expected_blood && Duel.Player == 1)
{
Logger.DebugWriteLine(" one_turn_kill_1");
one_turn_kill_1 = true;
}*/
} }
...@@ -411,7 +420,6 @@ namespace WindBot.Game.AI.Decks ...@@ -411,7 +420,6 @@ namespace WindBot.Game.AI.Decks
{ {
if (ActivateDescription == -1) if (ActivateDescription == -1)
{ {
AI.SelectCard(AbouluteKingBackJack_List_1()); AI.SelectCard(AbouluteKingBackJack_List_1());
AI.SelectNextCard(AbouluteKingBackJack_List_2()); AI.SelectNextCard(AbouluteKingBackJack_List_2());
} }
...@@ -441,7 +449,7 @@ namespace WindBot.Game.AI.Decks ...@@ -441,7 +449,7 @@ namespace WindBot.Game.AI.Decks
private bool ThreateningRoareff() private bool ThreateningRoareff()
{ {
if (drawfirst) return true; if (drawfirst) return true;
if (must_chain()) return DefaultUniqueTrap(); if (DefaultOnBecomeTarget()) return DefaultUniqueTrap();
if (prevent_used || Duel.Phase != DuelPhase.BattleStart) return false; if (prevent_used || Duel.Phase != DuelPhase.BattleStart) return false;
prevent_used = true; prevent_used = true;
return DefaultUniqueTrap(); return DefaultUniqueTrap();
...@@ -459,7 +467,7 @@ namespace WindBot.Game.AI.Decks ...@@ -459,7 +467,7 @@ namespace WindBot.Game.AI.Decks
Linkuribohused = false; Linkuribohused = false;
return true; return true;
} }
if (must_chain()) if (DefaultOnBecomeTarget())
{ {
Linkuribohused = false; Linkuribohused = false;
return DefaultUniqueTrap(); return DefaultUniqueTrap();
...@@ -510,7 +518,7 @@ namespace WindBot.Game.AI.Decks ...@@ -510,7 +518,7 @@ namespace WindBot.Game.AI.Decks
} }
bool Demiseused = AI.Utils.ChainContainsCard(CardId.CardOfDemise); bool Demiseused = AI.Utils.ChainContainsCard(CardId.CardOfDemise);
if (drawfirst) return DefaultUniqueTrap(); if (drawfirst) return DefaultUniqueTrap();
if (must_chain() && count > 1) return true; if (DefaultOnBecomeTarget() && count > 1) return true;
if (Demiseused) return false; if (Demiseused) return false;
if (count > 1) return true; if (count > 1) return true;
if (Bot.LifePoints <= 2000) return true; if (Bot.LifePoints <= 2000) return true;
...@@ -522,7 +530,7 @@ namespace WindBot.Game.AI.Decks ...@@ -522,7 +530,7 @@ namespace WindBot.Game.AI.Decks
if (drawfirst) return DefaultUniqueTrap(); if (drawfirst) return DefaultUniqueTrap();
if (one_turn_kill_1) return DefaultUniqueTrap(); if (one_turn_kill_1) return DefaultUniqueTrap();
if (one_turn_kill) return DefaultUniqueTrap(); if (one_turn_kill) return DefaultUniqueTrap();
if (must_chain()) return true; if (DefaultOnBecomeTarget()) return true;
int count = Enemy.GetFieldHandCount(); int count = Enemy.GetFieldHandCount();
if (Enemy.LifePoints < count * 200) return true; if (Enemy.LifePoints < count * 200) return true;
if (count >= 8) return true; if (count >= 8) return true;
...@@ -533,7 +541,7 @@ namespace WindBot.Game.AI.Decks ...@@ -533,7 +541,7 @@ namespace WindBot.Game.AI.Decks
if (drawfirst) return DefaultUniqueTrap(); if (drawfirst) return DefaultUniqueTrap();
if (one_turn_kill_1) return DefaultUniqueTrap(); if (one_turn_kill_1) return DefaultUniqueTrap();
if (one_turn_kill) return DefaultUniqueTrap(); if (one_turn_kill) return DefaultUniqueTrap();
if (must_chain()) return true; if (DefaultOnBecomeTarget()) return true;
int count = Enemy.GetFieldCount(); int count = Enemy.GetFieldCount();
if (Enemy.LifePoints < count * 300) return true; if (Enemy.LifePoints < count * 300) return true;
if (count >= 5) return true; if (count >= 5) return true;
...@@ -551,7 +559,7 @@ namespace WindBot.Game.AI.Decks ...@@ -551,7 +559,7 @@ namespace WindBot.Game.AI.Decks
if (drawfirst) return DefaultUniqueTrap(); if (drawfirst) return DefaultUniqueTrap();
if (one_turn_kill_1) return DefaultUniqueTrap(); if (one_turn_kill_1) return DefaultUniqueTrap();
if (one_turn_kill) return DefaultUniqueTrap(); if (one_turn_kill) return DefaultUniqueTrap();
if (must_chain()) return true; if (DefaultOnBecomeTarget()) return true;
int count = Enemy.GetMonsterCount(); int count = Enemy.GetMonsterCount();
if (Enemy.LifePoints <= count * 500) return true; if (Enemy.LifePoints <= count * 500) return true;
if (Bot.HasInSpellZone(CardId.OjamaTrio) && count <= 2 && count >= 1) if (Bot.HasInSpellZone(CardId.OjamaTrio) && count <= 2 && count >= 1)
...@@ -566,7 +574,7 @@ namespace WindBot.Game.AI.Decks ...@@ -566,7 +574,7 @@ namespace WindBot.Game.AI.Decks
{ {
if (drawfirst) return true; if (drawfirst) return true;
if (must_chain()) return true; if (DefaultOnBecomeTarget()) return true;
int chain = Duel.CurrentChain.Count; int chain = Duel.CurrentChain.Count;
if (strike_count >= 2 && chain >= 2) return true; if (strike_count >= 2 && chain >= 2) return true;
if (Enemy.LifePoints <= (chain + 1) * 400) return true; if (Enemy.LifePoints <= (chain + 1) * 400) return true;
...@@ -576,7 +584,7 @@ namespace WindBot.Game.AI.Decks ...@@ -576,7 +584,7 @@ namespace WindBot.Game.AI.Decks
private bool BalanceOfJudgmenteff() private bool BalanceOfJudgmenteff()
{ {
if (must_chain()) return true; if (DefaultOnBecomeTarget()) return true;
int count = (Enemy.GetFieldCount() - Bot.GetFieldHandCount()); int count = (Enemy.GetFieldCount() - Bot.GetFieldHandCount());
if ( count>= 2)return true; if ( count>= 2)return true;
return false; return false;
...@@ -628,7 +636,10 @@ namespace WindBot.Game.AI.Decks ...@@ -628,7 +636,10 @@ namespace WindBot.Game.AI.Decks
newlist.Add(newmonster); newlist.Add(newmonster);
} }
if (!Linkuribohused) return false; if (!Linkuribohused) return false;
if(Enemy.BattlingMonster!=null)
{
if (Enemy.BattlingMonster.Attack > 1800 && Bot.HasInSpellZone(CardId.MagicCylinder)) return false; if (Enemy.BattlingMonster.Attack > 1800 && Bot.HasInSpellZone(CardId.MagicCylinder)) return false;
}
if (GetTotalATK(newlist) >= 3000 && Bot.HasInSpellZone(CardId.BlazingMirrorForce)) return false; if (GetTotalATK(newlist) >= 3000 && Bot.HasInSpellZone(CardId.BlazingMirrorForce)) return false;
if (AI.Utils.GetLastChainCard() == null) return true; if (AI.Utils.GetLastChainCard() == null) return true;
if (AI.Utils.GetLastChainCard().Id == CardId.Linkuriboh)return false; if (AI.Utils.GetLastChainCard().Id == CardId.Linkuriboh)return false;
......
...@@ -7,7 +7,7 @@ using WindBot.Game.AI; ...@@ -7,7 +7,7 @@ using WindBot.Game.AI;
namespace WindBot.Game.AI.Decks namespace WindBot.Game.AI.Decks
{ {
// NOT FINISHED YET // NOT FINISHED YET
[Deck("LightswornShaddoldinosour", "AI_LightswornShaddoldinosour", "ver0.1")] [Deck("LightswornShaddoldinosour", "AI_LightswornShaddoldinosour", "ver0.5")]
public class LightswornShaddoldinosour : DefaultExecutor public class LightswornShaddoldinosour : DefaultExecutor
{ {
public class CardId public class CardId
...@@ -46,7 +46,7 @@ namespace WindBot.Game.AI.Decks ...@@ -46,7 +46,7 @@ namespace WindBot.Game.AI.Decks
public const int MonsterReborn = 83764718; public const int MonsterReborn = 83764718;
public const int ChargeOfTheLightBrigade = 94886282; public const int ChargeOfTheLightBrigade = 94886282;
public const int InterruptedKaijuSlumber = 99330325; public const int InterruptedKaijuSlumber = 99330325;
public const int ElShaddollFusion = 6417578; //public const int ElShaddollFusion = 6417578;
//trap //trap
public const int infiniteTransience = 10045474; public const int infiniteTransience = 10045474;
...@@ -77,7 +77,6 @@ namespace WindBot.Game.AI.Decks ...@@ -77,7 +77,6 @@ namespace WindBot.Game.AI.Decks
: base(ai, duel) : base(ai, duel)
{ {
//counter //counter
AddExecutor(ExecutorType.Activate, CardId.GhostOgre, Hand_act_eff); AddExecutor(ExecutorType.Activate, CardId.GhostOgre, Hand_act_eff);
AddExecutor(ExecutorType.Activate, CardId.AshBlossom, Hand_act_eff); AddExecutor(ExecutorType.Activate, CardId.AshBlossom, Hand_act_eff);
AddExecutor(ExecutorType.Activate, CardId.MaxxC,MaxxC); AddExecutor(ExecutorType.Activate, CardId.MaxxC,MaxxC);
...@@ -91,10 +90,8 @@ namespace WindBot.Game.AI.Decks ...@@ -91,10 +90,8 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.PotOfAvarice, PotofAvariceeff); AddExecutor(ExecutorType.Activate, CardId.PotOfAvarice, PotofAvariceeff);
AddExecutor(ExecutorType.Activate, CardId.ChargeOfTheLightBrigade, ChargeOfTheLightBrigadeEffect); AddExecutor(ExecutorType.Activate, CardId.ChargeOfTheLightBrigade, ChargeOfTheLightBrigadeEffect);
AddExecutor(ExecutorType.Activate, CardId.FoolishBurial, FoolishBurialEffect); AddExecutor(ExecutorType.Activate, CardId.FoolishBurial, FoolishBurialEffect);
AddExecutor(ExecutorType.Activate, CardId.InterruptedKaijuSlumber, DefaultInterruptedKaijuSlumber); AddExecutor(ExecutorType.Activate, CardId.InterruptedKaijuSlumber, InterruptedKaijuSlumbereff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollFusion, ShaddollFusioneff); AddExecutor(ExecutorType.Activate, CardId.ShaddollFusion, ShaddollFusioneff);
//Reborn
AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, RebornEffect);
//Normal Summon //Normal Summon
AddExecutor(ExecutorType.Summon, CardId.Raiden); AddExecutor(ExecutorType.Summon, CardId.Raiden);
AddExecutor(ExecutorType.Activate, CardId.Raiden); AddExecutor(ExecutorType.Activate, CardId.Raiden);
...@@ -102,15 +99,14 @@ namespace WindBot.Game.AI.Decks ...@@ -102,15 +99,14 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.KeeperOfDragonicMagic, KeeperOfDragonicMagiceff); AddExecutor(ExecutorType.Activate, CardId.KeeperOfDragonicMagic, KeeperOfDragonicMagiceff);
AddExecutor(ExecutorType.MonsterSet, CardId.ShaddollSquamata); AddExecutor(ExecutorType.MonsterSet, CardId.ShaddollSquamata);
AddExecutor(ExecutorType.MonsterSet, CardId.GlowUpBulb); AddExecutor(ExecutorType.MonsterSet, CardId.GlowUpBulb);
AddExecutor(ExecutorType.Summon, CardId.Lumina, Luminasummon);
AddExecutor(ExecutorType.MonsterSet, CardId.ShaddollHedgehog); AddExecutor(ExecutorType.MonsterSet, CardId.ShaddollHedgehog);
AddExecutor(ExecutorType.MonsterSet, CardId.ShaddollDragon); AddExecutor(ExecutorType.MonsterSet, CardId.ShaddollDragon);
AddExecutor(ExecutorType.Summon, CardId.FairyTailSnow,FairyTailSnowsummon); AddExecutor(ExecutorType.Summon, CardId.FairyTailSnow,FairyTailSnowsummon);
AddExecutor(ExecutorType.Activate, CardId.FairyTailSnow, FairyTailSnoweff); AddExecutor(ExecutorType.Activate, CardId.FairyTailSnow, FairyTailSnoweff);
AddExecutor(ExecutorType.Summon, CardId.Lumina); AddExecutor(ExecutorType.Activate, CardId.Lumina, Luminaeff);
AddExecutor(ExecutorType.Activate, CardId.Lumina);
//activate //activate
AddExecutor(ExecutorType.Activate, CardId.GlowUpBulb, GlowUpBulbeff); AddExecutor(ExecutorType.Activate, CardId.GlowUpBulb, GlowUpBulbeff);
AddExecutor(ExecutorType.Activate, CardId.CrystronNeedlefiber, CrystronNeedlefibereff);
AddExecutor(ExecutorType.Activate, CardId.TG_WonderMagician); AddExecutor(ExecutorType.Activate, CardId.TG_WonderMagician);
AddExecutor(ExecutorType.Activate, CardId.CoralDragon, CoralDragoneff); AddExecutor(ExecutorType.Activate, CardId.CoralDragon, CoralDragoneff);
AddExecutor(ExecutorType.Activate, CardId.RedWyvern, RedWyverneff); AddExecutor(ExecutorType.Activate, CardId.RedWyvern, RedWyverneff);
...@@ -120,39 +116,54 @@ namespace WindBot.Game.AI.Decks ...@@ -120,39 +116,54 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.Michael, Michaeleff); AddExecutor(ExecutorType.Activate, CardId.Michael, Michaeleff);
AddExecutor(ExecutorType.Activate, CardId.ScarlightRedDragon, ScarlightRedDragoneff); AddExecutor(ExecutorType.Activate, CardId.ScarlightRedDragon, ScarlightRedDragoneff);
//Sp Summon //Sp Summon
//AddExecutor(ExecutorType.SpSummon, CardId.CrystronNeedlefiber, CrystronNeedlefibersp);
AddExecutor(ExecutorType.Activate, CardId.CrystronNeedlefiber, CrystronNeedlefibereff);
AddExecutor(ExecutorType.SpSummon, CardId.UltimateConductorTytanno, UltimateConductorTytannosp); AddExecutor(ExecutorType.SpSummon, CardId.UltimateConductorTytanno, UltimateConductorTytannosp);
AddExecutor(ExecutorType.Activate, CardId.UltimateConductorTytanno, UltimateConductorTytannoeff); AddExecutor(ExecutorType.Activate, CardId.UltimateConductorTytanno, UltimateConductorTytannoeff);
AddExecutor(ExecutorType.Activate, CardId.DoubleEvolutionPill, DoubleEvolutionPilleff); AddExecutor(ExecutorType.Activate, CardId.DoubleEvolutionPill, DoubleEvolutionPilleff);
//extra
AddExecutor(ExecutorType.SpSummon, CardId.CrystalWingSynchroDragon);
AddExecutor(ExecutorType.Activate, CardId.CrystalWingSynchroDragon, CrystalWingSynchroDragoneff);
AddExecutor(ExecutorType.SpSummon, CardId.ScarlightRedDragon, ScarlightRedDragonsp);
AddExecutor(ExecutorType.Activate, CardId.ScarlightRedDragon, ScarlightRedDragoneff);
AddExecutor(ExecutorType.SpSummon, CardId.Michael, Michaelsp);
AddExecutor(ExecutorType.Activate, CardId.Michael, Michaeleff);
AddExecutor(ExecutorType.SpSummon, CardId.RedWyvern, RedWyvernsp);
AddExecutor(ExecutorType.Activate, CardId.RedWyvern, RedWyverneff);
AddExecutor(ExecutorType.SpSummon, CardId.MinervaTheExalte); AddExecutor(ExecutorType.SpSummon, CardId.MinervaTheExalte);
AddExecutor(ExecutorType.Activate, CardId.MinervaTheExalte, MinervaTheExaltedEffect); AddExecutor(ExecutorType.Activate, CardId.MinervaTheExalte, MinervaTheExaltedEffect);
AddExecutor(ExecutorType.SpSummon, CardId.CrystronNeedlefiber, CrystronNeedlefibersp);
//Kaiju
AddExecutor(ExecutorType.SpSummon, CardId.GamecieltheSeaTurtleKaiju, DefaultKaijuSpsummon); AddExecutor(ExecutorType.SpSummon, CardId.GamecieltheSeaTurtleKaiju, DefaultKaijuSpsummon);
AddExecutor(ExecutorType.SpSummon, CardId.RadiantheMultidimensionalKaiju, RadiantheMultidimensionalKaijusp);
AddExecutor(ExecutorType.SpSummon, CardId.DogorantheMadFlameKaiju, DogorantheMadFlameKaijusp);
//Reborn
AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, Reborneff);
//activate chain //activate chain
AddExecutor(ExecutorType.Activate, CardId.OvertexCoatls, OvertexCoatlseff); AddExecutor(ExecutorType.Activate, CardId.OvertexCoatls, OvertexCoatlseff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollBeast); AddExecutor(ExecutorType.Activate, CardId.ShaddollCore, ShaddollCoreeff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollBeast, ShaddollBeasteff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollFalco, ShaddollFalcoeff); AddExecutor(ExecutorType.Activate, CardId.ShaddollFalco, ShaddollFalcoeff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollSquamata, ShaddollSquamataeff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollDragon, ShaddollDragoneff); AddExecutor(ExecutorType.Activate, CardId.ShaddollDragon, ShaddollDragoneff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollHedgehog, ShaddollHedgehogeff); AddExecutor(ExecutorType.Activate, CardId.ShaddollHedgehog, ShaddollHedgehogeff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollSquamata, ShaddollSquamataeff);
AddExecutor(ExecutorType.Activate, CardId.GiantRex); AddExecutor(ExecutorType.Activate, CardId.GiantRex);
AddExecutor(ExecutorType.Activate, CardId.ElShaddollConstruct, ElShaddollConstructeff); AddExecutor(ExecutorType.Activate, CardId.ElShaddollConstruct, ElShaddollConstructeff);
AddExecutor(ExecutorType.Activate, CardId.ElShaddollGrysra, ElShaddollGrysraeff); AddExecutor(ExecutorType.Activate, CardId.ElShaddollGrysra, ElShaddollGrysraeff);
AddExecutor(ExecutorType.Activate, CardId.ElShaddollShekhinaga, ElShaddollShekhinagaeff); AddExecutor(ExecutorType.Activate, CardId.ElShaddollShekhinaga, ElShaddollShekhinagaeff);
AddExecutor(ExecutorType.Activate, CardId.ElShaddollWinda); AddExecutor(ExecutorType.Activate, CardId.ElShaddollWinda);
//spellset //spellset
AddExecutor(ExecutorType.SpellSet, CardId.MonsterReborn, spellset); AddExecutor(ExecutorType.SpellSet, CardId.ThatGrassLooksgreener, SpellSetZone);
AddExecutor(ExecutorType.SpellSet, CardId.PotOfAvarice, spellset); AddExecutor(ExecutorType.SpellSet, SpellSetZone);
AddExecutor(ExecutorType.SpellSet, CardId.ThatGrassLooksgreener, spellset);
//trapset //trapset
AddExecutor(ExecutorType.SpellSet, CardId.LostWind, TrapSetWhenZoneFree); AddExecutor(ExecutorType.SpellSet, CardId.LostWind);
AddExecutor(ExecutorType.SpellSet, CardId.SinisterShadowGames, TrapSetWhenZoneFree); AddExecutor(ExecutorType.SpellSet, CardId.SinisterShadowGames);
AddExecutor(ExecutorType.SpellSet, CardId.ShaddollCore); AddExecutor(ExecutorType.SpellSet, CardId.ShaddollCore);
AddExecutor(ExecutorType.SpellSet, CardId.infiniteTransience, SetIsFieldEmpty); AddExecutor(ExecutorType.SpellSet, CardId.infiniteTransience, SetIsFieldEmpty);
//trap activate //trap activate
AddExecutor(ExecutorType.Activate, CardId.LostWind, LostWindeff); AddExecutor(ExecutorType.Activate, CardId.LostWind, LostWindeff);
AddExecutor(ExecutorType.Activate, CardId.SinisterShadowGames, SinisterShadowGameseff); AddExecutor(ExecutorType.Activate, CardId.SinisterShadowGames, SinisterShadowGameseff);
AddExecutor(ExecutorType.Activate, CardId.ShaddollCore, ShaddollCoreeff);
AddExecutor(ExecutorType.Repos, MonsterRepos); AddExecutor(ExecutorType.Repos, MonsterRepos);
} }
public int[] all_List() public int[] all_List()
...@@ -191,7 +202,7 @@ namespace WindBot.Game.AI.Decks ...@@ -191,7 +202,7 @@ namespace WindBot.Game.AI.Decks
CardId.MonsterReborn, CardId.MonsterReborn,
CardId.ChargeOfTheLightBrigade, CardId.ChargeOfTheLightBrigade,
CardId.InterruptedKaijuSlumber, CardId.InterruptedKaijuSlumber,
CardId.ElShaddollFusion, //CardId.ElShaddollFusion,
CardId.infiniteTransience, CardId.infiniteTransience,
CardId.LostWind, CardId.LostWind,
...@@ -207,36 +218,90 @@ namespace WindBot.Game.AI.Decks ...@@ -207,36 +218,90 @@ namespace WindBot.Game.AI.Decks
{ {
CardId.GlowUpBulb, CardId.GlowUpBulb,
CardId.PlaguespreaderZombie, CardId.PlaguespreaderZombie,
CardId.InterruptedKaijuSlumber,
CardId.ChargeOfTheLightBrigade, CardId.ChargeOfTheLightBrigade,
CardId.FoolishBurial,
CardId.HarpiesFeatherDuster,
CardId.ThatGrassLooksgreener, CardId.ThatGrassLooksgreener,
CardId.HarpiesFeatherDuster,
CardId.FairyTailSnow, CardId.FairyTailSnow,
CardId.GiantRex, CardId.GiantRex,
CardId.Lumina, CardId.Lumina,
CardId.OvertexCoatls, CardId.OvertexCoatls,
CardId.InterruptedKaijuSlumber,
CardId.FoolishBurial,
}; };
} }
int Ultimate_ss = 0; int Ultimate_ss = 0;
int Enemy_atk = 0;
bool Pillused = false; bool Pillused = false;
bool CrystronNeedlefibereff_used = false; bool CrystronNeedlefibereff_used = false;
bool OvertexCoatlseff_used = false; bool OvertexCoatlseff_used = false;
bool ShaddollBeast_used = false;
bool ShaddollFalco_used = false;
bool ShaddollSquamata_used = false;
bool ShaddollDragon_used = false;
bool ShaddollHedgehog_used = false;
public int GetTotalATK(IList<ClientCard> list)
{
int atk = 0;
foreach (ClientCard c in list)
{
if (c == null) continue;
atk += c.Attack;
}
return atk;
}
public override void OnNewPhase()
{
Enemy_atk = 0;
IList<ClientCard> list = new List<ClientCard>();
foreach (ClientCard monster in Enemy.GetMonsters())
{
if(monster.IsAttack())
list.Add(monster);
}
//if (GetTotalATK(list) / 2 >= Bot.LifePoints) return false;
Enemy_atk = GetTotalATK(list);
//SLogger.DebugWriteLine("++++++++++++++++++" + Enemy_atk + "++++++++++++");
}
public override void OnNewTurn() public override void OnNewTurn()
{ {
Pillused = false; Pillused = false;
OvertexCoatlseff_used = false; OvertexCoatlseff_used = false;
CrystronNeedlefibereff_used = false; CrystronNeedlefibereff_used = false;
ShaddollBeast_used = false;
ShaddollFalco_used = false;
ShaddollSquamata_used = false;
ShaddollDragon_used = false;
ShaddollHedgehog_used = false;
} }
private bool Luminasummon()
private bool UltimateConductorTytannoeff() {
if (Bot.Deck.Count >= 20) return true;
IList<ClientCard> extra = Bot.GetMonstersInExtraZone();
if (extra != null)
foreach (ClientCard monster in extra)
if (!monster.HasType(CardType.Link))
return false;
if (Bot.LifePoints <= 3000) return true;
if (Bot.HasInGraveyard(CardId.Raiden)) return true;
return false;
}
private bool Luminaeff()
{
if (Bot.HasInGraveyard(CardId.Raiden))
{ {
AI.SelectCard(Useless_List());
AI.SelectNextCard(CardId.Raiden);
return true;
}
return false;
}
if (Duel.Phase == DuelPhase.Main1) private bool UltimateConductorTytannoeff()
{ {
IList<int> targets = new[] { IList<int> targets = new[] {
CardId.OvertexCoatls, CardId.OvertexCoatls,
...@@ -249,12 +314,11 @@ namespace WindBot.Game.AI.Decks ...@@ -249,12 +314,11 @@ namespace WindBot.Game.AI.Decks
CardId.PlaguespreaderZombie, CardId.PlaguespreaderZombie,
CardId.FairyTailSnow, CardId.FairyTailSnow,
CardId.KeeperOfDragonicMagic, CardId.KeeperOfDragonicMagic,
CardId.Raiden,
CardId.Lumina,
CardId.DogorantheMadFlameKaiju, CardId.DogorantheMadFlameKaiju,
CardId.GamecieltheSeaTurtleKaiju, CardId.GamecieltheSeaTurtleKaiju,
CardId.RadiantheMultidimensionalKaiju, CardId.RadiantheMultidimensionalKaiju,
CardId.GiantRex, CardId.GiantRex,
CardId.ShaddollCore,
CardId.SouleatingOviraptor, CardId.SouleatingOviraptor,
CardId.Raiden, CardId.Raiden,
CardId.Lumina, CardId.Lumina,
...@@ -262,8 +326,21 @@ namespace WindBot.Game.AI.Decks ...@@ -262,8 +326,21 @@ namespace WindBot.Game.AI.Decks
CardId.GhostOgre, CardId.GhostOgre,
CardId.MaxxC, CardId.MaxxC,
}; };
if (!Bot.HasInHand(targets) || !Bot.HasInMonstersZone(targets))
if (Duel.Phase == DuelPhase.Main1)
{
if(Duel.Player==0)
{ {
int count = 0;
IList<ClientCard> check = Enemy.GetMonsters();
foreach (ClientCard monster in check)
if (monster.Attack > 2500 || monster == Enemy.MonsterZone.GetDangerousMonster())
count++;
if(count==0)return false;
}
if (!Bot.HasInHand(targets))
{
if(!Bot.HasInMonstersZone(targets))
return false; return false;
} }
AI.SelectCard(targets); AI.SelectCard(targets);
...@@ -278,15 +355,39 @@ namespace WindBot.Game.AI.Decks ...@@ -278,15 +355,39 @@ namespace WindBot.Game.AI.Decks
} }
private bool RadiantheMultidimensionalKaijusp()
{
if (Enemy.HasInMonstersZone(CardId.GamecieltheSeaTurtleKaiju)) return true;
if (Bot.HasInHand(CardId.DogorantheMadFlameKaiju)) return DefaultKaijuSpsummon();
return false;
}
private bool DogorantheMadFlameKaijusp()
{
if (Enemy.HasInMonstersZone(CardId.GamecieltheSeaTurtleKaiju)) return true;
if (Enemy.HasInMonstersZone(CardId.RadiantheMultidimensionalKaiju)) return true;
return false;
}
private bool InterruptedKaijuSlumbereff()
{
if (Enemy.GetMonsterCount() - Bot.GetMonsterCount() >= 2 )
return DefaultInterruptedKaijuSlumber();
return false;
}
private bool UltimateConductorTytannosp() private bool UltimateConductorTytannosp()
{ {
Ultimate_ss++;
Pillused = true; Pillused = true;
foreach (ClientCard card in Bot.GetMonsters()) foreach (ClientCard card in Bot.GetMonsters())
{ {
if (card.Id == CardId.UltimateConductorTytanno && card.IsFaceup()) if (card.Id == CardId.UltimateConductorTytanno && card.IsFaceup())
return false; return false;
} }
Ultimate_ss++;
return true; return true;
} }
...@@ -298,15 +399,14 @@ namespace WindBot.Game.AI.Decks ...@@ -298,15 +399,14 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(Useless_List()); AI.SelectCard(Useless_List());
return true; return true;
} }
return true; return true;
} }
private bool MonsterRepos() private bool MonsterRepos()
{ {
if (Card.Id == CardId.ElShaddollConstruct && Card.IsAttack()) if (Card.Id == CardId.ElShaddollConstruct && Card.IsAttack()) return false;
return false; if (Card.Id == CardId.ShaddollDragon && Card.IsFacedown() && Enemy.GetMonsterCount() >= 0) return true;
if (Card.Id == CardId.ShaddollSquamata && Card.IsFacedown() && Enemy.GetMonsterCount() >= 0) return true;
return base.DefaultMonsterRepos(); return base.DefaultMonsterRepos();
} }
...@@ -418,9 +518,13 @@ namespace WindBot.Game.AI.Decks ...@@ -418,9 +518,13 @@ namespace WindBot.Game.AI.Decks
private bool FairyTailSnowsummon() private bool FairyTailSnowsummon()
{ {
IList<ClientCard> list = Enemy.GetMonsters();
if(list!=null)
return Enemy.GetMonsterCount()>=2; {
if(list.GetHighestAttackMonster().IsFaceup())
return true;
}
return false;
} }
...@@ -429,8 +533,45 @@ namespace WindBot.Game.AI.Decks ...@@ -429,8 +533,45 @@ namespace WindBot.Game.AI.Decks
if (Card.Location == CardLocation.MonsterZone) if (Card.Location == CardLocation.MonsterZone)
{ {
AI.SelectCard(AI.Utils.GetBestEnemyMonster());
return true; return true;
} }
else
{
int spell_count = 0;
IList<ClientCard> grave = Bot.Graveyard;
IList<ClientCard> all = new List<ClientCard>();
foreach (ClientCard check in grave)
{
if(check.HasType(CardType.Spell)||check.HasType(CardType.Trap))
{
spell_count++;
all.Add(check);
}
}
foreach (ClientCard check in grave)
{
if (check.HasType(CardType.Monster))
{
all.Add(check);
}
}
if (AI.Utils.GetLastChainCard()!=null)
{
if (AI.Utils.GetLastChainCard().Id == CardId.FairyTailSnow) return false;
}
if ( Duel.Player == 1 && Duel.Phase == DuelPhase.BattleStart && Bot.BattlingMonster == null && Enemy_atk >=Bot.LifePoints ||
Duel.Player == 0 && Duel.Phase==DuelPhase.BattleStart && Enemy.BattlingMonster == null && Enemy.LifePoints<=1850
)
{
AI.SelectCard(all);
AI.SelectNextCard(AI.Utils.GetBestEnemyMonster());
return true;
}
}
return false; return false;
} }
...@@ -452,6 +593,9 @@ namespace WindBot.Game.AI.Decks ...@@ -452,6 +593,9 @@ namespace WindBot.Game.AI.Decks
private bool GlowUpBulbeff() private bool GlowUpBulbeff()
{ {
IList<ClientCard> check = Bot.GetMonstersInExtraZone();
foreach (ClientCard monster in check)
if (monster.HasType(CardType.Fusion)) return false;
if (Bot.HasInMonstersZone(CardId.Lumina) || if (Bot.HasInMonstersZone(CardId.Lumina) ||
Bot.HasInMonstersZone(CardId.FairyTailSnow) || Bot.HasInMonstersZone(CardId.FairyTailSnow) ||
Bot.HasInMonstersZone(CardId.KeeperOfDragonicMagic) || Bot.HasInMonstersZone(CardId.KeeperOfDragonicMagic) ||
...@@ -488,19 +632,14 @@ namespace WindBot.Game.AI.Decks ...@@ -488,19 +632,14 @@ namespace WindBot.Game.AI.Decks
} }
private bool spellset() private bool Reborneff()
{
return Bot.Hand.Count > 6;
}
private bool RebornEffect()
{ {
if(Bot.HasInGraveyard(CardId.UltimateConductorTytanno)&&Ultimate_ss>0) if(Bot.HasInGraveyard(CardId.UltimateConductorTytanno)&&Ultimate_ss>0)
{ {
AI.SelectCard(CardId.UltimateConductorTytanno); AI.SelectCard(CardId.UltimateConductorTytanno);
return true; return true;
} }
if (!AI.Utils.IsOneEnemyBetter(true)) return false;
IList<int> targets = new[] { IList<int> targets = new[] {
CardId.ElShaddollConstruct, CardId.ElShaddollConstruct,
CardId.DogorantheMadFlameKaiju, CardId.DogorantheMadFlameKaiju,
...@@ -533,78 +672,57 @@ namespace WindBot.Game.AI.Decks ...@@ -533,78 +672,57 @@ namespace WindBot.Game.AI.Decks
} }
private bool TrapSetWhenZoneFree() private bool SpellSetZone()
{ {
return Bot.GetSpellCountWithoutField() < 4; return (Bot.GetHandCount()>6 && Duel.Phase==DuelPhase.Main2);
} }
private bool ChargeOfTheLightBrigadeEffect() private bool ChargeOfTheLightBrigadeEffect()
{ {
if (!Bot.HasInHand(CardId.Raiden)) if (Bot.HasInGraveyard(CardId.Raiden) || Bot.HasInHand(CardId.Raiden))
AI.SelectCard(CardId.Raiden); AI.SelectCard(CardId.Lumina);
else else
AI.SelectCard(new[] AI.SelectCard(CardId.Raiden);
{
CardId.Lumina,
});
return true; return true;
} }
// all Shaddoll // all Shaddoll
private bool ElShaddollConstructeff() private bool SinisterShadowGameseff()
{ {
/* if (Duel.Phase == DuelPhase.Battle) if (Bot.HasInGraveyard(CardId.ShaddollFusion))
if (Enemy.BattlingMonster.Attack < 2800) AI.SelectCard(CardId.ShaddollCore);
return false;*/ else
if(ActivateDescription==-1) AI.SelectCard(new[]
{ {
AI.SelectCard(CardId.ShaddollSquamata); CardId.ShaddollBeast,
} });
return true; return true;
} }
private bool ElShaddollShekhinagaeff() private bool ShaddollCoreeff()
{
if (Card.Location != CardLocation.MonsterZone)
return true;
else
{ {
if (DefaultBreakthroughSkill()) if (Card.Location == CardLocation.SpellZone)
{ {
AI.SelectCard(new[]
if (Duel.Player == 1 && Bot.BattlingMonster == null && Duel.Phase==DuelPhase.BattleStart|| DefaultOnBecomeTarget())
{ {
CardId.ShaddollBeast, Logger.DebugWriteLine("+++++++++++ShaddollCoreeffdododoo++++++++++");
CardId.ShaddollSquamata, AI.SelectPosition(CardPosition.FaceUpDefence);
CardId.ShaddollHedgehog, return true;
CardId.ShaddollDragon,
CardId.ShaddollFalco,
}
);
} }
else
return false; return false;
} }
return true; return true;
} }
private bool ElShaddollGrysraeff()
{
if (Card.Location != CardLocation.MonsterZone)
return true;
return true;
}
private bool ShaddollFusioneff() private bool ShaddollFusioneff()
{ {
if (Bot.HasInMonstersZone(CardId.ElShaddollConstruct) || List<ClientCard> extra_zone_check = Bot.GetMonstersInExtraZone();
Bot.HasInMonstersZone(CardId.ElShaddollGrysra) || foreach (ClientCard extra_monster in extra_zone_check)
Bot.HasInMonstersZone(CardId.ElShaddollShekhinaga) || if (extra_monster.HasType(CardType.Xyz) || extra_monster.HasType(CardType.Fusion)) return false;
Bot.HasInMonstersZone(CardId.ElShaddollWinda ))
return false;
bool deck_check = false; bool deck_check = false;
List<ClientCard> monsters = Enemy.GetMonsters(); List<ClientCard> monsters = Enemy.GetMonsters();
...@@ -625,8 +743,9 @@ namespace WindBot.Game.AI.Decks ...@@ -625,8 +743,9 @@ namespace WindBot.Game.AI.Decks
}); });
AI.SelectNextCard(new[] AI.SelectNextCard(new[]
{ {
CardId.ShaddollBeast,
CardId.ShaddollSquamata, CardId.ShaddollSquamata,
CardId.ShaddollBeast,
CardId.ShaddollHedgehog, CardId.ShaddollHedgehog,
CardId.ShaddollDragon, CardId.ShaddollDragon,
CardId.ShaddollFalco, CardId.ShaddollFalco,
...@@ -635,7 +754,45 @@ namespace WindBot.Game.AI.Decks ...@@ -635,7 +754,45 @@ namespace WindBot.Game.AI.Decks
AI.SelectPosition(CardPosition.FaceUpAttack); AI.SelectPosition(CardPosition.FaceUpAttack);
return true; return true;
} }
if (!Bot.IsFieldEmpty()) return false;
if (Enemy.GetMonsterCount() == 0)
{
int dark_count = 0;
IList<ClientCard> m0 = Bot.Hand;
IList<ClientCard> m1 = Bot.MonsterZone;
IList<ClientCard> all = new List<ClientCard>();
foreach (ClientCard monster in m0)
{
if (dark_count == 2) break;
if (monster.HasAttribute(CardAttribute.Dark))
{
dark_count++;
all.Add(monster);
}
}
foreach (ClientCard monster in m1)
{
if (dark_count == 2) break;
if (monster != null)
{
if (monster.HasAttribute(CardAttribute.Dark))
{
dark_count++;
all.Add(monster);
}
}
}
if (dark_count == 2)
{
AI.SelectCard(CardId.ElShaddollWinda);
AI.SelectMaterials(all);
AI.SelectPosition(CardPosition.FaceUpAttack);
return true;
}
}
if (!AI.Utils.IsOneEnemyBetter()) return false;
foreach (ClientCard monster in Bot.Hand) foreach (ClientCard monster in Bot.Hand)
...@@ -651,6 +808,7 @@ namespace WindBot.Game.AI.Decks ...@@ -651,6 +808,7 @@ namespace WindBot.Game.AI.Decks
List<ClientCard> material_1 = Bot.GetMonsters(); List<ClientCard> material_1 = Bot.GetMonsters();
foreach (ClientCard monster in material_1) foreach (ClientCard monster in material_1)
{ {
if (monster == null) break;
if (monster.HasAttribute(CardAttribute.Light)) if (monster.HasAttribute(CardAttribute.Light))
{ {
AI.SelectCard(CardId.ElShaddollConstruct); AI.SelectCard(CardId.ElShaddollConstruct);
...@@ -663,37 +821,97 @@ namespace WindBot.Game.AI.Decks ...@@ -663,37 +821,97 @@ namespace WindBot.Game.AI.Decks
} }
private bool SinisterShadowGameseff()
{
private bool ElShaddollShekhinagaeff()
{
if (Card.Location != CardLocation.MonsterZone)
return true;
else
{
if (DefaultBreakthroughSkill())
{
AI.SelectCard(new[] AI.SelectCard(new[]
{ {
CardId.ShaddollBeast, CardId.ShaddollBeast,
CardId.ShaddollSquamata,
CardId.ShaddollHedgehog,
CardId.ShaddollDragon,
CardId.ShaddollFalco,
}
);
}
else
return false;
}
return true;
}
});
private bool ElShaddollGrysraeff()
{
if (Card.Location != CardLocation.MonsterZone)
return true;
return true;
}
private bool ElShaddollConstructeff()
{
if (!ShaddollBeast_used)
AI.SelectCard(CardId.ShaddollBeast);
else
AI.SelectCard(CardId.ShaddollFalco);
return true; return true;
} }
private bool ShaddollCoreeff()
private bool ShaddollSquamataeff()
{ {
if (Card.Location == CardLocation.SpellZone) ShaddollSquamata_used = true;
if (Card.Location != CardLocation.MonsterZone)
{ {
if (Enemy.HasAttackingMonster() && Duel.Player == 1 && Duel.Phase == DuelPhase.BattleStart) if(AI.Utils.ChainContainsCard(CardId.ElShaddollConstruct))
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); if (!Bot.HasInHand(CardId.ShaddollFusion) && Bot.HasInGraveyard(CardId.ShaddollFusion))
return true; AI.SelectNextCard(CardId.ShaddollCore);
if (!ShaddollBeast_used) AI.SelectNextCard(CardId.ShaddollBeast);
else if (!ShaddollFalco_used) AI.SelectNextCard(CardId.ShaddollFalco);
else if(!ShaddollHedgehog_used) AI.SelectNextCard(CardId.ShaddollHedgehog);
}
else
{
if (!Bot.HasInHand(CardId.ShaddollFusion) && Bot.HasInGraveyard(CardId.ShaddollFusion))
AI.SelectCard(CardId.ShaddollCore);
if (!ShaddollBeast_used) AI.SelectCard(CardId.ShaddollBeast);
else if (!ShaddollFalco_used) AI.SelectCard(CardId.ShaddollFalco);
else if (!ShaddollHedgehog_used) AI.SelectCard(CardId.ShaddollHedgehog);
} }
}
else
{
ClientCard target = AI.Utils.GetBestEnemyMonster();
AI.SelectCard(target);
if (Enemy.GetMonsterCount() == 0)
return false; return false;
} }
return true; return true;
} }
private bool ShaddollBeasteff()
{
ShaddollBeast_used = true;
return true;
}
private bool ShaddollFalcoeff() private bool ShaddollFalcoeff()
{ {
ShaddollFalco_used = true;
if (Card.Location != CardLocation.MonsterZone) if (Card.Location != CardLocation.MonsterZone)
return true; return true;
else else
...@@ -715,13 +933,27 @@ namespace WindBot.Game.AI.Decks ...@@ -715,13 +933,27 @@ namespace WindBot.Game.AI.Decks
private bool ShaddollHedgehogeff() private bool ShaddollHedgehogeff()
{ {
ShaddollHedgehog_used = true;
if (Card.Location != CardLocation.MonsterZone) if (Card.Location != CardLocation.MonsterZone)
{ {
AI.SelectCard(new[] if (AI.Utils.ChainContainsCard(CardId.ElShaddollConstruct))
{ {
AI.SelectNextCard(new[]{
CardId.ShaddollFalco,
CardId.ShaddollSquamata,
CardId.ShaddollDragon,
});
}
else
{
AI.SelectCard(new[]{
CardId.ShaddollSquamata, CardId.ShaddollSquamata,
CardId.ShaddollDragon,
}); });
} }
}
else else
{ {
AI.SelectCard(new[] { CardId.ShaddollFusion, CardId.SinisterShadowGames }); AI.SelectCard(new[] { CardId.ShaddollFusion, CardId.SinisterShadowGames });
...@@ -732,6 +964,7 @@ namespace WindBot.Game.AI.Decks ...@@ -732,6 +964,7 @@ namespace WindBot.Game.AI.Decks
private bool ShaddollDragoneff() private bool ShaddollDragoneff()
{ {
ShaddollDragon_used = true;
if (Card.Location == CardLocation.MonsterZone) if (Card.Location == CardLocation.MonsterZone)
{ {
ClientCard target = AI.Utils.GetBestEnemyCard(); ClientCard target = AI.Utils.GetBestEnemyCard();
...@@ -747,26 +980,6 @@ namespace WindBot.Game.AI.Decks ...@@ -747,26 +980,6 @@ namespace WindBot.Game.AI.Decks
} }
private bool ShaddollSquamataeff()
{
if (Card.Location != CardLocation.MonsterZone)
{
AI.SelectCard(new[]
{
CardId.ShaddollBeast,
});
}
else
{
ClientCard target = AI.Utils.GetBestEnemyMonster();
AI.SelectCard(target);
if (Enemy.GetMonsterCount() == 0)
return false;
}
return true;
}
private bool LostWindeff() private bool LostWindeff()
{ {
List<ClientCard> check = Enemy.GetMonsters(); List<ClientCard> check = Enemy.GetMonsters();
...@@ -811,18 +1024,38 @@ namespace WindBot.Game.AI.Decks ...@@ -811,18 +1024,38 @@ namespace WindBot.Game.AI.Decks
} }
//other extra //other extra
private bool Michaelsp()
{
IList<int> targets = new[] {
CardId.Raiden,
CardId.Lumina
};
if (!Bot.HasInMonstersZone(targets))
return false;
AI.SelectCard(targets);
return true;
}
private bool Michaeleff() private bool Michaeleff()
{ {
if (Card.Location == CardLocation.Grave) if (Card.Location == CardLocation.Grave)
return true; return true;
if (Bot.LifePoints <= 1000) return false; if (Bot.LifePoints <= 1000) return false;
ClientCard select = AI.Utils.GetBestEnemyMonster();
if (select == null) return false;
if(select!=null)
{
AI.SelectCard(select);
return true; return true;
} }
return false;
}
private bool MinervaTheExaltedEffect() private bool MinervaTheExaltedEffect()
{ {
if (Card.Location == CardLocation.MonsterZone) if (Card.Location == CardLocation.MonsterZone)
{ {
if (Bot.Deck.Count <= 10) return false;
return true; return true;
} }
else else
...@@ -869,29 +1102,46 @@ namespace WindBot.Game.AI.Decks ...@@ -869,29 +1102,46 @@ namespace WindBot.Game.AI.Decks
if (CrystronNeedlefibereff_used) return false; if (CrystronNeedlefibereff_used) return false;
if (Bot.HasInMonstersZone(CardId.CrystronNeedlefiber)) return false; if (Bot.HasInMonstersZone(CardId.CrystronNeedlefiber)) return false;
if (Bot.HasInMonstersZone(CardId.FairyTailSnow) || IList<int> check = new[]
Bot.HasInMonstersZone(CardId.Lumina) ||
Bot.HasInMonstersZone(CardId.KeeperOfDragonicMagic) ||
Bot.HasInMonstersZone(CardId.SouleatingOviraptor) ||
Bot.HasInMonstersZone(CardId.Raiden)
)
{
AI.SelectCard(new[]
{ {
CardId.KeeperOfDragonicMagic, CardId.GlowUpBulb,
CardId.Lumina,
CardId.FairyTailSnow, CardId.FairyTailSnow,
CardId.KeeperOfDragonicMagic,
CardId.SouleatingOviraptor, CardId.SouleatingOviraptor,
CardId.Raiden,
CardId.GiantRex, CardId.GiantRex,
}); CardId.Lumina,
AI.SelectNextCard(CardId.GlowUpBulb); CardId.Raiden,
}
};
int count=0;
foreach (ClientCard monster in Bot.GetMonsters())
if (monster.Id == CardId.GlowUpBulb ||
monster.Id == CardId.FairyTailSnow ||
monster.Id == CardId.KeeperOfDragonicMagic ||
monster.Id == CardId.SouleatingOviraptor||
monster.Id == CardId.GiantRex||
monster.Id == CardId.Lumina||
monster.Id == CardId.Raiden
)
count++;
if (!Bot.HasInMonstersZone(CardId.GlowUpBulb) || count<2)
return false;
AI.SelectCard(check);
AI.SelectNextCard(check);
return true; return true;
} }
public bool CrystronNeedlefibereff() public bool CrystronNeedlefibereff()
{ {
bool DarkHole = false;
foreach (ClientCard card in Enemy.GetSpells())
{
if (card.Id == 53129443 && card.IsFaceup())
{
DarkHole = true;
}
}
if (Duel.Player == 0) if (Duel.Player == 0)
{ {
...@@ -899,9 +1149,16 @@ namespace WindBot.Game.AI.Decks ...@@ -899,9 +1149,16 @@ namespace WindBot.Game.AI.Decks
AI.SelectCard(new[] { CardId.GhostOgre, CardId.GlowUpBulb, CardId.PlaguespreaderZombie, CardId.ShaddollFalco }); AI.SelectCard(new[] { CardId.GhostOgre, CardId.GlowUpBulb, CardId.PlaguespreaderZombie, CardId.ShaddollFalco });
return true; return true;
} }
else if (AI.Utils.IsChainTarget(Card) || AI.Utils.GetProblematicEnemySpell() != null) return true;
else if (DarkHole || AI.Utils.IsChainTarget(Card) || AI.Utils.GetProblematicEnemySpell() != null)
{
AI.SelectCard(CardId.TG_WonderMagician);
return true;
}
else if (Duel.Player == 1 && Duel.Phase == DuelPhase.BattleStart && AI.Utils.IsOneEnemyBetterThanValue(1500, true)) else if (Duel.Player == 1 && Duel.Phase == DuelPhase.BattleStart && AI.Utils.IsOneEnemyBetterThanValue(1500, true))
{ {
AI.SelectCard(CardId.TG_WonderMagician);
if (AI.Utils.IsOneEnemyBetterThanValue(1900, true)) if (AI.Utils.IsOneEnemyBetterThanValue(1900, true))
{ {
AI.SelectPosition(CardPosition.FaceUpDefence); AI.SelectPosition(CardPosition.FaceUpDefence);
...@@ -915,6 +1172,10 @@ namespace WindBot.Game.AI.Decks ...@@ -915,6 +1172,10 @@ namespace WindBot.Game.AI.Decks
return false; return false;
} }
private bool ScarlightRedDragonsp()
{
return false;
}
private bool ScarlightRedDragoneff() private bool ScarlightRedDragoneff()
{ {
...@@ -980,6 +1241,10 @@ namespace WindBot.Game.AI.Decks ...@@ -980,6 +1241,10 @@ namespace WindBot.Game.AI.Decks
} }
private bool RedWyvernsp()
{
return false;
}
private bool RedWyverneff() private bool RedWyverneff()
{ {
......
...@@ -24,6 +24,7 @@ namespace WindBot.Game.AI ...@@ -24,6 +24,7 @@ namespace WindBot.Game.AI
public const int DupeFrog = 46239604; public const int DupeFrog = 46239604;
public const int MaraudingCaptain = 2460565; public const int MaraudingCaptain = 2460565;
public const int HarpiesFeatherDuster = 18144506;
public const int MysticalSpaceTyphoon = 5318639; public const int MysticalSpaceTyphoon = 5318639;
public const int CosmicCyclone = 8267140; public const int CosmicCyclone = 8267140;
public const int ChickenGame = 67616300; public const int ChickenGame = 67616300;
...@@ -452,6 +453,15 @@ namespace WindBot.Game.AI ...@@ -452,6 +453,15 @@ namespace WindBot.Game.AI
return false; return false;
} }
/// <summary>
/// if spell/trap is the target or enermy activate HarpiesFeatherDuster
/// </summary>
protected bool DefaultOnBecomeTarget()
{
if (AI.Utils.IsChainTarget(Card)) return true;
if (Enemy.HasInSpellZone(_CardId.HarpiesFeatherDuster, true)) return true;
return false;
}
/// <summary> /// <summary>
/// Chain enemy activation or summon. /// Chain enemy activation or summon.
/// </summary> /// </summary>
......
...@@ -59,13 +59,19 @@ ...@@ -59,13 +59,19 @@
NaturiaExterio = 99916754, NaturiaExterio = 99916754,
TheLastWarriorfromAnotherPlanet = 86099788, TheLastWarriorfromAnotherPlanet = 86099788,
ThousandEyesRestrict = 63519819, ThousandEyesRestrict = 63519819,
ElShaddollWinda = 94977269,
MaskedHERODarkLaw = 58481572, MaskedHERODarkLaw = 58481572,
NaturiaBeast = 33198837, NaturiaBeast = 33198837,
NaturiaBarkion = 2956282, NaturiaBarkion = 2956282,
EvilswarmOphion = 91279700, EvilswarmOphion = 91279700,
MermailAbyssgaios = 74371660, MermailAbyssgaios = 74371660,
AbyssDweller = 21044178, AbyssDweller = 21044178,
ZoodiacDrident = 48905153 ZoodiacDrident = 48905153,
InvokedMechaba = 75286621,
ElShaddollShekhinaga = 74822425,
ElShaddollConstruct = 20366274,
ElShaddollGrysra = 48424886,
ElShaddollWinda = 94977269,
UltimateConductorTytanno = 18940556,
OvertexCoatls = 41782653
} }
} }
...@@ -270,8 +270,8 @@ namespace WindBot.Game ...@@ -270,8 +270,8 @@ namespace WindBot.Game
{ {
int player = packet.ReadInt16(); int player = packet.ReadInt16();
string message = packet.ReadUnicode(256); string message = packet.ReadUnicode(256);
string myName = _room.Position == 0 ? _room.Names[0] : _room.Names[1]; string myName = (player != 0) ? _room.Names[1] : _room.Names[0];
string otherName = _room.Position == 0 ? _room.Names[1] : _room.Names[0]; string otherName = (player == 0) ? _room.Names[1] : _room.Names[0];
if (player < 4) if (player < 4)
Logger.DebugWriteLine(otherName + " say to " + myName + ": " + message); Logger.DebugWriteLine(otherName + " say to " + myName + ": " + message);
} }
......
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