Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
W
windbot
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
YSP
windbot
Commits
c3a490b1
Commit
c3a490b1
authored
Feb 09, 2023
by
YSPplayer
Committed by
GitHub
Feb 09, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix Tearlaments (#159)
parent
521e6699
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
209 additions
and
70 deletions
+209
-70
Game/AI/Decks/TearlamentsExecutor.cs
Game/AI/Decks/TearlamentsExecutor.cs
+209
-70
No files found.
Game/AI/Decks/TearlamentsExecutor.cs
View file @
c3a490b1
...
@@ -87,6 +87,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -87,6 +87,7 @@ namespace WindBot.Game.AI.Decks
bool activate_DivineroftheHerald = false;
bool activate_DivineroftheHerald = false;
bool summoned = false;
bool summoned = false;
bool spsummoned = false;
bool spsummoned = false;
bool TearlamentsKitkallos_summoned = false;
bool summon_SprightElf = false;
bool summon_SprightElf = false;
bool chainlist = false;
bool chainlist = false;
...
@@ -120,6 +121,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -120,6 +121,7 @@ namespace WindBot.Game.AI.Decks
ClientCard chain_PredaplantDragostapelia = null;
ClientCard chain_PredaplantDragostapelia = null;
ClientCard chain_TearlamentsSulliek = null;
ClientCard chain_TearlamentsSulliek = null;
ClientCard tgcard = null;
ClientCard tgcard = null;
ClientCard no_fusion_card = null;
List<ClientCard> e_PredaplantDragostapelia_cards = new List<ClientCard>();
List<ClientCard> e_PredaplantDragostapelia_cards = new List<ClientCard>();
ClientCard link_card = null;
ClientCard link_card = null;
...
@@ -127,8 +129,8 @@ namespace WindBot.Game.AI.Decks
...
@@ -127,8 +129,8 @@ namespace WindBot.Game.AI.Decks
List<int> key_send_to_deck_ids = new List<int>()
List<int> key_send_to_deck_ids = new List<int>()
{
{
CardId
.
TearlamentsMerrli
,
CardId
.
TearlamentsScheiren
,
CardId
.
TearlamentsHavnis
,
CardId
.
TearlamentsReinoheart
,
8736823
,
29596581
,
CardId.TearlamentsMerrli,CardId.TearlamentsScheiren,CardId.TearlamentsHavnis,CardId.TearlamentsReinoheart,8736823,
83107873
,
56713174
,
2031802
9
98715423,1748449
9
};
};
List<int> all_key_card_ids = new List<int>()
List<int> all_key_card_ids = new List<int>()
{
{
...
@@ -172,8 +174,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -172,8 +174,9 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.AbyssDweller, () => { return Duel.Player != 0; });
AddExecutor(ExecutorType.Activate, CardId.AbyssDweller, () => { return Duel.Player != 0; });
AddExecutor(ExecutorType.Activate, CardId.TearlamentsKaleidoHeart, TearlamentsKaleidoHeartEffect);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsKaleidoHeart, TearlamentsKaleidoHeartEffect);
AddExecutor(ExecutorType.Activate, CardId.UnderworldGoddessoftheClosedWorld);
AddExecutor(ExecutorType.Activate, CardId.UnderworldGoddessoftheClosedWorld);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
UnderworldGoddessoftheClosedWorld
,
UnderworldGoddessoftheClosedWorldSummon
);
AddExecutor(ExecutorType.SpSummon, CardId.FADawnDragster, FADawnDragsterSummon);
AddExecutor(ExecutorType.SpSummon, CardId.FADawnDragster, FADawnDragsterSummon);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsKitkallos, TearlamentsKitkallosEffect_2);
AddExecutor(ExecutorType.SpSummon, CardId.UnderworldGoddessoftheClosedWorld, UnderworldGoddessoftheClosedWorldSummon);
AddExecutor(ExecutorType.SpSummon, CardId.SprightElf, SprightElfSummon_2);
AddExecutor(ExecutorType.SpSummon, CardId.SprightElf, SprightElfSummon_2);
AddExecutor(ExecutorType.SpSummon, CardId.IP, IPSummon_2);
AddExecutor(ExecutorType.SpSummon, CardId.IP, IPSummon_2);
AddExecutor(ExecutorType.Activate, CardId.BaronnedeFleur, BaronnedeFleurEffect);
AddExecutor(ExecutorType.Activate, CardId.BaronnedeFleur, BaronnedeFleurEffect);
...
@@ -183,10 +186,10 @@ namespace WindBot.Game.AI.Decks
...
@@ -183,10 +186,10 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.HeraldofGreenLight);
AddExecutor(ExecutorType.Activate, CardId.HeraldofGreenLight);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsRulkallos, TearlamentsRulkallosEffect);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsRulkallos, TearlamentsRulkallosEffect);
AddExecutor(ExecutorType.Activate, CardId.FADawnDragster);
AddExecutor(ExecutorType.Activate, CardId.FADawnDragster);
AddExecutor(ExecutorType.Activate, CardId.PrimevalPlanetPerlereino, PrimevalPlanetPerlereinoEffect);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsScheiren, TearlamentsScheirenEffect);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsScheiren, TearlamentsScheirenEffect);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsKitkallos, TearlamentsKitkallosEffect);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsKitkallos, TearlamentsKitkallosEffect);
AddExecutor(ExecutorType.Activate, CardId.SprightElf, SprightElfEffect);
AddExecutor(ExecutorType.Activate, CardId.SprightElf, SprightElfEffect);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PrimevalPlanetPerlereino
,
PrimevalPlanetPerlereinoEffect
);
AddExecutor(ExecutorType.SpSummon, CardId.UnderworldGoddessoftheClosedWorld, UnderworldGoddessoftheClosedWorldSummon_3);
AddExecutor(ExecutorType.SpSummon, CardId.UnderworldGoddessoftheClosedWorld, UnderworldGoddessoftheClosedWorldSummon_3);
AddExecutor(ExecutorType.Activate, CardId.MudoratheSwordOracle, MudoratheSwordOracleEffect);
AddExecutor(ExecutorType.Activate, CardId.MudoratheSwordOracle, MudoratheSwordOracleEffect);
AddExecutor(ExecutorType.Activate, CardId.DivineroftheHerald, DivineroftheHeraldEffect);
AddExecutor(ExecutorType.Activate, CardId.DivineroftheHerald, DivineroftheHeraldEffect);
...
@@ -202,14 +205,16 @@ namespace WindBot.Game.AI.Decks
...
@@ -202,14 +205,16 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.ShaddollDragon, ShaddollDragonEffect);
AddExecutor(ExecutorType.Activate, CardId.ShaddollDragon, ShaddollDragonEffect);
AddExecutor(ExecutorType.Activate, CardId.Eva, EvaEffect);
AddExecutor(ExecutorType.Activate, CardId.Eva, EvaEffect);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsSulliek, TearlamentsSulliekEffect);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsSulliek, TearlamentsSulliekEffect);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
TearlamentsScream
);
AddExecutor(ExecutorType.Activate, CardId.TearlamentsScream
,()=> { return !AllActivated(); }
);
AddExecutor(ExecutorType.Activate, CardId.KeldotheSacredProtector, MudoratheSwordOracleEffect);
AddExecutor(ExecutorType.Activate, CardId.KeldotheSacredProtector, MudoratheSwordOracleEffect);
AddExecutor(ExecutorType.Activate, CardId.ShaddollBeast, () => { return Bot.Deck.Count > 0; });
AddExecutor(ExecutorType.Activate, CardId.ShaddollBeast, () => { return Bot.Deck.Count > 0; });
AddExecutor(ExecutorType.Summon, CardId.DivineroftheHerald, ()=> { return !Bot.HasInHand(CardId.HeraldofGreenLight) && !Bot.HasInHand(CardId.HeraldofOrangeLight); });
AddExecutor(ExecutorType.SpSummon, CardId.AbyssDweller, AbyssDwellerSummon_2);
AddExecutor(ExecutorType.SpSummon, CardId.SprightElf, SprightElfSummon);
AddExecutor(ExecutorType.SpSummon, CardId.SprightElf, SprightElfSummon);
AddExecutor(ExecutorType.SpSummon, CardId.BaronnedeFleur, BaronnedeFleurSummon);
AddExecutor(ExecutorType.SpSummon, CardId.BaronnedeFleur, BaronnedeFleurSummon);
AddExecutor(ExecutorType.SpSummon, CardId.FADawnDragster, () => { SetSpSummon(); return true; });
AddExecutor(ExecutorType.SpSummon, CardId.FADawnDragster, () => { SetSpSummon(); return true; });
AddExecutor(ExecutorType.SpSummon, CardId.AbyssDweller, AbyssDwellerSummon);
AddExecutor(ExecutorType.SpSummon, CardId.AbyssDweller, AbyssDwellerSummon);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
IP
,
IPEffect
);
AddExecutor(ExecutorType.
Activate
, CardId.IP, IPEffect);
AddExecutor(ExecutorType.SpSummon, CardId.IP, IPSummon);
AddExecutor(ExecutorType.SpSummon, CardId.IP, IPSummon);
AddExecutor(ExecutorType.SpSummon, CardId.UnderworldGoddessoftheClosedWorld, UnderworldGoddessoftheClosedWorldSummon_2);
AddExecutor(ExecutorType.SpSummon, CardId.UnderworldGoddessoftheClosedWorld, UnderworldGoddessoftheClosedWorldSummon_2);
AddExecutor(ExecutorType.Activate, CardId.KnightmareUnicorn, KnightmareUnicornEffect);
AddExecutor(ExecutorType.Activate, CardId.KnightmareUnicorn, KnightmareUnicornEffect);
...
@@ -217,6 +222,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -217,6 +222,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.MekkKnightCrusadiaAvramax, MekkKnightCrusadiaAvramaxEffect);
AddExecutor(ExecutorType.Activate, CardId.MekkKnightCrusadiaAvramax, MekkKnightCrusadiaAvramaxEffect);
AddExecutor(ExecutorType.SpSummon, CardId.MekkKnightCrusadiaAvramax, MekkKnightCrusadiaAvramaxSummon);
AddExecutor(ExecutorType.SpSummon, CardId.MekkKnightCrusadiaAvramax, MekkKnightCrusadiaAvramaxSummon);
AddExecutor(ExecutorType.SpSummon, CardId.BaronnedeFleur, BaronnedeFleurSummon_2);
AddExecutor(ExecutorType.SpSummon, CardId.BaronnedeFleur, BaronnedeFleurSummon_2);
AddExecutor(ExecutorType.SpSummon, CardId.BaronnedeFleur, () => { return Bot.HasInMonstersZone(CardId.SprightElf, true, false, true); });
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.SpellSet, SpellSet);
AddExecutor(ExecutorType.SpellSet, SpellSet);
}
}
...
@@ -268,6 +274,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -268,6 +274,7 @@ namespace WindBot.Game.AI.Decks
summoned = false;
summoned = false;
spsummoned = false;
spsummoned = false;
summon_SprightElf = false;
summon_SprightElf = false;
TearlamentsKitkallos_summoned = false;
}
}
private List<ClientCard> GetZoneCards(CardLocation loc, ClientField player)
private List<ClientCard> GetZoneCards(CardLocation loc, ClientField player)
{
{
...
@@ -305,7 +312,8 @@ namespace WindBot.Game.AI.Decks
...
@@ -305,7 +312,8 @@ namespace WindBot.Game.AI.Decks
{
{
case 0:
case 0:
case 2: id = CardId.TearlamentsKitkallos; break;
case 2: id = CardId.TearlamentsKitkallos; break;
case
1
:
id
=
CardId
.
TearlamentsRulkallos
;
break
;
case 1:
case 6: id = CardId.TearlamentsRulkallos; break;
case 3: id = CardId.PredaplantDragostapelia; break;
case 3: id = CardId.PredaplantDragostapelia; break;
case 4: id = CardId.TearlamentsKaleidoHeart; break;
case 4: id = CardId.TearlamentsKaleidoHeart; break;
case 5: id = CardId.PredaplantDragostapelia; break;
case 5: id = CardId.PredaplantDragostapelia; break;
...
@@ -342,6 +350,14 @@ namespace WindBot.Game.AI.Decks
...
@@ -342,6 +350,14 @@ namespace WindBot.Game.AI.Decks
if (index > -1 && index < fusionExtra.Count) fusionExtra.RemoveAt(index);
if (index > -1 && index < fusionExtra.Count) fusionExtra.RemoveAt(index);
return res;
return res;
}
}
private bool IsLastFusionCard()
{
int count = 0;
if (activate_TearlamentsScheiren_2) ++count;
if (activate_TearlamentsHavnis_2) ++count;
if (activate_TearlamentsMerrli_2) ++count;
return count >= 2;
}
private bool CheckFusion(int listindex, int id)
private bool CheckFusion(int listindex, int id)
{
{
int key = -1;
int key = -1;
...
@@ -351,16 +367,20 @@ namespace WindBot.Game.AI.Decks
...
@@ -351,16 +367,20 @@ namespace WindBot.Game.AI.Decks
{
{
bool flag_4 = fusionExtra.Count(card => card != null && card.Id == CardId.PredaplantDragostapelia) > 0 && Bot.HasInMonstersZone(CardId.ElShaddollWinda, true, false, true);
bool flag_4 = fusionExtra.Count(card => card != null && card.Id == CardId.PredaplantDragostapelia) > 0 && Bot.HasInMonstersZone(CardId.ElShaddollWinda, true, false, true);
bool flag_1 = ((Duel.Phase < DuelPhase.End && (!activate_TearlamentsKitkallos_1 || !activate_TearlamentsKitkallos_2)) || (Duel.Phase == DuelPhase.End && !activate_TearlamentsKitkallos_1 && !activate_TearlamentsKitkallos_2)) && fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) > 0;
bool flag_1 = ((Duel.Phase < DuelPhase.End && (!activate_TearlamentsKitkallos_1 || !activate_TearlamentsKitkallos_2)) || (Duel.Phase == DuelPhase.End && !activate_TearlamentsKitkallos_1 && !activate_TearlamentsKitkallos_2)) && fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) > 0;
bool
flag_2
=
fusionExtra
.
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
TearlamentsRulkallos
)
>
0
&&
(
Bot
.
HasInGraveyard
(
CardId
.
TearlamentsKitkallos
)
||
Bot
.
GetMonsters
().
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
TearlamentsKitkallos
)
>
1
);
bool flag_2 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsRulkallos) > 0 && (Bot.HasInGraveyard(CardId.TearlamentsKitkallos) || Bot.GetMonsters().Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) > 1 || Duel.CurrentChain.Any(card=>card!=null && card.Controller==0 && card!=Card && (card.Id==CardId.TearlamentsScheiren || card.Id==CardId.TearlamentsHavnis || card.Id==CardId.TearlamentsMerrli)));
bool
flag_5
=
fusionExtra
.
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
TearlamentsKaleidoHeart
)
>
0
&&
!
activate_TearlamentsKaleidoHeart_1
&&
GetZoneCards
(
CardLocation
.
Onfield
,
Enemy
).
Count
(
card
=>
card
!=
null
&&
!
card
.
IsShouldNotBeTarget
())
>
0
&&
IsShouldSummonFusion
(-
1
,
-
1
,
false
,
(
int
)
Flag
.
TearlamentsKaleidoHeart
)
// && !activate_TearlamentsKaleidoHeart_1 && GetZoneCards(CardLocation.Onfield, Enemy).Count(card => card != null && !card.IsShouldNotBeTarget()) > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.TearlamentsKaleidoHeart)
&&
(!
Bot
.
HasInSpellZone
(
CardId
.
PrimevalPlanetPerlereino
,
true
,
true
)
||
(
Bot
.
HasInSpellZone
(
CardId
.
PrimevalPlanetPerlereino
,
true
,
true
)
&&
activate_PrimevalPlanetPerlereino_2
));
//&& (!Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) || (Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) && activate_PrimevalPlanetPerlereino_2)
bool
flag_6
=
fusionExtra
.
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
PredaplantDragostapelia
)
>
0
&&
IsShouldSummonFusion
(-
1
,
-
1
,
false
,
(
int
)
Flag
.
PredaplantDragostapelia
)
&&
Enemy
.
GetMonsters
().
Any
(
card
=>
card
!=
null
&&
card
.
HasType
(
CardType
.
Effect
)
&&
!
card
.
IsDisabled
()
&&
card
.
IsFaceup
()
&&
!
card
.
IsShouldNotBeTarget
());
bool flag_5 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKaleidoHeart) > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.TearlamentsKaleidoHeart);
//&& Enemy.GetMonsters().Any(card => card != null && card.HasType(CardType.Effect) && !card.IsDisabled() && card.IsFaceup() && !card.IsShouldNotBeTarget())
bool flag_6 = fusionExtra.Count(card => card != null && card.Id == CardId.PredaplantDragostapelia) > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.PredaplantDragostapelia);
bool flag_7 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsRulkallos) > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.TearlamentsRulkallos) && IsLastFusionCard();
bool flag_3 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) > 0;
bool flag_3 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) > 0;
if (flag_4) key = 3;
if (flag_4) key = 3;
else if (flag_1) key = 0;
else if (flag_1) key = 0;
else if (flag_2) key = 1;
else if (flag_2) key = 1;
else if (flag_5) key = 4;
else if (flag_5) key = 4;
else if (flag_6) key = 5;
else if (flag_6) key = 5;
else if (flag_7) key = 6;
else if (flag_3) key = 2;
else if (flag_3) key = 2;
if (key > -1)
if (key > -1)
{
{
...
@@ -373,6 +393,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -373,6 +393,7 @@ namespace WindBot.Game.AI.Decks
fusionMaterialTemp = fusionMaterialTemp.Where(card => card != null && (card.HasRace(CardRace.Aqua) || (card.HasType(CardType.Monster) && card.HasSetcode(SETCODE)))).ToList();
fusionMaterialTemp = fusionMaterialTemp.Where(card => card != null && (card.HasRace(CardRace.Aqua) || (card.HasType(CardType.Monster) && card.HasSetcode(SETCODE)))).ToList();
break;
break;
case 1:
case 1:
case 6:
fusionMaterialTemp = fusionMaterialTemp.Where(card => card != null && card.Id == CardId.TearlamentsKitkallos).ToList();
fusionMaterialTemp = fusionMaterialTemp.Where(card => card != null && card.Id == CardId.TearlamentsKitkallos).ToList();
break;
break;
case 3:
case 3:
...
@@ -460,6 +481,11 @@ namespace WindBot.Game.AI.Decks
...
@@ -460,6 +481,11 @@ namespace WindBot.Game.AI.Decks
if (mcard_1[listindex] != null) fusionMaterial.Remove(mcard_1[listindex]);
if (mcard_1[listindex] != null) fusionMaterial.Remove(mcard_1[listindex]);
if (mcard_2[listindex] != null) fusionMaterial.Remove(mcard_2[listindex]);
if (mcard_2[listindex] != null) fusionMaterial.Remove(mcard_2[listindex]);
if (mcard_3[listindex] != null) fusionMaterial.Remove(mcard_3[listindex]);
if (mcard_3[listindex] != null) fusionMaterial.Remove(mcard_3[listindex]);
//foreach (var card in fusionMaterial)
//{
// if (card == null) continue;
// Logger.DebugWriteLine("remain" + card.Id);
//}
return true;
return true;
}
}
}
}
...
@@ -471,7 +497,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -471,7 +497,7 @@ namespace WindBot.Game.AI.Decks
{
{
bool flag_1 = (fusionExtra.Count(card => card != null && card.Id == CardId.ElShaddollWinda) > 0
bool flag_1 = (fusionExtra.Count(card => card != null && card.Id == CardId.ElShaddollWinda) > 0
&& (fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) <= 0 ||
&& (fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) <= 0 ||
activate_TearlamentsKitkallos_1
||
Bot
.
GetMonstersInMainZone
().
Count
>=
4
)
&&
Bot
.
GetGraveyardMonsters
().
Any
(
card
=>
card
!=
null
&&
card
.
HasSetcode
(
0x9d
))
activate_TearlamentsKitkallos_1 || Bot.GetMonstersInMainZone().Count >= 4
|| TearlamentsKitkallos_summoned
) && Bot.GetGraveyardMonsters().Any(card => card != null && card.HasSetcode(0x9d))
&& Card.HasAttribute(CardAttribute.Dark));
&& Card.HasAttribute(CardAttribute.Dark));
bool flag_2 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) > 0 && !activate_TearlamentsKitkallos_1;
bool flag_2 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) > 0 && !activate_TearlamentsKitkallos_1;
bool flag_3 = fusionExtra.Count(card => card != null && card.Id == CardId.ElShaddollWinda) > 0 && Bot.GetGraveyardMonsters().Any(card => card != null && card.HasSetcode(0x9d))
bool flag_3 = fusionExtra.Count(card => card != null && card.Id == CardId.ElShaddollWinda) > 0 && Bot.GetGraveyardMonsters().Any(card => card != null && card.HasSetcode(0x9d))
...
@@ -479,7 +505,8 @@ namespace WindBot.Game.AI.Decks
...
@@ -479,7 +505,8 @@ namespace WindBot.Game.AI.Decks
bool flag_4 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsRulkallos) > 0 && (Bot.HasInGraveyard(CardId.TearlamentsKitkallos) || Bot.HasInMonstersZone(CardId.TearlamentsKitkallos, false, false, true));
bool flag_4 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsRulkallos) > 0 && (Bot.HasInGraveyard(CardId.TearlamentsKitkallos) || Bot.HasInMonstersZone(CardId.TearlamentsKitkallos, false, false, true));
bool flag_6 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKaleidoHeart) > 0 && !activate_TearlamentsKaleidoHeart_1 && GetZoneCards(CardLocation.Onfield, Enemy).Count(card => card != null && !card.IsShouldNotBeTarget()) > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.TearlamentsKaleidoHeart)
bool flag_6 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKaleidoHeart) > 0 && !activate_TearlamentsKaleidoHeart_1 && GetZoneCards(CardLocation.Onfield, Enemy).Count(card => card != null && !card.IsShouldNotBeTarget()) > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.TearlamentsKaleidoHeart)
&& (!Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) || (Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) && activate_PrimevalPlanetPerlereino_2));
&& (!Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) || (Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) && activate_PrimevalPlanetPerlereino_2));
bool
flag_7
=
fusionExtra
.
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
PredaplantDragostapelia
)
>
0
&&
IsShouldSummonFusion
(-
1
,
-
1
,
false
,
(
int
)
Flag
.
PredaplantDragostapelia
)
&&
Enemy
.
GetMonsters
().
Any
(
card
=>
card
!=
null
&&
card
.
HasType
(
CardType
.
Effect
)
&&
!
card
.
IsDisabled
()
&&
card
.
IsFaceup
()
&&
!
card
.
IsShouldNotBeTarget
());
//&& Enemy.GetMonsters().Any(card => card != null && card.HasType(CardType.Effect) && !card.IsDisabled() && card.IsFaceup() && !card.IsShouldNotBeTarget())
bool flag_7 = fusionExtra.Count(card => card != null && card.Id == CardId.PredaplantDragostapelia) > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.PredaplantDragostapelia);
bool flag_5 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) > 0;
bool flag_5 = fusionExtra.Count(card => card != null && card.Id == CardId.TearlamentsKitkallos) > 0;
if (flag_1) key = 0;
if (flag_1) key = 0;
else if (flag_2) key = 1;
else if (flag_2) key = 1;
...
@@ -611,10 +638,18 @@ namespace WindBot.Game.AI.Decks
...
@@ -611,10 +638,18 @@ namespace WindBot.Game.AI.Decks
public override CardPosition OnSelectPosition(int cardId, IList<CardPosition> positions)
public override CardPosition OnSelectPosition(int cardId, IList<CardPosition> positions)
{
{
NamedCard card = NamedCard.Get(cardId);
NamedCard card = NamedCard.Get(cardId);
if
(
Duel
.
Turn
>
1
&&
Enemy
.
GetMonsterCount
()
<=
0
&&
(
card
.
Attack
>
0
||
cardId
==
CardId
.
FADawnDragster
))
if (Duel.Turn > 1 && Enemy.GetMonsterCount() <= 0 && (card.Attack > 0 || cardId == CardId.FADawnDragster)
&& Duel.Player == 0)
{
{
return CardPosition.FaceUpAttack;
return CardPosition.FaceUpAttack;
}
}
else if (Duel.Player == 1)
{
if (card.Attack < 2000) return CardPosition.FaceUpDefence;
int eatk = Util.GetBestAttack(Enemy);
if(eatk > card.Attack ) return CardPosition.FaceUpDefence;
return CardPosition.FaceUpAttack;
}
else
else
{
{
if (card.Attack <= 1000) return CardPosition.FaceUpDefence;
if (card.Attack <= 1000) return CardPosition.FaceUpDefence;
...
@@ -652,7 +687,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -652,7 +687,7 @@ namespace WindBot.Game.AI.Decks
}
}
if (player == 0 && location == CardLocation.SpellZone && location != CardLocation.FieldZone)
if (player == 0 && location == CardLocation.SpellZone && location != CardLocation.FieldZone)
{
{
List
<
int
>
keys
=
new
List
<
int
>()
{
0
,
1
,
2
,
3
,
4
,
5
};
List<int> keys = new List<int>() { 0, 1, 2, 3, 4 };
while (keys.Count > 0)
while (keys.Count > 0)
{
{
int index = Program.Rand.Next(keys.Count);
int index = Program.Rand.Next(keys.Count);
...
@@ -706,6 +741,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -706,6 +741,7 @@ namespace WindBot.Game.AI.Decks
fusionMaterial.Clear();
fusionMaterial.Clear();
on_chaining_cards.Clear();
on_chaining_cards.Clear();
tgcard = null;
tgcard = null;
no_fusion_card = null;
for (int i = 0; i < mcard_0.Count; ++i) mcard_0[i] = null;
for (int i = 0; i < mcard_0.Count; ++i) mcard_0[i] = null;
for (int i = 0; i < mcard_1.Count; ++i) mcard_1[i] = null;
for (int i = 0; i < mcard_1.Count; ++i) mcard_1[i] = null;
for (int i = 0; i < mcard_2.Count; ++i) mcard_2[i] = null;
for (int i = 0; i < mcard_2.Count; ++i) mcard_2[i] = null;
...
@@ -812,6 +848,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -812,6 +848,7 @@ namespace WindBot.Game.AI.Decks
List<ClientCard> mzone_cards = new List<ClientCard>();
List<ClientCard> mzone_cards = new List<ClientCard>();
List<ClientCard> hand_cards = new List<ClientCard>();
List<ClientCard> hand_cards = new List<ClientCard>();
List<ClientCard> last_cards = new List<ClientCard>();
List<ClientCard> last_cards = new List<ClientCard>();
List<ClientCard> last_cards_2 = new List<ClientCard>();
foreach (var card in Duel.CurrentChain)
foreach (var card in Duel.CurrentChain)
{
{
if (card == null) continue;
if (card == null) continue;
...
@@ -843,9 +880,10 @@ namespace WindBot.Game.AI.Decks
...
@@ -843,9 +880,10 @@ namespace WindBot.Game.AI.Decks
if ((((card.Id == CardId.TearlamentsScheiren && !activate_TearlamentsScheiren_2)
if ((((card.Id == CardId.TearlamentsScheiren && !activate_TearlamentsScheiren_2)
|| (card.Id == CardId.TearlamentsMerrli && !activate_TearlamentsMerrli_2)
|| (card.Id == CardId.TearlamentsMerrli && !activate_TearlamentsMerrli_2)
|| (card.Id == CardId.TearlamentsHavnis && !activate_TearlamentsHavnis_2))
|| (card.Id == CardId.TearlamentsHavnis && !activate_TearlamentsHavnis_2))
&&
last_cards
.
Count
(
mcard
=>
mcard
!=
null
&&
mcard
.
Id
==
card
.
Id
)
<=
0
)
&& last_cards.Count(mcard => mcard != null && mcard.Id == card.Id) <= 0
&& on_chaining_cards.Count(mcard => mcard != null && mcard.Id == card.Id) > 0)
|| (on_chaining_cards.Count(ccard => ccard != null && ccard == card) > 0 && on_chaining_cards.Count(cccard => cccard != null && cccard.Id == card.Id) <= 1
|| (on_chaining_cards.Count(ccard => ccard != null && ccard == card) > 0 && on_chaining_cards.Count(cccard => cccard != null && cccard.Id == card.Id) <= 1
&&
last_cards
.
Count
(
mcard
=>
mcard
!=
null
&&
mcard
.
Id
==
card
.
Id
)
<=
0
))
&& last_cards.Count(mcard => mcard != null && mcard.Id == card.Id) <= 0
&& Duel.CurrentChain.Count(cccard => cccard != null && cccard.Id == card.Id) > 0)|| (no_fusion_card!=null && no_fusion_card==card
))
{
{
last_cards.Add(card);
last_cards.Add(card);
}
}
...
@@ -855,12 +893,16 @@ namespace WindBot.Game.AI.Decks
...
@@ -855,12 +893,16 @@ namespace WindBot.Game.AI.Decks
else if (card.Location == CardLocation.Hand)
else if (card.Location == CardLocation.Hand)
{
{
if (card.Id == CardId.TearlamentsReinoheart) hand_cards.Insert(0, card);
if (card.Id == CardId.TearlamentsReinoheart) hand_cards.Insert(0, card);
else if (Duel.Player == 1 && card.Id == CardId.TearlamentsHavnis && !activate_TearlamentsHavnis_1) last_cards.Add(card);
else hand_cards.Add(card);
else hand_cards.Add(card);
}
}
else if (card.Location == CardLocation.MonsterZone)
else if (card.Location == CardLocation.MonsterZone)
{
{
if
(
card
.
Id
==
CardId
.
TearlamentsKitkallos
||
card
.
Id
==
CardId
.
TearlamentsRulkallos
if (card.Id == CardId.TearlamentsKitkallos && card.IsDisabled()) last_cards.Add(card);
||
card
.
Id
==
CardId
.
TearlamentsKaleidoHeart
||
card
.
Id
==
CardId
.
PredaplantDragostapelia
)
last_cards
.
Add
(
card
);
else if (card.Id == CardId.TearlamentsKitkallos) last_cards_2.Insert(0, card);
else if (card.Id == CardId.TearlamentsRulkallos
|| card.Id == CardId.TearlamentsKaleidoHeart || card.Id == CardId.PredaplantDragostapelia ||
(Duel.Player == 1 && card.Id == CardId.ElShaddollWinda)) last_cards_2.Add(card);
else mzone_cards.Add(card);
else mzone_cards.Add(card);
}
}
else mzone_cards.Add(card);
else mzone_cards.Add(card);
...
@@ -870,6 +912,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -870,6 +912,7 @@ namespace WindBot.Game.AI.Decks
first_cards.AddRange(hand_cards);
first_cards.AddRange(hand_cards);
first_cards.AddRange(mzone_cards);
first_cards.AddRange(mzone_cards);
first_cards.AddRange(last_cards);
first_cards.AddRange(last_cards);
first_cards.AddRange(last_cards_2);
return first_cards;
return first_cards;
}
}
public override IList<ClientCard> OnSelectFusionMaterial(IList<ClientCard> cards, int min, int max)
public override IList<ClientCard> OnSelectFusionMaterial(IList<ClientCard> cards, int min, int max)
...
@@ -949,7 +992,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -949,7 +992,7 @@ namespace WindBot.Game.AI.Decks
return Util.CheckSelectCount(CardsIdToClientCards(ids, cards, false, true), cards, min, max);
return Util.CheckSelectCount(CardsIdToClientCards(ids, cards, false, true), cards, min, max);
}
}
//!
YGO_SCRIPT
&& select_TearlamentsKitkallos && hint == HintMsg.AddToHand
//!
IS_YGOPRO
&& select_TearlamentsKitkallos && hint == HintMsg.AddToHand
if ((IS_YGOPRO && hint == HintMsg.OperateCard) || (!IS_YGOPRO && select_TearlamentsKitkallos && hint == HintMsg.AddToHand))
if ((IS_YGOPRO && hint == HintMsg.OperateCard) || (!IS_YGOPRO && select_TearlamentsKitkallos && hint == HintMsg.AddToHand))
{
{
if (!IS_YGOPRO) select_TearlamentsKitkallos = false;
if (!IS_YGOPRO) select_TearlamentsKitkallos = false;
...
@@ -957,8 +1000,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -957,8 +1000,9 @@ namespace WindBot.Game.AI.Decks
IList<ClientCard> res = new List<ClientCard>();
IList<ClientCard> res = new List<ClientCard>();
if (Duel.Player == 0)
if (Duel.Player == 0)
{
{
if
(!
activate_TearlamentsScheiren_1
&&
!
Bot
.
HasInHand
(
CardId
.
TearlamentsScheiren
)
&&
HasInList
(
cards
,
CardId
.
TearlamentsScheiren
))
ids
.
Add
(
CardId
.
TearlamentsScheiren
);
if (!activate_TearlamentsScheiren_1 && !Bot.HasInHand(CardId.TearlamentsScheiren) && HasInList(cards, CardId.TearlamentsScheiren) && !AllActivated()) ids.Add(CardId.TearlamentsScheiren);
if
(!
activate_TearlamentsMerrli_1
&&
!
Bot
.
HasInHand
(
CardId
.
TearlamentsMerrli
)
&&
HasInList
(
cards
,
CardId
.
TearlamentsMerrli
))
ids
.
Add
(
CardId
.
TearlamentsMerrli
);
if (!activate_TearlamentsMerrli_1 && !Bot.HasInHand(CardId.TearlamentsMerrli) && HasInList(cards, CardId.TearlamentsMerrli) && !AllActivated()) ids.Add(CardId.TearlamentsMerrli);
if(!Bot.HasInHand(CardId.TearlamentsHavnis) && HasInList(cards, CardId.TearlamentsHavnis)) ids.Add(CardId.TearlamentsHavnis);
if (!activate_TearlamentsReinoheart_1 && !Bot.HasInHand(CardId.TearlamentsReinoheart) && HasInList(cards, CardId.TearlamentsReinoheart)) ids.Add(CardId.TearlamentsReinoheart);
if (!activate_TearlamentsReinoheart_1 && !Bot.HasInHand(CardId.TearlamentsReinoheart) && HasInList(cards, CardId.TearlamentsReinoheart)) ids.Add(CardId.TearlamentsReinoheart);
if (ids.Count() <= 0 && !activate_TearlamentsKitkallos_2)
if (ids.Count() <= 0 && !activate_TearlamentsKitkallos_2)
{
{
...
@@ -1073,6 +1117,12 @@ namespace WindBot.Game.AI.Decks
...
@@ -1073,6 +1117,12 @@ namespace WindBot.Game.AI.Decks
}
}
List<ClientCard> mkeycards = new List<ClientCard>();
List<ClientCard> mkeycards = new List<ClientCard>();
List<ClientCard> hkeycards = new List<ClientCard>();
List<ClientCard> hkeycards = new List<ClientCard>();
mkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsKitkallos).ToList();
if (!activate_TearlamentsKitkallos_3 && mkeycards.Count > 0 && !AllActivated() && IsShouldSummonFusion(SETCODE, (int)CardRace.Aqua)
&& ((CheckRemainInDeck(CardId.TearlamentsHavnis) > 0 && !activate_TearlamentsHavnis_2)
|| (CheckRemainInDeck(CardId.TearlamentsMerrli) > 0 && !activate_TearlamentsMerrli_2)
|| (CheckRemainInDeck(CardId.TearlamentsScheiren) > 0 && !activate_TearlamentsScheiren_2)))
return Util.CheckSelectCount(mkeycards, cards, min, max);
if (IsShouldSummonFusion())
if (IsShouldSummonFusion())
{
{
if (!activate_TearlamentsScheiren_2 && HasInList(cards, CardId.TearlamentsScheiren))
if (!activate_TearlamentsScheiren_2 && HasInList(cards, CardId.TearlamentsScheiren))
...
@@ -1090,6 +1140,11 @@ namespace WindBot.Game.AI.Decks
...
@@ -1090,6 +1140,11 @@ namespace WindBot.Game.AI.Decks
hkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsMerrli && card.Location == CardLocation.Hand).ToList();
hkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsMerrli && card.Location == CardLocation.Hand).ToList();
mkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsMerrli && card.Location == CardLocation.MonsterZone).ToList();
mkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsMerrli && card.Location == CardLocation.MonsterZone).ToList();
}
}
else if (!activate_TearlamentsReinoheart_2 && (HasinZoneKeyCard(CardLocation.Hand) || (Bot.Hand.Count(ccard => ccard != null && ccard.HasSetcode(SETCODE) && ccard != cards.Where(card => card != null && card.Location == CardLocation.Hand && card.Id == CardId.TearlamentsReinoheart).FirstOrDefault()) > 0 && HasinZoneKeyCard(CardLocation.Deck))))
{
hkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsReinoheart && card.Location == CardLocation.Hand).ToList();
mkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsReinoheart && card.Location == CardLocation.MonsterZone).ToList();
}
if (mkeycards.Count > 0 || hkeycards.Count > 0)
if (mkeycards.Count > 0 || hkeycards.Count > 0)
{
{
if (Bot.GetMonstersInMainZone().Count < 5)
if (Bot.GetMonstersInMainZone().Count < 5)
...
@@ -1104,12 +1159,6 @@ namespace WindBot.Game.AI.Decks
...
@@ -1104,12 +1159,6 @@ namespace WindBot.Game.AI.Decks
}
}
}
}
}
}
mkeycards
=
cards
.
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
TearlamentsKitkallos
).
ToList
();
if
(!
activate_TearlamentsKitkallos_3
&&
mkeycards
.
Count
>
0
&&
IsShouldSummonFusion
(
SETCODE
,
(
int
)
CardRace
.
Aqua
)
&&
((
CheckRemainInDeck
(
CardId
.
TearlamentsHavnis
)
>
0
&&
!
activate_TearlamentsHavnis_2
)
||
(
CheckRemainInDeck
(
CardId
.
TearlamentsMerrli
)
>
0
&&
!
activate_TearlamentsMerrli_2
)
||
(
CheckRemainInDeck
(
CardId
.
TearlamentsScheiren
)
>
0
&&
!
activate_TearlamentsScheiren_2
)))
return
Util
.
CheckSelectCount
(
mkeycards
,
cards
,
min
,
max
);
mkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsKaleidoHeart).ToList();
mkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsKaleidoHeart).ToList();
if (!activate_TearlamentsKaleidoHeart_2 && IsCanSpSummon() && mkeycards.Count > 0) return Util.CheckSelectCount(mkeycards, cards, min, max);
if (!activate_TearlamentsKaleidoHeart_2 && IsCanSpSummon() && mkeycards.Count > 0) return Util.CheckSelectCount(mkeycards, cards, min, max);
mkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsRulkallos).ToList();
mkeycards = cards.Where(card => card != null && card.Id == CardId.TearlamentsRulkallos).ToList();
...
@@ -1144,11 +1193,14 @@ namespace WindBot.Game.AI.Decks
...
@@ -1144,11 +1193,14 @@ namespace WindBot.Game.AI.Decks
ids.Add(CardId.MudoratheSwordOracle);
ids.Add(CardId.MudoratheSwordOracle);
ids.Add(CardId.KeldotheSacredProtector);
ids.Add(CardId.KeldotheSacredProtector);
}
}
if
(!
activate_TearlamentsReinoheart_2
&&
HasInList
(
cards
,
CardId
.
TearlamentsReinoheart
))
ids
.
Add
(
CardId
.
TearlamentsReinoheart
);
if (!activate_TearlamentsScream_2 && CheckRemainInDeck(CardId.TearlamentsSulliek) > 0) ids.Add(CardId.TearlamentsScream);
if (!activate_TearlamentsScream_2 && CheckRemainInDeck(CardId.TearlamentsSulliek) > 0) ids.Add(CardId.TearlamentsScream);
if (!activate_TearlamentsSulliek_2) ids.Add(CardId.TearlamentsSulliek);
if (!activate_TearlamentsSulliek_2) ids.Add(CardId.TearlamentsSulliek);
if (!activate_TearlamentsReinoheart_2 && HasInList(cards, CardId.TearlamentsReinoheart)) ids.Add(CardId.TearlamentsReinoheart);
if (!cards.Any(card => card != null && !card.HasRace(CardRace.Fairy)))
{
ids.Add(CardId.HeraldofGreenLight);
ids.Add(CardId.HeraldofGreenLight);
ids.Add(CardId.HeraldofOrangeLight);
ids.Add(CardId.HeraldofOrangeLight);
}
ids = ids.Distinct().ToList();
ids = ids.Distinct().ToList();
IList<ClientCard> res = CardsIdToClientCards(ids, cards, false);
IList<ClientCard> res = CardsIdToClientCards(ids, cards, false);
List<ClientCard> temp = new List<ClientCard>(cards);
List<ClientCard> temp = new List<ClientCard>(cards);
...
@@ -1169,7 +1221,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1169,7 +1221,7 @@ namespace WindBot.Game.AI.Decks
if (hint == HintMsg.ToGrave && cards.Any(card => card != null && (card.Location == CardLocation.Deck || card.Location == CardLocation.Extra)) && min == 1 && max == 1)
if (hint == HintMsg.ToGrave && cards.Any(card => card != null && (card.Location == CardLocation.Deck || card.Location == CardLocation.Extra)) && min == 1 && max == 1)
{
{
List<int> cardsid = new List<int>();
List<int> cardsid = new List<int>();
if
(
HasInList
(
cards
,
CardId
.
AgidotheAncientSentinel
)
&&
!
activate_AgidotheAncientSentinel_2
)
if (HasInList(cards, CardId.AgidotheAncientSentinel) && !activate_AgidotheAncientSentinel_2
&& !AllActivated()
)
{
{
if (HasInList(cards, CardId.KelbektheAncientVanguard) && !activate_KelbektheAncientVanguard_2 && Bot.HasInHand(CardId.AgidotheAncientSentinel))
if (HasInList(cards, CardId.KelbektheAncientVanguard) && !activate_KelbektheAncientVanguard_2 && Bot.HasInHand(CardId.AgidotheAncientSentinel))
{
{
...
@@ -1177,7 +1229,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1177,7 +1229,7 @@ namespace WindBot.Game.AI.Decks
}
}
else cardsid.Add(CardId.AgidotheAncientSentinel);
else cardsid.Add(CardId.AgidotheAncientSentinel);
}
}
else
if
(
HasInList
(
cards
,
CardId
.
KelbektheAncientVanguard
)
&&
!
activate_KelbektheAncientVanguard_2
)
else if (HasInList(cards, CardId.KelbektheAncientVanguard) && !activate_KelbektheAncientVanguard_2
&& !AllActivated()
)
{
{
cardsid.Add(CardId.KelbektheAncientVanguard);
cardsid.Add(CardId.KelbektheAncientVanguard);
}
}
...
@@ -1199,6 +1251,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1199,6 +1251,7 @@ namespace WindBot.Game.AI.Decks
if (cards.Any(card => card != null && card.Id == CardId.TearlamentsSulliek) && !activate_TearlamentsSulliek_2) cardsid.Add(CardId.TearlamentsSulliek);
if (cards.Any(card => card != null && card.Id == CardId.TearlamentsSulliek) && !activate_TearlamentsSulliek_2) cardsid.Add(CardId.TearlamentsSulliek);
if (cards.Any(card => card != null && card.Id == CardId.TearlamentsScream) && !activate_TearlamentsScream_2 && CheckRemainInDeck(CardId.TearlamentsSulliek) > 0) cardsid.Add(CardId.TearlamentsScream);
if (cards.Any(card => card != null && card.Id == CardId.TearlamentsScream) && !activate_TearlamentsScream_2 && CheckRemainInDeck(CardId.TearlamentsSulliek) > 0) cardsid.Add(CardId.TearlamentsScream);
IList<ClientCard> res = CardsIdToClientCards(cardsid, cards, false);
IList<ClientCard> res = CardsIdToClientCards(cardsid, cards, false);
if (res.Count > 0) no_fusion_card = res[0];
return res.Count > 0 ? Util.CheckSelectCount(res, cards, min, max) : null;
return res.Count > 0 ? Util.CheckSelectCount(res, cards, min, max) : null;
}
}
if (hint == HintMsg.ToDeck && cards.Any(card => card != null && card.Location == CardLocation.Grave))
if (hint == HintMsg.ToDeck && cards.Any(card => card != null && card.Location == CardLocation.Grave))
...
@@ -1220,7 +1273,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1220,7 +1273,7 @@ namespace WindBot.Game.AI.Decks
return null;
return null;
}
}
int imax = e_cards.Count > max ? max : e_cards.Count < 0 ? min : e_cards.Count;
int imax = e_cards.Count > max ? max : e_cards.Count < 0 ? min : e_cards.Count;
if
(
Duel
.
CurrentChain
==
null
||
Duel
.
ChainTargets
==
null
)
return
Util
.
CheckSelectCount
(
e_
cards
,
cards
,
imax
,
imax
);
if (Duel.CurrentChain == null || Duel.ChainTargets == null) return Util.CheckSelectCount(cards, cards, imax, imax);
foreach (var card in Duel.CurrentChain)
foreach (var card in Duel.CurrentChain)
{
{
if (card == null || card.Controller == 0 || card.Location != CardLocation.Grave) continue;
if (card == null || card.Controller == 0 || card.Location != CardLocation.Grave) continue;
...
@@ -1376,7 +1429,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1376,7 +1429,7 @@ namespace WindBot.Game.AI.Decks
res = CardsIdToClientCards(ids, cards, false);
res = CardsIdToClientCards(ids, cards, false);
return res.Count > 0 ? Util.CheckSelectCount(res, cards, min, max) : null;
return res.Count > 0 ? Util.CheckSelectCount(res, cards, min, max) : null;
}
}
//(
YGO_SCRIPT && hint == HintMsg.Disable) || (!YGO_SCRIPT
&& hint == HintMsg.Negate)
//(
IS_YGOPRO && hint == HintMsg.Disable) || (!IS_YGOPRO
&& hint == HintMsg.Negate)
if (IS_YGOPRO && hint == HintMsg.Disable)
if (IS_YGOPRO && hint == HintMsg.Disable)
{
{
if (chain_TearlamentsSulliek != null && cards.Contains(chain_TearlamentsSulliek))
if (chain_TearlamentsSulliek != null && cards.Contains(chain_TearlamentsSulliek))
...
@@ -1414,11 +1467,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -1414,11 +1467,13 @@ namespace WindBot.Game.AI.Decks
|| (!activate_TearlamentsHavnis_2 && CheckRemainInDeck(CardId.TearlamentsHavnis) > 0)
|| (!activate_TearlamentsHavnis_2 && CheckRemainInDeck(CardId.TearlamentsHavnis) > 0)
|| (!activate_TearlamentsMerrli_2 && CheckRemainInDeck(CardId.TearlamentsMerrli) > 0))) || !activate_TearlamentsKitkallos_2))
|| (!activate_TearlamentsMerrli_2 && CheckRemainInDeck(CardId.TearlamentsMerrli) > 0))) || !activate_TearlamentsKitkallos_2))
{
{
TearlamentsKitkallos_summoned = true;
return Util.CheckSelectCount(res0, cards, min, max);
return Util.CheckSelectCount(res0, cards, min, max);
}
}
res0 = cards.Where(card => card != null && card.Id == CardId.TearlamentsKaleidoHeart).ToList();
res0 = cards.Where(card => card != null && card.Id == CardId.TearlamentsKaleidoHeart).ToList();
if
(
GetZoneCards
(
CardLocation
.
Onfield
,
Enemy
).
Count
(
card
=>
card
!=
null
&&
!
card
.
IsShouldNotBeTarget
())
>
0
&&
IsShouldSummonFusion
(-
1
,
-
1
,
false
,
(
int
)
Flag
.
TearlamentsKaleidoHeart
)
//if (GetZoneCards(CardLocation.Onfield, Enemy).Count(card => card != null && !card.IsShouldNotBeTarget()) > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.TearlamentsKaleidoHeart)
&&
!
activate_TearlamentsKaleidoHeart_1
&&
(!
Bot
.
HasInSpellZone
(
CardId
.
PrimevalPlanetPerlereino
,
true
,
true
)
||
(
Bot
.
HasInSpellZone
(
CardId
.
PrimevalPlanetPerlereino
,
true
,
true
)
&&
activate_PrimevalPlanetPerlereino_2
)))
// && !activate_TearlamentsKaleidoHeart_1 && (!Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) || (Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) && activate_PrimevalPlanetPerlereino_2)))
if(res0.Count>0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.TearlamentsKaleidoHeart))
{
{
ran_fusion_mode_3[i] = true;
ran_fusion_mode_3[i] = true;
return Util.CheckSelectCount(res0, cards, min, max);
return Util.CheckSelectCount(res0, cards, min, max);
...
@@ -1431,7 +1486,8 @@ namespace WindBot.Game.AI.Decks
...
@@ -1431,7 +1486,8 @@ namespace WindBot.Game.AI.Decks
return Util.CheckSelectCount(res0, cards, min, max);
return Util.CheckSelectCount(res0, cards, min, max);
}
}
res0 = cards.Where(card => card != null && card.Id == CardId.PredaplantDragostapelia).ToList();
res0 = cards.Where(card => card != null && card.Id == CardId.PredaplantDragostapelia).ToList();
if
(
res0
.
Count
>
0
&&
IsShouldSummonFusion
(-
1
,
-
1
,
false
,
(
int
)
Flag
.
PredaplantDragostapelia
)
&&
Enemy
.
GetMonsters
().
Any
(
card
=>
card
!=
null
&&
card
.
HasType
(
CardType
.
Effect
)
&&
!
card
.
IsDisabled
()
&&
card
.
IsFaceup
()
&&
!
card
.
IsShouldNotBeTarget
()))
//if (res0.Count > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.PredaplantDragostapelia) && Enemy.GetMonsters().Any(card => card != null && card.HasType(CardType.Effect) && !card.IsDisabled() && card.IsFaceup() && !card.IsShouldNotBeTarget()))
if (res0.Count > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.PredaplantDragostapelia))
{
{
return Util.CheckSelectCount(res0, cards, min, max);
return Util.CheckSelectCount(res0, cards, min, max);
}
}
...
@@ -1448,6 +1504,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1448,6 +1504,7 @@ namespace WindBot.Game.AI.Decks
activate_TearlamentsRulkallos_2 = false;
activate_TearlamentsRulkallos_2 = false;
return Util.CheckSelectCount(res0, cards, min, max);
return Util.CheckSelectCount(res0, cards, min, max);
}
}
TearlamentsKitkallos_summoned = true;
return Util.CheckSelectCount(res1, cards, min, max);
return Util.CheckSelectCount(res1, cards, min, max);
}
}
return Util.CheckSelectCount(res1, cards, min, max);
return Util.CheckSelectCount(res1, cards, min, max);
...
@@ -1460,11 +1517,15 @@ namespace WindBot.Game.AI.Decks
...
@@ -1460,11 +1517,15 @@ namespace WindBot.Game.AI.Decks
if (res.Count > 0 && !activate_TearlamentsKitkallos_1 &&
if (res.Count > 0 && !activate_TearlamentsKitkallos_1 &&
((!activate_TearlamentsScheiren_2 && CheckRemainInDeck(CardId.TearlamentsScheiren) > 0)
((!activate_TearlamentsScheiren_2 && CheckRemainInDeck(CardId.TearlamentsScheiren) > 0)
|| (!activate_TearlamentsHavnis_2 && CheckRemainInDeck(CardId.TearlamentsHavnis) > 0)
|| (!activate_TearlamentsHavnis_2 && CheckRemainInDeck(CardId.TearlamentsHavnis) > 0)
||
(!
activate_TearlamentsMerrli_2
&&
CheckRemainInDeck
(
CardId
.
TearlamentsMerrli
)
>
0
))
&&
Bot
.
GetMonstersInMainZone
().
Count
<
4
)
return
Util
.
CheckSelectCount
(
res
,
cards
,
min
,
max
);
|| (!activate_TearlamentsMerrli_2 && CheckRemainInDeck(CardId.TearlamentsMerrli) > 0)) && Bot.GetMonstersInMainZone().Count < 4)
{
TearlamentsKitkallos_summoned = true;
return Util.CheckSelectCount(res, cards, min, max);
}
res = cards.Where(card => card != null && card.Id == CardId.TearlamentsRulkallos).ToList();
res = cards.Where(card => card != null && card.Id == CardId.TearlamentsRulkallos).ToList();
if (res.Count > 0) return Util.CheckSelectCount(res, cards, min, max);
if (res.Count > 0) return Util.CheckSelectCount(res, cards, min, max);
res = cards.Where(card => card != null && card.Id == CardId.TearlamentsKaleidoHeart).ToList();
res = cards.Where(card => card != null && card.Id == CardId.TearlamentsKaleidoHeart).ToList();
if
(
GetZoneCards
(
CardLocation
.
Onfield
,
Enemy
).
Count
(
card
=>
card
!=
null
&&
!
card
.
IsShouldNotBeTarget
())
>
0
&&
IsShouldSummonFusion
(-
1
,
-
1
,
false
,
(
int
)
Flag
.
TearlamentsKaleidoHeart
)
if (
res.Count>0 &&
GetZoneCards(CardLocation.Onfield, Enemy).Count(card => card != null && !card.IsShouldNotBeTarget()) > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.TearlamentsKaleidoHeart)
&& !activate_TearlamentsKaleidoHeart_1 && (!Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) || (Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) && activate_PrimevalPlanetPerlereino_2)))
&& !activate_TearlamentsKaleidoHeart_1 && (!Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) || (Bot.HasInSpellZone(CardId.PrimevalPlanetPerlereino, true, true) && activate_PrimevalPlanetPerlereino_2)))
{
{
ran_fusion_mode_3[i] = true;
ran_fusion_mode_3[i] = true;
...
@@ -1477,9 +1538,15 @@ namespace WindBot.Game.AI.Decks
...
@@ -1477,9 +1538,15 @@ namespace WindBot.Game.AI.Decks
{
{
return Util.CheckSelectCount(res, cards, min, max);
return Util.CheckSelectCount(res, cards, min, max);
}
}
res = cards.Where(card => card != null && card.Id == CardId.TearlamentsKaleidoHeart).ToList();
if (res.Count > 0 && IsShouldSummonFusion(-1, -1, false, (int)Flag.TearlamentsKaleidoHeart))
{
return Util.CheckSelectCount(res, cards, min, max);
}
res = cards.Where(card => card != null && card.Id == CardId.TearlamentsKitkallos).ToList();
res = cards.Where(card => card != null && card.Id == CardId.TearlamentsKitkallos).ToList();
if (res.Count > 0)
if (res.Count > 0)
{
{
TearlamentsKitkallos_summoned = true;
return Util.CheckSelectCount(res, cards, min, max);
return Util.CheckSelectCount(res, cards, min, max);
}
}
return null;
return null;
...
@@ -1563,12 +1630,12 @@ namespace WindBot.Game.AI.Decks
...
@@ -1563,12 +1630,12 @@ namespace WindBot.Game.AI.Decks
{
{
List<int> ids = new List<int>();
List<int> ids = new List<int>();
if (!activate_TearlamentsScheiren_1 && !Bot.HasInHand(CardId.TearlamentsScheiren) && CheckRemainInDeck(CardId.TearlamentsScheiren) > 0 && Bot.Hand.Count(card => card != null && card.HasType(CardType.Monster)) > 0) ids.Add(CardId.TearlamentsScheiren);
if (!activate_TearlamentsScheiren_1 && !Bot.HasInHand(CardId.TearlamentsScheiren) && CheckRemainInDeck(CardId.TearlamentsScheiren) > 0 && Bot.Hand.Count(card => card != null && card.HasType(CardType.Monster)) > 0) ids.Add(CardId.TearlamentsScheiren);
if
(!
activate_TearlamentsMerrli_1
&&
!
Bot
.
HasInHand
(
CardId
.
TearlamentsMerrli
)
&&
CheckRemainInDeck
(
CardId
.
TearlamentsMerrli
)
>
0
)
ids
.
Add
(
CardId
.
TearlamentsMerrli
);
if (!activate_TearlamentsMerrli_1 && !Bot.HasInHand(CardId.TearlamentsMerrli) && CheckRemainInDeck(CardId.TearlamentsMerrli) > 0
&& (!summoned ||!activate_TearlamentsKitkallos_2)
) ids.Add(CardId.TearlamentsMerrli);
if (!activate_TearlamentsReinoheart_1 && !Bot.HasInHand(CardId.TearlamentsReinoheart) && CheckRemainInDeck(CardId.TearlamentsReinoheart) > 0) ids.Add(CardId.TearlamentsReinoheart);
if (!activate_TearlamentsReinoheart_1 && !Bot.HasInHand(CardId.TearlamentsReinoheart) && CheckRemainInDeck(CardId.TearlamentsReinoheart) > 0) ids.Add(CardId.TearlamentsReinoheart);
if (!activate_TearlamentsScheiren_1 && !Bot.HasInHand(CardId.TearlamentsScheiren) && CheckRemainInDeck(CardId.TearlamentsScheiren) > 0) ids.Add(CardId.TearlamentsScheiren);
if (!activate_TearlamentsScheiren_1 && !Bot.HasInHand(CardId.TearlamentsScheiren) && CheckRemainInDeck(CardId.TearlamentsScheiren) > 0) ids.Add(CardId.TearlamentsScheiren);
if (!activate_TearlamentsHavnis_1 && !Bot.HasInHand(CardId.TearlamentsHavnis) && CheckRemainInDeck(CardId.TearlamentsHavnis) > 0)
if (!activate_TearlamentsHavnis_1 && !Bot.HasInHand(CardId.TearlamentsHavnis) && CheckRemainInDeck(CardId.TearlamentsHavnis) > 0)
{
{
if
(
Duel
.
Player
==
0
&&
Duel
.
Phase
!=
DuelPhase
.
End
)
ids
.
Add
(
CardId
.
TearlamentsHavnis
);
if (Duel.Player == 0 &&
(Duel.Phase != DuelPhase.End || AllActivated())
) ids.Add(CardId.TearlamentsHavnis);
else ids.Insert(0, CardId.TearlamentsHavnis);
else ids.Insert(0, CardId.TearlamentsHavnis);
}
}
ids.AddRange(new List<int>() { CardId.TearlamentsScheiren, CardId.TearlamentsMerrli, CardId.TearlamentsHavnis, CardId.TearlamentsReinoheart });
ids.AddRange(new List<int>() { CardId.TearlamentsScheiren, CardId.TearlamentsMerrli, CardId.TearlamentsHavnis, CardId.TearlamentsReinoheart });
...
@@ -1754,7 +1821,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1754,7 +1821,7 @@ namespace WindBot.Game.AI.Decks
}
}
private bool IPSummon_2()
private bool IPSummon_2()
{
{
if
(
Bot
.
GetMonsterCount
()
<=
2
)
return
false
;
if (
(Bot.GetMonsterCount() <= 2 && Bot.Hand.Count<=2 && !Bot.HasInHand(CardId.TearlamentsScheiren) && !activate_TearlamentsScheiren_1&& !Bot.HasInHand(CardId.TearlamentsMerrli) && !activate_TearlamentsMerrli_1 ) || AllActivated()
) return false;
List<ClientCard> key_cards = Bot.GetMonsters().Where(card => card != null && card.Id == CardId.ElShaddollWinda && !card.IsDisabled() && card.IsFaceup()).ToList();
List<ClientCard> key_cards = Bot.GetMonsters().Where(card => card != null && card.Id == CardId.ElShaddollWinda && !card.IsDisabled() && card.IsFaceup()).ToList();
if (key_cards.Count <= 0 || key_cards.Count > 1 || !IsAvailableLinkZone()) return false;
if (key_cards.Count <= 0 || key_cards.Count > 1 || !IsAvailableLinkZone()) return false;
List<ClientCard> cards = Bot.GetMonsters().Where(card => card != null && !card.HasType(CardType.Link) && !no_link_ids.Contains(card.Id) && card.IsFaceup()).ToList();
List<ClientCard> cards = Bot.GetMonsters().Where(card => card != null && !card.HasType(CardType.Link) && !no_link_ids.Contains(card.Id) && card.IsFaceup()).ToList();
...
@@ -1802,10 +1869,15 @@ namespace WindBot.Game.AI.Decks
...
@@ -1802,10 +1869,15 @@ namespace WindBot.Game.AI.Decks
SetSpSummon();
SetSpSummon();
return true;
return true;
}
}
private bool AbyssDwellerSummon_2()
{
if (Bot.GetMonsters().Any(card => card != null && card.IsFaceup() && (card.Id == CardId.TearlamentsRulkallos || card.Id == CardId.TearlamentsKaleidoHeart))) return true;
return false;
}
private bool IPEffect()
private bool IPEffect()
{
{
if (Duel.LastChainPlayer == 0) return false;
if (Duel.LastChainPlayer == 0) return false;
if
(!
Bot
.
HasInExtra
(
CardId
.
KnightmareUnicorn
)
&&
!
Bot
.
HasInExtra
(
CardId
.
MekkKnightCrusadiaAvramax
))
return
false
;
if (!Bot.HasInExtra(CardId.KnightmareUnicorn) && !Bot.HasInExtra(CardId.MekkKnightCrusadiaAvramax)
&& !Bot.HasInExtra(CardId.UnderworldGoddessoftheClosedWorld)
) return false;
List<ClientCard> m = new List<ClientCard>();
List<ClientCard> m = new List<ClientCard>();
List<ClientCard> pre_m = new List<ClientCard>();
List<ClientCard> pre_m = new List<ClientCard>();
if (Bot.HasInExtra(CardId.UnderworldGoddessoftheClosedWorld))
if (Bot.HasInExtra(CardId.UnderworldGoddessoftheClosedWorld))
...
@@ -1832,7 +1904,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1832,7 +1904,7 @@ namespace WindBot.Game.AI.Decks
m.Add(card);
m.Add(card);
if (link_count >= 2) break;
if (link_count >= 2) break;
}
}
if
(
link_count
>
2
)
if (link_count >
=
2)
{
{
AI.SelectCard(CardId.UnderworldGoddessoftheClosedWorld);
AI.SelectCard(CardId.UnderworldGoddessoftheClosedWorld);
m.Insert(0, Card);
m.Insert(0, Card);
...
@@ -1858,7 +1930,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1858,7 +1930,7 @@ namespace WindBot.Game.AI.Decks
m.Add(card);
m.Add(card);
if (link_count >= 2) break;
if (link_count >= 2) break;
}
}
if
(
link_count
>
2
)
if (link_count >
=
2)
{
{
AI.SelectCard(CardId.MekkKnightCrusadiaAvramax);
AI.SelectCard(CardId.MekkKnightCrusadiaAvramax);
m.Insert(0, Card);
m.Insert(0, Card);
...
@@ -1885,7 +1957,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1885,7 +1957,7 @@ namespace WindBot.Game.AI.Decks
m.Add(card);
m.Add(card);
if (link_count >= 1) break;
if (link_count >= 1) break;
}
}
if
(
link_count
>
1
)
if (link_count >
=
1)
{
{
AI.SelectCard(CardId.KnightmareUnicorn);
AI.SelectCard(CardId.KnightmareUnicorn);
m.Insert(0, Card);
m.Insert(0, Card);
...
@@ -2038,6 +2110,23 @@ namespace WindBot.Game.AI.Decks
...
@@ -2038,6 +2110,23 @@ namespace WindBot.Game.AI.Decks
private bool DestoryEnemyCard()
private bool DestoryEnemyCard()
{
{
if (Duel.Player == 0 && Card.Id == CardId.PrimevalPlanetPerlereino && !on_chaining_cards.Any(ccard => ccard != null && !ccard.IsDisabled() && ccard.Controller == 0 && ccard.Id == CardId.TearlamentsKitkallos)
&& Bot.HasInMonstersZone(CardId.TearlamentsKitkallos) && !activate_TearlamentsKitkallos_3
&& !AllActivated())
{
List<ClientCard> temp = new List<ClientCard>();
List<ClientCard> temp2 = new List<ClientCard>();
foreach (var ccard in Bot.GetMonsters())
{
if (ccard == null) continue;
if (ccard.Id == CardId.TearlamentsKitkallos && ccard.IsDisabled()) temp.Add(ccard);
else if(ccard.Id == CardId.TearlamentsKitkallos) temp2.Add(ccard);
}
temp.AddRange(temp2);
AI.SelectCard(temp);
activate_PrimevalPlanetPerlereino_2 = true;
return true;
}
ClientCard card = Util.GetProblematicEnemyMonster(0, true);
ClientCard card = Util.GetProblematicEnemyMonster(0, true);
if (card != null && (tgcard == null || tgcard != card))
if (card != null && (tgcard == null || tgcard != card))
{
{
...
@@ -2094,6 +2183,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -2094,6 +2183,9 @@ namespace WindBot.Game.AI.Decks
{
{
if (Duel.Player == 0)
if (Duel.Player == 0)
{
{
if (!IsCanSpSummon() && CheckRemainInDeck(CardId.MudoratheSwordOracle) <= 0 && CheckRemainInDeck(CardId.KeldotheSacredProtector) <= 0) return false;
if ((AllActivated() || Bot.ExtraDeck.Count(card=>card!=null && card.HasType(CardType.Fusion) && card.Id!=CardId.ElderEntityNtss)<=0)
&& CheckRemainInDeck(CardId.MudoratheSwordOracle)<=0 && CheckRemainInDeck(CardId.KeldotheSacredProtector)<=0) return false;
if ((activate_KelbektheAncientVanguard_2 || CheckRemainInDeck(CardId.KelbektheAncientVanguard) <= 0)
if ((activate_KelbektheAncientVanguard_2 || CheckRemainInDeck(CardId.KelbektheAncientVanguard) <= 0)
&& (activate_AgidotheAncientSentinel_2 || CheckRemainInDeck(CardId.AgidotheAncientSentinel) <= 0) && Bot.HasInExtra(CardId.SprightElf))
&& (activate_AgidotheAncientSentinel_2 || CheckRemainInDeck(CardId.AgidotheAncientSentinel) <= 0) && Bot.HasInExtra(CardId.SprightElf))
{
{
...
@@ -2101,7 +2193,6 @@ namespace WindBot.Game.AI.Decks
...
@@ -2101,7 +2193,6 @@ namespace WindBot.Game.AI.Decks
if (cards.Count() >= 1) return false;
if (cards.Count() >= 1) return false;
}
}
}
}
activate_DivineroftheHerald = true;
activate_DivineroftheHerald = true;
return true;
return true;
}
}
...
@@ -2135,7 +2226,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -2135,7 +2226,7 @@ namespace WindBot.Game.AI.Decks
else if (Card.Location == CardLocation.Grave)
else if (Card.Location == CardLocation.Grave)
{
{
ClientCard chain_card = Util.GetLastChainCard();
ClientCard chain_card = Util.GetLastChainCard();
if
(
chain_card
!=
null
&&
chain_card
.
Controller
==
0
&&
(
chain_card
.
Id
==
CardId
.
TearlamentsRulkallos
||
chain_card
.
Id
==
CardId
.
UnderworldGoddessoftheClosedWorld
||
chain_card
.
Id
==
CardId
.
FADawnDragster
)
)
return
false
;
if (chain_card != null && chain_card.Controller == 0) return false;
if (GetZoneCards(CardLocation.Grave, Enemy).Count() <= 0 && Bot.Deck.Count >= 3) return false;
if (GetZoneCards(CardLocation.Grave, Enemy).Count() <= 0 && Bot.Deck.Count >= 3) return false;
if ((Duel.CurrentChain == null || Duel.CurrentChain.Count <= 0) && Bot.Deck.Count >= 3) return false;
if ((Duel.CurrentChain == null || Duel.CurrentChain.Count <= 0) && Bot.Deck.Count >= 3) return false;
if (Duel.CurrentChain.Any(card => card != null && card.Controller == 0 && (card.Id == CardId.MudoratheSwordOracle || card.Id == CardId.KeldotheSacredProtector) || card.Id == CardId.NaelshaddollAriel)) return false;
if (Duel.CurrentChain.Any(card => card != null && card.Controller == 0 && (card.Id == CardId.MudoratheSwordOracle || card.Id == CardId.KeldotheSacredProtector) || card.Id == CardId.NaelshaddollAriel)) return false;
...
@@ -2194,7 +2285,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -2194,7 +2285,7 @@ namespace WindBot.Game.AI.Decks
}
}
else
else
{
{
if (AllActivated() && (!Bot.GetMonsters().Any(card=>card!=null && card.IsFaceup() && card.Level==4) || !Bot.HasInExtra(CardId.AbyssDweller))) return false;
activate_TearlamentsScheiren_1 = true;
activate_TearlamentsScheiren_1 = true;
SetSpSummon();
SetSpSummon();
return true;
return true;
...
@@ -2313,6 +2404,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -2313,6 +2404,7 @@ namespace WindBot.Game.AI.Decks
}
}
else
else
{
{
if (Card.IsDisabled()) return false;
activate_TearlamentsRulkallos_1 = true;
activate_TearlamentsRulkallos_1 = true;
return true;
return true;
}
}
...
@@ -2323,22 +2415,39 @@ namespace WindBot.Game.AI.Decks
...
@@ -2323,22 +2415,39 @@ namespace WindBot.Game.AI.Decks
{
{
if (Duel.Player == 1)
if (Duel.Player == 1)
{
{
if
(!
activate_AgidotheAncientSentinel_2
&&
(
Bot
.
HasInHand
(
CardId
.
HeraldofOrangeLight
)
||
Bot
.
HasInHand
(
CardId
.
HeraldofGreenLight
))
//if (!activate_AgidotheAncientSentinel_2 && (Bot.HasInHand(CardId.HeraldofOrangeLight) || Bot.HasInHand(CardId.HeraldofGreenLight))
&&
Bot
.
Hand
.
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
AgidotheAncientSentinel
)
<=
1
)
return
false
;
// && Bot.Hand.Count(card => card != null && card.Id == CardId.AgidotheAncientSentinel) <= 1) return false;
return false;
}
}
else
{
if((!Bot.HasInGraveyard(CardId.KelbektheAncientVanguard) && !Bot.HasInGraveyard(CardId.MudoratheSwordOracle)
&& !Bot.HasInGraveyard(CardId.KeldotheSacredProtector) && Bot.Hand.Count(card => card != null && card.Id == CardId.AgidotheAncientSentinel)<=1)
|| Bot.GetMonstersInMainZone().Count>=4) return false;
}
if(!activate_AgidotheAncientSentinel_2 && (Bot.HasInHand(CardId.HeraldofOrangeLight) || Bot.HasInHand(CardId.HeraldofGreenLight))
&& Bot.Hand.Count(card => card != null && card.Id == CardId.AgidotheAncientSentinel) <= 1) return false;
SetSpSummon();
SetSpSummon();
return true;
return true;
}
}
else
else
{
{
if (AllActivated() && !Duel.CurrentChain.Any(card => card != null && card.Controller == 0 && (card.Id == CardId.TearlamentsHavnis || card.Id == CardId.TearlamentsMerrli || card.Id == CardId.TearlamentsScheiren))) return false;
activate_AgidotheAncientSentinel_2 = true;
activate_AgidotheAncientSentinel_2 = true;
return true;
return true;
}
}
}
}
private bool AllActivated()
{
return (activate_TearlamentsScheiren_2 || CheckRemainInDeck(CardId.TearlamentsScheiren) <= 0)
&& (activate_TearlamentsHavnis_2 || CheckRemainInDeck(CardId.TearlamentsHavnis) <= 0)
&& (activate_TearlamentsMerrli_2 || CheckRemainInDeck(CardId.TearlamentsMerrli) <= 0);
}
private bool KelbektheAncientVanguardEffect()
private bool KelbektheAncientVanguardEffect()
{
{
if (Card.Location == CardLocation.Hand)
if (Card.Location == CardLocation.Hand)
{
{
if (Duel.LastChainPlayer == 0) return false;
if ((Bot.HasInHand(CardId.HeraldofOrangeLight) || Bot.HasInHand(CardId.HeraldofGreenLight))
if ((Bot.HasInHand(CardId.HeraldofOrangeLight) || Bot.HasInHand(CardId.HeraldofGreenLight))
&& !activate_KelbektheAncientVanguard_2) return false;
&& !activate_KelbektheAncientVanguard_2) return false;
List<ClientCard> cards = Enemy.GetMonsters();
List<ClientCard> cards = Enemy.GetMonsters();
...
@@ -2351,6 +2460,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -2351,6 +2460,7 @@ namespace WindBot.Game.AI.Decks
}
}
else
else
{
{
if (AllActivated() && !Duel.CurrentChain.Any(card=>card!=null && card.Controller==0 && (card.Id==CardId.TearlamentsHavnis||card.Id==CardId.TearlamentsMerrli || card.Id==CardId.TearlamentsScheiren))) return false;
activate_KelbektheAncientVanguard_2 = true;
activate_KelbektheAncientVanguard_2 = true;
return true;
return true;
}
}
...
@@ -2359,6 +2469,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -2359,6 +2469,7 @@ namespace WindBot.Game.AI.Decks
{
{
if (Card.Location == CardLocation.MonsterZone)
if (Card.Location == CardLocation.MonsterZone)
{
{
if (AllActivated()) return false;
activate_TearlamentsMerrli_1 = true;
activate_TearlamentsMerrli_1 = true;
return true;
return true;
}
}
...
@@ -2371,6 +2482,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -2371,6 +2482,7 @@ namespace WindBot.Game.AI.Decks
{
{
if (Card.Location == CardLocation.Hand)
if (Card.Location == CardLocation.Hand)
{
{
if (AllActivated()) return false;
activate_TearlamentsHavnis_1 = true;
activate_TearlamentsHavnis_1 = true;
return true;
return true;
}
}
...
@@ -2393,7 +2505,8 @@ namespace WindBot.Game.AI.Decks
...
@@ -2393,7 +2505,8 @@ namespace WindBot.Game.AI.Decks
foreach (var card in temp)
foreach (var card in temp)
{
{
if ((card.Id == CardId.TearlamentsScheiren && !activate_TearlamentsScheiren_1)
if ((card.Id == CardId.TearlamentsScheiren && !activate_TearlamentsScheiren_1)
||
(
card
.
Id
==
CardId
.
TearlamentsMerrli
&&
!
summoned
&&
!
activate_TearlamentsMerrli_1
))
|| (card.Id == CardId.TearlamentsMerrli && !summoned && !activate_TearlamentsMerrli_1)
||(card.Id==CardId.TearlamentsHavnis && cards.Count(ccard=>ccard!=null && ccard.Id==CardId.TearlamentsHavnis) > 1))
cards.Remove(card);
cards.Remove(card);
}
}
if (cards.Count() <= 0) return false;
if (cards.Count() <= 0) return false;
...
@@ -2403,7 +2516,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -2403,7 +2516,7 @@ namespace WindBot.Game.AI.Decks
}
}
else
else
{
{
if
(
activate_TearlamentsHavnis_2
&&
activate_TearlamentsHavnis_2
&&
activate_TearlamentsScheiren_2
)
return
false
;
if (
AllActivated()
) return false;
activate_TearlamentsReinoheart_1 = true;
activate_TearlamentsReinoheart_1 = true;
return true;
return true;
}
}
...
@@ -2420,41 +2533,48 @@ namespace WindBot.Game.AI.Decks
...
@@ -2420,41 +2533,48 @@ namespace WindBot.Game.AI.Decks
}
}
else return true;
else return true;
}
}
private bool TearlamentsKitkallosEffect_2()
{
if (Bot.HasInMonstersZone(CardId.ElShaddollWinda, true, false, true)) return TearlamentsKitkallosEffect();
return false;
}
private bool TearlamentsKitkallosEffect()
private bool TearlamentsKitkallosEffect()
{
{
if (ActivateDescription == Util.GetStringId(CardId.TearlamentsKitkallos, 1))
if (ActivateDescription == Util.GetStringId(CardId.TearlamentsKitkallos, 1))
{
{
if (Card.IsDisabled()) return false;
if (Card.IsDisabled()) return false;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
TearlamentsKitkallos
)
&&
!
activate_TearlamentsKitkallos_3
)
AI
.
SelectCard
(
CardId
.
TearlamentsKitkallos
);
if (
AllActivated() && !Bot.HasInGraveyard(CardId.TearlamentsKaleidoHeart) && !Bot.HasInGraveyard(CardId.TearlamentsRulkallos)
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
AgidotheAncientSentinel
)
&&
!
activate_AgidotheAncientSentinel_2
)
AI
.
SelectCard
(
CardId
.
AgidotheAncientSentinel
)
;
&& !Bot.HasInGraveyard(CardId.TearlamentsKitkallos)) return false
;
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
KelbektheAncientVanguard
)
&&
!
activate_KelbektheAncientVanguard_2
)
AI
.
SelectCard
(
CardId
.
KelbektheAncientVanguard
);
if(Bot.HasInMonstersZone(CardId.ElShaddollWinda,true,false,true)) AI.SelectCard(CardId.ElShaddollWinda
);
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
ShaddollDragon
)
&&
Enemy
.
GetSpellCount
()
>
0
)
AI
.
SelectCard
(
CardId
.
ShaddollDragon
);
else if (Bot.HasInMonstersZone(CardId.
TearlamentsKitkallos) && !activate_TearlamentsKitkallos_3 && !AllActivated()) AI.SelectCard(CardId.TearlamentsKitkallos
);
else
if
(!
activate_TearlamentsScheiren_2
&&
Bot
.
HasInMonstersZone
(
CardId
.
TearlamentsScheiren
)
&&
IsShouldSummonFusion
(
SETCODE
,
(
int
)
CardRace
.
Aqua
))
AI
.
SelectCard
(
CardId
.
TearlamentsScheiren
);
else if (!activate_TearlamentsScheiren_2 && Bot.HasInMonstersZone(CardId.TearlamentsScheiren) && IsShouldSummonFusion()) AI.SelectCard(CardId.TearlamentsScheiren);
else
if
(!
activate_TearlamentsMerrli_2
&&
Bot
.
HasInMonstersZone
(
CardId
.
TearlamentsMerrli
)
&&
IsShouldSummonFusion
(
SETCODE
,
(
int
)
CardRace
.
Aqua
))
AI
.
SelectCard
(
CardId
.
TearlamentsMerrli
);
else if (!activate_TearlamentsMerrli_2 && Bot.HasInMonstersZone(CardId.TearlamentsMerrli) && IsShouldSummonFusion()) AI.SelectCard(CardId.TearlamentsMerrli);
else
if
(!
activate_TearlamentsHavnis_2
&&
Bot
.
HasInMonstersZone
(
CardId
.
TearlamentsHavnis
)
&&
IsShouldSummonFusion
(
SETCODE
,
(
int
)
CardRace
.
Aqua
))
AI
.
SelectCard
(
CardId
.
TearlamentsHavnis
);
else if (!activate_TearlamentsHavnis_2 && Bot.HasInMonstersZone(CardId.TearlamentsHavnis) && IsShouldSummonFusion()) AI.SelectCard(CardId.TearlamentsHavnis);
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
TearlamentsReinoheart
)
&&
!
activate_TearlamentsReinoheart_1
)
AI
.
SelectCard
(
CardId
.
TearlamentsReinoheart
);
else if (Bot.HasInMonstersZone(CardId.TearlamentsReinoheart) && !activate_TearlamentsReinoheart_1
&& !AllActivated()
) AI.SelectCard(CardId.TearlamentsReinoheart);
else if (Bot.HasInMonstersZone(CardId.Eva) && Bot.Graveyard.Count(card => card != null && card.HasAttribute(CardAttribute.Light) && card.HasRace(CardRace.Fairy)) > 0
else if (Bot.HasInMonstersZone(CardId.Eva) && Bot.Graveyard.Count(card => card != null && card.HasAttribute(CardAttribute.Light) && card.HasRace(CardRace.Fairy)) > 0
&& (CheckRemainInDeck(CardId.HeraldofGreenLight) > 0 || CheckRemainInDeck(CardId.HeraldofOrangeLight) > 0)) AI.SelectCard(CardId.Eva);
&& (CheckRemainInDeck(CardId.HeraldofGreenLight) > 0 || CheckRemainInDeck(CardId.HeraldofOrangeLight) > 0)) AI.SelectCard(CardId.Eva);
else if ((Bot.HasInExtra(CardId.TearlamentsRulkallos) && !Bot.HasInGraveyard(CardId.TearlamentsKitkallos))
else if ((Bot.HasInExtra(CardId.TearlamentsRulkallos) && !Bot.HasInGraveyard(CardId.TearlamentsKitkallos))
|| (Bot.HasInExtra(CardId.PredaplantDragostapelia) && Bot.Graveyard.Count(card => card != null && card.HasType(CardType.Fusion)) <= 0)) AI.SelectCard(CardId.TearlamentsKitkallos);
|| (Bot.HasInExtra(CardId.PredaplantDragostapelia) && Bot.Graveyard.Count(card => card != null && card.HasType(CardType.Fusion)) <= 0)) AI.SelectCard(CardId.TearlamentsKitkallos);
else if (Bot.HasInMonstersZone(CardId.ShaddollDragon) && Enemy.GetSpellCount() > 0) AI.SelectCard(CardId.ShaddollDragon);
else
else
{
{
List<ClientCard> mcards = GetZoneCards(CardLocation.MonsterZone, Bot);
List<ClientCard> mcards = GetZoneCards(CardLocation.MonsterZone, Bot);
mcards.Sort(CardContainer.CompareCardAttack);
mcards.Sort(CardContainer.CompareCardAttack);
AI.SelectCard(mcards);
AI.SelectCard(mcards);
}
}
if
(!
activate_TearlamentsMerrli_1
&&
Bot
.
HasInGraveyard
(
CardId
.
TearlamentsMerrli
))
AI
.
SelectNextCard
(
Bot
.
Graveyard
.
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
TearlamentsMerrli
).
ToList
());
if
(!activate_TearlamentsKitkallos_1 && Bot.HasInGraveyard(CardId.TearlamentsKitkallos)) AI.SelectNextCard(Bot.Graveyard.Where(card => card != null && card.Id == CardId.TearlamentsKitkallos
).ToList());
else
if
(!
activate_TearlamentsScheiren_1
&&
Bot
.
HasInGraveyard
(
CardId
.
TearlamentsScheiren
))
AI
.
SelectNextCard
(
Bot
.
Graveyard
.
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
TearlamentsScheiren
).
ToList
());
if (!activate_TearlamentsMerrli_1 && Bot.HasInGraveyard(CardId.TearlamentsMerrli) && !AllActivated()) AI.SelectNextCard(Bot.Graveyard.Where(card => card != null && card.Id == CardId.TearlamentsMerrli
).ToList());
else
if
(!
activate_TearlamentsMerrli_1
&&
Bot
.
HasInHand
(
CardId
.
TearlamentsMerrli
))
AI
.
SelectNextCard
(
Bot
.
Hand
.
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
TearlamentsMerrli
).
ToList
());
else if (!activate_TearlamentsMerrli_1 && Bot.HasInHand(CardId.TearlamentsMerrli)
&& !AllActivated()
) AI.SelectNextCard(Bot.Hand.Where(card => card != null && card.Id == CardId.TearlamentsMerrli).ToList());
else
if
(!
activate_TearlamentsReinoheart_1
&&
Bot
.
HasInGraveyard
(
CardId
.
TearlamentsReinoheart
))
AI
.
SelectNextCard
(
Bot
.
Graveyard
.
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
TearlamentsReinoheart
).
ToList
());
else if (!activate_TearlamentsReinoheart_1 && Bot.HasInGraveyard(CardId.TearlamentsReinoheart)
&& !AllActivated()
) AI.SelectNextCard(Bot.Graveyard.Where(card => card != null && card.Id == CardId.TearlamentsReinoheart).ToList());
else
if
(!
activate_TearlamentsReinoheart_1
&&
Bot
.
HasInHand
(
CardId
.
TearlamentsReinoheart
))
AI
.
SelectNextCard
(
Bot
.
Hand
.
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
TearlamentsReinoheart
).
ToList
());
else if (!activate_TearlamentsReinoheart_1 && Bot.HasInHand(CardId.TearlamentsReinoheart)
&& !AllActivated()
) AI.SelectNextCard(Bot.Hand.Where(card => card != null && card.Id == CardId.TearlamentsReinoheart).ToList());
else
AI
.
SelectNextCard
(
CardId
.
Tearlaments
Merrli
);
else AI.SelectNextCard(CardId.Tearlaments
KaleidoHeart,CardId.TearlamentsRulkallos,CardId.TearlamentsKitkallos
);
activate_TearlamentsKitkallos_2 = true;
activate_TearlamentsKitkallos_2 = true;
SetSpSummon();
SetSpSummon();
return true;
return true;
}
}
else if (Card.Location == CardLocation.Grave)
else if (Card.Location == CardLocation.Grave)
{
{
if (AllActivated()) return false;
activate_TearlamentsKitkallos_3 = true;
activate_TearlamentsKitkallos_3 = true;
return true;
return true;
}
}
...
@@ -2466,6 +2586,22 @@ namespace WindBot.Game.AI.Decks
...
@@ -2466,6 +2586,22 @@ namespace WindBot.Game.AI.Decks
return true;
return true;
}
}
}
}
private bool HasinZoneKeyCard(CardLocation loc)
{
if (loc == CardLocation.Hand)
{
if (!activate_TearlamentsScheiren_2 && Bot.HasInHand(CardId.TearlamentsScheiren)) return true;
if (!activate_TearlamentsHavnis_2 && Bot.HasInHand(CardId.TearlamentsHavnis)) return true;
if (!activate_TearlamentsMerrli_2 && Bot.HasInHand(CardId.TearlamentsMerrli)) return true;
}
if (loc == CardLocation.Deck)
{
if (!activate_TearlamentsScheiren_2 && CheckRemainInDeck(CardId.TearlamentsScheiren)>0) return true;
if (!activate_TearlamentsHavnis_2 && CheckRemainInDeck(CardId.TearlamentsHavnis)>0) return true;
if (!activate_TearlamentsMerrli_2 && CheckRemainInDeck(CardId.TearlamentsMerrli)>0) return true;
}
return false;
}
private bool TearlamentsSulliekEffect()
private bool TearlamentsSulliekEffect()
{
{
if (SpellActivate()) return true;
if (SpellActivate()) return true;
...
@@ -2484,12 +2620,15 @@ namespace WindBot.Game.AI.Decks
...
@@ -2484,12 +2620,15 @@ namespace WindBot.Game.AI.Decks
{
{
if (Duel.Player == 1 || Duel.Phase == DuelPhase.End)
if (Duel.Player == 1 || Duel.Phase == DuelPhase.End)
{
{
if (Duel.LastChainPlayer == 0 || Duel.CurrentChain.Count(ccard=>ccard!=null &&ccard.Controller==0
&& (ccard.Id==CardId.TearlamentsHavnis || ccard.Id == CardId.TearlamentsMerrli || ccard.Id == CardId.TearlamentsScheiren))>0) return false;
if (((Bot.HasInMonstersZone(CardId.TearlamentsKitkallos,false,false,true) && !activate_TearlamentsKitkallos_3 && IsShouldSummonFusion(SETCODE, (int)CardRace.Aqua)
if (((Bot.HasInMonstersZone(CardId.TearlamentsKitkallos,false,false,true) && !activate_TearlamentsKitkallos_3 && IsShouldSummonFusion(SETCODE, (int)CardRace.Aqua)
&& ((CheckRemainInDeck(CardId.TearlamentsHavnis) > 0 && !activate_TearlamentsHavnis_2)
&& ((CheckRemainInDeck(CardId.TearlamentsHavnis) > 0 && !activate_TearlamentsHavnis_2)
|| (CheckRemainInDeck(CardId.TearlamentsMerrli) > 0 && !activate_TearlamentsMerrli_2)
|| (CheckRemainInDeck(CardId.TearlamentsMerrli) > 0 && !activate_TearlamentsMerrli_2)
|| (CheckRemainInDeck(CardId.TearlamentsScheiren) > 0 && !activate_TearlamentsScheiren_2)) && Bot.GetMonsterCount()<3)
|| (CheckRemainInDeck(CardId.TearlamentsScheiren) > 0 && !activate_TearlamentsScheiren_2)) && Bot.GetMonsterCount()<3)
||(
IsCanFusionSummon
()
&&
(
Bot
.
HasInMonstersZone
(
CardId
.
TearlamentsScheiren
,
false
,
false
,
true
)
||
Bot
.
HasInMonstersZone
(
CardId
.
TearlamentsHavnis
,
false
,
false
,
true
)
||(IsCanFusionSummon() && (Bot.HasInMonstersZone(CardId.TearlamentsScheiren) || Bot.HasInMonstersZone(CardId.TearlamentsHavnis)
||
Bot
.
HasInMonstersZone
(
CardId
.
TearlamentsMerrli
,
false
,
false
,
true
))))
&&
IsCanSpSummon
())
|| Bot.HasInMonstersZone(CardId.TearlamentsMerrli))) || (!activate_TearlamentsReinoheart_2 && Bot.HasInMonstersZone(CardId.TearlamentsReinoheart) && (HasinZoneKeyCard(CardLocation.Hand)
|| (Bot.Hand.Count(ccard=> ccard != null && ccard.HasSetcode(SETCODE))>0 && HasinZoneKeyCard(CardLocation.Deck)))&& IsShouldSummonFusion(SETCODE, (int)CardRace.Aqua))) && IsCanSpSummon())
{
{
List<ClientCard> cards = Enemy.GetMonsters().Where(ecard=> ecard != null && !ecard.IsShouldNotBeTarget() && ecard.IsFaceup()).ToList();
List<ClientCard> cards = Enemy.GetMonsters().Where(ecard=> ecard != null && !ecard.IsShouldNotBeTarget() && ecard.IsFaceup()).ToList();
if (cards.Count > 0)
if (cards.Count > 0)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment