Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
W
windbot
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
HiiragiGuardians
windbot
Commits
2aa84bc7
Commit
2aa84bc7
authored
Jan 06, 2024
by
wyykak
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add WDL and local support
Signed-off-by:
wyykak
<
wyy_1414@126.com
>
parent
1d36fa32
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
362 additions
and
254 deletions
+362
-254
BotWrapper/BotWrapper.cs
BotWrapper/BotWrapper.cs
+6
-0
BotWrapper/bot.conf
BotWrapper/bot.conf
+29
-254
Decks/AI_THC_WDL.ydk
Decks/AI_THC_WDL.ydk
+59
-0
Game/AI/Decks/THC_WDLExecutor.cs
Game/AI/Decks/THC_WDLExecutor.cs
+259
-0
WindBot.csproj
WindBot.csproj
+4
-0
bots.json
bots.json
+5
-0
No files found.
BotWrapper/BotWrapper.cs
View file @
2aa84bc7
...
...
@@ -6,6 +6,7 @@ using System.Text.RegularExpressions;
using
System.Diagnostics
;
using
System.Runtime.InteropServices
;
using
System.Linq
;
using
System.Threading
;
namespace
BotWrapper
{
...
...
@@ -29,6 +30,11 @@ namespace BotWrapper
startInfo
.
WindowStyle
=
ProcessWindowStyle
.
Hidden
;
string
arg
=
args
[
0
];
if
(
Regex
.
Match
(
arg
,
"\\[EXT\\]"
).
Success
)
{
startInfo
.
WorkingDirectory
=
Path
.
GetFullPath
(
"WindBot_ext"
);
startInfo
.
FileName
=
startInfo
.
WorkingDirectory
+
"\\WindBot.exe"
;
}
Match
match
=
Regex
.
Match
(
arg
,
"Random=(.*)"
);
if
(
match
.
Success
)
{
...
...
BotWrapper/bot.conf
View file @
2aa84bc7
...
...
@@ -4,267 +4,42 @@
# description
# flags (avail flags: SUPPORT_MASTER_RULE_3, SUPPORT_NEW_MASTER_RULE, SUPPORT_MASTER_RULE_2020, SELECT_DECKFILE)
!
随机-非常简单
Random
=
AI_LV1
主要是一些沙包。
SUPPORT_MASTER_RULE_2020
!
DJ
(
Normal
)
Name
=
DJ
Deck
=
'DJ'
Dialog
=
heyDJ
DbPath
=
expansions
\
AI
.
cdb
兄弟打碟吗
SUPPORT_MASTER_RULE_
3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_
2020
!
随机-简单
Random
=
AI_LV2
一些比较弱的卡组。
SUPPORT_MASTER_RULE_2020
!
一面:幽幽子(
Easy
)
Name
=西行寺幽幽子
Deck
=
'YuyukoRank1'
Dialog
=
YuyukoRank1
.
zh
-
CN
DbPath
=
expansions
\
AI
.
cdb
弱小的一面
bossAI
。在此难度下
AI
的智商非常低
SUPPORT_MASTER_RULE_
3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_
2020
!
随机-普通
Random
=
AI_LV3
一些环境里可以看到的卡组。
SUPPORT_MASTER_RULE_2020
!
一面:幽幽子(
Normal
)
Name
=西行寺幽幽子
Deck
=
'YuyukoRank2'
Dialog
=
YuyukoRank1
.
zh
-
CN
DbPath
=
expansions
\
AI
.
cdb
弱小的一面
bossAI
。在此难度下
AI
的智商达到了⑨岁水平
SUPPORT_MASTER_RULE_
3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_
2020
!随机-报社
Random
=
AI_ANTI_META
一些报复社会(针对主流卡组的弱点)的卡组。
SUPPORT_MASTER_RULE_2020
!一面:幽幽子(
Hard
)
Name
=西行寺幽幽子
Deck
=
'YuyukoRank3'
Dialog
=
YuyukoRank1
.
zh
-
CN
DbPath
=
expansions
\
AI
.
cdb
弱小的一面
bossAI
。在
Normal
难度的基础上,
AI
卡组中的「幽幽子」将得到觉醒。
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!一面:幽幽子(
Lunatic
)
Name
=西行寺幽幽子
Deck
=
'YuyukoRank4'
Dialog
=
YuyukoRank1
.
zh
-
CN
DbPath
=
expansions
\
AI
.
cdb
弱小的一面
bossAI
。在
Hard
难度的基础上,
AI
幽幽子将得到生前死后友人的帮助。
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!
P2
-自选卡组
Name
=
P2
Deck
=
Lucky
Dialog
=
gugugu
.
zh
-
CN
Name
=
P2
[
EXT
]
Deck
=
Lucky
Dialog
=
gugugu
.
zh
-
CN
DbPath
=
expansions
\
AI
.
cdb
人机卡组由你选择。随缘出牌。
SELECT_DECKFILE
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!谜之剑士
LV4
-龙骑星爆
Name
=谜之剑士
LV4
Deck
=
Dragunity
Dialog
=
swordsman
.
zh
-
CN
龙骑轴星尘龙爆裂体卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!谜之剑士
LV4
-
R5
Name
=谜之剑士
LV4
Deck
=
'Rank V'
Dialog
=
swordsman
.
zh
-
CN
5
阶超量卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!谜之剑士
LV4
-异热同心武器
Name
=谜之剑士
LV4
Deck
=
'Zexal Weapons'
Dialog
=
swordsman
.
zh
-
CN
神装电光皇卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!谜之剑士
LV4
-
8
星同调
Name
=谜之剑士
LV4
Deck
=
'Level VIII'
Dialog
=
swordsman
.
zh
-
CN
8
星同调卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!琪露诺-彩虹
Name
=琪露诺
Deck
=
Rainbow
Dialog
=
cirno
.
zh
-
CN
全属性凡骨卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!琪露诺-饼蛙
Name
=琪露诺
Deck
=
'Toadally Awesome'
Dialog
=
cirno
.
zh
-
CN
大师规则三的全盛饼蛙卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!复制植物-青眼
Name
=复制植物
Deck
=
Blue
-
Eyes
Dialog
=
copy
.
zh
-
CN
青眼卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!复制植物-十二兽
Name
=复制植物
Deck
=
Zoodiac
Dialog
=
copy
.
zh
-
CN
大师规则三的十四兽卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!尼亚-妖仙兽
Name
=尼亚
Deck
=
Yosenju
Dialog
=
near
.
zh
-
CN
妖仙兽卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!尼亚-机壳
Name
=尼亚
Deck
=
Qliphort
Dialog
=
near
.
zh
-
CN
机壳卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!尼亚-淘气仙星
Name
=尼亚
Deck
=
Trickstar
Dialog
=
near
.
zh
-
CN
旧式淘气仙星卡组。
AI_LV3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!尼亚-幻变骚灵
Name
=尼亚
Deck
=
Altergeist
Dialog
=
near
.
zh
-
CN
幻变骚灵卡组。
AI_LV3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!永远之魂-削血
Name
=永远之魂
Deck
=
Burn
Dialog
=
soul
.
zh
-
CN
老式削血卡组。
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!永远之魂-青蛙
Name
=永远之魂
Deck
=
Frog
Dialog
=
soul
.
zh
-
CN
老式青蛙卡组。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!永远之魂-荷鲁斯
Name
=永远之魂
Deck
=
Horus
Dialog
=
soul
.
zh
-
CN
老式龙族卡组。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!悠悠
Name
=悠悠
Deck
=
MokeyMokey
Dialog
=
mokey
.
zh
-
CN
沙包。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!悠悠王
Name
=悠悠王
Deck
=
MokeyMokeyKing
Dialog
=
mokey
.
zh
-
CN
大沙包。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!兔明-微风
Name
=兔明
Deck
=
PureWinds
Dialog
=
zh
-
CN
风属性卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!试作型机器人
1732
Name
=试作型机器人
1732
Deck
=
ST1732
Dialog
=
zh
-
CN
由三盒
ST17
和三盒
SD32
组成的卡组。
AI_LV2
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!千奈-影灵衣
Name
=千奈
Deck
=
Nekroz
Dialog
=
sennai
.
zh
-
CN
To
be
added
.
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!千奈-光道
Name
=千奈
Deck
=
Lightsworn
Dialog
=
sennai
.
zh
-
CN
To
be
added
.
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!弥音-黑羽
Name
=弥音
Deck
=
Blackwing
Dialog
=
meon
.
zh
-
CN
To
be
added
.
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!弥音-电子龙
Name
=弥音
Deck
=
CyberDragon
Dialog
=
meon
.
zh
-
CN
To
be
added
.
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!弥音-入魔
Name
=弥音
Deck
=
Evilswarm
Dialog
=
meon
.
zh
-
CN
To
be
added
.
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!早苗-守墓
Name
=早苗
Deck
=
Gravekeeper
Dialog
=
sanae
.
zh
-
CN
早苗的奇迹。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!早苗-灰篮
Name
=早苗
Deck
=
Graydle
Dialog
=
sanae
.
zh
-
CN
早苗的秘术。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!早苗-???
Name
=早苗
Deck
=
'Old School'
Dialog
=
sanae
.
zh
-
CN
早苗的信仰。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!奇異果
Name
=奇異果
Deck
=
LightswornShaddoldinosour
Dialog
=
kiwi
.
zh
-
TW
光道影依恐龙卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!
MAX
龍果
Name
=
MAX
龍果
Deck
=
BlueEyesMaxDragon
Dialog
=
kiwi
.
zh
-
TW
青眼混沌极龙卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!幻煌果
Name
=幻煌果
Deck
=
Phantasm
Dialog
=
kiwi
.
zh
-
TW
幻煌龙卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!燃血鬥士
Name
=燃血鬥士
Deck
=
ChainBurn
Dialog
=
kiwi
.
zh
-
TW
连锁烧卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!彩音-闪刀姬
Name
=彩音
Deck
=
SkyStriker
Dialog
=
ayane
.
zh
-
CN
纯闪刀姬卡组。
AI_LV3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!報社鬥士
Name
=報社鬥士
Deck
=
GrenMajuThunderBoarder
Dialog
=
kiwi
.
zh
-
TW
红莲雷王滑板卡组。
AI_LV3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!彩音-黑魔术师
Name
=彩音
Deck
=
DarkMagician
Dialog
=
ayane
.
zh
-
CN
黑魔术师卡组。
AI_LV3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!朱露咲浅羽-自奏圣乐
Name
=朱露咲浅羽
Deck
=
Orcust
Dialog
=
nlch
.
zh
-
CN
浅羽的草莓蛋糕。
AI_LV3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!朱露咲浅羽-转生炎兽
Name
=朱露咲浅羽
Deck
=
Salamangreat
Dialog
=
nlch
.
zh
-
CN
浅羽的香喷喷曲奇。
AI_LV3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!朱露咲浅羽-真红眼龙骑士
Name
=朱露咲浅羽
Deck
=
Dragun
Dialog
=
nlch
.
zh
-
CN
超魔导真红眼龙骑士卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!我太帅了-水百凤凰勇者
Name
=我太帅了
Deck
=
Brave
Dialog
=
smart
.
zh
-
CN
水机百头龙凤凰人勇者卡组。
AI_LV3
SUPPORT_MASTER_RULE_2020
!玻璃女巫-魔女术
Name
=玻璃女巫
Deck
=
Witchcraft
Dialog
=
verre
.
zh
-
CN
魔女术卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!源千雪-凭依装着
Name
=源千雪
Deck
=
FamiliarPossessed
Dialog
=
default
凭依装着卡组。
AI_ANTI_META
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!璃璃子-时劫者
Name
=璃璃子
Deck
=
TimeThief
Dialog
=
default
时间潜行者卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!濑名歌铃
Name
=濑名歌铃
Deck
=
Brave
Dialog
=
wof
-
Sena
-
Karin
????? 卡组。
AI_LV3
SUPPORT_MASTER_RULE_2020
!玻璃女巫-救祓少女
Name
=玻璃女巫
Deck
=
Exosister
Dialog
=
verre
.
zh
-
CN
救祓少女卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!艾克莉西娅-相剑
Name
=艾克莉西娅
Deck
=
Swordsoul
Dialog
=
ecclesia
.
zh
-
CN
相剑卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!神数不神-刹帝利
Name
=神数不神
Deck
=
Kashtira
Dialog
=
Zefra
.
zh
-
CN
俱舍怒威族卡组。
AI_LV3
SUPPORT_MASTER_RULE_2020
![狂野模式]神数不神-雷龙
Name
=神数不神
Deck
=
ThunderDragon
Dialog
=
Zefra
.
zh
-
CN
深渊混沌雷龙卡组。(普通模式的人机的卡组会符合其使用的卡池对应的环境的禁限卡表,但在狂野模式中,人机的卡组不符合任何禁限卡表。)
!摆烂型王圆圆
Name
=摆烂型王圆圆[
EXT
]
Deck
=
'THC_DSReimu'
Dialog
=
gugugu
.
zh
-
CN
DbPath
=
expansions
\
AI
.
cdb
幼女化灵梦摆烂卡组,但偶尔也会有一些惊喜?
SUPPORT_MASTER_RULE_2020
!神数不神-珠泪哀歌
Name
=神数不神
Deck
=
Tearlaments
Dialog
=
Zefra
.
zh
-
CN
旧式地天使珠泪哀歌族卡组。
AI_LV3
SUPPORT_MASTER_RULE_2020
!神数不神-神数
Name
=神数不神
Deck
=
Zefra
Dialog
=
Zefra
.
zh
-
CN
神数卡组。
AI_LV3
SUPPORT_MASTER_RULE_2020
!强袭型王圆圆
Name
=强袭型王圆圆[
EXT
]
Deck
=
'THC_WDL'
Dialog
=
ayane
.
zh
-
CN
DbPath
=
expansions
\
AI
.
cdb
乱打也能像样的喔嘟噜卡组。
SUPPORT_MASTER_RULE_2020
\ No newline at end of file
Decks/AI_THC_WDL.ydk
0 → 100644
View file @
2aa84bc7
#created by ...
#main
86379901
86379901
86379901
86379903
86379903
86379903
86379905
86379905
86379905
86379907
86379907
86379907
86379931
86379931
86379931
86379933
86379933
86379933
86379937
86379937
86379937
86379939
86379939
86379939
86379935
86379935
86379935
86379923
86379923
86379923
86379925
86379925
86379925
86379013
86379013
86379017
86379017
86379921
86379921
86379921
86379927
86379927
86379927
#extra
86379911
86379911
86379911
86379913
86379913
86379913
86379915
86379915
86379915
86379917
86379917
86379917
!side
Game/AI/Decks/THC_WDLExecutor.cs
0 → 100644
View file @
2aa84bc7
using
YGOSharp.OCGWrapper.Enums
;
using
System.Collections.Generic
;
using
System.Linq
;
using
WindBot
;
using
WindBot.Game
;
using
WindBot.Game.AI
;
namespace
WindBot.Game.AI.Decks
{
[
Deck
(
"THC_WDL"
,
"AI_THC_WDL"
)]
public
class
THC_WDLExecutor
:
DefaultExecutor
{
public
THC_WDLExecutor
(
GameAI
ai
,
Duel
duel
)
:
base
(
ai
,
duel
)
{
AddExecutor
(
ExecutorType
.
Activate
,
ImFeelingLucky
);
AddExecutor
(
ExecutorType
.
SpSummon
,
ImFeelingLucky
);
AddExecutor
(
ExecutorType
.
SpSummon
,
ImFeelingUnlucky
);
AddExecutor
(
ExecutorType
.
Activate
,
ImFeelingUnlucky
);
AddExecutor
(
ExecutorType
.
SummonOrSet
,
ImFeelingLazy
);
AddExecutor
(
ExecutorType
.
SpellSet
,
NoDreamSet
);
AddExecutor
(
ExecutorType
.
Repos
,
AlwaysAttack
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
MysticalSpaceTyphoon
,
DefaultMysticalSpaceTyphoon
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
CosmicCyclone
,
DefaultCosmicCyclone
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
GalaxyCyclone
,
DefaultGalaxyCyclone
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
BookOfMoon
,
DefaultBookOfMoon
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
CompulsoryEvacuationDevice
,
DefaultCompulsoryEvacuationDevice
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
CallOfTheHaunted
,
DefaultCallOfTheHaunted
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
Scapegoat
,
DefaultScapegoat
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
MaxxC
,
DefaultMaxxC
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
AshBlossom
,
DefaultAshBlossomAndJoyousSpring
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
GhostOgreAndSnowRabbit
,
DefaultGhostOgreAndSnowRabbit
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
GhostBelle
,
DefaultGhostBelleAndHauntedMansion
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
EffectVeiler
,
DefaultEffectVeiler
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
CalledByTheGrave
,
DefaultCalledByTheGrave
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
InfiniteImpermanence
,
DefaultInfiniteImpermanence
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
BreakthroughSkill
,
DefaultBreakthroughSkill
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
SolemnJudgment
,
DefaultSolemnJudgment
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
SolemnWarning
,
DefaultSolemnWarning
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
SolemnStrike
,
DefaultSolemnStrike
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
TorrentialTribute
,
DefaultTorrentialTribute
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
HeavyStorm
,
DefaultHeavyStorm
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
HarpiesFeatherDuster
,
DefaultHarpiesFeatherDusterFirst
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
HammerShot
,
DefaultHammerShot
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
DarkHole
,
DefaultDarkHole
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
Raigeki
,
DefaultRaigeki
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
SmashingGround
,
DefaultSmashingGround
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
PotOfDesires
,
DefaultPotOfDesires
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
AllureofDarkness
,
DefaultAllureofDarkness
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
DimensionalBarrier
,
DefaultDimensionalBarrier
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
InterruptedKaijuSlumber
,
DefaultInterruptedKaijuSlumber
);
AddExecutor
(
ExecutorType
.
SpSummon
,
_CardId
.
JizukirutheStarDestroyingKaiju
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
_CardId
.
GadarlatheMysteryDustKaiju
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
_CardId
.
GamecieltheSeaTurtleKaiju
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
_CardId
.
RadiantheMultidimensionalKaiju
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
_CardId
.
KumongoustheStickyStringKaiju
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
_CardId
.
ThunderKingtheLightningstrikeKaiju
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
_CardId
.
DogorantheMadFlameKaiju
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
_CardId
.
SuperAntiKaijuWarMachineMechaDogoran
,
DefaultKaijuSpsummon
);
AddExecutor
(
ExecutorType
.
SpSummon
,
_CardId
.
EvilswarmExcitonKnight
,
DefaultEvilswarmExcitonKnightSummon
);
AddExecutor
(
ExecutorType
.
Activate
,
_CardId
.
EvilswarmExcitonKnight
,
DefaultEvilswarmExcitonKnightEffect
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
SandaionTheTimelord
,
DefaultTimelordSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
GabrionTheTimelord
,
DefaultTimelordSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
MichionTheTimelord
,
DefaultTimelordSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
ZaphionTheTimelord
,
DefaultTimelordSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
HailonTheTimelord
,
DefaultTimelordSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
RaphionTheTimelord
,
DefaultTimelordSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
SadionTheTimelord
,
DefaultTimelordSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
MetaionTheTimelord
,
DefaultTimelordSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
KamionTheTimelord
,
DefaultTimelordSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
LazionTheTimelord
,
DefaultTimelordSummon
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
LeftArmofTheForbiddenOne
,
JustDontIt
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
RightLegofTheForbiddenOne
,
JustDontIt
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
LeftLegofTheForbiddenOne
,
JustDontIt
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
RightArmofTheForbiddenOne
,
JustDontIt
);
AddExecutor
(
ExecutorType
.
Summon
,
_CardId
.
ExodiaTheForbiddenOne
,
JustDontIt
);
}
private
List
<
int
>
HintMsgForEnemy
=
new
List
<
int
>
{
HintMsg
.
Release
,
HintMsg
.
Destroy
,
HintMsg
.
Remove
,
HintMsg
.
ToGrave
,
HintMsg
.
ReturnToHand
,
HintMsg
.
ToDeck
,
HintMsg
.
FusionMaterial
,
HintMsg
.
SynchroMaterial
,
HintMsg
.
XyzMaterial
,
HintMsg
.
LinkMaterial
,
HintMsg
.
Disable
};
private
List
<
int
>
HintMsgForDeck
=
new
List
<
int
>
{
HintMsg
.
SpSummon
,
HintMsg
.
ToGrave
,
HintMsg
.
Remove
,
HintMsg
.
AddToHand
,
HintMsg
.
FusionMaterial
};
private
List
<
int
>
HintMsgForSelf
=
new
List
<
int
>
{
HintMsg
.
Equip
};
private
List
<
int
>
HintMsgForMaterial
=
new
List
<
int
>
{
HintMsg
.
FusionMaterial
,
HintMsg
.
SynchroMaterial
,
HintMsg
.
XyzMaterial
,
HintMsg
.
LinkMaterial
,
HintMsg
.
Release
};
private
List
<
int
>
HintMsgForMaxSelect
=
new
List
<
int
>
{
HintMsg
.
SpSummon
,
HintMsg
.
ToGrave
,
HintMsg
.
AddToHand
,
HintMsg
.
FusionMaterial
,
HintMsg
.
Destroy
};
public
override
IList
<
ClientCard
>
OnSelectCard
(
IList
<
ClientCard
>
_cards
,
int
min
,
int
max
,
int
hint
,
bool
cancelable
)
{
if
(
Duel
.
Phase
==
DuelPhase
.
BattleStart
)
return
null
;
if
(
AI
.
HaveSelectedCards
())
return
null
;
IList
<
ClientCard
>
selected
=
new
List
<
ClientCard
>();
IList
<
ClientCard
>
cards
=
new
List
<
ClientCard
>(
_cards
);
if
(
max
>
cards
.
Count
)
max
=
cards
.
Count
;
if
(
HintMsgForEnemy
.
Contains
(
hint
))
{
IList
<
ClientCard
>
enemyCards
=
cards
.
Where
(
card
=>
card
.
Controller
==
1
).
ToList
();
if
(
hint
==
HintMsg
.
Release
)
{
IList
<
ClientCard
>
handCards
=
cards
.
Where
(
card
=>
card
.
Location
==
CardLocation
.
Hand
).
ToList
();
while
(
handCards
.
Count
>
0
&&
selected
.
Count
<
max
)
{
ClientCard
card
=
handCards
[
Program
.
Rand
.
Next
(
handCards
.
Count
)];
selected
.
Add
(
card
);
handCards
.
Remove
(
card
);
cards
.
Remove
(
card
);
}
}
// select enemy's card first
while
(
enemyCards
.
Count
>
0
&&
selected
.
Count
<
max
)
{
ClientCard
card
=
enemyCards
[
Program
.
Rand
.
Next
(
enemyCards
.
Count
)];
selected
.
Add
(
card
);
enemyCards
.
Remove
(
card
);
cards
.
Remove
(
card
);
}
}
if
(
HintMsgForDeck
.
Contains
(
hint
))
{
IList
<
ClientCard
>
deckCards
=
cards
.
Where
(
card
=>
card
.
Location
==
CardLocation
.
Deck
).
ToList
();
// select deck's card first
while
(
deckCards
.
Count
>
0
&&
selected
.
Count
<
max
)
{
ClientCard
card
=
deckCards
[
Program
.
Rand
.
Next
(
deckCards
.
Count
)];
selected
.
Add
(
card
);
deckCards
.
Remove
(
card
);
cards
.
Remove
(
card
);
}
}
if
(
HintMsgForSelf
.
Contains
(
hint
))
{
IList
<
ClientCard
>
botCards
=
cards
.
Where
(
card
=>
card
.
Controller
==
0
).
ToList
();
// select bot's card first
while
(
botCards
.
Count
>
0
&&
selected
.
Count
<
max
)
{
ClientCard
card
=
botCards
[
Program
.
Rand
.
Next
(
botCards
.
Count
)];
selected
.
Add
(
card
);
botCards
.
Remove
(
card
);
cards
.
Remove
(
card
);
}
}
if
(
HintMsgForMaterial
.
Contains
(
hint
))
{
IList
<
ClientCard
>
materials
=
cards
.
OrderBy
(
card
=>
card
.
Attack
).
ToList
();
// select low attack first
while
(
materials
.
Count
>
0
&&
selected
.
Count
<
min
)
{
ClientCard
card
=
materials
[
0
];
selected
.
Add
(
card
);
materials
.
Remove
(
card
);
cards
.
Remove
(
card
);
}
}
// select random cards
while
(
selected
.
Count
<
min
)
{
ClientCard
card
=
cards
[
Program
.
Rand
.
Next
(
cards
.
Count
)];
selected
.
Add
(
card
);
cards
.
Remove
(
card
);
}
if
(
HintMsgForMaxSelect
.
Contains
(
hint
))
{
// select max cards
while
(
selected
.
Count
<
max
)
{
ClientCard
card
=
cards
[
Program
.
Rand
.
Next
(
cards
.
Count
)];
selected
.
Add
(
card
);
cards
.
Remove
(
card
);
}
}
return
selected
;
}
public
override
int
OnSelectOption
(
IList
<
int
>
options
)
{
return
options
.
Count
-
1
;
}
public
override
CardPosition
OnSelectPosition
(
int
cardId
,
IList
<
CardPosition
>
positions
)
{
return
CardPosition
.
FaceUpAttack
;
}
private
bool
ImFeelingLucky
()
{
return
Program
.
Rand
.
Next
(
10
)
>=
5
&&
DefaultDontChainMyself
();
}
private
bool
ImFeelingUnlucky
()
{
return
DefaultDontChainMyself
();
}
private
bool
ImFeelingLazy
()
{
if
(
Executors
.
Any
(
exec
=>
(
exec
.
Type
==
ExecutorType
.
SummonOrSet
||
exec
.
Type
==
ExecutorType
.
Summon
||
exec
.
Type
==
ExecutorType
.
MonsterSet
)
&&
exec
.
CardId
==
Card
.
Id
))
return
false
;
return
DefaultMonsterSummon
();
}
private
bool
JustDontIt
()
{
return
false
;
}
private
bool
AlwaysAttack
()
{
return
Card
.
IsDefense
();
}
private
bool
NoDreamSet
()
{
if
(
Card
.
HasSetcode
(
0x279
))
{
return
false
;
}
return
DefaultSpellSet
();
}
}
}
\ No newline at end of file
WindBot.csproj
View file @
2aa84bc7
...
...
@@ -77,6 +77,7 @@
<Compile
Include=
"Game\AI\Decks\BlackwingExecutor.cs"
/>
<Compile
Include=
"Game\AI\Decks\ExosisterExecutor.cs"
/>
<Compile
Include=
"Game\AI\Decks\KashtiraExecutor.cs"
/>
<Compile
Include=
"Game\AI\Decks\THC_WDLExecutor.cs"
/>
<Compile
Include=
"Game\AI\Decks\LuckyExecutor.cs"
/>
<Compile
Include=
"Game\AI\Decks\MathMechExecutor.cs"
/>
<Compile
Include=
"Game\AI\Decks\PureWindsExecutor.cs"
/>
...
...
@@ -161,6 +162,9 @@
</ItemGroup>
<ItemGroup>
<None
Include=
"App.config"
/>
<None
Include=
"Decks\AI_THC_WDL.ydk"
>
<CopyToOutputDirectory>
PreserveNewest
</CopyToOutputDirectory>
</None>
<None
Include=
"sqlite3.dll"
>
<CopyToOutputDirectory>
PreserveNewest
</CopyToOutputDirectory>
</None>
...
...
bots.json
View file @
2aa84bc7
...
...
@@ -281,6 +281,11 @@
"deck"
:
"THC_DSReimu"
,
"dialog"
:
"default"
},
{
"name"
:
"强袭型王圆圆"
,
"deck"
:
"THC_WDL"
,
"dialog"
:
"ayane.zh-CN"
},
{
"name"
:
"神数不神"
,
"deck"
:
"Tearlaments"
,
...
...
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