Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
W
Windbot-408
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
神之吹息
Windbot-408
Commits
3f262905
Commit
3f262905
authored
Mar 28, 2024
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix
parent
00e70310
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
279 additions
and
222 deletions
+279
-222
Game/AI/Decks/SuperheavySamuraiExecutor.cs
Game/AI/Decks/SuperheavySamuraiExecutor.cs
+279
-222
No files found.
Game/AI/Decks/SuperheavySamuraiExecutor.cs
View file @
3f262905
...
@@ -63,8 +63,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -63,8 +63,9 @@ namespace WindBot.Game.AI.Decks
private
bool
activate_Benkei
=
false
;
//弁庆
private
bool
activate_Benkei
=
false
;
//弁庆
private
bool
need_Gear
=
false
;
//齿轮齿巨人
private
bool
need_Gear
=
false
;
//齿轮齿巨人
//案山子
//案山子
private
bool
activate_Scarecrow
=
false
;
private
bool
activate_Scarecrow
=
false
;
private
bool
summon_Scarecrow
=
false
;
private
bool
summon_Scarecrow
=
false
;
private
bool
summon_Scarecrow2
=
true
;
private
bool
activate_Sarutobi
=
false
;
//猿飞
private
bool
activate_Sarutobi
=
false
;
//猿飞
private
bool
activate_Genius
=
false
;
//路径灵
private
bool
activate_Genius
=
false
;
//路径灵
//淘气精灵
//淘气精灵
...
@@ -80,107 +81,112 @@ namespace WindBot.Game.AI.Decks
...
@@ -80,107 +81,112 @@ namespace WindBot.Game.AI.Decks
:
base
(
ai
,
duel
)
:
base
(
ai
,
duel
)
{
{
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PSYFramelordOmega
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PSYFramelordOmega
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
IP
,
IPFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
IP
,
IPFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Sarutobi
,
SarutobiFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Sarutobi
,
SarutobiFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Unicorn
,
UnicornFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Unicorn
,
UnicornFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MaxxG
,
MaxxCFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MaxxG
,
MaxxCFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
JoyousSpring
,
DefaultAshBlossomAndJoyousSpring
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
JoyousSpring
,
DefaultAshBlossomAndJoyousSpring
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SnowRabbit
,
DefaultGhostOgreAndSnowRabbit
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SnowRabbit
,
DefaultGhostOgreAndSnowRabbit
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
EffectVeiler
,
DefaultBreakthroughSkill
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
EffectVeiler
,
DefaultBreakthroughSkill
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
LockBird
,
LockBirdFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
LockBird
,
LockBirdFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PsyFramegearGamma
,
FunctionInHand
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PsyFramegearGamma
,
FunctionInHand
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
HauntedMansion
,
FunctionInHand
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
HauntedMansion
,
FunctionInHand
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Masurawo
,
MasurawoFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Masurawo
,
MasurawoFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Genius
,
GeniusFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Genius
,
GeniusFunction
);
//Motorbike's Effect
//Motorbike's Effect
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Motorbike
,
MotorbikeFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Motorbike
,
MotorbikeFunction
);
//Scales's Effect
//Scales's Effect
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Scales
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Scales
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Scales
,
ScalesFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Scales
,
ScalesFunction
);
//Synchron
//Synchron
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
ASStardustDragon
,
ASStardustDragonSynchronFunction2
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
ASStardustDragon
,
ASStardustDragonSynchronFunction2
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Fleur
,
FleurSynchronFunction2
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Fleur
,
FleurSynchronFunction2
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wakaushi
,
WakaushiFunction
);
//Pendulum
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wakaushi
,
WakaushiEffectFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wakaushi
,
WakaushiFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Benkei
,
BenkeiEffectFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wakaushi
,
WakaushiEffectFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Benkei
,
BenkeiFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Benkei
,
BenkeiEffectFunction
);
//Normal Summon & Effect
//Normal Summon & Effect
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Soulpiercer
,
NormalSummonFunction
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Soulpiercer
,
NormalSummonFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Soulpiercer
,
SoulpiercerFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Soulpiercer
,
SoulpiercerFunction
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Wagon
,
NormalSummonFunction
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Wagon
,
NormalSummonFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wagon
,
WagonFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wagon
,
WagonFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wagon
,
WagonFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wagon
,
WagonFunction
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Booster
,
BoosterNormalSummonFunction
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Booster
,
BoosterNormalSummonFunction
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Scales
,
ScalesNormalSummonFunction
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Scales
,
ScalesNormalSummonFunction
);
//boost & Gear
//boost & Gear
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Booster
,
BoosterEquipFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Booster
,
BoosterEquipFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Booster
,
BoosterFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Booster
,
BoosterFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
GearGigant
,
GearGigantXyzFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
GearGigant
,
GearGigantXyzFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GearGigant
,
GearGigantFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GearGigant
,
GearGigantFunction
);
//equip Soulpiercer
//equip Soulpiercer
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Soulpiercer
,
SoulpiercerEquipFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Soulpiercer
,
SoulpiercerEquipFunction
);
//Link Scarecrow
//Link Scarecrow
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Scarecrow
,
ScarecrowLinkFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Scarecrow
,
ScarecrowLinkFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Scarecrow
,
ScarecrowFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Scarecrow
,
ScarecrowFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Scarecrow
,
ScarecrowLinkFunction2
);
//Synchron
//Synchron
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
ASStardustDragon
,
ASStardustDragonSynchronFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
ASStardustDragon
,
ASStardustDragonSynchronFunction
);
//Effect After Synchron
//Effect After Synchron
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SavageDragon
,
SavageDragonFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SavageDragon
,
SavageDragonFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ASStardustDragon
,
ASStardustDragonFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ASStardustDragon
,
ASStardustDragonFunction
);
//Wakaushi's Effect After Synchron
//Wakaushi's Effect After Synchron
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wakaushi
,
WakaushiReturnPFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wakaushi
,
WakaushiReturnPFunction
);
//Synchron
//Synchron
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Fleur
,
FleurSynchronFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Fleur
,
FleurSynchronFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Fleur
,
FleurFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Fleur
,
FleurFunction
);
//equip Soulpeacemaker
//equip Soulpeacemaker
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Soulpeacemaker
,
SoulpeacemakerEquipFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Soulpeacemaker
,
SoulpeacemakerEquipFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Soulpeacemaker
,
SoulpeacemakerFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Soulpeacemaker
,
SoulpeacemakerFunction
);
//Link
//Link
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Genius
,
GeniusLinkFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Genius
,
GeniusLinkFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
Psummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
Psummon
);
//Link
//Link
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Elf
,
ElfLinkFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Elf
,
ElfLinkFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Elf
,
ElfFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Elf
,
ElfFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Motorbike
,
MotorbikeFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Motorbike
,
MotorbikeFunction
);
//Regulus's Effect
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Regulus
,
RegulusFunction
);
//Synchron
//Synchron
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
SavageDragon
,
SavageDragonSynchronFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
SavageDragon
,
SavageDragonSynchronFunction
);
//Link
//Link
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
IP
,
IPLinkFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
IP
,
IPLinkFunction
);
//Regulus's Effect
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Regulus
,
RegulusFunction
);
//booster
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Booster
,
BoosterEquipFunction2
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Booster
,
BoosterFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Booster
,
BoosterEquipFunction3
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Booster
,
BoosterFunction
);
//Synchron
//Synchron
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Masurawo
,
MasurawoSynchronFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Masurawo
,
MasurawoSynchronFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Sarutobi
,
DeSynchronFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Sarutobi
,
DeSynchronFunction
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
PSYFramelordOmega
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
PSYFramelordOmega
);
//equip Soulhorns
//equip Soulhorns
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Soulhorns
,
SoulhornsEquipFunction
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Soulhorns
,
SoulhornsEquipFunction
);
//booster
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Booster
,
BoosterEquipFunction2
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Booster
,
BoosterFunction
);
}
}
public
override
void
OnNewTurn
()
public
override
void
OnNewTurn
()
...
@@ -196,8 +202,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -196,8 +202,9 @@ namespace WindBot.Game.AI.Decks
activate_Soulpeacemaker
=
false
;
activate_Soulpeacemaker
=
false
;
activate_Benkei
=
false
;
activate_Benkei
=
false
;
need_Gear
=
false
;
need_Gear
=
false
;
activate_Scarecrow
=
false
;
activate_Scarecrow
=
false
;
summon_Scarecrow
=
false
;
summon_Scarecrow
=
false
;
summon_Scarecrow2
=
true
;
activate_Elf
=
false
;
activate_Elf
=
false
;
summon_Elf
=
false
;
summon_Elf
=
false
;
activate_MaxxG
=
false
;
activate_MaxxG
=
false
;
...
@@ -218,8 +225,8 @@ namespace WindBot.Game.AI.Decks
...
@@ -218,8 +225,8 @@ namespace WindBot.Game.AI.Decks
{
{
if
(
cardId
==
CardId
.
Scarecrow
)
if
(
cardId
==
CardId
.
Scarecrow
)
{
{
int
a
=
(
Zones
.
z6
&
available
);
int
a
=
(
Zones
.
z6
&
available
);
int
b
=
(
Zones
.
z5
&
available
);
int
b
=
(
Zones
.
z5
&
available
);
if
(
Bot
.
MonsterZone
[
2
]
!=
null
&&
Bot
.
MonsterZone
[
2
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
2
].
Id
))
if
(
Bot
.
MonsterZone
[
2
]
!=
null
&&
Bot
.
MonsterZone
[
2
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
2
].
Id
))
a
=
0
;
a
=
0
;
else
if
(
Bot
.
MonsterZone
[
0
]
!=
null
&&
Bot
.
MonsterZone
[
0
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
0
].
Id
))
else
if
(
Bot
.
MonsterZone
[
0
]
!=
null
&&
Bot
.
MonsterZone
[
0
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
0
].
Id
))
...
@@ -234,8 +241,8 @@ namespace WindBot.Game.AI.Decks
...
@@ -234,8 +241,8 @@ namespace WindBot.Game.AI.Decks
}
}
else
if
(
cardId
==
CardId
.
Genius
)
else
if
(
cardId
==
CardId
.
Genius
)
{
{
int
a
=
(
Zones
.
z6
&
available
);
int
a
=
(
Zones
.
z6
&
available
);
int
b
=
(
Zones
.
z5
&
available
);
int
b
=
(
Zones
.
z5
&
available
);
if
(
Bot
.
MonsterZone
[
4
]
!=
null
&&
Bot
.
MonsterZone
[
4
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
4
].
Id
))
if
(
Bot
.
MonsterZone
[
4
]
!=
null
&&
Bot
.
MonsterZone
[
4
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
4
].
Id
))
a
=
0
;
a
=
0
;
else
if
(
Bot
.
MonsterZone
[
0
]
!=
null
&&
Bot
.
MonsterZone
[
0
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
0
].
Id
))
else
if
(
Bot
.
MonsterZone
[
0
]
!=
null
&&
Bot
.
MonsterZone
[
0
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
0
].
Id
))
...
@@ -266,7 +273,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -266,7 +273,7 @@ namespace WindBot.Game.AI.Decks
{
{
List
<
ClientCard
>
result
=
new
List
<
ClientCard
>();
List
<
ClientCard
>
result
=
new
List
<
ClientCard
>();
List
<
ClientCard
>
scards
=
cards
.
Where
(
card
=>
card
!=
null
&&
card
.
HasSetcode
(
0x9a
)
&&
card
.
Level
==
4
).
ToList
();
List
<
ClientCard
>
scards
=
cards
.
Where
(
card
=>
card
!=
null
&&
card
.
HasSetcode
(
0x9a
)
&&
card
.
Level
==
4
).
ToList
();
if
(
scards
.
Count
<
2
)
scards
=
cards
.
Where
(
card
=>
card
!=
null
&&
card
.
HasSetcode
(
0x9a
)).
ToList
();
if
(
scards
.
Count
<
2
)
scards
=
cards
.
Where
(
card
=>
card
!=
null
&&
card
.
HasSetcode
(
0x9a
)).
ToList
();
p_summoning
=
false
;
p_summoning
=
false
;
if
(
scards
.
Count
>
0
)
return
Util
.
CheckSelectCount
(
result
,
scards
,
1
,
1
);
if
(
scards
.
Count
>
0
)
return
Util
.
CheckSelectCount
(
result
,
scards
,
1
,
1
);
else
if
(
min
==
0
)
return
result
;
// empty
else
if
(
min
==
0
)
return
result
;
// empty
...
@@ -287,8 +294,8 @@ namespace WindBot.Game.AI.Decks
...
@@ -287,8 +294,8 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
FinalCards
(
int
cname
)
private
bool
FinalCards
(
int
cname
)
{
{
int
[]
cardsname
=
new
[]
{
CardId
.
Masurawo
,
CardId
.
Fleur
,
CardId
.
SavageDragon
,
CardId
.
Sarutobi
,
CardId
.
Regulus
,
CardId
.
IP
};
int
[]
cardsname
=
new
[]
{
CardId
.
Masurawo
,
CardId
.
Fleur
,
CardId
.
SavageDragon
,
CardId
.
Sarutobi
,
CardId
.
Regulus
,
CardId
.
IP
};
foreach
(
var
cardname
in
cardsname
)
foreach
(
var
cardname
in
cardsname
)
{
{
if
(
cname
==
cardname
)
return
true
;
if
(
cname
==
cardname
)
return
true
;
}
}
...
@@ -296,8 +303,8 @@ namespace WindBot.Game.AI.Decks
...
@@ -296,8 +303,8 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
TurnerCards
(
int
cname
)
private
bool
TurnerCards
(
int
cname
)
{
{
int
[]
cardsname
=
new
[]
{
CardId
.
PsyFramegearGamma
,
CardId
.
Wakaushi
,
CardId
.
Motorbike
};
int
[]
cardsname
=
new
[]
{
CardId
.
PsyFramegearGamma
,
CardId
.
Wakaushi
,
CardId
.
Motorbike
};
foreach
(
var
cardname
in
cardsname
)
foreach
(
var
cardname
in
cardsname
)
{
{
if
(
cname
==
cardname
)
return
true
;
if
(
cname
==
cardname
)
return
true
;
}
}
...
@@ -340,11 +347,16 @@ namespace WindBot.Game.AI.Decks
...
@@ -340,11 +347,16 @@ namespace WindBot.Game.AI.Decks
{
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
int
targetid
=
-
1
;
int
targetid
=
-
1
;
List
<
ClientCard
>
cards
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()).
ToList
();
if
(!(
Bot
.
HasInHand
(
CardId
.
Wakaushi
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Wakaushi
)
||
Bot
.
HasInSpellZone
(
CardId
.
Wakaushi
))
&&
!
activate_Wakaushi
)
if
(!(
Bot
.
HasInHand
(
CardId
.
Wakaushi
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Wakaushi
)
||
Bot
.
HasInSpellZone
(
CardId
.
Wakaushi
))
&&
!
activate_Wakaushi
)
{
{
targetid
=
CardId
.
Wakaushi
;
targetid
=
CardId
.
Wakaushi
;
}
}
else
if
(!
Bot
.
HasInHand
(
CardId
.
Soulpeacemaker
)
&&
!
activate_Soulpeacemaker
&&
!
normal_summon
)
else
if
(
cards
.
Count
()
==
0
&&
!
normal_summon
)
{
targetid
=
CardId
.
Soulpiercer
;
}
else
if
(!
Bot
.
HasInHand
(
CardId
.
Soulpeacemaker
)
&&
!
Bot
.
HasInSpellZone
(
CardId
.
Soulpeacemaker
)
&&
!
activate_Soulpeacemaker
&&
(
normal_summon
||
Bot
.
HasInMonstersZone
(
CardId
.
Scarecrow
)))
{
{
targetid
=
CardId
.
Soulpeacemaker
;
targetid
=
CardId
.
Soulpeacemaker
;
}
}
...
@@ -403,7 +415,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -403,7 +415,7 @@ namespace WindBot.Game.AI.Decks
if
(
ActivateDescription
==
Util
.
GetStringId
(
CardId
.
Wagon
,
1
))
if
(
ActivateDescription
==
Util
.
GetStringId
(
CardId
.
Wagon
,
1
))
{
{
int
targetid
=
-
1
;
int
targetid
=
-
1
;
if
(!(
Bot
.
HasInHand
(
CardId
.
Soulpiercer
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
)))
if
(!(
Bot
.
HasInHand
(
CardId
.
Soulpiercer
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
)))
{
{
targetid
=
CardId
.
Soulpiercer
;
targetid
=
CardId
.
Soulpiercer
;
}
}
...
@@ -462,7 +474,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -462,7 +474,7 @@ namespace WindBot.Game.AI.Decks
{
{
targetid
=
CardId
.
Soulhorns
;
targetid
=
CardId
.
Soulhorns
;
}
}
else
{
targetid
=
CardId
.
Wakaushi
;
}
else
{
targetid
=
CardId
.
Wakaushi
;
}
if
(
targetid
>
0
)
AI
.
SelectCard
(
targetid
);
if
(
targetid
>
0
)
AI
.
SelectCard
(
targetid
);
return
true
;
return
true
;
}
}
...
@@ -470,7 +482,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -470,7 +482,7 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
WakaushiFunction
()
private
bool
WakaushiFunction
()
{
{
if
(
Card
.
Location
!=
CardLocation
.
Hand
||
Bot
.
HasInMonstersZone
(
CardId
.
Wakaushi
))
if
(
Card
.
Location
!=
CardLocation
.
Hand
||
Bot
.
HasInMonstersZone
(
CardId
.
Wakaushi
))
return
false
;
return
false
;
ClientCard
l
=
Util
.
GetPZone
(
0
,
0
);
ClientCard
l
=
Util
.
GetPZone
(
0
,
0
);
ClientCard
r
=
Util
.
GetPZone
(
0
,
1
);
ClientCard
r
=
Util
.
GetPZone
(
0
,
1
);
...
@@ -492,12 +504,21 @@ namespace WindBot.Game.AI.Decks
...
@@ -492,12 +504,21 @@ namespace WindBot.Game.AI.Decks
}
}
return
false
;
return
false
;
}
}
private
bool
BenkeiFunction
()
{
if
(
Card
.
Location
!=
CardLocation
.
Hand
||
Bot
.
HasInSpellZone
(
CardId
.
Benkei
))
return
false
;
List
<
ClientCard
>
cards1
=
GetZoneCards
(
CardLocation
.
Hand
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Benkei
).
ToList
();
List
<
ClientCard
>
cards2
=
GetZoneCards
(
CardLocation
.
Removed
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Benkei
).
ToList
();
if
(
cards1
.
Count
()
>=
2
||
Bot
.
HasInGraveyard
(
CardId
.
Benkei
)
||
Bot
.
HasInExtra
(
CardId
.
Benkei
)
||
cards2
.
Count
()
>
0
)
return
true
;
return
false
;
}
private
bool
BenkeiEffectFunction
()
private
bool
BenkeiEffectFunction
()
{
{
if
(
Card
.
Location
==
CardLocation
.
SpellZone
)
if
(
Card
.
Location
==
CardLocation
.
SpellZone
)
{
{
int
targetid
=
-
1
;
int
targetid
=
-
1
;
if
(!(
Bot
.
HasInHand
(
CardId
.
Soulpiercer
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
)))
if
(!(
Bot
.
HasInHand
(
CardId
.
Soulpiercer
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
)
||
Bot
.
HasInSpellZone
(
CardId
.
Soulpiercer
))
&&
!(
Bot
.
HasInMonstersZone
(
CardId
.
Scarecrow
)
&&
!
activate_Soulpeacemaker
))
{
{
targetid
=
CardId
.
Soulpiercer
;
targetid
=
CardId
.
Soulpiercer
;
}
}
...
@@ -517,7 +538,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -517,7 +538,7 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
WakaushiReturnPFunction
()
private
bool
WakaushiReturnPFunction
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Extra
||
Card
.
Location
==
CardLocation
.
Removed
)
if
(
Card
.
Location
==
CardLocation
.
Extra
||
Card
.
Location
==
CardLocation
.
Removed
)
{
{
ClientCard
l
=
Util
.
GetPZone
(
0
,
0
);
ClientCard
l
=
Util
.
GetPZone
(
0
,
0
);
ClientCard
r
=
Util
.
GetPZone
(
0
,
1
);
ClientCard
r
=
Util
.
GetPZone
(
0
,
1
);
...
@@ -558,7 +579,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -558,7 +579,7 @@ namespace WindBot.Game.AI.Decks
bool
chk
=
true
;
bool
chk
=
true
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
ASStardustDragon
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Benkei
))
if
(
Bot
.
HasInMonstersZone
(
CardId
.
ASStardustDragon
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Benkei
))
chk
=
false
;
chk
=
false
;
var
materials_lists
=
Util
.
GetSynchroMaterials
(
Bot
.
MonsterZone
,
12
,
1
,
1
,
false
,
chk
,
null
,
var
materials_lists
=
Util
.
GetSynchroMaterials
(
Bot
.
MonsterZone
,
12
,
1
,
1
,
false
,
chk
,
null
,
card
=>
{
return
!
FinalCards
(
card
.
Id
);
});
card
=>
{
return
!
FinalCards
(
card
.
Id
);
});
if
(
materials_lists
.
Count
<=
0
)
return
false
;
if
(
materials_lists
.
Count
<=
0
)
return
false
;
AI
.
SelectMaterials
(
materials_lists
[
0
]);
AI
.
SelectMaterials
(
materials_lists
[
0
]);
...
@@ -570,7 +591,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -570,7 +591,7 @@ namespace WindBot.Game.AI.Decks
bool
chk
=
true
;
bool
chk
=
true
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Motorbike
)
&&
(
Bot
.
HasInMonstersZone
(
CardId
.
ASStardustDragon
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Benkei
)))
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Motorbike
)
&&
(
Bot
.
HasInMonstersZone
(
CardId
.
ASStardustDragon
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Benkei
)))
chk
=
false
;
chk
=
false
;
var
materials_lists
=
Util
.
GetSynchroMaterials
(
Bot
.
MonsterZone
,
10
,
1
,
1
,
false
,
chk
,
null
,
var
materials_lists
=
Util
.
GetSynchroMaterials
(
Bot
.
MonsterZone
,
10
,
1
,
1
,
false
,
chk
,
null
,
card
=>
{
return
!
FinalCards
(
card
.
Id
);
});
card
=>
{
return
!
FinalCards
(
card
.
Id
);
});
if
(
materials_lists
.
Count
<=
0
)
return
false
;
if
(
materials_lists
.
Count
<=
0
)
return
false
;
AI
.
SelectMaterials
(
materials_lists
[
0
]);
AI
.
SelectMaterials
(
materials_lists
[
0
]);
...
@@ -578,7 +599,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -578,7 +599,7 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
FleurSynchronFunction2
()
private
bool
FleurSynchronFunction2
()
{
{
var
materials_lists
=
Util
.
GetSynchroMaterials
(
Bot
.
MonsterZone
,
10
,
1
,
1
,
false
,
false
,
null
,
var
materials_lists
=
Util
.
GetSynchroMaterials
(
Bot
.
MonsterZone
,
10
,
1
,
1
,
false
,
false
,
null
,
card
=>
{
return
!
FinalCards
(
card
.
Id
);
});
card
=>
{
return
!
FinalCards
(
card
.
Id
);
});
if
(
materials_lists
.
Count
<=
0
)
return
false
;
if
(
materials_lists
.
Count
<=
0
)
return
false
;
AI
.
SelectMaterials
(
materials_lists
[
0
]);
AI
.
SelectMaterials
(
materials_lists
[
0
]);
...
@@ -636,7 +657,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -636,7 +657,7 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
ASStardustDragonFunction
()
private
bool
ASStardustDragonFunction
()
{
{
if
(
Duel
.
LastChainPlayer
==
1
&&
ActivateDescription
==
Util
.
GetStringId
(
CardId
.
ASStardustDragon
,
0
))
if
(
Duel
.
LastChainPlayer
==
1
&&
ActivateDescription
==
Util
.
GetStringId
(
CardId
.
ASStardustDragon
,
1
))
{
{
return
true
;
return
true
;
}
}
...
@@ -663,10 +684,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -663,10 +684,9 @@ namespace WindBot.Game.AI.Decks
{
{
List
<
ClientCard
>
material
=
new
List
<
ClientCard
>();
List
<
ClientCard
>
material
=
new
List
<
ClientCard
>();
List
<
ClientCard
>
cards
=
Bot
.
GetMonstersInExtraZone
().
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scarecrow
).
ToList
();
List
<
ClientCard
>
cards
=
Bot
.
GetMonstersInExtraZone
().
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scarecrow
).
ToList
();
if
(
cards
.
Count
>
0
||
summon_Scarecrow
||
activate_Scarecrow
)
return
false
;
if
(
(
cards
.
Count
()
>
0
&&
!
summon_Scarecrow
)
||
summon_Scarecrow
||
activate_Scarecrow
)
return
false
;
int
targetid
=
-
1
;
int
targetid
=
-
1
;
if
(
Bot
.
MonsterZone
[
0
]
!=
null
&&
Bot
.
MonsterZone
[
2
]
!=
null
)
if
(
Bot
.
MonsterZone
[
0
]
!=
null
&&
Bot
.
MonsterZone
[
2
]
!=
null
)
{
{
if
(
Bot
.
MonsterZone
[
0
].
Id
==
CardId
.
Soulpiercer
)
material
.
Add
(
Bot
.
MonsterZone
[
0
]);
if
(
Bot
.
MonsterZone
[
0
].
Id
==
CardId
.
Soulpiercer
)
material
.
Add
(
Bot
.
MonsterZone
[
0
]);
else
if
(
Bot
.
MonsterZone
[
2
].
Id
==
CardId
.
Soulpiercer
)
material
.
Add
(
Bot
.
MonsterZone
[
2
]);
else
if
(
Bot
.
MonsterZone
[
2
].
Id
==
CardId
.
Soulpiercer
)
material
.
Add
(
Bot
.
MonsterZone
[
2
]);
else
if
(!
FinalCards
(
Bot
.
MonsterZone
[
0
].
Id
)
&&
Bot
.
MonsterZone
[
0
].
HasSetcode
(
0x9a
))
material
.
Add
(
Bot
.
MonsterZone
[
0
]);
else
if
(!
FinalCards
(
Bot
.
MonsterZone
[
0
].
Id
)
&&
Bot
.
MonsterZone
[
0
].
HasSetcode
(
0x9a
))
material
.
Add
(
Bot
.
MonsterZone
[
0
]);
...
@@ -682,13 +702,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -682,13 +702,13 @@ namespace WindBot.Game.AI.Decks
}
}
if
(
material
.
Count
>
0
)
AI
.
SelectMaterials
(
material
);
if
(
material
.
Count
>
0
)
AI
.
SelectMaterials
(
material
);
else
if
(
targetid
>
0
)
AI
.
SelectMaterials
(
targetid
);
else
if
(
targetid
>
0
)
AI
.
SelectMaterials
(
targetid
);
summon_Scarecrow
=
true
;
summon_Scarecrow
=
true
;
return
(
Bot
.
HasInGraveyard
(
new
[]
{
return
(
Bot
.
HasInGraveyard
(
new
[]
{
CardId
.
Soulpiercer
,
CardId
.
Soulpiercer
,
CardId
.
Wakaushi
,
CardId
.
Wakaushi
,
CardId
.
Benkei
,
CardId
.
Benkei
,
CardId
.
Wagon
,
CardId
.
Wagon
,
})
||
Bot
.
HasInMonstersZone
(
new
[]
{
})
||
Bot
.
HasInMonstersZone
(
new
[]
{
CardId
.
Soulpiercer
,
CardId
.
Soulpiercer
,
CardId
.
Wagon
,
CardId
.
Wagon
,
CardId
.
Wakaushi
,
CardId
.
Wakaushi
,
...
@@ -705,78 +725,80 @@ namespace WindBot.Game.AI.Decks
...
@@ -705,78 +725,80 @@ namespace WindBot.Game.AI.Decks
{
{
int
tributeId
=
-
1
;
int
tributeId
=
-
1
;
if
(
Bot
.
HasInHand
(
CardId
.
PsyFrameDriver
))
if
(
Bot
.
HasInHand
(
CardId
.
PsyFrameDriver
))
{
tributeId
=
CardId
.
PsyFrameDriver
;
}
{
tributeId
=
CardId
.
PsyFrameDriver
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
PsyFramegearGamma
))
else
if
(
Bot
.
HasInHand
(
CardId
.
PsyFramegearGamma
))
{
tributeId
=
CardId
.
PsyFramegearGamma
;
}
{
tributeId
=
CardId
.
PsyFramegearGamma
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
Benkei
))
else
if
(
Bot
.
HasInHand
(
CardId
.
Benkei
))
{
tributeId
=
CardId
.
Benkei
;
}
{
tributeId
=
CardId
.
Benkei
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
HauntedMansion
))
else
if
(
Bot
.
HasInHand
(
CardId
.
HauntedMansion
))
{
tributeId
=
CardId
.
HauntedMansion
;
}
{
tributeId
=
CardId
.
HauntedMansion
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
EffectVeiler
))
else
if
(
Bot
.
HasInHand
(
CardId
.
EffectVeiler
))
{
tributeId
=
CardId
.
EffectVeiler
;
}
{
tributeId
=
CardId
.
EffectVeiler
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
SnowRabbit
))
else
if
(
Bot
.
HasInHand
(
CardId
.
SnowRabbit
))
{
tributeId
=
CardId
.
SnowRabbit
;
}
{
tributeId
=
CardId
.
SnowRabbit
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
JoyousSpring
))
else
if
(
Bot
.
HasInHand
(
CardId
.
JoyousSpring
))
{
tributeId
=
CardId
.
JoyousSpring
;
}
{
tributeId
=
CardId
.
JoyousSpring
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
Booster
))
else
if
(
Bot
.
HasInHand
(
CardId
.
Booster
))
{
tributeId
=
CardId
.
Booster
;
}
{
tributeId
=
CardId
.
Booster
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
Wagon
))
else
if
(
Bot
.
HasInHand
(
CardId
.
Wagon
))
{
tributeId
=
CardId
.
Wagon
;
}
{
tributeId
=
CardId
.
Wagon
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
Scales
))
else
if
(
Bot
.
HasInHand
(
CardId
.
Scales
))
{
tributeId
=
CardId
.
Scales
;
}
{
tributeId
=
CardId
.
Scales
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
LockBird
))
else
if
(
Bot
.
HasInHand
(
CardId
.
LockBird
))
{
tributeId
=
CardId
.
LockBird
;
}
{
tributeId
=
CardId
.
LockBird
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
MaxxG
))
else
if
(
Bot
.
HasInHand
(
CardId
.
MaxxG
))
{
tributeId
=
CardId
.
MaxxG
;
}
{
tributeId
=
CardId
.
MaxxG
;
}
int
needId
=
-
1
;
int
needId
=
-
1
;
if
(
Bot
.
HasInGraveyard
(
CardId
.
Soulpiercer
))
if
(
Bot
.
HasInGraveyard
(
CardId
.
Soulpiercer
))
{
{
if
(
Bot
.
HasInGraveyard
(
CardId
.
Scales
)
&&
!
activate_Scales
)
if
(
Bot
.
HasInGraveyard
(
CardId
.
Scales
)
&&
!
activate_Scales
)
{
needId
=
CardId
.
Scales
;
}
{
needId
=
CardId
.
Scales
;
}
else
else
{
needId
=
CardId
.
Soulpiercer
;
}
{
needId
=
CardId
.
Soulpiercer
;
}
}
}
else
if
(
Bot
.
HasInGraveyard
(
CardId
.
Masurawo
))
else
if
(
Bot
.
HasInGraveyard
(
CardId
.
Masurawo
))
{
needId
=
CardId
.
Masurawo
;
}
{
needId
=
CardId
.
Masurawo
;
}
else
if
(
Bot
.
HasInGraveyard
(
CardId
.
Sarutobi
))
else
if
(
Bot
.
HasInGraveyard
(
CardId
.
Sarutobi
))
{
needId
=
CardId
.
Sarutobi
;
}
{
needId
=
CardId
.
Sarutobi
;
}
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
))
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
))
{
{
if
(
Bot
.
HasInGraveyard
(
CardId
.
Wakaushi
))
if
(
Bot
.
HasInGraveyard
(
CardId
.
Wakaushi
))
{
needId
=
CardId
.
Wakaushi
;
}
{
needId
=
CardId
.
Wakaushi
;
}
if
(
Bot
.
HasInGraveyard
(
CardId
.
Motorbike
))
if
(
Bot
.
HasInGraveyard
(
CardId
.
Motorbike
))
{
needId
=
CardId
.
Motorbike
;
}
{
needId
=
CardId
.
Motorbike
;
}
}
}
if
(
GetZoneCards
(
CardLocation
.
Hand
,
Bot
).
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scales
)
+
GetZoneCards
(
CardLocation
.
Grave
,
Bot
).
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scales
)
+
GetZoneCards
(
CardLocation
.
Onfield
,
Bot
).
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scales
)
==
2
&&
GetZoneCards
(
CardLocation
.
Hand
,
Bot
).
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scales
)
>=
1
&&
!
activate_Scales
)
if
(
GetZoneCards
(
CardLocation
.
Hand
,
Bot
).
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scales
)
+
GetZoneCards
(
CardLocation
.
Grave
,
Bot
).
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scales
)
+
GetZoneCards
(
CardLocation
.
Onfield
,
Bot
).
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scales
)
==
2
&&
GetZoneCards
(
CardLocation
.
Hand
,
Bot
).
Count
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scales
)
>=
1
&&
!
activate_Scales
)
{
{
tributeId
=
CardId
.
Scales
;
tributeId
=
CardId
.
Scales
;
needId
=
CardId
.
Scales
;
needId
=
CardId
.
Scales
;
}
}
AI
.
SelectCard
(
tributeId
);
AI
.
SelectCard
(
tributeId
);
AI
.
SelectNextCard
(
needId
);
AI
.
SelectNextCard
(
needId
);
activate_Scarecrow
=
true
;
if
(((!
Bot
.
HasInHand
(
CardId
.
Wakaushi
)
&&
!
Bot
.
HasInSpellZone
(
CardId
.
Wakaushi
))
||
activate_Wakaushi
)
if
(!
summon_Scarecrow
&&
(!
Bot
.
HasInHand
(
CardId
.
Motorbike
)
||
activate_Motorbike
)
&&
((
Bot
.
HasInHand
(
CardId
.
Wakaushi
)
||
Bot
.
HasInSpellZone
(
CardId
.
Wakaushi
))
&&
!
activate_Wakaushi
)
&&
((!
Bot
.
HasInHand
(
CardId
.
Soulpeacemaker
)
&&
!
Bot
.
HasInSpellZone
(
CardId
.
Soulpeacemaker
))
||
activate_Soulpeacemaker
)
&&
(
Bot
.
HasInHand
(
CardId
.
Motorbike
)
&&
!
activate_Motorbike
)
&&
(!
Bot
.
HasInSpellZone
(
CardId
.
Benkei
)
||
activate_Benkei
)
&&
((
Bot
.
HasInHand
(
CardId
.
Soulpeacemaker
)
||
Bot
.
HasInSpellZone
(
CardId
.
Soulpeacemaker
))
&&
!
activate_Soulpeacemaker
)
&&
(
needId
==
CardId
.
Soulpiercer
)
&&
(
Bot
.
HasInSpellZone
(
CardId
.
Benkei
)
&&
!
activate_Benkei
)
&&
(!
activate_Wakaushi
||
!
activate_Motorbike
||
!
activate_Soulpeacemaker
||
!
activate_Benkei
)
&&
(
Bot
.
HasInHand
(
CardId
.
Soulpiercer
)
&&
!
normal_summon
)
&&
((
Bot
.
HasInGraveyard
(
CardId
.
Scales
)
||
Bot
.
HasInHand
(
CardId
.
Soulpiercer
))
&&
!
activate_Scales
&&
!
normal_summon
)
)
)
{
{
activate_Scarecrow
=
false
;
summon_Scarecrow2
=
false
;
summon_Scarecrow
=
false
;
}
}
else
if
(
needId
!=
CardId
.
Soulpiercer
)
activate_Scarecrow
=
true
;
{
return
true
;
activate_Scarecrow
=
false
;
summon_Scarecrow
=
false
;
}
}
private
bool
ScarecrowLinkFunction2
()
{
if
(!
summon_Scarecrow2
)
{
summon_Scarecrow2
=
true
;
return
true
;
return
true
;
}
}
return
false
;
}
private
bool
UnicornFunction
()
private
bool
UnicornFunction
()
{
{
List
<
ClientCard
>
Enemycards
=
GetZoneCards
(
CardLocation
.
Onfield
,
Enemy
);
List
<
ClientCard
>
Enemycards
=
GetZoneCards
(
CardLocation
.
Onfield
,
Enemy
);
if
(
Bot
.
Hand
.
Count
==
0
||
Enemycards
.
Count
(
card
=>
card
!=
null
&&
!
card
.
IsShouldNotBeTarget
())
==
0
)
if
(
Bot
.
Hand
.
Count
==
0
||
Enemycards
.
Count
(
card
=>
card
!=
null
&&
!
card
.
IsShouldNotBeTarget
())
==
0
)
{
{
if
(
to_deck
)
to_deck
=
false
;
if
(
to_deck
)
to_deck
=
false
;
...
@@ -784,29 +806,29 @@ namespace WindBot.Game.AI.Decks
...
@@ -784,29 +806,29 @@ namespace WindBot.Game.AI.Decks
}
}
int
tributeId
=
-
1
;
int
tributeId
=
-
1
;
if
(
Bot
.
HasInHand
(
CardId
.
PsyFrameDriver
))
if
(
Bot
.
HasInHand
(
CardId
.
PsyFrameDriver
))
{
tributeId
=
CardId
.
PsyFrameDriver
;
}
{
tributeId
=
CardId
.
PsyFrameDriver
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
PsyFramegearGamma
))
else
if
(
Bot
.
HasInHand
(
CardId
.
PsyFramegearGamma
))
{
tributeId
=
CardId
.
PsyFramegearGamma
;
}
{
tributeId
=
CardId
.
PsyFramegearGamma
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
Benkei
))
else
if
(
Bot
.
HasInHand
(
CardId
.
Benkei
))
{
tributeId
=
CardId
.
Benkei
;
}
{
tributeId
=
CardId
.
Benkei
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
HauntedMansion
))
else
if
(
Bot
.
HasInHand
(
CardId
.
HauntedMansion
))
{
tributeId
=
CardId
.
HauntedMansion
;
}
{
tributeId
=
CardId
.
HauntedMansion
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
EffectVeiler
))
else
if
(
Bot
.
HasInHand
(
CardId
.
EffectVeiler
))
{
tributeId
=
CardId
.
EffectVeiler
;
}
{
tributeId
=
CardId
.
EffectVeiler
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
SnowRabbit
))
else
if
(
Bot
.
HasInHand
(
CardId
.
SnowRabbit
))
{
tributeId
=
CardId
.
SnowRabbit
;
}
{
tributeId
=
CardId
.
SnowRabbit
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
JoyousSpring
))
else
if
(
Bot
.
HasInHand
(
CardId
.
JoyousSpring
))
{
tributeId
=
CardId
.
JoyousSpring
;
}
{
tributeId
=
CardId
.
JoyousSpring
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
Booster
))
else
if
(
Bot
.
HasInHand
(
CardId
.
Booster
))
{
tributeId
=
CardId
.
Booster
;
}
{
tributeId
=
CardId
.
Booster
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
Wagon
))
else
if
(
Bot
.
HasInHand
(
CardId
.
Wagon
))
{
tributeId
=
CardId
.
Wagon
;
}
{
tributeId
=
CardId
.
Wagon
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
Scales
))
else
if
(
Bot
.
HasInHand
(
CardId
.
Scales
))
{
tributeId
=
CardId
.
Scales
;
}
{
tributeId
=
CardId
.
Scales
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
LockBird
))
else
if
(
Bot
.
HasInHand
(
CardId
.
LockBird
))
{
tributeId
=
CardId
.
LockBird
;
}
{
tributeId
=
CardId
.
LockBird
;
}
else
if
(
Bot
.
HasInHand
(
CardId
.
MaxxG
))
else
if
(
Bot
.
HasInHand
(
CardId
.
MaxxG
))
{
tributeId
=
CardId
.
MaxxG
;
}
{
tributeId
=
CardId
.
MaxxG
;
}
if
(
to_deck
)
to_deck
=
false
;
if
(
to_deck
)
to_deck
=
false
;
AI
.
SelectCard
(
tributeId
);
AI
.
SelectCard
(
tributeId
);
return
true
;
return
true
;
...
@@ -825,7 +847,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -825,7 +847,7 @@ namespace WindBot.Game.AI.Decks
else
if
(
card
.
Id
==
CardId
.
Wagon
&&
(!
activate_Wagon
||
!
normal_summon
))
return
false
;
else
if
(
card
.
Id
==
CardId
.
Wagon
&&
(!
activate_Wagon
||
!
normal_summon
))
return
false
;
else
if
(
card
.
Id
==
CardId
.
Benkei
&&
!
activate_Benkei
)
return
false
;
else
if
(
card
.
Id
==
CardId
.
Benkei
&&
!
activate_Benkei
)
return
false
;
}
}
List
<
ClientCard
>
ChkCardsSpell
=
GetZoneCards
(
CardLocation
.
SpellZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()).
ToList
();
List
<
ClientCard
>
ChkCardsSpell
=
GetZoneCards
(
CardLocation
.
SpellZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()).
ToList
();
foreach
(
var
card
in
ChkCardsSpell
)
foreach
(
var
card
in
ChkCardsSpell
)
{
{
if
(
card
.
Id
==
CardId
.
Wakaushi
&&
!
activate_Wakaushi
)
return
false
;
if
(
card
.
Id
==
CardId
.
Wakaushi
&&
!
activate_Wakaushi
)
return
false
;
...
@@ -834,13 +856,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -834,13 +856,13 @@ namespace WindBot.Game.AI.Decks
else
if
(
card
.
Id
==
CardId
.
Wakaushi
&&
!
activate_Wakaushi
)
return
false
;
else
if
(
card
.
Id
==
CardId
.
Wakaushi
&&
!
activate_Wakaushi
)
return
false
;
else
if
(
card
.
Id
==
CardId
.
Benkei
&&
!
activate_Benkei
)
return
false
;
else
if
(
card
.
Id
==
CardId
.
Benkei
&&
!
activate_Benkei
)
return
false
;
}
}
List
<
ClientCard
>
ChkCardsMonster
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()
&&
card
.
Level
==
4
).
ToList
();
List
<
ClientCard
>
ChkCardsMonster
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()
&&
card
.
Level
==
4
).
ToList
();
if
(
ChkCardsMonster
.
Count
==
0
)
return
false
;
if
(
ChkCardsMonster
.
Count
==
0
)
return
false
;
foreach
(
var
card
in
ChkCardsMonster
)
foreach
(
var
card
in
ChkCardsMonster
)
{
{
if
(
card
.
Id
==
CardId
.
Soulpiercer
)
return
false
;
if
(
card
.
Id
==
CardId
.
Soulpiercer
)
return
false
;
}
}
List
<
ClientCard
>
ChkCardsGrave
=
GetZoneCards
(
CardLocation
.
Grave
,
Bot
).
ToList
();
List
<
ClientCard
>
ChkCardsGrave
=
GetZoneCards
(
CardLocation
.
Grave
,
Bot
).
ToList
();
foreach
(
var
card
in
ChkCardsGrave
)
foreach
(
var
card
in
ChkCardsGrave
)
{
{
if
(
card
.
Id
==
CardId
.
Soulpiercer
&&
(
Bot
.
HasInMonstersZone
(
CardId
.
Scarecrow
)
||
Bot
.
HasInExtra
(
CardId
.
Scarecrow
)))
return
false
;
if
(
card
.
Id
==
CardId
.
Soulpiercer
&&
(
Bot
.
HasInMonstersZone
(
CardId
.
Scarecrow
)
||
Bot
.
HasInExtra
(
CardId
.
Scarecrow
)))
return
false
;
...
@@ -852,7 +874,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -852,7 +874,13 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
BoosterEquipFunction2
()
private
bool
BoosterEquipFunction2
()
{
{
if
(
Bot
.
HasInExtra
(
CardId
.
IP
)
&&
p_summoned
)
return
true
;
if
(
Bot
.
HasInExtra
(
CardId
.
IP
)
&&
p_summoned
&&
!
activate_Booster
)
return
true
;
return
false
;
}
private
bool
BoosterEquipFunction3
()
{
List
<
ClientCard
>
cards
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()
&&
!
FinalCards
(
card
.
Id
)
&&
card
.
Id
!=
CardId
.
Scarecrow
).
ToList
();
if
(
Bot
.
HasInMonstersZone
(
CardId
.
IP
)
&&
p_summoned
&&
!
activate_Booster
&&
cards
.
Count
()
==
0
)
return
true
;
return
false
;
return
false
;
}
}
private
bool
BoosterFunction
()
private
bool
BoosterFunction
()
...
@@ -877,7 +905,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -877,7 +905,7 @@ namespace WindBot.Game.AI.Decks
{
{
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
{
List
<
ClientCard
>
ChkCards
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()
&&
card
.
HasSetcode
(
0x9a
)).
ToList
();
List
<
ClientCard
>
ChkCards
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()
&&
card
.
HasSetcode
(
0x9a
)).
ToList
();
int
targetid
=
-
1
;
int
targetid
=
-
1
;
if
(!
Bot
.
HasInHand
(
CardId
.
Motorbike
)
&&
!
activate_Motorbike
)
if
(!
Bot
.
HasInHand
(
CardId
.
Motorbike
)
&&
!
activate_Motorbike
)
{
{
...
@@ -902,9 +930,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -902,9 +930,9 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
int
tributeId
=
-
1
;
int
tributeId
=
-
1
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Wagon
))
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Wagon
))
{
tributeId
=
CardId
.
Wagon
;
}
{
tributeId
=
CardId
.
Wagon
;
}
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Wakaushi
))
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Wakaushi
))
{
tributeId
=
CardId
.
Wakaushi
;
}
{
tributeId
=
CardId
.
Wakaushi
;
}
AI
.
SelectCard
(
tributeId
);
AI
.
SelectCard
(
tributeId
);
return
Bot
.
HasInMonstersZone
(
new
[]
{
return
Bot
.
HasInMonstersZone
(
new
[]
{
CardId
.
Wakaushi
,
CardId
.
Wakaushi
,
...
@@ -916,11 +944,17 @@ namespace WindBot.Game.AI.Decks
...
@@ -916,11 +944,17 @@ namespace WindBot.Game.AI.Decks
if
(
Card
.
Location
!=
CardLocation
.
Hand
)
if
(
Card
.
Location
!=
CardLocation
.
Hand
)
return
false
;
return
false
;
int
tributeId
=
-
1
;
int
tributeId
=
-
1
;
List
<
ClientCard
>
cards
=
Bot
.
GetMonstersInExtraZone
().
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Scarecrow
).
ToList
();
if
(
cards
.
Count
()
>
0
)
AI
.
SelectCard
(
cards
);
else
{
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Scarecrow
))
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Scarecrow
))
{
tributeId
=
CardId
.
Scarecrow
;
}
{
tributeId
=
CardId
.
Scarecrow
;
}
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
))
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
))
{
tributeId
=
CardId
.
Soulpiercer
;
}
{
tributeId
=
CardId
.
Soulpiercer
;
}
AI
.
SelectCard
(
tributeId
);
AI
.
SelectCard
(
tributeId
);
}
return
Bot
.
HasInMonstersZone
(
new
[]
{
return
Bot
.
HasInMonstersZone
(
new
[]
{
CardId
.
Scarecrow
,
CardId
.
Scarecrow
,
CardId
.
Soulpiercer
,
CardId
.
Soulpiercer
,
...
@@ -932,9 +966,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -932,9 +966,9 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
int
tributeId
=
-
1
;
int
tributeId
=
-
1
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Masurawo
))
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Masurawo
))
{
tributeId
=
CardId
.
Masurawo
;
}
{
tributeId
=
CardId
.
Masurawo
;
}
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Sarutobi
))
else
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Sarutobi
))
{
tributeId
=
CardId
.
Sarutobi
;
}
{
tributeId
=
CardId
.
Sarutobi
;
}
AI
.
SelectCard
(
tributeId
);
AI
.
SelectCard
(
tributeId
);
return
Bot
.
HasInMonstersZone
(
new
[]
{
return
Bot
.
HasInMonstersZone
(
new
[]
{
CardId
.
Masurawo
,
CardId
.
Masurawo
,
...
@@ -947,11 +981,11 @@ namespace WindBot.Game.AI.Decks
...
@@ -947,11 +981,11 @@ namespace WindBot.Game.AI.Decks
{
{
int
tributeId
=
-
1
;
int
tributeId
=
-
1
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
))
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
))
{
tributeId
=
CardId
.
Wakaushi
;
}
{
tributeId
=
CardId
.
Wakaushi
;
}
else
if
(
Bot
.
HasInGraveyard
(
CardId
.
Soulpiercer
)
||
!
activate_Scales
)
else
if
(
Bot
.
HasInGraveyard
(
CardId
.
Soulpiercer
)
||
!
activate_Scales
)
{
tributeId
=
CardId
.
Scales
;
}
{
tributeId
=
CardId
.
Scales
;
}
else
if
(!
Bot
.
HasInGraveyard
(
CardId
.
Soulpiercer
)
||
activate_Scales
)
else
if
(!
Bot
.
HasInGraveyard
(
CardId
.
Soulpiercer
)
||
activate_Scales
)
{
tributeId
=
CardId
.
Soulpiercer
;
}
{
tributeId
=
CardId
.
Soulpiercer
;
}
AI
.
SelectCard
(
tributeId
);
AI
.
SelectCard
(
tributeId
);
activate_Soulpeacemaker
=
true
;
activate_Soulpeacemaker
=
true
;
return
true
;
return
true
;
...
@@ -962,14 +996,10 @@ namespace WindBot.Game.AI.Decks
...
@@ -962,14 +996,10 @@ namespace WindBot.Game.AI.Decks
{
{
if
((
Bot
.
MonsterZone
[
4
]
!=
null
&&
Bot
.
MonsterZone
[
4
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
4
].
Id
))
&&
(
Bot
.
MonsterZone
[
0
]
!=
null
&&
Bot
.
MonsterZone
[
0
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
0
].
Id
)))
if
((
Bot
.
MonsterZone
[
4
]
!=
null
&&
Bot
.
MonsterZone
[
4
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
4
].
Id
))
&&
(
Bot
.
MonsterZone
[
0
]
!=
null
&&
Bot
.
MonsterZone
[
0
].
Controller
==
0
&&
!
FinalCards
(
Bot
.
MonsterZone
[
0
].
Id
)))
return
false
;
return
false
;
int
CardCount
=
0
;
List
<
ClientCard
>
Pcards
=
GetZoneCards
(
CardLocation
.
Hand
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
HasSetcode
(
0x9a
)
&&
card
.
Level
>
1
&&
card
.
Level
<
8
).
ToList
();
foreach
(
ClientCard
card
in
Bot
.
Hand
.
GetMonsters
())
if
(
Pcards
.
Count
()
<
2
&&
!
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
))
return
false
;
{
List
<
ClientCard
>
Rcards
=
GetZoneCards
(
CardLocation
.
Removed
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
Id
==
CardId
.
Regulus
).
ToList
();
if
(
card
.
HasRace
(
CardRace
.
Machine
)
&&
(
card
.
Level
>=
2
&&
card
.
Level
<=
7
))
if
(
Bot
.
HasInHand
(
CardId
.
Regulus
)
||
Bot
.
HasInGraveyard
(
CardId
.
Regulus
)
||
Bot
.
HasInSpellZone
(
CardId
.
Regulus
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Regulus
)
||
Rcards
.
Count
()
>
0
)
return
false
;
{
CardCount
++;
}
}
if
(
CardCount
<
2
&&
!
Bot
.
HasInMonstersZone
(
CardId
.
Soulpiercer
))
{
return
false
;
}
if
(
Bot
.
HasInHand
(
CardId
.
Regulus
)
||
Bot
.
HasInGraveyard
(
CardId
.
Regulus
)
||
Bot
.
HasInSpellZone
(
CardId
.
Regulus
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Regulus
))
return
false
;
bool
linkchk
=
false
;
bool
linkchk
=
false
;
List
<
ClientCard
>
materials
=
new
List
<
ClientCard
>();
List
<
ClientCard
>
materials
=
new
List
<
ClientCard
>();
if
(
Bot
.
MonsterZone
[
6
]
!=
null
&&
Bot
.
MonsterZone
[
6
].
Controller
==
0
&&
Bot
.
MonsterZone
[
6
].
Id
!=
CardId
.
Scarecrow
&&
!
FinalCards
(
Bot
.
MonsterZone
[
6
].
Id
))
if
(
Bot
.
MonsterZone
[
6
]
!=
null
&&
Bot
.
MonsterZone
[
6
].
Controller
==
0
&&
Bot
.
MonsterZone
[
6
].
Id
!=
CardId
.
Scarecrow
&&
!
FinalCards
(
Bot
.
MonsterZone
[
6
].
Id
))
...
@@ -988,13 +1018,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -988,13 +1018,13 @@ namespace WindBot.Game.AI.Decks
if
(
card
==
null
||
FinalCards
(
card
.
Id
))
continue
;
if
(
card
==
null
||
FinalCards
(
card
.
Id
))
continue
;
else
materials
.
Add
(
card
);
else
materials
.
Add
(
card
);
}
}
if
(
materials
.
Count
<=
1
)
return
false
;
if
(
materials
.
Count
<=
1
)
return
false
;
AI
.
SelectMaterials
(
materials
);
AI
.
SelectMaterials
(
materials
);
return
((
Bot
.
GetMonstersInExtraZone
().
Count
==
0
||
linkchk
)
&&
!
p_summoned
&&
!
activate_Genius
);
return
((
Bot
.
GetMonstersInExtraZone
().
Count
==
0
||
linkchk
)
&&
!
p_summoned
&&
!
activate_Genius
);
}
}
private
bool
GeniusFunction
()
private
bool
GeniusFunction
()
{
{
if
(
ActivateDescription
==
Util
.
GetStringId
(
CardId
.
Genius
,
1
))
if
(
ActivateDescription
==
Util
.
GetStringId
(
CardId
.
Genius
,
1
))
{
{
AI
.
SelectCard
(
CardId
.
Regulus
);
AI
.
SelectCard
(
CardId
.
Regulus
);
activate_Genius
=
true
;
activate_Genius
=
true
;
...
@@ -1022,7 +1052,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1022,7 +1052,7 @@ namespace WindBot.Game.AI.Decks
foreach
(
var
card
in
TunrerCards
)
foreach
(
var
card
in
TunrerCards
)
{
{
if
(
card
==
null
)
continue
;
if
(
card
==
null
)
continue
;
else
if
(
materials
.
Count
(
ccard
=>
ccard
!=
null
&&
ccard
.
Id
==
card
.
Id
)
<=
0
)
materials
.
Add
(
card
);
else
if
(
materials
.
Count
(
ccard
=>
ccard
!=
null
&&
ccard
.
Id
==
card
.
Id
)
<=
0
)
materials
.
Add
(
card
);
}
}
}
}
else
else
...
@@ -1030,20 +1060,37 @@ namespace WindBot.Game.AI.Decks
...
@@ -1030,20 +1060,37 @@ namespace WindBot.Game.AI.Decks
foreach
(
var
card
in
UnTunrercards
)
foreach
(
var
card
in
UnTunrercards
)
{
{
if
(
card
==
null
)
continue
;
if
(
card
==
null
)
continue
;
else
if
(
materials
.
Count
(
ccard
=>
ccard
!=
null
&&
ccard
.
Id
==
card
.
Id
)
<=
0
)
materials
.
Add
(
card
);
else
if
(
materials
.
Count
(
ccard
=>
ccard
!=
null
&&
ccard
.
Id
==
card
.
Id
)
<=
0
)
materials
.
Add
(
card
);
}
}
}
}
if
(
materials
.
Count
<=
1
)
return
false
;
if
(
materials
.
Count
<=
1
)
return
false
;
AI
.
SelectMaterials
(
materials
);
AI
.
SelectMaterials
(
materials
);
summon_Elf
=
true
;
summon_Elf
=
true
;
return
true
;
return
true
;
}
}
private
bool
ElfFunction
()
private
bool
ElfFunction
()
{
if
(
Duel
.
Player
==
0
)
{
activate_Elf
=
true
;
AI
.
SelectCard
(
CardId
.
Motorbike
);
return
Bot
.
HasInGraveyard
(
CardId
.
Motorbike
);
}
List
<
ClientCard
>
cards1
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Enemy
);
List
<
ClientCard
>
cards2
=
GetZoneCards
(
CardLocation
.
SpellZone
,
Enemy
);
if
(
cards1
.
Count
()
>
0
||
cards2
.
Count
()
>=
3
)
{
if
(
Bot
.
HasInExtra
(
CardId
.
Unicorn
)
&&
Bot
.
HasInGraveyard
(
CardId
.
IP
))
AI
.
SelectCard
(
CardId
.
IP
);
else
{
{
AI
.
SelectCard
(
CardId
.
Motorbike
);
AI
.
SelectCard
(
CardId
.
Motorbike
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
}
activate_Elf
=
true
;
activate_Elf
=
true
;
return
Bot
.
HasInGraveyard
(
CardId
.
Motorbike
);
return
Bot
.
HasInGraveyard
(
CardId
.
Motorbike
)
||
Bot
.
HasInGraveyard
(
CardId
.
IP
);
}
return
false
;
}
}
private
bool
RegulusFunction
()
private
bool
RegulusFunction
()
{
{
...
@@ -1051,9 +1098,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -1051,9 +1098,9 @@ namespace WindBot.Game.AI.Decks
{
{
int
tributeId
=
-
1
;
int
tributeId
=
-
1
;
if
(
Bot
.
HasInGraveyard
(
CardId
.
Soulpiercer
))
if
(
Bot
.
HasInGraveyard
(
CardId
.
Soulpiercer
))
{
tributeId
=
CardId
.
Soulpiercer
;
}
{
tributeId
=
CardId
.
Soulpiercer
;
}
else
if
(
Bot
.
HasInGraveyard
(
CardId
.
Motorbike
))
else
if
(
Bot
.
HasInGraveyard
(
CardId
.
Motorbike
))
{
tributeId
=
CardId
.
Motorbike
;
}
{
tributeId
=
CardId
.
Motorbike
;
}
AI
.
SelectCard
(
tributeId
);
AI
.
SelectCard
(
tributeId
);
activate_Genius
=
true
;
activate_Genius
=
true
;
return
true
;
return
true
;
...
@@ -1094,9 +1141,19 @@ namespace WindBot.Game.AI.Decks
...
@@ -1094,9 +1141,19 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
IPLinkFunction
()
private
bool
IPLinkFunction
()
{
{
List
<
ClientCard
>
cards
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()
&&
card
.
Id
!=
CardId
.
Scarecrow
&&
(
card
.
Id
!=
CardId
.
Elf
||
(
card
.
Id
==
CardId
.
Elf
&&
!
summon_Elf
))
&&
!
FinalCards
(
card
.
Id
)).
ToList
();
List
<
ClientCard
>
materials
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()
&&
card
.
Id
!=
CardId
.
Scarecrow
&&
(
card
.
Id
!=
CardId
.
Elf
||
(
card
.
Id
==
CardId
.
Elf
&&
!
summon_Elf
))
&&
!
FinalCards
(
card
.
Id
)).
ToList
();
if
(
cards
.
Count
<=
1
)
return
false
;
if
(
materials
.
Count
<=
1
)
return
false
;
AI
.
SelectMaterials
(
cards
);
if
(
Bot
.
MonsterZone
[
6
]
!=
null
&&
Bot
.
MonsterZone
[
6
].
Controller
==
0
&&
Bot
.
MonsterZone
[
6
].
HasType
(
CardType
.
Link
))
{
if
(
Bot
.
MonsterZone
[
2
]
!=
null
&&
FinalCards
(
Bot
.
MonsterZone
[
2
].
Id
)
&&
Bot
.
MonsterZone
[
4
]
!=
null
&&
FinalCards
(
Bot
.
MonsterZone
[
4
].
Id
))
return
false
;
}
else
if
(
Bot
.
MonsterZone
[
5
]
!=
null
&&
Bot
.
MonsterZone
[
5
].
Controller
==
0
&&
Bot
.
MonsterZone
[
5
].
HasType
(
CardType
.
Link
))
{
if
(
Bot
.
MonsterZone
[
2
]
!=
null
&&
FinalCards
(
Bot
.
MonsterZone
[
2
].
Id
)
&&
Bot
.
MonsterZone
[
0
]
!=
null
&&
FinalCards
(
Bot
.
MonsterZone
[
0
].
Id
))
return
false
;
}
AI
.
SelectMaterials
(
materials
);
return
true
;
return
true
;
}
}
private
bool
IPFunction
()
private
bool
IPFunction
()
...
@@ -1105,9 +1162,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -1105,9 +1162,9 @@ namespace WindBot.Game.AI.Decks
if
(
Bot
.
HasInExtra
(
CardId
.
Unicorn
))
if
(
Bot
.
HasInExtra
(
CardId
.
Unicorn
))
{
{
List
<
ClientCard
>
material
=
new
List
<
ClientCard
>();
List
<
ClientCard
>
material
=
new
List
<
ClientCard
>();
List
<
ClientCard
>
cards
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
!=
Card
&&
card
.
IsFaceup
()
&&
!
FinalCards
(
card
.
Id
)
&&
card
.
Id
!=
CardId
.
IP
&&
card
.
Id
!=
CardId
.
Scarecrow
).
ToList
();
List
<
ClientCard
>
cards
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Bot
).
Where
(
card
=>
card
!=
null
&&
card
!=
Card
&&
card
.
IsFaceup
()
&&
!
FinalCards
(
card
.
Id
)
&&
card
.
Id
!=
CardId
.
IP
&&
card
.
Id
!=
CardId
.
Scarecrow
).
ToList
();
List
<
ClientCard
>
Enemycards
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Enemy
);
List
<
ClientCard
>
Enemycards
=
GetZoneCards
(
CardLocation
.
MonsterZone
,
Enemy
);
if
(
activate_Sarutobi
)
Enemycards
=
GetZoneCards
(
CardLocation
.
Onfield
,
Enemy
);
if
(
activate_Sarutobi
)
Enemycards
=
GetZoneCards
(
CardLocation
.
Onfield
,
Enemy
);
if
(
Bot
.
Hand
.
Count
==
0
||
Enemycards
.
Count
(
card
=>
card
!=
null
&&
!
card
.
IsShouldNotBeTarget
())
==
0
||
cards
.
Count
==
0
)
return
false
;
if
(
Bot
.
Hand
.
Count
==
0
||
Enemycards
.
Count
(
card
=>
card
!=
null
&&
!
card
.
IsShouldNotBeTarget
())
==
0
||
cards
.
Count
==
0
)
return
false
;
bool
linkchk
=
false
;
bool
linkchk
=
false
;
foreach
(
var
card
in
cards
)
foreach
(
var
card
in
cards
)
...
@@ -1120,7 +1177,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1120,7 +1177,7 @@ namespace WindBot.Game.AI.Decks
}
}
}
}
AI
.
SelectCard
(
CardId
.
Unicorn
);
AI
.
SelectCard
(
CardId
.
Unicorn
);
material
.
Insert
(
0
,
Card
);
material
.
Insert
(
0
,
Card
);
AI
.
SelectMaterials
(
material
);
AI
.
SelectMaterials
(
material
);
if
(!
to_deck
)
to_deck
=
true
;
if
(!
to_deck
)
to_deck
=
true
;
return
linkchk
;
return
linkchk
;
...
@@ -1129,7 +1186,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -1129,7 +1186,7 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
SarutobiFunction
()
private
bool
SarutobiFunction
()
{
{
List
<
ClientCard
>
Enemycards
=
GetZoneCards
(
CardLocation
.
SpellZone
,
Enemy
);
List
<
ClientCard
>
Enemycards
=
GetZoneCards
(
CardLocation
.
SpellZone
,
Enemy
);
if
(
Enemycards
.
Count
(
card
=>
card
!=
null
&&
!
card
.
IsShouldNotBeTarget
())
==
0
||
to_deck
)
return
false
;
if
(
Enemycards
.
Count
(
card
=>
card
!=
null
&&
!
card
.
IsShouldNotBeTarget
())
==
0
||
to_deck
)
return
false
;
AI
.
SelectCard
(
Enemycards
);
AI
.
SelectCard
(
Enemycards
);
activate_Sarutobi
=
true
;
activate_Sarutobi
=
true
;
...
...
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