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
xiaoye
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
Show 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
.
娱乐法师戏法小丑
,
娱乐法师戏法小丑效果
);
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
.
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