Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
W
windbot
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
HiiragiGuardians
windbot
Commits
4e48f5fc
Commit
4e48f5fc
authored
Apr 10, 2018
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/IceYGO/windbot
parents
4b080580
5c585506
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
461 additions
and
220 deletions
+461
-220
Decks/AI_ChainBurn.ydk
Decks/AI_ChainBurn.ydk
+3
-3
Game/AI/Decks/ChainBurnExecutor.cs
Game/AI/Decks/ChainBurnExecutor.cs
+150
-60
Game/AI/Decks/LightswornShaddoldinosourExecutor.cs
Game/AI/Decks/LightswornShaddoldinosourExecutor.cs
+308
-157
No files found.
Decks/AI_ChainBurn.ydk
View file @
4e48f5fc
...
@@ -37,7 +37,6 @@
...
@@ -37,7 +37,6 @@
36361633
36361633
36361633
36361633
36361633
36361633
36468556
37576645
37576645
37576645
37576645
37576645
37576645
...
@@ -52,7 +51,6 @@
...
@@ -52,7 +51,6 @@
75249652
75249652
83555666
83555666
98444741
98444741
98444741
#extra
#extra
41999284
41999284
41999284
41999284
...
@@ -65,4 +63,6 @@
...
@@ -65,4 +63,6 @@
98444741
98444741
100227025
100227025
100227025
100227025
100227025
100227025
\ No newline at end of file
36468556
98444741
\ No newline at end of file
Game/AI/Decks/ChainBurnExecutor.cs
View file @
4e48f5fc
...
@@ -62,6 +62,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -62,6 +62,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
Waboku
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
Waboku
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ThreateningRoar
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ThreateningRoar
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
BlazingMirrorForce
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
BlazingMirrorForce
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
OjamaTrio
,
OjamaTrioset
);
AddExecutor
(
ExecutorType
.
SpellSet
,
BrunSpellSet
);
AddExecutor
(
ExecutorType
.
SpellSet
,
BrunSpellSet
);
//afer set
//afer set
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CardcarD
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CardcarD
);
...
@@ -69,8 +70,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -69,8 +70,7 @@ namespace WindBot.Game.AI.Decks
//activate trap
//activate trap
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
BalanceOfJudgment
,
BalanceOfJudgmenteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
BalanceOfJudgment
,
BalanceOfJudgmenteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AccuulatedFortune
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AccuulatedFortune
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ChainStrike
,
ChainStrikeeff
);
//battle
//battle
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ThreateningRoar
,
ThreateningRoareff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ThreateningRoar
,
ThreateningRoareff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Waboku
,
Wabokueff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Waboku
,
Wabokueff
);
...
@@ -85,7 +85,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -85,7 +85,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SecretBlast
,
SecretBlasteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SecretBlast
,
SecretBlasteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SectetBarrel
,
SectetBarreleff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SectetBarrel
,
SectetBarreleff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RecklessGreed
,
RecklessGreedeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RecklessGreed
,
RecklessGreedeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ChainStrike
,
ChainStrikeeff
);
//sp
//sp
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Linkuriboh
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Linkuriboh
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Linkuriboh
,
Linkuriboheff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Linkuriboh
,
Linkuriboheff
);
...
@@ -129,15 +129,15 @@ namespace WindBot.Game.AI.Decks
...
@@ -129,15 +129,15 @@ namespace WindBot.Game.AI.Decks
CardId
.
Waboku
,
CardId
.
Waboku
,
CardId
.
ThreateningRoar
,
CardId
.
ThreateningRoar
,
CardId
.
MagicCylinder
,
CardId
.
MagicCylinder
,
CardId
.
RingOfDestruction
,
CardId
.
RingOfDestruction
,
CardId
.
RecklessGreed
,
CardId
.
RecklessGreed
,
CardId
.
SecretBlast
,
CardId
.
SecretBlast
,
CardId
.
JustDesserts
,
CardId
.
JustDesserts
,
CardId
.
OjamaTrio
,
CardId
.
OjamaTrio
,
CardId
.
SectetBarrel
,
CardId
.
SectetBarrel
,
CardId
.
Ceasefire
,
CardId
.
Ceasefire
,
CardId
.
BalanceOfJudgment
,
CardId
.
BalanceOfJudgment
,
CardId
.
AccuulatedFortune
,
CardId
.
AccuulatedFortune
,
};
};
}
}
public
int
[]
AbouluteKingBackJack_List_2
()
public
int
[]
AbouluteKingBackJack_List_2
()
...
@@ -148,7 +148,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -148,7 +148,7 @@ namespace WindBot.Game.AI.Decks
CardId
.
Mathematician
,
CardId
.
Mathematician
,
CardId
.
DiceJar
,
CardId
.
DiceJar
,
CardId
.
CardcarD
,
CardId
.
CardcarD
,
CardId
.
BattleFader
,
CardId
.
BattleFader
,
CardId
.
BlazingMirrorForce
,
CardId
.
BlazingMirrorForce
,
CardId
.
Waboku
,
CardId
.
Waboku
,
CardId
.
ThreateningRoar
,
CardId
.
ThreateningRoar
,
...
@@ -168,7 +168,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -168,7 +168,7 @@ namespace WindBot.Game.AI.Decks
{
{
return
new
[]
return
new
[]
{
{
CardId
.
Waboku
,
CardId
.
Waboku
,
CardId
.
SecretBlast
,
CardId
.
SecretBlast
,
CardId
.
JustDesserts
,
CardId
.
JustDesserts
,
...
@@ -177,7 +177,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -177,7 +177,7 @@ namespace WindBot.Game.AI.Decks
CardId
.
Ceasefire
,
CardId
.
Ceasefire
,
CardId
.
RecklessGreed
,
CardId
.
RecklessGreed
,
CardId
.
RingOfDestruction
,
CardId
.
RingOfDestruction
,
};
};
}
}
...
@@ -216,17 +216,25 @@ namespace WindBot.Game.AI.Decks
...
@@ -216,17 +216,25 @@ namespace WindBot.Game.AI.Decks
id
==
CardId
.
RingOfDestruction
id
==
CardId
.
RingOfDestruction
);
);
}
}
bool
pot_used
=
false
;
bool
no_sp
=
false
;
bool
one_turn_kill
=
false
;
bool
one_turn_kill
=
false
;
bool
one_turn_kill_1
=
false
;
int
expected_blood
=
0
;
int
expected_blood
=
0
;
bool
prevent_used
=
false
;
bool
prevent_used
=
false
;
int
preventcount
=
0
;
int
preventcount
=
0
;
bool
battleprevent
=
false
;
bool
battleprevent
=
false
;
bool
OjamaTrioused
=
false
;
bool
OjamaTrioused
=
false
;
bool
HasAccuulatedFortune
=
false
;
bool
OjamaTrioused_draw
=
false
;
bool
drawfirst
=
false
;
int
Waboku_count
=
0
;
int
Roar_count
=
0
;
int
strike_count
=
0
;
int
greed_count
=
0
;
int
blast_count
=
0
;
int
blast_count
=
0
;
int
barrel_count
=
0
;
int
barrel_count
=
0
;
int
just_count
=
0
;
int
just_count
=
0
;
int
Ojama_count
=
0
;
int
HasAccuulatedFortune
=
0
;
public
override
bool
OnSelectHand
()
public
override
bool
OnSelectHand
()
{
{
return
true
;
return
true
;
...
@@ -234,25 +242,22 @@ namespace WindBot.Game.AI.Decks
...
@@ -234,25 +242,22 @@ namespace WindBot.Game.AI.Decks
public
override
void
OnNewTurn
()
public
override
void
OnNewTurn
()
{
{
pot_used
=
false
;
no_sp
=
false
;
prevent_used
=
false
;
prevent_used
=
false
;
battleprevent
=
false
;
battleprevent
=
false
;
OjamaTrioused
=
false
;
}
}
public
override
void
OnNewPhase
()
public
override
void
OnNewPhase
()
{
{
preventcount
=
0
;
preventcount
=
0
;
battleprevent
=
false
;
battleprevent
=
false
;
HasAccuulatedFortune
=
false
;
OjamaTrioused
=
false
;
IList
<
ClientCard
>
trap
=
Bot
.
SpellZone
;
IList
<
ClientCard
>
trap
=
Bot
.
SpellZone
;
IList
<
ClientCard
>
monster
=
Bot
.
MonsterZone
;
IList
<
ClientCard
>
monster
=
Bot
.
MonsterZone
;
foreach
(
ClientCard
card
in
trap
)
{
if
(
card
.
Id
==
CardId
.
AccuulatedFortune
)
HasAccuulatedFortune
=
true
;
}
foreach
(
ClientCard
card
in
trap
)
foreach
(
ClientCard
card
in
trap
)
{
{
if
(
Has_prevent_list
(
card
.
Id
))
if
(
Has_prevent_list
(
card
.
Id
))
...
@@ -271,36 +276,98 @@ namespace WindBot.Game.AI.Decks
...
@@ -271,36 +276,98 @@ namespace WindBot.Game.AI.Decks
}
}
}
}
expected_blood
=
0
;
expected_blood
=
0
;
one_turn_kill
=
false
;
one_turn_kill
=
false
;
one_turn_kill_1
=
false
;
OjamaTrioused_draw
=
false
;
drawfirst
=
false
;
HasAccuulatedFortune
=
0
;
strike_count
=
0
;
greed_count
=
0
;
blast_count
=
0
;
blast_count
=
0
;
barrel_count
=
0
;
barrel_count
=
0
;
just_count
=
0
;
just_count
=
0
;
Waboku_count
=
0
;
Roar_count
=
0
;
Ojama_count
=
0
;
IList
<
ClientCard
>
check
=
Bot
.
SpellZone
;
IList
<
ClientCard
>
check
=
Bot
.
SpellZone
;
foreach
(
ClientCard
card
in
check
)
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
AccuulatedFortune
)
HasAccuulatedFortune
++;
}
foreach
(
ClientCard
card
in
check
)
{
{
if
(
card
.
Id
==
CardId
.
SecretBlast
)
if
(
card
.
Id
==
CardId
.
SecretBlast
)
blast_count
++;
blast_count
++;
break
;
}
}
foreach
(
ClientCard
card
in
check
)
foreach
(
ClientCard
card
in
check
)
{
{
if
(
card
.
Id
==
CardId
.
SectetBarrel
)
if
(
card
.
Id
==
CardId
.
SectetBarrel
)
barrel_count
++;
barrel_count
++;
break
;
}
}
foreach
(
ClientCard
card
in
check
)
foreach
(
ClientCard
card
in
check
)
{
{
if
(
card
.
Id
==
CardId
.
JustDesserts
)
if
(
card
.
Id
==
CardId
.
JustDesserts
)
just_count
++;
just_count
++;
break
;
}
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
ChainStrike
)
strike_count
++;
}
foreach
(
ClientCard
card
in
Bot
.
GetSpells
())
{
if
(
card
.
Id
==
CardId
.
RecklessGreed
)
greed_count
++;
}
}
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
Waboku
)
Waboku_count
++;
}
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
ThreateningRoar
)
Roar_count
++;
}
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
Enemy
.
GetMonsterCount
()
<=
2
&&
Enemy
.
GetMonsterCount
()
>=
1
)
{
if
(
HasAccuulatedFortune
>
0
)
OjamaTrioused_draw
=
true
;
}
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
);
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
);
if
(
Enemy
.
LifePoints
<=
expected_blood
)
if
(
Enemy
.
LifePoints
<=
expected_blood
)
one_turn_kill
=
true
;
one_turn_kill
=
true
;
if
(
greed_count
>=
2
)
greed_count
=
1
;
if
(
blast_count
>=
2
)
blast_count
=
1
;
if
(
just_count
>=
2
)
just_count
=
1
;
if
(
barrel_count
>=
2
)
barrel_count
=
1
;
if
(
Waboku_count
>=
2
)
Waboku_count
=
1
;
if
(
Roar_count
>=
2
)
Roar_count
=
1
;
if
(
strike_count
>=
2
)
strike_count
=
1
;
int
currentchain
=
0
;
if
(
OjamaTrioused_draw
)
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
+
Waboku_count
+
Waboku_count
+
Roar_count
+
greed_count
+
strike_count
+
Ojama_count
;
else
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
+
Waboku_count
+
Waboku_count
+
greed_count
+
Roar_count
+
strike_count
;
if
(
currentchain
>=
3
)
drawfirst
=
true
;
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
;
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
+(
currentchain
+
1
)*
400
);
if
(
Enemy
.
LifePoints
<=
expected_blood
)
one_turn_kill_1
=
true
;
}
}
private
bool
must_chain
()
private
bool
must_chain
()
{
{
if
(
AI
.
Utils
.
IsChainTarget
(
Card
))
return
true
;
if
(
AI
.
Utils
.
IsChainTarget
(
Card
))
return
true
;
...
@@ -325,7 +392,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -325,7 +392,7 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
AbouluteKingBackJacksummon
()
private
bool
AbouluteKingBackJacksummon
()
{
{
return
!
pot_used
;
return
!
no_sp
;
}
}
private
bool
AbouluteKingBackJackeff
()
private
bool
AbouluteKingBackJackeff
()
{
{
...
@@ -335,13 +402,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -335,13 +402,13 @@ namespace WindBot.Game.AI.Decks
AI
.
SelectCard
(
AbouluteKingBackJack_List_1
());
AI
.
SelectCard
(
AbouluteKingBackJack_List_1
());
AI
.
SelectNextCard
(
AbouluteKingBackJack_List_2
());
AI
.
SelectNextCard
(
AbouluteKingBackJack_List_2
());
}
}
return
true
;
return
true
;
}
}
private
bool
PotOfDualityeff
()
private
bool
PotOfDualityeff
()
{
{
pot_used
=
true
;
no_sp
=
true
;
AI
.
SelectCard
(
prevent_list
());
AI
.
SelectCard
(
prevent_list
());
return
true
;
return
true
;
}
}
...
@@ -354,25 +421,28 @@ namespace WindBot.Game.AI.Decks
...
@@ -354,25 +421,28 @@ namespace WindBot.Game.AI.Decks
list
.
Add
(
monster
);
list
.
Add
(
monster
);
}
}
//if (GetTotalATK(list) / 2 >= Bot.LifePoints) return false;
//if (GetTotalATK(list) / 2 >= Bot.LifePoints) return false;
if
(
GetTotalATK
(
list
)
<
3000
)
return
false
;
if
(
GetTotalATK
(
list
)
<
3000
)
return
false
;
return
Enemy
.
HasAttackingMonster
()
&&
DefaultUniqueTrap
();
return
Enemy
.
HasAttackingMonster
()
&&
DefaultUniqueTrap
();
}
}
private
bool
ThreateningRoareff
()
private
bool
ThreateningRoareff
()
{
{
if
(
drawfirst
)
return
true
;
if
(
must_chain
())
return
true
;
if
(
must_chain
())
return
true
;
if
(
prevent_used
||
Duel
.
Phase
==
DuelPhase
.
End
||
Duel
.
Phase
==
DuelPhase
.
Main2
)
return
false
;
if
(
prevent_used
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
prevent_used
=
true
;
prevent_used
=
true
;
return
DefaultUniqueTrap
();
return
DefaultUniqueTrap
();
}
}
private
bool
SandaionTheTimloardeff
()
private
bool
SandaionTheTimloardeff
()
{
{
prevent_used
=
true
;
prevent_used
=
true
;
return
true
;
return
true
;
}
}
private
bool
Wabokueff
()
private
bool
Wabokueff
()
{
{
if
(
drawfirst
)
return
true
;
if
(
must_chain
())
return
true
;
if
(
must_chain
())
return
true
;
if
(
drawfirst
)
return
true
;
if
(
prevent_used
||
Duel
.
Player
==
0
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
if
(
prevent_used
||
Duel
.
Player
==
0
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
prevent_used
=
true
;
prevent_used
=
true
;
return
DefaultUniqueTrap
();
return
DefaultUniqueTrap
();
...
@@ -409,22 +479,18 @@ namespace WindBot.Game.AI.Decks
...
@@ -409,22 +479,18 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
RecklessGreedeff
()
private
bool
RecklessGreedeff
()
{
{
int
count
=
0
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
IList
<
ClientCard
>
check
=
Bot
.
SpellZone
;
if
(
must_chain
()
&&
greed_count
>
1
)
return
true
;
foreach
(
ClientCard
card
in
check
)
if
(
greed_count
>
1
)
return
true
;
{
if
(
card
.
Id
==
CardId
.
RecklessGreed
)
count
++;
break
;
}
if
(
count
>
1
)
return
true
;
if
(
Bot
.
LifePoints
<=
2000
)
return
true
;
if
(
Bot
.
LifePoints
<=
2000
)
return
true
;
if
(
Bot
.
GetHandCount
()
<
1
&&
Duel
.
Player
==
0
&&
Duel
.
Phase
!=
DuelPhase
.
Standby
)
return
true
;
if
(
Bot
.
GetHandCount
()
<
1
&&
Duel
.
Player
==
0
&&
Duel
.
Phase
!=
DuelPhase
.
Standby
)
return
true
;
return
false
;
return
false
;
}
}
private
bool
SectetBarreleff
()
private
bool
SectetBarreleff
()
{
{
if
(
one_turn_kill
)
return
true
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
if
(
must_chain
())
return
true
;
int
count
=
Enemy
.
GetFieldHandCount
();
int
count
=
Enemy
.
GetFieldHandCount
();
if
(
Enemy
.
LifePoints
<
count
*
200
)
return
true
;
if
(
Enemy
.
LifePoints
<
count
*
200
)
return
true
;
...
@@ -433,21 +499,31 @@ namespace WindBot.Game.AI.Decks
...
@@ -433,21 +499,31 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
SecretBlasteff
()
private
bool
SecretBlasteff
()
{
{
if
(
one_turn_kill
)
return
true
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
if
(
must_chain
())
return
true
;
int
count
=
Enemy
.
GetFieldCount
();
int
count
=
Enemy
.
GetFieldCount
();
if
(
Enemy
.
LifePoints
<
count
*
300
)
return
true
;
if
(
Enemy
.
LifePoints
<
count
*
300
)
return
true
;
if
(
count
>=
5
)
return
true
;
if
(
count
>=
5
)
return
true
;
return
false
;
return
false
;
}
private
bool
OjamaTrioset
()
{
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
))
return
false
;
return
true
;
}
}
private
bool
OjamaTrioeff
()
private
bool
OjamaTrioeff
()
{
{
return
OjamaTrioused
;
return
OjamaTrioused
||
OjamaTrioused_draw
;
}
}
private
bool
JustDessertseff
()
private
bool
JustDessertseff
()
{
{
if
(
one_turn_kill
)
return
true
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
if
(
must_chain
())
return
true
;
int
count
=
Enemy
.
GetMonsterCount
();
int
count
=
Enemy
.
GetMonsterCount
();
if
(
Enemy
.
LifePoints
<=
count
*
500
)
return
true
;
if
(
Enemy
.
LifePoints
<=
count
*
500
)
return
true
;
...
@@ -461,13 +537,15 @@ namespace WindBot.Game.AI.Decks
...
@@ -461,13 +537,15 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
ChainStrikeeff
()
private
bool
ChainStrikeeff
()
{
{
if
(
drawfirst
)
return
true
;
if
(
must_chain
())
return
true
;
if
(
must_chain
())
return
true
;
int
chain
=
Duel
.
CurrentChain
.
Count
;
int
chain
=
Duel
.
CurrentChain
.
Count
;
if
(
strike_count
>=
2
&&
chain
>=
2
)
return
true
;
if
(
Enemy
.
LifePoints
<=
(
chain
+
1
)
*
400
)
return
true
;
if
(
Enemy
.
LifePoints
<=
(
chain
+
1
)
*
400
)
return
true
;
if
(
Duel
.
CurrentChain
.
Count
>=
3
)
return
true
;
if
(
Duel
.
CurrentChain
.
Count
>=
3
)
return
true
;
return
false
;
return
false
;
}
}
private
bool
BalanceOfJudgmenteff
()
private
bool
BalanceOfJudgmenteff
()
{
{
if
(
must_chain
())
return
true
;
if
(
must_chain
())
return
true
;
...
@@ -478,7 +556,10 @@ namespace WindBot.Game.AI.Decks
...
@@ -478,7 +556,10 @@ namespace WindBot.Game.AI.Decks
private
bool
CardOfDemiseeff
()
private
bool
CardOfDemiseeff
()
{
{
if
(
Bot
.
GetHandCount
()
==
1
&&
Bot
.
GetSpellCountWithoutField
()
<=
3
)
if
(
Bot
.
GetHandCount
()
==
1
&&
Bot
.
GetSpellCountWithoutField
()
<=
3
)
{
no_sp
=
true
;
return
true
;
return
true
;
}
return
false
;
return
false
;
}
}
private
bool
Mathematicianeff
()
private
bool
Mathematicianeff
()
...
@@ -489,13 +570,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -489,13 +570,13 @@ namespace WindBot.Game.AI.Decks
return
true
;
return
true
;
}
}
return
true
;
return
true
;
}
}
private
bool
DiceJarfacedown
()
private
bool
DiceJarfacedown
()
{
{
IList
<
ClientCard
>
check
=
Bot
.
MonsterZone
;
foreach
(
ClientCard
card
in
Bot
.
GetMonsters
())
foreach
(
ClientCard
card
in
check
)
{
{
if
(
card
.
Id
==
CardId
.
DiceJar
&&
card
.
IsFacedown
())
if
(
card
.
Id
==
CardId
.
DiceJar
&&
card
.
IsFacedown
())
return
true
;
return
true
;
...
@@ -511,8 +592,17 @@ namespace WindBot.Game.AI.Decks
...
@@ -511,8 +592,17 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
Linkuriboheff
()
private
bool
Linkuriboheff
()
{
{
return
DefaultDontChainMyself
();
ClientCard
lastchaincard
=
AI
.
Utils
.
GetLastChainCard
();
if
(
lastchaincard
==
null
)
return
true
;
if
(
lastchaincard
.
Id
==
CardId
.
Linkuriboh
)
return
false
;
return
true
;
}
public
override
bool
OnPreBattleBetween
(
ClientCard
attacker
,
ClientCard
defender
)
{
if
(
attacker
.
Id
==
CardId
.
Linkuriboh
&&
defender
.
IsFacedown
())
return
false
;
return
base
.
OnPreBattleBetween
(
attacker
,
defender
);
}
}
/*private bool SwordsOfRevealingLight()
/*private bool SwordsOfRevealingLight()
{
{
...
...
Game/AI/Decks/LightswornShaddoldinosourExecutor.cs
View file @
4e48f5fc
...
@@ -110,8 +110,17 @@ namespace WindBot.Game.AI.Decks
...
@@ -110,8 +110,17 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Lumina
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Lumina
);
//activate
//activate
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GlowUpBulb
,
GlowUpBulbeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GlowUpBulb
,
GlowUpBulbeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CrystronNeedlefiber
,
CrystronNeedlefibereff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
TG_WonderMagician
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CoralDragon
,
CoralDragoneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RedWyvern
,
RedWyverneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CrystalWingSynchroDragon
,
CrystalWingSynchroDragoneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
BlackRoseMoonlightDragon
,
BlackRoseMoonlightDragoneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Sdulldeat
,
Sdulldeateff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Michael
,
Michaeleff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ScarlightRedDragon
,
ScarlightRedDragoneff
);
//Sp Summon
//Sp Summon
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
CrystronNeedlefiber
,
CrystronNeedlefibere
sp
);
//AddExecutor(ExecutorType.SpSummon, CardId.CrystronNeedlefiber, CrystronNeedlefiber
sp);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
UltimateConductorTytanno
,
UltimateConductorTytannosp
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
UltimateConductorTytanno
,
UltimateConductorTytannosp
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
UltimateConductorTytanno
,
UltimateConductorTytannoeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
UltimateConductorTytanno
,
UltimateConductorTytannoeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
DoubleEvolutionPill
,
DoubleEvolutionPilleff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
DoubleEvolutionPill
,
DoubleEvolutionPilleff
);
...
@@ -128,11 +137,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -128,11 +137,9 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollHedgehog
,
ShaddollHedgehogeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollHedgehog
,
ShaddollHedgehogeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GiantRex
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GiantRex
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollConstruct
,
ElShaddollConstructeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollConstruct
,
ElShaddollConstructeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollGrysra
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollGrysra
,
ElShaddollGrysraeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollShekhinaga
,
ElShaddollShekhinagaeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollShekhinaga
,
ElShaddollShekhinagaeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollWinda
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollWinda
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CrystronNeedlefiber
,
CrystronNeedlefibereff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
TG_WonderMagician
);
//spellset
//spellset
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
MonsterReborn
,
spellset
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
MonsterReborn
,
spellset
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
PotOfAvarice
,
spellset
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
PotOfAvarice
,
spellset
);
...
@@ -144,7 +151,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -144,7 +151,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
infiniteTransience
,
SetIsFieldEmpty
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
infiniteTransience
,
SetIsFieldEmpty
);
//trap activate
//trap activate
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
LostWind
,
DefaultBreakthroughSkill
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
LostWind
,
DefaultBreakthroughSkill
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SinisterShadowGames
,
SinisterShadowGames
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SinisterShadowGames
,
SinisterShadowGames
eff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollCore
,
ShaddollCoreeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollCore
,
ShaddollCoreeff
);
AddExecutor
(
ExecutorType
.
Repos
,
MonsterRepos
);
AddExecutor
(
ExecutorType
.
Repos
,
MonsterRepos
);
}
}
...
@@ -224,52 +231,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -224,52 +231,7 @@ namespace WindBot.Game.AI.Decks
CrystronNeedlefibereff_used
=
false
;
CrystronNeedlefibereff_used
=
false
;
}
}
public
bool
CrystronNeedlefiberesp
()
{
if
(
CrystronNeedlefibereff_used
)
return
false
;
int
[]
materials
=
new
[]
{
CardId
.
KeeperOfDragonicMagic
,
CardId
.
Lumina
,
CardId
.
FairyTailSnow
,
CardId
.
SouleatingOviraptor
,
CardId
.
Raiden
,
CardId
.
GiantRex
,
};
if
(
Bot
.
HasInMonstersZone
(
materials
))
{
AI
.
SelectCard
(
materials
);
AI
.
SelectNextCard
(
CardId
.
GlowUpBulb
);
return
true
;
}
return
false
;
}
public
bool
CrystronNeedlefibereff
()
{
if
(
Duel
.
Player
==
0
)
{
CrystronNeedlefibereff_used
=
true
;
AI
.
SelectCard
(
new
[]
{
CardId
.
GhostOgre
,
CardId
.
GlowUpBulb
,
CardId
.
PlaguespreaderZombie
,
CardId
.
ShaddollFalco
});
return
true
;
}
else
if
(
AI
.
Utils
.
IsChainTarget
(
Card
)
||
AI
.
Utils
.
GetProblematicEnemySpell
()
!=
null
)
return
true
;
else
if
(
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
&&
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1500
,
true
))
{
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1900
,
true
))
{
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
}
else
{
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
}
return
true
;
}
return
false
;
}
private
bool
UltimateConductorTytannoeff
()
private
bool
UltimateConductorTytannoeff
()
{
{
...
@@ -452,26 +414,15 @@ namespace WindBot.Game.AI.Decks
...
@@ -452,26 +414,15 @@ namespace WindBot.Game.AI.Decks
return
Enemy
.
GetMonsterCount
()
>=
1
;
return
Enemy
.
GetMonsterCount
()
>=
1
;
}
}
private
bool
ShaddollCoreeff
()
{
if
(
Card
.
Location
==
CardLocation
.
SpellZone
)
{
if
(
Enemy
.
HasAttackingMonster
()
&&
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
)
{
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
return
true
;
}
return
false
;
}
return
true
;
}
private
bool
FairyTailSnowsummon
()
private
bool
FairyTailSnowsummon
()
{
{
return
Enemy
.
GetMonsterCount
()>=
2
;
return
Enemy
.
GetMonsterCount
()>=
2
;
}
}
private
bool
FairyTailSnoweff
()
private
bool
FairyTailSnoweff
()
{
{
...
@@ -482,6 +433,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -482,6 +433,7 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
SouleatingOviraptoreff
()
private
bool
SouleatingOviraptoreff
()
{
{
if
(!
OvertexCoatlseff_used
)
if
(!
OvertexCoatlseff_used
)
...
@@ -511,75 +463,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -511,75 +463,13 @@ namespace WindBot.Game.AI.Decks
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
ShaddollFusioneff
()
{
bool
deck_check
=
false
;
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
foreach
(
ClientCard
monster
in
monsters
)
{
if
(
monster
.
HasType
(
CardType
.
Synchro
)||
monster
.
HasType
(
CardType
.
Fusion
)||
monster
.
HasType
(
CardType
.
Xyz
))
deck_check
=
true
;
}
if
(
deck_check
)
{
AI
.
SelectCard
(
new
[]
{
CardId
.
ElShaddollConstruct
,
CardId
.
ElShaddollShekhinaga
,
CardId
.
ElShaddollGrysra
,
CardId
.
ElShaddollWinda
});
AI
.
SelectNextCard
(
new
[]
{
CardId
.
ShaddollBeast
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollHedgehog
,
CardId
.
ShaddollDragon
,
CardId
.
ShaddollFalco
,
});
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
return
true
;
}
if
(!
Bot
.
IsFieldEmpty
())
return
false
;
foreach
(
ClientCard
monster
in
Bot
.
Hand
)
{
if
(
monster
.
HasAttribute
(
CardAttribute
.
Light
))
{
AI
.
SelectCard
(
CardId
.
ElShaddollConstruct
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
return
true
;
}
}
List
<
ClientCard
>
material_1
=
Bot
.
GetMonsters
();
foreach
(
ClientCard
monster
in
material_1
)
{
if
(
monster
.
HasAttribute
(
CardAttribute
.
Light
))
{
AI
.
SelectCard
(
CardId
.
ElShaddollConstruct
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
return
true
;
}
}
return
false
;
}
private
bool
ShaddollCore
()
{
return
Bot
.
HasInGraveyard
(
CardId
.
ShaddollFusion
);
}
private
bool
AllureofDarkness
()
private
bool
AllureofDarkness
()
{
{
IList
<
ClientCard
>
materials
=
Bot
.
Hand
;
IList
<
ClientCard
>
materials
=
Bot
.
Hand
;
IList
<
ClientCard
>
check
=
new
List
<
ClientCard
>();
//
IList<ClientCard> check = new List<ClientCard>();
ClientCard
mat
=
null
;
ClientCard
mat
=
null
;
foreach
(
ClientCard
card
in
materials
)
foreach
(
ClientCard
card
in
materials
)
{
{
...
@@ -649,20 +539,14 @@ namespace WindBot.Game.AI.Decks
...
@@ -649,20 +539,14 @@ namespace WindBot.Game.AI.Decks
});
});
return
true
;
return
true
;
}
}
private
bool
SinisterShadowGames
()
{
AI
.
SelectCard
(
new
[]
{
CardId
.
ShaddollBeast
,
});
// all Shaddoll
return
true
;
}
private
bool
ElShaddollConstructeff
()
private
bool
ElShaddollConstructeff
()
{
{
/* if (Duel.Phase == DuelPhase.Battle)
if (Enemy.BattlingMonster.Attack < 2800)
return false;*/
if
(
ActivateDescription
==-
1
)
if
(
ActivateDescription
==-
1
)
{
{
AI
.
SelectCard
(
CardId
.
ShaddollSquamata
);
AI
.
SelectCard
(
CardId
.
ShaddollSquamata
);
...
@@ -679,11 +563,11 @@ namespace WindBot.Game.AI.Decks
...
@@ -679,11 +563,11 @@ namespace WindBot.Game.AI.Decks
{
{
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
CardId
.
ElShaddollConstruct
,
CardId
.
ShaddollBeast
,
CardId
.
ElShaddollShekhinaga
,
CardId
.
ElShaddollGrysra
,
CardId
.
ElShaddollWinda
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollHedgehog
,
CardId
.
ShaddollDragon
,
CardId
.
ShaddollFalco
,
}
}
);
);
}
}
...
@@ -692,6 +576,100 @@ namespace WindBot.Game.AI.Decks
...
@@ -692,6 +576,100 @@ namespace WindBot.Game.AI.Decks
}
}
return
true
;
return
true
;
}
}
private
bool
ElShaddollGrysraeff
()
{
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
return
true
;
}
private
bool
ShaddollFusioneff
()
{
bool
deck_check
=
false
;
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
foreach
(
ClientCard
monster
in
monsters
)
{
if
(
monster
.
HasType
(
CardType
.
Synchro
)
||
monster
.
HasType
(
CardType
.
Fusion
)
||
monster
.
HasType
(
CardType
.
Xyz
))
deck_check
=
true
;
}
if
(
deck_check
)
{
AI
.
SelectCard
(
new
[]
{
CardId
.
ElShaddollConstruct
,
CardId
.
ElShaddollShekhinaga
,
CardId
.
ElShaddollGrysra
,
CardId
.
ElShaddollWinda
});
AI
.
SelectNextCard
(
new
[]
{
CardId
.
ShaddollBeast
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollHedgehog
,
CardId
.
ShaddollDragon
,
CardId
.
ShaddollFalco
,
});
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
return
true
;
}
if
(!
Bot
.
IsFieldEmpty
())
return
false
;
foreach
(
ClientCard
monster
in
Bot
.
Hand
)
{
if
(
monster
.
HasAttribute
(
CardAttribute
.
Light
))
{
AI
.
SelectCard
(
CardId
.
ElShaddollConstruct
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
return
true
;
}
}
List
<
ClientCard
>
material_1
=
Bot
.
GetMonsters
();
foreach
(
ClientCard
monster
in
material_1
)
{
if
(
monster
.
HasAttribute
(
CardAttribute
.
Light
))
{
AI
.
SelectCard
(
CardId
.
ElShaddollConstruct
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
return
true
;
}
}
return
false
;
}
private
bool
SinisterShadowGameseff
()
{
AI
.
SelectCard
(
new
[]
{
CardId
.
ShaddollBeast
,
});
return
true
;
}
private
bool
ShaddollCoreeff
()
{
if
(
Card
.
Location
==
CardLocation
.
SpellZone
)
{
if
(
Enemy
.
HasAttackingMonster
()
&&
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
)
{
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
return
true
;
}
return
false
;
}
return
true
;
}
private
bool
ShaddollFalcoeff
()
private
bool
ShaddollFalcoeff
()
{
{
...
@@ -789,16 +767,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -789,16 +767,7 @@ namespace WindBot.Game.AI.Decks
return
true
;
return
true
;
}
}
private
bool
GoblindberghSummon
()
{
foreach
(
ClientCard
card
in
Bot
.
Hand
.
GetMonsters
())
{
if
(!
card
.
Equals
(
Card
)
&&
card
.
Level
==
4
)
return
true
;
}
return
false
;
}
public
bool
Hand_act_eff
()
public
bool
Hand_act_eff
()
{
{
...
@@ -806,6 +775,16 @@ namespace WindBot.Game.AI.Decks
...
@@ -806,6 +775,16 @@ namespace WindBot.Game.AI.Decks
if
(
Card
.
Id
==
CardId
.
GhostOgre
&&
Card
.
Location
==
CardLocation
.
Hand
&&
Bot
.
HasInMonstersZone
(
CardId
.
GhostOgre
))
return
false
;
if
(
Card
.
Id
==
CardId
.
GhostOgre
&&
Card
.
Location
==
CardLocation
.
Hand
&&
Bot
.
HasInMonstersZone
(
CardId
.
GhostOgre
))
return
false
;
return
(
Duel
.
LastChainPlayer
==
1
);
return
(
Duel
.
LastChainPlayer
==
1
);
}
}
//other extra
private
bool
Michaeleff
()
{
if
(
Card
.
Location
==
CardLocation
.
Grave
)
return
true
;
if
(
Bot
.
LifePoints
<=
1000
)
return
false
;
return
true
;
}
private
bool
MinervaTheExaltedEffect
()
private
bool
MinervaTheExaltedEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
...
@@ -844,14 +823,176 @@ namespace WindBot.Game.AI.Decks
...
@@ -844,14 +823,176 @@ namespace WindBot.Game.AI.Decks
return
true
;
return
true
;
}
}
}
}
public
bool
CrystronNeedlefibersp
()
{
if
(
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollConstruct
)
||
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollGrysra
)
||
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollShekhinaga
)
||
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollWinda
))
return
false
;
if
(
CrystronNeedlefibereff_used
)
return
false
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
CrystronNeedlefiber
))
return
false
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
FairyTailSnow
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Lumina
)
||
Bot
.
HasInMonstersZone
(
CardId
.
KeeperOfDragonicMagic
)
||
Bot
.
HasInMonstersZone
(
CardId
.
SouleatingOviraptor
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Raiden
)
)
{
AI
.
SelectCard
(
new
[]
{
CardId
.
KeeperOfDragonicMagic
,
CardId
.
Lumina
,
CardId
.
FairyTailSnow
,
CardId
.
SouleatingOviraptor
,
CardId
.
Raiden
,
CardId
.
GiantRex
,
});
AI
.
SelectNextCard
(
CardId
.
GlowUpBulb
);
}
return
true
;
}
public
bool
CrystronNeedlefibereff
()
{
if
(
Duel
.
Player
==
0
)
{
CrystronNeedlefibereff_used
=
true
;
AI
.
SelectCard
(
new
[]
{
CardId
.
GhostOgre
,
CardId
.
GlowUpBulb
,
CardId
.
PlaguespreaderZombie
,
CardId
.
ShaddollFalco
});
return
true
;
}
else
if
(
AI
.
Utils
.
IsChainTarget
(
Card
)
||
AI
.
Utils
.
GetProblematicEnemySpell
()
!=
null
)
return
true
;
else
if
(
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
&&
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1500
,
true
))
{
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1900
,
true
))
{
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
}
else
{
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
}
return
true
;
}
return
false
;
}
private
bool
ScarlightRedDragoneff
()
{
IList
<
ClientCard
>
targets
=
new
List
<
ClientCard
>();
ClientCard
target1
=
AI
.
Utils
.
GetBestEnemyMonster
();
if
(
target1
!=
null
)
{
targets
.
Add
(
target1
);
AI
.
SelectCard
(
targets
);
return
true
;
}
return
false
;
}
private
bool
CrystalWingSynchroDragoneff
()
{
return
Duel
.
LastChainPlayer
!=
0
;
}
private
bool
Sdulldeateff
()
{
/* if (snake_four_s)
{
snake_four_s = false;
AI.SelectCard(Useless_List());
return true;
}
//if (ActivateDescription == AI.Utils.GetStringId(CardId.snake, 2)) return true;
if (ActivateDescription == AI.Utils.GetStringId(CardId.snake, 1))
{
foreach (ClientCard hand in Bot.Hand)
{
if (hand.Id == CardId.Red || hand.Id == CardId.Pink)
{
AI.SelectCard(hand);
return true;
}
if (hand.Id == CardId.Urara || hand.Id == CardId.Ghost)
{
if (Tuner_ss())
{
AI.SelectCard(hand);
return true;
}
}
}
}*/
return
false
;
}
private
bool
BlackRoseMoonlightDragoneff
()
{
IList
<
ClientCard
>
targets
=
new
List
<
ClientCard
>();
ClientCard
target1
=
AI
.
Utils
.
GetBestEnemyMonster
();
if
(
target1
!=
null
)
{
targets
.
Add
(
target1
);
AI
.
SelectCard
(
targets
);
return
true
;
}
return
false
;
}
private
bool
RedWyverneff
()
{
IList
<
ClientCard
>
check
=
Enemy
.
MonsterZone
;
ClientCard
best
=
null
;
foreach
(
ClientCard
monster
in
check
)
{
if
(
monster
.
Attack
>=
2400
)
best
=
monster
;
}
if
(
best
!=
null
)
{
AI
.
SelectCard
(
best
);
return
true
;
}
return
false
;
}
private
bool
CoralDragoneff
()
{
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
IList
<
ClientCard
>
targets
=
new
List
<
ClientCard
>();
ClientCard
target1
=
AI
.
Utils
.
GetBestEnemyMonster
();
if
(
target1
!=
null
)
targets
.
Add
(
target1
);
ClientCard
target2
=
AI
.
Utils
.
GetBestEnemySpell
();
if
(
target2
!=
null
)
targets
.
Add
(
target2
);
else
if
(
AI
.
Utils
.
IsChainTarget
(
Card
)
||
AI
.
Utils
.
GetProblematicEnemySpell
()
!=
null
)
{
AI
.
SelectCard
(
targets
);
return
true
;
}
else
if
(
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
&&
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
2400
,
true
))
{
AI
.
SelectCard
(
targets
);
return
true
;
}
return
false
;
}
public
override
bool
OnPreBattleBetween
(
ClientCard
attacker
,
ClientCard
defender
)
public
override
bool
OnPreBattleBetween
(
ClientCard
attacker
,
ClientCard
defender
)
{
{
if
(!
defender
.
IsMonsterHasPreventActivationEffectInBattle
())
if
(!
defender
.
IsMonsterHasPreventActivationEffectInBattle
())
{
{
if
(
attacker
.
Id
==
CardId
.
ElShaddollConstruct
&&
!
attacker
.
IsDisabled
())
// TODO: && defender.IsSpecialSummoned
attacker
.
RealPower
=
9999
;
if
(
attacker
.
Id
==
CardId
.
UltimateConductorTytanno
&&
!
attacker
.
IsDisabled
()
&&
defender
.
IsDefense
())
if
(
attacker
.
Id
==
CardId
.
UltimateConductorTytanno
&&
!
attacker
.
IsDisabled
()
&&
defender
.
IsDefense
())
attacker
.
RealPower
=
9999
;
attacker
.
RealPower
=
9999
;
}
}
return
base
.
OnPreBattleBetween
(
attacker
,
defender
);
return
base
.
OnPreBattleBetween
(
attacker
,
defender
);
}
}
...
@@ -859,6 +1000,16 @@ namespace WindBot.Game.AI.Decks
...
@@ -859,6 +1000,16 @@ namespace WindBot.Game.AI.Decks
{
{
return
true
;
return
true
;
}
}
/*
private bool GoblindberghSummon()
{
foreach (ClientCard card in Bot.Hand.GetMonsters())
{
if (!card.Equals(Card) && card.Level == 4)
return true;
}
return false;
}*/
}
}
...
...
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