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
0c4b3474
Commit
0c4b3474
authored
May 29, 2018
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update ChainBurn deck by handsomekiwi
parent
745421f7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
868 additions
and
685 deletions
+868
-685
Game/AI/Decks/ChainBurnExecutor.cs
Game/AI/Decks/ChainBurnExecutor.cs
+868
-685
No files found.
Game/AI/Decks/ChainBurnExecutor.cs
View file @
0c4b3474
using
YGOSharp.OCGWrapper.Enums
;
using
YGOSharp.OCGWrapper.Enums
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
WindBot
;
using
WindBot
;
using
WindBot.Game
;
using
WindBot.Game
;
using
WindBot.Game.AI
;
using
WindBot.Game.AI
;
namespace
WindBot.Game.AI.Decks
namespace
WindBot.Game.AI.Decks
{
{
[
Deck
(
"ChainBurn"
,
"AI_ChainBurn"
,
"Normal"
)]
[
Deck
(
"ChainBurn"
,
"AI_ChainBurn"
,
"Normal"
)]
public
class
ChainBurnExecutor
:
DefaultExecutor
public
class
ChainBurnExecutor
:
DefaultExecutor
{
{
public
class
CardId
public
class
CardId
{
{
public
const
int
SandaionTheTimloard
=
100227025
;
public
const
int
SandaionTheTimelord
=
100227025
;
public
const
int
Mathematician
=
41386308
;
public
const
int
MichionTimelord
=
100227021
;
public
const
int
DiceJar
=
3549275
;
public
const
int
Mathematician
=
41386308
;
public
const
int
CardcarD
=
45812361
;
public
const
int
DiceJar
=
3549275
;
public
const
int
BattleFader
=
19665973
;
public
const
int
CardcarD
=
45812361
;
public
const
int
AbouluteKingBackJack
=
60990740
;
public
const
int
BattleFader
=
19665973
;
public
const
int
AbouluteKingBackJack
=
60990740
;
public
const
int
PotOfDesires
=
35261759
;
public
const
int
CardOfDemise
=
59750328
;
public
const
int
PotOfDesires
=
35261759
;
public
const
int
PotOfDuality
=
98645731
;
public
const
int
CardOfDemise
=
59750328
;
public
const
int
ChainStrike
=
91623717
;
public
const
int
PotOfDuality
=
98645731
;
public
const
int
ChainStrike
=
91623717
;
public
const
int
Waboku
=
12607053
;
public
const
int
SecretBlast
=
18252559
;
public
const
int
Waboku
=
12607053
;
public
const
int
JustDesserts
=
24068492
;
public
const
int
SecretBlast
=
18252559
;
public
const
int
SectetBarrel
=
27053506
;
public
const
int
JustDesserts
=
24068492
;
public
const
int
OjamaTrio
=
29843091
;
public
const
int
SectetBarrel
=
27053506
;
public
const
int
ThreateningRoar
=
36361633
;
public
const
int
OjamaTrio
=
29843091
;
public
const
int
Ceasefire
=
36468556
;
public
const
int
ThreateningRoar
=
36361633
;
public
const
int
RecklessGreed
=
37576645
;
public
const
int
Ceasefire
=
36468556
;
public
const
int
MagicCylinder
=
62279055
;
public
const
int
RecklessGreed
=
37576645
;
public
const
int
BalanceOfJudgment
=
67443336
;
public
const
int
MagicCylinder
=
62279055
;
public
const
int
BlazingMirrorForce
=
75249652
;
public
const
int
BalanceOfJudgment
=
67443336
;
public
const
int
RingOfDestruction
=
83555666
;
public
const
int
BlazingMirrorForce
=
75249652
;
public
const
int
AccuulatedFortune
=
98444741
;
public
const
int
RingOfDestruction
=
83555666
;
public
const
int
AccuulatedFortune
=
98444741
;
public
const
int
Linkuriboh
=
41999284
;
public
const
int
HarpiesFeatherDuster
=
18144506
;
public
const
int
Linkuriboh
=
41999284
;
}
public
const
int
HarpiesFeatherDuster
=
18144506
;
}
public
ChainBurnExecutor
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
public
ChainBurnExecutor
(
GameAI
ai
,
Duel
duel
)
{
:
base
(
ai
,
duel
)
//first add
{
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PotOfDesires
);
//first add
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PotOfDuality
,
PotOfDualityeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PotOfDesires
);
//normal summon
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
PotOfDuality
,
PotOfDualityeff
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Mathematician
);
//normal summon
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Mathematician
,
Mathematicianeff
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
MichionTimelord
,
MichionTimelordsummon
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
DiceJar
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
SandaionTheTimelord
,
SandaionTheTimelord_summon
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
DiceJar
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Mathematician
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
AbouluteKingBackJack
,
AbouluteKingBackJacksummon
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Mathematician
,
Mathematicianeff
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
AbouluteKingBackJack
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
DiceJar
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AbouluteKingBackJack
,
AbouluteKingBackJackeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
DiceJar
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
CardcarD
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
CardcarD
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
SandaionTheTimloard
,
SandaionTheTimloard_summon
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
AbouluteKingBackJack
,
AbouluteKingBackJacksummon
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SandaionTheTimloard
,
SandaionTheTimloardeff
);
AddExecutor
(
ExecutorType
.
MonsterSet
,
CardId
.
AbouluteKingBackJack
);
// Set traps
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
Waboku
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MichionTimelord
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ThreateningRoar
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SandaionTheTimelord
,
SandaionTheTimelordeff
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
BlazingMirrorForce
);
// Set traps
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
OjamaTrio
,
OjamaTrioset
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
Waboku
);
AddExecutor
(
ExecutorType
.
SpellSet
,
BrunSpellSet
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
ThreateningRoar
);
//afer set
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
BlazingMirrorForce
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CardcarD
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
OjamaTrio
,
OjamaTrioset
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CardOfDemise
,
CardOfDemiseeff
);
AddExecutor
(
ExecutorType
.
SpellSet
,
BrunSpellSet
);
//activate trap
//afer set
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
BalanceOfJudgment
,
BalanceOfJudgmenteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CardcarD
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AccuulatedFortune
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CardOfDemise
,
CardOfDemiseeff
);
//battle
//activate trap
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
BalanceOfJudgment
,
BalanceOfJudgmenteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ThreateningRoar
,
ThreateningRoareff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AccuulatedFortune
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Waboku
,
Wabokueff
);
//battle
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
BattleFader
,
BattleFadereff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
BlazingMirrorForce
,
BlazingMirrorForceeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MagicCylinder
,
MagicCylindereff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MagicCylinder
,
MagicCylindereff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
BlazingMirrorForce
,
BlazingMirrorForceeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ThreateningRoar
,
ThreateningRoareff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RingOfDestruction
,
Ring_act
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Waboku
,
Wabokueff
);
//chain
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
BattleFader
,
BattleFadereff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
JustDesserts
,
JustDessertseff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RingOfDestruction
,
Ring_act
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
OjamaTrio
,
OjamaTrioeff
);
//chain
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Ceasefire
,
Ceasefireeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
JustDesserts
,
JustDessertseff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SecretBlast
,
SecretBlasteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Ceasefire
,
Ceasefireeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SectetBarrel
,
SectetBarreleff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SecretBlast
,
SecretBlasteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RecklessGreed
,
RecklessGreedeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SectetBarrel
,
SectetBarreleff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ChainStrike
,
ChainStrikeeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RecklessGreed
,
RecklessGreedeff
);
//sp
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
OjamaTrio
,
OjamaTrioeff
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Linkuriboh
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AbouluteKingBackJack
,
AbouluteKingBackJackeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Linkuriboh
,
Linkuriboheff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ChainStrike
,
ChainStrikeeff
);
//sp
}
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Linkuriboh
);
public
int
[]
all_List
()
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Linkuriboh
,
Linkuriboheff
);
{
AddExecutor
(
ExecutorType
.
Repos
,
MonsterRepos
);
return
new
[]
{
}
CardId
.
SandaionTheTimloard
,
public
int
[]
all_List
()
CardId
.
Mathematician
,
{
CardId
.
DiceJar
,
return
new
[]
CardId
.
CardcarD
,
{
CardId
.
BattleFader
,
CardId
.
SandaionTheTimelord
,
CardId
.
AbouluteKingBackJack
,
CardId
.
MichionTimelord
,
CardId
.
Mathematician
,
CardId
.
PotOfDesires
,
CardId
.
DiceJar
,
CardId
.
CardOfDemise
,
CardId
.
CardcarD
,
CardId
.
PotOfDuality
,
CardId
.
BattleFader
,
CardId
.
ChainStrike
,
CardId
.
AbouluteKingBackJack
,
CardId
.
Waboku
,
CardId
.
PotOfDesires
,
CardId
.
SecretBlast
,
CardId
.
CardOfDemise
,
CardId
.
JustDesserts
,
CardId
.
PotOfDuality
,
CardId
.
OjamaTrio
,
CardId
.
ChainStrike
,
CardId
.
SectetBarrel
,
CardId
.
ThreateningRoar
,
CardId
.
Waboku
,
CardId
.
Ceasefire
,
CardId
.
SecretBlast
,
CardId
.
RecklessGreed
,
CardId
.
JustDesserts
,
CardId
.
MagicCylinder
,
CardId
.
OjamaTrio
,
CardId
.
BalanceOfJudgment
,
CardId
.
SectetBarrel
,
CardId
.
BlazingMirrorForce
,
CardId
.
ThreateningRoar
,
CardId
.
RingOfDestruction
,
CardId
.
Ceasefire
,
CardId
.
AccuulatedFortune
,
CardId
.
RecklessGreed
,
};
CardId
.
MagicCylinder
,
}
CardId
.
BalanceOfJudgment
,
public
int
[]
AbouluteKingBackJack_List_1
()
CardId
.
BlazingMirrorForce
,
{
CardId
.
RingOfDestruction
,
return
new
[]
{
CardId
.
AccuulatedFortune
,
CardId
.
BlazingMirrorForce
,
};
CardId
.
Waboku
,
}
CardId
.
ThreateningRoar
,
public
int
[]
AbouluteKingBackJack_List_1
()
CardId
.
MagicCylinder
,
{
CardId
.
RingOfDestruction
,
return
new
[]
{
CardId
.
RecklessGreed
,
CardId
.
BlazingMirrorForce
,
CardId
.
SecretBlast
,
CardId
.
Waboku
,
CardId
.
JustDesserts
,
CardId
.
ThreateningRoar
,
CardId
.
OjamaTrio
,
CardId
.
MagicCylinder
,
CardId
.
SectetBarrel
,
CardId
.
RingOfDestruction
,
CardId
.
Ceasefire
,
CardId
.
RecklessGreed
,
CardId
.
BalanceOfJudgment
,
CardId
.
SecretBlast
,
CardId
.
AccuulatedFortune
,
CardId
.
JustDesserts
,
};
CardId
.
OjamaTrio
,
}
CardId
.
SectetBarrel
,
public
int
[]
AbouluteKingBackJack_List_2
()
CardId
.
Ceasefire
,
{
CardId
.
BalanceOfJudgment
,
return
new
[]
{
CardId
.
AccuulatedFortune
,
CardId
.
SandaionTheTimloard
,
};
CardId
.
PotOfDesires
,
}
CardId
.
Mathematician
,
public
int
[]
AbouluteKingBackJack_List_2
()
CardId
.
DiceJar
,
{
CardId
.
CardcarD
,
return
new
[]
{
CardId
.
BattleFader
,
CardId
.
MichionTimelord
,
CardId
.
BlazingMirrorForce
,
CardId
.
SandaionTheTimelord
,
CardId
.
Waboku
,
CardId
.
PotOfDesires
,
CardId
.
ThreateningRoar
,
CardId
.
Mathematician
,
CardId
.
MagicCylinder
,
CardId
.
DiceJar
,
CardId
.
RingOfDestruction
,
CardId
.
CardcarD
,
CardId
.
RecklessGreed
,
CardId
.
BattleFader
,
CardId
.
SecretBlast
,
CardId
.
BlazingMirrorForce
,
CardId
.
JustDesserts
,
CardId
.
Waboku
,
CardId
.
OjamaTrio
,
CardId
.
ThreateningRoar
,
CardId
.
SectetBarrel
,
CardId
.
MagicCylinder
,
CardId
.
Ceasefire
,
CardId
.
RingOfDestruction
,
CardId
.
BalanceOfJudgment
,
CardId
.
RecklessGreed
,
CardId
.
AccuulatedFortune
,
CardId
.
SecretBlast
,
};
CardId
.
JustDesserts
,
}
CardId
.
OjamaTrio
,
public
int
[]
now_List
()
CardId
.
SectetBarrel
,
{
CardId
.
Ceasefire
,
return
new
[]
CardId
.
BalanceOfJudgment
,
{
CardId
.
AccuulatedFortune
,
};
CardId
.
Waboku
,
}
CardId
.
SecretBlast
,
public
int
[]
now_List
()
CardId
.
JustDesserts
,
{
CardId
.
SectetBarrel
,
return
new
[]
CardId
.
ThreateningRoar
,
{
CardId
.
Ceasefire
,
CardId
.
RecklessGreed
,
CardId
.
Waboku
,
CardId
.
RingOfDestruction
,
CardId
.
SecretBlast
,
CardId
.
JustDesserts
,
CardId
.
SectetBarrel
,
};
CardId
.
ThreateningRoar
,
}
CardId
.
Ceasefire
,
public
int
[]
pot_list
()
CardId
.
RecklessGreed
,
{
CardId
.
RingOfDestruction
,
return
new
[]
{
CardId
.
PotOfDesires
,
};
CardId
.
SandaionTheTimloard
,
}
CardId
.
BattleFader
,
public
int
[]
pot_list
()
{
CardId
.
Waboku
,
return
new
[]
CardId
.
ThreateningRoar
,
{
CardId
.
MagicCylinder
,
CardId
.
PotOfDesires
,
CardId
.
BlazingMirrorForce
,
CardId
.
MichionTimelord
,
CardId
.
RingOfDestruction
,
CardId
.
SandaionTheTimelord
,
};
CardId
.
BattleFader
,
}
public
int
GetTotalATK
(
IList
<
ClientCard
>
list
)
CardId
.
Waboku
,
{
CardId
.
ThreateningRoar
,
int
atk
=
0
;
CardId
.
MagicCylinder
,
foreach
(
ClientCard
c
in
list
)
CardId
.
BlazingMirrorForce
,
{
CardId
.
RingOfDestruction
,
if
(
c
==
null
)
continue
;
};
atk
+=
c
.
Attack
;
}
}
public
int
GetTotalATK
(
IList
<
ClientCard
>
list
)
return
atk
;
{
}
int
atk
=
0
;
public
bool
Has_prevent_list_0
(
int
id
)
foreach
(
ClientCard
c
in
list
)
{
{
return
(
if
(
c
==
null
)
continue
;
id
==
CardId
.
Waboku
||
atk
+=
c
.
Attack
;
id
==
CardId
.
ThreateningRoar
||
}
id
==
CardId
.
MagicCylinder
||
return
atk
;
id
==
CardId
.
BlazingMirrorForce
||
}
id
==
CardId
.
RingOfDestruction
public
bool
Has_prevent_list_0
(
int
id
)
);
{
}
return
(
public
bool
Has_prevent_list_1
(
int
id
)
id
==
CardId
.
Waboku
||
{
id
==
CardId
.
ThreateningRoar
||
return
(
id
==
CardId
.
SandaionTheTimloard
||
id
==
CardId
.
MagicCylinder
||
id
==
CardId
.
BattleFader
id
==
CardId
.
BlazingMirrorForce
||
);
id
==
CardId
.
RingOfDestruction
}
);
bool
no_sp
=
false
;
}
bool
one_turn_kill
=
false
;
public
bool
Has_prevent_list_1
(
int
id
)
bool
one_turn_kill_1
=
false
;
{
int
expected_blood
=
0
;
return
(
id
==
CardId
.
SandaionTheTimelord
||
bool
prevent_used
=
false
;
id
==
CardId
.
BattleFader
||
int
preventcount
=
0
;
id
==
CardId
.
MichionTimelord
bool
battleprevent
=
false
;
);
bool
OjamaTrioused
=
false
;
}
bool
OjamaTrioused_draw
=
false
;
bool
no_sp
=
false
;
bool
drawfirst
=
false
;
bool
one_turn_kill
=
false
;
bool
Linkuribohused
=
true
;
bool
one_turn_kill_1
=
false
;
int
Waboku_count
=
0
;
int
expected_blood
=
0
;
int
Roar_count
=
0
;
bool
prevent_used
=
false
;
int
strike_count
=
0
;
int
preventcount
=
0
;
int
greed_count
=
0
;
bool
OjamaTrioused
=
false
;
int
blast_count
=
0
;
bool
OjamaTrioused_draw
=
false
;
int
barrel_count
=
0
;
bool
OjamaTrioused_do
=
false
;
int
just_count
=
0
;
bool
drawfirst
=
false
;
int
Ojama_count
=
0
;
bool
Linkuribohused
=
true
;
int
HasAccuulatedFortune
=
0
;
bool
Timelord_check
=
false
;
public
override
bool
OnSelectHand
()
int
Waboku_count
=
0
;
{
int
Roar_count
=
0
;
return
true
;
int
strike_count
=
0
;
}
int
greed_count
=
0
;
int
blast_count
=
0
;
public
override
void
OnNewTurn
()
int
barrel_count
=
0
;
{
int
just_count
=
0
;
int
Ojama_count
=
0
;
int
HasAccuulatedFortune
=
0
;
no_sp
=
false
;
prevent_used
=
false
;
public
override
bool
OnSelectHand
()
Linkuribohused
=
true
;
{
return
true
;
}
}
public
override
void
OnNewPhase
()
{
public
override
void
OnNewTurn
()
preventcount
=
0
;
{
battleprevent
=
false
;
if
(
Bot
.
HasInHand
(
CardId
.
SandaionTheTimelord
)
||
Bot
.
HasInHand
(
CardId
.
MichionTimelord
))
OjamaTrioused
=
false
;
Logger
.
DebugWriteLine
(
"2222222222222222SandaionTheTimelord"
);
no_sp
=
false
;
IList
<
ClientCard
>
trap
=
Bot
.
GetSpells
();
prevent_used
=
false
;
IList
<
ClientCard
>
monster
=
Bot
.
GetMonsters
();
Linkuribohused
=
true
;
Timelord_check
=
false
;
foreach
(
ClientCard
card
in
trap
)
}
{
public
override
void
OnNewPhase
()
if
(
Has_prevent_list_0
(
card
.
Id
))
{
{
preventcount
=
0
;
preventcount
++;
OjamaTrioused
=
false
;
battleprevent
=
true
;
}
IList
<
ClientCard
>
trap
=
Bot
.
GetSpells
();
IList
<
ClientCard
>
monster
=
Bot
.
GetMonsters
();
}
foreach
(
ClientCard
card
in
monster
)
foreach
(
ClientCard
card
in
trap
)
{
{
if
(
Has_prevent_list_1
(
card
.
Id
))
if
(
Has_prevent_list_0
(
card
.
Id
))
{
{
preventcount
++;
preventcount
++;
battleprevent
=
true
;
}
}
}
foreach
(
ClientCard
card
in
monster
)
}
{
if
(
Has_prevent_list_1
(
card
.
Id
))
expected_blood
=
0
;
{
one_turn_kill
=
false
;
preventcount
++;
one_turn_kill_1
=
false
;
}
OjamaTrioused_draw
=
false
;
}
drawfirst
=
false
;
foreach
(
ClientCard
card
in
monster
)
HasAccuulatedFortune
=
0
;
{
strike_count
=
0
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
SandaionTheTimelord
)
||
greed_count
=
0
;
Bot
.
HasInMonstersZone
(
CardId
.
MichionTimelord
))
blast_count
=
0
;
{
barrel_count
=
0
;
prevent_used
=
true
;
just_count
=
0
;
Timelord_check
=
true
;
Waboku_count
=
0
;
}
Roar_count
=
0
;
}
Ojama_count
=
0
;
if
(
prevent_used
&&
Timelord_check
)
{
IList
<
ClientCard
>
check
=
Bot
.
GetSpells
();
if
(!
Bot
.
HasInMonstersZone
(
CardId
.
SandaionTheTimelord
)
||
foreach
(
ClientCard
card
in
check
)
!
Bot
.
HasInMonstersZone
(
CardId
.
MichionTimelord
))
{
prevent_used
=
false
;
if
(
card
.
Id
==
CardId
.
AccuulatedFortune
)
}
HasAccuulatedFortune
++;
expected_blood
=
0
;
one_turn_kill
=
false
;
}
one_turn_kill_1
=
false
;
foreach
(
ClientCard
card
in
check
)
OjamaTrioused_draw
=
false
;
{
OjamaTrioused_do
=
false
;
if
(
card
.
Id
==
CardId
.
SecretBlast
)
drawfirst
=
false
;
blast_count
++;
HasAccuulatedFortune
=
0
;
strike_count
=
0
;
}
greed_count
=
0
;
foreach
(
ClientCard
card
in
check
)
blast_count
=
0
;
{
barrel_count
=
0
;
if
(
card
.
Id
==
CardId
.
SectetBarrel
)
just_count
=
0
;
barrel_count
++;
Waboku_count
=
0
;
Roar_count
=
0
;
}
Ojama_count
=
0
;
foreach
(
ClientCard
card
in
check
)
{
IList
<
ClientCard
>
check
=
Bot
.
GetSpells
();
if
(
card
.
Id
==
CardId
.
JustDesserts
)
foreach
(
ClientCard
card
in
check
)
just_count
++;
{
if
(
card
.
Id
==
CardId
.
AccuulatedFortune
)
}
HasAccuulatedFortune
++;
foreach
(
ClientCard
card
in
check
)
{
}
if
(
card
.
Id
==
CardId
.
ChainStrike
)
foreach
(
ClientCard
card
in
check
)
strike_count
++;
{
if
(
card
.
Id
==
CardId
.
SecretBlast
)
}
blast_count
++;
foreach
(
ClientCard
card
in
Bot
.
GetSpells
())
{
}
if
(
card
.
Id
==
CardId
.
RecklessGreed
)
foreach
(
ClientCard
card
in
check
)
greed_count
++;
{
if
(
card
.
Id
==
CardId
.
SectetBarrel
)
}
barrel_count
++;
foreach
(
ClientCard
card
in
check
)
{
}
if
(
card
.
Id
==
CardId
.
Waboku
)
foreach
(
ClientCard
card
in
check
)
Waboku_count
++;
{
if
(
card
.
Id
==
CardId
.
JustDesserts
)
}
just_count
++;
foreach
(
ClientCard
card
in
check
)
{
}
if
(
card
.
Id
==
CardId
.
ThreateningRoar
)
foreach
(
ClientCard
card
in
check
)
Roar_count
++;
{
if
(
card
.
Id
==
CardId
.
ChainStrike
)
}
strike_count
++;
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
Enemy
.
GetMonsterCount
()
<=
2
&&
Enemy
.
GetMonsterCount
()
>=
1
)
{
}
if
(
HasAccuulatedFortune
>
0
)
OjamaTrioused_draw
=
true
;
foreach
(
ClientCard
card
in
Bot
.
GetSpells
())
}
{
if
(
card
.
Id
==
CardId
.
RecklessGreed
)
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
);
greed_count
++;
if
(
Enemy
.
LifePoints
<=
expected_blood
&&
Duel
.
Player
==
1
)
{
}
Logger
.
DebugWriteLine
(
" one_turn_kill"
);
foreach
(
ClientCard
card
in
check
)
one_turn_kill
=
true
;
{
}
if
(
card
.
Id
==
CardId
.
Waboku
)
expected_blood
=
0
;
Waboku_count
++;
if
(
greed_count
>=
2
)
greed_count
=
1
;
if
(
blast_count
>=
2
)
blast_count
=
1
;
}
if
(
just_count
>=
2
)
just_count
=
1
;
foreach
(
ClientCard
card
in
check
)
if
(
barrel_count
>=
2
)
barrel_count
=
1
;
{
if
(
Waboku_count
>=
2
)
Waboku_count
=
1
;
if
(
card
.
Id
==
CardId
.
ThreateningRoar
)
if
(
Roar_count
>=
2
)
Roar_count
=
1
;
Roar_count
++;
if
(
strike_count
>=
2
)
strike_count
=
1
;
int
currentchain
=
0
;
}
if
(
OjamaTrioused_draw
)
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
);
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
+
Waboku_count
+
Waboku_count
+
Roar_count
+
greed_count
+
strike_count
+
Ojama_count
;
if
(
Enemy
.
LifePoints
<=
expected_blood
&&
Duel
.
Player
==
1
)
else
{
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
+
Waboku_count
+
Waboku_count
+
greed_count
+
Roar_count
+
strike_count
;
Logger
.
DebugWriteLine
(
" one_turn_kill"
);
//if (currentchain >= 3 && Duel.Player == 1) drawfirst = true;
one_turn_kill
=
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
);
expected_blood
=
0
;
if
(
greed_count
>=
2
)
greed_count
=
1
;
/*if (!one_turn_kill && Enemy.LifePoints <= expected_blood && Duel.Player == 1)
if
(
blast_count
>=
2
)
blast_count
=
1
;
{
if
(
just_count
>=
2
)
just_count
=
1
;
Logger.DebugWriteLine(" one_turn_kill_1");
if
(
barrel_count
>=
2
)
barrel_count
=
1
;
one_turn_kill_1 = true;
if
(
Waboku_count
>=
2
)
Waboku_count
=
1
;
}*/
if
(
Roar_count
>=
2
)
Roar_count
=
1
;
}
int
currentchain
=
0
;
if
(
OjamaTrioused_do
)
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
+
Waboku_count
+
Waboku_count
+
Roar_count
+
greed_count
+
Ojama_count
;
private
bool
must_chain
()
else
{
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
+
Waboku_count
+
Waboku_count
+
greed_count
+
Roar_count
;
if
(
AI
.
Utils
.
IsChainTarget
(
Card
))
return
true
;
//if (currentchain >= 3 && Duel.Player == 1) drawfirst = true;
foreach
(
ClientCard
card
in
Enemy
.
GetSpells
())
if
(
Bot
.
HasInSpellZone
(
CardId
.
ChainStrike
))
{
{
if
(
card
.
Id
==
CardId
.
HarpiesFeatherDuster
&&
card
.
IsFaceup
())
if
(
strike_count
==
1
)
{
{
return
true
;
if
(
OjamaTrioused_do
)
}
expected_blood
=
((
Enemy
.
GetMonsterCount
()
+
3
)
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
+
(
currentchain
+
1
)
*
400
);
}
else
return
false
;
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
+
(
currentchain
+
1
)
*
400
);
}
}
private
bool
OjamaTrioset
()
else
{
{
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
))
return
false
;
if
(
OjamaTrioused_do
)
return
true
;
expected_blood
=
((
Enemy
.
GetMonsterCount
()
+
3
)
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
+
(
currentchain
+
1
+
currentchain
+
2
)
*
400
);
}
else
private
bool
BrunSpellSet
()
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
+
(
currentchain
+
1
+
currentchain
+
2
)
*
400
);
{
}
if
(
Card
.
Id
==
CardId
.
OjamaTrio
&&
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
))
return
false
;
if
(!
one_turn_kill
&&
Enemy
.
LifePoints
<=
expected_blood
&&
Duel
.
Player
==
1
)
return
(
Card
.
IsTrap
()
||
Card
.
HasType
(
CardType
.
QuickPlay
))
&&
Bot
.
GetSpellCountWithoutField
()
<
5
;
{
}
Logger
.
DebugWriteLine
(
" %%%%%%%%%%%%%%%%%one_turn_kill_1"
);
private
bool
SandaionTheTimloard_summon
()
one_turn_kill_1
=
true
;
{
OjamaTrioused
=
true
;
if
(!
battleprevent
)
}
return
true
;
}
return
false
;
}
}
private
bool
AbouluteKingBackJacksummon
()
{
private
bool
must_chain
()
return
!
no_sp
;
{
}
if
(
AI
.
Utils
.
IsChainTarget
(
Card
))
return
true
;
private
bool
AbouluteKingBackJackeff
()
foreach
(
ClientCard
card
in
Enemy
.
GetSpells
())
{
{
if
(
ActivateDescription
==
-
1
)
if
(
card
.
Id
==
CardId
.
HarpiesFeatherDuster
&&
card
.
IsFaceup
())
{
{
AI
.
SelectCard
(
AbouluteKingBackJack_List_1
());
return
true
;
AI
.
SelectNextCard
(
AbouluteKingBackJack_List_2
());
}
}
}
return
false
;
return
true
;
}
private
bool
OjamaTrioset
()
}
{
private
bool
PotOfDualityeff
()
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
))
return
false
;
{
return
true
;
no_sp
=
true
;
}
private
bool
BrunSpellSet
()
AI
.
SelectCard
(
pot_list
());
{
return
true
;
if
(
Card
.
Id
==
CardId
.
OjamaTrio
&&
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
))
return
false
;
}
return
(
Card
.
IsTrap
()
||
Card
.
HasType
(
CardType
.
QuickPlay
))
&&
Bot
.
GetSpellCountWithoutField
()
<
5
;
private
bool
BlazingMirrorForceeff
()
}
{
private
bool
MichionTimelordsummon
()
if
(
prevent_used
)
return
false
;
{
IList
<
ClientCard
>
list
=
new
List
<
ClientCard
>();
if
(
Duel
.
Turn
==
1
)
foreach
(
ClientCard
monster
in
Enemy
.
GetMonsters
())
return
false
;
{
return
true
;
list
.
Add
(
monster
);
}
}
//if (GetTotalATK(list) / 2 >= Bot.LifePoints) return false;
private
bool
SandaionTheTimelord_summon
()
if
(
GetTotalATK
(
list
)
<
3000
)
return
false
;
{
return
Enemy
.
HasAttackingMonster
()
&&
DefaultUniqueTrap
();
Logger
.
DebugWriteLine
(
"&&&&&&&&&SandaionTheTimelord_summon"
);
}
return
true
;
private
bool
ThreateningRoareff
()
}
{
private
bool
AbouluteKingBackJacksummon
()
if
(
drawfirst
)
return
true
;
{
if
(
DefaultOnBecomeTarget
())
return
DefaultUniqueTrap
();
return
!
no_sp
;
if
(
prevent_used
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
}
prevent_used
=
true
;
private
bool
AbouluteKingBackJackeff
()
return
DefaultUniqueTrap
();
{
}
if
(
ActivateDescription
==
-
1
)
private
bool
SandaionTheTimloardeff
()
{
{
AI
.
SelectCard
(
AbouluteKingBackJack_List_1
());
AI
.
SelectNextCard
(
AbouluteKingBackJack_List_2
());
prevent_used
=
true
;
}
return
true
;
}
return
true
;
private
bool
Wabokueff
()
{
}
if
(
drawfirst
)
private
bool
PotOfDualityeff
()
{
{
Linkuribohused
=
false
;
no_sp
=
true
;
return
true
;
}
AI
.
SelectCard
(
pot_list
());
if
(
DefaultOnBecomeTarget
())
return
true
;
{
}
Linkuribohused
=
false
;
return
DefaultUniqueTrap
();
private
bool
ThreateningRoareff
()
}
{
if
(
prevent_used
||
Duel
.
Player
==
0
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
if
(
one_turn_kill_1
)
return
UniqueFaceupSpell
();
prevent_used
=
true
;
if
(
drawfirst
)
return
true
;
Linkuribohused
=
false
;
if
(
DefaultOnBecomeTarget
())
return
DefaultUniqueTrap
();
{
}
prevent_used
=
true
;
private
bool
BattleFadereff
()
return
true
;
{
}
if
(
prevent_used
||
Duel
.
Player
==
0
)
return
false
;
if
(
prevent_used
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
prevent_used
=
true
;
prevent_used
=
true
;
return
DefaultUniqueTrap
();
return
true
;
}
}
private
bool
SandaionTheTimelordeff
()
private
bool
MagicCylindereff
()
{
{
Logger
.
DebugWriteLine
(
"***********SandaionTheTimelordeff"
);
if
(
prevent_used
)
return
false
;
return
true
;
if
(
Bot
.
LifePoints
<=
Enemy
.
BattlingMonster
.
Attack
)
return
DefaultUniqueTrap
();
}
if
(
Enemy
.
BattlingMonster
.
Attack
>
1800
)
return
DefaultUniqueTrap
();
private
bool
Wabokueff
()
return
false
;
{
}
if
(
one_turn_kill_1
)
return
UniqueFaceupSpell
();
public
bool
Ring_act
()
if
(
drawfirst
)
{
{
if
(
Duel
.
LastChainPlayer
==
0
&&
AI
.
Utils
.
GetLastChainCard
()
!=
null
)
return
false
;
Linkuribohused
=
false
;
ClientCard
target
=
AI
.
Utils
.
GetProblematicEnemyMonster
();
return
true
;
if
(
target
==
null
&&
AI
.
Utils
.
IsChainTarget
(
Card
))
}
{
if
(
DefaultOnBecomeTarget
())
target
=
AI
.
Utils
.
GetBestEnemyMonster
(
true
,
true
);
{
}
Linkuribohused
=
false
;
if
(
target
!=
null
)
prevent_used
=
true
;
{
return
true
;
if
(
Bot
.
LifePoints
<=
target
.
Attack
)
return
false
;
}
AI
.
SelectCard
(
target
);
if
(
prevent_used
||
Duel
.
Player
==
0
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
return
true
;
prevent_used
=
true
;
}
Linkuribohused
=
false
;
return
false
;
return
DefaultUniqueTrap
();
}
}
private
bool
RecklessGreedeff
()
private
bool
BattleFadereff
()
{
{
int
count
=
0
;
if
(
AI
.
Utils
.
ChainContainsCard
(
CardId
.
BlazingMirrorForce
)
||
AI
.
Utils
.
ChainContainsCard
(
CardId
.
MagicCylinder
))
foreach
(
ClientCard
card
in
Bot
.
GetSpells
())
return
false
;
{
if
(
prevent_used
||
Duel
.
Player
==
0
)
return
false
;
if
(
card
.
Id
==
CardId
.
RecklessGreed
)
AI
.
SelectPosition
(
CardPosition
.
FaceUpDefence
);
count
++;
prevent_used
=
true
;
return
true
;
}
}
bool
Demiseused
=
AI
.
Utils
.
ChainContainsCard
(
CardId
.
CardOfDemise
);
if
(
drawfirst
)
return
DefaultUniqueTrap
();
private
bool
BlazingMirrorForceeff
()
if
(
DefaultOnBecomeTarget
()
&&
count
>
1
)
return
true
;
{
if
(
Demiseused
)
return
false
;
if
(
prevent_used
)
return
false
;
if
(
count
>
1
)
return
true
;
IList
<
ClientCard
>
list
=
new
List
<
ClientCard
>();
if
(
Bot
.
LifePoints
<=
2000
)
return
true
;
foreach
(
ClientCard
monster
in
Enemy
.
GetMonsters
())
if
(
Bot
.
GetHandCount
()
<
1
&&
Duel
.
Player
==
0
&&
Duel
.
Phase
!=
DuelPhase
.
Standby
)
return
true
;
{
return
false
;
if
(
monster
.
IsAttack
())
}
list
.
Add
(
monster
);
private
bool
SectetBarreleff
()
}
{
if
(
GetTotalATK
(
list
)
/
2
>=
Bot
.
LifePoints
)
return
false
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
Logger
.
DebugWriteLine
(
"!!!!!!!!BlazingMirrorForceeff"
+
GetTotalATK
(
list
)
/
2
);
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
GetTotalATK
(
list
)
/
2
>=
Enemy
.
LifePoints
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
GetTotalATK
(
list
)
<
3000
)
return
false
;
if
(
DefaultOnBecomeTarget
())
return
true
;
prevent_used
=
true
;
int
count
=
Enemy
.
GetFieldHandCount
();
return
DefaultUniqueTrap
();
if
(
Enemy
.
LifePoints
<
count
*
200
)
return
true
;
if
(
count
>=
8
)
return
true
;
}
return
false
;
}
private
bool
MagicCylindereff
()
private
bool
SecretBlasteff
()
{
{
if
(
prevent_used
)
return
false
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
Bot
.
LifePoints
<=
Enemy
.
BattlingMonster
.
Attack
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
Enemy
.
LifePoints
<=
Enemy
.
BattlingMonster
.
Attack
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
Enemy
.
BattlingMonster
.
Attack
>
1800
)
return
DefaultUniqueTrap
();
if
(
DefaultOnBecomeTarget
())
return
true
;
return
false
;
int
count
=
Enemy
.
GetFieldCount
();
}
if
(
Enemy
.
LifePoints
<
count
*
300
)
return
true
;
public
bool
Ring_act
()
if
(
count
>=
5
)
return
true
;
{
return
false
;
if
(
Duel
.
LastChainPlayer
==
0
&&
AI
.
Utils
.
GetLastChainCard
()
!=
null
)
return
false
;
ClientCard
target
=
AI
.
Utils
.
GetProblematicEnemyMonster
();
}
if
(
target
==
null
&&
AI
.
Utils
.
IsChainTarget
(
Card
))
{
private
bool
OjamaTrioeff
()
target
=
AI
.
Utils
.
GetBestEnemyMonster
(
true
,
true
);
{
}
return
OjamaTrioused
||
OjamaTrioused_draw
;
if
(
target
!=
null
)
}
{
private
bool
JustDessertseff
()
if
(
Bot
.
LifePoints
<=
target
.
Attack
)
return
false
;
{
AI
.
SelectCard
(
target
);
if
(
Duel
.
Player
==
0
)
return
false
;
return
true
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
}
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
return
false
;
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
}
if
(
DefaultOnBecomeTarget
())
return
true
;
private
bool
RecklessGreedeff
()
int
count
=
Enemy
.
GetMonsterCount
();
{
if
(
Enemy
.
LifePoints
<=
count
*
500
)
return
true
;
if
(
one_turn_kill_1
)
return
UniqueFaceupSpell
();
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
count
<=
2
&&
count
>=
1
)
int
count
=
0
;
{
foreach
(
ClientCard
card
in
Bot
.
GetSpells
())
OjamaTrioused
=
true
;
{
return
true
;
if
(
card
.
Id
==
CardId
.
RecklessGreed
)
}
count
++;
if
(
count
>=
4
)
return
true
;
return
false
;
}
}
bool
Demiseused
=
AI
.
Utils
.
ChainContainsCard
(
CardId
.
CardOfDemise
);
private
bool
ChainStrikeeff
()
if
(
drawfirst
)
return
UniqueFaceupSpell
();
{
if
(
DefaultOnBecomeTarget
()
&&
count
>
1
)
return
true
;
if
(
Demiseused
)
return
false
;
if
(
drawfirst
)
return
true
;
if
(
count
>
1
)
return
true
;
if
(
DefaultOnBecomeTarget
())
return
true
;
if
(
Bot
.
LifePoints
<=
3000
)
return
true
;
int
chain
=
Duel
.
CurrentChain
.
Count
;
if
(
Bot
.
GetHandCount
()
<
1
&&
Duel
.
Player
==
0
&&
Duel
.
Phase
!=
DuelPhase
.
Standby
)
return
true
;
if
(
strike_count
>=
2
&&
chain
>=
2
)
return
true
;
return
false
;
if
(
Enemy
.
LifePoints
<=
(
chain
+
1
)
*
400
)
return
true
;
}
if
(
Duel
.
CurrentChain
.
Count
>=
3
)
return
true
;
private
bool
SectetBarreleff
()
return
false
;
{
}
if
(
DefaultOnBecomeTarget
())
return
true
;
if
(
Duel
.
Player
==
0
)
return
false
;
private
bool
BalanceOfJudgmenteff
()
if
(
drawfirst
)
return
true
;
{
if
(
one_turn_kill_1
)
return
UniqueFaceupSpell
();
if
(
DefaultOnBecomeTarget
())
return
true
;
if
(
one_turn_kill
)
return
true
;
int
count
=
(
Enemy
.
GetFieldCount
()
-
Bot
.
GetFieldHandCount
());
if
(
DefaultOnBecomeTarget
())
return
true
;
if
(
count
>=
2
)
return
true
;
int
count
=
Enemy
.
GetFieldHandCount
();
return
false
;
int
monster_count
=
Enemy
.
GetMonsterCount
()
-
Enemy
.
GetMonstersExtraZoneCount
();
}
if
(
Enemy
.
LifePoints
<
count
*
200
)
return
true
;
private
bool
CardOfDemiseeff
()
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
monster_count
<=
2
&&
monster_count
>=
1
)
{
if
(
count
+
3
>=
8
)
{
OjamaTrioused
=
true
;
return
true
;
}
}
if
(
count
>=
8
)
return
true
;
return
false
;
}
private
bool
SecretBlasteff
()
{
if
(
DefaultOnBecomeTarget
())
return
true
;
if
(
Duel
.
Player
==
0
)
return
false
;
if
(
drawfirst
)
return
UniqueFaceupSpell
();
if
(
one_turn_kill_1
)
return
UniqueFaceupSpell
();
if
(
one_turn_kill
)
return
true
;
int
count
=
Enemy
.
GetFieldCount
();
int
monster_count
=
Enemy
.
GetMonsterCount
()
-
Enemy
.
GetMonstersExtraZoneCount
();
if
(
Enemy
.
LifePoints
<
count
*
300
)
return
true
;
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
monster_count
<=
2
&&
monster_count
>=
1
)
{
if
(
count
+
3
>=
5
)
{
OjamaTrioused
=
true
;
return
true
;
}
}
if
(
count
>=
5
)
return
true
;
return
false
;
}
private
bool
OjamaTrioeff
()
{
return
OjamaTrioused
||
OjamaTrioused_draw
;
}
private
bool
JustDessertseff
()
{
if
(
DefaultOnBecomeTarget
())
return
true
;
if
(
Duel
.
Player
==
0
)
return
false
;
if
(
drawfirst
)
return
UniqueFaceupSpell
();
if
(
one_turn_kill_1
)
return
UniqueFaceupSpell
();
if
(
one_turn_kill
)
return
true
;
int
count
=
Enemy
.
GetMonsterCount
()-
Enemy
.
GetMonstersExtraZoneCount
();
if
(
Enemy
.
LifePoints
<=
count
*
500
)
return
true
;
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
count
<=
2
&&
count
>=
1
)
{
OjamaTrioused
=
true
;
return
true
;
}
if
(
count
>=
3
)
return
true
;
return
false
;
}
private
bool
ChainStrikeeff
()
{
if
(
one_turn_kill
)
return
true
;
if
(
one_turn_kill_1
)
return
true
;
if
(
drawfirst
)
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
;
if
(
Duel
.
CurrentChain
.
Count
>=
3
)
return
true
;
return
false
;
}
private
bool
BalanceOfJudgmenteff
()
{
if
(
DefaultOnBecomeTarget
())
return
true
;
int
count
=
(
Enemy
.
GetFieldCount
()
-
Bot
.
GetFieldHandCount
());
if
(
count
>=
2
)
return
true
;
return
false
;
}
private
bool
CardOfDemiseeff
()
{
{
foreach
(
ClientCard
card
in
Bot
.
GetMonsters
())
foreach
(
ClientCard
card
in
Bot
.
GetMonsters
())
{
{
if
(
card
.
Id
==
CardId
.
CardcarD
&&
card
.
IsFaceup
())
if
(
card
.
Id
==
CardId
.
CardcarD
&&
card
.
IsFaceup
())
return
false
;
return
false
;
}
}
if
(
Bot
.
GetHandCount
()
==
1
&&
Bot
.
GetSpellCountWithoutField
()
<=
3
)
if
(
Bot
.
GetHandCount
()
==
1
&&
Bot
.
GetSpellCountWithoutField
()
<=
3
)
{
{
no_sp
=
true
;
no_sp
=
true
;
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
private
bool
Mathematicianeff
()
private
bool
Mathematicianeff
()
{
{
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
{
AI
.
SelectCard
(
CardId
.
AbouluteKingBackJack
);
AI
.
SelectCard
(
CardId
.
AbouluteKingBackJack
);
return
true
;
return
true
;
}
}
return
true
;
return
true
;
}
}
private
bool
DiceJarfacedown
()
private
bool
DiceJarfacedown
()
{
{
foreach
(
ClientCard
card
in
Bot
.
GetMonsters
())
foreach
(
ClientCard
card
in
Bot
.
GetMonsters
())
{
{
if
(
card
.
Id
==
CardId
.
DiceJar
&&
card
.
IsFacedown
())
if
(
card
.
Id
==
CardId
.
DiceJar
&&
card
.
IsFacedown
())
return
true
;
return
true
;
break
;
break
;
}
}
return
false
;
return
false
;
}
}
private
bool
Ceasefireeff
()
private
bool
Ceasefireeff
()
{
{
if
(
Enemy
.
GetMonsterCount
()
>=
3
)
return
true
;
if
(
Enemy
.
GetMonsterCount
()
>=
3
)
return
true
;
if
(
DiceJarfacedown
())
return
false
;
if
(
DiceJarfacedown
())
return
false
;
if
((
Bot
.
GetMonsterCount
()
+
Enemy
.
GetMonsterCount
())
>=
4
)
return
true
;
if
((
Bot
.
GetMonsterCount
()
+
Enemy
.
GetMonsterCount
())
>=
4
)
return
true
;
return
false
;
return
false
;
}
}
private
bool
Linkuriboheff
()
private
bool
Linkuriboheff
()
{
{
IList
<
ClientCard
>
newlist
=
new
List
<
ClientCard
>();
IList
<
ClientCard
>
newlist
=
new
List
<
ClientCard
>();
foreach
(
ClientCard
newmonster
in
Enemy
.
GetMonsters
())
foreach
(
ClientCard
newmonster
in
Enemy
.
GetMonsters
())
{
{
if
(
newmonster
.
IsAttack
())
newlist
.
Add
(
newmonster
);
newlist
.
Add
(
newmonster
);
}
}
if
(!
Linkuribohused
)
return
false
;
if
(!
Linkuribohused
)
return
false
;
if
(
Enemy
.
BattlingMonster
!=
null
)
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
)
/
2
>=
Bot
.
LifePoints
&&
Bot
.
HasInSpellZone
(
CardId
.
BlazingMirrorForce
))
if
(
AI
.
Utils
.
GetLastChainCard
()
==
null
)
return
true
;
return
true
;
if
(
AI
.
Utils
.
GetLastChainCard
().
Id
==
CardId
.
Linkuriboh
)
return
false
;
if
(
GetTotalATK
(
newlist
)
/
2
>=
Enemy
.
LifePoints
&&
Bot
.
HasInSpellZone
(
CardId
.
BlazingMirrorForce
))
return
true
;
return
false
;
}
if
(
AI
.
Utils
.
GetLastChainCard
()
==
null
)
return
true
;
if
(
AI
.
Utils
.
GetLastChainCard
().
Id
==
CardId
.
Linkuriboh
)
return
false
;
public
override
bool
OnPreBattleBetween
(
ClientCard
attacker
,
ClientCard
defender
)
return
true
;
{
}
if
(
attacker
.
Id
==
CardId
.
Linkuriboh
&&
defender
.
IsFacedown
())
return
false
;
public
bool
MonsterRepos
()
return
base
.
OnPreBattleBetween
(
attacker
,
defender
);
{
}
if
(
Card
.
IsFacedown
()
&&
Card
.
Id
!=
CardId
.
DiceJar
)
/*private bool SwordsOfRevealingLight()
return
true
;
{
return
base
.
DefaultMonsterRepos
();
int count = Bot.SpellZone.GetCardCount(CardId.SwordsOfRevealingLight);
}
return count == 0;
public
override
bool
OnPreBattleBetween
(
ClientCard
attacker
,
ClientCard
defender
)
}*/
{
if
(
attacker
.
Id
==
CardId
.
Linkuriboh
&&
defender
.
IsFacedown
())
return
false
;
/*
if
(
attacker
.
Id
==
CardId
.
SandaionTheTimelord
&&
!
attacker
.
IsDisabled
())
private bool SetInvincibleMonster()
{
{
attacker
.
RealPower
=
9999
;
foreach (ClientCard card in Bot.GetMonsters())
return
true
;
{
}
if (card.Id == CardId.Marshmallon || card.Id == CardId.SpiritReaper)
if
(
attacker
.
Id
==
CardId
.
MichionTimelord
&&
!
attacker
.
IsDisabled
())
{
{
return false;
attacker
.
RealPower
=
9999
;
}
return
true
;
}
}
return true;
return
base
.
OnPreBattleBetween
(
attacker
,
defender
);
}*/
}
public
override
void
OnChaining
(
int
player
,
ClientCard
card
)
/*
{
private bool ReposEverything()
expected_blood
=
0
;
{
one_turn_kill
=
false
;
if (Card.Id == CardId.ReflectBounder)
one_turn_kill_1
=
false
;
return Card.IsDefense();
OjamaTrioused_draw
=
false
;
if (Card.Id == CardId.FencingFireFerret)
OjamaTrioused_do
=
false
;
return DefaultMonsterRepos();
drawfirst
=
false
;
if (Card.IsAttack())
HasAccuulatedFortune
=
0
;
return true;
strike_count
=
0
;
return false;
greed_count
=
0
;
}*/
blast_count
=
0
;
}
barrel_count
=
0
;
just_count
=
0
;
Waboku_count
=
0
;
Roar_count
=
0
;
Ojama_count
=
0
;
IList
<
ClientCard
>
check
=
Bot
.
GetSpells
();
foreach
(
ClientCard
card1
in
check
)
{
if
(
card1
.
Id
==
CardId
.
AccuulatedFortune
)
HasAccuulatedFortune
++;
}
foreach
(
ClientCard
card1
in
check
)
{
if
(
card1
.
Id
==
CardId
.
SecretBlast
)
blast_count
++;
}
foreach
(
ClientCard
card1
in
check
)
{
if
(
card1
.
Id
==
CardId
.
SectetBarrel
)
barrel_count
++;
}
foreach
(
ClientCard
card1
in
check
)
{
if
(
card1
.
Id
==
CardId
.
JustDesserts
)
just_count
++;
}
foreach
(
ClientCard
card1
in
check
)
{
if
(
card1
.
Id
==
CardId
.
ChainStrike
)
strike_count
++;
}
foreach
(
ClientCard
card1
in
Bot
.
GetSpells
())
{
if
(
card1
.
Id
==
CardId
.
RecklessGreed
)
greed_count
++;
}
foreach
(
ClientCard
card1
in
check
)
{
if
(
card1
.
Id
==
CardId
.
Waboku
)
Waboku_count
++;
}
foreach
(
ClientCard
card1
in
check
)
{
if
(
card1
.
Id
==
CardId
.
ThreateningRoar
)
Roar_count
++;
}
/*if (Bot.HasInSpellZone(CardId.OjamaTrio) && Enemy.GetMonsterCount() <= 2 && Enemy.GetMonsterCount() >= 1)
{
if (HasAccuulatedFortune > 0) OjamaTrioused_draw = true;
}*/
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
(
Enemy
.
GetMonsterCount
()
-
Enemy
.
GetMonstersExtraZoneCount
())
<=
2
&&
(
Enemy
.
GetMonsterCount
()
-
Enemy
.
GetMonstersExtraZoneCount
())
>=
1
)
{
OjamaTrioused_do
=
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
;
if
(
barrel_count
>=
2
)
barrel_count
=
1
;
if
(
Waboku_count
>=
2
)
Waboku_count
=
1
;
if
(
Roar_count
>=
2
)
Roar_count
=
1
;
int
currentchain
=
0
;
if
(
OjamaTrioused_do
)
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
+
Waboku_count
+
Waboku_count
+
Roar_count
+
greed_count
+
Ojama_count
;
else
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
+
Waboku_count
+
Waboku_count
+
greed_count
+
Roar_count
;
//if (currentchain >= 3 && Duel.Player == 1) drawfirst = true;
if
(
Bot
.
HasInSpellZone
(
CardId
.
ChainStrike
))
{
if
(
strike_count
==
1
)
{
if
(
OjamaTrioused_do
)
expected_blood
=
((
Enemy
.
GetMonsterCount
()
+
3
)
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
+
(
currentchain
+
1
)
*
400
);
else
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
+
(
currentchain
+
1
)
*
400
);
}
else
{
if
(
OjamaTrioused_do
)
expected_blood
=
((
Enemy
.
GetMonsterCount
()
+
3
)
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
+
(
currentchain
+
1
+
currentchain
+
2
)
*
400
);
else
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
+
(
currentchain
+
1
+
currentchain
+
2
)
*
400
);
}
if
(!
one_turn_kill
&&
Enemy
.
LifePoints
<=
expected_blood
&&
Duel
.
Player
==
1
)
{
Logger
.
DebugWriteLine
(
" %%%%%%%%%%%%%%%%%one_turn_kill_1"
);
one_turn_kill_1
=
true
;
OjamaTrioused
=
true
;
}
}
base
.
OnChaining
(
player
,
card
);
}
}
}
}
\ No newline at end of file
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