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
cb9047f1
Commit
cb9047f1
authored
Apr 27, 2018
by
mercury233
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add ShouldNotBeTarget and ShouldBeDisabledBeforeItUseEffectMonster enum
fix #47 need more changes to executors
parent
3674b020
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
218 additions
and
41 deletions
+218
-41
Game/AI/AIFunctions.cs
Game/AI/AIFunctions.cs
+21
-21
Game/AI/CardContainer.cs
Game/AI/CardContainer.cs
+14
-14
Game/AI/CardExtension.cs
Game/AI/CardExtension.cs
+32
-0
Game/AI/Decks/BlueEyesExecutor.cs
Game/AI/Decks/BlueEyesExecutor.cs
+1
-1
Game/AI/Decks/ChainBurnExecutor.cs
Game/AI/Decks/ChainBurnExecutor.cs
+1
-1
Game/AI/Decks/LightswornShaddoldinosourExecutor.cs
Game/AI/Decks/LightswornShaddoldinosourExecutor.cs
+2
-2
Game/AI/DefaultExecutor.cs
Game/AI/DefaultExecutor.cs
+18
-2
Game/AI/Enums/ShouldBeDisabledBeforeItUseEffectMonster.cs
Game/AI/Enums/ShouldBeDisabledBeforeItUseEffectMonster.cs
+46
-0
Game/AI/Enums/ShouldNotBeMonsterTarget.cs
Game/AI/Enums/ShouldNotBeMonsterTarget.cs
+17
-0
Game/AI/Enums/ShouldNotBeSpellTarget.cs
Game/AI/Enums/ShouldNotBeSpellTarget.cs
+14
-0
Game/AI/Enums/ShouldNotBeTarget.cs
Game/AI/Enums/ShouldNotBeTarget.cs
+48
-0
WindBot.csproj
WindBot.csproj
+4
-0
No files found.
Game/AI/AIFunctions.cs
View file @
cb9047f1
...
@@ -151,14 +151,14 @@ namespace WindBot.Game.AI
...
@@ -151,14 +151,14 @@ namespace WindBot.Game.AI
return
bestMonster
;
return
bestMonster
;
}
}
public
ClientCard
GetOneEnemyBetterThanValue
(
int
value
,
bool
onlyATK
=
false
)
public
ClientCard
GetOneEnemyBetterThanValue
(
int
value
,
bool
onlyATK
=
false
,
bool
canBeTarget
=
false
)
{
{
ClientCard
bestCard
=
null
;
ClientCard
bestCard
=
null
;
int
bestValue
=
value
;
int
bestValue
=
value
;
for
(
int
i
=
0
;
i
<
7
;
++
i
)
for
(
int
i
=
0
;
i
<
7
;
++
i
)
{
{
ClientCard
card
=
Enemy
.
MonsterZone
[
i
];
ClientCard
card
=
Enemy
.
MonsterZone
[
i
];
if
(
card
==
null
||
card
.
Data
==
null
)
continue
;
if
(
card
==
null
||
card
.
Data
==
null
||
(
canBeTarget
&&
card
.
IsShouldNotBeTarget
())
)
continue
;
if
(
onlyATK
&&
card
.
IsDefense
())
continue
;
if
(
onlyATK
&&
card
.
IsDefense
())
continue
;
int
enemyValue
=
card
.
GetDefensePower
();
int
enemyValue
=
card
.
GetDefensePower
();
if
(
enemyValue
>=
bestValue
)
if
(
enemyValue
>=
bestValue
)
...
@@ -170,52 +170,52 @@ namespace WindBot.Game.AI
...
@@ -170,52 +170,52 @@ namespace WindBot.Game.AI
return
bestCard
;
return
bestCard
;
}
}
public
ClientCard
GetOneEnemyBetterThanMyBest
(
bool
onlyATK
=
false
)
public
ClientCard
GetOneEnemyBetterThanMyBest
(
bool
onlyATK
=
false
,
bool
canBeTarget
=
false
)
{
{
int
bestBotPower
=
GetBestPower
(
Bot
,
onlyATK
);
int
bestBotPower
=
GetBestPower
(
Bot
,
onlyATK
);
return
GetOneEnemyBetterThanValue
(
bestBotPower
,
onlyATK
);
return
GetOneEnemyBetterThanValue
(
bestBotPower
,
onlyATK
,
canBeTarget
);
}
}
public
ClientCard
GetProblematicEnemyCard
(
int
attack
=
0
)
public
ClientCard
GetProblematicEnemyCard
(
int
attack
=
0
,
bool
canBeTarget
=
false
)
{
{
ClientCard
card
=
Enemy
.
MonsterZone
.
GetFloodgate
();
ClientCard
card
=
Enemy
.
MonsterZone
.
GetFloodgate
(
canBeTarget
);
if
(
card
!=
null
)
if
(
card
!=
null
)
return
card
;
return
card
;
card
=
Enemy
.
SpellZone
.
GetFloodgate
();
card
=
Enemy
.
SpellZone
.
GetFloodgate
(
canBeTarget
);
if
(
card
!=
null
)
if
(
card
!=
null
)
return
card
;
return
card
;
card
=
Enemy
.
MonsterZone
.
GetDangerousMonster
();
card
=
Enemy
.
MonsterZone
.
GetDangerousMonster
(
canBeTarget
);
if
(
card
!=
null
)
if
(
card
!=
null
)
return
card
;
return
card
;
card
=
Enemy
.
MonsterZone
.
GetInvincibleMonster
();
card
=
Enemy
.
MonsterZone
.
GetInvincibleMonster
(
canBeTarget
);
if
(
card
!=
null
)
if
(
card
!=
null
)
return
card
;
return
card
;
if
(
attack
==
0
)
if
(
attack
==
0
)
attack
=
GetBestAttack
(
Bot
);
attack
=
GetBestAttack
(
Bot
);
return
GetOneEnemyBetterThanValue
(
attack
,
true
);
return
GetOneEnemyBetterThanValue
(
attack
,
true
,
canBeTarget
);
}
}
public
ClientCard
GetProblematicEnemyMonster
(
int
attack
=
0
)
public
ClientCard
GetProblematicEnemyMonster
(
int
attack
=
0
,
bool
canBeTarget
=
false
)
{
{
ClientCard
card
=
Enemy
.
MonsterZone
.
GetFloodgate
();
ClientCard
card
=
Enemy
.
MonsterZone
.
GetFloodgate
(
canBeTarget
);
if
(
card
!=
null
)
if
(
card
!=
null
)
return
card
;
return
card
;
card
=
Enemy
.
MonsterZone
.
GetDangerousMonster
();
card
=
Enemy
.
MonsterZone
.
GetDangerousMonster
(
canBeTarget
);
if
(
card
!=
null
)
if
(
card
!=
null
)
return
card
;
return
card
;
card
=
Enemy
.
MonsterZone
.
GetInvincibleMonster
();
card
=
Enemy
.
MonsterZone
.
GetInvincibleMonster
(
canBeTarget
);
if
(
card
!=
null
)
if
(
card
!=
null
)
return
card
;
return
card
;
if
(
attack
==
0
)
if
(
attack
==
0
)
attack
=
GetBestAttack
(
Bot
);
attack
=
GetBestAttack
(
Bot
);
return
GetOneEnemyBetterThanValue
(
attack
,
true
);
return
GetOneEnemyBetterThanValue
(
attack
,
true
,
canBeTarget
);
}
}
public
ClientCard
GetProblematicEnemySpell
()
public
ClientCard
GetProblematicEnemySpell
()
...
@@ -224,9 +224,9 @@ namespace WindBot.Game.AI
...
@@ -224,9 +224,9 @@ namespace WindBot.Game.AI
return
card
;
return
card
;
}
}
public
ClientCard
GetBestEnemyCard
(
bool
onlyFaceup
=
false
)
public
ClientCard
GetBestEnemyCard
(
bool
onlyFaceup
=
false
,
bool
canBeTarget
=
false
)
{
{
ClientCard
card
=
GetBestEnemyMonster
(
onlyFaceup
);
ClientCard
card
=
GetBestEnemyMonster
(
onlyFaceup
,
canBeTarget
);
if
(
card
!=
null
)
if
(
card
!=
null
)
return
card
;
return
card
;
...
@@ -237,20 +237,20 @@ namespace WindBot.Game.AI
...
@@ -237,20 +237,20 @@ namespace WindBot.Game.AI
return
null
;
return
null
;
}
}
public
ClientCard
GetBestEnemyMonster
(
bool
onlyFaceup
=
false
)
public
ClientCard
GetBestEnemyMonster
(
bool
onlyFaceup
=
false
,
bool
canBeTarget
=
false
)
{
{
ClientCard
card
=
GetProblematicEnemyMonster
();
ClientCard
card
=
GetProblematicEnemyMonster
(
0
,
canBeTarget
);
if
(
card
!=
null
)
if
(
card
!=
null
)
return
card
;
return
card
;
card
=
Enemy
.
MonsterZone
.
GetHighestAttackMonster
();
card
=
Enemy
.
MonsterZone
.
GetHighestAttackMonster
(
canBeTarget
);
if
(
card
!=
null
)
if
(
card
!=
null
)
return
card
;
return
card
;
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
List
<
ClientCard
>
monsters
=
Enemy
.
GetMonsters
();
// after GetHighestAttackMonster, the left monsters must be face-down.
// after GetHighestAttackMonster, the left monsters must be face-down.
if
(
monsters
.
Count
>
0
&&
!
onlyFaceup
)
if
(
monsters
.
Count
>
0
&&
!
onlyFaceup
&&
(!
canBeTarget
||
!
card
.
IsShouldNotBeTarget
())
)
return
monsters
[
0
];
return
monsters
[
0
];
return
null
;
return
null
;
...
...
Game/AI/CardContainer.cs
View file @
cb9047f1
...
@@ -6,13 +6,13 @@ namespace WindBot.Game.AI
...
@@ -6,13 +6,13 @@ namespace WindBot.Game.AI
{
{
public
static
class
CardContainer
public
static
class
CardContainer
{
{
public
static
ClientCard
GetHighestAttackMonster
(
this
IEnumerable
<
ClientCard
>
cards
)
public
static
ClientCard
GetHighestAttackMonster
(
this
IEnumerable
<
ClientCard
>
cards
,
bool
canBeTarget
=
false
)
{
{
int
highestAtk
=
0
;
int
highestAtk
=
0
;
ClientCard
selected
=
null
;
ClientCard
selected
=
null
;
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
if
(
card
==
null
||
card
.
Data
==
null
||
card
.
IsFacedown
())
continue
;
if
(
card
==
null
||
card
.
Data
==
null
||
card
.
IsFacedown
()
||
(
canBeTarget
&&
card
.
IsShouldNotBeTarget
())
)
continue
;
if
(
card
.
HasType
(
CardType
.
Monster
)
&&
card
.
Attack
>
highestAtk
)
if
(
card
.
HasType
(
CardType
.
Monster
)
&&
card
.
Attack
>
highestAtk
)
{
{
highestAtk
=
card
.
Attack
;
highestAtk
=
card
.
Attack
;
...
@@ -22,13 +22,13 @@ namespace WindBot.Game.AI
...
@@ -22,13 +22,13 @@ namespace WindBot.Game.AI
return
selected
;
return
selected
;
}
}
public
static
ClientCard
GetHighestDefenseMonster
(
this
IEnumerable
<
ClientCard
>
cards
)
public
static
ClientCard
GetHighestDefenseMonster
(
this
IEnumerable
<
ClientCard
>
cards
,
bool
canBeTarget
=
false
)
{
{
int
highestDef
=
0
;
int
highestDef
=
0
;
ClientCard
selected
=
null
;
ClientCard
selected
=
null
;
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
if
(
card
==
null
||
card
.
Data
==
null
||
card
.
IsFacedown
())
continue
;
if
(
card
==
null
||
card
.
Data
==
null
||
card
.
IsFacedown
()
||
(
canBeTarget
&&
card
.
IsShouldNotBeTarget
())
)
continue
;
if
(
card
.
HasType
(
CardType
.
Monster
)
&&
card
.
Defense
>
highestDef
)
if
(
card
.
HasType
(
CardType
.
Monster
)
&&
card
.
Defense
>
highestDef
)
{
{
highestDef
=
card
.
Defense
;
highestDef
=
card
.
Defense
;
...
@@ -38,13 +38,13 @@ namespace WindBot.Game.AI
...
@@ -38,13 +38,13 @@ namespace WindBot.Game.AI
return
selected
;
return
selected
;
}
}
public
static
ClientCard
GetLowestAttackMonster
(
this
IEnumerable
<
ClientCard
>
cards
)
public
static
ClientCard
GetLowestAttackMonster
(
this
IEnumerable
<
ClientCard
>
cards
,
bool
canBeTarget
=
false
)
{
{
int
lowestAtk
=
0
;
int
lowestAtk
=
0
;
ClientCard
selected
=
null
;
ClientCard
selected
=
null
;
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
if
(
card
==
null
||
card
.
Data
==
null
||
card
.
IsFacedown
())
continue
;
if
(
card
==
null
||
card
.
Data
==
null
||
card
.
IsFacedown
()
||
(
canBeTarget
&&
card
.
IsShouldNotBeTarget
())
)
continue
;
if
(
lowestAtk
==
0
&&
card
.
HasType
(
CardType
.
Monster
)
||
if
(
lowestAtk
==
0
&&
card
.
HasType
(
CardType
.
Monster
)
||
card
.
HasType
(
CardType
.
Monster
)
&&
card
.
Attack
<
lowestAtk
)
card
.
HasType
(
CardType
.
Monster
)
&&
card
.
Attack
<
lowestAtk
)
{
{
...
@@ -55,13 +55,13 @@ namespace WindBot.Game.AI
...
@@ -55,13 +55,13 @@ namespace WindBot.Game.AI
return
selected
;
return
selected
;
}
}
public
static
ClientCard
GetLowestDefenseMonster
(
this
IEnumerable
<
ClientCard
>
cards
)
public
static
ClientCard
GetLowestDefenseMonster
(
this
IEnumerable
<
ClientCard
>
cards
,
bool
canBeTarget
=
false
)
{
{
int
lowestDef
=
0
;
int
lowestDef
=
0
;
ClientCard
selected
=
null
;
ClientCard
selected
=
null
;
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
if
(
card
==
null
||
card
.
Data
==
null
||
card
.
IsFacedown
())
continue
;
if
(
card
==
null
||
card
.
Data
==
null
||
card
.
IsFacedown
()
||
(
canBeTarget
&&
card
.
IsShouldNotBeTarget
())
)
continue
;
if
(
lowestDef
==
0
&&
card
.
HasType
(
CardType
.
Monster
)
||
if
(
lowestDef
==
0
&&
card
.
HasType
(
CardType
.
Monster
)
||
card
.
HasType
(
CardType
.
Monster
)
&&
card
.
Defense
<
lowestDef
)
card
.
HasType
(
CardType
.
Monster
)
&&
card
.
Defense
<
lowestDef
)
{
{
...
@@ -149,31 +149,31 @@ namespace WindBot.Game.AI
...
@@ -149,31 +149,31 @@ namespace WindBot.Game.AI
return
cardlist
;
return
cardlist
;
}
}
public
static
ClientCard
GetInvincibleMonster
(
this
IEnumerable
<
ClientCard
>
cards
)
public
static
ClientCard
GetInvincibleMonster
(
this
IEnumerable
<
ClientCard
>
cards
,
bool
canBeTarget
=
false
)
{
{
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
if
(
card
!=
null
&&
card
.
IsMonsterInvincible
()
&&
card
.
IsFaceup
())
if
(
card
!=
null
&&
card
.
IsMonsterInvincible
()
&&
card
.
IsFaceup
()
&&
(!
canBeTarget
||
!
card
.
IsShouldNotBeTarget
())
)
return
card
;
return
card
;
}
}
return
null
;
return
null
;
}
}
public
static
ClientCard
GetDangerousMonster
(
this
IEnumerable
<
ClientCard
>
cards
)
public
static
ClientCard
GetDangerousMonster
(
this
IEnumerable
<
ClientCard
>
cards
,
bool
canBeTarget
=
false
)
{
{
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
if
(
card
!=
null
&&
card
.
IsMonsterDangerous
()
&&
card
.
IsFaceup
())
if
(
card
!=
null
&&
card
.
IsMonsterDangerous
()
&&
card
.
IsFaceup
()
&&
(!
canBeTarget
||
!
card
.
IsShouldNotBeTarget
())
)
return
card
;
return
card
;
}
}
return
null
;
return
null
;
}
}
public
static
ClientCard
GetFloodgate
(
this
IEnumerable
<
ClientCard
>
cards
)
public
static
ClientCard
GetFloodgate
(
this
IEnumerable
<
ClientCard
>
cards
,
bool
canBeTarget
=
false
)
{
{
foreach
(
ClientCard
card
in
cards
)
foreach
(
ClientCard
card
in
cards
)
{
{
if
(
card
!=
null
&&
card
.
IsFloodgate
()
&&
card
.
IsFaceup
())
if
(
card
!=
null
&&
card
.
IsFloodgate
()
&&
card
.
IsFaceup
()
&&
(!
canBeTarget
||
!
card
.
IsShouldNotBeTarget
())
)
return
card
;
return
card
;
}
}
return
null
;
return
null
;
...
...
Game/AI/CardExtension.cs
View file @
cb9047f1
...
@@ -29,6 +29,38 @@ namespace WindBot.Game.AI
...
@@ -29,6 +29,38 @@ namespace WindBot.Game.AI
return
!
card
.
IsDisabled
()
&&
Enum
.
IsDefined
(
typeof
(
PreventActivationEffectInBattle
),
card
.
Id
);
return
!
card
.
IsDisabled
()
&&
Enum
.
IsDefined
(
typeof
(
PreventActivationEffectInBattle
),
card
.
Id
);
}
}
/// <summary>
/// Is this card shouldn't be tried to be selected as target?
/// </summary>
public
static
bool
IsShouldNotBeTarget
(
this
ClientCard
card
)
{
return
!
card
.
IsDisabled
()
&&
Enum
.
IsDefined
(
typeof
(
ShouldNotBeTarget
),
card
.
Id
);
}
/// <summary>
/// Is this card shouldn't be tried to be selected as target of monster?
/// </summary>
public
static
bool
IsShouldNotBeMonsterTarget
(
this
ClientCard
card
)
{
return
!
card
.
IsDisabled
()
&&
Enum
.
IsDefined
(
typeof
(
ShouldNotBeMonsterTarget
),
card
.
Id
);
}
/// <summary>
/// Is this card shouldn't be tried to be selected as target of spell & trap?
/// </summary>
public
static
bool
IsShouldNotBeSpellTrapTarget
(
this
ClientCard
card
)
{
return
!
card
.
IsDisabled
()
&&
Enum
.
IsDefined
(
typeof
(
ShouldNotBeSpellTrapTarget
),
card
.
Id
);
}
/// <summary>
/// Is this monster should be disabled (with Breakthrough Skill) before it use effect and release or banish itself?
/// </summary>
public
static
bool
IsMonsterShouldBeDisabledBeforeItUseEffect
(
this
ClientCard
card
)
{
return
!
card
.
IsDisabled
()
&&
Enum
.
IsDefined
(
typeof
(
ShouldBeDisabledBeforeItUseEffectMonster
),
card
.
Id
);
}
public
static
bool
IsFloodgate
(
this
ClientCard
card
)
public
static
bool
IsFloodgate
(
this
ClientCard
card
)
{
{
return
Enum
.
IsDefined
(
typeof
(
Floodgate
),
card
.
Id
);
return
Enum
.
IsDefined
(
typeof
(
Floodgate
),
card
.
Id
);
...
...
Game/AI/Decks/BlueEyesExecutor.cs
View file @
cb9047f1
...
@@ -292,7 +292,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -292,7 +292,7 @@ namespace WindBot.Game.AI.Decks
}
}
if
(
CanDealWithUsedAlternativeWhiteDragon
())
if
(
CanDealWithUsedAlternativeWhiteDragon
())
{
{
target
=
AI
.
Utils
.
GetBestEnemyMonster
();
target
=
AI
.
Utils
.
GetBestEnemyMonster
(
false
,
true
);
AI
.
SelectCard
(
target
);
AI
.
SelectCard
(
target
);
UsedAlternativeWhiteDragon
.
Add
(
Card
);
UsedAlternativeWhiteDragon
.
Add
(
Card
);
return
true
;
return
true
;
...
...
Game/AI/Decks/ChainBurnExecutor.cs
View file @
cb9047f1
...
@@ -497,7 +497,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -497,7 +497,7 @@ namespace WindBot.Game.AI.Decks
ClientCard
target
=
AI
.
Utils
.
GetProblematicEnemyMonster
();
ClientCard
target
=
AI
.
Utils
.
GetProblematicEnemyMonster
();
if
(
target
==
null
&&
AI
.
Utils
.
IsChainTarget
(
Card
))
if
(
target
==
null
&&
AI
.
Utils
.
IsChainTarget
(
Card
))
{
{
target
=
AI
.
Utils
.
GetBestEnemyMonster
();
target
=
AI
.
Utils
.
GetBestEnemyMonster
(
true
,
true
);
}
}
if
(
target
!=
null
)
if
(
target
!=
null
)
{
{
...
...
Game/AI/Decks/LightswornShaddoldinosourExecutor.cs
View file @
cb9047f1
...
@@ -527,7 +527,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -527,7 +527,7 @@ namespace WindBot.Game.AI.Decks
private
bool
FairyTailSnowsummon
()
private
bool
FairyTailSnowsummon
()
{
{
ClientCard
target
=
AI
.
Utils
.
GetBestEnemyMonster
(
true
);
ClientCard
target
=
AI
.
Utils
.
GetBestEnemyMonster
(
true
,
true
);
if
(
target
!=
null
)
if
(
target
!=
null
)
{
{
return
true
;
return
true
;
...
@@ -541,7 +541,7 @@ namespace WindBot.Game.AI.Decks
...
@@ -541,7 +541,7 @@ namespace WindBot.Game.AI.Decks
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
{
AI
.
SelectCard
(
AI
.
Utils
.
GetBestEnemyMonster
(
true
));
AI
.
SelectCard
(
AI
.
Utils
.
GetBestEnemyMonster
(
true
,
true
));
return
true
;
return
true
;
}
}
else
else
...
...
Game/AI/DefaultExecutor.cs
View file @
cb9047f1
...
@@ -310,15 +310,31 @@ namespace WindBot.Game.AI
...
@@ -310,15 +310,31 @@ namespace WindBot.Game.AI
}
}
/// <summary>
/// <summary>
/// Chain the enemy monster.
/// Chain the enemy monster
, or disable monster like Rescue Rabbit
.
/// </summary>
/// </summary>
protected
bool
DefaultBreakthroughSkill
()
protected
bool
DefaultBreakthroughSkill
()
{
{
if
(!
DefaultUniqueTrap
())
return
false
;
if
(
Duel
.
Player
==
1
)
{
foreach
(
ClientCard
target
in
Enemy
.
GetMonsters
())
{
if
(
target
.
IsMonsterShouldBeDisabledBeforeItUseEffect
())
{
AI
.
SelectCard
(
target
);
return
true
;
}
}
}
ClientCard
LastChainCard
=
AI
.
Utils
.
GetLastChainCard
();
ClientCard
LastChainCard
=
AI
.
Utils
.
GetLastChainCard
();
if
(
LastChainCard
==
null
)
if
(
LastChainCard
==
null
)
return
false
;
return
false
;
if
(
LastChainCard
.
Controller
!=
1
||
LastChainCard
.
Location
!=
CardLocation
.
MonsterZone
||
!
DefaultUniqueTrap
())
if
(
LastChainCard
.
Controller
!=
1
||
LastChainCard
.
Location
!=
CardLocation
.
MonsterZone
||
LastChainCard
.
IsDisabled
()
||
LastChainCard
.
IsShouldNotBeTarget
()
||
LastChainCard
.
IsShouldNotBeSpellTrapTarget
())
return
false
;
return
false
;
AI
.
SelectCard
(
LastChainCard
);
AI
.
SelectCard
(
LastChainCard
);
return
true
;
return
true
;
...
...
Game/AI/Enums/ShouldBeDisabledBeforeItUseEffectMonster.cs
0 → 100644
View file @
cb9047f1
namespace
WindBot.Game.AI.Enums
{
/// <summary>
/// Monsters that release or banish itself to use effect. So them should be disabled (with Breakthrough Skill) before it use effect.
/// </summary>
public
enum
ShouldBeDisabledBeforeItUseEffectMonster
{
MachinaMegaform
=
51617185
,
DarkSummoningBeast
=
87917187
,
GemKnightAlexandrite
=
90019393
,
RedEyesRetroDragon
=
53485634
,
DeepSweeper
=
8649148
,
BeastWarriorPuma
=
16796157
,
ZefrasaberSwordmasteroftheNekroz
=
84388461
,
CipherWing
=
81974607
,
MadolcheAnjelly
=
34680482
,
PlanetPathfinder
=
97526666
,
RescueCat
=
14878871
,
RescueHamster
=
50485594
,
RescueFerret
=
56343672
,
RescueRabbit
=
85138716
,
GalaxyWizard
=
98555327
,
Backlinker
=
71172240
,
Merlin
=
3580032
,
CrystalVanguard
=
87475570
,
Kuribandit
=
16404809
,
PhotonLizard
=
38973775
,
SuperheavySamuraiFlutist
=
27978707
,
ConstellarRasalhague
=
70624184
,
CardcarD
=
45812361
,
UnifloraMysticalBeastoftheForest
=
36318200
,
BusterWhelpoftheDestructionSwordsman
=
49823708
,
GalaxyEyesCloudragon
=
9260791
,
SylvanPrincessprout
=
20579538
,
AltergeistPixiel
=
57769391
,
AbyssActorExtras
=
88412339
,
PerformapalTrumpWitch
=
91584698
,
RaidraptorLastStrix
=
97219708
,
TimeMaiden
=
27107590
,
SuperQuantalFairyAlphan
=
58753372
,
TheBlackStoneofLegend
=
66574418
,
PaladinofDarkDragon
=
71408082
,
PaladinofPhotonDragon
=
85346853
,
TwinPhotonLizard
=
29455728
}
}
Game/AI/Enums/ShouldNotBeMonsterTarget.cs
0 → 100644
View file @
cb9047f1
namespace
WindBot.Game.AI.Enums
{
/// <summary>
/// Cards that are can't be selected as target of monster's effect, or immuned to monster's effect.
/// So them shouldn't be tried to be selected as target of monster at most times.
/// </summary>
public
enum
ShouldNotBeMonsterTarget
{
TheLegendaryFishermanII
=
19801646
,
FirstoftheDragons
=
10817524
,
Tatsunoko
=
55863245
,
CXyzSimontheGreatMoralLeader
=
41147577
,
PaleozoicAnomalocaris
=
61307542
,
PaleozoicOpabinia
=
37649320
,
BorreloadDragon
=
31833038
}
}
Game/AI/Enums/ShouldNotBeSpellTarget.cs
0 → 100644
View file @
cb9047f1
namespace
WindBot.Game.AI.Enums
{
/// <summary>
/// Cards that are can't be selected as target of spell&trap's effect, or immuned to spell&trap's effect.
/// So them shouldn't be tried to be selected as target of spell&trap at most times.
/// </summary>
public
enum
ShouldNotBeSpellTrapTarget
{
ApoqliphortTowers
=
27279764
,
ApoqliphortSkybase
=
40061558
,
TheLegendaryFishermanIII
=
44968687
,
ChaosAncientGearGiant
=
51788412
}
}
Game/AI/Enums/ShouldNotBeTarget.cs
0 → 100644
View file @
cb9047f1
namespace
WindBot.Game.AI.Enums
{
/// <summary>
/// Cards that are can't be selected as target, or immuned to most effect.
/// So them shouldn't be tried to be selected as target at most times.
/// </summary>
public
enum
ShouldNotBeTarget
{
DivineSerpentGeh
=
82103466
,
ObelisktheTormentor
=
10000000
,
TheWingedDragonofRaSphereMode
=
10000080
,
TheWingedDragonofRaImmortalPhoenix
=
10000090
,
KozmoDarkPlanet
=
85991529
,
ZushintheSleepingGiant
=
67547370
,
TheLegendaryExodiaIncarnate
=
58604027
,
KozmoDarkEclipser
=
64063868
,
KozmoDarkDestroyer
=
55885348
,
KozmoForerunner
=
20849090
,
MajespecterUnicornKirin
=
31178212
,
WorldLegacyWorldShield
=
55787576
,
KiwiMagicianGirl
=
82627406
,
MajespecterFoxKyubi
=
94784213
,
MajespecterToadOgama
=
645794
,
MajespecterCrowYata
=
68395509
,
MajespecterRaccoonBunbuku
=
31991800
,
MajespecterCatNekomata
=
5506791
,
HazyFlameHydra
=
8696773
,
HazyFlameMantikor
=
96051150
,
HazyFlameHyppogrif
=
31303283
,
HazyFlameCerbereus
=
38525760
,
HazyFlameSphynx
=
1409474
,
HazyFlamePeryton
=
37803172
,
HazyFlameGriffin
=
74010769
,
BlueEyesChaosMAXDragon
=
55410871
,
SupremeKingZARC
=
13331639
,
CrimsonNovaTrinitytheDarkCubicLord
=
72664875
,
LunalightLeoDancer
=
24550676
,
TimaeustheKnightofDestiny
=
53315891
,
DantePilgrimoftheBurningAbyss
=
18386170
,
AncientGearHowitzer
=
87182127
,
InvokedCocytus
=
85908279
,
LyriluscIndependentNightingale
=
76815942
,
FlowerCardianLightshower
=
42291297
,
YaziEviloftheYangZing
=
43202238
,
RaidraptorUltimateFalcon
=
86221741
,
DisdainfulBirdofParadise
=
27240101
}
}
WindBot.csproj
View file @
cb9047f1
...
@@ -98,6 +98,10 @@
...
@@ -98,6 +98,10 @@
<Compile
Include=
"Game\AI\Dialogs.cs"
/>
<Compile
Include=
"Game\AI\Dialogs.cs"
/>
<Compile
Include=
"Game\AI\Enums\DangerousMonster.cs"
/>
<Compile
Include=
"Game\AI\Enums\DangerousMonster.cs"
/>
<Compile
Include=
"Game\AI\Enums\FusionSpell.cs"
/>
<Compile
Include=
"Game\AI\Enums\FusionSpell.cs"
/>
<Compile
Include=
"Game\AI\Enums\ShouldBeDisabledBeforeItUseEffectMonster.cs"
/>
<Compile
Include=
"Game\AI\Enums\ShouldNotBeSpellTarget.cs"
/>
<Compile
Include=
"Game\AI\Enums\ShouldNotBeMonsterTarget.cs"
/>
<Compile
Include=
"Game\AI\Enums\ShouldNotBeTarget.cs"
/>
<Compile
Include=
"Game\AI\Enums\PreventActivationEffectInBattle.cs"
/>
<Compile
Include=
"Game\AI\Enums\PreventActivationEffectInBattle.cs"
/>
<Compile
Include=
"Game\AI\Enums\OneForXyz.cs"
/>
<Compile
Include=
"Game\AI\Enums\OneForXyz.cs"
/>
<Compile
Include=
"Game\AI\Enums\InvincibleMonster.cs"
/>
<Compile
Include=
"Game\AI\Enums\InvincibleMonster.cs"
/>
...
...
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