Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
W
windbot
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaoye
windbot
Commits
f379e16a
Commit
f379e16a
authored
Apr 16, 2018
by
handsomekiwi
Committed by
mercury233
Apr 16, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update LightswornShaddoldinosour and ChainBurn deck (#43)
parent
3f231833
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
474 additions
and
182 deletions
+474
-182
Game/AI/Decks/ChainBurnExecutor.cs
Game/AI/Decks/ChainBurnExecutor.cs
+26
-15
Game/AI/Decks/LightswornShaddoldinosourExecutor.cs
Game/AI/Decks/LightswornShaddoldinosourExecutor.cs
+428
-163
Game/AI/DefaultExecutor.cs
Game/AI/DefaultExecutor.cs
+10
-0
Game/AI/Enums/Floodgate.cs
Game/AI/Enums/Floodgate.cs
+8
-2
Game/GameBehavior.cs
Game/GameBehavior.cs
+2
-2
No files found.
Game/AI/Decks/ChainBurnExecutor.cs
View file @
f379e16a
...
@@ -354,7 +354,12 @@ namespace WindBot.Game.AI.Decks
...
@@ -354,7 +354,12 @@ namespace WindBot.Game.AI.Decks
}
}
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 && Duel.Player == 1) one_turn_kill = true;
if
(
Enemy
.
LifePoints
<=
expected_blood
&&
Duel
.
Player
==
1
)
{
Logger
.
DebugWriteLine
(
" one_turn_kill"
);
one_turn_kill
=
true
;
}
expected_blood
=
0
;
if
(
greed_count
>=
2
)
greed_count
=
1
;
if
(
greed_count
>=
2
)
greed_count
=
1
;
if
(
blast_count
>=
2
)
blast_count
=
1
;
if
(
blast_count
>=
2
)
blast_count
=
1
;
if
(
just_count
>=
2
)
just_count
=
1
;
if
(
just_count
>=
2
)
just_count
=
1
;
...
@@ -370,8 +375,12 @@ namespace WindBot.Game.AI.Decks
...
@@ -370,8 +375,12 @@ namespace WindBot.Game.AI.Decks
//if (currentchain >= 3 && Duel.Player == 1) drawfirst = true;
//if (currentchain >= 3 && Duel.Player == 1) drawfirst = true;
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
;
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
);
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 && Duel.Player==1) one_turn_kill_1 = true;
/*if (!one_turn_kill && Enemy.LifePoints <= expected_blood && Duel.Player == 1)
{
Logger.DebugWriteLine(" one_turn_kill_1");
one_turn_kill_1 = true;
}*/
}
}
...
@@ -411,7 +420,6 @@ namespace WindBot.Game.AI.Decks
...
@@ -411,7 +420,6 @@ namespace WindBot.Game.AI.Decks
{
{
if
(
ActivateDescription
==
-
1
)
if
(
ActivateDescription
==
-
1
)
{
{
AI
.
SelectCard
(
AbouluteKingBackJack_List_1
());
AI
.
SelectCard
(
AbouluteKingBackJack_List_1
());
AI
.
SelectNextCard
(
AbouluteKingBackJack_List_2
());
AI
.
SelectNextCard
(
AbouluteKingBackJack_List_2
());
}
}
...
@@ -441,7 +449,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -441,7 +449,7 @@ namespace WindBot.Game.AI.Decks
private
bool
ThreateningRoareff
()
private
bool
ThreateningRoareff
()
{
{
if
(
drawfirst
)
return
true
;
if
(
drawfirst
)
return
true
;
if
(
must_chain
())
return
DefaultUniqueTrap
();
if
(
DefaultOnBecomeTarget
())
return
DefaultUniqueTrap
();
if
(
prevent_used
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
if
(
prevent_used
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
prevent_used
=
true
;
prevent_used
=
true
;
return
DefaultUniqueTrap
();
return
DefaultUniqueTrap
();
...
@@ -459,7 +467,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -459,7 +467,7 @@ namespace WindBot.Game.AI.Decks
Linkuribohused
=
false
;
Linkuribohused
=
false
;
return
true
;
return
true
;
}
}
if
(
must_chain
())
if
(
DefaultOnBecomeTarget
())
{
{
Linkuribohused
=
false
;
Linkuribohused
=
false
;
return
DefaultUniqueTrap
();
return
DefaultUniqueTrap
();
...
@@ -510,7 +518,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -510,7 +518,7 @@ namespace WindBot.Game.AI.Decks
}
}
bool
Demiseused
=
AI
.
Utils
.
ChainContainsCard
(
CardId
.
CardOfDemise
);
bool
Demiseused
=
AI
.
Utils
.
ChainContainsCard
(
CardId
.
CardOfDemise
);
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
must_chain
()
&&
count
>
1
)
return
true
;
if
(
DefaultOnBecomeTarget
()
&&
count
>
1
)
return
true
;
if
(
Demiseused
)
return
false
;
if
(
Demiseused
)
return
false
;
if
(
count
>
1
)
return
true
;
if
(
count
>
1
)
return
true
;
if
(
Bot
.
LifePoints
<=
2000
)
return
true
;
if
(
Bot
.
LifePoints
<=
2000
)
return
true
;
...
@@ -522,7 +530,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -522,7 +530,7 @@ namespace WindBot.Game.AI.Decks
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
if
(
DefaultOnBecomeTarget
())
return
true
;
int
count
=
Enemy
.
GetFieldHandCount
();
int
count
=
Enemy
.
GetFieldHandCount
();
if
(
Enemy
.
LifePoints
<
count
*
200
)
return
true
;
if
(
Enemy
.
LifePoints
<
count
*
200
)
return
true
;
if
(
count
>=
8
)
return
true
;
if
(
count
>=
8
)
return
true
;
...
@@ -533,7 +541,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -533,7 +541,7 @@ namespace WindBot.Game.AI.Decks
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
if
(
DefaultOnBecomeTarget
())
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
;
...
@@ -551,7 +559,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -551,7 +559,7 @@ namespace WindBot.Game.AI.Decks
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
if
(
DefaultOnBecomeTarget
())
return
true
;
int
count
=
Enemy
.
GetMonsterCount
();
int
count
=
Enemy
.
GetMonsterCount
();
if
(
Enemy
.
LifePoints
<=
count
*
500
)
return
true
;
if
(
Enemy
.
LifePoints
<=
count
*
500
)
return
true
;
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
count
<=
2
&&
count
>=
1
)
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
count
<=
2
&&
count
>=
1
)
...
@@ -566,7 +574,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -566,7 +574,7 @@ namespace WindBot.Game.AI.Decks
{
{
if
(
drawfirst
)
return
true
;
if
(
drawfirst
)
return
true
;
if
(
must_chain
())
return
true
;
if
(
DefaultOnBecomeTarget
())
return
true
;
int
chain
=
Duel
.
CurrentChain
.
Count
;
int
chain
=
Duel
.
CurrentChain
.
Count
;
if
(
strike_count
>=
2
&&
chain
>=
2
)
return
true
;
if
(
strike_count
>=
2
&&
chain
>=
2
)
return
true
;
if
(
Enemy
.
LifePoints
<=
(
chain
+
1
)
*
400
)
return
true
;
if
(
Enemy
.
LifePoints
<=
(
chain
+
1
)
*
400
)
return
true
;
...
@@ -576,7 +584,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -576,7 +584,7 @@ namespace WindBot.Game.AI.Decks
private
bool
BalanceOfJudgmenteff
()
private
bool
BalanceOfJudgmenteff
()
{
{
if
(
must_chain
())
return
true
;
if
(
DefaultOnBecomeTarget
())
return
true
;
int
count
=
(
Enemy
.
GetFieldCount
()
-
Bot
.
GetFieldHandCount
());
int
count
=
(
Enemy
.
GetFieldCount
()
-
Bot
.
GetFieldHandCount
());
if
(
count
>=
2
)
return
true
;
if
(
count
>=
2
)
return
true
;
return
false
;
return
false
;
...
@@ -628,7 +636,10 @@ namespace WindBot.Game.AI.Decks
...
@@ -628,7 +636,10 @@ namespace WindBot.Game.AI.Decks
newlist
.
Add
(
newmonster
);
newlist
.
Add
(
newmonster
);
}
}
if
(!
Linkuribohused
)
return
false
;
if
(!
Linkuribohused
)
return
false
;
if
(
Enemy
.
BattlingMonster
!=
null
)
{
if
(
Enemy
.
BattlingMonster
.
Attack
>
1800
&&
Bot
.
HasInSpellZone
(
CardId
.
MagicCylinder
))
return
false
;
if
(
Enemy
.
BattlingMonster
.
Attack
>
1800
&&
Bot
.
HasInSpellZone
(
CardId
.
MagicCylinder
))
return
false
;
}
if
(
GetTotalATK
(
newlist
)
>=
3000
&&
Bot
.
HasInSpellZone
(
CardId
.
BlazingMirrorForce
))
return
false
;
if
(
GetTotalATK
(
newlist
)
>=
3000
&&
Bot
.
HasInSpellZone
(
CardId
.
BlazingMirrorForce
))
return
false
;
if
(
AI
.
Utils
.
GetLastChainCard
()
==
null
)
return
true
;
if
(
AI
.
Utils
.
GetLastChainCard
()
==
null
)
return
true
;
if
(
AI
.
Utils
.
GetLastChainCard
().
Id
==
CardId
.
Linkuriboh
)
return
false
;
if
(
AI
.
Utils
.
GetLastChainCard
().
Id
==
CardId
.
Linkuriboh
)
return
false
;
...
...
Game/AI/Decks/LightswornShaddoldinosourExecutor.cs
View file @
f379e16a
...
@@ -7,7 +7,7 @@ using WindBot.Game.AI;
...
@@ -7,7 +7,7 @@ using WindBot.Game.AI;
namespace
WindBot.Game.AI.Decks
namespace
WindBot.Game.AI.Decks
{
{
// NOT FINISHED YET
// NOT FINISHED YET
[
Deck
(
"LightswornShaddoldinosour"
,
"AI_LightswornShaddoldinosour"
,
"ver0.
1
"
)]
[
Deck
(
"LightswornShaddoldinosour"
,
"AI_LightswornShaddoldinosour"
,
"ver0.
5
"
)]
public
class
LightswornShaddoldinosour
:
DefaultExecutor
public
class
LightswornShaddoldinosour
:
DefaultExecutor
{
{
public
class
CardId
public
class
CardId
...
@@ -46,7 +46,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -46,7 +46,7 @@ namespace WindBot.Game.AI.Decks
public
const
int
MonsterReborn
=
83764718
;
public
const
int
MonsterReborn
=
83764718
;
public
const
int
ChargeOfTheLightBrigade
=
94886282
;
public
const
int
ChargeOfTheLightBrigade
=
94886282
;
public
const
int
InterruptedKaijuSlumber
=
99330325
;
public
const
int
InterruptedKaijuSlumber
=
99330325
;
public
const
int
ElShaddollFusion
=
6417578
;
//
public const int ElShaddollFusion = 6417578;
//trap
//trap
public
const
int
infiniteTransience
=
10045474
;
public
const
int
infiniteTransience
=
10045474
;
...
@@ -77,7 +77,6 @@ namespace WindBot.Game.AI.Decks
...
@@ -77,7 +77,6 @@ namespace WindBot.Game.AI.Decks
:
base
(
ai
,
duel
)
:
base
(
ai
,
duel
)
{
{
//counter
//counter
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GhostOgre
,
Hand_act_eff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GhostOgre
,
Hand_act_eff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AshBlossom
,
Hand_act_eff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AshBlossom
,
Hand_act_eff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MaxxC
,
MaxxC
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MaxxC
,
MaxxC
);
...
@@ -91,10 +90,8 @@ namespace WindBot.Game.AI.Decks
...
@@ -91,10 +90,8 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PotOfAvarice
,
PotofAvariceeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PotOfAvarice
,
PotofAvariceeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ChargeOfTheLightBrigade
,
ChargeOfTheLightBrigadeEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ChargeOfTheLightBrigade
,
ChargeOfTheLightBrigadeEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
FoolishBurial
,
FoolishBurialEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
FoolishBurial
,
FoolishBurialEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
InterruptedKaijuSlumber
,
DefaultInterruptedKaijuSlumber
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
InterruptedKaijuSlumber
,
InterruptedKaijuSlumbereff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollFusion
,
ShaddollFusioneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollFusion
,
ShaddollFusioneff
);
//Reborn
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MonsterReborn
,
RebornEffect
);
//Normal Summon
//Normal Summon
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Raiden
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Raiden
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Raiden
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Raiden
);
...
@@ -102,15 +99,14 @@ namespace WindBot.Game.AI.Decks
...
@@ -102,15 +99,14 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
KeeperOfDragonicMagic
,
KeeperOfDragonicMagiceff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
KeeperOfDragonicMagic
,
KeeperOfDragonicMagiceff
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
ShaddollSquamata
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
ShaddollSquamata
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
GlowUpBulb
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
GlowUpBulb
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Lumina
,
Luminasummon
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
ShaddollHedgehog
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
ShaddollHedgehog
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
ShaddollDragon
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
ShaddollDragon
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
FairyTailSnow
,
FairyTailSnowsummon
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
FairyTailSnow
,
FairyTailSnowsummon
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
FairyTailSnow
,
FairyTailSnoweff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
FairyTailSnow
,
FairyTailSnoweff
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Lumina
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Lumina
,
Luminaeff
);
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
.
TG_WonderMagician
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CoralDragon
,
CoralDragoneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CoralDragon
,
CoralDragoneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RedWyvern
,
RedWyverneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RedWyvern
,
RedWyverneff
);
...
@@ -120,39 +116,54 @@ namespace WindBot.Game.AI.Decks
...
@@ -120,39 +116,54 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Michael
,
Michaeleff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Michael
,
Michaeleff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ScarlightRedDragon
,
ScarlightRedDragoneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ScarlightRedDragon
,
ScarlightRedDragoneff
);
//Sp Summon
//Sp Summon
//AddExecutor(ExecutorType.SpSummon, CardId.CrystronNeedlefiber, CrystronNeedlefibersp);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CrystronNeedlefiber
,
CrystronNeedlefibereff
);
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
);
//extra
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
CrystalWingSynchroDragon
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CrystalWingSynchroDragon
,
CrystalWingSynchroDragoneff
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
ScarlightRedDragon
,
ScarlightRedDragonsp
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ScarlightRedDragon
,
ScarlightRedDragoneff
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Michael
,
Michaelsp
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Michael
,
Michaeleff
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
RedWyvern
,
RedWyvernsp
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RedWyvern
,
RedWyverneff
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
MinervaTheExalte
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
MinervaTheExalte
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MinervaTheExalte
,
MinervaTheExaltedEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MinervaTheExalte
,
MinervaTheExaltedEffect
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
CrystronNeedlefiber
,
CrystronNeedlefibersp
);
//Kaiju
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
GamecieltheSeaTurtleKaiju
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
GamecieltheSeaTurtleKaiju
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
RadiantheMultidimensionalKaiju
,
RadiantheMultidimensionalKaijusp
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
DogorantheMadFlameKaiju
,
DogorantheMadFlameKaijusp
);
//Reborn
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MonsterReborn
,
Reborneff
);
//activate chain
//activate chain
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
OvertexCoatls
,
OvertexCoatlseff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
OvertexCoatls
,
OvertexCoatlseff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollBeast
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollCore
,
ShaddollCoreeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollBeast
,
ShaddollBeasteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollFalco
,
ShaddollFalcoeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollFalco
,
ShaddollFalcoeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollSquamata
,
ShaddollSquamataeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollDragon
,
ShaddollDragoneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollDragon
,
ShaddollDragoneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollHedgehog
,
ShaddollHedgehogeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollHedgehog
,
ShaddollHedgehogeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollSquamata
,
ShaddollSquamataeff
);
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
,
ElShaddollGrysraeff
);
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
);
//spellset
//spellset
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
MonsterReborn
,
spellset
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ThatGrassLooksgreener
,
SpellSetZone
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
PotOfAvarice
,
spellset
);
AddExecutor
(
ExecutorType
.
SpellSet
,
SpellSetZone
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ThatGrassLooksgreener
,
spellset
);
//trapset
//trapset
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
LostWind
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
LostWind
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
SinisterShadowGames
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
SinisterShadowGames
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ShaddollCore
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ShaddollCore
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
infiniteTransience
,
SetIsFieldEmpty
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
infiniteTransience
,
SetIsFieldEmpty
);
//trap activate
//trap activate
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
LostWind
,
LostWindeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
LostWind
,
LostWindeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SinisterShadowGames
,
SinisterShadowGameseff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SinisterShadowGames
,
SinisterShadowGameseff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollCore
,
ShaddollCoreeff
);
AddExecutor
(
ExecutorType
.
Repos
,
MonsterRepos
);
AddExecutor
(
ExecutorType
.
Repos
,
MonsterRepos
);
}
}
public
int
[]
all_List
()
public
int
[]
all_List
()
...
@@ -191,7 +202,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -191,7 +202,7 @@ namespace WindBot.Game.AI.Decks
CardId
.
MonsterReborn
,
CardId
.
MonsterReborn
,
CardId
.
ChargeOfTheLightBrigade
,
CardId
.
ChargeOfTheLightBrigade
,
CardId
.
InterruptedKaijuSlumber
,
CardId
.
InterruptedKaijuSlumber
,
CardId
.
ElShaddollFusion
,
//
CardId.ElShaddollFusion,
CardId
.
infiniteTransience
,
CardId
.
infiniteTransience
,
CardId
.
LostWind
,
CardId
.
LostWind
,
...
@@ -207,36 +218,90 @@ namespace WindBot.Game.AI.Decks
...
@@ -207,36 +218,90 @@ namespace WindBot.Game.AI.Decks
{
{
CardId
.
GlowUpBulb
,
CardId
.
GlowUpBulb
,
CardId
.
PlaguespreaderZombie
,
CardId
.
PlaguespreaderZombie
,
CardId
.
InterruptedKaijuSlumber
,
CardId
.
ChargeOfTheLightBrigade
,
CardId
.
ChargeOfTheLightBrigade
,
CardId
.
FoolishBurial
,
CardId
.
HarpiesFeatherDuster
,
CardId
.
ThatGrassLooksgreener
,
CardId
.
ThatGrassLooksgreener
,
CardId
.
HarpiesFeatherDuster
,
CardId
.
FairyTailSnow
,
CardId
.
FairyTailSnow
,
CardId
.
GiantRex
,
CardId
.
GiantRex
,
CardId
.
Lumina
,
CardId
.
Lumina
,
CardId
.
OvertexCoatls
,
CardId
.
OvertexCoatls
,
CardId
.
InterruptedKaijuSlumber
,
CardId
.
FoolishBurial
,
};
};
}
}
int
Ultimate_ss
=
0
;
int
Ultimate_ss
=
0
;
int
Enemy_atk
=
0
;
bool
Pillused
=
false
;
bool
Pillused
=
false
;
bool
CrystronNeedlefibereff_used
=
false
;
bool
CrystronNeedlefibereff_used
=
false
;
bool
OvertexCoatlseff_used
=
false
;
bool
OvertexCoatlseff_used
=
false
;
bool
ShaddollBeast_used
=
false
;
bool
ShaddollFalco_used
=
false
;
bool
ShaddollSquamata_used
=
false
;
bool
ShaddollDragon_used
=
false
;
bool
ShaddollHedgehog_used
=
false
;
public
int
GetTotalATK
(
IList
<
ClientCard
>
list
)
{
int
atk
=
0
;
foreach
(
ClientCard
c
in
list
)
{
if
(
c
==
null
)
continue
;
atk
+=
c
.
Attack
;
}
return
atk
;
}
public
override
void
OnNewPhase
()
{
Enemy_atk
=
0
;
IList
<
ClientCard
>
list
=
new
List
<
ClientCard
>();
foreach
(
ClientCard
monster
in
Enemy
.
GetMonsters
())
{
if
(
monster
.
IsAttack
())
list
.
Add
(
monster
);
}
//if (GetTotalATK(list) / 2 >= Bot.LifePoints) return false;
Enemy_atk
=
GetTotalATK
(
list
);
//SLogger.DebugWriteLine("++++++++++++++++++" + Enemy_atk + "++++++++++++");
}
public
override
void
OnNewTurn
()
public
override
void
OnNewTurn
()
{
{
Pillused
=
false
;
Pillused
=
false
;
OvertexCoatlseff_used
=
false
;
OvertexCoatlseff_used
=
false
;
CrystronNeedlefibereff_used
=
false
;
CrystronNeedlefibereff_used
=
false
;
ShaddollBeast_used
=
false
;
ShaddollFalco_used
=
false
;
ShaddollSquamata_used
=
false
;
ShaddollDragon_used
=
false
;
ShaddollHedgehog_used
=
false
;
}
}
private
bool
Luminasummon
()
private
bool
UltimateConductorTytannoeff
()
{
if
(
Bot
.
Deck
.
Count
>=
20
)
return
true
;
IList
<
ClientCard
>
extra
=
Bot
.
GetMonstersInExtraZone
();
if
(
extra
!=
null
)
foreach
(
ClientCard
monster
in
extra
)
if
(!
monster
.
HasType
(
CardType
.
Link
))
return
false
;
if
(
Bot
.
LifePoints
<=
3000
)
return
true
;
if
(
Bot
.
HasInGraveyard
(
CardId
.
Raiden
))
return
true
;
return
false
;
}
private
bool
Luminaeff
()
{
if
(
Bot
.
HasInGraveyard
(
CardId
.
Raiden
))
{
{
AI
.
SelectCard
(
Useless_List
());
AI
.
SelectNextCard
(
CardId
.
Raiden
);
return
true
;
}
return
false
;
}
if
(
Duel
.
Phase
==
DuelPhase
.
Main1
)
private
bool
UltimateConductorTytannoeff
(
)
{
{
IList
<
int
>
targets
=
new
[]
{
IList
<
int
>
targets
=
new
[]
{
CardId
.
OvertexCoatls
,
CardId
.
OvertexCoatls
,
...
@@ -249,12 +314,11 @@ namespace WindBot.Game.AI.Decks
...
@@ -249,12 +314,11 @@ namespace WindBot.Game.AI.Decks
CardId
.
PlaguespreaderZombie
,
CardId
.
PlaguespreaderZombie
,
CardId
.
FairyTailSnow
,
CardId
.
FairyTailSnow
,
CardId
.
KeeperOfDragonicMagic
,
CardId
.
KeeperOfDragonicMagic
,
CardId
.
Raiden
,
CardId
.
Lumina
,
CardId
.
DogorantheMadFlameKaiju
,
CardId
.
DogorantheMadFlameKaiju
,
CardId
.
GamecieltheSeaTurtleKaiju
,
CardId
.
GamecieltheSeaTurtleKaiju
,
CardId
.
RadiantheMultidimensionalKaiju
,
CardId
.
RadiantheMultidimensionalKaiju
,
CardId
.
GiantRex
,
CardId
.
GiantRex
,
CardId
.
ShaddollCore
,
CardId
.
SouleatingOviraptor
,
CardId
.
SouleatingOviraptor
,
CardId
.
Raiden
,
CardId
.
Raiden
,
CardId
.
Lumina
,
CardId
.
Lumina
,
...
@@ -262,8 +326,21 @@ namespace WindBot.Game.AI.Decks
...
@@ -262,8 +326,21 @@ namespace WindBot.Game.AI.Decks
CardId
.
GhostOgre
,
CardId
.
GhostOgre
,
CardId
.
MaxxC
,
CardId
.
MaxxC
,
};
};
if
(!
Bot
.
HasInHand
(
targets
)
||
!
Bot
.
HasInMonstersZone
(
targets
))
if
(
Duel
.
Phase
==
DuelPhase
.
Main1
)
{
if
(
Duel
.
Player
==
0
)
{
{
int
count
=
0
;
IList
<
ClientCard
>
check
=
Enemy
.
GetMonsters
();
foreach
(
ClientCard
monster
in
check
)
if
(
monster
.
Attack
>
2500
||
monster
==
Enemy
.
MonsterZone
.
GetDangerousMonster
())
count
++;
if
(
count
==
0
)
return
false
;
}
if
(!
Bot
.
HasInHand
(
targets
))
{
if
(!
Bot
.
HasInMonstersZone
(
targets
))
return
false
;
return
false
;
}
}
AI
.
SelectCard
(
targets
);
AI
.
SelectCard
(
targets
);
...
@@ -278,15 +355,39 @@ namespace WindBot.Game.AI.Decks
...
@@ -278,15 +355,39 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
RadiantheMultidimensionalKaijusp
()
{
if
(
Enemy
.
HasInMonstersZone
(
CardId
.
GamecieltheSeaTurtleKaiju
))
return
true
;
if
(
Bot
.
HasInHand
(
CardId
.
DogorantheMadFlameKaiju
))
return
DefaultKaijuSpsummon
();
return
false
;
}
private
bool
DogorantheMadFlameKaijusp
()
{
if
(
Enemy
.
HasInMonstersZone
(
CardId
.
GamecieltheSeaTurtleKaiju
))
return
true
;
if
(
Enemy
.
HasInMonstersZone
(
CardId
.
RadiantheMultidimensionalKaiju
))
return
true
;
return
false
;
}
private
bool
InterruptedKaijuSlumbereff
()
{
if
(
Enemy
.
GetMonsterCount
()
-
Bot
.
GetMonsterCount
()
>=
2
)
return
DefaultInterruptedKaijuSlumber
();
return
false
;
}
private
bool
UltimateConductorTytannosp
()
private
bool
UltimateConductorTytannosp
()
{
{
Ultimate_ss
++;
Pillused
=
true
;
Pillused
=
true
;
foreach
(
ClientCard
card
in
Bot
.
GetMonsters
())
foreach
(
ClientCard
card
in
Bot
.
GetMonsters
())
{
{
if
(
card
.
Id
==
CardId
.
UltimateConductorTytanno
&&
card
.
IsFaceup
())
if
(
card
.
Id
==
CardId
.
UltimateConductorTytanno
&&
card
.
IsFaceup
())
return
false
;
return
false
;
}
}
Ultimate_ss
++;
return
true
;
return
true
;
}
}
...
@@ -298,15 +399,14 @@ namespace WindBot.Game.AI.Decks
...
@@ -298,15 +399,14 @@ namespace WindBot.Game.AI.Decks
AI
.
SelectCard
(
Useless_List
());
AI
.
SelectCard
(
Useless_List
());
return
true
;
return
true
;
}
}
return
true
;
return
true
;
}
}
private
bool
MonsterRepos
()
private
bool
MonsterRepos
()
{
{
if
(
Card
.
Id
==
CardId
.
ElShaddollConstruct
&&
Card
.
IsAttack
())
if
(
Card
.
Id
==
CardId
.
ElShaddollConstruct
&&
Card
.
IsAttack
())
return
false
;
return
false
;
if
(
Card
.
Id
==
CardId
.
ShaddollDragon
&&
Card
.
IsFacedown
()
&&
Enemy
.
GetMonsterCount
()
>=
0
)
return
true
;
if
(
Card
.
Id
==
CardId
.
ShaddollSquamata
&&
Card
.
IsFacedown
()
&&
Enemy
.
GetMonsterCount
()
>=
0
)
return
true
;
return
base
.
DefaultMonsterRepos
();
return
base
.
DefaultMonsterRepos
();
}
}
...
@@ -418,9 +518,13 @@ namespace WindBot.Game.AI.Decks
...
@@ -418,9 +518,13 @@ namespace WindBot.Game.AI.Decks
private
bool
FairyTailSnowsummon
()
private
bool
FairyTailSnowsummon
()
{
{
IList
<
ClientCard
>
list
=
Enemy
.
GetMonsters
();
if
(
list
!=
null
)
return
Enemy
.
GetMonsterCount
()>=
2
;
{
if
(
list
.
GetHighestAttackMonster
().
IsFaceup
())
return
true
;
}
return
false
;
}
}
...
@@ -429,8 +533,45 @@ namespace WindBot.Game.AI.Decks
...
@@ -429,8 +533,45 @@ namespace WindBot.Game.AI.Decks
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
{
AI
.
SelectCard
(
AI
.
Utils
.
GetBestEnemyMonster
());
return
true
;
return
true
;
}
}
else
{
int
spell_count
=
0
;
IList
<
ClientCard
>
grave
=
Bot
.
Graveyard
;
IList
<
ClientCard
>
all
=
new
List
<
ClientCard
>();
foreach
(
ClientCard
check
in
grave
)
{
if
(
check
.
HasType
(
CardType
.
Spell
)||
check
.
HasType
(
CardType
.
Trap
))
{
spell_count
++;
all
.
Add
(
check
);
}
}
foreach
(
ClientCard
check
in
grave
)
{
if
(
check
.
HasType
(
CardType
.
Monster
))
{
all
.
Add
(
check
);
}
}
if
(
AI
.
Utils
.
GetLastChainCard
()!=
null
)
{
if
(
AI
.
Utils
.
GetLastChainCard
().
Id
==
CardId
.
FairyTailSnow
)
return
false
;
}
if
(
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
&&
Bot
.
BattlingMonster
==
null
&&
Enemy_atk
>=
Bot
.
LifePoints
||
Duel
.
Player
==
0
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
&&
Enemy
.
BattlingMonster
==
null
&&
Enemy
.
LifePoints
<=
1850
)
{
AI
.
SelectCard
(
all
);
AI
.
SelectNextCard
(
AI
.
Utils
.
GetBestEnemyMonster
());
return
true
;
}
}
return
false
;
return
false
;
}
}
...
@@ -452,6 +593,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -452,6 +593,9 @@ namespace WindBot.Game.AI.Decks
private
bool
GlowUpBulbeff
()
private
bool
GlowUpBulbeff
()
{
{
IList
<
ClientCard
>
check
=
Bot
.
GetMonstersInExtraZone
();
foreach
(
ClientCard
monster
in
check
)
if
(
monster
.
HasType
(
CardType
.
Fusion
))
return
false
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Lumina
)
||
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Lumina
)
||
Bot
.
HasInMonstersZone
(
CardId
.
FairyTailSnow
)
||
Bot
.
HasInMonstersZone
(
CardId
.
FairyTailSnow
)
||
Bot
.
HasInMonstersZone
(
CardId
.
KeeperOfDragonicMagic
)
||
Bot
.
HasInMonstersZone
(
CardId
.
KeeperOfDragonicMagic
)
||
...
@@ -488,19 +632,14 @@ namespace WindBot.Game.AI.Decks
...
@@ -488,19 +632,14 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
spellset
()
private
bool
Reborneff
()
{
return
Bot
.
Hand
.
Count
>
6
;
}
private
bool
RebornEffect
()
{
{
if
(
Bot
.
HasInGraveyard
(
CardId
.
UltimateConductorTytanno
)&&
Ultimate_ss
>
0
)
if
(
Bot
.
HasInGraveyard
(
CardId
.
UltimateConductorTytanno
)&&
Ultimate_ss
>
0
)
{
{
AI
.
SelectCard
(
CardId
.
UltimateConductorTytanno
);
AI
.
SelectCard
(
CardId
.
UltimateConductorTytanno
);
return
true
;
return
true
;
}
}
if
(!
AI
.
Utils
.
IsOneEnemyBetter
(
true
))
return
false
;
IList
<
int
>
targets
=
new
[]
{
IList
<
int
>
targets
=
new
[]
{
CardId
.
ElShaddollConstruct
,
CardId
.
ElShaddollConstruct
,
CardId
.
DogorantheMadFlameKaiju
,
CardId
.
DogorantheMadFlameKaiju
,
...
@@ -533,78 +672,57 @@ namespace WindBot.Game.AI.Decks
...
@@ -533,78 +672,57 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
TrapSetWhenZoneFre
e
()
private
bool
SpellSetZon
e
()
{
{
return
Bot
.
GetSpellCountWithoutField
()
<
4
;
return
(
Bot
.
GetHandCount
()>
6
&&
Duel
.
Phase
==
DuelPhase
.
Main2
)
;
}
}
private
bool
ChargeOfTheLightBrigadeEffect
()
private
bool
ChargeOfTheLightBrigadeEffect
()
{
{
if
(
!
Bot
.
HasInHand
(
CardId
.
Raiden
))
if
(
Bot
.
HasInGraveyard
(
CardId
.
Raiden
)
||
Bot
.
HasInHand
(
CardId
.
Raiden
))
AI
.
SelectCard
(
CardId
.
Raiden
);
AI
.
SelectCard
(
CardId
.
Lumina
);
else
else
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
CardId
.
Raiden
);
{
CardId
.
Lumina
,
});
return
true
;
return
true
;
}
}
// all Shaddoll
// all Shaddoll
private
bool
ElShaddollConstruct
eff
()
private
bool
SinisterShadowGames
eff
()
{
{
/* if (Duel.Phase == DuelPhase.Battle
)
if
(
Bot
.
HasInGraveyard
(
CardId
.
ShaddollFusion
)
)
if (Enemy.BattlingMonster.Attack < 2800)
AI
.
SelectCard
(
CardId
.
ShaddollCore
);
return false;*/
else
if
(
ActivateDescription
==-
1
)
AI
.
SelectCard
(
new
[]
{
{
AI
.
SelectCard
(
CardId
.
ShaddollSquamata
);
CardId
.
ShaddollBeast
,
}
});
return
true
;
return
true
;
}
}
private
bool
ElShaddollShekhinagaeff
()
private
bool
ShaddollCoreeff
()
{
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
else
{
{
if
(
DefaultBreakthroughSkill
()
)
if
(
Card
.
Location
==
CardLocation
.
SpellZone
)
{
{
AI
.
SelectCard
(
new
[]
if
(
Duel
.
Player
==
1
&&
Bot
.
BattlingMonster
==
null
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
||
DefaultOnBecomeTarget
())
{
{
CardId
.
ShaddollBeast
,
Logger
.
DebugWriteLine
(
"+++++++++++ShaddollCoreeffdododoo++++++++++"
);
CardId
.
ShaddollSquamata
,
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
CardId
.
ShaddollHedgehog
,
return
true
;
CardId
.
ShaddollDragon
,
CardId
.
ShaddollFalco
,
}
);
}
}
else
return
false
;
return
false
;
}
}
return
true
;
return
true
;
}
}
private
bool
ElShaddollGrysraeff
()
{
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
return
true
;
}
private
bool
ShaddollFusioneff
()
private
bool
ShaddollFusioneff
()
{
{
if
(
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollConstruct
)
||
List
<
ClientCard
>
extra_zone_check
=
Bot
.
GetMonstersInExtraZone
();
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollGrysra
)
||
foreach
(
ClientCard
extra_monster
in
extra_zone_check
)
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollShekhinaga
)
||
if
(
extra_monster
.
HasType
(
CardType
.
Xyz
)
||
extra_monster
.
HasType
(
CardType
.
Fusion
))
return
false
;
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollWinda
))
return
false
;
bool
deck_check
=
false
;
bool
deck_check
=
false
;
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
...
@@ -625,8 +743,9 @@ namespace WindBot.Game.AI.Decks
...
@@ -625,8 +743,9 @@ namespace WindBot.Game.AI.Decks
});
});
AI
.
SelectNextCard
(
new
[]
AI
.
SelectNextCard
(
new
[]
{
{
CardId
.
ShaddollBeast
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollBeast
,
CardId
.
ShaddollHedgehog
,
CardId
.
ShaddollHedgehog
,
CardId
.
ShaddollDragon
,
CardId
.
ShaddollDragon
,
CardId
.
ShaddollFalco
,
CardId
.
ShaddollFalco
,
...
@@ -635,7 +754,45 @@ namespace WindBot.Game.AI.Decks
...
@@ -635,7 +754,45 @@ namespace WindBot.Game.AI.Decks
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
return
true
;
return
true
;
}
}
if
(!
Bot
.
IsFieldEmpty
())
return
false
;
if
(
Enemy
.
GetMonsterCount
()
==
0
)
{
int
dark_count
=
0
;
IList
<
ClientCard
>
m0
=
Bot
.
Hand
;
IList
<
ClientCard
>
m1
=
Bot
.
MonsterZone
;
IList
<
ClientCard
>
all
=
new
List
<
ClientCard
>();
foreach
(
ClientCard
monster
in
m0
)
{
if
(
dark_count
==
2
)
break
;
if
(
monster
.
HasAttribute
(
CardAttribute
.
Dark
))
{
dark_count
++;
all
.
Add
(
monster
);
}
}
foreach
(
ClientCard
monster
in
m1
)
{
if
(
dark_count
==
2
)
break
;
if
(
monster
!=
null
)
{
if
(
monster
.
HasAttribute
(
CardAttribute
.
Dark
))
{
dark_count
++;
all
.
Add
(
monster
);
}
}
}
if
(
dark_count
==
2
)
{
AI
.
SelectCard
(
CardId
.
ElShaddollWinda
);
AI
.
SelectMaterials
(
all
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
return
true
;
}
}
if
(!
AI
.
Utils
.
IsOneEnemyBetter
())
return
false
;
foreach
(
ClientCard
monster
in
Bot
.
Hand
)
foreach
(
ClientCard
monster
in
Bot
.
Hand
)
...
@@ -651,6 +808,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -651,6 +808,7 @@ namespace WindBot.Game.AI.Decks
List
<
ClientCard
>
material_1
=
Bot
.
GetMonsters
();
List
<
ClientCard
>
material_1
=
Bot
.
GetMonsters
();
foreach
(
ClientCard
monster
in
material_1
)
foreach
(
ClientCard
monster
in
material_1
)
{
{
if
(
monster
==
null
)
break
;
if
(
monster
.
HasAttribute
(
CardAttribute
.
Light
))
if
(
monster
.
HasAttribute
(
CardAttribute
.
Light
))
{
{
AI
.
SelectCard
(
CardId
.
ElShaddollConstruct
);
AI
.
SelectCard
(
CardId
.
ElShaddollConstruct
);
...
@@ -663,37 +821,97 @@ namespace WindBot.Game.AI.Decks
...
@@ -663,37 +821,97 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
SinisterShadowGameseff
()
{
private
bool
ElShaddollShekhinagaeff
()
{
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
else
{
if
(
DefaultBreakthroughSkill
())
{
AI
.
SelectCard
(
new
[]
AI
.
SelectCard
(
new
[]
{
{
CardId
.
ShaddollBeast
,
CardId
.
ShaddollBeast
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollHedgehog
,
CardId
.
ShaddollDragon
,
CardId
.
ShaddollFalco
,
}
);
}
else
return
false
;
}
return
true
;
}
});
private
bool
ElShaddollGrysraeff
()
{
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
return
true
;
}
private
bool
ElShaddollConstructeff
()
{
if
(!
ShaddollBeast_used
)
AI
.
SelectCard
(
CardId
.
ShaddollBeast
);
else
AI
.
SelectCard
(
CardId
.
ShaddollFalco
);
return
true
;
return
true
;
}
}
private
bool
ShaddollCoreeff
()
private
bool
ShaddollSquamataeff
()
{
{
if
(
Card
.
Location
==
CardLocation
.
SpellZone
)
ShaddollSquamata_used
=
true
;
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
{
{
if
(
Enemy
.
HasAttackingMonster
()
&&
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
)
if
(
AI
.
Utils
.
ChainContainsCard
(
CardId
.
ElShaddollConstruct
)
)
{
{
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
if
(!
Bot
.
HasInHand
(
CardId
.
ShaddollFusion
)
&&
Bot
.
HasInGraveyard
(
CardId
.
ShaddollFusion
))
return
true
;
AI
.
SelectNextCard
(
CardId
.
ShaddollCore
);
if
(!
ShaddollBeast_used
)
AI
.
SelectNextCard
(
CardId
.
ShaddollBeast
);
else
if
(!
ShaddollFalco_used
)
AI
.
SelectNextCard
(
CardId
.
ShaddollFalco
);
else
if
(!
ShaddollHedgehog_used
)
AI
.
SelectNextCard
(
CardId
.
ShaddollHedgehog
);
}
else
{
if
(!
Bot
.
HasInHand
(
CardId
.
ShaddollFusion
)
&&
Bot
.
HasInGraveyard
(
CardId
.
ShaddollFusion
))
AI
.
SelectCard
(
CardId
.
ShaddollCore
);
if
(!
ShaddollBeast_used
)
AI
.
SelectCard
(
CardId
.
ShaddollBeast
);
else
if
(!
ShaddollFalco_used
)
AI
.
SelectCard
(
CardId
.
ShaddollFalco
);
else
if
(!
ShaddollHedgehog_used
)
AI
.
SelectCard
(
CardId
.
ShaddollHedgehog
);
}
}
}
else
{
ClientCard
target
=
AI
.
Utils
.
GetBestEnemyMonster
();
AI
.
SelectCard
(
target
);
if
(
Enemy
.
GetMonsterCount
()
==
0
)
return
false
;
return
false
;
}
}
return
true
;
return
true
;
}
}
private
bool
ShaddollBeasteff
()
{
ShaddollBeast_used
=
true
;
return
true
;
}
private
bool
ShaddollFalcoeff
()
private
bool
ShaddollFalcoeff
()
{
{
ShaddollFalco_used
=
true
;
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
return
true
;
else
else
...
@@ -715,13 +933,27 @@ namespace WindBot.Game.AI.Decks
...
@@ -715,13 +933,27 @@ namespace WindBot.Game.AI.Decks
private
bool
ShaddollHedgehogeff
()
private
bool
ShaddollHedgehogeff
()
{
{
ShaddollHedgehog_used
=
true
;
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
{
{
AI
.
SelectCard
(
new
[]
if
(
AI
.
Utils
.
ChainContainsCard
(
CardId
.
ElShaddollConstruct
))
{
{
AI
.
SelectNextCard
(
new
[]{
CardId
.
ShaddollFalco
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollDragon
,
});
}
else
{
AI
.
SelectCard
(
new
[]{
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollDragon
,
});
});
}
}
}
else
else
{
{
AI
.
SelectCard
(
new
[]
{
CardId
.
ShaddollFusion
,
CardId
.
SinisterShadowGames
});
AI
.
SelectCard
(
new
[]
{
CardId
.
ShaddollFusion
,
CardId
.
SinisterShadowGames
});
...
@@ -732,6 +964,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -732,6 +964,7 @@ namespace WindBot.Game.AI.Decks
private
bool
ShaddollDragoneff
()
private
bool
ShaddollDragoneff
()
{
{
ShaddollDragon_used
=
true
;
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
{
ClientCard
target
=
AI
.
Utils
.
GetBestEnemyCard
();
ClientCard
target
=
AI
.
Utils
.
GetBestEnemyCard
();
...
@@ -747,26 +980,6 @@ namespace WindBot.Game.AI.Decks
...
@@ -747,26 +980,6 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
ShaddollSquamataeff
()
{
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
{
AI
.
SelectCard
(
new
[]
{
CardId
.
ShaddollBeast
,
});
}
else
{
ClientCard
target
=
AI
.
Utils
.
GetBestEnemyMonster
();
AI
.
SelectCard
(
target
);
if
(
Enemy
.
GetMonsterCount
()
==
0
)
return
false
;
}
return
true
;
}
private
bool
LostWindeff
()
private
bool
LostWindeff
()
{
{
List
<
ClientCard
>
check
=
Enemy
.
GetMonsters
();
List
<
ClientCard
>
check
=
Enemy
.
GetMonsters
();
...
@@ -811,18 +1024,38 @@ namespace WindBot.Game.AI.Decks
...
@@ -811,18 +1024,38 @@ namespace WindBot.Game.AI.Decks
}
}
//other extra
//other extra
private
bool
Michaelsp
()
{
IList
<
int
>
targets
=
new
[]
{
CardId
.
Raiden
,
CardId
.
Lumina
};
if
(!
Bot
.
HasInMonstersZone
(
targets
))
return
false
;
AI
.
SelectCard
(
targets
);
return
true
;
}
private
bool
Michaeleff
()
private
bool
Michaeleff
()
{
{
if
(
Card
.
Location
==
CardLocation
.
Grave
)
if
(
Card
.
Location
==
CardLocation
.
Grave
)
return
true
;
return
true
;
if
(
Bot
.
LifePoints
<=
1000
)
return
false
;
if
(
Bot
.
LifePoints
<=
1000
)
return
false
;
ClientCard
select
=
AI
.
Utils
.
GetBestEnemyMonster
();
if
(
select
==
null
)
return
false
;
if
(
select
!=
null
)
{
AI
.
SelectCard
(
select
);
return
true
;
return
true
;
}
}
return
false
;
}
private
bool
MinervaTheExaltedEffect
()
private
bool
MinervaTheExaltedEffect
()
{
{
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
{
if
(
Bot
.
Deck
.
Count
<=
10
)
return
false
;
return
true
;
return
true
;
}
}
else
else
...
@@ -869,29 +1102,46 @@ namespace WindBot.Game.AI.Decks
...
@@ -869,29 +1102,46 @@ namespace WindBot.Game.AI.Decks
if
(
CrystronNeedlefibereff_used
)
return
false
;
if
(
CrystronNeedlefibereff_used
)
return
false
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
CrystronNeedlefiber
))
return
false
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
CrystronNeedlefiber
))
return
false
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
FairyTailSnow
)
||
IList
<
int
>
check
=
new
[]
Bot
.
HasInMonstersZone
(
CardId
.
Lumina
)
||
Bot
.
HasInMonstersZone
(
CardId
.
KeeperOfDragonicMagic
)
||
Bot
.
HasInMonstersZone
(
CardId
.
SouleatingOviraptor
)
||
Bot
.
HasInMonstersZone
(
CardId
.
Raiden
)
)
{
AI
.
SelectCard
(
new
[]
{
{
CardId
.
KeeperOfDragonicMagic
,
CardId
.
GlowUpBulb
,
CardId
.
Lumina
,
CardId
.
FairyTailSnow
,
CardId
.
FairyTailSnow
,
CardId
.
KeeperOfDragonicMagic
,
CardId
.
SouleatingOviraptor
,
CardId
.
SouleatingOviraptor
,
CardId
.
Raiden
,
CardId
.
GiantRex
,
CardId
.
GiantRex
,
});
CardId
.
Lumina
,
AI
.
SelectNextCard
(
CardId
.
GlowUpBulb
);
CardId
.
Raiden
,
}
};
int
count
=
0
;
foreach
(
ClientCard
monster
in
Bot
.
GetMonsters
())
if
(
monster
.
Id
==
CardId
.
GlowUpBulb
||
monster
.
Id
==
CardId
.
FairyTailSnow
||
monster
.
Id
==
CardId
.
KeeperOfDragonicMagic
||
monster
.
Id
==
CardId
.
SouleatingOviraptor
||
monster
.
Id
==
CardId
.
GiantRex
||
monster
.
Id
==
CardId
.
Lumina
||
monster
.
Id
==
CardId
.
Raiden
)
count
++;
if
(!
Bot
.
HasInMonstersZone
(
CardId
.
GlowUpBulb
)
||
count
<
2
)
return
false
;
AI
.
SelectCard
(
check
);
AI
.
SelectNextCard
(
check
);
return
true
;
return
true
;
}
}
public
bool
CrystronNeedlefibereff
()
public
bool
CrystronNeedlefibereff
()
{
{
bool
DarkHole
=
false
;
foreach
(
ClientCard
card
in
Enemy
.
GetSpells
())
{
if
(
card
.
Id
==
53129443
&&
card
.
IsFaceup
())
{
DarkHole
=
true
;
}
}
if
(
Duel
.
Player
==
0
)
if
(
Duel
.
Player
==
0
)
{
{
...
@@ -899,9 +1149,16 @@ namespace WindBot.Game.AI.Decks
...
@@ -899,9 +1149,16 @@ namespace WindBot.Game.AI.Decks
AI
.
SelectCard
(
new
[]
{
CardId
.
GhostOgre
,
CardId
.
GlowUpBulb
,
CardId
.
PlaguespreaderZombie
,
CardId
.
ShaddollFalco
});
AI
.
SelectCard
(
new
[]
{
CardId
.
GhostOgre
,
CardId
.
GlowUpBulb
,
CardId
.
PlaguespreaderZombie
,
CardId
.
ShaddollFalco
});
return
true
;
return
true
;
}
}
else
if
(
AI
.
Utils
.
IsChainTarget
(
Card
)
||
AI
.
Utils
.
GetProblematicEnemySpell
()
!=
null
)
return
true
;
else
if
(
DarkHole
||
AI
.
Utils
.
IsChainTarget
(
Card
)
||
AI
.
Utils
.
GetProblematicEnemySpell
()
!=
null
)
{
AI
.
SelectCard
(
CardId
.
TG_WonderMagician
);
return
true
;
}
else
if
(
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
&&
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1500
,
true
))
else
if
(
Duel
.
Player
==
1
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
&&
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1500
,
true
))
{
{
AI
.
SelectCard
(
CardId
.
TG_WonderMagician
);
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1900
,
true
))
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1900
,
true
))
{
{
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
...
@@ -915,6 +1172,10 @@ namespace WindBot.Game.AI.Decks
...
@@ -915,6 +1172,10 @@ namespace WindBot.Game.AI.Decks
return
false
;
return
false
;
}
}
private
bool
ScarlightRedDragonsp
()
{
return
false
;
}
private
bool
ScarlightRedDragoneff
()
private
bool
ScarlightRedDragoneff
()
{
{
...
@@ -980,6 +1241,10 @@ namespace WindBot.Game.AI.Decks
...
@@ -980,6 +1241,10 @@ namespace WindBot.Game.AI.Decks
}
}
private
bool
RedWyvernsp
()
{
return
false
;
}
private
bool
RedWyverneff
()
private
bool
RedWyverneff
()
{
{
...
...
Game/AI/DefaultExecutor.cs
View file @
f379e16a
...
@@ -24,6 +24,7 @@ namespace WindBot.Game.AI
...
@@ -24,6 +24,7 @@ namespace WindBot.Game.AI
public
const
int
DupeFrog
=
46239604
;
public
const
int
DupeFrog
=
46239604
;
public
const
int
MaraudingCaptain
=
2460565
;
public
const
int
MaraudingCaptain
=
2460565
;
public
const
int
HarpiesFeatherDuster
=
18144506
;
public
const
int
MysticalSpaceTyphoon
=
5318639
;
public
const
int
MysticalSpaceTyphoon
=
5318639
;
public
const
int
CosmicCyclone
=
8267140
;
public
const
int
CosmicCyclone
=
8267140
;
public
const
int
ChickenGame
=
67616300
;
public
const
int
ChickenGame
=
67616300
;
...
@@ -452,6 +453,15 @@ namespace WindBot.Game.AI
...
@@ -452,6 +453,15 @@ namespace WindBot.Game.AI
return
false
;
return
false
;
}
}
/// <summary>
/// if spell/trap is the target or enermy activate HarpiesFeatherDuster
/// </summary>
protected
bool
DefaultOnBecomeTarget
()
{
if
(
AI
.
Utils
.
IsChainTarget
(
Card
))
return
true
;
if
(
Enemy
.
HasInSpellZone
(
_CardId
.
HarpiesFeatherDuster
,
true
))
return
true
;
return
false
;
}
/// <summary>
/// <summary>
/// Chain enemy activation or summon.
/// Chain enemy activation or summon.
/// </summary>
/// </summary>
...
...
Game/AI/Enums/Floodgate.cs
View file @
f379e16a
...
@@ -59,13 +59,19 @@
...
@@ -59,13 +59,19 @@
NaturiaExterio
=
99916754
,
NaturiaExterio
=
99916754
,
TheLastWarriorfromAnotherPlanet
=
86099788
,
TheLastWarriorfromAnotherPlanet
=
86099788
,
ThousandEyesRestrict
=
63519819
,
ThousandEyesRestrict
=
63519819
,
ElShaddollWinda
=
94977269
,
MaskedHERODarkLaw
=
58481572
,
MaskedHERODarkLaw
=
58481572
,
NaturiaBeast
=
33198837
,
NaturiaBeast
=
33198837
,
NaturiaBarkion
=
2956282
,
NaturiaBarkion
=
2956282
,
EvilswarmOphion
=
91279700
,
EvilswarmOphion
=
91279700
,
MermailAbyssgaios
=
74371660
,
MermailAbyssgaios
=
74371660
,
AbyssDweller
=
21044178
,
AbyssDweller
=
21044178
,
ZoodiacDrident
=
48905153
ZoodiacDrident
=
48905153
,
InvokedMechaba
=
75286621
,
ElShaddollShekhinaga
=
74822425
,
ElShaddollConstruct
=
20366274
,
ElShaddollGrysra
=
48424886
,
ElShaddollWinda
=
94977269
,
UltimateConductorTytanno
=
18940556
,
OvertexCoatls
=
41782653
}
}
}
}
Game/GameBehavior.cs
View file @
f379e16a
...
@@ -270,8 +270,8 @@ namespace WindBot.Game
...
@@ -270,8 +270,8 @@ namespace WindBot.Game
{
{
int
player
=
packet
.
ReadInt16
();
int
player
=
packet
.
ReadInt16
();
string
message
=
packet
.
ReadUnicode
(
256
);
string
message
=
packet
.
ReadUnicode
(
256
);
string
myName
=
_room
.
Position
==
0
?
_room
.
Names
[
0
]
:
_room
.
Names
[
1
];
string
myName
=
(
player
!=
0
)
?
_room
.
Names
[
1
]
:
_room
.
Names
[
0
];
string
otherName
=
_room
.
Position
==
0
?
_room
.
Names
[
1
]
:
_room
.
Names
[
0
];
string
otherName
=
(
player
==
0
)
?
_room
.
Names
[
1
]
:
_room
.
Names
[
0
];
if
(
player
<
4
)
if
(
player
<
4
)
Logger
.
DebugWriteLine
(
otherName
+
" say to "
+
myName
+
": "
+
message
);
Logger
.
DebugWriteLine
(
otherName
+
" say to "
+
myName
+
": "
+
message
);
}
}
...
...
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