Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
MDPro3
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
MyCard
MDPro3
Commits
d40ee406
Commit
d40ee406
authored
Feb 12, 2026
by
SherryChaos
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
windbot update
parent
52ace79b
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
5960 additions
and
15 deletions
+5960
-15
Assets/Scripts/Windbot/Game/AI/CardExtension.cs
Assets/Scripts/Windbot/Game/AI/CardExtension.cs
+7
-3
Assets/Scripts/Windbot/Game/AI/Decks/MalissExecutor.cs
Assets/Scripts/Windbot/Game/AI/Decks/MalissExecutor.cs
+4216
-0
Assets/Scripts/Windbot/Game/AI/Decks/MalissExecutor.cs.meta
Assets/Scripts/Windbot/Game/AI/Decks/MalissExecutor.cs.meta
+2
-0
Assets/Scripts/Windbot/Game/AI/Decks/MalissOCGExecutor.cs
Assets/Scripts/Windbot/Game/AI/Decks/MalissOCGExecutor.cs
+1493
-0
Assets/Scripts/Windbot/Game/AI/Decks/MalissOCGExecutor.cs.meta
...s/Scripts/Windbot/Game/AI/Decks/MalissOCGExecutor.cs.meta
+2
-0
Assets/Scripts/Windbot/Game/AI/DefaultExecutor.cs
Assets/Scripts/Windbot/Game/AI/DefaultExecutor.cs
+9
-2
Assets/Scripts/Windbot/Game/AI/Enums/DangerousMonster.cs
Assets/Scripts/Windbot/Game/AI/Enums/DangerousMonster.cs
+4
-1
Assets/Scripts/Windbot/Game/AI/Enums/Floodgate.cs
Assets/Scripts/Windbot/Game/AI/Enums/Floodgate.cs
+50
-1
Assets/Scripts/Windbot/Game/AI/Enums/FusionSpell.cs
Assets/Scripts/Windbot/Game/AI/Enums/FusionSpell.cs
+20
-1
Assets/Scripts/Windbot/Game/AI/Enums/InvincibleMonster.cs
Assets/Scripts/Windbot/Game/AI/Enums/InvincibleMonster.cs
+19
-2
Assets/Scripts/Windbot/Game/AI/Enums/OneForXyz.cs
Assets/Scripts/Windbot/Game/AI/Enums/OneForXyz.cs
+6
-1
Assets/Scripts/Windbot/Game/AI/Enums/PreventActivationEffectInBattle.cs
.../Windbot/Game/AI/Enums/PreventActivationEffectInBattle.cs
+2
-1
Assets/Scripts/Windbot/Game/AI/Enums/ShouldBeDisabledBeforeItUseEffectMonster.cs
...Game/AI/Enums/ShouldBeDisabledBeforeItUseEffectMonster.cs
+7
-1
Assets/Scripts/Windbot/Game/AI/Enums/ShouldNotBeMonsterTarget.cs
...Scripts/Windbot/Game/AI/Enums/ShouldNotBeMonsterTarget.cs
+2
-1
Assets/Scripts/Windbot/Game/AI/Enums/ShouldNotBeTarget.cs
Assets/Scripts/Windbot/Game/AI/Enums/ShouldNotBeTarget.cs
+4
-1
Data/Windbot/Decks/AI_Maliss.ydk
Data/Windbot/Decks/AI_Maliss.ydk
+58
-0
Data/Windbot/Decks/AI_MalissOCG.ydk
Data/Windbot/Decks/AI_MalissOCG.ydk
+59
-0
No files found.
Assets/Scripts/Windbot/Game/AI/CardExtension.cs
View file @
d40ee406
using
System
;
using
System
;
using
System.Linq
;
using
WindBot.Game.AI.Enums
;
using
WindBot.Game.AI.Enums
;
using
YGOSharp.OCGWrapper.Enums
;
using
YGOSharp.OCGWrapper.Enums
;
...
@@ -38,7 +39,8 @@ namespace WindBot.Game.AI
...
@@ -38,7 +39,8 @@ namespace WindBot.Game.AI
/// </summary>
/// </summary>
public
static
bool
IsShouldNotBeTarget
(
this
ClientCard
card
)
public
static
bool
IsShouldNotBeTarget
(
this
ClientCard
card
)
{
{
return
!
card
.
IsDisabled
()
&&
!
card
.
HasType
(
CardType
.
Normal
)
&&
Enum
.
IsDefined
(
typeof
(
ShouldNotBeTarget
),
card
.
Id
);
return
!
card
.
IsDisabled
()
&&
!
card
.
HasType
(
CardType
.
Normal
)
&&
(
Enum
.
IsDefined
(
typeof
(
ShouldNotBeTarget
),
card
.
Id
)
||
card
.
Overlays
.
Any
(
code
=>
code
==
91025875
));
}
}
/// <summary>
/// <summary>
...
@@ -46,7 +48,8 @@ namespace WindBot.Game.AI
...
@@ -46,7 +48,8 @@ namespace WindBot.Game.AI
/// </summary>
/// </summary>
public
static
bool
IsShouldNotBeMonsterTarget
(
this
ClientCard
card
)
public
static
bool
IsShouldNotBeMonsterTarget
(
this
ClientCard
card
)
{
{
return
!
card
.
IsDisabled
()
&&
Enum
.
IsDefined
(
typeof
(
ShouldNotBeMonsterTarget
),
card
.
Id
);
return
!
card
.
IsDisabled
()
&&
Enum
.
IsDefined
(
typeof
(
ShouldNotBeMonsterTarget
),
card
.
Id
)
||
card
.
EquipCards
.
Any
(
c
=>
c
.
IsCode
(
89812483
)
&&
!
c
.
IsDisabled
());
}
}
/// <summary>
/// <summary>
...
@@ -54,7 +57,8 @@ namespace WindBot.Game.AI
...
@@ -54,7 +57,8 @@ namespace WindBot.Game.AI
/// </summary>
/// </summary>
public
static
bool
IsShouldNotBeSpellTrapTarget
(
this
ClientCard
card
)
public
static
bool
IsShouldNotBeSpellTrapTarget
(
this
ClientCard
card
)
{
{
return
!
card
.
IsDisabled
()
&&
Enum
.
IsDefined
(
typeof
(
ShouldNotBeSpellTrapTarget
),
card
.
Id
);
return
!
card
.
IsDisabled
()
&&
Enum
.
IsDefined
(
typeof
(
ShouldNotBeSpellTrapTarget
),
card
.
Id
)
||
card
.
EquipCards
.
Any
(
c
=>
c
.
IsCode
(
89812483
)
&&
!
c
.
IsDisabled
());
}
}
/// <summary>
/// <summary>
...
...
Assets/Scripts/Windbot/Game/AI/Decks/MalissExecutor.cs
0 → 100644
View file @
d40ee406
This source diff could not be displayed because it is too large. You can
view the blob
instead.
Assets/Scripts/Windbot/Game/AI/Decks/MalissExecutor.cs.meta
0 → 100644
View file @
d40ee406
fileFormatVersion: 2
guid: 219f40b31d890c144bd8b80f523c593b
\ No newline at end of file
Assets/Scripts/Windbot/Game/AI/Decks/MalissOCGExecutor.cs
0 → 100644
View file @
d40ee406
using
YGOSharp.OCGWrapper
;
using
YGOSharp.OCGWrapper.Enums
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System
;
using
WindBot
;
using
WindBot.Game
;
using
WindBot.Game.AI
;
namespace
WindBot.Game.AI.Decks
{
[
Deck
(
"MalissOCG"
,
"AI_MalissOCG"
)]
public
class
MalissOCGExecutor
:
DefaultExecutor
{
public
class
SetCode
{
public
const
int
Maliss
=
0x1bf
;
}
public
class
CardId
{
public
const
int
Artifact_Lancea
=
34267821
;
//古遗物-圣枪
public
const
int
Dimension_Shifter
=
91800273
;
//大宇宙人
public
const
int
MaxxG
=
23434538
;
//增殖的G
public
const
int
Mulcharmy_Fuwalos
=
42141493
;
//欢聚友伴·茸茸长尾山雀
public
const
int
Infinite_Impermanence
=
10045474
;
//无限泡影
public
const
int
Dominus_Impulse
=
40366667
;
//灵王的波动
public
const
int
AshBlossom
=
14558127
;
//灰流丽
public
const
int
CalledbytheGrave
=
24224830
;
//墓穴的指名
public
const
int
Gold_Sarcophagus
=
75500286
;
//封印之黄金柜
public
const
int
Wizard_Ignister
=
3723262
;
//男巫@火灵天星
public
const
int
Backup_Ignister
=
30118811
;
//备份员@火灵天星
public
const
int
Maliss_Chessy_Cat
=
96676583
;
//码丽丝<兵卒>柴郡猫
public
const
int
Maliss_White_Rabbit
=
69272449
;
//码丽丝<兵卒>白兔
public
const
int
Maliss_Dormouse
=
32061192
;
//码丽丝<兵卒>睡鼠
public
const
int
Maliss_March_Hare
=
20938824
;
//码丽丝<兵卒>三月兔
public
const
int
Maliss_in_the_Mirror
=
93453053
;
//码丽丝镜中奇像
public
const
int
Maliss_in_Underground
=
68337209
;
//码丽丝梦游地下界
public
const
int
Maliss_GWC_06
=
20726052
;
//码丽丝<代码>GWC-06
public
const
int
Maliss_TB_11
=
57111661
;
//码丽丝<代码>TB-11
public
const
int
Maliss_MTP_07
=
94722358
;
//码丽丝<代码>MTP-07
public
const
int
Mereologic_Aggregator
=
9940036
;
public
const
int
Cyberse_Desavewurm
=
92422871
;
public
const
int
Allied_Code_Talker_Ignister
=
39138610
;
//协心代码语者@火灵天星
public
const
int
Firewall_Dragon
=
64211118
;
//防火龙·暗流体-新电磁泄密风
public
const
int
Accesscode_Talker
=
86066372
;
//访问码语者
public
const
int
Maliss_Hearts_Crypter
=
21848500
;
//码丽丝<王后>红心加密
public
const
int
Maliss_Red_Ransom
=
68059897
;
//码丽丝<王后>红棋勒索
public
const
int
Maliss_White_Binder
=
95454996
;
//码丽丝<王后>白棋捆绑
public
const
int
Transcode_Talker
=
46947713
;
//转码语者
public
const
int
Splash_Mage
=
59859086
;
//飞溅闪屏法师
public
const
int
Haggard_Lizardose
=
9763474
;
//盛悴之致命毒蜥
public
const
int
Cyberse_Wicckid
=
52698008
;
//电子界小男巫
public
const
int
Link_Decoder
=
30342076
;
//连接解码员
}
public
CardCount
Count
=
new
CardCount
();
public
MalissOCGExecutor
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
{
AddExecutor
(
ExecutorType
.
Repos
,
MonsterRepos
);
AddExecutor
(
ExecutorType
.
GoToBattlePhase
,
GoToBattlePhase
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Dimension_Shifter
,
Effect_Enemy_Turn
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Mulcharmy_Fuwalos
,
Effect_Enemy_Turn
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
MaxxG
,
Effect_Enemy_Turn
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Infinite_Impermanence
,
Effect_Infinite_Impermanence
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
AshBlossom
,
DefaultAshBlossomAndJoyousSpring
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Dominus_Impulse
,
Effect_Enemy_Chain
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
CalledbytheGrave
,
DefaultCalledByTheGrave
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_White_Rabbit
,
Effect_White_Rabbit
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Haggard_Lizardose
,
Effect_Haggard_Lizardose
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Splash_Mage
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Cyberse_Wicckid
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Cyberse_Desavewurm
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Transcode_Talker
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Mereologic_Aggregator
,
Effect_Mereologic_Aggregator
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Firewall_Dragon
,
Effect_Firewall_Dragon
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Allied_Code_Talker_Ignister
,
Effect_Allied_Code_Talker_Ignister
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_White_Binder
,
Effect_Maliss_Link
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_Red_Ransom
,
Effect_Maliss_Link
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_Hearts_Crypter
,
Effect_Maliss_Hearts_Crypter
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Link_Decoder
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Maliss_Dormouse
,
Summon_Maliss_Dormouse
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Maliss_White_Rabbit
,
Summon_Maliss_White_Rabbit
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Maliss_Chessy_Cat
,
Summon_Maliss_Chessy_Cat
);
AddExecutor
(
ExecutorType
.
Summon
,
CardId
.
Backup_Ignister
,
Summon_Backup_Ignister
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_Dormouse
,
Effect_Maliss_Dormouse
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Maliss_Red_Ransom
,
SP_Maliss_Link
);
AddExecutor
(
ExecutorType
.
SpellSet
,
SpellSet_Maliss
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_Chessy_Cat
,
Effect_Maliss_Chessy_Cat
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Splash_Mage
,
SP_Splash_Mage
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Haggard_Lizardose
,
SP_Haggard_Lizardose
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Link_Decoder
,
SP_Link_Decoder
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Cyberse_Wicckid
,
SP_Cyberse_Wicckid
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_in_Underground
,
Effect_Remove
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Gold_Sarcophagus
,
Effect_Remove
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_TB_11
,
Effect_Maliss_TB_11
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_MTP_07
,
Effect_Maliss_MTP_07
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_March_Hare
,
Effect_Maliss_March_Hare
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Backup_Ignister
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Wizard_Ignister
,
Effect_Wizard_Ignister
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_in_the_Mirror
,
Effect_Maliss_in_the_Mirror
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Maliss_Hearts_Crypter
,
SP_Maliss_Hearts_Crypter
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Maliss_White_Binder
,
SP_Maliss_White_Binder
);
AddExecutor
(
ExecutorType
.
Activate
,
CardId
.
Maliss_GWC_06
,
Effect_Maliss_GWC_06
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Firewall_Dragon
,
SP_Firewall_Dragon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Allied_Code_Talker_Ignister
,
SP_Allied_Code_Talker_Ignister
);
AddExecutor
(
ExecutorType
.
SpellSet
,
CardId
.
Maliss_in_the_Mirror
);
AddExecutor
(
ExecutorType
.
SpSummon
,
CardId
.
Transcode_Talker
,
SP_Transcode_Talker
);
AddExecutor
(
ExecutorType
.
SpellSet
,
SpellSet
);
}
public
class
CardCount
{
public
int
Dimension_Shifter
=
0
;
public
int
Summon
=
0
;
public
int
Phase
=
0
;
public
List
<
int
>
Activate
=
new
List
<
int
>();
public
List
<
int
>
ActivateRemoved
=
new
List
<
int
>();
public
List
<
int
>
Position
=
new
List
<
int
>();
public
List
<
int
>
Set
=
new
List
<
int
>();
public
List
<
int
>
Oppo
=
new
List
<
int
>();
public
void
Clear
()
{
Activate
.
Clear
();
ActivateRemoved
.
Clear
();
Position
.
Clear
();
Set
.
Clear
();
Oppo
.
Clear
();
if
(
Dimension_Shifter
>
0
)
Dimension_Shifter
--;
if
(
Summon
>
0
)
Summon
--;
}
public
void
AddActivateOppo
(
int
id
)
{
Oppo
.
Add
(
id
);
}
public
bool
CheckActivateOppo
(
int
id
)
{
return
!
Oppo
.
Contains
(
id
);
}
public
void
AddSummon
()
{
Summon
=
1
;
}
public
void
AddCard
(
int
id
)
{
if
(
id
==
CardId
.
Dimension_Shifter
)
Dimension_Shifter
=
2
;
else
Activate
.
Add
(
id
);
}
public
void
AddSet
(
int
id
)
{
Set
.
Add
(
id
);
}
public
bool
CheckSet
(
int
id
)
{
return
!
Set
.
Contains
(
id
);
}
public
void
AddCardRemoved
(
int
id
)
{
ActivateRemoved
.
Add
(
id
);
}
public
void
AddPosition
(
int
id
)
{
Position
.
Add
(
id
);
}
public
void
AddPhase
()
{
Phase
++;
}
public
bool
CheckCard
(
int
id
)
{
if
(
id
==
CardId
.
Dimension_Shifter
)
return
Dimension_Shifter
==
0
;
else
return
!
Activate
.
Contains
(
id
);
}
public
bool
CheckCardRemoved
(
int
id
)
{
return
!
ActivateRemoved
.
Contains
(
id
);
}
public
bool
CheckPosition
(
int
id
)
{
return
!
Position
.
Contains
(
id
);
}
public
int
CheckPhase
()
{
return
Phase
;
}
public
bool
CheckSummon
()
{
return
Summon
==
0
;
}
}
private
struct
ZoneData
{
public
int
Zone
;
public
ClientCard
[]
CheckZone
;
}
public
override
void
OnNewTurn
()
{
Count
.
AddPhase
();
Count
.
Clear
();
base
.
OnNewTurn
();
}
public
override
void
OnChaining
(
int
player
,
ClientCard
card
)
{
if
(
card
.
Id
==
CardId
.
Dimension_Shifter
||
card
.
Id
==
CardId
.
Artifact_Lancea
)
Count
.
AddCard
(
card
.
Id
);
else
if
(
player
==
0
)
if
(
card
.
Location
==
CardLocation
.
Removed
)
Count
.
AddCardRemoved
(
card
.
Id
);
else
Count
.
AddCard
(
card
.
Id
);
if
(
player
==
1
)
Count
.
AddActivateOppo
(
card
.
Id
);
}
public
override
void
OnChainEnd
()
{
if
(
DefaultCheckWhetherCardIdIsNegated
(
CardId
.
Dimension_Shifter
)
&&
!
Count
.
CheckCard
(
Card
.
Id
))
Count
.
Dimension_Shifter
=
0
;
Count
.
Oppo
.
Clear
();
}
public
override
bool
OnSelectYesNo
(
int
desc
)
{
if
(
desc
==
Util
.
GetStringId
(
CardId
.
Maliss_White_Binder
,
3
))
return
true
;
if
(
desc
==
Util
.
GetStringId
(
CardId
.
Maliss_MTP_07
,
3
))
return
Enemy
.
GetMonsters
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
())
+
Enemy
.
GetSpells
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
()
&&
(
i
.
HasType
(
CardType
.
Field
|
CardType
.
Continuous
|
CardType
.
Equip
)
||
i
.
IsFacedown
()))
>
0
;
return
base
.
OnSelectYesNo
(
desc
);
}
public
override
int
OnSelectPlace
(
int
cardId
,
int
player
,
CardLocation
location
,
int
available
)
{
if
(
player
==
0
&&
location
==
CardLocation
.
MonsterZone
)
{
if
(
new
List
<
int
>{
CardId
.
Maliss_Red_Ransom
,
CardId
.
Splash_Mage
}.
Contains
(
cardId
))
AI
.
SendCustomChat
(
0
);
if
(
new
List
<
int
>{
CardId
.
Cyberse_Wicckid
,
CardId
.
Allied_Code_Talker_Ignister
}.
Contains
(
cardId
))
{
if
((
Zones
.
z6
&
available
)
>
0
&&
(
Bot
.
MonsterZone
[
3
]
==
null
||
Bot
.
MonsterZone
[
4
]
==
null
))
return
Zones
.
z6
;
if
((
Zones
.
z5
&
available
)
>
0
&&
(
Bot
.
MonsterZone
[
0
]
==
null
||
Bot
.
MonsterZone
[
1
]
==
null
))
return
Zones
.
z5
;
}
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Cyberse_Wicckid
)
&&
Count
.
CheckCard
(
CardId
.
Cyberse_Wicckid
))
{
int
seq
=
0
;
for
(
int
i
=
0
;
i
<
7
;
++
i
)
if
(
Bot
.
MonsterZone
[
i
]
!=
null
&&
Bot
.
MonsterZone
[
i
].
IsCode
(
CardId
.
Cyberse_Wicckid
))
seq
=
i
;
if
(
seq
==
5
)
{
if
((
Zones
.
z1
&
available
)
>
0
)
return
Zones
.
z1
;
if
((
Zones
.
z2
&
available
)
>
0
)
return
Zones
.
z2
;
}
else
if
(
seq
==
6
)
{
if
((
Zones
.
z3
&
available
)
>
0
)
return
Zones
.
z3
;
if
((
Zones
.
z4
&
available
)
>
0
)
return
Zones
.
z4
;
}
}
if
(
cardId
==
CardId
.
Transcode_Talker
)
{
if
((
Zones
.
z6
&
available
)
>
0
&&
Bot
.
MonsterZone
[
3
]
==
null
)
return
Zones
.
z6
;
if
((
Zones
.
z5
&
available
)
>
0
&&
Bot
.
MonsterZone
[
1
]
==
null
)
return
Zones
.
z5
;
if
((
Zones
.
z0
&
available
)
>
0
&&
Bot
.
MonsterZone
[
1
]
==
null
)
return
Zones
.
z0
;
if
((
Zones
.
z1
&
available
)
>
0
&&
Bot
.
MonsterZone
[
2
]
==
null
)
return
Zones
.
z1
;
if
((
Zones
.
z2
&
available
)
>
0
&&
Bot
.
MonsterZone
[
3
]
==
null
)
return
Zones
.
z2
;
if
((
Zones
.
z3
&
available
)
>
0
&&
Bot
.
MonsterZone
[
4
]
==
null
)
return
Zones
.
z3
;
}
if
(
cardId
==
CardId
.
Allied_Code_Talker_Ignister
)
{
ZoneData
[]
zoneData
=
new
ZoneData
[]
{
new
ZoneData
{
Zone
=
Zones
.
z0
,
CheckZone
=
new
ClientCard
[]
{
Bot
.
MonsterZone
[
1
]
}
},
new
ZoneData
{
Zone
=
Zones
.
z1
,
CheckZone
=
new
ClientCard
[]
{
Bot
.
MonsterZone
[
0
],
Bot
.
MonsterZone
[
2
]
}
},
new
ZoneData
{
Zone
=
Zones
.
z2
,
CheckZone
=
new
ClientCard
[]
{
Bot
.
MonsterZone
[
1
],
Bot
.
MonsterZone
[
3
]
}
},
new
ZoneData
{
Zone
=
Zones
.
z3
,
CheckZone
=
new
ClientCard
[]
{
Bot
.
MonsterZone
[
2
],
Bot
.
MonsterZone
[
4
]
}
},
new
ZoneData
{
Zone
=
Zones
.
z4
,
CheckZone
=
new
ClientCard
[]
{
Bot
.
MonsterZone
[
3
]
}
},
new
ZoneData
{
Zone
=
Zones
.
z5
,
CheckZone
=
new
ClientCard
[]
{
Bot
.
MonsterZone
[
0
],
Bot
.
MonsterZone
[
1
],
Bot
.
MonsterZone
[
2
]
}
},
new
ZoneData
{
Zone
=
Zones
.
z6
,
CheckZone
=
new
ClientCard
[]
{
Bot
.
MonsterZone
[
2
],
Bot
.
MonsterZone
[
3
],
Bot
.
MonsterZone
[
4
]
}
}
};
int
maxNullCount
=
-
1
;
int
selectedZone
=
0
;
foreach
(
ZoneData
data
in
zoneData
)
{
if
((
data
.
Zone
&
available
)
==
0
)
continue
;
int
nullCount
=
data
.
CheckZone
.
Count
(
card
=>
card
==
null
);
if
(
nullCount
>
maxNullCount
)
{
maxNullCount
=
nullCount
;
selectedZone
=
data
.
Zone
;
}
}
if
(
maxNullCount
>=
0
)
{
return
selectedZone
;
}
}
if
((
Zones
.
z6
&
available
)
>
0
)
return
Zones
.
z6
;
if
((
Zones
.
z5
&
available
)
>
0
)
return
Zones
.
z5
;
}
return
base
.
OnSelectPlace
(
cardId
,
player
,
location
,
available
);
}
public
override
IList
<
ClientCard
>
OnSelectCard
(
IList
<
ClientCard
>
cards
,
int
min
,
int
max
,
int
hint
,
bool
cancelable
)
{
if
(
AI
.
HaveSelectedCards
())
return
null
;
ClientCard
card
=
Duel
.
GetCurrentSolvingChainCard
();
if
(
card
==
null
)
card
=
Card
;
switch
(
card
.
Id
)
{
case
CardId
.
Maliss_White_Rabbit
:
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_TB_11
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_TB_11
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_TB_11
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_GWC_06
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_GWC_06
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_GWC_06
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_MTP_07
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_MTP_07
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_MTP_07
).
ToList
(),
cards
,
min
,
max
);
break
;
case
CardId
.
Maliss_in_Underground
:
if
(
Count
.
CheckSummon
())
{
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
&&
i
.
Location
==
CardLocation
.
Deck
)
&&
!
Bot
.
HasInHand
(
CardId
.
Maliss_Dormouse
)
&&
Check_Maliss_Dormouse
()
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Dormouse
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
&&
i
.
Location
==
CardLocation
.
Deck
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
&&
i
.
Location
==
CardLocation
.
Deck
)
&&
!
Bot
.
HasInHand
(
CardId
.
Maliss_White_Rabbit
)
&&
Check_Maliss_White_Rabbit
()
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_White_Rabbit
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
&&
i
.
Location
==
CardLocation
.
Deck
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
&&
i
.
Location
==
CardLocation
.
Deck
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Removed
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_March_Hare
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
&&
i
.
Location
==
CardLocation
.
Deck
)
&&
!
Bot
.
HasInHand
(
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Chessy_Cat
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
&&
i
.
Location
==
CardLocation
.
Deck
).
ToList
(),
cards
,
min
,
max
);
}
else
{
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
&&
i
.
Location
==
CardLocation
.
Deck
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Dormouse
)
&&
Check_Maliss_Dormouse
())
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
&&
i
.
Location
==
CardLocation
.
Deck
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_White_Rabbit
)
&&
Check_Maliss_White_Rabbit
())
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
&&
i
.
Location
==
CardLocation
.
Deck
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Removed
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_March_Hare
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
&&
i
.
Location
==
CardLocation
.
Deck
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Chessy_Cat
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
).
ToList
(),
cards
,
min
,
max
);
}
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Location
==
CardLocation
.
Deck
).
ToList
(),
cards
,
min
,
max
);
case
CardId
.
Gold_Sarcophagus
:
if
(
Count
.
CheckSummon
())
{
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
)
&&
!
Bot
.
HasInHand
(
CardId
.
Maliss_Dormouse
)
&&
Check_Maliss_Dormouse
()
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Dormouse
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
)
&&
!
Bot
.
HasInHand
(
CardId
.
Maliss_White_Rabbit
)
&&
Check_Maliss_White_Rabbit
()
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_White_Rabbit
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
)
&&
!
Bot
.
HasInHand
(
CardId
.
Maliss_Chessy_Cat
)
&&
Check_Maliss_Chessy_Cat
()
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Chessy_Cat
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Removed
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
).
ToList
(),
cards
,
min
,
max
);
}
else
{
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Dormouse
)
&&
Check_Maliss_Dormouse
())
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_White_Rabbit
)
&&
Check_Maliss_White_Rabbit
())
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Chessy_Cat
)
&&
Check_Maliss_Chessy_Cat
())
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Removed
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
).
ToList
(),
cards
,
min
,
max
);
}
break
;
case
CardId
.
Maliss_Dormouse
:
if
(
Count
.
CheckSummon
())
{
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
)
&&
!
Bot
.
HasInHand
(
CardId
.
Maliss_White_Rabbit
)
&&
Check_Maliss_White_Rabbit
()
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_White_Rabbit
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
)
&&
!
Bot
.
HasInHand
(
CardId
.
Maliss_Chessy_Cat
)
&&
Check_Maliss_Chessy_Cat
()
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Chessy_Cat
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Removed
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
).
ToList
(),
cards
,
min
,
max
);
}
else
{
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_White_Rabbit
)
&&
Check_Maliss_White_Rabbit
())
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Chessy_Cat
)
&&
Check_Maliss_Chessy_Cat
())
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Removed
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
).
ToList
(),
cards
,
min
,
max
);
}
break
;
case
CardId
.
Maliss_TB_11
:
if
(
hint
==
HintMsg
.
SpSummon
)
{
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
{
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Dormouse
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_White_Rabbit
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_March_Hare
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)).
ToList
(),
cards
,
min
,
max
);
}
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_Dormouse
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_White_Rabbit
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_Chessy_Cat
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
).
ToList
(),
cards
,
min
,
max
);
}
else
if
(
hint
==
HintMsg
.
Remove
)
{
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Link
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasType
(
CardType
.
Link
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
}
break
;
case
CardId
.
Maliss_MTP_07
:
if
(
hint
==
HintMsg
.
AddToHand
)
{
if
(
Duel
.
Player
==
1
&&
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_March_Hare
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Hand
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_Dormouse
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_White_Rabbit
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_Chessy_Cat
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
).
ToList
(),
cards
,
min
,
max
);
}
else
if
(
hint
==
HintMsg
.
Remove
)
{
if
(
cards
.
Any
(
i
=>
i
.
Controller
==
1
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Controller
==
1
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Link
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasType
(
CardType
.
Link
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
}
break
;
case
CardId
.
Splash_Mage
:
case
CardId
.
Haggard_Lizardose
:
case
CardId
.
Cyberse_Wicckid
:
if
(
hint
==
HintMsg
.
Remove
)
{
if
(
cards
.
Any
(
i
=>
Count
.
CheckCard
(
i
.
Id
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
Location
==
CardLocation
.
Grave
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCard
(
i
.
Id
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
Location
==
CardLocation
.
Grave
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Location
==
CardLocation
.
Grave
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Location
==
CardLocation
.
Grave
).
ToList
(),
cards
,
min
,
max
);
}
else
if
(
hint
==
HintMsg
.
SpSummon
)
{
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)).
ToList
(),
cards
,
min
,
max
);
}
else
if
(
hint
==
HintMsg
.
Target
)
{
if
(
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Haggard_Lizardose
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Haggard_Lizardose
)).
ToList
(),
cards
,
min
,
max
);
}
break
;
case
CardId
.
Maliss_Red_Ransom
:
if
(
hint
==
HintMsg
.
AddToHand
)
{
List
<
ClientCard
>
chk_cards
=
Bot
.
Graveyard
.
ToList
();
chk_cards
.
AddRange
(
Bot
.
GetSpells
());
chk_cards
.
AddRange
(
Bot
.
Hand
);
if
(
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_in_the_Mirror
))
&&
Check_Maliss_in_the_Mirror
(
CardLocation
.
Removed
)
&&
chk_cards
.
Any
(
i
=>
i
.
HasType
(
CardType
.
Trap
))
&&
(((
Bot
.
HasInHand
(
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckSummon
())
||
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Chessy_Cat
))
&&
Count
.
CheckCard
(
CardId
.
Maliss_Chessy_Cat
)
||
Bot
.
HasInHand
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_March_Hare
)
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_in_the_Mirror
)
)
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_in_the_Mirror
)).
ToList
(),
cards
,
min
,
max
);
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_in_the_Mirror
)).
ToList
(),
cards
,
min
,
max
);
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_in_Underground
)).
ToList
(),
cards
,
min
,
max
);
}
else
if
(
hint
==
HintMsg
.
Remove
)
{
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
{
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Chessy_Cat
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
!
i
.
IsCode
(
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
!
i
.
IsCode
(
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)).
ToList
(),
cards
,
min
,
max
);
}
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Removed
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_March_Hare
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Dormouse
)
&&
Check_Maliss_Dormouse
())
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Dormouse
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_White_Rabbit
)
&&
Check_Maliss_White_Rabbit
())
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_White_Rabbit
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Chessy_Cat
)
&&
Check_Maliss_Chessy_Cat
())
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Id
==
CardId
.
Maliss_Chessy_Cat
).
ToList
(),
cards
,
min
,
max
);
}
break
;
case
CardId
.
Maliss_Chessy_Cat
:
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
{
if
(
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_March_Hare
))
&&
!
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
))
&&
!
Bot
.
Hand
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
}
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
IsCode
(
CardId
.
Maliss_in_the_Mirror
))
&&
Check_Maliss_in_the_Mirror
(
CardLocation
.
Grave
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
IsCode
(
CardId
.
Maliss_in_the_Mirror
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
break
;
case
CardId
.
Maliss_White_Binder
:
if
(
hint
==
HintMsg
.
Remove
)
{
List
<
ClientCard
>
result
=
new
List
<
ClientCard
>();
int
ct
=
5
-
Bot
.
GetMonstersInMainZone
().
Count
;
if
(
ct
>
0
&&
Count
.
CheckCard
(
CardId
.
Allied_Code_Talker_Ignister
))
{
result
.
AddRange
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
Controller
==
0
&&
i
.
HasType
(
CardType
.
Link
)));
if
(
Duel
.
Player
==
1
)
result
.
AddRange
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
Controller
==
0
&&
i
.
IsCode
(
CardId
.
Maliss_White_Rabbit
)));
result
.
AddRange
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
Controller
==
0
&&
i
.
HasType
(
CardType
.
Monster
)));
result
.
AddRange
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
Controller
==
0
&&
i
.
HasType
(
CardType
.
Spell
)));
}
result
.
AddRange
(
cards
.
Where
(
i
=>
i
.
Controller
==
1
));
result
.
AddRange
(
cards
.
Where
(
i
=>
TrashCards
(
i
.
Id
,
CardLocation
.
Grave
)));
result
.
AddRange
(
cards
.
Where
(
i
=>
!
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
HasType
(
CardType
.
Trap
)));
result
.
AddRange
(
cards
.
Where
(
i
=>
!
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Trap
)));
if
(
result
.
Count
()
>
max
)
result
=
result
.
Take
(
max
).
ToList
();
if
(
result
.
Count
()
>
0
)
return
Util
.
CheckSelectCount
(
result
,
cards
,
result
.
Count
(),
result
.
Count
());
if
(
cards
.
Any
(
i
=>
TrashCards
(
i
.
Id
,
CardLocation
.
Grave
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
TrashCards
(
i
.
Id
,
CardLocation
.
Grave
)).
ToList
(),
cards
,
min
,
min
);
return
Util
.
CheckSelectCount
(
cards
,
cards
,
min
,
min
);
}
else
if
(
hint
==
HintMsg
.
Set
)
{
if
(
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_GWC_06
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_GWC_06
)).
ToList
(),
cards
,
min
,
max
);
}
break
;
case
CardId
.
Maliss_March_Hare
:
if
(
hint
==
HintMsg
.
AddToHand
)
{
if
(
cards
.
Any
(
i
=>
Count
.
CheckCard
(
i
.
Id
)
&&
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCard
(
i
.
Id
)
&&
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
Count
.
CheckCard
(
i
.
Id
)
&&
!
i
.
HasType
(
CardType
.
Link
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCard
(
i
.
Id
)
&&
!
i
.
HasType
(
CardType
.
Link
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)).
ToList
(),
cards
,
min
,
max
);
}
else
if
(
hint
==
HintMsg
.
Remove
)
{
if
(
Duel
.
Player
==
1
)
{
if
(
Bot
.
GetMonstersInMainZone
().
Count
()
>
3
)
{
if
(
cards
.
Any
(
i
=>
i
.
HasType
(
CardType
.
Spell
)
&&
i
.
Location
==
CardLocation
.
Grave
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasType
(
CardType
.
Spell
)
&&
i
.
Location
==
CardLocation
.
Grave
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
&&
i
.
Location
==
CardLocation
.
Grave
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
&&
i
.
Location
==
CardLocation
.
Grave
).
ToList
(),
cards
,
min
,
max
);
}
else
{
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasType
(
CardType
.
Link
)
&&
i
.
Location
==
CardLocation
.
Grave
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasType
(
CardType
.
Link
)
&&
i
.
Location
==
CardLocation
.
Grave
).
ToList
(),
cards
,
min
,
max
);
}
}
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
HasType
(
CardType
.
Trap
)
&&
i
.
Location
==
CardLocation
.
Grave
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
HasType
(
CardType
.
Trap
)
&&
i
.
Location
==
CardLocation
.
Grave
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
!
i
.
HasType
(
CardType
.
Trap
)
&&
i
.
Location
==
CardLocation
.
Grave
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
!
i
.
HasType
(
CardType
.
Trap
)
&&
i
.
Location
==
CardLocation
.
Grave
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
HasType
(
CardType
.
Trap
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
HasType
(
CardType
.
Trap
)).
ToList
(),
cards
,
min
,
max
);
}
break
;
case
CardId
.
Maliss_in_the_Mirror
:
if
(
hint
==
HintMsg
.
Remove
)
{
if
(!
cards
.
Any
(
i
=>
i
.
Location
!=
CardLocation
.
Grave
))
{
if
(
cards
.
Any
(
i
=>
i
.
HasType
(
CardType
.
Trap
))
&&
!
Bot
.
HasInHandOrInSpellZoneOrInGraveyard
(
CardId
.
Maliss_GWC_06
)
&&
!
Bot
.
HasInBanished
(
CardId
.
Maliss_GWC_06
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasType
(
CardType
.
Trap
)).
ToList
(),
cards
,
min
,
max
);
}
else
{
if
(
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_Red_Ransom
))
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Red_Ransom
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_Red_Ransom
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasType
(
CardType
.
Link
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasType
(
CardType
.
Link
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
}
}
else
if
(
hint
==
HintMsg
.
AddToHand
)
{
if
(
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_GWC_06
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_GWC_06
)).
ToList
(),
cards
,
min
,
max
);
}
else
if
(
hint
==
HintMsg
.
Disable
)
{
if
(
cards
.
Contains
(
Util
.
GetLastChainCard
()))
return
Util
.
CheckSelectCount
(
new
List
<
ClientCard
>()
{
Util
.
GetLastChainCard
()
},
cards
,
min
,
max
);
}
break
;
case
CardId
.
Maliss_GWC_06
:
if
(
hint
==
HintMsg
.
Remove
)
{
if
(
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
}
else
if
(
hint
==
HintMsg
.
SpSummon
)
{
if
(
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_White_Binder
)
&&
i
.
Location
==
CardLocation
.
Grave
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_White_Binder
)
&&
i
.
Location
==
CardLocation
.
Grave
).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasType
(
CardType
.
Link
)
&&
!
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
Location
==
CardLocation
.
Grave
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasType
(
CardType
.
Link
)
&&
!
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
Location
==
CardLocation
.
Grave
).
ToList
(),
cards
,
min
,
max
);
}
break
;
case
CardId
.
Mereologic_Aggregator
:
if
(
cards
.
Any
(
i
=>
i
.
Controller
==
1
&&
Count
.
CheckActivateOppo
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Controller
==
1
&&
Count
.
CheckActivateOppo
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Controller
==
1
).
ToList
(),
cards
,
min
,
max
);
case
CardId
.
Firewall_Dragon
:
if
(
Enemy
.
GetMonsters
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
()
&&
i
.
IsFaceup
())
+
Enemy
.
GetSpells
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
()
&&
i
.
HasType
(
CardType
.
Field
|
CardType
.
Continuous
|
CardType
.
Equip
))
>
0
&&
Duel
.
Player
==
1
&&
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Mereologic_Aggregator
))
)
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Mereologic_Aggregator
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Cyberse_Desavewurm
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Cyberse_Desavewurm
)).
ToList
(),
cards
,
min
,
max
);
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Location
==
CardLocation
.
Deck
).
ToList
(),
cards
,
min
,
max
);
case
CardId
.
Allied_Code_Talker_Ignister
:
if
(
hint
==
HintMsg
.
SpSummon
)
{
if
(
cards
.
Any
(
i
=>
!
i
.
IsCode
(
CardId
.
Maliss_White_Binder
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
!
i
.
IsCode
(
CardId
.
Maliss_White_Binder
)).
ToList
(),
cards
,
max
,
max
);
return
base
.
OnSelectCard
(
cards
,
max
,
max
,
hint
,
false
);
}
else
if
(
hint
==
HintMsg
.
Release
)
{
if
(
cards
.
Any
(
i
=>
i
.
LinkCount
<
4
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
LinkCount
<
4
).
ToList
(),
cards
,
max
,
max
);
}
break
;
case
CardId
.
Backup_Ignister
:
if
(
hint
==
HintMsg
.
AddToHand
)
{
if
(
card
.
Id
==
CardId
.
Dimension_Shifter
||
card
.
Id
==
CardId
.
Artifact_Lancea
)
{
if
(!
Bot
.
Hand
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
))
&&
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
))
)
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
if
(!
Bot
.
Hand
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
))
&&
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
))
)
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
}
if
(
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Wizard_Ignister
))
&&
Bot
.
Hand
.
Count
()
>
0
&&
(
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasRace
(
CardRace
.
Cyberse
))
||
(
Bot
.
HasInExtra
(
CardId
.
Link_Decoder
)
&&
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
Level
<=
4
&&
i
.
HasRace
(
CardRace
.
Cyberse
))
&&
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
))
||
(
Bot
.
HasInExtra
(
CardId
.
Haggard_Lizardose
)
&&
!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
)
&&
Bot
.
GetMonsters
()
.
Where
(
i
=>
i
.
IsFaceup
()
&&
(!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<
2
)).
ToList
()
.
GroupBy
(
i
=>
i
.
Id
)
.
Select
(
i
=>
i
.
First
())
.
Count
()
>=
2
)
)
)
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Wizard_Ignister
)).
ToList
(),
cards
,
min
,
max
);
if
(
Bot
.
HasInHand
(
CardId
.
Maliss_March_Hare
))
{
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
}
else
if
(
cards
.
Any
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)).
ToList
(),
cards
,
min
,
max
);
}
else
if
(
hint
==
HintMsg
.
Discard
)
{
if
(
card
.
Id
==
CardId
.
Dimension_Shifter
||
card
.
Id
==
CardId
.
Artifact_Lancea
)
{
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
}
if
(
Bot
.
HasInHand
(
CardId
.
Maliss_March_Hare
)
&&
!
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)))
{
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Count
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_March_Hare
))
>
1
)
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_March_Hare
)).
ToList
(),
cards
,
min
,
max
);
}
if
(
cards
.
Any
(
i
=>
TrashCards
(
i
.
Id
,
CardLocation
.
Hand
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
TrashCards
(
i
.
Id
,
CardLocation
.
Hand
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
!
i
.
HasType
(
CardType
.
Monster
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
!
i
.
HasType
(
CardType
.
Monster
)).
ToList
(),
cards
,
min
,
max
);
if
(
cards
.
Any
(
i
=>
!
i
.
HasRace
(
CardRace
.
Cyberse
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
!
i
.
HasRace
(
CardRace
.
Cyberse
)).
ToList
(),
cards
,
min
,
max
);
}
break
;
case
CardId
.
Wizard_Ignister
:
if
(
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)).
ToList
(),
cards
,
min
,
max
);
break
;
case
CardId
.
Maliss_Hearts_Crypter
:
if
(
hint
==
HintMsg
.
Remove
&&
cards
.
Any
(
i
=>
i
.
Controller
==
1
))
return
Util
.
CheckSelectCount
(
cards
.
Where
(
i
=>
i
.
Controller
==
1
).
ToList
(),
cards
,
min
,
max
);
break
;
}
return
base
.
OnSelectCard
(
cards
,
min
,
max
,
hint
,
cancelable
);
}
private
bool
TrashCards
(
int
code
,
CardLocation
loc
)
{
if
(
loc
==
CardLocation
.
Grave
)
{
List
<
int
>
list
=
new
List
<
int
>{
CardId
.
MaxxG
,
CardId
.
Artifact_Lancea
,
CardId
.
Dimension_Shifter
,
CardId
.
Mulcharmy_Fuwalos
,
CardId
.
Infinite_Impermanence
,
CardId
.
Dominus_Impulse
,
CardId
.
AshBlossom
,
CardId
.
CalledbytheGrave
,
CardId
.
Gold_Sarcophagus
,
};
return
list
.
Contains
(
code
);
}
else
if
(
loc
==
CardLocation
.
Hand
)
{
if
(
Bot
.
GetFieldCount
()
>
0
&&
code
==
CardId
.
Mulcharmy_Fuwalos
)
return
true
;
if
(
Bot
.
Graveyard
.
Count
>
0
&&
code
==
CardId
.
Dimension_Shifter
)
return
true
;
}
return
false
;
}
private
bool
MonsterRepos
()
{
if
(!
Enemy
.
GetMonsters
().
Any
(
i
=>
i
.
IsDefense
())
&&
Util
.
GetTotalAttackingMonsterAttack
(
0
)
+
Card
.
Attack
>=
Enemy
.
LifePoints
+
Util
.
GetTotalAttackingMonsterAttack
(
1
)
&&
Card
.
IsDefense
()
)
return
true
;
return
Card
.
IsFacedown
();
}
private
bool
SpellSet
()
{
return
Card
.
HasType
(
CardType
.
Trap
|
CardType
.
QuickPlay
);
}
private
bool
SpellSet_Maliss
()
{
return
Card
.
HasType
(
CardType
.
Trap
)
&&
Card
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
));
}
private
bool
Effect_Enemy_Turn
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
Card
.
Id
==
CardId
.
Dimension_Shifter
)
{
if
(
Duel
.
Player
==
1
&&
Count
.
CheckCard
(
Card
.
Id
))
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
}
return
Duel
.
Player
==
1
;
}
private
bool
Effect_Enemy_Chain
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
ClientCard
LastChainCard
=
Util
.
GetLastChainCard
();
return
LastChainCard
!=
null
&&
LastChainCard
.
Controller
==
1
;
}
private
bool
Effect_Infinite_Impermanence
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
ClientCard
LastChainCard
=
Util
.
GetLastChainCard
();
if
(
Card
.
Location
==
CardLocation
.
SpellZone
)
{
int
this_seq
=
-
1
;
int
that_seq
=
-
1
;
for
(
int
i
=
0
;
i
<
5
;
++
i
)
{
if
(
Bot
.
SpellZone
[
i
]
==
Card
)
this_seq
=
i
;
if
(
Count
.
CheckPosition
(
this_seq
))
return
false
;
if
(
LastChainCard
!=
null
&&
LastChainCard
.
Controller
==
1
&&
LastChainCard
.
Location
==
CardLocation
.
SpellZone
&&
Enemy
.
SpellZone
[
i
]
==
LastChainCard
)
that_seq
=
i
;
else
if
(
Duel
.
Player
==
0
&&
Util
.
GetProblematicEnemySpell
()
!=
null
&&
Enemy
.
SpellZone
[
i
]
!=
null
&&
Enemy
.
SpellZone
[
i
].
IsFloodgate
())
that_seq
=
i
;
}
if
((
this_seq
*
that_seq
>=
0
&&
this_seq
+
that_seq
==
4
)
||
Util
.
IsChainTarget
(
Card
)
||
(
LastChainCard
!=
null
&&
LastChainCard
.
Controller
==
1
&&
LastChainCard
.
IsCode
(
_CardId
.
HarpiesFeatherDuster
)))
{
Count
.
AddPosition
(
this_seq
);
return
true
;
}
}
else
{
if
(
LastChainCard
!=
null
&&
LastChainCard
.
Controller
==
1
&&
LastChainCard
.
Location
==
CardLocation
.
MonsterZone
)
{
AI
.
SelectCard
(
LastChainCard
);
return
true
;
}
}
return
false
;
}
private
bool
Effect_Maliss_Removed
(
int
lp
=
300
)
{
int
ct
=
5
-
Bot
.
GetMonstersInMainZone
().
Count
;
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
Card
.
HasType
(
CardType
.
Monster
)
&&
!
Card
.
IsCode
(
CardId
.
Maliss_March_Hare
)
&&
ct
-
Duel
.
CurrentChain
.
Count
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
Location
==
CardLocation
.
Removed
&&
i
.
HasType
(
CardType
.
Monster
)
)
<=
0
)
return
false
;
if
(
Bot
.
LifePoints
>
lp
&&
Card
.
Location
==
CardLocation
.
Removed
)
{
Count
.
AddCardRemoved
(
Card
.
Id
);
return
true
;
}
return
false
;
}
private
bool
Effect_Maliss_Chessy_Cat
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
ActivateDescription
==
Util
.
GetStringId
(
CardId
.
Maliss_Chessy_Cat
,
0
))
{
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
{
if
(
Bot
.
Hand
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
HasType
(
CardType
.
Trap
)
&&
(!
i
.
IsCode
(
CardId
.
Maliss_in_the_Mirror
)
||
Check_Maliss_in_the_Mirror
(
CardLocation
.
Removed
))
))
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
if
(
Bot
.
HasInHand
(
CardId
.
Maliss_March_Hare
)
&&
!
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)))
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
return
false
;
}
if
(
Bot
.
Hand
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
!
i
.
HasType
(
CardType
.
Trap
)
))
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
return
false
;
}
else
return
Effect_Maliss_Removed
();
}
private
bool
Effect_Maliss_March_Hare
()
{
if
(
Util
.
GetLastChainCard
()
!=
null
&&
Util
.
GetLastChainCard
().
IsCode
(
CardId
.
Allied_Code_Talker_Ignister
))
return
false
;
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
Card
.
Location
==
CardLocation
.
Hand
)
{
if
(
Duel
.
Player
==
1
&&
(!
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Link
))
||
Bot
.
GetMonstersInMainZone
().
Count
()
>
3
)
)
return
false
;
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_Chessy_Cat
))
return
false
;
if
(
Check_Maliss_March_Hare
(
CardLocation
.
Hand
))
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
return
false
;
}
else
return
Effect_Maliss_Removed
();
}
private
bool
Effect_Maliss_Dormouse
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
else
return
Effect_Maliss_Removed
();
}
private
bool
Summon_Maliss_Chessy_Cat
()
{
if
(
Check_Maliss_Chessy_Cat
())
{
Count
.
AddSummon
();
return
true
;
}
return
false
;
}
private
bool
Effect_White_Rabbit
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
else
return
Effect_Maliss_Removed
();
}
private
bool
Summon_Maliss_Dormouse
()
{
if
(
Check_Maliss_Dormouse
())
{
Count
.
AddSummon
();
return
true
;
}
return
false
;
}
private
bool
Summon_Maliss_White_Rabbit
()
{
if
(
Check_Maliss_White_Rabbit
())
{
Count
.
AddSummon
();
return
true
;
}
return
false
;
}
private
bool
Check_Maliss_in_the_Mirror
(
CardLocation
loc
)
{
if
(
loc
==
CardLocation
.
Removed
)
{
if
(!
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
)
||
!
Count
.
CheckCardRemoved
(
CardId
.
Maliss_March_Hare
))
return
false
;
List
<
ClientCard
>
cards
=
Bot
.
Hand
.
ToList
();
cards
.
AddRange
(
Bot
.
GetMonsters
());
cards
.
AddRange
(
Bot
.
GetSpells
());
cards
.
AddRange
(
Bot
.
Graveyard
);
cards
.
AddRange
(
Bot
.
Banished
);
return
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
(
(
i
.
HasType
(
CardType
.
Monster
)
&&
cards
.
Count
(
j
=>
j
.
HasType
(
CardType
.
Monster
))
<
10
)
||
(
i
.
HasType
(
CardType
.
Spell
)
&&
cards
.
Count
(
j
=>
j
.
HasType
(
CardType
.
Spell
))
<
4
)
||
(
i
.
HasType
(
CardType
.
Trap
)
&&
cards
.
Count
(
j
=>
j
.
HasType
(
CardType
.
Trap
))
<
3
)
)
);
}
else
{
List
<
ClientCard
>
cards
=
Bot
.
Hand
.
GetMonsters
();
cards
.
AddRange
(
Bot
.
GetMonsters
());
return
cards
.
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
));
}
}
private
bool
Check_Maliss_Chessy_Cat
()
{
return
Bot
.
Hand
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
HasType
(
CardType
.
Trap
)
&&
i
!=
Card
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_Chessy_Cat
);
}
private
bool
Check_Maliss_White_Rabbit
()
{
return
Bot
.
Graveyard
.
Count
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Trap
))
<
3
&&
Count
.
CheckCard
(
CardId
.
Maliss_White_Rabbit
);
}
private
bool
Check_Maliss_Dormouse
()
{
List
<
ClientCard
>
cards
=
Bot
.
Hand
.
ToList
();
cards
.
AddRange
(
Bot
.
GetMonsters
());
cards
.
AddRange
(
Bot
.
GetSpells
());
cards
.
AddRange
(
Bot
.
Graveyard
);
cards
.
AddRange
(
Bot
.
Banished
);
return
cards
.
Count
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
))
<
9
&&
Count
.
CheckCard
(
CardId
.
Maliss_Dormouse
);
}
private
bool
Check_Maliss_March_Hare
(
CardLocation
loc
)
{
if
(
loc
==
CardLocation
.
Removed
)
{
if
(!
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
return
false
;
return
(
Bot
.
Banished
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
)
||
Count
.
CheckCard
(
CardId
.
Maliss_March_Hare
))
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_March_Hare
);
}
else
{
if
(!
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
return
false
;
return
Bot
.
Graveyard
.
GetMonsters
().
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
));
}
}
private
bool
Effect_Maliss_TB_11
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
Bot
.
GetMonsterCount
()
>
1
&&
(!
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Red_Ransom
)
||
!
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_White_Binder
))
)
return
false
;
if
(
Bot
.
GetMonsters
().
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)))
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Red_Ransom
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Red_Ransom
))
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
return
false
;
}
private
bool
Effect_Maliss_MTP_07
()
{
if
(
Duel
.
LastChainPlayer
==
0
)
return
false
;
if
(
DefaultCheckWhetherCardIsNegated
(
Card
)
||
Duel
.
Player
==
0
||
Enemy
.
GetMonsters
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
())
+
Enemy
.
GetSpells
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
()
&&
(
i
.
HasType
(
CardType
.
Field
|
CardType
.
Continuous
|
CardType
.
Equip
)
||
i
.
IsFacedown
()))
==
0
||
!
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Link
)))
return
false
;
if
(
Bot
.
GetMonsterCount
()
>
1
&&
(!
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Red_Ransom
)
||
!
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_White_Binder
))
)
return
false
;
if
(
Bot
.
GetMonsters
().
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
))
&&
((
Count
.
CheckCard
(
CardId
.
Maliss_March_Hare
)
&&
!
Bot
.
HasInHand
(
CardId
.
Maliss_March_Hare
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Hand
))
||
(
Count
.
CheckSummon
()
&&
(
(
Count
.
CheckCard
(
CardId
.
Maliss_Dormouse
)
&&
!
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Dormouse
)
&&
Check_Maliss_Dormouse
())
||
(
Count
.
CheckCard
(
CardId
.
Maliss_White_Rabbit
)
&&
!
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_White_Rabbit
)
&&
Check_Maliss_White_Rabbit
())
||
(
Count
.
CheckCard
(
CardId
.
Maliss_Chessy_Cat
)
&&
!
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Chessy_Cat
)
&&
Check_Maliss_Chessy_Cat
())
)
)
)
)
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Red_Ransom
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Red_Ransom
))
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
return
false
;
}
private
bool
Effect_Maliss_GWC_06
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
Duel
.
Player
==
0
&&
Bot
.
HasInGraveyard
(
CardId
.
Maliss_White_Binder
))
return
false
;
if
(
Bot
.
GetMonsters
().
Any
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
))
&&
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Link
)))
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
return
false
;
}
private
bool
Effect_Remove
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
return
(
(!
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Dormouse
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_Dormouse
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Dormouse
)
&&
Check_Maliss_Dormouse
())
||
(!
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_White_Rabbit
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_White_Rabbit
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_White_Rabbit
)
&&
Check_Maliss_White_Rabbit
())
||
(!
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_Chessy_Cat
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_White_Rabbit
)
&&
Check_Maliss_Chessy_Cat
())
||
(
Count
.
CheckCardRemoved
(
CardId
.
Maliss_March_Hare
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Removed
)
&&
Bot
.
Banished
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)))
);
}
private
bool
SP_Splash_Mage
()
{
if
(
Bot
.
GetMonsters
().
Count
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<
2
)
<
2
&&
!(
Bot
.
HasInMonstersZone
(
CardId
.
Maliss_Red_Ransom
)
&&
Count
.
CheckCardRemoved
(
CardId
.
Maliss_Red_Ransom
)
&&
Bot
.
GetMonsters
().
Count
()
==
2
&&
Count
.
CheckCard
(
CardId
.
Maliss_White_Binder
))
)
return
false
;
bool
chk
=
false
;
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
chk
=
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasType
(
CardType
.
Monster
)
&&
i
.
HasRace
(
CardRace
.
Cyberse
)
&&
!
i
.
HasType
(
CardType
.
Link
));
else
chk
=
true
;
if
(
chk
)
{
List
<
ClientCard
>
materials
=
Bot
.
GetMonsters
().
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()
&&
!
card
.
HasType
(
CardType
.
Link
)).
ToList
();
AI
.
SelectMaterials
(
materials
);
}
return
chk
;
}
private
bool
SP_Cyberse_Wicckid
()
{
if
(!
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
return
false
;
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
!
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasRace
(
CardRace
.
Cyberse
)))
return
false
;
if
(
Bot
.
HasInHand
(
CardId
.
Backup_Ignister
)
||
!
Count
.
CheckCard
(
CardId
.
Backup_Ignister
))
return
false
;
if
(
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
IsFaceup
()
&&
i
.
Level
<=
4
&&
i
.
HasRace
(
CardRace
.
Cyberse
))
&&
Bot
.
GetMonsterCount
()
==
3
&&
Count
.
CheckCard
(
CardId
.
Backup_Ignister
)
&&
Bot
.
Hand
.
Count
>
0
&&
Bot
.
HasInExtra
(
CardId
.
Maliss_Hearts_Crypter
)
&&
Bot
.
HasInExtra
(
CardId
.
Link_Decoder
))
{
List
<
ClientCard
>
materials
=
Bot
.
GetMonsters
().
Where
(
card
=>
card
.
IsFaceup
()
&&
card
.
Sequence
>
4
).
ToList
();
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
card
=>
card
.
IsFaceup
()
&&
!
card
.
HasType
(
CardType
.
Link
)).
ToList
());
AI
.
SelectMaterials
(
materials
);
return
true
;
}
if
(
Bot
.
GetMonsters
().
Count
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<
2
)
<
2
||
(
Bot
.
MonsterZone
[
5
]
!=
null
&&
Bot
.
MonsterZone
[
5
].
HasType
(
CardType
.
Link
)
&&
Bot
.
MonsterZone
[
5
].
LinkCount
>
3
)
||
(
Bot
.
MonsterZone
[
6
]
!=
null
&&
Bot
.
MonsterZone
[
6
].
HasType
(
CardType
.
Link
)
&&
Bot
.
MonsterZone
[
6
].
LinkCount
>
3
)
)
return
false
;
if
((
Bot
.
HasInHand
(
CardId
.
Backup_Ignister
)
&&
Count
.
CheckCard
(
CardId
.
Backup_Ignister
)
&&
Bot
.
GetMonstersInMainZone
().
Count
()
<
5
)
||
(
Bot
.
HasInHand
(
CardId
.
Wizard_Ignister
)
&&
Count
.
CheckCard
(
CardId
.
Wizard_Ignister
)
&&
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasRace
(
CardRace
.
Cyberse
)
&&
i
.
HasAttribute
(
CardAttribute
.
Dark
))
&&
Bot
.
Graveyard
.
Count
(
i
=>
i
.
HasRace
(
CardRace
.
Cyberse
))
>
1
&&
Bot
.
GetMonstersInMainZone
().
Count
()
<
4
)
||
(
Bot
.
HasInHand
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_March_Hare
)
&&
Check_Maliss_March_Hare
(
CardLocation
.
Hand
)
&&
Bot
.
Graveyard
.
Count
(
i
=>
i
.
HasRace
(
CardRace
.
Cyberse
))
>
1
&&
Bot
.
GetMonstersInMainZone
().
Count
()
<
4
)
)
{
List
<
ClientCard
>
materials
=
Bot
.
GetMonsters
().
Where
(
card
=>
card
.
IsFaceup
()
&&
card
.
Sequence
>
4
).
ToList
();
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
card
=>
card
.
IsFaceup
()
&&
!
card
.
HasType
(
CardType
.
Link
)).
ToList
());
AI
.
SelectMaterials
(
materials
);
return
true
;
}
return
false
;
}
private
bool
Effect_Haggard_Lizardose
()
{
return
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasType
(
CardType
.
Monster
)
&&
i
.
Attack
<=
2000
);
}
private
bool
SP_Haggard_Lizardose
()
{
List
<
ClientCard
>
cards
=
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
IsFaceup
()
&&
(!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<
2
)).
ToList
()
.
GroupBy
(
i
=>
i
.
Id
)
.
Select
(
i
=>
i
.
First
())
.
ToList
();
if
(
cards
.
Count
<
2
)
return
false
;
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
)
&&
cards
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)))
{
List
<
ClientCard
>
materials
=
cards
.
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)).
ToList
();
materials
.
AddRange
(
cards
.
Where
(
i
=>
!
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)));
materials
.
AddRange
(
cards
.
Where
(
i
=>
!
i
.
HasSetcode
(
SetCode
.
Maliss
)));
AI
.
SelectMaterials
(
materials
);
return
true
;
}
if
(
Bot
.
HasInExtra
(
CardId
.
Splash_Mage
))
return
false
;
bool
chk
=
false
;
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
chk
=
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasType
(
CardType
.
Monster
)
&&
i
.
BaseAttack
<=
2000
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
Count
.
CheckCard
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
));
else
chk
=
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
BaseAttack
<=
2000
&&
i
.
HasSetcode
(
SetCode
.
Maliss
))
||
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
BaseAttack
<=
2000
&&
i
.
HasSetcode
(
SetCode
.
Maliss
));
if
(
chk
)
{
List
<
ClientCard
>
materials
=
cards
.
Where
(
i
=>
i
.
BaseAttack
<=
2000
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)).
ToList
();
materials
.
AddRange
(
cards
.
Where
(
i
=>
!
materials
.
Contains
(
i
)));
AI
.
SelectMaterials
(
materials
);
}
return
chk
;
}
private
bool
SP_Maliss_Link
()
{
if
(
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasType
(
CardType
.
Link
)
&&
i
.
LinkCount
==
2
)
&&
Bot
.
GetMonsters
().
Any
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
))
||
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
)
&&
!(
Bot
.
HasInExtra
(
new
int
[]
{
CardId
.
Cyberse_Wicckid
,
CardId
.
Splash_Mage
})
&&
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasRace
(
CardRace
.
Cyberse
))
)
&&
!(
Bot
.
HasInExtra
(
CardId
.
Haggard_Lizardose
)
&&
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Monster
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
)
)
)
)
)
{
List
<
ClientCard
>
materials
=
Bot
.
GetMonsters
().
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()
&&
card
.
LinkCount
==
2
).
ToList
();
List
<
ClientCard
>
cards
=
Bot
.
GetMonsters
().
Where
(
card
=>
card
!=
null
&&
card
.
IsFaceup
()
&&
card
.
LinkCount
<
2
&&
card
.
HasSetcode
(
SetCode
.
Maliss
)).
ToList
();
foreach
(
var
card
in
cards
)
{
if
(
materials
.
Count
==
2
)
break
;
if
(
card
.
LinkCount
>
2
)
continue
;
materials
.
Add
(
card
);
}
AI
.
SelectMaterials
(
materials
);
return
true
;
}
return
false
;
}
private
bool
Effect_Maliss_Link
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
if
(
Card
.
IsCode
(
CardId
.
Maliss_White_Binder
))
{
if
(
ActivateDescription
==
Util
.
GetStringId
(
Card
.
Id
,
1
))
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
else
if
(!
Bot
.
Graveyard
.
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
Count
.
CheckCardRemoved
(
i
.
Id
))
&&
Enemy
.
Graveyard
.
Count
()
<
3
)
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
}
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
else
return
Effect_Maliss_Removed
(
900
);
}
private
bool
SP_Link_Decoder
()
{
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
{
if
(
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
Level
<=
4
&&
Count
.
CheckCardRemoved
(
i
.
Id
))){
AI
.
SelectMaterials
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
Level
<=
4
&&
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
());
return
true
;
}
return
false
;
}
if
(
Bot
.
HasInHand
(
CardId
.
Maliss_March_Hare
)
&&
Count
.
CheckCard
(
CardId
.
Maliss_March_Hare
)
&&
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
Level
<=
4
&&
Count
.
CheckCardRemoved
(
i
.
Id
)))
{
AI
.
SelectMaterials
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
Level
<=
4
&&
Count
.
CheckCardRemoved
(
i
.
Id
)).
ToList
());
return
true
;
}
if
(
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
LinkCount
<
3
&&
i
.
HasSetcode
(
SetCode
.
Maliss
))
&&
Bot
.
GetMonsters
().
Count
(
i
=>
i
.
LinkCount
<
3
)
>=
3
)
{
AI
.
SelectMaterials
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
LinkCount
<
3
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)).
ToList
());
return
true
;
}
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Cyberse_Wicckid
))
{
AI
.
SelectMaterials
(
CardId
.
Cyberse_Wicckid
);
return
true
;
}
if
(
Bot
.
HasInMonstersZone
(
CardId
.
Backup_Ignister
)
&&
Bot
.
HasInHand
(
CardId
.
Wizard_Ignister
))
{
AI
.
SelectMaterials
(
CardId
.
Backup_Ignister
);
return
true
;
}
return
false
;
}
private
bool
Effect_Maliss_in_the_Mirror
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
ActivateDescription
==
Util
.
GetStringId
(
CardId
.
Maliss_in_the_Mirror
,
0
))
{
ClientCard
LastChainCard
=
Util
.
GetLastChainCard
();
return
Duel
.
Player
==
1
&&
LastChainCard
!=
null
&&
LastChainCard
.
Controller
==
1
&&
LastChainCard
.
Location
==
CardLocation
.
MonsterZone
;
}
else
return
Effect_Maliss_Removed
(
0
);
}
private
bool
SP_Maliss_Hearts_Crypter
()
{
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
{
if
(
Bot
.
HasInExtra
(
CardId
.
Maliss_Red_Ransom
)
||
Bot
.
GetMonsters
().
Count
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<
2
)
<
(
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasType
(
CardType
.
Link
)
&&
i
.
LinkCount
==
2
)
?
1
:
3
))
return
false
;
AI
.
SelectMaterials
(
Bot
.
GetMonsters
().
Where
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<
2
).
ToList
());
return
true
;
}
if
((
Bot
.
HasInMonstersZone
(
CardId
.
Link_Decoder
)
&&
Bot
.
GetMonsters
().
Count
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<=
2
)
>
2
)
||
Bot
.
GetMonsters
().
Count
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<=
2
)
>
4
)
{
AI
.
SelectMaterials
(
Bot
.
GetMonsters
().
Where
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<
2
).
ToList
());
return
true
;
}
return
false
;
}
private
bool
SP_Maliss_White_Binder
()
{
if
(
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
LinkCount
==
3
&&
Count
.
CheckCardRemoved
(
i
.
Id
)))
{
AI
.
SelectMaterials
(
Bot
.
GetMonsters
().
Where
(
i
=>
Count
.
CheckCardRemoved
(
i
.
Id
)
&&
i
.
HasSetcode
(
SetCode
.
Maliss
)
||
i
.
LinkCount
<
3
).
ToList
());
return
true
;
}
return
false
;
}
private
bool
Effect_Maliss_Hearts_Crypter
()
{
if
(
DefaultCheckWhetherCardIsNegated
(
Card
))
return
false
;
if
(
Card
.
Location
==
CardLocation
.
MonsterZone
)
{
if
(
Enemy
.
GetMonsters
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
())
+
Enemy
.
GetSpells
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
()
&&
(
i
.
HasType
(
CardType
.
Field
|
CardType
.
Continuous
|
CardType
.
Equip
)
||
i
.
IsFacedown
()))
>
0
&&
Duel
.
LastChainPlayer
!=
0
)
{
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
return
false
;
}
else
return
Effect_Maliss_Removed
(
900
);
}
private
bool
SP_Firewall_Dragon
()
{
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
return
false
;
List
<
ClientCard
>
materials
=
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_White_Binder
)).
ToList
();
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
Sequence
>
4
&&
i
.
HasType
(
CardType
.
Link
)
&&
i
.
LinkCount
<=
3
));
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
HasType
(
CardType
.
Link
)));
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Link
)));
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
Sequence
<
5
&&
i
.
HasType
(
CardType
.
Link
)
&&
i
.
LinkCount
<=
3
));
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)));
if
(
materials
.
Count
>
3
)
materials
=
materials
.
Take
(
3
).
ToList
();
AI
.
SelectMaterials
(
materials
);
return
true
;
}
private
bool
SP_Allied_Code_Talker_Ignister
()
{
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
return
false
;
if
(
Bot
.
GetMonsters
().
Count
(
i
=>
i
.
LinkCount
<=
3
)
<
3
)
return
false
;
List
<
ClientCard
>
materials
=
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
IsCode
(
CardId
.
Maliss_White_Binder
)).
ToList
();
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
Sequence
>
4
&&
i
.
HasType
(
CardType
.
Link
)
&&
i
.
LinkCount
<=
3
));
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
!
i
.
HasType
(
CardType
.
Link
)));
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)
&&
i
.
HasType
(
CardType
.
Link
)));
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
Sequence
<
5
&&
i
.
HasType
(
CardType
.
Link
)
&&
i
.
LinkCount
<=
3
));
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)));
if
(
materials
.
Count
>
3
)
materials
=
materials
.
Take
(
3
).
ToList
();
AI
.
SelectMaterials
(
materials
);
return
true
;
}
private
bool
Effect_Allied_Code_Talker_Ignister
()
{
if
(
ActivateDescription
==
Util
.
GetStringId
(
CardId
.
Allied_Code_Talker_Ignister
,
1
)
&&
Duel
.
LastChainPlayer
==
1
)
{
if
(
Card
.
Sequence
>
4
)
{
return
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
Sequence
<
3
&&
(!
i
.
HasType
(
CardType
.
Link
)
||
(
i
.
LinkCount
<=
3
&&
Count
.
CheckCard
(
i
.
Id
))));
}
else
{
return
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
Sequence
<
5
&&
(
i
.
Sequence
-
Card
.
Sequence
==
1
||
Card
.
Sequence
-
i
.
Sequence
==
1
)
&&
(!
i
.
HasType
(
CardType
.
Link
)
||
(
i
.
LinkCount
<=
3
&&
Count
.
CheckCard
(
i
.
Id
))));
}
}
return
true
;
}
private
bool
Effect_Mereologic_Aggregator
()
{
if
(
Enemy
.
GetMonsters
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
())
+
Enemy
.
GetSpells
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
()
&&
(
i
.
HasType
(
CardType
.
Field
|
CardType
.
Continuous
|
CardType
.
Equip
)
||
i
.
IsFacedown
()))
>
0
)
{
ClientCard
LastChainCard
=
Util
.
GetLastChainCard
();
if
(
LastChainCard
!=
null
&&
LastChainCard
.
Controller
==
1
&&
(
LastChainCard
.
Location
==
CardLocation
.
MonsterZone
||
LastChainCard
.
Location
==
CardLocation
.
SpellZone
))
AI
.
SelectCard
(
LastChainCard
);
Count
.
AddCard
(
Card
.
Id
);
return
true
;
}
return
false
;
}
private
bool
Effect_Firewall_Dragon
()
{
if
(!
Count
.
CheckCard
(
CardId
.
Dimension_Shifter
)
&&
Count
.
CheckCard
(
CardId
.
Artifact_Lancea
))
return
false
;
return
Duel
.
Player
==
0
||
(
Enemy
.
GetMonsters
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
()
&&
i
.
IsFaceup
())
+
Enemy
.
GetSpells
().
Count
(
i
=>
!
i
.
IsShouldNotBeTarget
()
&&
i
.
HasType
(
CardType
.
Field
|
CardType
.
Continuous
|
CardType
.
Equip
))
>
0
&&
Duel
.
LastChainPlayer
!=
0
);
}
private
bool
Summon_Backup_Ignister
()
{
if
(
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasType
(
CardType
.
Link
)))
return
false
;
Count
.
AddSummon
();
return
true
;
}
private
bool
SP_Transcode_Talker
()
{
if
(
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasSetcode
(
SetCode
.
Maliss
)))
return
false
;
if
(!
Bot
.
GetMonsters
().
Any
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<
2
))
return
false
;
if
(!
Bot
.
GetMonsters
().
Any
(
i
=>
i
.
HasType
(
CardType
.
Link
)
&&
i
.
LinkCount
==
2
))
return
false
;
List
<
ClientCard
>
materials
=
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
HasType
(
CardType
.
Link
)
&&
i
.
LinkCount
==
2
).
ToList
();
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
i
.
IsCode
(
CardId
.
Link_Decoder
)));
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<
2
&&
i
.
Sequence
==
(
materials
[
0
].
Sequence
>
4
?
(
materials
[
0
].
Sequence
==
5
?
1
:
3
)
:
materials
[
0
].
Sequence
+
1
)));
materials
.
AddRange
(
Bot
.
GetMonsters
().
Where
(
i
=>
!
i
.
HasType
(
CardType
.
Link
)
||
i
.
LinkCount
<
2
));
if
(
materials
.
Count
>
2
)
materials
=
materials
.
Take
(
2
).
ToList
();
AI
.
SelectMaterials
(
materials
);
return
true
;
}
private
bool
Effect_Wizard_Ignister
()
{
return
Card
.
Location
==
CardLocation
.
Hand
;
}
private
bool
GoToBattlePhase
()
{
if
(!
Enemy
.
GetMonsters
().
Any
(
i
=>
i
.
IsDefense
()))
{
if
(
Util
.
GetTotalAttackingMonsterAttack
(
0
)
>=
Enemy
.
LifePoints
+
Util
.
GetTotalAttackingMonsterAttack
(
1
))
{
return
true
;
}
}
return
false
;
}
}
}
Assets/Scripts/Windbot/Game/AI/Decks/MalissOCGExecutor.cs.meta
0 → 100644
View file @
d40ee406
fileFormatVersion: 2
guid: ebc458a07734fc84888b068c02135434
\ No newline at end of file
Assets/Scripts/Windbot/Game/AI/DefaultExecutor.cs
View file @
d40ee406
...
@@ -176,6 +176,7 @@ namespace WindBot.Game.AI
...
@@ -176,6 +176,7 @@ namespace WindBot.Game.AI
public
const
int
HeroicChampionClaivesolish
=
97453744
;
public
const
int
HeroicChampionClaivesolish
=
97453744
;
public
const
int
GhostrickAlucard
=
75367227
;
public
const
int
GhostrickAlucard
=
75367227
;
public
const
int
DinowrestlerKingTWrextle
=
77967790
;
public
const
int
DinowrestlerKingTWrextle
=
77967790
;
public
const
int
NumberF0UtopicFutureZexal
=
41522092
;
public
const
int
PerformapalMissDirector
=
92932860
;
public
const
int
PerformapalMissDirector
=
92932860
;
public
const
int
AncientWarriorsMasterfulSunMou
=
40140448
;
public
const
int
AncientWarriorsMasterfulSunMou
=
40140448
;
...
@@ -198,6 +199,8 @@ namespace WindBot.Game.AI
...
@@ -198,6 +199,8 @@ namespace WindBot.Game.AI
public
const
int
SeleneQueenOfTheMasterMagicians
=
45819647
;
public
const
int
SeleneQueenOfTheMasterMagicians
=
45819647
;
public
const
int
TheWingedDragonofRaSphereMode
=
10000080
;
public
const
int
TheWingedDragonofRaSphereMode
=
10000080
;
public
const
int
SelettriceVaalmonica
=
23093373
;
public
const
int
SelettriceVaalmonica
=
23093373
;
public
const
int
PerformageTrapezeWitch
=
33206889
;
public
const
int
PoseidraTheStormingAtlantean
=
99193444
;
public
const
int
RockOfTheVanquisher
=
28168628
;
public
const
int
RockOfTheVanquisher
=
28168628
;
public
const
int
SpiralDischarge
=
29477860
;
public
const
int
SpiralDischarge
=
29477860
;
...
@@ -226,6 +229,7 @@ namespace WindBot.Game.AI
...
@@ -226,6 +229,7 @@ namespace WindBot.Game.AI
public
const
int
Ghostrick
=
0x8d
;
public
const
int
Ghostrick
=
0x8d
;
public
const
int
OddEyes
=
0x99
;
public
const
int
OddEyes
=
0x99
;
public
const
int
Performapal
=
0x9f
;
public
const
int
Performapal
=
0x9f
;
public
const
int
Performage
=
0xc6
;
public
const
int
BlueEyes
=
0xdd
;
public
const
int
BlueEyes
=
0xdd
;
public
const
int
FurHire
=
0x114
;
public
const
int
FurHire
=
0x114
;
public
const
int
Altergeist
=
0x103
;
public
const
int
Altergeist
=
0x103
;
...
@@ -292,7 +296,8 @@ namespace WindBot.Game.AI
...
@@ -292,7 +296,8 @@ namespace WindBot.Game.AI
{
_CardId
.
HeroicChampionClaivesolish
,
defender
=>
true
},
{
_CardId
.
HeroicChampionClaivesolish
,
defender
=>
true
},
{
_CardId
.
GhostrickAlucard
,
defender
=>
defender
.
HasSetcode
(
_Setcode
.
Ghostrick
)
||
defender
.
IsFacedown
()},
{
_CardId
.
GhostrickAlucard
,
defender
=>
defender
.
HasSetcode
(
_Setcode
.
Ghostrick
)
||
defender
.
IsFacedown
()},
{
_CardId
.
MekkKnightCrusadiaAstram
,
defender
=>
true
},
{
_CardId
.
MekkKnightCrusadiaAstram
,
defender
=>
true
},
{
_CardId
.
DinowrestlerKingTWrextle
,
defender
=>
true
}
{
_CardId
.
DinowrestlerKingTWrextle
,
defender
=>
true
},
{
_CardId
.
NumberF0UtopicFutureZexal
,
defender
=>
true
}
};
};
/// <summary>
/// <summary>
...
@@ -321,7 +326,9 @@ namespace WindBot.Game.AI
...
@@ -321,7 +326,9 @@ namespace WindBot.Game.AI
{
_CardId
.
SeleneQueenOfTheMasterMagicians
,
(
defender
,
list
)
=>
list
.
Any
(
monster
=>
monster
.
HasSetcode
(
_Setcode
.
Endymion
))},
{
_CardId
.
SeleneQueenOfTheMasterMagicians
,
(
defender
,
list
)
=>
list
.
Any
(
monster
=>
monster
.
HasSetcode
(
_Setcode
.
Endymion
))},
{
_CardId
.
TheWingedDragonofRaSphereMode
,
(
defender
,
list
)
=>
true
},
{
_CardId
.
TheWingedDragonofRaSphereMode
,
(
defender
,
list
)
=>
true
},
{
_CardId
.
SelettriceVaalmonica
,
(
defender
,
list
)
=>
list
.
Any
(
monster
=>
!
monster
.
IsCode
(
_CardId
.
SelettriceVaalmonica
))}
{
_CardId
.
SelettriceVaalmonica
,
(
defender
,
list
)
=>
list
.
Any
(
monster
=>
!
monster
.
IsCode
(
_CardId
.
SelettriceVaalmonica
))},
{
_CardId
.
PerformageTrapezeWitch
,
(
defender
,
list
)
=>
list
.
Any
(
monster
=>
!
monster
.
IsCode
(
_CardId
.
PerformageTrapezeWitch
)
&&
monster
.
HasSetcode
(
_Setcode
.
Performage
))},
{
_CardId
.
PoseidraTheStormingAtlantean
,
(
defender
,
list
)
=>
list
.
Any
(
monster
=>
!
monster
.
IsCode
(
_CardId
.
PoseidraTheStormingAtlantean
))}
};
};
/// <summary>
/// <summary>
...
...
Assets/Scripts/Windbot/Game/AI/Enums/DangerousMonster.cs
View file @
d40ee406
...
@@ -26,6 +26,9 @@
...
@@ -26,6 +26,9 @@
DaigustoSphreeze
=
29552709
,
DaigustoSphreeze
=
29552709
,
OhimetheManifestedMikanko
=
81260679
,
OhimetheManifestedMikanko
=
81260679
,
ArahimetheManifestedMikanko
=
75771170
,
ArahimetheManifestedMikanko
=
75771170
,
YubelDasEwigLiebeWachter
=
47172959
YubelDasEwigLiebeWachter
=
47172959
,
UzuhimeTheManifestedMikanko
=
57566760
,
MaidenInLove
=
8445808
,
ArchfiendMatador
=
7622360
}
}
}
}
Assets/Scripts/Windbot/Game/AI/Enums/Floodgate.cs
View file @
d40ee406
...
@@ -223,6 +223,55 @@
...
@@ -223,6 +223,55 @@
LightAndDarknessDragonLord
=
19652159
,
LightAndDarknessDragonLord
=
19652159
,
FiendsmithDiesIrae
=
82135803
,
FiendsmithDiesIrae
=
82135803
,
MementomictlanTecuhtlicaCombinedConqueror
=
14529511
,
MementomictlanTecuhtlicaCombinedConqueror
=
14529511
,
MadolcheQueenTiaraalaFraise
=
49689480
MadolcheQueenTiaraalaFraise
=
49689480
,
XYZHyperDragonCannon
=
75748977
,
ClearViciousKnight
=
70095046
,
Red_EyesBlackFullmetalDragon
=
80870883
,
MetalzoaX
=
27268998
,
AzaminaIliaSilvia
=
46396218
,
HeosvarogTheMechanicalDawn
=
8963089
,
LegendaryLordSixSamurai_ShiEn
=
34235530
,
NumberC32SharkDrakeLeVeiss
=
7628844
,
RyzealDetonator
=
34909328
,
MalissQHeartsCrypter
=
21848500
,
Blue_EyesUltimateSpiritDragon
=
89604813
,
TheiaThePrimalBeing
=
85687952
,
ArcanaForceEX_TheChaosRuler
=
12686296
,
SaintAzamina
=
85065943
,
CrystalClearWingOverSynchroDragon
=
84343351
,
JurracAstero
=
52553102
,
NekrozOfMetaltron
=
13408726
,
ZoroaTheMagistusVerethragna
=
37260677
,
DiabellstarVengeance
=
23151193
,
RegenesisWarrior
=
96540807
,
RegenesisSage
=
22938501
,
RegenesisDragon
=
59323650
,
Snake_EyesVengeanceDragon
=
79415624
,
LegendaryLordSixSamurai_Kizan
=
42209438
,
JuraishinTheCursedThunderGod
=
78693036
,
EclipseDragonRulerOfCatastrophes
=
30350202
,
AlliedCodeTalkerIgnister
=
39138610
,
EternalSunshine
=
28903523
,
RegenesisBirth
=
27781371
,
Ryu_GeEnd
=
90664684
,
SoulOfGaiaTheFierceKnight
=
73129314
,
K9_XWerewolf
=
90303227
,
ArtmageFinmel
=
34541940
,
LeoWizardTheDarkFiend
=
55423549
,
LunalightLigerDancer
=
54701958
,
ArtmageDiactorus
=
27184601
,
PsychicBlasterMk_II
=
88139289
,
NumberF0UtopicFutureZexal
=
41522092
,
VallonTheSuperPsySkyblaster
=
40673853
,
MasterPeaceTheTrueDracoverlord
=
12800564
,
MegalithNotrahPlura
=
44293356
,
AxonKickerOracle
=
33171768
,
DoomZXIIEnd_Drastrius
=
95626382
,
DDDSkyKingZeusRagnarok
=
30998403
,
DarkContractWithTheDifferentDimension
=
54936778
,
KillerTuneRedSeal
=
15665977
,
RBGa10Driller
=
6043161
,
RBGa10Cutter
=
33438265
,
RBLambdaBlade
=
17188206
}
}
}
}
Assets/Scripts/Windbot/Game/AI/Enums/FusionSpell.cs
View file @
d40ee406
...
@@ -88,6 +88,25 @@
...
@@ -88,6 +88,25 @@
HarmonicSynchroFusion
=
7473735
,
HarmonicSynchroFusion
=
7473735
,
SouloftheSupremeCelestialKing
=
76840111
,
SouloftheSupremeCelestialKing
=
76840111
,
MelodiousConcerto
=
31458630
,
MelodiousConcerto
=
31458630
,
MementotlanFusion
=
66518509
MementotlanFusion
=
66518509
,
TheHallowedAzamina
=
94845588
,
AzaminaDebtors
=
20934683
,
AzaminaDetermination
=
42201897
,
HeavyPolymerization
=
58570206
,
DoubleFusion
=
10218411
,
DarkContact
=
77124096
,
GemKnightMasterDiamondDispersion
=
25342956
,
GemKnightDispersion
=
24220368
,
DracotailFaimena
=
1498449
,
DracotailMululu
=
7375867
,
KetuDracotail
=
6153210
,
RahuDracotail
=
32548318
,
ArtmagePowerPatron
=
23829452
,
ArtmageMasterworkSuccession
=
37517035
,
TeleportFusion
=
36494597
,
PrimiteFusion
=
99161253
,
TheGazeOfTimaeus
=
22283204
,
MutinyInTheSky
=
71593652
,
HuntingHorn
=
55421040
}
}
}
}
Assets/Scripts/Windbot/Game/AI/Enums/InvincibleMonster.cs
View file @
d40ee406
...
@@ -29,7 +29,9 @@
...
@@ -29,7 +29,9 @@
Number2NinjaShadowMosquito
=
32453837
,
Number2NinjaShadowMosquito
=
32453837
,
OhimetheManifestedMikanko
=
81260679
,
OhimetheManifestedMikanko
=
81260679
,
NightmareMagician
=
40221691
,
NightmareMagician
=
40221691
,
ArahimetheManifestedMikanko
=
75771170
ArahimetheManifestedMikanko
=
75771170
,
UzuhimeTheManifestedMikanko
=
57566760
,
ArchfiendMatador
=
7622360
}
}
/// <summary>
/// <summary>
/// Cards that are invincible to battle.
/// Cards that are invincible to battle.
...
@@ -123,6 +125,21 @@
...
@@ -123,6 +125,21 @@
MillenniumFiendReflection
=
63947968
,
MillenniumFiendReflection
=
63947968
,
HereticalPhoboscobos
=
76078185
,
HereticalPhoboscobos
=
76078185
,
TopHatHareTheSilhouetteMagician
=
1528054
,
TopHatHareTheSilhouetteMagician
=
1528054
,
Silhouhatte
=
24440742
Silhouhatte
=
24440742
,
TheDukeofDemise
=
45445571
,
EvilHERONeosLord
=
13708888
,
GladiatorBeastDareios
=
72246674
,
Number69HeraldryCrest_DarkMatterDemolition
=
77571454
,
FirstOfTheDragonlords
=
53466722
,
UzuhimeTheManifestedMikanko
=
57566760
,
HecahandsIbel
=
95365081
,
HecahandsYadel
=
32759190
,
HecahandsGoddus
=
68144894
,
HecahandsGygas
=
95132593
,
HecahandsBreus
=
21637502
,
HecahandsJawza
=
67021206
,
HecahandsXeno
=
94410955
,
MaidenInLove
=
8445808
,
ArchfiendMatador
=
7622360
}
}
}
}
Assets/Scripts/Windbot/Game/AI/Enums/OneForXyz.cs
View file @
d40ee406
...
@@ -18,6 +18,11 @@
...
@@ -18,6 +18,11 @@
GalaxyEyesCipherDragon
=
18963306
,
GalaxyEyesCipherDragon
=
18963306
,
Number107
=
88177324
,
Number107
=
88177324
,
CyberDragonNova
=
58069384
,
CyberDragonNova
=
58069384
,
Number39
=
84013237
Number39
=
84013237
,
Argostars_GloriousAdra
=
91438674
,
Argostars_LightningTydeu
=
65889305
,
Argostars_SwiftCapane
=
91284003
,
Argostars_SlayerEteo
=
38379052
,
Argostars_FierceParthe
=
21050476
}
}
}
}
Assets/Scripts/Windbot/Game/AI/Enums/PreventActivationEffectInBattle.cs
View file @
d40ee406
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
SamuraiDestroyer
=
40509732
,
SamuraiDestroyer
=
40509732
,
ArmadesKeeperOfBoundaries
=
88033975
,
ArmadesKeeperOfBoundaries
=
88033975
,
NumberS39UtopiaTheLightning
=
56832966
,
NumberS39UtopiaTheLightning
=
56832966
,
DualAvatarEmpoweredKonGyo
=
33026283
DualAvatarEmpoweredKonGyo
=
33026283
,
GoukiTheTyrantOgre
=
7782069
}
}
}
}
Assets/Scripts/Windbot/Game/AI/Enums/ShouldBeDisabledBeforeItUseEffectMonster.cs
View file @
d40ee406
...
@@ -67,6 +67,12 @@
...
@@ -67,6 +67,12 @@
GGolemRockHammer
=
98875863
,
GGolemRockHammer
=
98875863
,
WishDragon
=
64583600
,
WishDragon
=
64583600
,
ChaosWitch
=
30327674
,
ChaosWitch
=
30327674
,
FissioningMotherSpider
=
34034150
FissioningMotherSpider
=
34034150
,
AncientGearStatue
=
32762201
,
SplittingPlanarian
=
44175358
,
TestBear
=
62076252
,
RescueHedgehog
=
99742859
,
SuperQuantalFairyZetan
=
66646087
,
LightWaterDragon
=
82616239
}
}
}
}
Assets/Scripts/Windbot/Game/AI/Enums/ShouldNotBeMonsterTarget.cs
View file @
d40ee406
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
BorrelendDragon
=
98630720
,
BorrelendDragon
=
98630720
,
DrytronMeteonisDraconids
=
69815951
,
DrytronMeteonisDraconids
=
69815951
,
MyutantBeast
=
34695290
,
MyutantBeast
=
34695290
,
VeidosTheDragonOfEndlessDarkness
=
8540986
VeidosTheDragonOfEndlessDarkness
=
8540986
,
FirstOfTheDragonlords
=
53466722
}
}
}
}
Assets/Scripts/Windbot/Game/AI/Enums/ShouldNotBeTarget.cs
View file @
d40ee406
...
@@ -51,6 +51,9 @@
...
@@ -51,6 +51,9 @@
RedEyesBDragon
=
74677422
,
// sometimes the name of DragunofRedEyes will be changed to RedEyesBDragon
RedEyesBDragon
=
74677422
,
// sometimes the name of DragunofRedEyes will be changed to RedEyesBDragon
TheArrivalCyberseIgnister
=
11738489
,
TheArrivalCyberseIgnister
=
11738489
,
MajespecterPorcupineYamaarashi
=
51073802
,
MajespecterPorcupineYamaarashi
=
51073802
,
RaidraptorRisingRebellionFalcon
=
71222868
RaidraptorRisingRebellionFalcon
=
71222868
,
Number97Draglubion
=
28400508
,
SaintAzamina
=
85065943
,
LunalightLigerDancer
=
54701958
}
}
}
}
Data/Windbot/Decks/AI_Maliss.ydk
0 → 100644
View file @
d40ee406
#created by MDPro3
#main
68337209
24224830
20726052
23434538
30118811
30118811
75500286
20938824
10045474
24224830
96676583
14558127
27204311
32061192
20938824
40366667
40366667
10045474
68337209
30118811
94722358
40366667
34267821
96676583
3723262
14558127
23434538
32061192
10045474
93453053
69272449
20938824
69272449
65681983
69272449
14558127
32061192
73628505
68337209
96676583
#extra
39138610
5043010
86066372
4280258
21848500
46947713
95454996
68059897
29301450
59859086
52698008
98978921
30342076
24842059
60303245
\ No newline at end of file
Data/Windbot/Decks/AI_MalissOCG.ydk
0 → 100644
View file @
d40ee406
#created by ...
#main
91800273
91800273
42141493
42141493
42141493
3723262
96676583
96676583
30118811
30118811
69272449
69272449
69272449
32061192
32061192
32061192
20938824
20938824
20938824
14558128
14558128
14558128
23434538
23434538
75500286
24224830
24224830
93453053
68337209
68337209
68337209
10045474
10045474
10045474
20726052
40366667
40366667
40366667
57111661
94722358
#extra
64211118
39138610
9940036
9940036
92422871
92422871
92422871
21848500
68059897
95454996
46947713
59859086
9763474
52698008
30342076
!side
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