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
alstroemeria-silentlove
windbot
Commits
e37b72b1
Commit
e37b72b1
authored
Oct 29, 2017
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
translate to English
parent
2cbdbc52
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
916 additions
and
1035 deletions
+916
-1035
Game/AI/Decks/BlackwingExecutor.cs
Game/AI/Decks/BlackwingExecutor.cs
+67
-67
Game/AI/Decks/BlueEyesExecutor.cs
Game/AI/Decks/BlueEyesExecutor.cs
+301
-392
Game/AI/Decks/CyberDragonExecutor.cs
Game/AI/Decks/CyberDragonExecutor.cs
+87
-87
Game/AI/Decks/EvilswarmExecutor.cs
Game/AI/Decks/EvilswarmExecutor.cs
+12
-12
Game/AI/Decks/GravekeeperExecutor.cs
Game/AI/Decks/GravekeeperExecutor.cs
+67
-67
Game/AI/Decks/GraydleExecutor.cs
Game/AI/Decks/GraydleExecutor.cs
+10
-10
Game/AI/Decks/LightswornExecutor.cs
Game/AI/Decks/LightswornExecutor.cs
+110
-127
Game/AI/Decks/NekrozExecutor.cs
Game/AI/Decks/NekrozExecutor.cs
+132
-138
Game/AI/Decks/QliphortExecutor.cs
Game/AI/Decks/QliphortExecutor.cs
+130
-135
No files found.
Game/AI/Decks/BlackwingExecutor.cs
View file @
e37b72b1
...
@@ -11,26 +11,26 @@ namespace WindBot.Game.AI.Decks
...
@@ -11,26 +11,26 @@ namespace WindBot.Game.AI.Decks
{
{
public
enum
CardId
public
enum
CardId
{
{
残夜之波刃剑鸟
=
81105204
,
KrisTheCrackOfDawn
=
81105204
,
晓之希洛克
=
75498415
,
SiroccoTheDawn
=
75498415
,
苍炎之修罗
=
58820853
,
ShuraTheBlueFlame
=
58820853
,
黑枪之布拉斯特
=
49003716
,
BoraTheSpear
=
49003716
,
月影之卡鲁特
=
85215458
,
KalutTheMoonShadow
=
85215458
,
疾风之盖尔
=
2009101
,
GaleTheWhirlwind
=
2009101
,
极北之布利扎德
=
22835145
,
BlizzardTheFarNorth
=
22835145
,
银盾之密史脱拉
=
46710683
,
MistralTheSilverShield
=
46710683
,
Raigeki
=
12580477
,
Raigeki
=
12580477
,
DarkHole
=
53129443
,
DarkHole
=
53129443
,
MysticalSpaceTyphoon
=
5318639
,
MysticalSpaceTyphoon
=
5318639
,
黑旋风
=
91351370
,
BlackWhirlwind
=
91351370
,
神圣防护罩
=
44095762
,
MirrorForce
=
44095762
,
三角乌鸦阵
=
59839761
,
DeltaCrowAntiReverse
=
59839761
,
次元幽闭
=
70342110
,
DimensionalPrison
=
70342110
,
孤高之银风鸦
=
33236860
,
SilverwindTheAscendant
=
33236860
,
黑羽龙
=
9012916
,
BlackWingedDragon
=
9012916
,
铠翼鸦
=
69031175
,
ArmorMaster
=
69031175
,
兵翼鸦
=
76913983
,
ArmedWing
=
76913983
,
煌星之怒剑鸟
=
17377751
GramTheShiningStar
=
17377751
}
}
public
BlackwingExecutor
(
GameAI
ai
,
Duel
duel
)
public
BlackwingExecutor
(
GameAI
ai
,
Duel
duel
)
...
@@ -41,42 +41,42 @@ namespace WindBot.Game.AI.Decks
...
@@ -41,42 +41,42 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MysticalSpaceTyphoon
,
DefaultMysticalSpaceTyphoon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MysticalSpaceTyphoon
,
DefaultMysticalSpaceTyphoon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DarkHole
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DarkHole
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Raigeki
,
DefaultRaigeki
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Raigeki
,
DefaultRaigeki
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
黑旋风
,
黑旋风
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
BlackWhirlwind
,
BlackWhirlwindEffect
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
残夜之波刃剑鸟
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
KrisTheCrackOfDawn
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
残夜之波刃剑鸟
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
KrisTheCrackOfDawn
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
晓之希洛克
,
晓之希洛克
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
SiroccoTheDawn
,
SiroccoTheDawnSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
苍炎之修罗
,
苍炎之修罗
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
ShuraTheBlueFlame
,
ShuraTheBlueFlameSummon
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
苍炎之修罗
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
ShuraTheBlueFlame
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
黑枪之布拉斯特
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
BoraTheSpear
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
黑枪之布拉斯特
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
BoraTheSpear
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
月影之卡鲁特
,
月影之卡鲁特
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
KalutTheMoonShadow
,
KalutTheMoonShadowSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
疾风之盖尔
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
GaleTheWhirlwind
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
疾风之盖尔
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
GaleTheWhirlwind
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
极北之布利扎德
,
极北之布利扎德
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
BlizzardTheFarNorth
,
BlizzardTheFarNorthSummon
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
银盾之密史脱拉
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
MistralTheSilverShield
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
孤高之银风鸦
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
SilverwindTheAscendant
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
铠翼鸦
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
ArmorMaster
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
煌星之怒剑鸟
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
GramTheShiningStar
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
兵翼鸦
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
ArmedWing
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
黑羽龙
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
BlackWingedDragon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神圣防护罩
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MirrorForce
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
次元幽闭
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DimensionalPrison
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
三角乌鸦阵
,
三角乌鸦阵
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DeltaCrowAntiReverse
,
DeltaCrowAntiReverseEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
三角乌鸦阵
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
BlizzardTheFarNorth
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
极北之布利扎德
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ShuraTheBlueFlame
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
苍炎之修罗
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
BoraTheSpear
,
BoraTheSpearEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
月影之卡鲁特
,
攻击力上升效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
KalutTheMoonShadow
,
AttackUpEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
晓之希洛克
,
攻击力上升效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SiroccoTheDawn
,
AttackUpEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
疾风之盖尔
,
疾风之盖尔效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GaleTheWhirlwind
,
GaleTheWhirlwindEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
孤高之银风鸦
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SilverwindTheAscendant
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
黑羽龙
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
BlackWingedDragon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
铠翼鸦
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ArmorMaster
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
兵翼鸦
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ArmedWing
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
煌星之怒剑鸟
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GramTheShiningStar
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
}
}
...
@@ -88,23 +88,23 @@ namespace WindBot.Game.AI.Decks
...
@@ -88,23 +88,23 @@ namespace WindBot.Game.AI.Decks
return
base
.
OnPreBattleBetween
(
attacker
,
defender
);
return
base
.
OnPreBattleBetween
(
attacker
,
defender
);
}
}
private
bool
苍炎之修罗
()
private
bool
ShuraTheBlueFlameSummon
()
{
{
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
晓之希洛克
)
&&
Bot
.
GetMonsters
().
GetHighestAttackMonster
().
Attack
<
3800
)
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
SiroccoTheDawn
)
&&
Bot
.
GetMonsters
().
GetHighestAttackMonster
().
Attack
<
3800
)
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
黑旋风
()
private
bool
BlackWhirlwindEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Hand
&&
Bot
.
HasInSpellZone
(
Card
.
Id
))
if
(
Card
.
Location
==
CardLocation
.
Hand
&&
Bot
.
HasInSpellZone
(
Card
.
Id
))
return
false
;
return
false
;
if
(
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
Card
.
Id
,
0
))
if
(
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
Card
.
Id
,
0
))
AI
.
SelectCard
((
int
)
CardId
.
疾风之盖尔
);
AI
.
SelectCard
((
int
)
CardId
.
GaleTheWhirlwind
);
return
true
;
return
true
;
}
}
private
bool
晓之希洛克
()
private
bool
SiroccoTheDawnSummon
()
{
{
int
OpponentMonster
=
Enemy
.
GetMonsterCount
();
int
OpponentMonster
=
Enemy
.
GetMonsterCount
();
int
AIMonster
=
Bot
.
GetMonsterCount
();
int
AIMonster
=
Bot
.
GetMonsterCount
();
...
@@ -113,38 +113,38 @@ namespace WindBot.Game.AI.Decks
...
@@ -113,38 +113,38 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
黑枪之布拉斯特
()
private
bool
BoraTheSpearEffect
()
{
{
List
<
ClientCard
>
monster
=
Bot
.
GetMonsters
();
List
<
ClientCard
>
monster
=
Bot
.
GetMonsters
();
foreach
(
ClientCard
card
in
monster
)
foreach
(
ClientCard
card
in
monster
)
if
(
card
!=
null
&&
card
.
Id
==
(
int
)
CardId
.
残夜之波刃剑鸟
||
card
.
Id
==
(
int
)
CardId
.
月影之卡鲁特
||
card
.
Id
==
(
int
)
CardId
.
疾风之盖尔
||
card
.
Id
==
(
int
)
CardId
.
黑枪之布拉斯特
||
card
.
Id
==
(
int
)
CardId
.
晓之希洛克
||
card
.
Id
==
(
int
)
CardId
.
苍炎之修罗
||
card
.
Id
==
(
int
)
CardId
.
极北之布利扎德
)
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
)
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
月影之卡鲁特
()
private
bool
KalutTheMoonShadowSummon
()
{
{
foreach
(
ClientCard
card
in
Bot
.
Hand
)
foreach
(
ClientCard
card
in
Bot
.
Hand
)
if
(
card
!=
null
&&
card
.
Id
==
(
int
)
CardId
.
残夜之波刃剑鸟
||
card
.
Id
==
(
int
)
CardId
.
疾风之盖尔
||
card
.
Id
==
(
int
)
CardId
.
黑枪之布拉斯特
||
card
.
Id
==
(
int
)
CardId
.
晓之希洛克
||
card
.
Id
==
(
int
)
CardId
.
苍炎之修罗
||
card
.
Id
==
(
int
)
CardId
.
极北之布利扎德
)
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
)
return
false
;
return
false
;
return
true
;
return
true
;
}
}
private
bool
极北之布利扎德
()
private
bool
BlizzardTheFarNorthSummon
()
{
{
foreach
(
ClientCard
card
in
Bot
.
Graveyard
)
foreach
(
ClientCard
card
in
Bot
.
Graveyard
)
if
(
card
!=
null
&&
card
.
Id
==
(
int
)
CardId
.
月影之卡鲁特
||
card
.
Id
==
(
int
)
CardId
.
黑枪之布拉斯特
||
card
.
Id
==
(
int
)
CardId
.
苍炎之修罗
||
card
.
Id
==
(
int
)
CardId
.
残夜之波刃剑鸟
)
if
(
card
!=
null
&&
card
.
Id
==
(
int
)
CardId
.
KalutTheMoonShadow
||
card
.
Id
==
(
int
)
CardId
.
BoraTheSpear
||
card
.
Id
==
(
int
)
CardId
.
ShuraTheBlueFlame
||
card
.
Id
==
(
int
)
CardId
.
KrisTheCrackOfDawn
)
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
三角乌鸦阵
()
private
bool
DeltaCrowAntiReverseEffect
()
{
{
int
Count
=
0
;
int
Count
=
0
;
List
<
ClientCard
>
monster
=
Bot
.
GetMonsters
();
List
<
ClientCard
>
monster
=
Bot
.
GetMonsters
();
foreach
(
ClientCard
card
in
monster
)
foreach
(
ClientCard
card
in
monster
)
if
(
card
!=
null
&&
card
.
Id
==
(
int
)
CardId
.
残夜之波刃剑鸟
||
card
.
Id
==
(
int
)
CardId
.
月影之卡鲁特
||
card
.
Id
==
(
int
)
CardId
.
疾风之盖尔
||
card
.
Id
==
(
int
)
CardId
.
黑枪之布拉斯特
||
card
.
Id
==
(
int
)
CardId
.
晓之希洛克
||
card
.
Id
==
(
int
)
CardId
.
苍炎之修罗
||
card
.
Id
==
(
int
)
CardId
.
极北之布利扎德
)
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
)
Count
++;
Count
++;
if
(
Count
==
3
)
if
(
Count
==
3
)
...
@@ -152,7 +152,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -152,7 +152,7 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
疾风之盖尔效果
()
private
bool
GaleTheWhirlwindEffect
()
{
{
if
(
Card
.
Position
==
(
int
)
CardPosition
.
FaceUp
)
if
(
Card
.
Position
==
(
int
)
CardPosition
.
FaceUp
)
{
{
...
@@ -162,7 +162,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -162,7 +162,7 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
攻击力上升效果
()
private
bool
AttackUpEffect
()
{
{
ClientCard
bestMy
=
Bot
.
GetMonsters
().
GetHighestAttackMonster
();
ClientCard
bestMy
=
Bot
.
GetMonsters
().
GetHighestAttackMonster
();
ClientCard
bestEnemyATK
=
Enemy
.
GetMonsters
().
GetHighestAttackMonster
();
ClientCard
bestEnemyATK
=
Enemy
.
GetMonsters
().
GetHighestAttackMonster
();
...
...
Game/AI/Decks/BlueEyesExecutor.cs
View file @
e37b72b1
...
@@ -11,136 +11,130 @@ namespace WindBot.Game.AI.Decks
...
@@ -11,136 +11,130 @@ namespace WindBot.Game.AI.Decks
{
{
public
enum
CardId
public
enum
CardId
{
{
青眼白龙
=
89631139
,
WhiteDragon
=
89631139
,
青眼亚白龙
=
38517737
,
AlternativeWhiteDragon
=
38517737
,
白色灵龙
=
45467446
,
DragonSpiritOfWhite
=
45467446
,
增殖的
G
=
23434538
,
WhiteStoneOfAncients
=
71039903
,
太古的白石
=
71039903
,
WhiteStoneOfLegend
=
79814787
,
传说的白石
=
79814787
,
SageWithEyesOfBlue
=
8240199
,
青色眼睛的贤士
=
8240199
,
EffectVeiler
=
97268402
,
效果遮蒙者
=
97268402
,
GalaxyCyclone
=
5133471
,
银河旋风
=
5133471
,
HarpiesFeatherDuster
=
18144506
,
鹰身女妖的羽毛扫
=
18144506
,
ReturnOfTheDragonLords
=
6853254
,
复活之福音
=
6853254
,
PotOfDesires
=
35261759
,
强欲而贪欲之壶
=
35261759
,
TradeIn
=
38120068
,
抵价购物
=
38120068
,
CardsOfConsonance
=
39701395
,
调和的宝札
=
39701395
,
DragonShrine
=
41620959
,
龙之灵庙
=
41620959
,
MelodyOfAwakeningDragon
=
48800175
,
龙觉醒旋律
=
48800175
,
SoulCharge
=
54447022
,
灵魂补充
=
54447022
,
MonsterReborn
=
83764718
,
死者苏生
=
83764718
,
SilversCry
=
87025064
,
银龙的轰咆
=
87025064
,
鬼岩城
=
63422098
,
Giganticastle
=
63422098
,
苍眼银龙
=
40908371
,
AzureEyesSilverDragon
=
40908371
,
青眼精灵龙
=
59822133
,
BlueEyesSpiritDragon
=
59822133
,
银河眼暗物质龙
=
58820923
,
GalaxyEyesDarkMatterDragon
=
58820923
,
银河眼光波刃龙
=
2530830
,
GalaxyEyesCipherBladeDragon
=
2530830
,
银河眼重铠光子龙
=
39030163
,
GalaxyEyesFullArmorPhotonDragon
=
39030163
,
银河眼光子龙皇
=
31801517
,
GalaxyEyesPrimePhotonDragon
=
31801517
,
银河眼光波龙
=
18963306
,
GalaxyEyesCipherDragon
=
18963306
,
希望魁龙银河巨神
=
63767246
,
HopeHarbingerDragonTitanicGalaxy
=
63767246
,
森罗的姬牙宫
=
33909817
SylvanPrincessprite
=
33909817
}
}
private
List
<
ClientCard
>
使用过的青眼亚白龙
=
new
List
<
ClientCard
>();
private
List
<
ClientCard
>
UsedAlternativeWhiteDragon
=
new
List
<
ClientCard
>();
ClientCard
使用过的光波龙
;
ClientCard
UsedGalaxyEyesCipherDragon
;
bool
已特殊召唤青眼亚白龙
=
false
;
bool
AlternativeWhiteDragonSummoned
=
false
;
bool
已发动灵魂补充
=
false
;
bool
SoulChargeUsed
=
false
;
public
BlueEyesExecutor
(
GameAI
ai
,
Duel
duel
)
public
BlueEyesExecutor
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
:
base
(
ai
,
duel
)
{
{
//
有坑先清
//
destroy traps
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
鹰身女妖的羽毛扫
,
DefaultHarpiesFeatherDusterFirst
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
HarpiesFeatherDuster
,
DefaultHarpiesFeatherDusterFirst
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
银河旋风
,
DefaultGalaxyCyclone
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GalaxyCyclone
,
DefaultGalaxyCyclone
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
鹰身女妖的羽毛扫
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
HarpiesFeatherDuster
);
// 灵庙
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DragonShrine
,
DragonShrineEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
龙之灵庙
,
龙之灵庙效果
);
//
贤士检索
//
Sage search
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
青色眼睛的贤士
,
青色眼睛的贤士通常召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
SageWithEyesOfBlue
,
SageWithEyesOfBlueSummon
);
//
拿亚白
//
search Alternative White Dragon
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
龙觉醒旋律
,
龙觉醒旋律效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MelodyOfAwakeningDragon
,
MelodyOfAwakeningDragonEffect
);
// 调和
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CardsOfConsonance
,
CardsOfConsonanceEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
调和的宝札
,
调和的宝札效果
);
// 八抽
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
TradeIn
,
TradeInEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
抵价购物
,
抵价购物效果
);
// 吸一口
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
PotOfDesires
,
DefaultPotOfDesires
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
强欲而贪欲之壶
,
DefaultPotOfDesires
);
//
有亚白就跳
//
spsummon Alternative White Dragon if possible
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
青眼亚白龙
,
青眼亚白龙特殊召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
AlternativeWhiteDragon
,
AlternativeWhiteDragonSummon
);
//
苏生
//
reborn
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
复活之福音
,
死者苏生效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ReturnOfTheDragonLords
,
RebornEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
银龙的轰咆
,
死者苏生效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SilversCry
,
RebornEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
死者苏生
,
死者苏生效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MonsterReborn
,
RebornEffect
);
//
效果
//
monster effects
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
青眼亚白龙
,
青眼亚白龙效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
AlternativeWhiteDragon
,
AlternativeWhiteDragonEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
青色眼睛的贤士
,
青色眼睛的贤士效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SageWithEyesOfBlue
,
SageWithEyesOfBlueEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
太古的白石
,
太古的白石效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
WhiteStoneOfAncientsEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
白色灵龙
,
白色灵龙效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DragonSpiritOfWhite
,
DragonSpiritOfWhiteEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
青眼精灵龙
,
青眼精灵龙效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
BlueEyesSpiritDragon
,
BlueEyesSpiritDragonEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
希望魁龙银河巨神
,
希望魁龙银河巨神效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
HopeHarbingerDragonTitanicGalaxy
,
HopeHarbingerDragonTitanicGalaxyEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
银河眼光波龙
,
银河眼光波龙效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GalaxyEyesCipherDragon
,
GalaxyEyesCipherDragonEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
银河眼光子龙皇
,
银河眼光子龙皇效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GalaxyEyesPrimePhotonDragon
,
GalaxyEyesPrimePhotonDragonEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
银河眼重铠光子龙
,
银河眼重铠光子龙效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GalaxyEyesFullArmorPhotonDragon
,
GalaxyEyesFullArmorPhotonDragonEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
银河眼光波刃龙
,
银河眼光波刃龙效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GalaxyEyesCipherBladeDragon
,
GalaxyEyesCipherBladeDragonEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
银河眼暗物质龙
,
银河眼暗物质龙效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GalaxyEyesDarkMatterDragon
,
GalaxyEyesDarkMatterDragonEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
苍眼银龙
,
苍眼银龙效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
AzureEyesSilverDragon
,
AzureEyesSilverDragonEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
森罗的姬牙宫
,
森罗的姬芽宫效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SylvanPrincessprite
,
SylvanPrincesspriteEffect
);
//
通招
//
normal summon
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
青色眼睛的贤士
,
太古的白石通常召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
SageWithEyesOfBlue
,
WhiteStoneSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
太古的白石
,
太古的白石通常召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
WhiteStoneSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
传说的白石
,
太古的白石通常召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
WhiteStoneOfLegend
,
WhiteStoneSummon
);
//
出大怪
//
special summon from extra
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
银河眼光波龙
,
银河眼光波龙超量召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
GalaxyEyesCipherDragon
,
GalaxyEyesCipherDragonSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
银河眼光子龙皇
,
银河眼光子龙皇超量召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
GalaxyEyesPrimePhotonDragon
,
GalaxyEyesPrimePhotonDragonSumom
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
银河眼重铠光子龙
,
银河眼重铠光子龙超量召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
GalaxyEyesFullArmorPhotonDragon
,
GalaxyEyesFullArmorPhotonDragonSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
银河眼光波刃龙
,
银河眼光波刃龙超量召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
GalaxyEyesCipherBladeDragon
,
GalaxyEyesCipherBladeDragonSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
银河眼暗物质龙
,
银河眼暗物质龙超量召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
GalaxyEyesDarkMatterDragon
,
GalaxyEyesDarkMatterDragonSummom
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
鬼岩城
,
鬼岩城同调召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
Giganticastle
,
GiganticastleSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
青眼精灵龙
,
青眼精灵龙同调召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
BlueEyesSpiritDragon
,
BlueEyesSpiritDragonSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
希望魁龙银河巨神
,
希望魁龙银河巨神超量召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
HopeHarbingerDragonTitanicGalaxy
,
HopeHarbingerDragonTitanicGalaxySummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
森罗的姬牙宫
,
森罗的姬芽宫超量召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
SylvanPrincessprite
,
SylvanPrincesspriteSummon
);
// 没别的可干
// if we don't have other things to do...
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
灵魂补充
,
灵魂补充
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SoulCharge
,
SoulChargeEffect
);
AddExecutor
(
ExecutorType
.
Repos
,
改变攻守表示
);
AddExecutor
(
ExecutorType
.
Repos
,
Repos
);
// 通招白石发动贤士手卡效果
// summon White Stone to use the hand effect of Sage
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
传说的白石
,
传说的白石通常召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
WhiteStoneOfLegend
,
WhiteStoneSummonForSage
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
太古的白石
,
传说的白石通常召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
WhiteStoneSummonForSage
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
青色眼睛的贤士
,
传说的白石通常召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
SageWithEyesOfBlue
,
WhiteStoneSummonForSage
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
青色眼睛的贤士
,
青色眼睛的贤士手卡效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SageWithEyesOfBlue
,
SageWithEyesOfBlueEffectInHand
);
// 优先盖传说白石以期望拿到白龙打开局面
// set White Stone of Legend frist
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
传说的白石
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
WhiteStoneOfLegend
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
太古的白石
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
WhiteStoneOfAncients
);
AddExecutor
(
ExecutorType
.
SpellSet
,
盖卡
);
AddExecutor
(
ExecutorType
.
SpellSet
,
SpellSet
);
}
}
public
override
bool
OnSelectHand
()
public
override
bool
OnSelectHand
()
{
{
// 随机先后攻
return
Program
.
Rand
.
Next
(
2
)
>
0
;
return
Program
.
Rand
.
Next
(
2
)
>
0
;
}
}
public
override
void
OnNewTurn
()
public
override
void
OnNewTurn
()
{
{
//
回合开始时重置状况
//
reset
使用过的青眼亚白龙
.
Clear
();
UsedAlternativeWhiteDragon
.
Clear
();
使用过的光波龙
=
null
;
UsedGalaxyEyesCipherDragon
=
null
;
已特殊召唤青眼亚白龙
=
false
;
AlternativeWhiteDragonSummoned
=
false
;
已发动灵魂补充
=
false
;
SoulChargeUsed
=
false
;
}
}
public
override
IList
<
ClientCard
>
OnSelectCard
(
IList
<
ClientCard
>
cards
,
int
min
,
int
max
,
bool
cancelable
)
public
override
IList
<
ClientCard
>
OnSelectCard
(
IList
<
ClientCard
>
cards
,
int
min
,
int
max
,
bool
cancelable
)
...
@@ -148,13 +142,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -148,13 +142,13 @@ namespace WindBot.Game.AI.Decks
Logger
.
DebugWriteLine
(
"OnSelectCard "
+
cards
.
Count
+
" "
+
min
+
" "
+
max
);
Logger
.
DebugWriteLine
(
"OnSelectCard "
+
cards
.
Count
+
" "
+
min
+
" "
+
max
);
if
(
max
==
2
&&
cards
[
0
].
Location
==
CardLocation
.
Deck
)
if
(
max
==
2
&&
cards
[
0
].
Location
==
CardLocation
.
Deck
)
{
{
Logger
.
DebugWriteLine
(
"
龙觉醒检索.
"
);
Logger
.
DebugWriteLine
(
"
OnSelectCard MelodyOfAwakeningDragon
"
);
IList
<
ClientCard
>
result
=
new
List
<
ClientCard
>();
IList
<
ClientCard
>
result
=
new
List
<
ClientCard
>();
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
青眼白龙
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
WhiteDragon
))
{
{
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
if
(
card
.
Id
==
(
int
)
CardId
.
青眼白龙
)
if
(
card
.
Id
==
(
int
)
CardId
.
WhiteDragon
)
{
{
result
.
Add
(
card
);
result
.
Add
(
card
);
break
;
break
;
...
@@ -163,7 +157,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -163,7 +157,7 @@ namespace WindBot.Game.AI.Decks
}
}
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
if
(
card
.
Id
==
(
int
)
CardId
.
青眼亚白龙
&&
result
.
Count
<
max
)
if
(
card
.
Id
==
(
int
)
CardId
.
AlternativeWhiteDragon
&&
result
.
Count
<
max
)
{
{
result
.
Add
(
card
);
result
.
Add
(
card
);
}
}
...
@@ -186,7 +180,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -186,7 +180,7 @@ namespace WindBot.Game.AI.Decks
}
}
if
(
max
==
2
&&
min
==
2
&&
cards
[
0
].
Location
==
CardLocation
.
MonsterZone
)
if
(
max
==
2
&&
min
==
2
&&
cards
[
0
].
Location
==
CardLocation
.
MonsterZone
)
{
{
Logger
.
DebugWriteLine
(
"
超量召唤.
"
);
Logger
.
DebugWriteLine
(
"
OnSelectCard XYZ
"
);
IList
<
ClientCard
>
avail
=
new
List
<
ClientCard
>();
IList
<
ClientCard
>
avail
=
new
List
<
ClientCard
>();
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
...
@@ -194,11 +188,11 @@ namespace WindBot.Game.AI.Decks
...
@@ -194,11 +188,11 @@ namespace WindBot.Game.AI.Decks
avail
.
Add
(
card
);
avail
.
Add
(
card
);
}
}
IList
<
ClientCard
>
result
=
new
List
<
ClientCard
>();
IList
<
ClientCard
>
result
=
new
List
<
ClientCard
>();
while
(
使用过的青眼亚白龙
.
Count
>
0
&&
avail
.
IndexOf
(
使用过的青眼亚白龙
[
0
])
>
0
)
while
(
UsedAlternativeWhiteDragon
.
Count
>
0
&&
avail
.
IndexOf
(
UsedAlternativeWhiteDragon
[
0
])
>
0
)
{
{
Logger
.
DebugWriteLine
(
"
优先用使用过的亚白龙超量.
"
);
Logger
.
DebugWriteLine
(
"
select UsedAlternativeWhiteDragon
"
);
ClientCard
card
=
使用过的青眼亚白龙
[
0
];
ClientCard
card
=
UsedAlternativeWhiteDragon
[
0
];
使用过的青眼亚白龙
.
Remove
(
card
);
UsedAlternativeWhiteDragon
.
Remove
(
card
);
avail
.
Remove
(
card
);
avail
.
Remove
(
card
);
result
.
Add
(
card
);
result
.
Add
(
card
);
}
}
...
@@ -224,13 +218,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -224,13 +218,13 @@ namespace WindBot.Game.AI.Decks
if
(
sum
!=
8
||
!
mode
)
if
(
sum
!=
8
||
!
mode
)
return
null
;
return
null
;
foreach
(
ClientCard
亚白龙
in
使用过的青眼亚白龙
)
foreach
(
ClientCard
AlternativeWhiteDragon
in
UsedAlternativeWhiteDragon
)
{
{
if
(
cards
.
IndexOf
(
亚白龙
)
>
0
)
if
(
cards
.
IndexOf
(
AlternativeWhiteDragon
)
>
0
)
{
{
使用过的青眼亚白龙
.
Remove
(
亚白龙
);
UsedAlternativeWhiteDragon
.
Remove
(
AlternativeWhiteDragon
);
Logger
.
DebugWriteLine
(
"
选择了使用过的青眼亚白龙
"
);
Logger
.
DebugWriteLine
(
"
select UsedAlternativeWhiteDragon
"
);
return
new
[]
{
亚白龙
};
return
new
[]
{
AlternativeWhiteDragon
};
}
}
}
}
...
@@ -247,182 +241,162 @@ namespace WindBot.Game.AI.Decks
...
@@ -247,182 +241,162 @@ namespace WindBot.Game.AI.Decks
return
attacker
.
Attack
>
0
;
return
attacker
.
Attack
>
0
;
}
}
private
bool
龙之灵庙效果
()
private
bool
DragonShrineEffect
()
{
{
Logger
.
DebugWriteLine
(
"龙之灵庙."
);
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
白色灵龙
,
(
int
)
CardId
.
DragonSpiritOfWhite
,
(
int
)
CardId
.
青眼白龙
,
(
int
)
CardId
.
WhiteDragon
,
(
int
)
CardId
.
太古的白石
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
(
int
)
CardId
.
传说的白石
(
int
)
CardId
.
WhiteStoneOfLegend
});
});
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
青眼白龙
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
WhiteDragon
))
{
{
Logger
.
DebugWriteLine
(
"手里没有本体,堆白石."
);
AI
.
SelectNextCard
((
int
)
CardId
.
WhiteStoneOfLegend
);
AI
.
SelectNextCard
((
int
)
CardId
.
传说的白石
);
}
}
else
else
{
{
Logger
.
DebugWriteLine
(
"堆太古或灵龙或白石."
);
AI
.
SelectNextCard
(
new
[]
AI
.
SelectNextCard
(
new
[]
{
{
(
int
)
CardId
.
太古的白石
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
(
int
)
CardId
.
白色灵龙
,
(
int
)
CardId
.
DragonSpiritOfWhite
,
(
int
)
CardId
.
传说的白石
(
int
)
CardId
.
WhiteStoneOfLegend
});
});
}
}
return
true
;
return
true
;
}
}
private
bool
龙觉醒旋律效果
()
private
bool
MelodyOfAwakeningDragonEffect
()
{
{
Logger
.
DebugWriteLine
(
"龙觉醒选要丢的卡."
);
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
太古的白石
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
(
int
)
CardId
.
白色灵龙
,
(
int
)
CardId
.
DragonSpiritOfWhite
,
(
int
)
CardId
.
传说的白石
,
(
int
)
CardId
.
WhiteStoneOfLegend
,
(
int
)
CardId
.
银河旋风
,
(
int
)
CardId
.
GalaxyCyclone
,
(
int
)
CardId
.
效果遮蒙者
,
(
int
)
CardId
.
EffectVeiler
,
(
int
)
CardId
.
抵价购物
,
(
int
)
CardId
.
TradeIn
,
(
int
)
CardId
.
青色眼睛的贤士
(
int
)
CardId
.
SageWithEyesOfBlue
});
});
return
true
;
return
true
;
}
}
private
bool
调和的宝札效果
()
private
bool
CardsOfConsonanceEffect
()
{
{
Logger
.
DebugWriteLine
(
"调和选要丢的卡."
);
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
WhiteDragon
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
青眼白龙
))
{
{
Logger
.
DebugWriteLine
(
"手里没有本体,丢白石."
);
AI
.
SelectCard
((
int
)
CardId
.
WhiteStoneOfLegend
);
AI
.
SelectCard
((
int
)
CardId
.
传说的白石
);
}
}
else
if
(
Bot
.
HasInHand
((
int
)
CardId
.
抵价购物
))
else
if
(
Bot
.
HasInHand
((
int
)
CardId
.
TradeIn
))
{
{
Logger
.
DebugWriteLine
(
"手里有本体,再拿一个喂八抽."
);
AI
.
SelectCard
((
int
)
CardId
.
WhiteStoneOfLegend
);
AI
.
SelectCard
((
int
)
CardId
.
传说的白石
);
}
}
else
else
{
{
Logger
.
DebugWriteLine
(
"手里有本体,优先丢太古."
);
AI
.
SelectCard
((
int
)
CardId
.
WhiteStoneOfAncients
);
AI
.
SelectCard
((
int
)
CardId
.
太古的白石
);
}
}
return
true
;
return
true
;
}
}
private
bool
抵价购物效果
()
private
bool
TradeInEffect
()
{
{
Logger
.
DebugWriteLine
(
"抵价购物发动."
);
if
(
Bot
.
HasInHand
((
int
)
CardId
.
DragonSpiritOfWhite
))
if
(
Bot
.
HasInHand
((
int
)
CardId
.
白色灵龙
))
{
{
Logger
.
DebugWriteLine
(
"手里有白灵龙,优先丢掉."
);
AI
.
SelectCard
((
int
)
CardId
.
DragonSpiritOfWhite
);
AI
.
SelectCard
((
int
)
CardId
.
白色灵龙
);
return
true
;
return
true
;
}
}
else
if
(
手里有
2
个
((
int
)
CardId
.
青眼白龙
))
else
if
(
HasTwoInHand
((
int
)
CardId
.
WhiteDragon
))
{
{
Logger
.
DebugWriteLine
(
"手里有2个青眼白龙,丢1个."
);
AI
.
SelectCard
((
int
)
CardId
.
WhiteDragon
);
AI
.
SelectCard
((
int
)
CardId
.
青眼白龙
);
return
true
;
return
true
;
}
}
else
if
(
手里有
2
个
((
int
)
CardId
.
青眼亚白龙
))
else
if
(
HasTwoInHand
((
int
)
CardId
.
AlternativeWhiteDragon
))
{
{
Logger
.
DebugWriteLine
(
"手里有2个青眼亚白龙,丢1个."
);
AI
.
SelectCard
((
int
)
CardId
.
AlternativeWhiteDragon
);
AI
.
SelectCard
((
int
)
CardId
.
青眼亚白龙
);
return
true
;
return
true
;
}
}
else
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
青眼白龙
)
||
!
Bot
.
HasInHand
((
int
)
CardId
.
青眼亚白龙
))
else
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
WhiteDragon
)
||
!
Bot
.
HasInHand
((
int
)
CardId
.
AlternativeWhiteDragon
))
{
{
Logger
.
DebugWriteLine
(
"手里没有成对的青眼和亚白,丢1个."
);
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
青眼白龙
,
(
int
)
CardId
.
WhiteDragon
,
(
int
)
CardId
.
青眼亚白龙
(
int
)
CardId
.
AlternativeWhiteDragon
});
});
return
true
;
return
true
;
}
}
else
else
{
{
Logger
.
DebugWriteLine
(
"手里只有一对,不能乱丢."
);
return
false
;
return
false
;
}
}
}
}
private
bool
青眼亚白龙效果
()
private
bool
AlternativeWhiteDragonEffect
()
{
{
Logger
.
DebugWriteLine
(
"亚白龙效果."
);
ClientCard
card
=
Enemy
.
MonsterZone
.
GetFloodgate
();
ClientCard
card
=
Enemy
.
MonsterZone
.
GetFloodgate
();
if
(
card
!=
null
)
if
(
card
!=
null
)
{
{
Logger
.
DebugWriteLine
(
"炸坑怪."
);
AI
.
SelectCard
(
card
);
AI
.
SelectCard
(
card
);
使用过的青眼亚白龙
.
Add
(
Card
);
UsedAlternativeWhiteDragon
.
Add
(
Card
);
return
true
;
return
true
;
}
}
card
=
Enemy
.
MonsterZone
.
GetInvincibleMonster
();
card
=
Enemy
.
MonsterZone
.
GetInvincibleMonster
();
if
(
card
!=
null
)
if
(
card
!=
null
)
{
{
Logger
.
DebugWriteLine
(
"炸打不死的怪."
);
AI
.
SelectCard
(
card
);
AI
.
SelectCard
(
card
);
使用过的青眼亚白龙
.
Add
(
Card
);
UsedAlternativeWhiteDragon
.
Add
(
Card
);
return
true
;
return
true
;
}
}
card
=
Enemy
.
MonsterZone
.
GetDangerousMonster
();
card
=
Enemy
.
MonsterZone
.
GetDangerousMonster
();
if
(
card
!=
null
)
if
(
card
!=
null
)
{
{
Logger
.
DebugWriteLine
(
"炸厉害的怪."
);
AI
.
SelectCard
(
card
);
AI
.
SelectCard
(
card
);
使用过的青眼亚白龙
.
Add
(
Card
);
UsedAlternativeWhiteDragon
.
Add
(
Card
);
return
true
;
return
true
;
}
}
card
=
AI
.
Utils
.
GetOneEnemyBetterThanValue
(
Card
.
GetDefensePower
(),
false
);
card
=
AI
.
Utils
.
GetOneEnemyBetterThanValue
(
Card
.
GetDefensePower
(),
false
);
if
(
card
!=
null
)
if
(
card
!=
null
)
{
{
Logger
.
DebugWriteLine
(
"炸比自己强的怪."
);
AI
.
SelectCard
(
card
);
AI
.
SelectCard
(
card
);
使用过的青眼亚白龙
.
Add
(
Card
);
UsedAlternativeWhiteDragon
.
Add
(
Card
);
return
true
;
return
true
;
}
}
if
(
能处理青眼亚白龙
())
if
(
CanDealWithUsedAlternativeWhiteDragon
())
{
{
使用过的青眼亚白龙
.
Add
(
Card
);
UsedAlternativeWhiteDragon
.
Add
(
Card
);
return
true
;
return
true
;
}
}
Logger
.
DebugWriteLine
(
"不炸."
);
return
false
;
return
false
;
}
}
private
bool
死者苏生效果
()
private
bool
RebornEffect
()
{
{
if
(
Duel
.
Player
==
0
&&
CurrentChain
.
Count
>
0
)
if
(
Duel
.
Player
==
0
&&
CurrentChain
.
Count
>
0
)
{
{
Logger
.
DebugWriteLine
(
"轰咆避免卡时点."
);
// Silver's Cry spsummon Dragon Spirit at chain 2 will miss the timing
return
false
;
return
false
;
}
}
if
(
Duel
.
Player
==
0
&&
(
Duel
.
Phase
==
DuelPhase
.
Draw
||
Duel
.
Phase
==
DuelPhase
.
Standby
))
if
(
Duel
.
Player
==
0
&&
(
Duel
.
Phase
==
DuelPhase
.
Draw
||
Duel
.
Phase
==
DuelPhase
.
Standby
))
{
{
Logger
.
DebugWriteLine
(
"轰咆自己回合不和苍眼银龙抢对象."
);
// Let Azure-Eyes spsummon first
return
false
;
return
false
;
}
}
List
<
int
>
targets
=
new
List
<
int
>
{
List
<
int
>
targets
=
new
List
<
int
>
{
(
int
)
CardId
.
希望魁龙银河巨神
,
(
int
)
CardId
.
HopeHarbingerDragonTitanicGalaxy
,
(
int
)
CardId
.
银河眼暗物质龙
,
(
int
)
CardId
.
GalaxyEyesDarkMatterDragon
,
(
int
)
CardId
.
青眼亚白龙
,
(
int
)
CardId
.
AlternativeWhiteDragon
,
(
int
)
CardId
.
苍眼银龙
,
(
int
)
CardId
.
AzureEyesSilverDragon
,
(
int
)
CardId
.
青眼精灵龙
,
(
int
)
CardId
.
BlueEyesSpiritDragon
,
(
int
)
CardId
.
青眼白龙
,
(
int
)
CardId
.
WhiteDragon
,
(
int
)
CardId
.
白色灵龙
(
int
)
CardId
.
DragonSpiritOfWhite
};
};
if
(!
Bot
.
HasInGraveyard
(
targets
))
if
(!
Bot
.
HasInGraveyard
(
targets
))
{
{
return
false
;
return
false
;
}
}
ClientCard
floodgate
=
Enemy
.
SpellZone
.
GetFloodgate
();
ClientCard
floodgate
=
Enemy
.
SpellZone
.
GetFloodgate
();
if
(
floodgate
!=
null
&&
Bot
.
HasInGraveyard
((
int
)
CardId
.
白色灵龙
))
if
(
floodgate
!=
null
&&
Bot
.
HasInGraveyard
((
int
)
CardId
.
DragonSpiritOfWhite
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
白色灵龙
);
AI
.
SelectCard
((
int
)
CardId
.
DragonSpiritOfWhite
);
}
}
else
else
{
{
...
@@ -431,31 +405,29 @@ namespace WindBot.Game.AI.Decks
...
@@ -431,31 +405,29 @@ namespace WindBot.Game.AI.Decks
return
true
;
return
true
;
}
}
private
bool
苍眼银龙效果
()
private
bool
AzureEyesSilverDragonEffect
()
{
{
Logger
.
DebugWriteLine
(
"苍眼银龙效果."
);
if
(
Enemy
.
GetSpellCount
()
>
0
)
if
(
Enemy
.
GetSpellCount
()
>
0
)
{
{
AI
.
SelectCard
((
int
)
CardId
.
白色灵龙
);
AI
.
SelectCard
((
int
)
CardId
.
DragonSpiritOfWhite
);
}
}
else
else
{
{
AI
.
SelectCard
((
int
)
CardId
.
青眼白龙
);
AI
.
SelectCard
((
int
)
CardId
.
WhiteDragon
);
}
}
return
true
;
return
true
;
}
}
private
bool
青色眼睛的贤士通常召唤
()
private
bool
SageWithEyesOfBlueSummon
()
{
{
Logger
.
DebugWriteLine
(
"手里没有白石,先贤士检索."
);
return
!
Bot
.
HasInHand
(
new
List
<
int
>
return
!
Bot
.
HasInHand
(
new
List
<
int
>
{
{
(
int
)
CardId
.
太古的白石
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
(
int
)
CardId
.
传说的白石
(
int
)
CardId
.
WhiteStoneOfLegend
});
});
}
}
private
bool
青色眼睛的贤士效果
()
private
bool
SageWithEyesOfBlueEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Hand
)
if
(
Card
.
Location
==
CardLocation
.
Hand
)
{
{
...
@@ -463,20 +435,19 @@ namespace WindBot.Game.AI.Decks
...
@@ -463,20 +435,19 @@ namespace WindBot.Game.AI.Decks
}
}
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
太古的白石
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
(
int
)
CardId
.
效果遮蒙者
,
(
int
)
CardId
.
EffectVeiler
,
(
int
)
CardId
.
传说的白石
(
int
)
CardId
.
WhiteStoneOfLegend
});
});
return
true
;
return
true
;
}
}
private
bool
传说的白石通常召唤
()
private
bool
WhiteStoneSummonForSage
()
{
{
Logger
.
DebugWriteLine
(
"通招白石给贤士发手卡效果."
);
return
Bot
.
HasInHand
((
int
)
CardId
.
SageWithEyesOfBlue
);
return
Bot
.
HasInHand
((
int
)
CardId
.
青色眼睛的贤士
);
}
}
private
bool
青色眼睛的贤士手卡效果
()
private
bool
SageWithEyesOfBlueEffectInHand
()
{
{
if
(
Card
.
Location
!=
CardLocation
.
Hand
)
if
(
Card
.
Location
!=
CardLocation
.
Hand
)
{
{
...
@@ -484,105 +455,84 @@ namespace WindBot.Game.AI.Decks
...
@@ -484,105 +455,84 @@ namespace WindBot.Game.AI.Decks
}
}
if
(!
Bot
.
HasInMonstersZone
(
new
List
<
int
>
if
(!
Bot
.
HasInMonstersZone
(
new
List
<
int
>
{
{
(
int
)
CardId
.
传说的白石
,
(
int
)
CardId
.
WhiteStoneOfLegend
,
(
int
)
CardId
.
太古的白石
(
int
)
CardId
.
WhiteStoneOfAncients
})
||
Bot
.
HasInMonstersZone
(
new
List
<
int
>
})
||
Bot
.
HasInMonstersZone
(
new
List
<
int
>
{
{
(
int
)
CardId
.
青眼亚白龙
,
(
int
)
CardId
.
AlternativeWhiteDragon
,
(
int
)
CardId
.
青眼白龙
,
(
int
)
CardId
.
WhiteDragon
,
(
int
)
CardId
.
白色灵龙
(
int
)
CardId
.
DragonSpiritOfWhite
}))
}))
{
{
Logger
.
DebugWriteLine
(
"能做其他展开,不发贤士效果."
);
return
false
;
return
false
;
}
}
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
传说的白石
,
(
int
)
CardId
.
WhiteStoneOfLegend
,
(
int
)
CardId
.
太古的白石
(
int
)
CardId
.
WhiteStoneOfAncients
});
});
List
<
ClientCard
>
spells
=
Enemy
.
GetSpells
();
List
<
ClientCard
>
spells
=
Enemy
.
GetSpells
();
if
(
spells
.
Count
==
0
)
if
(
spells
.
Count
==
0
)
{
{
Logger
.
DebugWriteLine
(
"对面没坑,跳个本体."
);
AI
.
SelectNextCard
((
int
)
CardId
.
WhiteDragon
);
AI
.
SelectNextCard
((
int
)
CardId
.
青眼白龙
);
}
}
else
else
{
{
Logger
.
DebugWriteLine
(
"对面有坑,拆."
);
AI
.
SelectNextCard
((
int
)
CardId
.
DragonSpiritOfWhite
);
AI
.
SelectNextCard
((
int
)
CardId
.
白色灵龙
);
}
}
return
true
;
return
true
;
}
}
private
bool
白色灵龙效果
()
private
bool
DragonSpiritOfWhiteEffect
()
{
{
Logger
.
DebugWriteLine
(
"白色灵龙"
+
ActivateDescription
);
if
(
ActivateDescription
==
-
1
)
if
(
ActivateDescription
==
-
1
)
{
{
Logger
.
DebugWriteLine
(
"白色灵龙拆后场."
);
ClientCard
target
=
Enemy
.
SpellZone
.
GetFloodgate
();
ClientCard
target
=
Enemy
.
SpellZone
.
GetFloodgate
();
AI
.
SelectCard
(
target
);
AI
.
SelectCard
(
target
);
return
true
;
return
true
;
}
}
/*else if(Duel.Phase==DuelPhase.BattleStart)
{
Logger.DebugWriteLine("白色灵龙战阶变身.");
return true;
}*/
else
else
{
{
if
(
Duel
.
Player
==
0
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
)
if
(
Duel
.
Player
==
0
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
)
{
{
Logger
.
DebugWriteLine
(
"白色灵龙打完变身"
);
return
HaveEnoughWhiteDragonInHand
()
&&
Card
.
Attacked
;
return
手里有足够的青眼白龙
()
&&
Card
.
Attacked
;
}
}
if
(
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
End
)
if
(
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
End
)
{
{
Logger
.
DebugWriteLine
(
"白色灵龙回合结束变身"
);
return
HaveEnoughWhiteDragonInHand
()
return
手里有足够的青眼白龙
()
&&
Bot
.
HasInMonstersZone
((
int
)
CardId
.
AzureEyesSilverDragon
,
true
)
&&
Bot
.
HasInMonstersZone
((
int
)
CardId
.
苍眼银龙
,
true
)
&&
!
Bot
.
HasInGraveyard
((
int
)
CardId
.
DragonSpiritOfWhite
)
&&
!
Bot
.
HasInGraveyard
((
int
)
CardId
.
白色灵龙
)
&&
!
Bot
.
HasInGraveyard
((
int
)
CardId
.
WhiteDragon
);
&&
!
Bot
.
HasInGraveyard
((
int
)
CardId
.
青眼白龙
);
}
}
Logger
.
DebugWriteLine
(
"白色灵龙特招手卡. 对象数量"
+
Duel
.
ChainTargets
.
Count
);
foreach
(
ClientCard
card
in
Duel
.
ChainTargets
)
foreach
(
ClientCard
card
in
Duel
.
ChainTargets
)
{
{
// Logger.DebugWriteLine("对象" + card.Id);
if
(
Card
.
Equals
(
card
))
if
(
Card
.
Equals
(
card
))
{
{
Logger
.
DebugWriteLine
(
"白色灵龙被取对象,是否变身."
);
return
HaveEnoughWhiteDragonInHand
();
return
手里有足够的青眼白龙
();
}
}
}
}
return
false
;
return
false
;
}
}
}
}
private
bool
青眼精灵龙效果
()
private
bool
BlueEyesSpiritDragonEffect
()
{
{
Logger
.
DebugWriteLine
(
"青眼精灵龙"
+
ActivateDescription
);
if
(
ActivateDescription
==
-
1
||
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
CardId
.
BlueEyesSpiritDragon
,
0
))
if
(
ActivateDescription
==
-
1
||
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
CardId
.
青眼精灵龙
,
0
))
{
{
Logger
.
DebugWriteLine
(
"青眼精灵龙无效墓地."
);
return
LastChainPlayer
==
1
;
return
LastChainPlayer
==
1
;
}
}
else
if
(
Duel
.
Player
==
1
&&
(
Duel
.
Phase
==
DuelPhase
.
BattleStart
||
Duel
.
Phase
==
DuelPhase
.
End
))
else
if
(
Duel
.
Player
==
1
&&
(
Duel
.
Phase
==
DuelPhase
.
BattleStart
||
Duel
.
Phase
==
DuelPhase
.
End
))
{
{
Logger
.
DebugWriteLine
(
"青眼精灵龙主动变身."
);
AI
.
SelectCard
((
int
)
CardId
.
AzureEyesSilverDragon
);
AI
.
SelectCard
((
int
)
CardId
.
苍眼银龙
);
return
true
;
return
true
;
}
}
else
else
{
{
Logger
.
DebugWriteLine
(
"青眼精灵龙变身. 对象数量"
+
Duel
.
ChainTargets
.
Count
);
foreach
(
ClientCard
card
in
Duel
.
ChainTargets
)
foreach
(
ClientCard
card
in
Duel
.
ChainTargets
)
{
{
// Logger.DebugWriteLine("对象" + card.Id);
if
(
Card
.
Equals
(
card
))
if
(
Card
.
Equals
(
card
))
{
{
Logger
.
DebugWriteLine
(
"青眼精灵龙被取对象,变身."
);
AI
.
SelectCard
((
int
)
CardId
.
AzureEyesSilverDragon
);
AI
.
SelectCard
((
int
)
CardId
.
苍眼银龙
);
return
true
;
return
true
;
}
}
}
}
...
@@ -590,105 +540,89 @@ namespace WindBot.Game.AI.Decks
...
@@ -590,105 +540,89 @@ namespace WindBot.Game.AI.Decks
}
}
}
}
private
bool
希望魁龙银河巨神效果
()
private
bool
HopeHarbingerDragonTitanicGalaxyEffect
()
{
{
Logger
.
DebugWriteLine
(
"希望魁龙银河巨神"
+
ActivateDescription
);
if
(
ActivateDescription
==
-
1
||
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
CardId
.
HopeHarbingerDragonTitanicGalaxy
,
0
))
if
(
ActivateDescription
==
-
1
||
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
CardId
.
希望魁龙银河巨神
,
0
))
{
{
Logger
.
DebugWriteLine
(
"希望魁龙银河巨神无效魔法."
);
return
LastChainPlayer
==
1
;
return
LastChainPlayer
==
1
;
}
}
return
true
;
return
true
;
}
}
private
bool
太古的白石效果
()
private
bool
WhiteStoneOfAncientsEffect
()
{
{
if
(
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
CardId
.
太古的白石
,
0
))
if
(
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
CardId
.
WhiteStoneOfAncients
,
0
))
{
{
Logger
.
DebugWriteLine
(
"太古白石回收效果."
);
if
(
Bot
.
HasInHand
((
int
)
CardId
.
TradeIn
)
if
(
Bot
.
HasInHand
((
int
)
CardId
.
抵价购物
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
WhiteDragon
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
青眼白龙
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
AlternativeWhiteDragon
))
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
青眼亚白龙
))
{
{
Logger
.
DebugWriteLine
(
"回收喂八抽."
);
AI
.
SelectCard
((
int
)
CardId
.
WhiteDragon
);
AI
.
SelectCard
((
int
)
CardId
.
青眼白龙
);
return
true
;
return
true
;
}
}
if
(
已特殊召唤青眼亚白龙
)
if
(
AlternativeWhiteDragonSummoned
)
{
{
Logger
.
DebugWriteLine
(
"已经跳过亚白龙,下回合再回收."
);
return
false
;
return
false
;
}
}
if
(
Bot
.
HasInHand
((
int
)
CardId
.
青眼白龙
)
if
(
Bot
.
HasInHand
((
int
)
CardId
.
WhiteDragon
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
青眼亚白龙
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
AlternativeWhiteDragon
)
&&
Bot
.
HasInGraveyard
((
int
)
CardId
.
青眼亚白龙
))
&&
Bot
.
HasInGraveyard
((
int
)
CardId
.
AlternativeWhiteDragon
))
{
{
Logger
.
DebugWriteLine
(
"缺亚白龙,回收."
);
AI
.
SelectCard
((
int
)
CardId
.
AlternativeWhiteDragon
);
AI
.
SelectCard
((
int
)
CardId
.
青眼亚白龙
);
return
true
;
return
true
;
}
}
if
(
Bot
.
HasInHand
((
int
)
CardId
.
青眼亚白龙
)
if
(
Bot
.
HasInHand
((
int
)
CardId
.
AlternativeWhiteDragon
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
青眼白龙
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
WhiteDragon
)
&&
Bot
.
HasInGraveyard
((
int
)
CardId
.
青眼白龙
))
&&
Bot
.
HasInGraveyard
((
int
)
CardId
.
WhiteDragon
))
{
{
Logger
.
DebugWriteLine
(
"有亚白龙缺本体,回收."
);
AI
.
SelectCard
((
int
)
CardId
.
WhiteDragon
);
AI
.
SelectCard
((
int
)
CardId
.
青眼白龙
);
return
true
;
return
true
;
}
}
Logger
.
DebugWriteLine
(
"并没有应该回收的."
);
return
false
;
return
false
;
}
}
else
else
{
{
Logger
.
DebugWriteLine
(
"太古白石特招效果."
);
List
<
ClientCard
>
spells
=
Enemy
.
GetSpells
();
List
<
ClientCard
>
spells
=
Enemy
.
GetSpells
();
if
(
spells
.
Count
==
0
)
if
(
spells
.
Count
==
0
)
{
{
Logger
.
DebugWriteLine
(
"对面没坑,跳个本体."
);
AI
.
SelectCard
((
int
)
CardId
.
WhiteDragon
);
AI
.
SelectCard
((
int
)
CardId
.
青眼白龙
);
//AI.SelectCard((int)CardId.白色灵龙);
}
}
else
else
{
{
Logger
.
DebugWriteLine
(
"对面有坑,拆."
);
AI
.
SelectCard
((
int
)
CardId
.
DragonSpiritOfWhite
);
AI
.
SelectCard
((
int
)
CardId
.
白色灵龙
);
}
}
return
true
;
return
true
;
}
}
}
}
private
bool
青眼亚白龙特殊召唤
()
private
bool
AlternativeWhiteDragonSummon
()
{
{
已特殊召唤青眼亚白龙
=
true
;
AlternativeWhiteDragonSummoned
=
true
;
return
true
;
return
true
;
}
}
private
bool
太古的白石通常召唤
()
private
bool
WhiteStoneSummon
()
{
{
Logger
.
DebugWriteLine
(
"1星怪兽通常召唤."
);
return
Bot
.
HasInMonstersZone
(
new
List
<
int
>
return
Bot
.
HasInMonstersZone
(
new
List
<
int
>
{
{
(
int
)
CardId
.
青色眼睛的贤士
,
(
int
)
CardId
.
SageWithEyesOfBlue
,
(
int
)
CardId
.
太古的白石
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
(
int
)
CardId
.
传说的白石
,
(
int
)
CardId
.
WhiteStoneOfLegend
,
(
int
)
CardId
.
青眼亚白龙
,
(
int
)
CardId
.
AlternativeWhiteDragon
,
(
int
)
CardId
.
青眼白龙
,
(
int
)
CardId
.
WhiteDragon
,
(
int
)
CardId
.
白色灵龙
(
int
)
CardId
.
DragonSpiritOfWhite
});
});
}
}
private
bool
银河眼光波龙超量召唤
()
private
bool
GalaxyEyesCipherDragonSummon
()
{
{
Logger
.
DebugWriteLine
(
"银河眼光波龙超量召唤."
);
if
(
Duel
.
Turn
==
1
||
SoulChargeUsed
)
if
(
Duel
.
Turn
==
1
||
已发动灵魂补充
)
{
{
Logger
.
DebugWriteLine
(
"先攻不叠银河眼,叠银河巨神."
);
return
false
;
return
false
;
}
}
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
if
(
monsters
.
Count
==
1
&&
!
monsters
[
0
].
IsFacedown
()
&&
((
monsters
[
0
].
IsDefense
()
&&
monsters
[
0
].
GetDefensePower
()
>=
3000
)
&&
monsters
[
0
].
HasType
(
CardType
.
Xyz
)))
if
(
monsters
.
Count
==
1
&&
!
monsters
[
0
].
IsFacedown
()
&&
((
monsters
[
0
].
IsDefense
()
&&
monsters
[
0
].
GetDefensePower
()
>=
3000
)
&&
monsters
[
0
].
HasType
(
CardType
.
Xyz
)))
{
{
Logger
.
DebugWriteLine
(
"只有一个大怪兽,光波龙抢之."
);
return
true
;
return
true
;
}
}
if
(
monsters
.
Count
>=
3
)
if
(
monsters
.
Count
>=
3
)
...
@@ -697,7 +631,6 @@ namespace WindBot.Game.AI.Decks
...
@@ -697,7 +631,6 @@ namespace WindBot.Game.AI.Decks
{
{
if
(!
monster
.
IsFacedown
()
&&
((
monster
.
IsDefense
()
&&
monster
.
GetDefensePower
()
>=
3000
)
||
monster
.
HasType
(
CardType
.
Xyz
)))
if
(!
monster
.
IsFacedown
()
&&
((
monster
.
IsDefense
()
&&
monster
.
GetDefensePower
()
>=
3000
)
||
monster
.
HasType
(
CardType
.
Xyz
)))
{
{
Logger
.
DebugWriteLine
(
"貌似打不死,出个光波龙看看."
);
return
true
;
return
true
;
}
}
}
}
...
@@ -705,87 +638,79 @@ namespace WindBot.Game.AI.Decks
...
@@ -705,87 +638,79 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
银河眼光子龙皇超量召唤
()
private
bool
GalaxyEyesPrimePhotonDragonSumom
()
{
{
Logger
.
DebugWriteLine
(
"银河眼光子龙皇超量召唤."
);
if
(
Duel
.
Turn
==
1
)
if
(
Duel
.
Turn
==
1
)
{
{
Logger
.
DebugWriteLine
(
"先攻不叠银河眼,叠银河巨神."
);
return
false
;
return
false
;
}
}
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
2999
,
false
))
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
2999
,
false
))
{
{
Logger
.
DebugWriteLine
(
"有高攻怪兽,出银河眼."
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
银河眼重铠光子龙超量召唤
()
private
bool
GalaxyEyesFullArmorPhotonDragonSummon
()
{
{
Logger
.
DebugWriteLine
(
"银河眼重铠光子龙超量召唤."
);
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
GalaxyEyesCipherDragon
))
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
银河眼光波龙
))
{
{
List
<
ClientCard
>
monsters
=
Bot
.
GetMonsters
();
List
<
ClientCard
>
monsters
=
Bot
.
GetMonsters
();
foreach
(
ClientCard
monster
in
monsters
)
foreach
(
ClientCard
monster
in
monsters
)
{
{
if
((
monster
.
IsDisabled
()
&&
monster
.
HasType
(
CardType
.
Xyz
)
&&
!
monster
.
Equals
(
使用过的光波龙
))
if
((
monster
.
IsDisabled
()
&&
monster
.
HasType
(
CardType
.
Xyz
)
&&
!
monster
.
Equals
(
UsedGalaxyEyesCipherDragon
))
||
(
Duel
.
Phase
==
DuelPhase
.
Main2
&&
monster
.
Equals
(
使用过的光波龙
)))
||
(
Duel
.
Phase
==
DuelPhase
.
Main2
&&
monster
.
Equals
(
UsedGalaxyEyesCipherDragon
)))
{
{
AI
.
SelectCard
(
monster
);
AI
.
SelectCard
(
monster
);
return
true
;
return
true
;
}
}
}
}
}
}
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
银河眼光子龙皇
))
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
GalaxyEyesPrimePhotonDragon
))
{
{
if
(!
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
4000
,
false
))
if
(!
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
4000
,
false
))
{
{
Logger
.
DebugWriteLine
(
"没有高攻怪兽,出重铠."
);
AI
.
SelectCard
((
int
)
CardId
.
GalaxyEyesPrimePhotonDragon
);
AI
.
SelectCard
((
int
)
CardId
.
银河眼光子龙皇
);
return
true
;
return
true
;
}
}
}
}
return
false
;
return
false
;
}
}
private
bool
银河眼光波刃龙超量召唤
()
private
bool
GalaxyEyesCipherBladeDragonSummon
()
{
{
Logger
.
DebugWriteLine
(
"银河眼光波刃龙超量召唤."
);
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
GalaxyEyesFullArmorPhotonDragon
)
&&
AI
.
Utils
.
GetProblematicCard
()
!=
null
)
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
银河眼重铠光子龙
)
&&
AI
.
Utils
.
GetProblematicCard
()
!=
null
)
{
{
AI
.
SelectCard
((
int
)
CardId
.
银河眼重铠光子龙
);
AI
.
SelectCard
((
int
)
CardId
.
GalaxyEyesFullArmorPhotonDragon
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
银河眼暗物质龙超量召唤
()
private
bool
GalaxyEyesDarkMatterDragonSummom
()
{
{
Logger
.
DebugWriteLine
(
"银河眼暗物质龙超量召唤."
);
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
GalaxyEyesFullArmorPhotonDragon
))
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
银河眼重铠光子龙
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
银河眼重铠光子龙
);
AI
.
SelectCard
((
int
)
CardId
.
GalaxyEyesFullArmorPhotonDragon
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
银河眼光子龙皇效果
()
private
bool
GalaxyEyesPrimePhotonDragonEffect
()
{
{
return
true
;
return
true
;
}
}
private
bool
银河眼光波龙效果
()
private
bool
GalaxyEyesCipherDragonEffect
()
{
{
Logger
.
DebugWriteLine
(
"银河眼光波龙效果."
);
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
foreach
(
ClientCard
monster
in
monsters
)
foreach
(
ClientCard
monster
in
monsters
)
{
{
if
(
monster
.
HasType
(
CardType
.
Xyz
))
if
(
monster
.
HasType
(
CardType
.
Xyz
))
{
{
AI
.
SelectCard
(
monster
);
AI
.
SelectCard
(
monster
);
使用过的光波龙
=
Card
;
UsedGalaxyEyesCipherDragon
=
Card
;
return
true
;
return
true
;
}
}
}
}
...
@@ -794,17 +719,16 @@ namespace WindBot.Game.AI.Decks
...
@@ -794,17 +719,16 @@ namespace WindBot.Game.AI.Decks
if
(
monster
.
IsDefense
())
if
(
monster
.
IsDefense
())
{
{
AI
.
SelectCard
(
monster
);
AI
.
SelectCard
(
monster
);
使用过的光波龙
=
Card
;
UsedGalaxyEyesCipherDragon
=
Card
;
return
true
;
return
true
;
}
}
}
}
使用过的光波龙
=
Card
;
UsedGalaxyEyesCipherDragon
=
Card
;
return
true
;
return
true
;
}
}
private
bool
银河眼重铠光子龙效果
()
private
bool
GalaxyEyesFullArmorPhotonDragonEffect
()
{
{
Logger
.
DebugWriteLine
(
"重铠优先炸后场."
);
ClientCard
floodgate
=
Enemy
.
SpellZone
.
GetFloodgate
();
ClientCard
floodgate
=
Enemy
.
SpellZone
.
GetFloodgate
();
if
(
floodgate
!=
null
)
if
(
floodgate
!=
null
)
{
{
...
@@ -829,7 +753,6 @@ namespace WindBot.Game.AI.Decks
...
@@ -829,7 +753,6 @@ namespace WindBot.Game.AI.Decks
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
if
(
monsters
.
Count
>=
2
)
if
(
monsters
.
Count
>=
2
)
{
{
Logger
.
DebugWriteLine
(
"怪多就先炸守备的."
);
foreach
(
ClientCard
monster
in
monsters
)
foreach
(
ClientCard
monster
in
monsters
)
{
{
if
(
monster
.
IsDefense
())
if
(
monster
.
IsDefense
())
...
@@ -842,7 +765,6 @@ namespace WindBot.Game.AI.Decks
...
@@ -842,7 +765,6 @@ namespace WindBot.Game.AI.Decks
}
}
if
(
monsters
.
Count
==
2
)
if
(
monsters
.
Count
==
2
)
{
{
Logger
.
DebugWriteLine
(
"2只怪只炸打不过的,剩下留给暗物质打."
);
foreach
(
ClientCard
monster
in
monsters
)
foreach
(
ClientCard
monster
in
monsters
)
{
{
if
(
monster
.
IsMonsterInvincible
()
||
monster
.
IsMonsterDangerous
()
||
monster
.
GetDefensePower
()
>
4000
)
if
(
monster
.
IsMonsterInvincible
()
||
monster
.
IsMonsterDangerous
()
||
monster
.
GetDefensePower
()
>
4000
)
...
@@ -859,13 +781,12 @@ namespace WindBot.Game.AI.Decks
...
@@ -859,13 +781,12 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
银河眼光波刃龙效果
()
private
bool
GalaxyEyesCipherBladeDragonEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Grave
)
if
(
Card
.
Location
==
CardLocation
.
Grave
)
{
{
return
true
;
return
true
;
}
}
Logger
.
DebugWriteLine
(
"光波刃龙优先炸前场."
);
ClientCard
target
=
AI
.
Utils
.
GetProblematicCard
();
ClientCard
target
=
AI
.
Utils
.
GetProblematicCard
();
if
(
target
!=
null
)
if
(
target
!=
null
)
{
{
...
@@ -903,123 +824,111 @@ namespace WindBot.Game.AI.Decks
...
@@ -903,123 +824,111 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
银河眼暗物质龙效果
()
private
bool
GalaxyEyesDarkMatterDragonEffect
()
{
{
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
太古的白石
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
(
int
)
CardId
.
传说的白石
,
(
int
)
CardId
.
WhiteStoneOfLegend
,
(
int
)
CardId
.
白色灵龙
,
(
int
)
CardId
.
DragonSpiritOfWhite
,
(
int
)
CardId
.
青眼白龙
(
int
)
CardId
.
WhiteDragon
});
});
AI
.
SelectNextCard
(
new
[]
AI
.
SelectNextCard
(
new
[]
{
{
(
int
)
CardId
.
太古的白石
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
(
int
)
CardId
.
传说的白石
,
(
int
)
CardId
.
WhiteStoneOfLegend
,
(
int
)
CardId
.
白色灵龙
,
(
int
)
CardId
.
DragonSpiritOfWhite
,
(
int
)
CardId
.
青眼白龙
(
int
)
CardId
.
WhiteDragon
});
});
return
true
;
return
true
;
}
}
private
bool
鬼岩城同调召唤
()
private
bool
GiganticastleSummon
()
{
{
if
(
Duel
.
Phase
!=
DuelPhase
.
Main1
||
Duel
.
Turn
==
1
||
已发动灵魂补充
)
if
(
Duel
.
Phase
!=
DuelPhase
.
Main1
||
Duel
.
Turn
==
1
||
SoulChargeUsed
)
return
false
;
return
false
;
int
bestSelfAttack
=
AI
.
Utils
.
GetBestAttack
(
Bot
,
false
);
int
bestSelfAttack
=
AI
.
Utils
.
GetBestAttack
(
Bot
,
false
);
int
bestEnemyAttack
=
AI
.
Utils
.
GetBestAttack
(
Enemy
,
false
);
int
bestEnemyAttack
=
AI
.
Utils
.
GetBestAttack
(
Enemy
,
false
);
return
bestSelfAttack
<=
bestEnemyAttack
&&
bestEnemyAttack
>
2500
&&
bestEnemyAttack
<=
3100
;
return
bestSelfAttack
<=
bestEnemyAttack
&&
bestEnemyAttack
>
2500
&&
bestEnemyAttack
<=
3100
;
}
}
private
bool
青眼精灵龙同调召唤
()
private
bool
BlueEyesSpiritDragonSummon
()
{
{
if
(
Duel
.
Phase
==
DuelPhase
.
Main1
)
if
(
Duel
.
Phase
==
DuelPhase
.
Main1
)
{
{
Logger
.
DebugWriteLine
(
"主阶段1同调精灵龙."
);
if
(
UsedAlternativeWhiteDragon
.
Count
>
0
)
if
(
使用过的青眼亚白龙
.
Count
>
0
)
{
{
Logger
.
DebugWriteLine
(
"有用过的亚白需要同调."
);
return
true
;
return
true
;
}
}
if
(
Duel
.
Turn
==
1
||
已发动灵魂补充
)
if
(
Duel
.
Turn
==
1
||
SoulChargeUsed
)
{
{
Logger
.
DebugWriteLine
(
"先攻同调."
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
return
true
;
return
true
;
}
}
}
}
if
(
Duel
.
Phase
==
DuelPhase
.
Main2
)
if
(
Duel
.
Phase
==
DuelPhase
.
Main2
)
{
{
Logger
.
DebugWriteLine
(
"主阶段2同调精灵龙."
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
希望魁龙银河巨神超量召唤
()
private
bool
HopeHarbingerDragonTitanicGalaxySummon
()
{
{
if
(
Duel
.
Phase
==
DuelPhase
.
Main1
)
if
(
Duel
.
Phase
==
DuelPhase
.
Main1
)
{
{
Logger
.
DebugWriteLine
(
"主阶段1超量银河巨神."
);
if
(
UsedAlternativeWhiteDragon
.
Count
>
0
)
if
(
使用过的青眼亚白龙
.
Count
>
0
)
{
{
Logger
.
DebugWriteLine
(
"有用过的亚白可以叠."
);
return
true
;
return
true
;
}
}
if
(
Duel
.
Turn
==
1
||
已发动灵魂补充
)
if
(
Duel
.
Turn
==
1
||
SoulChargeUsed
)
{
{
Logger
.
DebugWriteLine
(
"先攻超量银河巨神."
);
return
true
;
return
true
;
}
}
}
}
if
(
Duel
.
Phase
==
DuelPhase
.
Main2
)
if
(
Duel
.
Phase
==
DuelPhase
.
Main2
)
{
{
Logger
.
DebugWriteLine
(
"主阶段2超量银河巨神."
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
森罗的姬芽宫超量召唤
()
private
bool
SylvanPrincesspriteSummon
()
{
{
if
(
Duel
.
Turn
==
1
)
if
(
Duel
.
Turn
==
1
)
{
{
Logger
.
DebugWriteLine
(
"先攻可以超量森罗的姬芽宫."
);
return
true
;
return
true
;
}
}
if
(
Duel
.
Phase
==
DuelPhase
.
Main1
&&
!
Bot
.
HasInMonstersZone
(
new
List
<
int
>
if
(
Duel
.
Phase
==
DuelPhase
.
Main1
&&
!
Bot
.
HasInMonstersZone
(
new
List
<
int
>
{
{
(
int
)
CardId
.
青眼亚白龙
,
(
int
)
CardId
.
AlternativeWhiteDragon
,
(
int
)
CardId
.
青眼白龙
,
(
int
)
CardId
.
WhiteDragon
,
(
int
)
CardId
.
白色灵龙
(
int
)
CardId
.
DragonSpiritOfWhite
}))
}))
{
{
Logger
.
DebugWriteLine
(
"不能出L9,只能叠森罗的姬芽宫."
);
return
true
;
return
true
;
}
}
if
(
Duel
.
Phase
==
DuelPhase
.
Main2
||
已发动灵魂补充
)
if
(
Duel
.
Phase
==
DuelPhase
.
Main2
||
SoulChargeUsed
)
{
{
Logger
.
DebugWriteLine
(
"主阶段2超量森罗的姬芽宫."
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
森罗的姬芽宫效果
()
private
bool
SylvanPrincesspriteEffect
()
{
{
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
传说的白石
,
(
int
)
CardId
.
WhiteStoneOfLegend
,
(
int
)
CardId
.
太古的白石
(
int
)
CardId
.
WhiteStoneOfAncients
});
});
return
true
;
return
true
;
}
}
private
bool
灵魂补充
()
private
bool
SoulChargeEffect
()
{
{
Logger
.
DebugWriteLine
(
"灵魂补充."
);
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
BlueEyesSpiritDragon
,
true
))
if
(
Bot
.
HasInMonstersZone
((
int
)
CardId
.
青眼精灵龙
,
true
))
return
false
;
return
false
;
int
count
=
Bot
.
GetGraveyardMonsters
().
Count
;
int
count
=
Bot
.
GetGraveyardMonsters
().
Count
;
int
space
=
5
-
Bot
.
GetMonsterCount
();
int
space
=
5
-
Bot
.
GetMonsterCount
();
...
@@ -1049,20 +958,20 @@ namespace WindBot.Game.AI.Decks
...
@@ -1049,20 +958,20 @@ namespace WindBot.Game.AI.Decks
}
}
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
青眼精灵龙
,
(
int
)
CardId
.
BlueEyesSpiritDragon
,
(
int
)
CardId
.
希望魁龙银河巨神
,
(
int
)
CardId
.
HopeHarbingerDragonTitanicGalaxy
,
(
int
)
CardId
.
青眼亚白龙
,
(
int
)
CardId
.
AlternativeWhiteDragon
,
(
int
)
CardId
.
青眼白龙
,
(
int
)
CardId
.
WhiteDragon
,
(
int
)
CardId
.
白色灵龙
,
(
int
)
CardId
.
DragonSpiritOfWhite
,
(
int
)
CardId
.
苍眼银龙
,
(
int
)
CardId
.
AzureEyesSilverDragon
,
(
int
)
CardId
.
太古的白石
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
(
int
)
CardId
.
传说的白石
(
int
)
CardId
.
WhiteStoneOfLegend
});
});
已发动灵魂补充
=
true
;
SoulChargeUsed
=
true
;
return
true
;
return
true
;
}
}
private
bool
改变攻守表示
()
private
bool
Repos
()
{
{
bool
enemyBetter
=
AI
.
Utils
.
IsEnemyBetter
(
true
,
true
);
bool
enemyBetter
=
AI
.
Utils
.
IsEnemyBetter
(
true
,
true
);
...
@@ -1073,25 +982,25 @@ namespace WindBot.Game.AI.Decks
...
@@ -1073,25 +982,25 @@ namespace WindBot.Game.AI.Decks
if
(
Card
.
IsDefense
()
&&
!
enemyBetter
&&
Card
.
Attack
>=
Card
.
Defense
)
if
(
Card
.
IsDefense
()
&&
!
enemyBetter
&&
Card
.
Attack
>=
Card
.
Defense
)
return
true
;
return
true
;
if
(
Card
.
IsDefense
()
&&
(
if
(
Card
.
IsDefense
()
&&
(
Card
.
Id
==
(
int
)
CardId
.
青眼精灵龙
Card
.
Id
==
(
int
)
CardId
.
BlueEyesSpiritDragon
||
Card
.
Id
==
(
int
)
CardId
.
苍眼银龙
||
Card
.
Id
==
(
int
)
CardId
.
AzureEyesSilverDragon
))
))
return
true
;
return
true
;
if
(
Card
.
IsAttack
()
&&
(
if
(
Card
.
IsAttack
()
&&
(
Card
.
Id
==
(
int
)
CardId
.
青色眼睛的贤士
Card
.
Id
==
(
int
)
CardId
.
SageWithEyesOfBlue
||
Card
.
Id
==
(
int
)
CardId
.
太古的白石
||
Card
.
Id
==
(
int
)
CardId
.
WhiteStoneOfAncients
||
Card
.
Id
==
(
int
)
CardId
.
传说的白石
||
Card
.
Id
==
(
int
)
CardId
.
WhiteStoneOfLegend
))
))
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
盖卡
()
private
bool
SpellSet
()
{
{
return
(
Card
.
IsTrap
()
||
(
Card
.
Id
==(
int
)
CardId
.
银龙的轰咆
))
&&
Bot
.
GetSpellCountWithoutField
()
<
4
;
return
(
Card
.
IsTrap
()
||
(
Card
.
Id
==(
int
)
CardId
.
SilversCry
))
&&
Bot
.
GetSpellCountWithoutField
()
<
4
;
}
}
private
bool
手里有
2
个
(
int
id
)
private
bool
HasTwoInHand
(
int
id
)
{
{
int
num
=
0
;
int
num
=
0
;
foreach
(
ClientCard
card
in
Bot
.
Hand
)
foreach
(
ClientCard
card
in
Bot
.
Hand
)
...
@@ -1102,23 +1011,23 @@ namespace WindBot.Game.AI.Decks
...
@@ -1102,23 +1011,23 @@ namespace WindBot.Game.AI.Decks
return
num
>=
2
;
return
num
>=
2
;
}
}
private
bool
能处理青眼亚白龙
()
private
bool
CanDealWithUsedAlternativeWhiteDragon
()
{
{
return
Bot
.
HasInMonstersZone
(
new
List
<
int
>
return
Bot
.
HasInMonstersZone
(
new
List
<
int
>
{
{
(
int
)
CardId
.
青色眼睛的贤士
,
(
int
)
CardId
.
SageWithEyesOfBlue
,
(
int
)
CardId
.
太古的白石
,
(
int
)
CardId
.
WhiteStoneOfAncients
,
(
int
)
CardId
.
传说的白石
,
(
int
)
CardId
.
WhiteStoneOfLegend
,
(
int
)
CardId
.
青眼白龙
,
(
int
)
CardId
.
WhiteDragon
,
(
int
)
CardId
.
白色灵龙
(
int
)
CardId
.
DragonSpiritOfWhite
})
||
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
青眼亚白龙
)>=
2
;
})
||
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
AlternativeWhiteDragon
)>=
2
;
}
}
private
bool
手里有足够的青眼白龙
()
private
bool
HaveEnoughWhiteDragonInHand
()
{
{
return
手里有
2
个
((
int
)
CardId
.
青眼白龙
)
||
(
return
HasTwoInHand
((
int
)
CardId
.
WhiteDragon
)
||
(
Bot
.
HasInGraveyard
((
int
)
CardId
.
青眼白龙
)
Bot
.
HasInGraveyard
((
int
)
CardId
.
WhiteDragon
)
&&
Bot
.
HasInGraveyard
((
int
)
CardId
.
太古的白石
)
&&
Bot
.
HasInGraveyard
((
int
)
CardId
.
WhiteStoneOfAncients
)
);
);
}
}
}
}
...
...
Game/AI/Decks/CyberDragonExecutor.cs
View file @
e37b72b1
...
@@ -9,120 +9,120 @@ namespace WindBot.Game.AI.Decks
...
@@ -9,120 +9,120 @@ namespace WindBot.Game.AI.Decks
[
Deck
(
"CyberDragon"
,
"AI_CyberDragon"
)]
[
Deck
(
"CyberDragon"
,
"AI_CyberDragon"
)]
public
class
CyberDragonExecutor
:
DefaultExecutor
public
class
CyberDragonExecutor
:
DefaultExecutor
{
{
bool
力量结合效果
=
false
;
bool
PowerBondUsed
=
false
;
public
enum
CardId
public
enum
CardId
{
{
电子镭射龙
=
4162088
,
CyberLaserDragon
=
4162088
,
电子障壁龙
=
68774379
,
CyberBarrierDragon
=
68774379
,
电子龙
=
70095154
,
CyberDragon
=
70095154
,
电子龙三型
=
59281922
,
CyberDragonDrei
=
59281922
,
电子凤凰
=
3370104
,
CyberPhoenix
=
3370104
,
装甲电子翼
=
67159705
,
ArmoredCybern
=
67159705
,
原始电子龙
=
26439287
,
ProtoCyberDragon
=
26439287
,
电子麒麟
=
76986005
,
CyberKirin
=
76986005
,
电子龙核
=
23893227
,
CyberDragonCore
=
23893227
,
电子多变龙
=
3657444
,
CyberValley
=
3657444
,
Raigeki
=
12580477
,
Raigeki
=
12580477
,
DarkHole
=
53129443
,
DarkHole
=
53129443
,
时间胶囊
=
11961740
,
DifferentDimensionCapsule
=
11961740
,
融合
=
24094653
,
Polymerization
=
24094653
,
力量结合
=
37630732
,
PowerBond
=
37630732
,
进化光焰
=
52875873
,
EvolutionBurst
=
52875873
,
光子发生装置
=
66607691
,
PhotonGeneratorUnit
=
66607691
,
融合解除
=
95286165
,
DeFusion
=
95286165
,
奈落的落穴
=
29401950
,
BottomlessTrapHole
=
29401950
,
神圣防护罩反射镜力
=
44095762
,
MirrorForce
=
44095762
,
攻击反射装置
=
91989718
,
AttackReflectorUnit
=
91989718
,
电子隐秘技术
=
92773018
,
CyberneticHiddenTechnology
=
92773018
,
活死人的呼声
=
97077563
,
CallOfTheHaunted
=
97077563
,
盗贼的七道具
=
3819470
,
SevenToolsOfTheBandit
=
3819470
,
电子双生龙
=
74157028
,
CyberTwinDragon
=
74157028
,
电子终结龙
=
1546123
,
CyberEndDragon
=
1546123
,
电子龙新星
=
58069384
CyberDragonNova
=
58069384
}
}
public
CyberDragonExecutor
(
GameAI
ai
,
Duel
duel
)
public
CyberDragonExecutor
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
:
base
(
ai
,
duel
)
{
{
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
融合解除
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
DeFusion
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
时间胶囊
,
Capsule
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DifferentDimensionCapsule
,
Capsule
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Raigeki
,
DefaultRaigeki
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Raigeki
,
DefaultRaigeki
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
融合
,
融合
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Polymerization
,
PolymerizationEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
力量结合
,
力量结合
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
PowerBond
,
PowerBondEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
进化光焰
,
进化光焰
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
EvolutionBurst
,
EvolutionBurstEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DarkHole
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DarkHole
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
光子发生装置
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
PhotonGeneratorUnit
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
融合解除
,
融合解除
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DeFusion
,
DeFusionEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
奈落的落穴
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
BottomlessTrapHole
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神圣防护罩反射镜力
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MirrorForce
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
攻击反射装置
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
AttackReflectorUnit
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
盗贼的七道具
,
DefaultTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SevenToolsOfTheBandit
,
DefaultTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
活死人的呼声
,
DefaultCallOfTheHaunted
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CallOfTheHaunted
,
DefaultCallOfTheHaunted
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
电子龙三型
,
没有电子龙可特殊召唤
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
CyberDragonDrei
,
NoCyberDragonSpsummon
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
电子凤凰
,
没有电子龙可特殊召唤
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
CyberPhoenix
,
NoCyberDragonSpsummon
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
电子多变龙
,
没有电子龙可特殊召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
CyberValley
,
NoCyberDragonSpsummon
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
电子龙核
,
没有电子龙可特殊召唤
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
CyberDragonCore
,
NoCyberDragonSpsummon
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
装甲电子翼
,
装甲电子翼
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
ArmoredCybern
,
ArmoredCybernSet
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
原始电子龙
,
原始电子龙
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
ProtoCyberDragon
,
ProtoCyberDragonSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
电子麒麟
,
电子麒麟
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
CyberKirin
,
CyberKirinSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
电子龙
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
CyberDragon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
电子终结龙
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
CyberEndDragon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
电子双生龙
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
CyberTwinDragon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
电子障壁龙
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
CyberBarrierDragon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
电子镭射龙
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
CyberLaserDragon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
电子障壁龙
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CyberBarrierDragon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
电子镭射龙
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CyberLaserDragon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
电子龙三型
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CyberDragonDrei
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
电子凤凰
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CyberPhoenix
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
电子麒麟
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CyberKirin
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
装甲电子翼
,
装甲电子翼效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ArmoredCybern
,
ArmoredCybernEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
电子多变龙
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CyberValley
);
AddExecutor
(
ExecutorType
.
SpellSet
,
DefaultSpellSet
);
AddExecutor
(
ExecutorType
.
SpellSet
,
DefaultSpellSet
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
}
}
private
bool
CyberDragonInHand
()
{
return
Bot
.
HasInHand
((
int
)
CardId
.
电子龙
);
}
private
bool
CyberDragonInHand
()
{
return
Bot
.
HasInHand
((
int
)
CardId
.
CyberDragon
);
}
private
bool
CyberDragonInGraveyard
()
{
return
Bot
.
HasInGraveyard
((
int
)
CardId
.
电子龙
);
}
private
bool
CyberDragonInGraveyard
()
{
return
Bot
.
HasInGraveyard
((
int
)
CardId
.
CyberDragon
);
}
private
bool
CyberDragonInMonsterZone
()
{
return
Bot
.
HasInMonstersZone
((
int
)
CardId
.
电子龙
);
}
private
bool
CyberDragonInMonsterZone
()
{
return
Bot
.
HasInMonstersZone
((
int
)
CardId
.
CyberDragon
);
}
private
bool
CyberDragonIsBanished
()
{
return
Bot
.
HasInBanished
((
int
)
CardId
.
电子龙
);
}
private
bool
CyberDragonIsBanished
()
{
return
Bot
.
HasInBanished
((
int
)
CardId
.
CyberDragon
);
}
private
bool
Capsule
()
private
bool
Capsule
()
{
{
List
<
int
>
SelectedCard
=
new
List
<
int
>();
List
<
int
>
SelectedCard
=
new
List
<
int
>();
SelectedCard
.
Add
((
int
)
CardId
.
力量结合
);
SelectedCard
.
Add
((
int
)
CardId
.
PowerBond
);
SelectedCard
.
Add
((
int
)
CardId
.
DarkHole
);
SelectedCard
.
Add
((
int
)
CardId
.
DarkHole
);
SelectedCard
.
Add
((
int
)
CardId
.
Raigeki
);
SelectedCard
.
Add
((
int
)
CardId
.
Raigeki
);
AI
.
SelectCard
(
SelectedCard
);
AI
.
SelectCard
(
SelectedCard
);
return
true
;
return
true
;
}
}
private
bool
融合
()
private
bool
PolymerizationEffect
()
{
{
if
(
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
原始电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
电子龙三型
)
+
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
电子龙三型
)
+
Bot
.
GetCountCardInZone
(
Bot
.
Hand
,
(
int
)
CardId
.
电子龙
)
>=
3
)
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
.
电子终结龙
);
AI
.
SelectCard
((
int
)
CardId
.
CyberEndDragon
);
else
else
AI
.
SelectCard
((
int
)
CardId
.
电子双生龙
);
AI
.
SelectCard
((
int
)
CardId
.
CyberTwinDragon
);
return
true
;
return
true
;
}
}
private
bool
力量结合
()
private
bool
PowerBondEffect
()
{
{
力量结合效果
=
true
;
PowerBondUsed
=
true
;
if
(
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
原始电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
Hand
,
(
int
)
CardId
.
电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
Graveyard
,
(
int
)
CardId
.
电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
Hand
,
(
int
)
CardId
.
电子龙核
)
+
Bot
.
GetCountCardInZone
(
Bot
.
Graveyard
,
(
int
)
CardId
.
电子龙核
)
+
Bot
.
GetCountCardInZone
(
Bot
.
Graveyard
,
(
int
)
CardId
.
电子龙三型
)
+
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
电子龙三型
)
>=
3
)
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
.
电子终结龙
);
AI
.
SelectCard
((
int
)
CardId
.
CyberEndDragon
);
else
else
AI
.
SelectCard
((
int
)
CardId
.
电子双生龙
);
AI
.
SelectCard
((
int
)
CardId
.
CyberTwinDragon
);
return
true
;
return
true
;
}
}
private
bool
进化光焰
()
private
bool
EvolutionBurstEffect
()
{
{
ClientCard
bestMy
=
Bot
.
GetMonsters
().
GetHighestAttackMonster
();
ClientCard
bestMy
=
Bot
.
GetMonsters
().
GetHighestAttackMonster
();
if
(
bestMy
==
null
||
!
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
bestMy
.
Attack
,
false
))
if
(
bestMy
==
null
||
!
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
bestMy
.
Attack
,
false
))
...
@@ -132,49 +132,49 @@ namespace WindBot.Game.AI.Decks
...
@@ -132,49 +132,49 @@ namespace WindBot.Game.AI.Decks
return
true
;
return
true
;
}
}
private
bool
没有电子龙可特殊召唤
()
private
bool
NoCyberDragonSpsummon
()
{
{
if
(
CyberDragonInHand
()
&&
(
Bot
.
GetMonsterCount
()
==
0
&&
Enemy
.
GetMonsterCount
()
!=
0
))
if
(
CyberDragonInHand
()
&&
(
Bot
.
GetMonsterCount
()
==
0
&&
Enemy
.
GetMonsterCount
()
!=
0
))
return
false
;
return
false
;
return
true
;
return
true
;
}
}
private
bool
装甲电子翼
()
private
bool
ArmoredCybernSet
()
{
{
if
(
CyberDragonInHand
()
&&
(
Bot
.
GetMonsterCount
()
==
0
&&
Enemy
.
GetMonsterCount
()
!=
0
)
||
(
Bot
.
HasInHand
((
int
)
CardId
.
电子龙三型
)
||
Bot
.
HasInHand
((
int
)
CardId
.
电子凤凰
))
&&
!
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1800
,
true
))
if
(
CyberDragonInHand
()
&&
(
Bot
.
GetMonsterCount
()
==
0
&&
Enemy
.
GetMonsterCount
()
!=
0
)
||
(
Bot
.
HasInHand
((
int
)
CardId
.
CyberDragonDrei
)
||
Bot
.
HasInHand
((
int
)
CardId
.
CyberPhoenix
))
&&
!
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1800
,
true
))
return
false
;
return
false
;
return
true
;
return
true
;
}
}
private
bool
原始电子龙
()
private
bool
ProtoCyberDragonSummon
()
{
{
if
(
Bot
.
GetCountCardInZone
(
Bot
.
Hand
,
(
int
)
CardId
.
电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
电子龙核
)
>=
1
&&
Bot
.
HasInHand
((
int
)
CardId
.
融合
)
||
Bot
.
GetCountCardInZone
(
Bot
.
Hand
,
(
int
)
CardId
.
电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
MonsterZone
,
(
int
)
CardId
.
电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
Graveyard
,
(
int
)
CardId
.
电子龙
)
+
Bot
.
GetCountCardInZone
(
Bot
.
Graveyard
,
(
int
)
CardId
.
电子龙核
)
>=
1
&&
Bot
.
HasInHand
((
int
)
CardId
.
力量结合
))
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
))
return
true
;
return
true
;
if
(
CyberDragonInHand
()
&&
(
Bot
.
GetMonsterCount
()
==
0
&&
Enemy
.
GetMonsterCount
()
!=
0
)
||
(
Bot
.
HasInHand
((
int
)
CardId
.
电子龙三型
)
||
Bot
.
HasInHand
((
int
)
CardId
.
电子凤凰
))
&&
!
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1800
,
true
))
if
(
CyberDragonInHand
()
&&
(
Bot
.
GetMonsterCount
()
==
0
&&
Enemy
.
GetMonsterCount
()
!=
0
)
||
(
Bot
.
HasInHand
((
int
)
CardId
.
CyberDragonDrei
)
||
Bot
.
HasInHand
((
int
)
CardId
.
CyberPhoenix
))
&&
!
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1800
,
true
))
return
false
;
return
false
;
return
true
;
return
true
;
}
}
private
bool
电子麒麟
()
private
bool
CyberKirinSummon
()
{
{
return
力量结合效果
;
return
PowerBondUsed
;
}
}
private
bool
装甲电子翼效果
()
private
bool
ArmoredCybernEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Hand
)
if
(
Card
.
Location
==
CardLocation
.
Hand
)
return
true
;
return
true
;
else
if
(
Card
.
Location
==
CardLocation
.
SpellZone
)
else
if
(
Card
.
Location
==
CardLocation
.
SpellZone
)
{
{
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
Bot
.
GetMonsters
().
GetHighestAttackMonster
().
Attack
,
true
))
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
Bot
.
GetMonsters
().
GetHighestAttackMonster
().
Attack
,
true
))
if
(
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
CardId
.
装甲电子翼
,
2
))
if
(
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
CardId
.
ArmoredCybern
,
2
))
return
true
;
return
true
;
return
false
;
return
false
;
}
}
return
false
;
return
false
;
}
}
private
bool
融合解除
()
private
bool
DeFusionEffect
()
{
{
if
(
Duel
.
Phase
==
DuelPhase
.
Battle
)
if
(
Duel
.
Phase
==
DuelPhase
.
Battle
)
{
{
...
...
Game/AI/Decks/EvilswarmExecutor.cs
View file @
e37b72b1
...
@@ -11,23 +11,23 @@ namespace WindBot.Game.AI.Decks
...
@@ -11,23 +11,23 @@ namespace WindBot.Game.AI.Decks
{
{
public
enum
CardId
public
enum
CardId
{
{
黑洞
=
53129443
,
DarkHole
=
53129443
,
宇宙旋风
=
8267140
,
CosmicCyclone
=
8267140
,
侵略的泛发感染
=
27541267
,
InfestationPandemic
=
27541267
,
神之宣告
=
41420027
,
SolemnJudgment
=
41420027
,
神之警告
=
84749824
,
SolemnWarning
=
84749824
,
神之通告
=
40605147
SolemnStrike
=
40605147
}
}
public
EvilswarmExecutor
(
GameAI
ai
,
Duel
duel
)
public
EvilswarmExecutor
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
:
base
(
ai
,
duel
)
{
{
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
黑洞
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DarkHole
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
宇宙旋风
,
DefaultCosmicCyclone
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CosmicCyclone
,
DefaultCosmicCyclone
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神之宣告
,
DefaultSolemnJudgment
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SolemnJudgment
,
DefaultSolemnJudgment
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神之警告
,
DefaultSolemnWarning
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SolemnWarning
,
DefaultSolemnWarning
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神之通告
,
DefaultSolemnStrike
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SolemnStrike
,
DefaultSolemnStrike
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
侵略的泛发感染
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
InfestationPandemic
);
AddExecutor
(
ExecutorType
.
Activate
,
DefaultDontChainMyself
);
AddExecutor
(
ExecutorType
.
Activate
,
DefaultDontChainMyself
);
AddExecutor
(
ExecutorType
.
Summon
);
AddExecutor
(
ExecutorType
.
Summon
);
AddExecutor
(
ExecutorType
.
SpSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
);
...
...
Game/AI/Decks/GravekeeperExecutor.cs
View file @
e37b72b1
...
@@ -11,30 +11,30 @@ namespace WindBot.Game.AI.Decks
...
@@ -11,30 +11,30 @@ namespace WindBot.Game.AI.Decks
{
{
public
enum
CardId
public
enum
CardId
{
{
守墓的审神者
=
25524823
,
GravekeepersOracle
=
25524823
,
罪星尘龙
=
36521459
,
MaleficStardustDragon
=
36521459
,
守墓的大神官
=
3825890
,
GravekeepersVisionary
=
3825890
,
守墓之长
=
62473983
,
GravekeepersChief
=
62473983
,
雷王
=
71564252
,
ThunderKingRaiOh
=
71564252
,
守墓的司令官
=
17393207
,
GravekeepersCommandant
=
17393207
,
守墓的暗杀者
=
25262697
,
GravekeepersAssailant
=
25262697
,
守墓的末裔
=
30213599
,
GravekeepersDescendant
=
30213599
,
守墓的侦察者
=
24317029
,
GravekeepersSpy
=
24317029
,
守墓的召唤师
=
93023479
,
GravekeepersRecruiter
=
93023479
,
暗之诱惑
=
1475311
,
AllureOfDarkness
=
1475311
,
黑洞
=
53129443
,
DarkHole
=
53129443
,
王家的牲祭
=
72405967
,
RoyalTribute
=
72405967
,
守墓的石板
=
99523325
,
GravekeepersStele
=
99523325
,
旋风
=
5318639
,
MysticalSpaceTyphoon
=
5318639
,
月之书
=
14087893
,
BookofMoon
=
14087893
,
王家长眠之谷的祭殿
=
70000776
,
HiddenTemplesOfNecrovalley
=
70000776
,
王家长眠之谷
=
47355498
,
Necrovalley
=
47355498
,
奈落的落穴
=
29401950
,
BottomlessTrapHole
=
29401950
,
降灵的仪式
=
30450531
,
RiteOfSpirit
=
30450531
,
激流葬
=
53582587
,
TorrentialTribute
=
53582587
,
次元幽闭
=
70342110
,
DimensionalPrison
=
70342110
,
神之警告
=
84749824
,
SolemnWarning
=
84749824
,
王家长眠之谷的王墓
=
90434657
ImperialTombsOfNecrovalley
=
90434657
}
}
public
GravekeeperExecutor
(
GameAI
ai
,
Duel
duel
)
public
GravekeeperExecutor
(
GameAI
ai
,
Duel
duel
)
...
@@ -42,79 +42,79 @@ namespace WindBot.Game.AI.Decks
...
@@ -42,79 +42,79 @@ namespace WindBot.Game.AI.Decks
{
{
AddExecutor
(
ExecutorType
.
SpellSet
,
DefaultSpellSet
);
AddExecutor
(
ExecutorType
.
SpellSet
,
DefaultSpellSet
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
暗之诱惑
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
AllureOfDarkness
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
黑洞
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DarkHole
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
王家的牲祭
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
RoyalTribute
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
守墓的石板
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GravekeepersStele
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
旋风
,
DefaultMysticalSpaceTyphoon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MysticalSpaceTyphoon
,
DefaultMysticalSpaceTyphoon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
月之书
,
DefaultBookOfMoon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
BookofMoon
,
DefaultBookOfMoon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
王家长眠之谷的祭殿
,
王家长眠之谷的祭殿
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
HiddenTemplesOfNecrovalley
,
HiddenTemplesOfNecrovalleyEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
王家长眠之谷
,
王家长眠之谷
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Necrovalley
,
NecrovalleyActivate
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
奈落的落穴
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
BottomlessTrapHole
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神之警告
,
DefaultSolemnWarning
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SolemnWarning
,
DefaultSolemnWarning
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
次元幽闭
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DimensionalPrison
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
降灵的仪式
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
RiteOfSpirit
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
王家长眠之谷的王墓
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ImperialTombsOfNecrovalley
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
激流葬
,
DefaultTorrentialTribute
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
TorrentialTribute
,
DefaultTorrentialTribute
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
守墓的审神者
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
GravekeepersOracle
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
罪星尘龙
,
罪星尘龙
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
MaleficStardustDragon
,
MaleficStardustDragonSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
守墓的大神官
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
GravekeepersVisionary
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
守墓之长
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
GravekeepersChief
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
雷王
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
ThunderKingRaiOh
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
守墓的司令官
,
守墓的司令官召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
GravekeepersCommandant
,
GravekeepersCommandantSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
守墓的暗杀者
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
GravekeepersAssailant
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
守墓的末裔
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
GravekeepersDescendant
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
守墓的侦察者
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
GravekeepersSpy
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
守墓的召唤师
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
GravekeepersRecruiter
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
守墓的审神者
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GravekeepersOracle
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
守墓的大神官
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GravekeepersVisionary
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
守墓之长
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GravekeepersChief
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
守墓的司令官
,
守墓的司令官
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GravekeepersCommandant
,
GravekeepersCommandantEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
守墓的暗杀者
,
守墓的暗杀者
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GravekeepersAssailant
,
GravekeepersAssailantEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
守墓的末裔
,
守墓的末裔
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GravekeepersDescendant
,
GravekeepersDescendantEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
守墓的侦察者
,
检索守墓的末裔
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GravekeepersSpy
,
SearchForDescendant
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
守墓的召唤师
,
检索守墓的末裔
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GravekeepersRecruiter
,
SearchForDescendant
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
}
}
private
bool
王家长眠之谷的祭殿
()
private
bool
HiddenTemplesOfNecrovalleyEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Hand
&&
Bot
.
HasInSpellZone
((
int
)
Card
.
Id
))
if
(
Card
.
Location
==
CardLocation
.
Hand
&&
Bot
.
HasInSpellZone
((
int
)
Card
.
Id
))
return
false
;
return
false
;
return
true
;
return
true
;
}
}
private
bool
王家长眠之谷
()
private
bool
NecrovalleyActivate
()
{
{
if
(
Bot
.
SpellZone
[
5
]
!=
null
)
if
(
Bot
.
SpellZone
[
5
]
!=
null
)
return
false
;
return
false
;
return
true
;
return
true
;
}
}
private
bool
罪星尘龙
()
private
bool
MaleficStardustDragonSummon
()
{
{
if
(
Bot
.
SpellZone
[
5
]
!=
null
)
if
(
Bot
.
SpellZone
[
5
]
!=
null
)
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
守墓的司令官
()
private
bool
GravekeepersCommandantEffect
()
{
{
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
王家长眠之谷
)
&&
!
Bot
.
HasInSpellZone
((
int
)
CardId
.
王家长眠之谷
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
Necrovalley
)
&&
!
Bot
.
HasInSpellZone
((
int
)
CardId
.
Necrovalley
))
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
守墓的司令官召唤
()
private
bool
GravekeepersCommandantSummon
()
{
{
return
!
守墓的司令官
();
return
!
GravekeepersCommandantEffect
();
}
}
private
bool
守墓的暗杀者
()
private
bool
GravekeepersAssailantEffect
()
{
{
if
(!
Card
.
IsAttack
())
if
(!
Card
.
IsAttack
())
return
false
;
return
false
;
...
@@ -126,7 +126,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -126,7 +126,7 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
守墓的末裔
()
private
bool
GravekeepersDescendantEffect
()
{
{
int
bestatk
=
Bot
.
GetMonsters
().
GetHighestAttackMonster
().
Attack
;
int
bestatk
=
Bot
.
GetMonsters
().
GetHighestAttackMonster
().
Attack
;
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
bestatk
,
true
))
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
bestatk
,
true
))
...
@@ -137,9 +137,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -137,9 +137,9 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
检索守墓的末裔
()
private
bool
SearchForDescendant
()
{
{
AI
.
SelectCard
((
int
)
CardId
.
守墓的末裔
);
AI
.
SelectCard
((
int
)
CardId
.
GravekeepersDescendant
);
return
true
;
return
true
;
}
}
}
}
...
...
Game/AI/Decks/GraydleExecutor.cs
View file @
e37b72b1
...
@@ -11,21 +11,21 @@ namespace WindBot.Game.AI.Decks
...
@@ -11,21 +11,21 @@ namespace WindBot.Game.AI.Decks
{
{
public
enum
CardId
public
enum
CardId
{
{
黑洞
=
53129443
,
DarkHole
=
53129443
,
宇宙旋风
=
8267140
,
CosmicCyclone
=
8267140
,
神之宣告
=
41420027
,
SolemnJudgment
=
41420027
,
神之警告
=
84749824
,
SolemnWarning
=
84749824
,
神之通告
=
40605147
SolemnStrike
=
40605147
}
}
public
GraydleExecutor
(
GameAI
ai
,
Duel
duel
)
public
GraydleExecutor
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
:
base
(
ai
,
duel
)
{
{
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
黑洞
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DarkHole
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
宇宙旋风
,
DefaultCosmicCyclone
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CosmicCyclone
,
DefaultCosmicCyclone
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神之宣告
,
DefaultSolemnJudgment
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SolemnJudgment
,
DefaultSolemnJudgment
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神之警告
,
DefaultSolemnWarning
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SolemnWarning
,
DefaultSolemnWarning
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神之通告
,
DefaultSolemnStrike
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SolemnStrike
,
DefaultSolemnStrike
);
AddExecutor
(
ExecutorType
.
Activate
,
DefaultDontChainMyself
);
AddExecutor
(
ExecutorType
.
Activate
,
DefaultDontChainMyself
);
AddExecutor
(
ExecutorType
.
MonsterSet
);
AddExecutor
(
ExecutorType
.
MonsterSet
);
AddExecutor
(
ExecutorType
.
SpSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
);
...
...
Game/AI/Decks/LightswornExecutor.cs
View file @
e37b72b1
...
@@ -11,86 +11,86 @@ namespace WindBot.Game.AI.Decks
...
@@ -11,86 +11,86 @@ namespace WindBot.Game.AI.Decks
{
{
public
enum
CardId
public
enum
CardId
{
{
裁决之龙
=
57774843
,
JudgmentDragon
=
57774843
,
光道兽沃尔夫
=
58996430
,
Wulf
=
58996430
,
光道战士加洛斯
=
59019082
,
Garoth
=
59019082
,
光道暗杀者莱登
=
77558536
,
Raiden
=
77558536
,
光道魔术师丽拉
=
22624373
,
Lyla
=
22624373
,
娱乐法师戏法小丑
=
67696066
,
Felis
=
73176465
,
哥布林德伯格
=
25259669
,
Lumina
=
95503687
,
英豪挑战者千刀兵
=
1833916
,
Minerva
=
40164421
,
光道弓手费莉丝
=
73176465
,
Ryko
=
21502796
,
欧尼斯特
=
37742478
,
PerformageTrickClown
=
67696066
,
光道召唤师露米娜丝
=
95503687
,
Goblindbergh
=
25259669
,
光道少女密涅瓦
=
40164421
,
ThousandBlades
=
1833916
,
光道猎犬雷光
=
21502796
,
Honest
=
37742478
,
成长的鳞茎
=
67441435
,
GlowUpBulb
=
67441435
,
太阳交换
=
691925
,
银河旋风
=
5133471
,
SolarRecharge
=
691925
,
鹰身女妖的羽毛扫
=
18144506
,
GalaxyCyclone
=
5133471
,
增援
=
32807846
,
HarpiesFeatherDuster
=
18144506
,
炼装融合
=
73594093
,
ReinforcementOfTheArmy
=
32807846
,
光之援军
=
94886282
,
MetalfoesFusion
=
73594093
,
冰结界之龙三叉龙
=
52687916
,
ChargeOfTheLightBrigade
=
94886282
,
红莲魔龙右红痕
=
80666118
,
PSY
骨架王Ω
=
74586817
,
Michael
=
4779823
,
光道主大天使米迦勒
=
4779823
,
MinervaTheExalted
=
30100551
,
PSY
骨架王Ζ
=
37192109
,
TrishulaDragonOfTheIceBarrier
=
52687916
,
闪光
No39
希望皇霍普电光皇
=
56832966
,
ScarlightRedDragonArchfiend
=
80666118
,
No39
希望皇霍普
=
84013237
,
PSYFramelordOmega
=
74586817
,
鸟铳士卡斯泰尔
=
82633039
,
PSYFramelordZeta
=
37192109
,
光道圣女密涅瓦
=
30100551
,
NumberS39UtopiatheLightning
=
56832966
,
励辉士入魔蝇王
=
46772449
,
Number39Utopia
=
84013237
,
彼岸的旅人但丁
=
83531441
,
CastelTheSkyblasterMusketeer
=
82633039
,
解码语者
=
1861629
,
EvilswarmExcitonKnight
=
46772449
,
金毛妇
=
3987233
DanteTravelerOfTheBurningAbyss
=
83531441
,
DecodeTalker
=
1861629
,
MissusRadiant
=
3987233
}
}
bool
已发动小丑
=
false
;
bool
ClownUsed
=
false
;
public
LightswornExecutor
(
GameAI
ai
,
Duel
duel
)
public
LightswornExecutor
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
:
base
(
ai
,
duel
)
{
{
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
鹰身女妖的羽毛扫
,
DefaultHarpiesFeatherDusterFirst
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
HarpiesFeatherDuster
,
DefaultHarpiesFeatherDusterFirst
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
银河旋风
,
DefaultGalaxyCyclone
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GalaxyCyclone
,
DefaultGalaxyCyclone
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
鹰身女妖的羽毛扫
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
HarpiesFeatherDuster
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
炼装融合
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MetalfoesFusion
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
成长的鳞茎
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
GlowUpBulb
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
裁决之龙
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
JudgmentDragon
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
裁决之龙
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
JudgmentDragon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
增援
,
增援效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ReinforcementOfTheArmy
,
ReinforcementOfTheArmyEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
光之援军
,
光之援军效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ChargeOfTheLightBrigade
,
ChargeOfTheLightBrigadeEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
太阳交换
,
太阳交换效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SolarRecharge
,
SolarRechargeEffect
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
哥布林德伯格
,
哥布林德伯格通常召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
Goblindbergh
,
GoblindberghSummon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
哥布林德伯格
,
哥布林德伯格效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Goblindbergh
,
GoblindberghEffect
);
// 常用额外
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
EvilswarmExcitonKnight
,
EvilswarmExcitonKnightSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
励辉士入魔蝇王
,
励辉士入魔蝇王特殊召唤
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
EvilswarmExcitonKnight
,
EvilswarmExcitonKnightEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
励辉士入魔蝇王
,
励辉士入魔蝇王效果
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
CastelTheSkyblasterMusketeer
,
CastelTheSkyblasterMusketeerSummom
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
鸟铳士卡斯泰尔
,
鸟铳士卡斯泰尔特殊召唤
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CastelTheSkyblasterMusketeer
,
CastelTheSkyblasterMusketeerEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
鸟铳士卡斯泰尔
,
鸟铳士卡斯泰尔效果
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
ScarlightRedDragonArchfiend
,
ScarlightRedDragonArchfiendSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
红莲魔龙右红痕
,
红莲魔龙右红痕特殊召唤
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ScarlightRedDragonArchfiend
,
ScarlightRedDragonArchfiendEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
红莲魔龙右红痕
,
红莲魔龙右红痕效果
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
Number39Utopia
,
NumberS39UtopiatheLightningSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
No39
希望皇霍普
,
电光皇特殊召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
NumberS39UtopiatheLightning
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
闪光
No39
希望皇霍普电光皇
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
NumberS39UtopiatheLightning
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
闪光
No39
希望皇霍普电光皇
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
PerformageTrickClown
,
PerformageTrickClownEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
娱乐法师戏法小丑
,
娱乐法师戏法小丑效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ThousandBlades
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
英豪挑战者千刀兵
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Honest
,
HonestEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
欧尼斯特
,
欧尼斯特效果
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
}
}
public
override
void
OnNewTurn
()
public
override
void
OnNewTurn
()
{
{
// 回合开始时重置状况
ClownUsed
=
false
;
已发动小丑
=
false
;
}
}
public
override
bool
OnPreBattleBetween
(
ClientCard
attacker
,
ClientCard
defender
)
public
override
bool
OnPreBattleBetween
(
ClientCard
attacker
,
ClientCard
defender
)
...
@@ -100,11 +100,11 @@ namespace WindBot.Game.AI.Decks
...
@@ -100,11 +100,11 @@ namespace WindBot.Game.AI.Decks
if
(
defender
.
IsMonsterDangerous
()
||
defender
.
IsDefense
())
if
(
defender
.
IsMonsterDangerous
()
||
defender
.
IsDefense
())
return
false
;
return
false
;
}
}
if
(!(
defender
.
Id
==
(
int
)
CardId
.
闪光
No39
希望皇霍普电光皇
))
if
(!(
defender
.
Id
==
(
int
)
CardId
.
NumberS39UtopiatheLightning
))
{
{
if
(
attacker
.
Attribute
==
(
int
)
CardAttribute
.
Light
&&
Bot
.
HasInHand
((
int
)
CardId
.
欧尼斯特
))
if
(
attacker
.
Attribute
==
(
int
)
CardAttribute
.
Light
&&
Bot
.
HasInHand
((
int
)
CardId
.
Honest
))
attacker
.
RealPower
=
attacker
.
RealPower
+
defender
.
Attack
;
attacker
.
RealPower
=
attacker
.
RealPower
+
defender
.
Attack
;
if
(
attacker
.
Id
==
(
int
)
CardId
.
闪光
No39
希望皇霍普电光皇
&&
!
attacker
.
IsDisabled
()
&&
attacker
.
HasXyzMaterial
(
2
,
(
int
)
CardId
.
No39
希望皇霍普
))
if
(
attacker
.
Id
==
(
int
)
CardId
.
NumberS39UtopiatheLightning
&&
!
attacker
.
IsDisabled
()
&&
attacker
.
HasXyzMaterial
(
2
,
(
int
)
CardId
.
Number39Utopia
))
attacker
.
RealPower
=
5000
;
attacker
.
RealPower
=
5000
;
}
}
return
attacker
.
RealPower
>
defender
.
GetDefensePower
();
return
attacker
.
RealPower
>
defender
.
GetDefensePower
();
...
@@ -114,7 +114,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -114,7 +114,7 @@ namespace WindBot.Game.AI.Decks
{
{
if
(
max
==
2
&&
min
==
2
&&
cards
[
0
].
Location
==
CardLocation
.
MonsterZone
)
if
(
max
==
2
&&
min
==
2
&&
cards
[
0
].
Location
==
CardLocation
.
MonsterZone
)
{
{
Logger
.
DebugWriteLine
(
"
超量召唤.
"
);
Logger
.
DebugWriteLine
(
"
OnSelectCard XYZ
"
);
IList
<
ClientCard
>
avail
=
new
List
<
ClientCard
>();
IList
<
ClientCard
>
avail
=
new
List
<
ClientCard
>();
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
...
@@ -124,7 +124,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -124,7 +124,7 @@ namespace WindBot.Game.AI.Decks
IList
<
ClientCard
>
result
=
new
List
<
ClientCard
>();
IList
<
ClientCard
>
result
=
new
List
<
ClientCard
>();
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
if
(!
result
.
Contains
(
card
)
&&
(!
已发动小丑
||
card
.
Id
!=
(
int
)
CardId
.
娱乐法师戏法小丑
))
if
(!
result
.
Contains
(
card
)
&&
(!
ClownUsed
||
card
.
Id
!=
(
int
)
CardId
.
PerformageTrickClown
))
result
.
Add
(
card
);
result
.
Add
(
card
);
if
(
result
.
Count
>=
2
)
if
(
result
.
Count
>=
2
)
break
;
break
;
...
@@ -145,44 +145,44 @@ namespace WindBot.Game.AI.Decks
...
@@ -145,44 +145,44 @@ namespace WindBot.Game.AI.Decks
return
null
;
return
null
;
}
}
private
bool
增援效果
()
private
bool
ReinforcementOfTheArmyEffect
()
{
{
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
哥布林德伯格
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
Goblindbergh
))
AI
.
SelectCard
((
int
)
CardId
.
哥布林德伯格
);
AI
.
SelectCard
((
int
)
CardId
.
Goblindbergh
);
else
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
光道暗杀者莱登
))
else
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
Raiden
))
AI
.
SelectCard
((
int
)
CardId
.
光道暗杀者莱登
);
AI
.
SelectCard
((
int
)
CardId
.
Raiden
);
return
true
;
return
true
;
}
}
private
bool
光之援军效果
()
private
bool
ChargeOfTheLightBrigadeEffect
()
{
{
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
光道召唤师露米娜丝
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
Lumina
))
AI
.
SelectCard
((
int
)
CardId
.
光道召唤师露米娜丝
);
AI
.
SelectCard
((
int
)
CardId
.
Lumina
);
else
else
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
光道暗杀者莱登
,
(
int
)
CardId
.
Raiden
,
(
int
)
CardId
.
光道召唤师露米娜丝
,
(
int
)
CardId
.
Lumina
,
(
int
)
CardId
.
光道少女密涅瓦
,
(
int
)
CardId
.
Minerva
,
(
int
)
CardId
.
光道魔术师丽拉
(
int
)
CardId
.
Lyla
});
});
return
true
;
return
true
;
}
}
private
bool
太阳交换效果
()
private
bool
SolarRechargeEffect
()
{
{
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
光道兽沃尔夫
,
(
int
)
CardId
.
Wulf
,
(
int
)
CardId
.
光道弓手费莉丝
,
(
int
)
CardId
.
Felis
,
(
int
)
CardId
.
光道少女密涅瓦
,
(
int
)
CardId
.
Minerva
,
(
int
)
CardId
.
光道魔术师丽拉
,
(
int
)
CardId
.
Lyla
,
(
int
)
CardId
.
光道暗杀者莱登
(
int
)
CardId
.
Raiden
});
});
return
true
;
return
true
;
}
}
private
bool
哥布林德伯格通常召唤
()
private
bool
GoblindberghSummon
()
{
{
foreach
(
ClientCard
card
in
Bot
.
Hand
)
foreach
(
ClientCard
card
in
Bot
.
Hand
)
{
{
...
@@ -192,39 +192,39 @@ namespace WindBot.Game.AI.Decks
...
@@ -192,39 +192,39 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
哥布林德伯格效果
()
private
bool
GoblindberghEffect
()
{
{
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
光道弓手费莉丝
,
(
int
)
CardId
.
Felis
,
(
int
)
CardId
.
光道兽沃尔夫
,
(
int
)
CardId
.
Wulf
,
(
int
)
CardId
.
光道暗杀者莱登
,
(
int
)
CardId
.
Raiden
,
(
int
)
CardId
.
娱乐法师戏法小丑
,
(
int
)
CardId
.
PerformageTrickClown
,
(
int
)
CardId
.
英豪挑战者千刀兵
(
int
)
CardId
.
ThousandBlades
});
});
return
true
;
return
true
;
}
}
private
bool
娱乐法师戏法小丑效果
()
private
bool
PerformageTrickClownEffect
()
{
{
已发动小丑
=
true
;
ClownUsed
=
true
;
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
return
true
;
return
true
;
}
}
private
bool
欧尼斯特效果
()
private
bool
HonestEffect
()
{
{
return
Duel
.
Phase
!=
DuelPhase
.
Main1
;
return
Duel
.
Phase
!=
DuelPhase
.
Main1
;
}
}
private
bool
励辉士入魔蝇王特殊召唤
()
private
bool
EvilswarmExcitonKnightSummon
()
{
{
int
selfCount
=
Bot
.
GetMonsterCount
()
+
Bot
.
GetSpellCount
()
+
Bot
.
GetHandCount
();
int
selfCount
=
Bot
.
GetMonsterCount
()
+
Bot
.
GetSpellCount
()
+
Bot
.
GetHandCount
();
int
oppoCount
=
Enemy
.
GetMonsterCount
()
+
Enemy
.
GetSpellCount
()
+
Enemy
.
GetHandCount
();
int
oppoCount
=
Enemy
.
GetMonsterCount
()
+
Enemy
.
GetSpellCount
()
+
Enemy
.
GetHandCount
();
return
(
selfCount
-
1
<
oppoCount
)
&&
励辉士入魔蝇王效果
();
return
(
selfCount
-
1
<
oppoCount
)
&&
EvilswarmExcitonKnightEffect
();
}
}
private
bool
励辉士入魔蝇王效果
()
private
bool
EvilswarmExcitonKnightEffect
()
{
{
int
selfCount
=
Bot
.
GetMonsterCount
()
+
Bot
.
GetSpellCount
();
int
selfCount
=
Bot
.
GetMonsterCount
()
+
Bot
.
GetSpellCount
();
int
oppoCount
=
Enemy
.
GetMonsterCount
()
+
Enemy
.
GetSpellCount
();
int
oppoCount
=
Enemy
.
GetMonsterCount
()
+
Enemy
.
GetSpellCount
();
...
@@ -246,14 +246,14 @@ namespace WindBot.Game.AI.Decks
...
@@ -246,14 +246,14 @@ namespace WindBot.Game.AI.Decks
return
(
selfCount
<
oppoCount
)
||
(
selfAttack
<
oppoAttack
);
return
(
selfCount
<
oppoCount
)
||
(
selfAttack
<
oppoAttack
);
}
}
private
bool
红莲魔龙右红痕特殊召唤
()
private
bool
ScarlightRedDragonArchfiendSummon
()
{
{
int
selfBestAttack
=
AI
.
Utils
.
GetBestAttack
(
Bot
,
true
);
int
selfBestAttack
=
AI
.
Utils
.
GetBestAttack
(
Bot
,
true
);
int
oppoBestAttack
=
AI
.
Utils
.
GetBestAttack
(
Enemy
,
false
);
int
oppoBestAttack
=
AI
.
Utils
.
GetBestAttack
(
Enemy
,
false
);
return
(
selfBestAttack
<=
oppoBestAttack
&&
oppoBestAttack
<=
3000
)
||
红莲魔龙右红痕效果
();
return
(
selfBestAttack
<=
oppoBestAttack
&&
oppoBestAttack
<=
3000
)
||
ScarlightRedDragonArchfiendEffect
();
}
}
private
bool
红莲魔龙右红痕效果
()
private
bool
ScarlightRedDragonArchfiendEffect
()
{
{
int
selfCount
=
0
;
int
selfCount
=
0
;
List
<
ClientCard
>
monsters
=
Bot
.
GetMonsters
();
List
<
ClientCard
>
monsters
=
Bot
.
GetMonsters
();
...
@@ -267,7 +267,6 @@ namespace WindBot.Game.AI.Decks
...
@@ -267,7 +267,6 @@ namespace WindBot.Game.AI.Decks
monsters
=
Enemy
.
GetMonsters
();
monsters
=
Enemy
.
GetMonsters
();
foreach
(
ClientCard
monster
in
monsters
)
foreach
(
ClientCard
monster
in
monsters
)
{
{
// 没有办法获取特殊召唤的状态,只好默认全部是特招的
if
(
monster
.
HasType
(
CardType
.
Effect
)
&&
monster
.
Attack
<=
Card
.
Attack
)
if
(
monster
.
HasType
(
CardType
.
Effect
)
&&
monster
.
Attack
<=
Card
.
Attack
)
oppoCount
++;
oppoCount
++;
}
}
...
@@ -275,36 +274,20 @@ namespace WindBot.Game.AI.Decks
...
@@ -275,36 +274,20 @@ namespace WindBot.Game.AI.Decks
return
(
oppoCount
>
0
&&
selfCount
<=
oppoCount
)
||
oppoCount
>
2
;
return
(
oppoCount
>
0
&&
selfCount
<=
oppoCount
)
||
oppoCount
>
2
;
}
}
private
bool
鸟铳士卡斯泰尔特殊召唤
()
private
bool
CastelTheSkyblasterMusketeerSummom
()
{
{
return
AI
.
Utils
.
GetProblematicCard
()
!=
null
;
return
AI
.
Utils
.
GetProblematicCard
()
!=
null
;
}
}
private
bool
鸟铳士卡斯泰尔效果
()
private
bool
CastelTheSkyblasterMusketeerEffect
()
{
{
if
(
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
CardId
.
鸟铳士卡斯泰尔
,
0
))
if
(
ActivateDescription
==
AI
.
Utils
.
GetStringId
((
int
)
CardId
.
CastelTheSkyblasterMusketeer
,
0
))
return
false
;
return
false
;
AI
.
SelectNextCard
(
AI
.
Utils
.
GetProblematicCard
());
AI
.
SelectNextCard
(
AI
.
Utils
.
GetProblematicCard
());
return
true
;
return
true
;
}
}
private
bool
辉光子帕拉迪奥斯特殊召唤
()
private
bool
NumberS39UtopiatheLightningSummon
()
{
return
辉光子帕拉迪奥斯效果
();
}
private
bool
辉光子帕拉迪奥斯效果
()
{
ClientCard
result
=
AI
.
Utils
.
GetOneEnemyBetterThanValue
(
2000
,
true
);
if
(
result
!=
null
)
{
AI
.
SelectNextCard
(
result
);
return
true
;
}
return
false
;
}
private
bool
电光皇特殊召唤
()
{
{
return
AI
.
Utils
.
IsEnemyBetter
(
false
,
false
);
return
AI
.
Utils
.
IsEnemyBetter
(
false
,
false
);
}
}
...
...
Game/AI/Decks/NekrozExecutor.cs
View file @
e37b72b1
...
@@ -11,30 +11,31 @@ namespace WindBot.Game.AI.Decks
...
@@ -11,30 +11,31 @@ namespace WindBot.Game.AI.Decks
{
{
public
enum
CardId
public
enum
CardId
{
{
影灵衣舞姬
=
52738610
,
DancePrincess
=
52738610
,
千手神
=
23401839
,
ThousandHands
=
23401839
,
万手神
=
95492061
,
TenThousandHands
=
95492061
,
影灵衣术士施里特
=
90307777
,
Shurit
=
90307777
,
增殖的
G
=
23434538
,
MaxxC
=
23434538
,
决战兵器之影灵衣
=
88240999
,
DecisiveArmor
=
88240999
,
三叉龙之影灵衣
=
52068432
,
Trishula
=
52068432
,
瓦尔基鲁斯之影灵衣
=
25857246
,
Valkyrus
=
25857246
,
天枪龙之影灵衣
=
74122412
,
Gungnir
=
74122412
,
光枪龙之影灵衣
=
26674724
,
Brionac
=
26674724
,
尤尼科之影灵衣
=
89463537
,
Unicore
=
89463537
,
辉剑鸟之影灵衣
=
99185129
,
Clausolas
=
99185129
,
混沌幻影
=
30312361
,
PhantomOfChaos
=
30312361
,
黑洞
=
53129443
,
增援
=
32807846
,
DarkHole
=
53129443
,
抵价购物
=
38120068
,
ReinforcementOfTheArmy
=
32807846
,
仪式的准备
=
96729612
,
TradeIn
=
38120068
,
影灵衣的降魔镜
=
14735698
,
PreparationOfRites
=
96729612
,
影灵衣的万华镜
=
51124303
,
Mirror
=
14735698
,
影灵衣的返魂术
=
97211663
,
Kaleidoscope
=
51124303
,
旋风
=
5318639
,
Cycle
=
97211663
,
王宫的通告
=
51452091
,
MysticalSpaceTyphoon
=
5318639
,
励辉士入魔蝇王
=
46772449
,
RoyalDecree
=
51452091
,
虹光之宣告者
=
79606837
EvilswarmExcitonKnight
=
46772449
,
HeraldOfTheArcLight
=
79606837
}
}
List
<
int
>
NekrozRituelCard
=
new
List
<
int
>();
List
<
int
>
NekrozRituelCard
=
new
List
<
int
>();
...
@@ -43,157 +44,150 @@ namespace WindBot.Game.AI.Decks
...
@@ -43,157 +44,150 @@ namespace WindBot.Game.AI.Decks
public
NekrozExecutor
(
GameAI
ai
,
Duel
duel
)
public
NekrozExecutor
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
:
base
(
ai
,
duel
)
{
{
NekrozRituelCard
.
Add
((
int
)
CardId
.
辉剑鸟之影灵衣
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
Clausolas
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
尤尼科之影灵衣
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
Unicore
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
决战兵器之影灵衣
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
DecisiveArmor
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
光枪龙之影灵衣
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
Brionac
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
三叉龙之影灵衣
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
Trishula
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
天枪龙之影灵衣
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
Gungnir
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
瓦尔基鲁斯之影灵衣
);
NekrozRituelCard
.
Add
((
int
)
CardId
.
Valkyrus
);
NekrozSpellCard
.
Add
((
int
)
CardId
.
影灵衣的降魔镜
);
NekrozSpellCard
.
Add
((
int
)
CardId
.
Mirror
);
NekrozSpellCard
.
Add
((
int
)
CardId
.
影灵衣的万华镜
);
NekrozSpellCard
.
Add
((
int
)
CardId
.
Kaleidoscope
);
NekrozSpellCard
.
Add
((
int
)
CardId
.
影灵衣的返魂术
);
NekrozSpellCard
.
Add
((
int
)
CardId
.
Cycle
);
AddExecutor
(
ExecutorType
.
SpellSet
,
DefaultSpellSet
);
AddExecutor
(
ExecutorType
.
SpellSet
,
DefaultSpellSet
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
黑洞
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DarkHole
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
增援
,
增援
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ReinforcementOfTheArmy
,
ReinforcementOfTheArmyEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
抵价购物
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
TradeIn
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
仪式的准备
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
PreparationOfRites
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
影灵衣的降魔镜
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Mirror
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
影灵衣的万华镜
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Kaleidoscope
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
影灵衣的返魂术
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Cycle
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
旋风
,
DefaultMysticalSpaceTyphoon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MysticalSpaceTyphoon
,
DefaultMysticalSpaceTyphoon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
王宫的通告
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
RoyalDecree
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
影灵衣舞姬
,
影灵衣舞姬召唤
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
(
int
)
CardId
.
DancePrincess
,
DancePrincessSummon
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
影灵衣术士施里特
,
影灵衣术士施里特
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
(
int
)
CardId
.
Shurit
,
ShuritSet
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
千手神
,
千手神召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
ThousandHands
,
ThousandHandsSummom
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
万手神
,
万手神召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
TenThousandHands
,
TenThousandHandsSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
混沌幻影
,
混沌幻影
);
AddExecutor
(
ExecutorType
.
Summon
,
(
int
)
CardId
.
PhantomOfChaos
,
PhantomOfChaosSummon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
尤尼科之影灵衣
,
尤尼科之影灵衣
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Unicore
,
UnicoreEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
决战兵器之影灵衣
,
决战兵器之影灵衣
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DecisiveArmor
,
DecisiveArmorEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
瓦尔基鲁斯之影灵衣
,
瓦尔基鲁斯之影灵衣
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Valkyrus
,
ValkyrusEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
天枪龙之影灵衣
,
天枪龙之影灵衣
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Gungnir
,
GungnirEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
光枪龙之影灵衣
,
光枪龙之影灵衣
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Brionac
,
BrionacEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
辉剑鸟之影灵衣
,
辉剑鸟之影灵衣
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Clausolas
,
ClausolasEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
三叉龙之影灵衣
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Trishula
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
励辉士入魔蝇王
,
励辉士入魔蝇王效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
EvilswarmExcitonKnight
,
EvilswarmExcitonKnightEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
混沌幻影
,
混沌幻影效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
PhantomOfChaos
,
PhantomOfChaosEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
增殖的
G
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MaxxC
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
千手神
,
千手神效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
ThousandHands
,
ThousandHandsEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
万手神
,
光枪龙之影灵衣
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
TenThousandHands
,
BrionacEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
虹光之宣告者
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
HeraldOfTheArcLight
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
影灵衣术士施里特
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Shurit
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
三叉龙之影灵衣
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
Trishula
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
决战兵器之影灵衣
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
DecisiveArmor
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
瓦尔基鲁斯之影灵衣
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
Valkyrus
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
天枪龙之影灵衣
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
Gungnir
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
光枪龙之影灵衣
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
Brionac
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
尤尼科之影灵衣
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
Unicore
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
辉剑鸟之影灵衣
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
Clausolas
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
励辉士入魔蝇王
,
励辉士入魔蝇王特殊召唤
);
AddExecutor
(
ExecutorType
.
SpSummon
,
(
int
)
CardId
.
EvilswarmExcitonKnight
,
EvilswarmExcitonKnightSummon
);
}
}
private
bool
千手神召唤
()
private
bool
ThousandHandsSummom
()
{
{
if
(!
Bot
.
HasInHand
(
NekrozRituelCard
)
||
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣术士施里特
)
||
!
Bot
.
HasInHand
(
NekrozSpellCard
))
if
(!
Bot
.
HasInHand
(
NekrozRituelCard
)
||
Bot
.
HasInHand
((
int
)
CardId
.
Shurit
)
||
!
Bot
.
HasInHand
(
NekrozSpellCard
))
return
true
;
return
true
;
foreach
(
ClientCard
Card
in
Bot
.
Hand
)
foreach
(
ClientCard
Card
in
Bot
.
Hand
)
if
(
Card
!=
null
&&
Card
.
Id
==
(
int
)
CardId
.
影灵衣的万华镜
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
尤尼科之影灵衣
))
if
(
Card
!=
null
&&
Card
.
Id
==
(
int
)
CardId
.
Kaleidoscope
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
Unicore
))
return
true
;
return
true
;
else
if
(
Card
.
Id
==
(
int
)
CardId
.
三叉龙之影灵衣
||
Card
.
Id
==
(
int
)
CardId
.
决战兵器之影灵衣
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣的降魔镜
)
||
!
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣术士施里特
))
else
if
(
Card
.
Id
==
(
int
)
CardId
.
Trishula
||
Card
.
Id
==
(
int
)
CardId
.
DecisiveArmor
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
Mirror
)
||
!
Bot
.
HasInHand
((
int
)
CardId
.
Shurit
))
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
增援
()
private
bool
ReinforcementOfTheArmyEffect
()
{
{
if
(!
Bot
.
HasInGraveyard
((
int
)
CardId
.
影灵衣术士施里特
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣术士施里特
))
if
(!
Bot
.
HasInGraveyard
((
int
)
CardId
.
Shurit
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
Shurit
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
影灵衣术士施里特
);
AI
.
SelectCard
((
int
)
CardId
.
Shurit
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
万手神召唤
()
private
bool
TenThousandHandsSummon
()
{
{
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
千手神
)
||
!
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣术士施里特
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
ThousandHands
)
||
!
Bot
.
HasInHand
((
int
)
CardId
.
Shurit
))
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
影灵衣舞姬召唤
()
private
bool
DancePrincessSummon
()
{
{
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
千手神
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
万手神
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
ThousandHands
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
TenThousandHands
))
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
混沌幻影
()
private
bool
PhantomOfChaosSummon
()
{
{
if
(
Bot
.
HasInGraveyard
((
int
)
CardId
.
影灵衣术士施里特
)
&&
Bot
.
HasInHand
(
NekrozSpellCard
)
&&
Bot
.
HasInHand
(
NekrozRituelCard
))
if
(
Bot
.
HasInGraveyard
((
int
)
CardId
.
Shurit
)
&&
Bot
.
HasInHand
(
NekrozSpellCard
)
&&
Bot
.
HasInHand
(
NekrozRituelCard
))
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
混沌幻影效果
()
private
bool
PhantomOfChaosEffect
()
{
{
AI
.
SelectCard
((
int
)
CardId
.
影灵衣术士施里特
);
AI
.
SelectCard
((
int
)
CardId
.
Shurit
);
return
true
;
return
true
;
}
}
private
bool
影灵衣术士施里特
()
private
bool
ShuritSet
()
{
{
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
千手神
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
万手神
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣舞姬
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
ThousandHands
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
TenThousandHands
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
DancePrincess
))
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
三叉龙之影灵衣
()
private
bool
DecisiveArmorEffect
()
{
if
(
AI
.
Utils
.
IsAllEnemyBetterThanValue
(
2700
,
true
)
&&
Bot
.
HasInHand
((
int
)
CardId
.
决战兵器之影灵衣
))
return
false
;
return
true
;
}
private
bool
决战兵器之影灵衣
()
{
{
if
(
AI
.
Utils
.
IsAllEnemyBetterThanValue
(
3300
,
true
))
if
(
AI
.
Utils
.
IsAllEnemyBetterThanValue
(
3300
,
true
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
决战兵器之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
DecisiveArmor
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
励辉士入魔蝇王特殊召唤
()
private
bool
EvilswarmExcitonKnightSummon
()
{
{
int
selfCount
=
Bot
.
GetMonsterCount
()
+
Bot
.
GetSpellCount
()
+
Bot
.
GetHandCount
();
int
selfCount
=
Bot
.
GetMonsterCount
()
+
Bot
.
GetSpellCount
()
+
Bot
.
GetHandCount
();
int
oppoCount
=
Enemy
.
GetMonsterCount
()
+
Enemy
.
GetSpellCount
()
+
Enemy
.
GetHandCount
();
int
oppoCount
=
Enemy
.
GetMonsterCount
()
+
Enemy
.
GetSpellCount
()
+
Enemy
.
GetHandCount
();
return
(
selfCount
-
1
<
oppoCount
)
&&
励辉士入魔蝇王效果
();
return
(
selfCount
-
1
<
oppoCount
)
&&
EvilswarmExcitonKnightEffect
();
}
}
private
bool
励辉士入魔蝇王效果
()
private
bool
EvilswarmExcitonKnightEffect
()
{
{
int
selfCount
=
Bot
.
GetMonsterCount
()
+
Bot
.
GetSpellCount
();
int
selfCount
=
Bot
.
GetMonsterCount
()
+
Bot
.
GetSpellCount
();
int
oppoCount
=
Enemy
.
GetMonsterCount
()
+
Enemy
.
GetSpellCount
();
int
oppoCount
=
Enemy
.
GetMonsterCount
()
+
Enemy
.
GetSpellCount
();
return
selfCount
<
oppoCount
;
return
selfCount
<
oppoCount
;
}
}
private
bool
瓦尔基鲁斯之影灵衣
()
private
bool
ValkyrusEffect
()
{
{
if
(
Duel
.
Phase
==
DuelPhase
.
Battle
)
if
(
Duel
.
Phase
==
DuelPhase
.
Battle
)
return
true
;
return
true
;
return
false
;
return
false
;
}
}
private
bool
天枪龙之影灵衣
()
private
bool
GungnirEffect
()
{
{
if
(
AI
.
Utils
.
IsEnemyBetter
(
true
,
false
)
&&
Duel
.
Phase
==
DuelPhase
.
Main1
)
if
(
AI
.
Utils
.
IsEnemyBetter
(
true
,
false
)
&&
Duel
.
Phase
==
DuelPhase
.
Main1
)
{
{
...
@@ -203,76 +197,76 @@ namespace WindBot.Game.AI.Decks
...
@@ -203,76 +197,76 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
光枪龙之影灵衣
()
private
bool
BrionacEffect
()
{
{
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣术士施里特
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
Shurit
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
影灵衣术士施里特
);
AI
.
SelectCard
((
int
)
CardId
.
Shurit
);
return
true
;
return
true
;
}
}
else
if
(!
Bot
.
HasInHand
(
NekrozSpellCard
))
else
if
(!
Bot
.
HasInHand
(
NekrozSpellCard
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
影灵衣的降魔镜
);
AI
.
SelectCard
((
int
)
CardId
.
Mirror
);
return
true
;
return
true
;
}
}
else
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
3300
,
true
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
三叉龙之影灵衣
))
else
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
3300
,
true
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
Trishula
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
三叉龙之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
Trishula
);
return
true
;
return
true
;
}
}
else
if
(
AI
.
Utils
.
IsAllEnemyBetterThanValue
(
2700
,
true
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
决战兵器之影灵衣
))
else
if
(
AI
.
Utils
.
IsAllEnemyBetterThanValue
(
2700
,
true
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
DecisiveArmor
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
决战兵器之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
DecisiveArmor
);
return
true
;
return
true
;
}
}
else
if
(
Bot
.
HasInHand
((
int
)
CardId
.
尤尼科之影灵衣
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣的万华镜
))
else
if
(
Bot
.
HasInHand
((
int
)
CardId
.
Unicore
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
Kaleidoscope
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
影灵衣的万华镜
);
AI
.
SelectCard
((
int
)
CardId
.
Kaleidoscope
);
return
true
;
return
true
;
}
}
else
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
尤尼科之影灵衣
)
&&
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣的万华镜
))
else
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
Unicore
)
&&
Bot
.
HasInHand
((
int
)
CardId
.
Kaleidoscope
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
尤尼科之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
Unicore
);
return
true
;
return
true
;
}
}
return
true
;
return
true
;
}
}
private
bool
千手神效果
()
private
bool
ThousandHandsEffect
()
{
{
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
3300
,
true
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
三叉龙之影灵衣
))
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
3300
,
true
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
Trishula
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
三叉龙之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
Trishula
);
return
true
;
return
true
;
}
}
else
if
(
AI
.
Utils
.
IsAllEnemyBetterThanValue
(
2700
,
true
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
决战兵器之影灵衣
))
else
if
(
AI
.
Utils
.
IsAllEnemyBetterThanValue
(
2700
,
true
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
DecisiveArmor
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
决战兵器之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
DecisiveArmor
);
return
true
;
return
true
;
}
}
else
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
尤尼科之影灵衣
)
&&
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣的万华镜
))
else
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
Unicore
)
&&
Bot
.
HasInHand
((
int
)
CardId
.
Kaleidoscope
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
尤尼科之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
Unicore
);
return
true
;
return
true
;
}
}
return
true
;
return
true
;
}
}
private
bool
尤尼科之影灵衣
()
private
bool
UnicoreEffect
()
{
{
if
(
Bot
.
HasInGraveyard
((
int
)
CardId
.
影灵衣术士施里特
))
if
(
Bot
.
HasInGraveyard
((
int
)
CardId
.
Shurit
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
影灵衣术士施里特
);
AI
.
SelectCard
((
int
)
CardId
.
Shurit
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
辉剑鸟之影灵衣
()
private
bool
ClausolasEffect
()
{
{
if
(!
Bot
.
HasInHand
(
NekrozSpellCard
))
if
(!
Bot
.
HasInHand
(
NekrozSpellCard
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
影灵衣的降魔镜
);
AI
.
SelectCard
((
int
)
CardId
.
Mirror
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
...
@@ -280,7 +274,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -280,7 +274,7 @@ namespace WindBot.Game.AI.Decks
private
bool
IsTheLastPossibility
()
private
bool
IsTheLastPossibility
()
{
{
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
决战兵器之影灵衣
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
三叉龙之影灵衣
))
if
(!
Bot
.
HasInHand
((
int
)
CardId
.
DecisiveArmor
)
&&
!
Bot
.
HasInHand
((
int
)
CardId
.
Trishula
))
return
true
;
return
true
;
return
false
;
return
false
;
}
}
...
@@ -296,42 +290,42 @@ namespace WindBot.Game.AI.Decks
...
@@ -296,42 +290,42 @@ namespace WindBot.Game.AI.Decks
foreach
(
int
Id
in
NekrozCard
)
foreach
(
int
Id
in
NekrozCard
)
{
{
if
(
Id
==
(
int
)
CardId
.
三叉龙之影灵衣
&&
AI
.
Utils
.
IsAllEnemyBetterThanValue
(
2700
,
true
)
&&
Bot
.
HasInHand
((
int
)
CardId
.
决战兵器之影灵衣
))
if
(
Id
==
(
int
)
CardId
.
Trishula
&&
AI
.
Utils
.
IsAllEnemyBetterThanValue
(
2700
,
true
)
&&
Bot
.
HasInHand
((
int
)
CardId
.
DecisiveArmor
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
三叉龙之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
Trishula
);
return
true
;
return
true
;
}
}
else
if
(
Id
==
(
int
)
CardId
.
决战兵器之影灵衣
)
else
if
(
Id
==
(
int
)
CardId
.
DecisiveArmor
)
{
{
AI
.
SelectCard
((
int
)
CardId
.
决战兵器之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
DecisiveArmor
);
return
true
;
return
true
;
}
}
else
if
(
Id
==
(
int
)
CardId
.
尤尼科之影灵衣
&&
Bot
.
HasInHand
((
int
)
CardId
.
影灵衣的万华镜
)
&&
!
Bot
.
HasInGraveyard
((
int
)
CardId
.
影灵衣术士施里特
))
else
if
(
Id
==
(
int
)
CardId
.
Unicore
&&
Bot
.
HasInHand
((
int
)
CardId
.
Kaleidoscope
)
&&
!
Bot
.
HasInGraveyard
((
int
)
CardId
.
Shurit
))
{
{
AI
.
SelectCard
((
int
)
CardId
.
尤尼科之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
Unicore
);
return
true
;
return
true
;
}
}
else
if
(
Id
==
(
int
)
CardId
.
瓦尔基鲁斯之影灵衣
)
else
if
(
Id
==
(
int
)
CardId
.
Valkyrus
)
{
{
if
(
IsTheLastPossibility
())
if
(
IsTheLastPossibility
())
{
{
AI
.
SelectCard
((
int
)
CardId
.
瓦尔基鲁斯之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
Valkyrus
);
return
true
;
return
true
;
}
}
}
}
else
if
(
Id
==
(
int
)
CardId
.
天枪龙之影灵衣
)
else
if
(
Id
==
(
int
)
CardId
.
Gungnir
)
{
{
if
(
IsTheLastPossibility
())
if
(
IsTheLastPossibility
())
{
{
AI
.
SelectCard
((
int
)
CardId
.
天枪龙之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
Gungnir
);
return
true
;
return
true
;
}
}
}
}
else
if
(
Id
==
(
int
)
CardId
.
辉剑鸟之影灵衣
)
else
if
(
Id
==
(
int
)
CardId
.
Clausolas
)
{
{
if
(
IsTheLastPossibility
())
if
(
IsTheLastPossibility
())
{
{
AI
.
SelectCard
((
int
)
CardId
.
辉剑鸟之影灵衣
);
AI
.
SelectCard
((
int
)
CardId
.
Clausolas
);
return
true
;
return
true
;
}
}
}
}
...
...
Game/AI/Decks/QliphortExecutor.cs
View file @
e37b72b1
...
@@ -11,128 +11,123 @@ namespace WindBot.Game.AI.Decks
...
@@ -11,128 +11,123 @@ namespace WindBot.Game.AI.Decks
{
{
public
enum
CardId
public
enum
CardId
{
{
机壳工具丑恶
=
65518099
,
Scout
=
65518099
,
机壳别名愚钝
=
13073850
,
Stealth
=
13073850
,
机壳壳层拒绝
=
90885155
,
Shell
=
90885155
,
机壳基因组贪欲
=
37991342
,
Helix
=
37991342
,
机壳档案色欲
=
91907707
,
Carrier
=
91907707
,
黑洞
=
53129443
,
DarkHole
=
53129443
,
削命的宝札
=
59750328
,
CardOfDemise
=
59750328
,
召唤师的技艺
=
79816536
,
SummonersArt
=
79816536
,
强欲而谦虚之壶
=
98645731
,
PotOfDuality
=
98645731
,
机壳的牲祭
=
17639150
,
Saqlifice
=
17639150
,
神圣防护罩反射镜力
=
44095762
,
MirrorForce
=
44095762
,
激流葬
=
53582587
,
TorrentialTribute
=
53582587
,
次元障壁
=
83326048
,
DimensionalBarrier
=
83326048
,
强制脱出装置
=
94192409
,
CompulsoryEvacuationDevice
=
94192409
,
虚无空间
=
5851097
,
VanitysEmptiness
=
5851097
,
技能抽取
=
82732705
,
SkillDrain
=
82732705
,
神之通告
=
40605147
,
SolemnStrike
=
40605147
,
反大革命
=
99188141
TheHugeRevolutionIsOver
=
99188141
}
}
bool
已发动削命
=
false
;
bool
CardOfDemiseUsed
=
false
;
List
<
int
>
低刻度
=
new
List
<
int
>
List
<
int
>
LowScaleCards
=
new
List
<
int
>
{
{
(
int
)
CardId
.
机壳别名愚钝
,
(
int
)
CardId
.
Stealth
,
(
int
)
CardId
.
机壳档案色欲
(
int
)
CardId
.
Carrier
};
};
List
<
int
>
高刻度
=
new
List
<
int
>
List
<
int
>
HighScaleCards
=
new
List
<
int
>
{
{
(
int
)
CardId
.
机壳工具丑恶
,
(
int
)
CardId
.
Scout
,
(
int
)
CardId
.
机壳壳层拒绝
,
(
int
)
CardId
.
Shell
,
(
int
)
CardId
.
机壳基因组贪欲
(
int
)
CardId
.
Helix
};
};
public
QliphortExecutor
(
GameAI
ai
,
Duel
duel
)
public
QliphortExecutor
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
:
base
(
ai
,
duel
)
{
{
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
黑洞
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DarkHole
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
召唤师的技艺
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
SummonersArt
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
机壳工具丑恶
,
机壳工具丑恶发动
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Scout
,
ScoutActivate
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
机壳工具丑恶
,
机壳工具丑恶效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Scout
,
ScoutEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
机壳别名愚钝
,
设置刻度
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Stealth
,
ScaleActivate
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
机壳壳层拒绝
,
设置刻度
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Shell
,
ScaleActivate
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
机壳基因组贪欲
,
设置刻度
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Helix
,
ScaleActivate
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
机壳档案色欲
,
设置刻度
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Carrier
,
ScaleActivate
);
AddExecutor
(
ExecutorType
.
Summon
,
通常召唤
);
AddExecutor
(
ExecutorType
.
Summon
,
NormalSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
);
AddExecutor
(
ExecutorType
.
SpSummon
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
机壳的牲祭
,
机壳的牲祭
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Saqlifice
,
SaqlificeEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
机壳别名愚钝
,
机壳别名愚钝效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Stealth
,
StealthEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
机壳基因组贪欲
,
机壳基因组贪欲效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Helix
,
HelixEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
机壳档案色欲
,
机壳档案色欲效果
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
Carrier
,
CarrierEffect
);
// 盖坑
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
SkillDrain
,
TrapSetUnique
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
技能抽取
,
优先盖不重复的坑
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
VanitysEmptiness
,
TrapSetUnique
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
虚无空间
,
优先盖不重复的坑
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
DimensionalBarrier
,
TrapSetUnique
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
次元障壁
,
优先盖不重复的坑
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
TorrentialTribute
,
TrapSetUnique
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
激流葬
,
优先盖不重复的坑
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
SolemnStrike
,
TrapSetUnique
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
神之通告
,
优先盖不重复的坑
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
MirrorForce
,
TrapSetUnique
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
神圣防护罩反射镜力
,
优先盖不重复的坑
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
CompulsoryEvacuationDevice
,
TrapSetUnique
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
强制脱出装置
,
优先盖不重复的坑
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
TheHugeRevolutionIsOver
,
TrapSetUnique
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
反大革命
,
优先盖不重复的坑
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
Saqlifice
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
机壳的牲祭
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
SkillDrain
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
技能抽取
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
VanitysEmptiness
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
虚无空间
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
DimensionalBarrier
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
次元障壁
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
TorrentialTribute
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
激流葬
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
SolemnStrike
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
神之通告
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
MirrorForce
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
神圣防护罩反射镜力
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
CompulsoryEvacuationDevice
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
强制脱出装置
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
TheHugeRevolutionIsOver
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
反大革命
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
DarkHole
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
黑洞
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
SummonersArt
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
召唤师的技艺
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
PotOfDuality
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
强欲而谦虚之壶
,
魔陷区有空余格子
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
PotOfDuality
,
PotOfDualityEffect
);
// 开完削命继续盖坑
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
CardOfDemise
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
强欲而谦虚之壶
,
强欲而谦虚之壶
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CardOfDemise
,
CardOfDemiseEffect
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
削命的宝札
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
削命的宝札
,
削命的宝札
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
Saqlifice
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
SkillDrain
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
机壳的牲祭
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
VanitysEmptiness
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
技能抽取
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
DimensionalBarrier
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
虚无空间
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
TorrentialTribute
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
次元障壁
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
SolemnStrike
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
激流葬
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
MirrorForce
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
神之通告
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
CompulsoryEvacuationDevice
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
神圣防护罩反射镜力
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
TheHugeRevolutionIsOver
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
强制脱出装置
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
DarkHole
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
反大革命
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
SummonersArt
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
黑洞
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
PotOfDuality
,
CardOfDemiseAcivated
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
召唤师的技艺
,
已发动过削命
);
AddExecutor
(
ExecutorType
.
SpellSet
,
(
int
)
CardId
.
强欲而谦虚之壶
,
已发动过削命
);
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
.
反大革命
,
DefaultTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
VanitysEmptiness
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神之通告
,
DefaultSolemnStrike
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
CompulsoryEvacuationDevice
,
DefaultCompulsoryEvacuationDevice
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
技能抽取
,
技能抽取
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
DimensionalBarrier
,
DefaultDimensionalBarrier
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
虚无空间
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
MirrorForce
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
强制脱出装置
,
DefaultCompulsoryEvacuationDevice
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
TorrentialTribute
,
DefaultTorrentialTribute
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
次元障壁
,
DefaultDimensionalBarrier
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
神圣防护罩反射镜力
,
DefaultUniqueTrap
);
AddExecutor
(
ExecutorType
.
Activate
,
(
int
)
CardId
.
激流葬
,
DefaultTorrentialTribute
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
AddExecutor
(
ExecutorType
.
Repos
,
DefaultMonsterRepos
);
}
}
public
override
bool
OnSelectHand
()
public
override
bool
OnSelectHand
()
{
{
// 抢先攻
return
true
;
return
true
;
}
}
public
override
void
OnNewTurn
()
public
override
void
OnNewTurn
()
{
{
// 回合开始时重置状况
CardOfDemiseUsed
=
false
;
已发动削命
=
false
;
}
}
public
override
IList
<
ClientCard
>
OnSelectCard
(
IList
<
ClientCard
>
cards
,
int
min
,
int
max
,
bool
cancelable
)
public
override
IList
<
ClientCard
>
OnSelectCard
(
IList
<
ClientCard
>
cards
,
int
min
,
int
max
,
bool
cancelable
)
...
@@ -150,81 +145,81 @@ namespace WindBot.Game.AI.Decks
...
@@ -150,81 +145,81 @@ namespace WindBot.Game.AI.Decks
return
selected
;
return
selected
;
}
}
private
bool
通常召唤
()
private
bool
NormalSummon
()
{
{
if
(
Card
.
Id
==
(
int
)
CardId
.
机壳工具丑恶
)
if
(
Card
.
Id
==
(
int
)
CardId
.
Scout
)
return
false
;
return
false
;
if
(
Card
.
Level
<
8
)
if
(
Card
.
Level
<
8
)
AI
.
SelectOption
(
1
);
AI
.
SelectOption
(
1
);
return
true
;
return
true
;
}
}
private
bool
技能抽取
()
private
bool
SkillDrainEffect
()
{
{
return
(
Duel
.
LifePoints
[
0
]
>
1000
)
&&
DefaultUniqueTrap
();
return
(
Duel
.
LifePoints
[
0
]
>
1000
)
&&
DefaultUniqueTrap
();
}
}
private
bool
强欲而谦虚之壶
()
private
bool
PotOfDualityEffect
()
{
{
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
机壳工具丑恶
,
(
int
)
CardId
.
Scout
,
(
int
)
CardId
.
技能抽取
,
(
int
)
CardId
.
SkillDrain
,
(
int
)
CardId
.
虚无空间
,
(
int
)
CardId
.
VanitysEmptiness
,
(
int
)
CardId
.
次元障壁
,
(
int
)
CardId
.
DimensionalBarrier
,
(
int
)
CardId
.
机壳别名愚钝
,
(
int
)
CardId
.
Stealth
,
(
int
)
CardId
.
机壳壳层拒绝
,
(
int
)
CardId
.
Shell
,
(
int
)
CardId
.
机壳基因组贪欲
,
(
int
)
CardId
.
Helix
,
(
int
)
CardId
.
机壳档案色欲
,
(
int
)
CardId
.
Carrier
,
(
int
)
CardId
.
神之通告
,
(
int
)
CardId
.
SolemnStrike
,
(
int
)
CardId
.
削命的宝札
(
int
)
CardId
.
CardOfDemise
});
});
return
!
应进行灵摆召唤
();
return
!
ShouldPendulum
();
}
}
private
bool
削命的宝札
()
private
bool
CardOfDemiseEffect
()
{
{
if
(
AI
.
Utils
.
IsTurn1OrMain2
()
&&
!
应进行灵摆召唤
())
if
(
AI
.
Utils
.
IsTurn1OrMain2
()
&&
!
ShouldPendulum
())
{
{
已发动削命
=
true
;
CardOfDemiseUsed
=
true
;
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
优先盖不重复的坑
()
private
bool
TrapSetUnique
()
{
{
foreach
(
ClientCard
card
in
Bot
.
SpellZone
)
foreach
(
ClientCard
card
in
Bot
.
SpellZone
)
{
{
if
(
card
!=
null
&&
card
.
Id
==
Card
.
Id
)
if
(
card
!=
null
&&
card
.
Id
==
Card
.
Id
)
return
false
;
return
false
;
}
}
return
魔陷区有空余格子
();
return
TrapSetWhenZoneFree
();
}
}
private
bool
魔陷区有空余格子
()
private
bool
TrapSetWhenZoneFree
()
{
{
return
Bot
.
GetSpellCountWithoutField
()
<
4
;
return
Bot
.
GetSpellCountWithoutField
()
<
4
;
}
}
private
bool
已发动过削命
()
private
bool
CardOfDemiseAcivated
()
{
{
return
已发动削命
;
return
CardOfDemiseUsed
;
}
}
private
bool
机壳的牲祭
()
private
bool
SaqlificeEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Grave
)
if
(
Card
.
Location
==
CardLocation
.
Grave
)
{
{
ClientCard
l
=
AI
.
Utils
.
GetPZone
(
0
,
0
);
ClientCard
l
=
AI
.
Utils
.
GetPZone
(
0
,
0
);
ClientCard
r
=
AI
.
Utils
.
GetPZone
(
0
,
1
);
ClientCard
r
=
AI
.
Utils
.
GetPZone
(
0
,
1
);
if
(
l
==
null
&&
r
==
null
)
if
(
l
==
null
&&
r
==
null
)
AI
.
SelectCard
((
int
)
CardId
.
机壳工具丑恶
);
AI
.
SelectCard
((
int
)
CardId
.
Scout
);
}
}
return
true
;
return
true
;
}
}
private
bool
机壳工具丑恶发动
()
private
bool
ScoutActivate
()
{
{
if
(
Card
.
Location
!=
CardLocation
.
Hand
)
if
(
Card
.
Location
!=
CardLocation
.
Hand
)
return
false
;
return
false
;
...
@@ -239,7 +234,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -239,7 +234,7 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
设置刻度
()
private
bool
ScaleActivate
()
{
{
if
(!
Card
.
HasType
(
CardType
.
Pendulum
)
||
Card
.
Location
!=
CardLocation
.
Hand
)
if
(!
Card
.
HasType
(
CardType
.
Pendulum
)
||
Card
.
Location
!=
CardLocation
.
Hand
)
return
false
;
return
false
;
...
@@ -258,7 +253,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -258,7 +253,7 @@ namespace WindBot.Game.AI.Decks
ClientCard
r
=
AI
.
Utils
.
GetPZone
(
0
,
1
);
ClientCard
r
=
AI
.
Utils
.
GetPZone
(
0
,
1
);
if
(
l
==
null
&&
r
==
null
)
if
(
l
==
null
&&
r
==
null
)
{
{
if
(
已发动削命
)
if
(
CardOfDemiseUsed
)
return
true
;
return
true
;
bool
pair
=
false
;
bool
pair
=
false
;
foreach
(
ClientCard
card
in
Bot
.
Hand
.
GetMonsters
())
foreach
(
ClientCard
card
in
Bot
.
Hand
.
GetMonsters
())
...
@@ -273,13 +268,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -273,13 +268,13 @@ namespace WindBot.Game.AI.Decks
return
pair
&&
count
>
1
;
return
pair
&&
count
>
1
;
}
}
if
(
l
==
null
&&
r
.
RScale
!=
Card
.
LScale
)
if
(
l
==
null
&&
r
.
RScale
!=
Card
.
LScale
)
return
count
>
1
||
已发动削命
;
return
count
>
1
||
CardOfDemiseUsed
;
if
(
r
==
null
&&
l
.
LScale
!=
Card
.
RScale
)
if
(
r
==
null
&&
l
.
LScale
!=
Card
.
RScale
)
return
count
>
1
||
已发动削命
;
return
count
>
1
||
CardOfDemiseUsed
;
return
false
;
return
false
;
}
}
private
bool
机壳工具丑恶效果
()
private
bool
ScoutEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Hand
)
if
(
Card
.
Location
==
CardLocation
.
Hand
)
return
false
;
return
false
;
...
@@ -300,27 +295,27 @@ namespace WindBot.Game.AI.Decks
...
@@ -300,27 +295,27 @@ namespace WindBot.Game.AI.Decks
if
(
card
.
HasType
(
CardType
.
Pendulum
)
&&
card
.
IsFaceup
())
if
(
card
.
HasType
(
CardType
.
Pendulum
)
&&
card
.
IsFaceup
())
count
++;
count
++;
}
}
if
(
count
>
0
&&
!
Bot
.
HasInHand
(
低刻度
))
if
(
count
>
0
&&
!
Bot
.
HasInHand
(
LowScaleCards
))
{
{
AI
.
SelectCard
(
低刻度
);
AI
.
SelectCard
(
LowScaleCards
);
}
}
else
if
(
handcount
>
0
||
fieldcount
>
0
)
else
if
(
handcount
>
0
||
fieldcount
>
0
)
{
{
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
(
int
)
CardId
.
机壳的牲祭
,
(
int
)
CardId
.
Saqlifice
,
(
int
)
CardId
.
机壳壳层拒绝
,
(
int
)
CardId
.
Shell
,
(
int
)
CardId
.
机壳基因组贪欲
(
int
)
CardId
.
Helix
});
});
}
}
else
else
{
{
AI
.
SelectCard
(
高刻度
);
AI
.
SelectCard
(
HighScaleCards
);
}
}
return
Duel
.
LifePoints
[
0
]
>
800
;
return
Duel
.
LifePoints
[
0
]
>
800
;
}
}
private
bool
机壳别名愚钝效果
()
private
bool
StealthEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Hand
)
if
(
Card
.
Location
==
CardLocation
.
Hand
)
return
false
;
return
false
;
...
@@ -353,7 +348,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -353,7 +348,7 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
机壳档案色欲效果
()
private
bool
CarrierEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Hand
)
if
(
Card
.
Location
==
CardLocation
.
Hand
)
return
false
;
return
false
;
...
@@ -372,7 +367,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -372,7 +367,7 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
机壳基因组贪欲效果
()
private
bool
HelixEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Hand
)
if
(
Card
.
Location
==
CardLocation
.
Hand
)
return
false
;
return
false
;
...
@@ -399,7 +394,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -399,7 +394,7 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
应进行灵摆召唤
()
private
bool
ShouldPendulum
()
{
{
ClientCard
l
=
AI
.
Utils
.
GetPZone
(
0
,
0
);
ClientCard
l
=
AI
.
Utils
.
GetPZone
(
0
,
0
);
ClientCard
r
=
AI
.
Utils
.
GetPZone
(
0
,
1
);
ClientCard
r
=
AI
.
Utils
.
GetPZone
(
0
,
1
);
...
...
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