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
9537ae4a
Commit
9537ae4a
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
00d7b610
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
378 additions
and
280 deletions
+378
-280
BotWrapper/BotWrapper.cs
BotWrapper/BotWrapper.cs
+6
-0
BotWrapper/bot.conf
BotWrapper/bot.conf
+30
-280
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
+20
-0
No files found.
BotWrapper/BotWrapper.cs
View file @
9537ae4a
...
...
@@ -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 @
9537ae4a
...
...
@@ -4,292 +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
!段位认定-四段
Random
=
AI_LV2
一些比较弱的卡组。
SUPPORT_MASTER_RULE_2020
!段位认定-七段
Random
=
AI_LV3
一些不是很弱的卡组。
SUPPORT_MASTER_RULE_2020
!段位认定-皆传
Random
=
AI_LV4
一些可以(或者曾经可以)在竞技环境里看到的卡组。
SUPPORT_MASTER_RULE_2020
!段位认定-里八段
Random
=
AI_ANTI_META
一些报复社会(针对主流卡组的弱点)的卡组。
SUPPORT_MASTER_RULE_2020
!段位认定-里皆传
Random
=
AI_WILD
普通的人机的卡组会符合其使用的卡池对应的环境的禁限卡表,但里皆传模式的人机的卡组一般不符合任何禁限卡表。
SUPPORT_MASTER_RULE_2020
!????-自选卡组
Name
=????
Deck
=
Lucky
Dialog
=
gugugu
.
zh
-
CN
人机卡组由你选择。随缘出牌。
SELECT_DECKFILE
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!有栖川蓝子-低星凡骨
Name
=有栖川蓝子
Deck
=
MokeyMokey
Dialog
=
wof
-
Arisugawa
-
Aiko
沙包。
!
DJ
(
Normal
)
Name
=
DJ
Deck
=
'DJ'
Dialog
=
heyDJ
DbPath
=
expansions
\
AI
.
cdb
兄弟打碟吗
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!
有栖川蓝子-全程回血
Name
=
有栖川蓝子
Deck
=
MokeyMokeyKing
Dialog
=
wof
-
Arisugawa
-
Aiko
大沙包。
!
一面:幽幽子(
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
!石砂原奈绪-龙骑星爆
Name
=石砂原奈绪
Deck
=
Dragunity
Dialog
=
wof
-
Isagohara
-
Nao
龙骑轴星尘龙爆裂体卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!埃莉丝·科菲-
8
星同调
Name
=埃莉丝·科菲
Deck
=
'Level VIII'
Dialog
=
wof
-
Elyse
-
Coffey
8
星同调卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!鸣野凪子-
R5
Name
=鸣野凪子
Deck
=
'Rank V'
Dialog
=
wof
-
Shigino
-
Nagiko
5
阶超量卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!绫濑亚梦-异热同心武器
Name
=绫濑亚梦
Deck
=
'Zexal Weapons'
Dialog
=
wof
-
Ayase
-
Amu
神装电光皇卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!梦前菜菜-彩虹
Name
=梦前菜菜
Deck
=
Rainbow
Dialog
=
wof
-
Yumesaki
-
Nana
全属性凡骨卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!伊芙·墨菲-饼蛙
Name
=伊芙·墨菲
Deck
=
'Toadally Awesome'
Dialog
=
wof
-
Eve
-
Murphy
大师规则三的全盛饼蛙卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!下垣鸣海凛央奈-青眼
Name
=下垣鸣海凛央奈
Deck
=
Blue
-
Eyes
Dialog
=
wof
-
Shimogakinarumi
-
Riona
青眼卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!城崎千夏-十二兽
Name
=城崎千夏
Deck
=
Zoodiac
Dialog
=
wof
-
Jougasaki
-
Chinatsu
大师规则三的十四兽卡组。
AI_LV4
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!鹭泽由依-妖仙兽
Name
=鹭泽由依
Deck
=
Yosenju
Dialog
=
wof
-
Sagisawa
-
Yui
妖仙兽卡组。
AI_ANTI_META
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!十十六木花奏子-机壳
Name
=十十六木花奏子
Deck
=
Qliphort
Dialog
=
wof
-
Todoroki
-
Kanako
机壳卡组。
AI_ANTI_META
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!七草一花-淘气仙星
Name
=七草一花
Deck
=
Trickstar
Dialog
=
wof
-
Nanakusa
-
Ichika
旧式淘气仙星卡组。
AI_LV4
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!凯瑟琳·罗森塔尔-幻变骚灵
Name
=凯瑟琳·罗森塔尔
Deck
=
Altergeist
Dialog
=
wof
-
Catherine
-
Rosenthal
幻变骚灵卡组。
AI_LV4
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!珠洲岛拓海-拉比林斯迷宫
Name
=珠洲岛拓海
Deck
=
Labrynth
Dialog
=
wof
-
Suzujima
-
Takumi
拉比林斯迷宫卡组。
AI_LV4
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!濑名歌铃-闪刀姬
Name
=濑名歌铃
Deck
=
SkyStriker
Dialog
=
wof
-
Sena
-
Karin
旧式闪刀姬卡组。
AI_LV3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!薇薇安·伊文捷琳-自奏圣乐
Name
=薇薇安·伊文捷琳
Deck
=
Orcust
Dialog
=
wof
-
Vivian
-
Evangeline
旧式自奏圣乐卡组。
AI_LV4
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!海伦·薇萨拉兹-转生炎兽
Name
=海伦·薇萨拉兹
Deck
=
Salamangreat
Dialog
=
wof
-
Helen
-
Virsaladze
转生炎兽卡组。
AI_LV3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!黑崎智秋-凭依装着
Name
=黑崎智秋
Deck
=
wof
-
Kurosaki
-
Chiaki
Dialog
=
wof
-
Kurosaki
-
Chiaki
凭依装着卡组。
AI_ANTI_META
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!砂冢明音-时劫者
Name
=砂冢明音
Deck
=
TimeThief
Dialog
=
wof
-
Sunazuka
-
Akane
时间潜行者卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!星希花音-削血
Name
=星希花音
Deck
=
Burn
Dialog
=
wof
-
Hoshiki
-
Kanon
老式削血卡组。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!浅见空子-青蛙
Name
=浅见空子
Deck
=
Frog
Dialog
=
wof
-
Asami
-
Sorako
老式青蛙卡组。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!佐佐木茜-荷鲁斯
Name
=佐佐木茜
Deck
=
Horus
Dialog
=
wof
-
Sasaki
-
Akane
老式龙族卡组。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!早见虹羽-微风
Name
=早见虹羽
Deck
=
PureWinds
Dialog
=
wof
-
Hayami
-
Nijiha
风属性卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!水晶艾蕾娜-电子界
Name
=水晶艾蕾娜
Deck
=
ST1732
Dialog
=
wof
-
Suisho
-
Erena
由三盒
ST17
和三盒
SD32
组成的卡组。
AI_LV1
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!白石唯-影灵衣
Name
=白石唯
Deck
=
Nekroz
Dialog
=
wof
-
Shiraishi
-
Yui
影灵衣卡组。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!音羽真寻-光道
Name
=音羽真寻
Deck
=
Lightsworn
Dialog
=
wof
-
Otoha
-
Mahiro
光道卡组。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!神崎春瑚-黑羽
Name
=神崎春瑚
Deck
=
Blackwing
Dialog
=
wof
-
Kanzaki
-
Haruko
黑羽卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!樱庭小梅-电子龙
Name
=樱庭小梅
Deck
=
CyberDragon
Dialog
=
wof
-
Sakuraba
-
Koume
电子龙卡组。
AI_LV1
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!淡野美妙子-入魔
Name
=淡野美妙子
Deck
=
Evilswarm
Dialog
=
wof
-
Awaya
-
Mieko
入魔卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!璃池樱空-守墓
Name
=璃池樱空
Deck
=
Gravekeeper
Dialog
=
wof
-
Akiike
-
Sara
守墓卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!月白五十铃-灰篮
Name
=月白五十铃
Deck
=
Graydle
Dialog
=
wof
-
Tsukishiro
-
Isuzu
灰篮卡组。
AI_LV2
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
![强敌]晴海夏佳-???
Name
=晴海夏佳
Deck
=
'Old School'
Dialog
=
wof
-
Harumi
-
Natsuka
你想干嘛?
AI_WILD
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!晴海夏佳-光道影依恐龙
Name
=晴海夏佳
Deck
=
LightswornShaddoldinosour
Dialog
=
wof
-
Harumi
-
Natsuka
光道影依恐龙卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!椎名咪玉-黑魔术师
Name
=椎名咪玉
Deck
=
DarkMagician
Dialog
=
wof
-
Shiina
-
Miu
黑魔术师卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!克里斯汀·罗森塔尔-青眼混沌极龙
Name
=克里斯汀·罗森塔尔
Deck
=
BlueEyesMaxDragon
Dialog
=
wof
-
Christine
-
Rosenthal
青眼混沌极龙卡组。
AI_LV3
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!白鸟芽衣-幻煌龙
Name
=白鸟芽衣
Deck
=
Phantasm
Dialog
=
wof
-
Shiratori
-
Mei
幻煌龙卡组。
AI_ANTI_META
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!浅仓纱花-连锁烧
Name
=浅仓纱花
Deck
=
ChainBurn
Dialog
=
wof
-
Asukura
-
Sayaka
连锁烧卡组。
AI_ANTI_META
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!八宫一月-红莲雷王滑板
Name
=八宫一月
Deck
=
GrenMajuThunderBoarder
Dialog
=
wof
-
Hachimiya
-
Kaduki
红莲雷王滑板卡组。
AI_ANTI_META
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!蓝叶雾叶-真红眼龙骑士
Name
=蓝叶雾叶
Deck
=
Dragun
Dialog
=
wof
-
Aiha
-
Kiriha
超魔导真红眼龙骑士卡组。
AI_LV4
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!神代心春-水百凤凰勇者
Name
=神代心春
Deck
=
Brave
Dialog
=
wof
-
Kamishiro
-
Koharu
水机百头龙凤凰人勇者卡组。
AI_LV4
SUPPORT_MASTER_RULE_2020
!白雪安娜-魔女术
Name
=白雪安娜
Deck
=
Witchcraft
Dialog
=
wof
-
Shirayuki
-
Anna
魔女术卡组。
AI_LV4
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!玻名城夏爱-救祓少女
Name
=玻名城夏爱
Deck
=
Exosister
Dialog
=
wof
-
Hanagusuku
-
Kea
救祓少女卡组。
AI_LV4
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_2020
!时谷彼方-相剑
Name
=时谷彼方
Deck
=
Swordsoul
Dialog
=
wof
-
Tokitani
-
Kanata
相剑卡组。
AI_LV4
SUPPORT_MASTER_RULE_3
SUPPORT_MASTER_RULE_20200
!三水小雪-教导
Name
=三水小雪
Deck
=
Dogmatika
Dialog
=
wof
-
Samisui
-
Koyuki
教导卡组。
AI_LV4
SUPPORT_MASTER_RULE_3
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!鹫见花火-阿不思
Name
=鹫见花火
Deck
=
Albaz
Dialog
=
wof
-
Sumi
-
Hanabi
以阿不思的落胤为中心的卡组。
AI_LV4
SUPPORT_MASTER_RULE_3
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
!
朝比奈千夜-刹帝利
Name
=
朝比奈千夜
Deck
=
Kashtira
Dialog
=
wof
-
Asabina
-
Chiya
俱舍怒威族卡组
。
AI_LV4
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
!
[强敌]空鸽子-雷龙
Name
=
空鸽子
Deck
=
ThunderDragon
Dialog
=
wof
-
Empty
-
Pigeon
深渊混沌雷龙卡组
。
AI_WILD
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
!
露卡希娅-珠泪哀歌
Name
=
露卡希娅
Deck
=
Tearlaments
Dialog
=
wof
-
Rukahira
旧式地天使珠泪哀歌族卡组
。
AI_LV4
AI_WILD
SUPPORT_MASTER_RULE_2020
!
P2
-自选卡组
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
!
二宫爱丽丝-神数
Name
=
二宫爱丽丝
Deck
=
Zefra
Dialog
=
wof
-
Ninomiya
-
Arisu
神数卡组。
AI_LV4
SUPPORT_MASTER_RULE_2020
!
摆烂型王圆圆
Name
=
摆烂型王圆圆[
EXT
]
Deck
=
'THC_DSReimu'
Dialog
=
gugugu
.
zh
-
CN
DbPath
=
expansions
\
AI
.
cdb
幼女化灵梦摆烂卡组,但偶尔也会有一些惊喜?
SUPPORT_MASTER_RULE_2020
!
宫水静香-超重武者
Name
=
宫水静香
Deck
=
SuperheavySamurai
Dialog
=
wof
-
Miyamizu
-
Shizuka
超重武者
卡组。
AI_LV4
SUPPORT_MASTER_RULE_2020
!
强袭型王圆圆
Name
=
强袭型王圆圆[
EXT
]
Deck
=
'THC_WDL'
Dialog
=
ayane
.
zh
-
CN
DbPath
=
expansions
\
AI
.
cdb
乱打也能像样的喔嘟噜
卡组。
SUPPORT_MASTER_RULE_2020
Decks/AI_THC_WDL.ydk
0 → 100644
View file @
9537ae4a
#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 @
9537ae4a
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 @
9537ae4a
...
...
@@ -69,6 +69,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"
/>
...
...
@@ -180,6 +181,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 @
9537ae4a
...
...
@@ -254,6 +254,26 @@
"name"
:
"摆烂型王圆圆"
,
"deck"
:
"THC_DSReimu"
,
"dialog"
:
"default"
},
{
"name"
:
"强袭型王圆圆"
,
"deck"
:
"THC_WDL"
,
"dialog"
:
"ayane.zh-CN"
},
{
"name"
:
"神数不神"
,
"deck"
:
"Tearlaments"
,
"dialog"
:
"Zefra.zh-CN"
},
{
"name"
:
"神数不神"
,
"deck"
:
"Zefra"
,
"dialog"
:
"Zefra.zh-CN"
},
{
"name"
:
"艾克莉西娅"
,
"deck"
:
"Swordsoul"
,
"dialog"
:
"ecclesia.zh-CN"
}
]
}
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