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