Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
W
Windbot-408
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
神之吹息
Windbot-408
Commits
8763f440
Commit
8763f440
authored
Apr 10, 2018
by
handsomekiwi
Committed by
mercury233
Apr 10, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update ChainBurn deck (#38)
parent
48052612
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
142 additions
and
60 deletions
+142
-60
Decks/AI_ChainBurn.ydk
Decks/AI_ChainBurn.ydk
+3
-3
Game/AI/Decks/ChainBurnExecutor.cs
Game/AI/Decks/ChainBurnExecutor.cs
+139
-57
No files found.
Decks/AI_ChainBurn.ydk
View file @
8763f440
...
...
@@ -37,7 +37,6 @@
36361633
36361633
36361633
36468556
37576645
37576645
37576645
...
...
@@ -52,7 +51,6 @@
75249652
83555666
98444741
98444741
#extra
41999284
41999284
...
...
@@ -65,4 +63,6 @@
98444741
100227025
100227025
100227025
\ No newline at end of file
100227025
36468556
98444741
\ No newline at end of file
Game/AI/Decks/ChainBurnExecutor.cs
View file @
8763f440
...
...
@@ -70,8 +70,7 @@ namespace WindBot.Game.AI.Decks
//activate trap
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
BalanceOfJudgment
,
BalanceOfJudgmenteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AccuulatedFortune
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ChainStrike
,
ChainStrikeeff
);
//battle
//battle
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ThreateningRoar
,
ThreateningRoareff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Waboku
,
Wabokueff
);
...
...
@@ -86,7 +85,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SecretBlast
,
SecretBlasteff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
SectetBarrel
,
SectetBarreleff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
RecklessGreed
,
RecklessGreedeff
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
ChainStrike
,
ChainStrikeeff
);
//sp
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Linkuriboh
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Linkuriboh
,
Linkuriboheff
);
...
...
@@ -130,15 +129,15 @@ namespace WindBot.Game.AI.Decks
CardId
.
Waboku
,
CardId
.
ThreateningRoar
,
CardId
.
MagicCylinder
,
CardId
.
RingOfDestruction
,
CardId
.
RingOfDestruction
,
CardId
.
RecklessGreed
,
CardId
.
SecretBlast
,
CardId
.
JustDesserts
,
CardId
.
OjamaTrio
,
CardId
.
SectetBarrel
,
CardId
.
Ceasefire
,
CardId
.
BalanceOfJudgment
,
CardId
.
AccuulatedFortune
,
CardId
.
OjamaTrio
,
CardId
.
SectetBarrel
,
CardId
.
Ceasefire
,
CardId
.
BalanceOfJudgment
,
CardId
.
AccuulatedFortune
,
};
}
public
int
[]
AbouluteKingBackJack_List_2
()
...
...
@@ -149,7 +148,7 @@ namespace WindBot.Game.AI.Decks
CardId
.
Mathematician
,
CardId
.
DiceJar
,
CardId
.
CardcarD
,
CardId
.
BattleFader
,
CardId
.
BattleFader
,
CardId
.
BlazingMirrorForce
,
CardId
.
Waboku
,
CardId
.
ThreateningRoar
,
...
...
@@ -169,7 +168,7 @@ namespace WindBot.Game.AI.Decks
{
return
new
[]
{
CardId
.
Waboku
,
CardId
.
SecretBlast
,
CardId
.
JustDesserts
,
...
...
@@ -178,7 +177,7 @@ namespace WindBot.Game.AI.Decks
CardId
.
Ceasefire
,
CardId
.
RecklessGreed
,
CardId
.
RingOfDestruction
,
};
}
...
...
@@ -217,17 +216,25 @@ namespace WindBot.Game.AI.Decks
id
==
CardId
.
RingOfDestruction
);
}
bool
pot_used
=
false
;
bool
no_sp
=
false
;
bool
one_turn_kill
=
false
;
bool
one_turn_kill_1
=
false
;
int
expected_blood
=
0
;
bool
prevent_used
=
false
;
int
preventcount
=
0
;
bool
prevent_used
=
false
;
int
preventcount
=
0
;
bool
battleprevent
=
false
;
bool
OjamaTrioused
=
false
;
bool
HasAccuulatedFortune
=
false
;
bool
OjamaTrioused_draw
=
false
;
bool
drawfirst
=
false
;
int
Waboku_count
=
0
;
int
Roar_count
=
0
;
int
strike_count
=
0
;
int
greed_count
=
0
;
int
blast_count
=
0
;
int
barrel_count
=
0
;
int
just_count
=
0
;
int
Ojama_count
=
0
;
int
HasAccuulatedFortune
=
0
;
public
override
bool
OnSelectHand
()
{
return
true
;
...
...
@@ -235,25 +242,22 @@ namespace WindBot.Game.AI.Decks
public
override
void
OnNewTurn
()
{
pot_used
=
false
;
no_sp
=
false
;
prevent_used
=
false
;
battleprevent
=
false
;
OjamaTrioused
=
false
;
}
public
override
void
OnNewPhase
()
{
preventcount
=
0
;
battleprevent
=
false
;
HasAccuulatedFortune
=
false
;
OjamaTrioused
=
false
;
IList
<
ClientCard
>
trap
=
Bot
.
SpellZone
;
IList
<
ClientCard
>
monster
=
Bot
.
MonsterZone
;
foreach
(
ClientCard
card
in
trap
)
{
if
(
card
.
Id
==
CardId
.
AccuulatedFortune
)
HasAccuulatedFortune
=
true
;
}
foreach
(
ClientCard
card
in
trap
)
{
if
(
Has_prevent_list
(
card
.
Id
))
...
...
@@ -272,36 +276,98 @@ namespace WindBot.Game.AI.Decks
}
}
expected_blood
=
0
;
one_turn_kill
=
false
;
one_turn_kill_1
=
false
;
OjamaTrioused_draw
=
false
;
drawfirst
=
false
;
HasAccuulatedFortune
=
0
;
strike_count
=
0
;
greed_count
=
0
;
blast_count
=
0
;
barrel_count
=
0
;
just_count
=
0
;
Waboku_count
=
0
;
Roar_count
=
0
;
Ojama_count
=
0
;
IList
<
ClientCard
>
check
=
Bot
.
SpellZone
;
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
AccuulatedFortune
)
HasAccuulatedFortune
++;
}
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
SecretBlast
)
blast_count
++;
break
;
}
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
SectetBarrel
)
barrel_count
++;
break
;
}
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
JustDesserts
)
just_count
++;
break
;
}
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
ChainStrike
)
strike_count
++;
}
foreach
(
ClientCard
card
in
Bot
.
GetSpells
())
{
if
(
card
.
Id
==
CardId
.
RecklessGreed
)
greed_count
++;
}
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
Waboku
)
Waboku_count
++;
}
foreach
(
ClientCard
card
in
check
)
{
if
(
card
.
Id
==
CardId
.
ThreateningRoar
)
Roar_count
++;
}
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
)
&&
Enemy
.
GetMonsterCount
()
<=
2
&&
Enemy
.
GetMonsterCount
()
>=
1
)
{
if
(
HasAccuulatedFortune
>
0
)
OjamaTrioused_draw
=
true
;
}
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
);
if
(
Enemy
.
LifePoints
<=
expected_blood
)
one_turn_kill
=
true
;
if
(
Enemy
.
LifePoints
<=
expected_blood
)
one_turn_kill
=
true
;
if
(
greed_count
>=
2
)
greed_count
=
1
;
if
(
blast_count
>=
2
)
blast_count
=
1
;
if
(
just_count
>=
2
)
just_count
=
1
;
if
(
barrel_count
>=
2
)
barrel_count
=
1
;
if
(
Waboku_count
>=
2
)
Waboku_count
=
1
;
if
(
Roar_count
>=
2
)
Roar_count
=
1
;
if
(
strike_count
>=
2
)
strike_count
=
1
;
int
currentchain
=
0
;
if
(
OjamaTrioused_draw
)
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
+
Waboku_count
+
Waboku_count
+
Roar_count
+
greed_count
+
strike_count
+
Ojama_count
;
else
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
+
Waboku_count
+
Waboku_count
+
greed_count
+
Roar_count
+
strike_count
;
if
(
currentchain
>=
3
)
drawfirst
=
true
;
currentchain
=
Duel
.
CurrentChain
.
Count
+
blast_count
+
just_count
+
barrel_count
;
expected_blood
=
(
Enemy
.
GetMonsterCount
()
*
500
*
just_count
+
Enemy
.
GetFieldHandCount
()
*
200
*
barrel_count
+
Enemy
.
GetFieldCount
()
*
300
*
blast_count
+(
currentchain
+
1
)*
400
);
if
(
Enemy
.
LifePoints
<=
expected_blood
)
one_turn_kill_1
=
true
;
}
private
bool
must_chain
()
{
if
(
AI
.
Utils
.
IsChainTarget
(
Card
))
return
true
;
...
...
@@ -326,7 +392,7 @@ namespace WindBot.Game.AI.Decks
}
private
bool
AbouluteKingBackJacksummon
()
{
return
!
pot_used
;
return
!
no_sp
;
}
private
bool
AbouluteKingBackJackeff
()
{
...
...
@@ -336,13 +402,13 @@ namespace WindBot.Game.AI.Decks
AI
.
SelectCard
(
AbouluteKingBackJack_List_1
());
AI
.
SelectNextCard
(
AbouluteKingBackJack_List_2
());
}
return
true
;
}
private
bool
PotOfDualityeff
()
{
pot_used
=
true
;
no_sp
=
true
;
AI
.
SelectCard
(
prevent_list
());
return
true
;
}
...
...
@@ -355,12 +421,12 @@ namespace WindBot.Game.AI.Decks
list
.
Add
(
monster
);
}
//if (GetTotalATK(list) / 2 >= Bot.LifePoints) return false;
if
(
GetTotalATK
(
list
)
<
3000
)
return
false
;
if
(
GetTotalATK
(
list
)
<
3000
)
return
false
;
return
Enemy
.
HasAttackingMonster
()
&&
DefaultUniqueTrap
();
}
private
bool
ThreateningRoareff
()
{
if
(
drawfirst
)
return
true
;
if
(
must_chain
())
return
true
;
if
(
prevent_used
||
Duel
.
Phase
!=
DuelPhase
.
Main1
)
return
false
;
prevent_used
=
true
;
...
...
@@ -368,12 +434,15 @@ namespace WindBot.Game.AI.Decks
}
private
bool
SandaionTheTimloardeff
()
{
prevent_used
=
true
;
return
true
;
}
private
bool
Wabokueff
()
{
if
(
drawfirst
)
return
true
;
if
(
must_chain
())
return
true
;
if
(
drawfirst
)
return
true
;
if
(
prevent_used
||
Duel
.
Player
==
0
||
Duel
.
Phase
!=
DuelPhase
.
BattleStart
)
return
false
;
prevent_used
=
true
;
return
DefaultUniqueTrap
();
...
...
@@ -410,21 +479,18 @@ namespace WindBot.Game.AI.Decks
}
private
bool
RecklessGreedeff
()
{
int
count
=
0
;
foreach
(
ClientCard
card
in
Bot
.
GetSpells
())
{
if
(
card
.
Id
==
CardId
.
RecklessGreed
)
count
++;
break
;
}
if
(
count
>
1
)
return
true
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
must_chain
()
&&
greed_count
>
1
)
return
true
;
if
(
greed_count
>
1
)
return
true
;
if
(
Bot
.
LifePoints
<=
2000
)
return
true
;
if
(
Bot
.
GetHandCount
()
<
1
&&
Duel
.
Player
==
0
&&
Duel
.
Phase
!=
DuelPhase
.
Standby
)
return
true
;
return
false
;
}
private
bool
SectetBarreleff
()
{
if
(
one_turn_kill
)
return
true
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
int
count
=
Enemy
.
GetFieldHandCount
();
if
(
Enemy
.
LifePoints
<
count
*
200
)
return
true
;
...
...
@@ -433,26 +499,31 @@ namespace WindBot.Game.AI.Decks
}
private
bool
SecretBlasteff
()
{
if
(
one_turn_kill
)
return
true
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
int
count
=
Enemy
.
GetFieldCount
();
if
(
Enemy
.
LifePoints
<
count
*
300
)
return
true
;
if
(
count
>=
5
)
return
true
;
return
false
;
}
private
bool
OjamaTrioset
()
{
if
(
Bot
.
HasInSpellZone
(
CardId
.
OjamaTrio
))
return
false
;
return
true
;
}
private
bool
OjamaTrioeff
()
{
return
OjamaTrioused
;
return
OjamaTrioused
||
OjamaTrioused_draw
;
}
private
bool
JustDessertseff
()
{
if
(
one_turn_kill
)
return
true
;
if
(
drawfirst
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill_1
)
return
DefaultUniqueTrap
();
if
(
one_turn_kill
)
return
DefaultUniqueTrap
();
if
(
must_chain
())
return
true
;
int
count
=
Enemy
.
GetMonsterCount
();
if
(
Enemy
.
LifePoints
<=
count
*
500
)
return
true
;
...
...
@@ -466,13 +537,15 @@ namespace WindBot.Game.AI.Decks
}
private
bool
ChainStrikeeff
()
{
if
(
drawfirst
)
return
true
;
if
(
must_chain
())
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
(
must_chain
())
return
true
;
...
...
@@ -483,7 +556,10 @@ namespace WindBot.Game.AI.Decks
private
bool
CardOfDemiseeff
()
{
if
(
Bot
.
GetHandCount
()
==
1
&&
Bot
.
GetSpellCountWithoutField
()
<=
3
)
{
no_sp
=
true
;
return
true
;
}
return
false
;
}
private
bool
Mathematicianeff
()
...
...
@@ -494,13 +570,13 @@ namespace WindBot.Game.AI.Decks
return
true
;
}
return
true
;
}
private
bool
DiceJarfacedown
()
{
foreach
(
ClientCard
card
in
Bot
.
GetMonsters
())
foreach
(
ClientCard
card
in
Bot
.
GetMonsters
())
{
if
(
card
.
Id
==
CardId
.
DiceJar
&&
card
.
IsFacedown
())
return
true
;
...
...
@@ -522,6 +598,12 @@ namespace WindBot.Game.AI.Decks
if
(
lastchaincard
.
Id
==
CardId
.
Linkuriboh
)
return
false
;
return
true
;
}
public
override
bool
OnPreBattleBetween
(
ClientCard
attacker
,
ClientCard
defender
)
{
if
(
attacker
.
Id
==
CardId
.
Linkuriboh
&&
defender
.
IsFacedown
())
return
false
;
return
base
.
OnPreBattleBetween
(
attacker
,
defender
);
}
/*private bool SwordsOfRevealingLight()
{
int count = Bot.SpellZone.GetCardCount(CardId.SwordsOfRevealingLight);
...
...
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