Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
W
windbot
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
alstroemeria-silentlove
windbot
Commits
724c738b
Commit
724c738b
authored
Apr 16, 2018
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/IceYGO/windbot
parents
4f39fa7f
719d7b1b
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
485 additions
and
183 deletions
+485
-183
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
+21
-1
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 @
724c738b
...
...
@@ -353,8 +353,13 @@ namespace WindBot.Game.AI.Decks
if
(
HasAccuulatedFortune
>
0
)
OjamaTrioused_draw
=
true
;
}
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;
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
)
{
Logger
.
DebugWriteLine
(
" one_turn_kill"
);
one_turn_kill
=
true
;
}
expected_blood
=
0
;
if
(
greed_count
>=
2
)
greed_count
=
1
;
if
(
blast_count
>=
2
)
blast_count
=
1
;
if
(
just_count
>=
2
)
just_count
=
1
;
...
...
@@ -370,8 +375,12 @@ namespace WindBot.Game.AI.Decks
//if (currentchain >= 3 && Duel.Player == 1) 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 && 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;
}*/
}
...
...
@@ -410,8 +419,7 @@ namespace WindBot.Game.AI.Decks
private
bool
AbouluteKingBackJackeff
()
{
if
(
ActivateDescription
==
-
1
)
{
{
AI
.
SelectCard
(
AbouluteKingBackJack_List_1
());
AI
.
SelectNextCard
(
AbouluteKingBackJack_List_2
());
}
...
...
@@ -441,7 +449,7 @@ namespace WindBot.Game.AI.Decks
private
bool
ThreateningRoareff
()
{
if
(
drawfirst
)
return
true
;
if
(
must_chain
())
return
DefaultUniqueTrap
();
if
(
DefaultOnBecomeTarget
())
return
DefaultUniqueTrap
();
if
(
prevent_used
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
prevent_used
=
true
;
return
DefaultUniqueTrap
();
...
...
@@ -459,7 +467,7 @@ namespace WindBot.Game.AI.Decks
Linkuribohused
=
false
;
return
true
;
}
if
(
must_chain
())
if
(
DefaultOnBecomeTarget
())
{
Linkuribohused
=
false
;
return
DefaultUniqueTrap
();
...
...
@@ -510,7 +518,7 @@ namespace WindBot.Game.AI.Decks
}
bool
Demiseused
=
AI
.
Utils
.
ChainContainsCard
(
CardId
.
CardOfDemise
);
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
must_chain
()
&&
count
>
1
)
return
true
;
if
(
DefaultOnBecomeTarget
()
&&
count
>
1
)
return
true
;
if
(
Demiseused
)
return
false
;
if
(
count
>
1
)
return
true
;
if
(
Bot
.
LifePoints
<=
2000
)
return
true
;
...
...
@@ -522,7 +530,7 @@ namespace WindBot.Game.AI.Decks
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
if
(
DefaultOnBecomeTarget
())
return
true
;
int
count
=
Enemy
.
GetFieldHandCount
();
if
(
Enemy
.
LifePoints
<
count
*
200
)
return
true
;
if
(
count
>=
8
)
return
true
;
...
...
@@ -533,7 +541,7 @@ namespace WindBot.Game.AI.Decks
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
if
(
DefaultOnBecomeTarget
())
return
true
;
int
count
=
Enemy
.
GetFieldCount
();
if
(
Enemy
.
LifePoints
<
count
*
300
)
return
true
;
if
(
count
>=
5
)
return
true
;
...
...
@@ -551,7 +559,7 @@ namespace WindBot.Game.AI.Decks
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
if
(
DefaultOnBecomeTarget
())
return
true
;
int
count
=
Enemy
.
GetMonsterCount
();
if
(
Enemy
.
LifePoints
<=
count
*
500
)
return
true
;
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
count
<=
2
&&
count
>=
1
)
...
...
@@ -566,7 +574,7 @@ namespace WindBot.Game.AI.Decks
{
if
(
drawfirst
)
return
true
;
if
(
must_chain
())
return
true
;
if
(
DefaultOnBecomeTarget
())
return
true
;
int
chain
=
Duel
.
CurrentChain
.
Count
;
if
(
strike_count
>=
2
&&
chain
>=
2
)
return
true
;
if
(
Enemy
.
LifePoints
<=
(
chain
+
1
)
*
400
)
return
true
;
...
...
@@ -576,7 +584,7 @@ namespace WindBot.Game.AI.Decks
private
bool
BalanceOfJudgmenteff
()
{
if
(
must_chain
())
return
true
;
if
(
DefaultOnBecomeTarget
())
return
true
;
int
count
=
(
Enemy
.
GetFieldCount
()
-
Bot
.
GetFieldHandCount
());
if
(
count
>=
2
)
return
true
;
return
false
;
...
...
@@ -628,7 +636,10 @@ namespace WindBot.Game.AI.Decks
newlist
.
Add
(
newmonster
);
}
if
(!
Linkuribohused
)
return
false
;
if
(
Enemy
.
BattlingMonster
.
Attack
>
1800
&&
Bot
.
HasInSpellZone
(
CardId
.
MagicCylinder
))
return
false
;
if
(
Enemy
.
BattlingMonster
!=
null
)
{
if
(
Enemy
.
BattlingMonster
.
Attack
>
1800
&&
Bot
.
HasInSpellZone
(
CardId
.
MagicCylinder
))
return
false
;
}
if
(
GetTotalATK
(
newlist
)
>=
3000
&&
Bot
.
HasInSpellZone
(
CardId
.
BlazingMirrorForce
))
return
false
;
if
(
AI
.
Utils
.
GetLastChainCard
()
==
null
)
return
true
;
if
(
AI
.
Utils
.
GetLastChainCard
().
Id
==
CardId
.
Linkuriboh
)
return
false
;
...
...
Game/AI/Decks/LightswornShaddoldinosourExecutor.cs
View file @
724c738b
...
...
@@ -7,7 +7,7 @@ using WindBot.Game.AI;
namespace
WindBot.Game.AI.Decks
{
// NOT FINISHED YET
[
Deck
(
"LightswornShaddoldinosour"
,
"AI_LightswornShaddoldinosour"
,
"ver0.
1
"
)]
[
Deck
(
"LightswornShaddoldinosour"
,
"AI_LightswornShaddoldinosour"
,
"ver0.
5
"
)]
public
class
LightswornShaddoldinosour
:
DefaultExecutor
{
public
class
CardId
...
...
@@ -46,7 +46,7 @@ namespace WindBot.Game.AI.Decks
public
const
int
MonsterReborn
=
83764718
;
public
const
int
ChargeOfTheLightBrigade
=
94886282
;
public
const
int
InterruptedKaijuSlumber
=
99330325
;
public
const
int
ElShaddollFusion
=
6417578
;
//
public const int ElShaddollFusion = 6417578;
//trap
public
const
int
infiniteTransience
=
10045474
;
...
...
@@ -76,8 +76,7 @@ namespace WindBot.Game.AI.Decks
public
LightswornShaddoldinosour
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
{
//counter
//counter
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GhostOgre
,
Hand_act_eff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AshBlossom
,
Hand_act_eff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MaxxC
,
MaxxC
);
...
...
@@ -91,26 +90,23 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PotOfAvarice
,
PotofAvariceeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ChargeOfTheLightBrigade
,
ChargeOfTheLightBrigadeEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
FoolishBurial
,
FoolishBurialEffect
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
InterruptedKaijuSlumber
,
DefaultInterruptedKaijuSlumber
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
InterruptedKaijuSlumber
,
InterruptedKaijuSlumbereff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollFusion
,
ShaddollFusioneff
);
//Reborn
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MonsterReborn
,
RebornEffect
);
//Normal Summon
//Normal Summon
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Raiden
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Raiden
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Raiden
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
KeeperOfDragonicMagic
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
KeeperOfDragonicMagic
,
KeeperOfDragonicMagiceff
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
ShaddollSquamata
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
GlowUpBulb
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Lumina
,
Luminasummon
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
ShaddollHedgehog
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
ShaddollDragon
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
FairyTailSnow
,
FairyTailSnowsummon
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
FairyTailSnow
,
FairyTailSnoweff
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Lumina
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Lumina
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
FairyTailSnow
,
FairyTailSnoweff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Lumina
,
Luminaeff
);
//activate
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GlowUpBulb
,
GlowUpBulbeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CrystronNeedlefiber
,
CrystronNeedlefibereff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GlowUpBulb
,
GlowUpBulbeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
TG_WonderMagician
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CoralDragon
,
CoralDragoneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RedWyvern
,
RedWyverneff
);
...
...
@@ -120,39 +116,54 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Michael
,
Michaeleff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ScarlightRedDragon
,
ScarlightRedDragoneff
);
//Sp Summon
//AddExecutor(ExecutorType.SpSummon, CardId.CrystronNeedlefiber, CrystronNeedlefibersp);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CrystronNeedlefiber
,
CrystronNeedlefibereff
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
UltimateConductorTytanno
,
UltimateConductorTytannosp
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
UltimateConductorTytanno
,
UltimateConductorTytannoeff
);
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
.
Activate
,
CardId
.
MinervaTheExalte
,
MinervaTheExaltedEffect
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
GamecieltheSeaTurtleKaiju
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
CrystronNeedlefiber
,
CrystronNeedlefibersp
);
//Kaiju
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
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
OvertexCoatls
,
OvertexCoatlseff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Shaddoll
Beast
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Shaddoll
Falco
,
ShaddollFalcoeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Shaddoll
Squamata
,
ShaddollSquamataeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Shaddoll
Core
,
ShaddollCoreeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Shaddoll
Beast
,
ShaddollBeasteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Shaddoll
Falco
,
ShaddollFalcoeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollDragon
,
ShaddollDragoneff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollHedgehog
,
ShaddollHedgehogeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollSquamata
,
ShaddollSquamataeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
GiantRex
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollConstruct
,
ElShaddollConstructeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollGrysra
,
ElShaddollGrysraeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollShekhinaga
,
ElShaddollShekhinagaeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ElShaddollWinda
);
//spellset
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
MonsterReborn
,
spellset
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
PotOfAvarice
,
spellset
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ThatGrassLooksgreener
,
spellset
);
//spellset
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ThatGrassLooksgreener
,
SpellSetZone
);
AddExecutor
(
ExecutorType
.
SpellSet
,
SpellSetZone
);
//trapset
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
LostWind
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
SinisterShadowGames
,
TrapSetWhenZoneFree
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
LostWind
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
SinisterShadowGames
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ShaddollCore
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
infiniteTransience
,
SetIsFieldEmpty
);
//trap activate
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
LostWind
,
LostWindeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SinisterShadowGames
,
SinisterShadowGameseff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ShaddollCore
,
ShaddollCoreeff
);
AddExecutor
(
ExecutorType
.
Repos
,
MonsterRepos
);
}
public
int
[]
all_List
()
...
...
@@ -191,7 +202,7 @@ namespace WindBot.Game.AI.Decks
CardId
.
MonsterReborn
,
CardId
.
ChargeOfTheLightBrigade
,
CardId
.
InterruptedKaijuSlumber
,
CardId
.
ElShaddollFusion
,
//
CardId.ElShaddollFusion,
CardId
.
infiniteTransience
,
CardId
.
LostWind
,
...
...
@@ -207,38 +218,92 @@ namespace WindBot.Game.AI.Decks
{
CardId
.
GlowUpBulb
,
CardId
.
PlaguespreaderZombie
,
CardId
.
InterruptedKaijuSlumber
,
CardId
.
ChargeOfTheLightBrigade
,
CardId
.
FoolishBurial
,
CardId
.
HarpiesFeatherDuster
,
CardId
.
ChargeOfTheLightBrigade
,
CardId
.
ThatGrassLooksgreener
,
CardId
.
HarpiesFeatherDuster
,
CardId
.
FairyTailSnow
,
CardId
.
GiantRex
,
CardId
.
Lumina
,
CardId
.
OvertexCoatls
,
CardId
.
InterruptedKaijuSlumber
,
CardId
.
FoolishBurial
,
};
}
int
Ultimate_ss
=
0
;
int
Enemy_atk
=
0
;
bool
Pillused
=
false
;
bool
CrystronNeedlefibereff_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
()
{
Pillused
=
false
;
OvertexCoatlseff_used
=
false
;
CrystronNeedlefibereff_used
=
false
;
ShaddollBeast_used
=
false
;
ShaddollFalco_used
=
false
;
ShaddollSquamata_used
=
false
;
ShaddollDragon_used
=
false
;
ShaddollHedgehog_used
=
false
;
}
private
bool
UltimateConductorTytannoeff
()
private
bool
Luminasummon
()
{
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
)
{
IList
<
int
>
targets
=
new
[]
{
private
bool
UltimateConductorTytannoeff
(
)
{
IList
<
int
>
targets
=
new
[]
{
CardId
.
OvertexCoatls
,
CardId
.
ShaddollBeast
,
CardId
.
ShaddollSquamata
,
...
...
@@ -249,12 +314,11 @@ namespace WindBot.Game.AI.Decks
CardId
.
PlaguespreaderZombie
,
CardId
.
FairyTailSnow
,
CardId
.
KeeperOfDragonicMagic
,
CardId
.
Raiden
,
CardId
.
Lumina
,
CardId
.
DogorantheMadFlameKaiju
,
CardId
.
GamecieltheSeaTurtleKaiju
,
CardId
.
RadiantheMultidimensionalKaiju
,
CardId
.
GiantRex
,
CardId
.
GiantRex
,
CardId
.
ShaddollCore
,
CardId
.
SouleatingOviraptor
,
CardId
.
Raiden
,
CardId
.
Lumina
,
...
...
@@ -262,8 +326,21 @@ namespace WindBot.Game.AI.Decks
CardId
.
GhostOgre
,
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
;
}
AI
.
SelectCard
(
targets
);
...
...
@@ -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
()
{
Ultimate_ss
++;
Pillused
=
true
;
foreach
(
ClientCard
card
in
Bot
.
GetMonsters
())
{
if
(
card
.
Id
==
CardId
.
UltimateConductorTytanno
&&
card
.
IsFaceup
())
return
false
;
}
Ultimate_ss
++;
return
true
;
}
...
...
@@ -298,15 +399,14 @@ namespace WindBot.Game.AI.Decks
AI
.
SelectCard
(
Useless_List
());
return
true
;
}
return
true
;
}
private
bool
MonsterRepos
()
{
if
(
Card
.
Id
==
CardId
.
ElShaddollConstruct
&&
Card
.
IsAttack
())
return
false
;
{
if
(
Card
.
Id
==
CardId
.
ElShaddollConstruct
&&
Card
.
IsAttack
())
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
();
}
...
...
@@ -418,9 +518,13 @@ namespace WindBot.Game.AI.Decks
private
bool
FairyTailSnowsummon
()
{
return
Enemy
.
GetMonsterCount
()>=
2
;
IList
<
ClientCard
>
list
=
Enemy
.
GetMonsters
();
if
(
list
!=
null
)
{
if
(
list
.
GetHighestAttackMonster
().
IsFaceup
())
return
true
;
}
return
false
;
}
...
...
@@ -429,8 +533,45 @@ namespace WindBot.Game.AI.Decks
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
AI
.
SelectCard
(
AI
.
Utils
.
GetBestEnemyMonster
());
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
;
}
...
...
@@ -452,6 +593,9 @@ namespace WindBot.Game.AI.Decks
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
)
||
Bot
.
HasInMonstersZone
(
CardId
.
FairyTailSnow
)
||
Bot
.
HasInMonstersZone
(
CardId
.
KeeperOfDragonicMagic
)
||
...
...
@@ -486,21 +630,16 @@ namespace WindBot.Game.AI.Decks
}
return
false
;
}
private
bool
spellset
()
{
return
Bot
.
Hand
.
Count
>
6
;
}
private
bool
RebornEffect
()
private
bool
Reborneff
()
{
if
(
Bot
.
HasInGraveyard
(
CardId
.
UltimateConductorTytanno
)&&
Ultimate_ss
>
0
)
{
AI
.
SelectCard
(
CardId
.
UltimateConductorTytanno
);
return
true
;
}
if
(!
AI
.
Utils
.
IsOneEnemyBetter
(
true
))
return
false
;
IList
<
int
>
targets
=
new
[]
{
CardId
.
ElShaddollConstruct
,
CardId
.
DogorantheMadFlameKaiju
,
...
...
@@ -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
()
{
if
(
!
Bot
.
HasInHand
(
CardId
.
Raiden
))
AI
.
SelectCard
(
CardId
.
Raiden
);
if
(
Bot
.
HasInGraveyard
(
CardId
.
Raiden
)
||
Bot
.
HasInHand
(
CardId
.
Raiden
))
AI
.
SelectCard
(
CardId
.
Lumina
);
else
AI
.
SelectCard
(
new
[]
{
CardId
.
Lumina
,
});
AI
.
SelectCard
(
CardId
.
Raiden
);
return
true
;
}
// all Shaddoll
private
bool
ElShaddollConstruct
eff
()
private
bool
SinisterShadowGames
eff
()
{
/* if (Duel.Phase == DuelPhase.Battle
)
if (Enemy.BattlingMonster.Attack < 2800)
return false;*/
if
(
ActivateDescription
==-
1
)
{
AI
.
SelectCard
(
CardId
.
ShaddollSquamata
);
}
if
(
Bot
.
HasInGraveyard
(
CardId
.
ShaddollFusion
)
)
AI
.
SelectCard
(
CardId
.
ShaddollCore
);
else
AI
.
SelectCard
(
new
[]
{
CardId
.
ShaddollBeast
,
});
return
true
;
}
private
bool
ElShaddollShekhinaga
eff
()
private
bool
ShaddollCore
eff
()
{
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
else
if
(
Card
.
Location
==
CardLocation
.
SpellZone
)
{
if
(
DefaultBreakthroughSkill
())
if
(
Duel
.
Player
==
1
&&
Bot
.
BattlingMonster
==
null
&&
Duel
.
Phase
==
DuelPhase
.
BattleStart
||
DefaultOnBecomeTarget
())
{
AI
.
SelectCard
(
new
[]
{
CardId
.
ShaddollBeast
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollHedgehog
,
CardId
.
ShaddollDragon
,
CardId
.
ShaddollFalco
,
}
);
Logger
.
DebugWriteLine
(
"+++++++++++ShaddollCoreeffdododoo++++++++++"
);
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
return
true
;
}
else
return
false
;
return
false
;
}
return
true
;
}
private
bool
ElShaddollGrysraeff
()
{
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
return
true
;
}
private
bool
ShaddollFusioneff
()
{
if
(
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollConstruct
)
||
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollGrysra
)
||
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollShekhinaga
)
||
Bot
.
HasInMonstersZone
(
CardId
.
ElShaddollWinda
))
return
false
;
List
<
ClientCard
>
extra_zone_check
=
Bot
.
GetMonstersInExtraZone
();
foreach
(
ClientCard
extra_monster
in
extra_zone_check
)
if
(
extra_monster
.
HasType
(
CardType
.
Xyz
)
||
extra_monster
.
HasType
(
CardType
.
Fusion
))
return
false
;
bool
deck_check
=
false
;
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
...
...
@@ -625,8 +743,9 @@ namespace WindBot.Game.AI.Decks
});
AI
.
SelectNextCard
(
new
[]
{
CardId
.
ShaddollBeast
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollBeast
,
CardId
.
ShaddollHedgehog
,
CardId
.
ShaddollDragon
,
CardId
.
ShaddollFalco
,
...
...
@@ -635,7 +754,45 @@ namespace WindBot.Game.AI.Decks
AI
.
SelectPosition
(
CardPosition
.
FaceUpAttack
);
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
)
...
...
@@ -651,6 +808,7 @@ namespace WindBot.Game.AI.Decks
List
<
ClientCard
>
material_1
=
Bot
.
GetMonsters
();
foreach
(
ClientCard
monster
in
material_1
)
{
if
(
monster
==
null
)
break
;
if
(
monster
.
HasAttribute
(
CardAttribute
.
Light
))
{
AI
.
SelectCard
(
CardId
.
ElShaddollConstruct
);
...
...
@@ -663,37 +821,97 @@ namespace WindBot.Game.AI.Decks
}
private
bool
SinisterShadowGameseff
()
private
bool
ElShaddollShekhinagaeff
()
{
AI
.
SelectCard
(
new
[]
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
else
{
CardId
.
ShaddollBeast
,
if
(
DefaultBreakthroughSkill
())
{
AI
.
SelectCard
(
new
[]
{
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
;
}
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
);
return
true
;
if
(!
Bot
.
HasInHand
(
CardId
.
ShaddollFusion
)
&&
Bot
.
HasInGraveyard
(
CardId
.
ShaddollFusion
))
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
);
}
return
false
;
}
else
{
ClientCard
target
=
AI
.
Utils
.
GetBestEnemyMonster
();
AI
.
SelectCard
(
target
);
if
(
Enemy
.
GetMonsterCount
()
==
0
)
return
false
;
}
return
true
;
}
private
bool
ShaddollBeasteff
()
{
ShaddollBeast_used
=
true
;
return
true
;
}
private
bool
ShaddollFalcoeff
()
{
ShaddollFalco_used
=
true
;
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
return
true
;
else
...
...
@@ -715,12 +933,26 @@ namespace WindBot.Game.AI.Decks
private
bool
ShaddollHedgehogeff
()
{
ShaddollHedgehog_used
=
true
;
if
(
Card
.
Location
!=
CardLocation
.
MonsterZone
)
{
AI
.
SelectCard
(
new
[]
if
(
AI
.
Utils
.
ChainContainsCard
(
CardId
.
ElShaddollConstruct
))
{
CardId
.
ShaddollSquamata
,
});
AI
.
SelectNextCard
(
new
[]{
CardId
.
ShaddollFalco
,
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollDragon
,
});
}
else
{
AI
.
SelectCard
(
new
[]{
CardId
.
ShaddollSquamata
,
CardId
.
ShaddollDragon
,
});
}
}
else
{
...
...
@@ -732,6 +964,7 @@ namespace WindBot.Game.AI.Decks
private
bool
ShaddollDragoneff
()
{
ShaddollDragon_used
=
true
;
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
ClientCard
target
=
AI
.
Utils
.
GetBestEnemyCard
();
...
...
@@ -745,28 +978,8 @@ namespace WindBot.Game.AI.Decks
return
true
;
}
}
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
()
{
List
<
ClientCard
>
check
=
Enemy
.
GetMonsters
();
...
...
@@ -811,18 +1024,38 @@ namespace WindBot.Game.AI.Decks
}
//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
()
{
if
(
Card
.
Location
==
CardLocation
.
Grave
)
return
true
;
if
(
Bot
.
LifePoints
<=
1000
)
return
false
;
return
true
;
ClientCard
select
=
AI
.
Utils
.
GetBestEnemyMonster
();
if
(
select
==
null
)
return
false
;
if
(
select
!=
null
)
{
AI
.
SelectCard
(
select
);
return
true
;
}
return
false
;
}
private
bool
MinervaTheExaltedEffect
()
{
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
if
(
Bot
.
Deck
.
Count
<=
10
)
return
false
;
return
true
;
}
else
...
...
@@ -869,29 +1102,46 @@ namespace WindBot.Game.AI.Decks
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
)
)
IList
<
int
>
check
=
new
[]
{
AI
.
SelectCard
(
new
[]
{
CardId
.
KeeperOfDragonicMagic
,
CardId
.
Lumina
,
CardId
.
FairyTailSnow
,
CardId
.
SouleatingOviraptor
,
CardId
.
Raiden
,
CardId
.
GiantRex
,
});
AI
.
SelectNextCard
(
CardId
.
GlowUpBulb
);
}
CardId
.
GlowUpBulb
,
CardId
.
FairyTailSnow
,
CardId
.
KeeperOfDragonicMagic
,
CardId
.
SouleatingOviraptor
,
CardId
.
GiantRex
,
CardId
.
Lumina
,
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
;
}
public
bool
CrystronNeedlefibereff
()
{
bool
DarkHole
=
false
;
foreach
(
ClientCard
card
in
Enemy
.
GetSpells
())
{
if
(
card
.
Id
==
53129443
&&
card
.
IsFaceup
())
{
DarkHole
=
true
;
}
}
if
(
Duel
.
Player
==
0
)
{
...
...
@@ -899,9 +1149,16 @@ namespace WindBot.Game.AI.Decks
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
(
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
))
{
AI
.
SelectCard
(
CardId
.
TG_WonderMagician
);
if
(
AI
.
Utils
.
IsOneEnemyBetterThanValue
(
1900
,
true
))
{
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
...
...
@@ -915,6 +1172,10 @@ namespace WindBot.Game.AI.Decks
return
false
;
}
private
bool
ScarlightRedDragonsp
()
{
return
false
;
}
private
bool
ScarlightRedDragoneff
()
{
...
...
@@ -980,6 +1241,10 @@ namespace WindBot.Game.AI.Decks
}
private
bool
RedWyvernsp
()
{
return
false
;
}
private
bool
RedWyverneff
()
{
...
...
@@ -1030,7 +1295,7 @@ namespace WindBot.Game.AI.Decks
attacker
.
RealPower
=
9999
;
if
(
attacker
.
Id
==
CardId
.
UltimateConductorTytanno
&&
!
attacker
.
IsDisabled
()
&&
defender
.
IsDefense
())
attacker
.
RealPower
=
9999
;
}
}
return
base
.
OnPreBattleBetween
(
attacker
,
defender
);
}
...
...
Game/AI/DefaultExecutor.cs
View file @
724c738b
...
...
@@ -20,10 +20,12 @@ namespace WindBot.Game.AI
public
const
int
GamecieltheSeaTurtleKaiju
=
55063751
;
public
const
int
SuperAntiKaijuWarMachineMechaDogoran
=
84769941
;
public
const
int
UltimateConductorTytanno
=
18940556
;
public
const
int
DupeFrog
=
46239604
;
public
const
int
MaraudingCaptain
=
2460565
;
public
const
int
HarpiesFeatherDuster
=
18144506
;
public
const
int
MysticalSpaceTyphoon
=
5318639
;
public
const
int
CosmicCyclone
=
8267140
;
public
const
int
ChickenGame
=
67616300
;
...
...
@@ -86,9 +88,18 @@ namespace WindBot.Game.AI
if
(!
attacker
.
IsMonsterHasPreventActivationEffectInBattle
())
{
if
(
defender
.
IsMonster
Dangerous
()
||
(
defender
.
IsMonsterInvincible
()
&&
defender
.
IsDefense
()
))
if
(
defender
.
IsMonster
Invincible
()
&&
defender
.
IsDefense
(
))
return
false
;
if
(
defender
.
IsMonsterDangerous
())
{
bool
canignoreit
=
false
;
if
(
attacker
.
Id
==
_CardId
.
UltimateConductorTytanno
&&
!
attacker
.
IsDisabled
()
&&
defender
.
IsDefense
())
canignoreit
=
true
;
if
(!
canignoreit
)
return
false
;
}
if
(
defender
.
Id
==
_CardId
.
CrystalWingSynchroDragon
&&
defender
.
IsAttack
()
&&
!
defender
.
IsDisabled
()
&&
attacker
.
Level
>=
5
)
return
false
;
...
...
@@ -452,6 +463,15 @@ namespace WindBot.Game.AI
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>
/// Chain enemy activation or summon.
/// </summary>
...
...
Game/AI/Enums/Floodgate.cs
View file @
724c738b
...
...
@@ -59,13 +59,19 @@
NaturiaExterio
=
99916754
,
TheLastWarriorfromAnotherPlanet
=
86099788
,
ThousandEyesRestrict
=
63519819
,
ElShaddollWinda
=
94977269
,
MaskedHERODarkLaw
=
58481572
,
NaturiaBeast
=
33198837
,
NaturiaBarkion
=
2956282
,
EvilswarmOphion
=
91279700
,
MermailAbyssgaios
=
74371660
,
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 @
724c738b
...
...
@@ -271,8 +271,8 @@ namespace WindBot.Game
{
int
player
=
packet
.
ReadInt16
();
string
message
=
packet
.
ReadUnicode
(
256
);
string
myName
=
_room
.
Position
==
0
?
_room
.
Names
[
0
]
:
_room
.
Names
[
1
];
string
otherName
=
_room
.
Position
==
0
?
_room
.
Names
[
1
]
:
_room
.
Names
[
0
];
string
myName
=
(
player
!=
0
)
?
_room
.
Names
[
1
]
:
_room
.
Names
[
0
];
string
otherName
=
(
player
==
0
)
?
_room
.
Names
[
1
]
:
_room
.
Names
[
0
];
if
(
player
<
4
)
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