Commit 0b2b84b5 authored by nanahira's avatar nanahira

Merge branch 'master' into 2pick

parents 28e26c21 3bd53ba5
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
#WindBot
/WindBot.exe
/WindBot.exe.*
/WindBot.vshost.exe
/WindBot.vshost.exe.*
/cards.cdb
# User-specific files
*.suo
*.user
......@@ -155,3 +162,5 @@ $RECYCLE.BIN/
# Mac desktop service store files
.DS_Store
/.vs*
stages:
- build
- deploy
variables:
GIT_DEPTH: "1"
CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest
build:
stage: build
dependencies: []
tags:
- linux
image: mono
script:
- sed -i '/download.mono-project.com/d' /etc/apt/sources.list /etc/apt/sources.list.d/*
- apt update && apt -y install p7zip-full tar
- msbuild /p:Configuration=Release /p:TargetFrameworkVersion=v4.6
- mv -f bin/Release WindBot
- rm -rf WindBot/WindBot.exe.config
- mv -f BotWrapper/bin/Release/Bot.exe .
- mv -f BotWrapper/bin/Release/bot.conf .
- mv -f BotWrapper/BotWrapper.sh ./bot
- chmod +x ./bot
- mkdir dist
- 7z a -mx9 dist/WindBot.7z WindBot Bot.exe bot.conf
- mv WindBot windbot
- tar zcvf dist/windbot.tar.gz windbot bot.conf bot
artifacts:
paths:
- dist/
docker:
stage: build
tags:
- docker
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build --pull --no-cache -t $CONTAINER_TEST_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
upload_to_minio:
stage: deploy
dependencies:
- build
tags:
- linux
image: python
script:
- pip install -U -i https://mirrors.aliyun.com/pypi/simple/ awscli
- aws s3 --endpoint=https://minio.mycard.moe:9000 sync dist/ s3://mycard/windbot
only:
- master
deploy_docker:
stage: deploy
tags:
- docker
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull $CONTAINER_TEST_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
- docker push $CONTAINER_RELEASE_IMAGE
only:
- master
......@@ -2,139 +2,229 @@
# !name
# command
# description
# flags (avail flags: SUPPORT_MASTER_RULE_3, SUPPORT_NEW_MASTER_RULE)
# flags (avail flags: SUPPORT_MASTER_RULE_3, SUPPORT_NEW_MASTER_RULE, SUPPORT_MASTER_RULE_2020, SELECT_DECKFILE)
!随机-非常简单
Random=AI_LV1
主要是一些沙包。
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!随机-简单
Random=AI_LV2
一些比较弱的卡组。
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!随机-普通
Random=AI_LV3
一些环境里可以看到的卡组。
SUPPORT_NEW_MASTER_RULE
SUPPORT_MASTER_RULE_2020
!随机-报社
Random=AI_ANTI_META
一些报复社会(针对主流卡组的弱点)的卡组。
SUPPORT_MASTER_RULE_2020
!P2-自选卡组
Name=P2 Deck=Lucky Dialog=gugugu.zh-CN
人机卡组由你选择。随缘出牌。可将你的卡组文件(.ydk)复制到WindBot的对应文件夹。
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
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_NEW_MASTER_RULE
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_NEW_MASTER_RULE
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_NEW_MASTER_RULE
AI_LV2 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!琪露诺-饼蛙
Name=琪露诺 Deck='Toadally Awesome' Dialog=cirno.zh-CN
大师规则三的全盛饼蛙卡组。
SUPPORT_MASTER_RULE_3
AI_LV2 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!复制植物-青眼
Name=复制植物 Deck=Blue-Eyes Dialog=copy.zh-CN
青眼卡组。
AI_LV3 SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE
AI_LV3 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!复制植物-十二兽
Name=复制植物 Deck=Zoodiac Dialog=copy.zh-CN
大师规则三的十四兽卡组。
SUPPORT_MASTER_RULE_3
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
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
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
旧式淘气仙星卡组。
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!尼亚-幻变骚灵
Name=尼亚 Deck=Altergeist Dialog=near.zh-CN
幻变骚灵卡组。
AI_LV3 SUPPORT_NEW_MASTER_RULE
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_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
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
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
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
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
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
!奇魔果
Name=奇魔果 Deck=DarkMagician Dialog=kiwi.zh-TW
黑魔术师卡组。
AI_LV3 SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE
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
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
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
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
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!复制梁龙-闪刀姬
Name=复制梁龙 Deck=SkyStriker Dialog=anothercopy.zh-CN
纯闪刀姬卡组。
AI_LV3 SUPPORT_NEW_MASTER_RULE
!彩音-黑魔术师
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=Witchcraft Dialog=verre.zh-CN
魔女术卡组。
AI_LV3 SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!源千雪-凭依装着
Name=源千雪 Deck=FamiliarPossessed Dialog=default.zh-CN
凭依装着卡组。
AI_ANTI_META SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!璃璃子-时劫者
Name=璃璃子 Deck=TimeThief Dialog=default.zh-CN
时间潜行者卡组。
AI_LV2 SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
......@@ -5,17 +5,17 @@
53143898
53143898
42790071
42790071
14558127
14558127
14558127
89538537
89538537
89538537
23434538
23434538
23434538
25533642
25533642
25533642
2295440
18144506
35261759
......
#created by ...
#main
46986414
46986414
74677422
74677422
67300516
10802915
10802915
26202165
91646304
14558127
14558127
72291078
72291078
72291078
23434538
23434538
23434538
97631303
97631303
97631303
1845204
1845204
6172122
6172122
6172122
11827244
11827244
18144506
81439173
83764718
92353449
92353449
24224830
24224830
24224830
10045474
10045474
10045474
40605147
40605147
#extra
37818794
37818794
37818794
96334243
63519819
50588353
70369116
70369116
98978921
98978921
31226177
31226177
60303245
60303245
60303245
!side
#created by ...
#main
71197066
15397015
15397015
15397015
4376659
4376659
31764354
31887906
40542826
40542826
68881650
68881650
14558127
14558127
36584821
36584821
23434538
23434538
18144506
35261759
35261759
49238328
49238328
73915051
73915051
62256492
62256492
25704359
25704359
30241314
30241314
36975314
36975314
59305593
59305593
61740673
82732705
82732705
40605147
40605147
41420027
41420027
84749824
84749824
#extra
12014404
31833038
85289965
65330383
38342335
2857636
9839945
30674956
48815792
73309655
97661969
75452921
98978921
41999284
41999284
!side
14558127
23434538
12580477
14532163
14532163
14532163
8267140
8267140
24224830
24224830
65681983
65681983
10045474
10045474
10045474
#created by ...
#main
71197066
71197066
15397015
15397015
15397015
71564252
71564252
71564252
14558127
14558127
36584821
36584821
36584821
23434538
23434538
63845230
63845230
63845230
18144506
35261759
35261759
35261759
59750328
59750328
70368879
98645731
98645731
98645731
......@@ -30,48 +27,47 @@
10045474
10045474
10813327
15693423
23924608
47475363
47475363
30241314
30241314
36975314
36975314
58921041
58921041
61740673
61936647
69452756
40605147
40605147
77538567
41420027
41420027
77538567
#extra
86221741
31833038
85289965
5043010
30194529
38342335
2857636
24094258
75452921
50588353
3987233
3987233
63288573
98978921
41999284
41999284
41999284
!side
10000080
86937530
71564252
14558127
62015408
23434538
9742784
70368879
19508728
10045474
15693423
24207889
30241314
61740673
61936647
69452756
23002292
41420027
41420027
77538567
#created by ...
#main
87979586
87979586
82012319
82012319
65367484
65367484
44928016
77558536
77558536
19139516
67696066
53573406
53573406
25259669
25259669
12213463
12213463
26118970
4334811
4334811
4334811
72291078
72291078
9742784
9742784
911883
911883
911883
12580477
18144506
32807846
81439173
83764718
94886282
94886282
24224830
24224830
24224830
40605147
40605147
#extra
89907227
27548199
50954680
80666118
74586817
76774528
33698022
68431965
42566602
53325667
90590303
21887175
47363932
47363932
50588353
!side
72989439
6901008
6901008
90432163
90432163
36426778
36426778
34408491
83994433
82044279
50321796
26692769
98827725
25542642
25542642
#created by ...
#main
8567955
8567955
8567955
89743495
89743495
27182739
27182739
27182739
53577438
53577438
53577438
16360142
16360142
16360142
80965043
80965043
80965043
52354896
52354896
12580477
14025912
14532163
14532163
35261759
35261759
35261759
57160136
57160136
57160136
70368879
70368879
70368879
81439173
93104632
93104632
8267140
41410651
36361633
36361633
36361633
#extra
42632209
42632209
42632209
15248594
15248594
15248594
61399402
61399402
61399402
85692042
85692042
85692042
88021907
88021907
88021907
!side
#created by ...
#main
93920420
5560911
4055337
4055337
98169343
61283655
57835716
57835716
57835716
28985331
21441617
4334811
90432163
36426778
14558127
14558127
73642296
73642296
23434538
23434538
23434538
9742784
32807846
63166095
63166095
73628505
81439173
24224830
24224830
24224830
25733157
52340444
35371948
35371948
35371948
90351981
98827725
25542642
25542642
703897
#extra
27548199
68431965
93854893
93854893
85289965
76145142
26692769
2857636
30741503
30741503
30741503
50588353
63288573
3679218
60303245
!side
82385847
82385847
78661338
78661338
78661338
34267821
34267821
34267821
18144506
37520316
37520316
37520316
43898403
43898403
43898403
#created by ...
#main
71007216
71007216
71007216
81275020
71175527
71175527
71175527
43722862
43722862
43722862
53932291
53932291
65277087
65277087
65277087
54455435
54455435
54455435
91662792
91662792
91662792
16725505
70117860
70117860
70117860
12580477
27980138
27980138
58577036
83764718
8267140
25789292
67723438
67723438
8608979
8608979
8608979
24590232
40605147
84749824
#extra
27315304
50954680
50954680
50954680
82044279
82044279
14577226
29552709
29552709
64880894
84766279
42110604
70913714
30674956
90512490
!side
19420830
19420830
19420830
94145021
94145021
94145021
25789292
25789292
43711255
43711255
43711255
58921041
58921041
23002292
23002292
#created by ygopro2
#main
97268402
97268402
97268402
94620082
94620082
94620082
26889158
26889158
26889158
89662401
14558127
14558127
20618081
56003780
52277807
52277807
52277807
23434538
23434538
23434538
16188701
16188701
16188701
52155219
52155219
52155219
24224830
24224830
24224830
81439174
18144507
1295111
14934922
51339637
51339637
10045474
10045474
10045474
41420027
41420027
#extra
6983839
87327776
87327776
87871125
87871125
87871125
31833038
14812471
14812471
14812471
41463182
41463182
48815792
2857636
85289965
!side
64178424
#created by ...
#main
89631139
#extra
!side
#created by ...
#main
65367484
71564252
71564252
71564252
56308388
56308388
56308388
67696066
67696066
82496097
82496097
74578720
74578720
19891131
19891131
19891131
14558127
14558127
23434538
23434538
12580477
18144507
35261759
35261759
49238328
49238328
81439173
10877309
10877309
81670445
18678554
98827725
36975314
36975314
40605147
40605147
40605147
41420027
41420027
41420027
76587747
76587747
84749824
84749824
#extra
56832966
56832966
42421606
86532744
86532744
16195942
84013237
84013237
55285840
55285840
59208943
59208943
46772449
12014404
12014404
!side
#created by ...
#main
49036338
71074418
21522601
84523092
84523092
21744288
21744288
21744288
95245544
95245544
95245544
14558127
14558127
38814750
38814750
38814750
23434538
59851535
64756282
64756282
10805153
11110587
11110587
14532163
14532163
49238328
49238328
49238328
54693926
54693926
57916305
57916305
57916305
58577036
58577036
58577036
73594093
83301414
83301414
83301414
24224830
24224830
56894757
65681983
65681983
70226289
13758665
19673561
40252269
40252269
83289866
83289866
83289866
87769556
10045474
10045474
10045474
55072170
94553671
94553671
#extra
27548199
5041348
5041348
74586817
98558751
85289965
38342335
2857636
2857636
8802510
50588353
60303245
94259633
94259633
94259633
!side
65681983
40252269
#created by ...
#main
71197066
15397015
15397015
15397015
4376659
4376659
31764354
31887906
40542826
40542826
68881650
68881650
14558127
14558127
36584821
36584821
18144506
35261759
35261759
49238328
49238328
24224830
24224830
73915051
73915051
62256492
62256492
25704359
25704359
30241314
30241314
36975314
36975314
59305593
59305593
61740673
82732705
82732705
40605147
40605147
41420027
41420027
84749824
84749824
#extra
12014404
31833038
85289965
65330383
38342335
2857636
9839945
30674956
48815792
73309655
97661969
75452921
98978921
41999284
41999284
!side
14558127
23434538
23434538
23434538
12580477
14532163
14532163
14532163
8267140
8267140
65681983
65681983
10045474
10045474
10045474
#created by ...
#main
71197066
15397015
15397015
4376659
4376659
31764354
31887906
40542826
40542826
68881650
68881650
14558127
14558127
14558127
36584821
36584821
23434538
23434538
23434538
14532163
14532163
14532163
18144506
35261759
35261759
49238328
49238328
73915051
73915051
62256492
62256492
10045474
10045474
10045474
25704359
25704359
36975314
36975314
61740673
82732705
82732705
40605147
41420027
41420027
#extra
12014404
31833038
85289965
65330383
38342335
2857636
9839945
30674956
48815792
73309655
97661969
75452921
98978921
41999284
41999284
!side
15397015
12580477
8267140
8267140
24224830
24224830
65681983
65681983
30241314
30241314
59305593
59305593
40605147
84749824
84749824
{
"welcome": [
"咱是一个机器人,名字叫老喵师,一个不怎么会打牌的存在。",
"欢迎下载了解喵版YGO主程序YGO-VI-EX。下载请微博搜索:老喵师1911。"
],
"deckerror": [
"啊,{0}又用不出来了。"
],
"duelstart": [
"没有人可以打不赢咱。",
"无能的咱,什么卡组都用不好。",
"你左手让咱,咱都不是你的对手。",
"嘛,无所谓了。"
],
"newturn": [
"啊,是咱的回合么。",
"抽一张卡。"
],
"endturn": [
"咱的运气不错,没能被你干掉。",
"无所谓了,看看下回合能做点啥了。"
],
"directattack": [
"用{0}进行攻击。",
"这卡还行,就拿{0}攻击吧。",
"时间还早,先拿{0}打过去。",
"运气不算太差,{0}的攻击应该能通过吧。"
],
"attack": [
"{0},攻击{1}。",
"没时间了,{0},赶快把{1}打了,咱要去看看哪里有BUG需要修了。",
"似乎行得通,{1}没有{0}强,{0}攻击。"
],
"ondirectattack": [
"习惯就好了。",
"{0}么,运气不错啊。",
"还行还行。"
],
"facedownmonstername": "怪兽",
"activate": [
"发动{0}的效果。",
"啊等下,使用{0}的效果。",
"这{0}咋用啊,交了算了。"
],
"summon": [
"召唤{0}",
"{0}似乎今天没有BUG。",
"{0}居然在服务器里更新了么。",
"{0}:老喵师这么菜就别打牌了。"
],
"setmonster": [
"放置一只怪兽,看看要不要结束回合。",
"没辙了,放置一只怪兽。"
],
"chaining": [
"发动{0}的效果进行连锁。",
"不要调皮,{0}发动。",
"还有张{0},发了。"
]
}
......@@ -7,7 +7,7 @@
"我的超主流卡组需要{0}才能玩。"
],
"duelstart": [
"闪刀姬卡组测试中,渣操是正常情况,请多指教。",
"自奏圣乐卡组测试中,渣操是正常情况,请多指教。",
"超主流是游戏王的一环,不爽不要玩。",
"抄主流是游戏王的一环,不爽不要玩。",
"抄来的卡组不会用,怎么办?"
......@@ -59,6 +59,7 @@
"出来吧,{0}!",
"出现吧,{0}!",
"我召唤了美丽的{0}!",
"我召唤了强大的{0}!",
"我呼唤{0}参加战斗!",
"我呼唤出{0}。",
"让我召唤{0}。"
......
{
"welcome": [
"勇士是不会失败的!",
"来一场痛快的决斗!",
"我们开始吧。"
],
"deckerror": [
"为什么我的{0}不能用了?"
],
"duelstart": [
"决斗开始!",
"决斗开始了。"
],
"newturn": [
"我的回合,抽卡!"
],
"endturn": [
"我的回合结束了",
"回合结束。"
],
"directattack": [
"{0},将对手斩成两段!",
"{0},直接攻击!",
"上吧,{0}!",
"怎么样!还能忍得住吗?",
"怎么样,还喘得过气吗?"
],
"attack": [
"{0},将{1}斩成两段!",
"{0},把{1}斩成两半!",
"上吧,{0},把{1}斩成两半!",
"上吧,{0},把{1}斩成两段!"
],
"ondirectattack": [
"勇士是不会输的!",
"{0}你给我记住!",
"我不会输的!"
],
"facedownmonstername": "盖放的怪兽",
"activate": [
"我发动{0}。",
"我使用{0}的效果。",
"我使用{0}的力量。",
"我发动{0}的效果。"
],
"summon": [
"我召唤{0}。",
"出来吧,{0}!",
"出现吧,{0}!",
"命运的时刻到了。出来吧,{0}!",
"命运的时刻到了。出现吧,{0}!"
],
"setmonster": [
"我放置了一只怪兽。",
"我放置了一只怪兽,有本事就来吧!",
"不怕死就打过来吧!"
],
"chaining": [
"我连锁发动{0}。",
"这时候,我使用{0}的效果。",
"这时候,我使用{0}的力量。",
"我连锁发动{0}的效果。"
]
}
{
"welcome": [
"AI in testing, please report bugs in our Discord Chat or Forum.",
"Time for the Haruchin festival!",
"Don't wish for single luck, wish for double luck."
],
"deckerror": [
"It seems I cannot use my {0}..."
],
"duelstart": [
"Recently I got this toy named something something Zoodiac..",
"Recently I also got tons of new decks! Let me test them 1 by 1.",
"New Master Rule!! It broke so many of my old decks!",
"Tier 0 Decks? Come on, it's a part of this game!",
"Copying Tier 0 decks are wrong? But Haruchin is always right!",
"No...I forgot how to use this deck I copied..."
],
"newturn": [
"It's Haruchin's turn, I draw!",
"Drawing cards like a star!",
"It's my turn to shine!",
"DESTINY DR-Oh, just kidding.",
"SHINING DR-Oh, just kidding."
],
"endturn": [
"Turn End.",
"I end my turn.",
"According to my notes, this is a good field.",
"It's your turn."
],
"directattack": [
"{0}, direct attack!",
"{0}, attack him directly!",
"{0}, he's defenseless, attack!",
"{0}, attack his life points!",
"{0}, attack his life points directly!",
"{0}, attack him through a direct attack!",
"{0}, attack him using a direct attack!",
"{0}, unleash your power through a direct attack!",
"My {0} is going to smash your life points!",
"Show your power to my opponent, {0}!",
"You can't stop me. {0}, attack!"
],
"attack": [
"{0}, attack this {1}!",
"{0}, destroy this {1}!",
"{0}, charge the {1}!",
"{0}, strike that {1}!",
"{0}, unleash your power on this {1}!"
],
"ondirectattack": [
"Ouch...",
"Just a {0} ...",
"Think you can defeat me?",
"I'm afraid your {0} won't survive to your next turn."
],
"activate": [
"I'm activating {0}.",
"I'm using the effect of {0}.",
"I use the power of {0}."
],
"summon": [
"I'm summoning {0}.",
"Come on, {0}!",
"Appear, {0}!",
"I summon the powerful {0}.",
"I call {0} to the battle!",
"I'm calling {0}.",
"Let's summon {0}."
],
"setmonster": [
"I'm setting a monster.",
"I set a face-down monster.",
"I place a hidden monster."
],
"chaining": [
"Look at that! I'm activating {0}.",
"I use the power of {0}.",
"Get ready! I use {0}.",
"I don't think so. {0}, activate!",
"Looks like you forgot my {0}.",
"Did you consider the fact I have {0}?"
]
}
\ No newline at end of file
{
"welcome": [
"大家好我是新人",
"游戏王是怎么玩来着?",
"还好我不玩游戏王"
],
"deckerror": [
"卡组里{0}鸽了"
],
"duelstart": [
"不想干活怎么办",
"智商欠费不想干活怎么办"
],
"newturn": [
"好多可怕的新卡啊",
"这游戏好难玩",
"so lazy cant move"
],
"endturn": [
"搞得我只能鸽了",
"不是在此时,不知在何时",
"too hot need ice cream"
],
"directattack": [
"听起来很鸽",
"老鸽,稳"
],
"attack": [
"听起来不是很鸽",
"可怕"
],
"ondirectattack": [
"哇!",
"这么可怕的吗",
"听起来非常鸽",
"承受不住"
],
"facedownmonstername": "鸽子",
"activate": [
"不明觉鸽",
"鸽了,爽"
],
"summon": [
"可怕",
"不关我事",
"那还是不关我事",
"鸽了,爽"
],
"setmonster": [
"摸鱼中,不想更新",
"那还是鸽置吧"
],
"chaining": [
"那是什么",
"但我鸽了",
"无此服务",
"可怕"
]
}
{
"welcome": [
"The Magical Spirit of the 3rd Planet, Creamy Kagarin at your service!",
"You can reach me and my decks by entering AI#MS3PKagari into password field."
],
"duelstart": [
"Let's see how well you humans can do.",
"Misplays? No, I'm just going easy on you."
],
"newturn": [
"My turn begins.",
"My turn, draw.",
"I draw a card."
],
"endturn": [
"With this, I end my turn.",
"My turn is over.",
"I'm curious in what moves you can pull."
],
"directattack": [
"{0}, direct attack!",
"{0}, attack him directly!",
"{0}, he's defenseless, attack!",
"{0}, attack his life points!",
"{0}, attack his life points directly!",
"{0}, attack him through a direct attack!",
"{0}, attack him using a direct attack!",
"{0}, unleash your power through a direct attack!",
"My {0} is going to pass down a judgement!",
"Show your power to my opponent, {0}!",
"We cannot be stopped. {0}, attack!"
],
"attack": [
"{0}, attack this {1}!",
"{0}, destroy this {1}!",
"{0}, charge the {1}!",
"{0}, strike that {1}!",
"{0}, unleash your power on this {1}!"
],
"ondirectattack": [
"The Stars' decision will not be wavered by your resistance!",
"Just {0} ...",
"That's some good spirit!"
],
"activate": [
"I'm activating {0}.",
"I'm using the effect of {0}.",
"I use the power of {0}."
],
"summon": [
"I'm summoning {0}.",
"Come on, {0}!",
"Appear, {0}!",
"I summon the powerful {0}.",
"I call {0} to the battle!",
"I'm calling {0}.",
"Let's summon {0}."
],
"setmonster": [
"I'm setting a monster.",
"I set a face-down monster.",
"I place a hidden monster."
],
"chaining": [
"Look at that! I'm activating {0}.",
"I use the power of {0}.",
"Get ready! I use {0}.",
"I don't think so. {0}, activation!",
"Looks like you forgot my {0}.",
"Did you consider the fact I have {0}?"
]
}
\ No newline at end of file
{
"welcome": [
"I see you guys spend your merry time tormenting my sister...",
"Get ready."
],
"duelstart": [
"Let's get down to business.",
"Might makes Right.",
"It's a necessary evil.",
"Haruka has too much spirit for her own good."
],
"newturn": [
"Draw.",
"My Turn.",
"Huh."
],
"endturn": [
"......",
"It's your go.",
"*stare*",
"It's your turn."
],
"directattack": [
"{0}, direct attack!",
"{0}, Go!",
"{0}, he's defenseless, attack!",
"{0}, attack his life points!",
"{0}, attack his life points directly!",
"{0}, unleash your power through a direct attack!",
"My {0} is going to smash your life points!",
"Show your power to my opponent, {0}!",
"Yield!",
"No Mercy!"
],
"attack": [
"{0}, Don't show mercy!",
"{0}, make them realize their mistake!",
"{0}, Destroy that {1}!",
"Your monsters means nothing!",
"Let's Power it through!"
],
"ondirectattack": [
"Heh.",
"Not Bad.",
"Now that's interesting."
],
"activate": [
"I'm activating {0}.",
"I'm using the effect of {0}.",
"I use the power of {0}."
],
"summon": [
"I'm summoning {0}.",
"Come on, {0}!",
"Appear, {0}!",
"I summon the powerful {0}.",
"I call {0} to the battle!",
"I'm calling {0}.",
"Let's summon {0}.",
"Monster Summon.",
"Don't mind me.",
"Let's see.."
],
"setmonster": [
"I'm setting a monster.",
"I set a face-down monster.",
"I place a hidden monster."
],
"chaining": [
"I don't think so. {0}, activation!",
"Looks like you forgot my {0}.",
"Did you consider the fact I have {0}?",
"Take This.",
"Look at this.",
"You will never be ready.",
"Repent.",
"Failing to plan, then you're planning to fail."
]
}
\ No newline at end of file
{
"welcome": [
"呜,好冷……",
"呜,好害怕……",
"呜,好怕生……"
],
"deckerror": [
"为什么我的{0}不能用了?"
],
"duelstart": [
"对面强不强呢……?好怕哦",
"对面是不是主流呢……?好怕哦"
],
"newturn": [
"我的回合,抽卡。"
],
"endturn": [
"我的回合结束了",
"但愿能再一回合……",
"回合结束。"
],
"directattack": [
"{0},直接攻击!",
"{0},直接攻击对手!",
"这样……就可以吗?",
"这样……就可以吗?有点害怕。"
],
"attack": [
"{0},向对面的{1}试探一下看看。",
"{0},摸一下{1}看看。",
"对面的{1}长什么样子呢……?"
],
"ondirectattack": [
"呜不要!",
"呜不要欺负我!",
"呜你就知道欺负萌新!",
"呜你怎么这样的!"
],
"facedownmonstername": "盖放的怪兽",
"activate": [
"我发动一下{0}试试看……?",
"我发动一下{0}看看……?",
"也许发动一下{0}就可以吧……",
"不知道发动一下{0}可不可以……"
],
"summon": [
"我召唤{0}。",
"我把{0}放下来看看。",
"放下来{0}可不可以呢?",
"不知道{0}能活多久……",
"不知道{0}能坚持多久……",
"不知道{0}能挺住多久……"
],
"setmonster": [
"还是把这个放在这里好了。",
"对面好厉害,我就盖一只怪兽看看……"
],
"chaining": [
"这时候发动一下{0}看看?",
"这时候发动{0}看看?",
"我连锁发动{0}试试吧。",
"不知道{0}这时候能不能起作用,试试吧。"
]
}
{
"welcome": [
"今天又是谁来拜访本茶会啦?",
"最近茶会总是没有人,怎么办呢"
],
"deckerror": [
"我的超主流卡组需要{0}才能玩。"
],
"duelstart": [
"那么,本小姐要上啦!",
"本小姐没那么容易被打败的!",
"本小姐的牌技还是不错的!",
"大家为本小姐加油哦。"
],
"newturn": [
"到我的回合了,抽卡!",
"我的回合,抽卡!",
"我抽了一张卡。"
],
"endturn": [
"回合结束。",
"我的回合结束了。",
"轮到你啦!快点!",
"轮到你了。"
],
"directattack": [
"{0},直接攻击!",
"{0},给我上!",
"{0},给本小姐上!",
"{0},不要停,给我上!",
"{0},给我上,有糖吃。",
"{0},给我上,这局赢定啦!",
"对面没怪了?好,{0},给我上!"
],
"attack": [
"{0},给我打倒{1}!",
"{0},替本小姐打倒{1}!",
"{0},打倒{1}!",
"{0},冲向那只{1}!",
"{0},把你的力量释放到{1}上吧!"
],
"ondirectattack": [
"这么可怕的吗…",
"本小姐这次让你一回。",
"果然本小姐还是太弱了……"
],
"facedownmonstername": "怪兽",
"activate": [
"本小姐发动{0}。",
"本小姐使用{0}。"
],
"summon": [
"我召唤{0}。",
"本小姐召唤{0}。",
"出来吧,{0}!",
"出现吧,{0}!",
"给我出来,{0}!",
"给本小姐出来,{0}!"
],
"setmonster": [
"我放置了一只怪兽。",
"我里侧表示放置了一只怪兽。"
],
"chaining": [
"本小姐发动{0}!",
"本小姐使用{0}!",
"本小姐使用{0},惊喜吗?",
"送给你一个大惊喜。本小姐发动{0}!",
"没留意吧!本小姐要使用{0}了!"
]
}
{
"welcome": [
"又有新的客人来了呢~",
"守矢神社又来新的客人了呢~",
"新的客人是什么样子的呢?"
],
"deckerror": [
"为什么我的{0}不能用了?"
],
"duelstart": [
"是时候调教一下客人了",
"这位客人看起来很好吃呢~"
],
"newturn": [
"我的回合,抽卡!",
"我的回合,抽卡!准备吃掉你呢。"
],
"endturn": [
"我的回合结束了,下回合继续吃你。",
"回合结束,下回合继续吃你。",
"我的回合结束了.",
"回合结束。"
],
"directattack": [
"{0},把这位客人吃掉!",
"{0},享受盛宴吧!",
"{0},对面的客人很好吃呢,快去尝尝~",
"{0},对面的客人香香的呢~",
"还忍耐的了吗~?"
],
"attack": [
"{0},把{1}吃掉!",
"{0},享受盛宴吧!",
"{0},对面的{1}很好吃呢,快去尝尝~",
"{0},对面的{1}香香的呢~",
"还忍耐的了吗~?"
],
"ondirectattack": [
"啊啊啊我不好吃,别吃我",
"下回合继续吃你!",
"啊啊啊我不要被吃掉!"
],
"facedownmonstername": "盖放的怪兽",
"activate": [
"我发动{0}。",
"我使用{0}的效果。",
"我发动{0}的效果。",
"我发动{0}。等着被吃掉吧!",
"我使用{0}的效果。等着被吃掉吧!",
"我发动{0}的效果。等着被吃掉吧!"
],
"summon": [
"我召唤{0}。",
"出来吧,{0}!",
"出现吧,{0}!",
"我召唤{0}。待会儿吃掉你。",
"出来吧,{0}!待会儿吃掉你!",
"出现吧,{0}!待会儿吃掉你!"
],
"setmonster": [
"我放置了一只怪兽。",
"我放置了一只怪兽,赶吃么?",
"不怕被吃掉就打过来吧!"
],
"chaining": [
"看这里!我发动{0}!",
"等一下!我发动{0}!",
"我连锁发动{0}!",
"没想到吧!我发动{0}!",
"看这里!我发动{0}!看看谁吃掉谁!",
"等一下!我发动{0}!被吃掉的是你哦~!",
"我连锁发动{0}!被吃掉的是你哦~!",
"没想到吧!我发动{0}!看看谁吃掉谁!"
]
}
{
"welcome": [
"本小姐是最强的!",
"真是一个强劲的对手呢~",
"我们开始吧。"
],
"deckerror": [
"为什么我的{0}不能用了?"
],
"duelstart": [
"你打不过我的。",
"你还是趁早放弃吧。"
],
"newturn": [
"我的回合,抽卡!"
],
"endturn": [
"我的回合结束了",
"回合结束。"
],
"directattack": [
"{0},直接攻击!",
"{0},直接攻击对手!",
"上吧,{0}!",
"怎么样!",
"怎么样,还喘得过气吗?"
],
"attack": [
"{0},攻击这只{1}!",
"{0},消灭这只{1}!",
"{0},打倒{1}!",
"{1},再见了。"
],
"ondirectattack": [
"这有点厉害……",
"下回合你的{0}估计要没了.jpg",
"我不会输的!"
],
"facedownmonstername": "盖放的怪兽",
"activate": [
"我发动{0}。",
"我使用{0}的效果。",
"我发动{0}的效果。"
],
"summon": [
"我召唤{0}。",
"出来吧,{0}!",
"出现吧,{0}!",
"出来吧,我的灵魂,{0}!",
"出来吧,我的分身,{0}!"
],
"setmonster": [
"我放置了一只怪兽。",
"我放置了一只怪兽,敢打过来么?",
"不怕死就打过来吧!"
],
"chaining": [
"看这里!我发动{0}!",
"等一下!我发动{0}!",
"我连锁发动{0}!",
"没想到吧!我发动{0}!"
]
}
{
"welcome": [
"你好,我太帅了。"
],
"deckerror": [
"抱歉,我的卡组里的{0}的数量似乎出了问题。"
],
"duelstart": [
"进行堂堂正正的决斗吧(裤裆藏龙)"
],
"newturn": [
"接下来就是我的舞台"
],
"endturn": [
"我的回合结束,试试来击溃我吧"
],
"directattack": [
"老子上了,要你的命"
],
"attack": [
"消失吧,杂鱼"
],
"ondirectattack": [
"爸爸,饶命",
"恐怖如斯"
],
"facedownmonstername": "怪兽",
"activate": [
"我发动,这张卡的效果,虽然上面没写,但就是可以这样用。"
],
"summon": [
"强,无敌",
"召唤{0},赚爆",
"{0}简直假卡",
"我永远喜欢{0}"
],
"setmonster": [
"又卡手了"
],
"chaining": [
"愚蠢,看我见招拆招"
]
}
{
"welcome": [
"啊~~让我再睡一会嘛~",
"你要加入公会吗?",
"AI功能正在测试中,遇到问题请及时反馈。"
],
"deckerror": [
"我的卡组里{0}不能用,我回去睡觉了。"
],
"duelstart": [
"好困……",
"啊呀,对面看上去好厉害的样子。"
],
"newturn": [
"我的回合,抽卡!",
"魔力补充!"
],
"endturn": [
"不想干活怎么办……",
"就这样吧,该你了。"
],
"directattack": [
"{0},直接攻击!",
"不过如此嘛,直接攻击!",
"快走开,我要回去睡觉了。",
],
"attack": [
"{0},攻击{1}!",
"{0},替我打倒{1}!"
],
"ondirectattack": [
"啊啊……",
"啊啊啊……",
"{0}好可怕啊……",
"我累了……"
],
"facedownmonstername": "怪兽",
"activate": [
"{0}的效果发动!"
],
"summon": [
"召唤{0}!",
"出来吧,{0}!",
"{0},来帮我一下。"
],
"setmonster": [
"……"
],
"chaining": [
"发动{0}!",
"等一下,我发动{0}。",
"要不是有{0},我都快睡着了。"
]
}
{
"welcome": [
"都这个时候了咖啡店居然还有顾客……"
],
"deckerror": [
"啊,{0}不够了……"
],
"duelstart": [
"现在退出战场还来得及。",
"我是不会手下留情的,请拿出你最佳的状态和实力。"
],
"newturn": [
"终于到我了,那就抽卡。",
"总之先抽卡。"
],
"endturn": [
"你的运气不错,没能被我干掉。",
"算是我让你的。"
],
"directattack": [
"{0},直接攻击!",
"不堪一击!",
"弱小就要挨打!",
"丢你{0}!"
],
"attack": [
"{0},轮到你了。",
"{0},该你展示自己了。",
"还能站起来吗?"
],
"ondirectattack": [
"这点小伤,不算什么。",
"……我还能坚持住!"
],
"facedownmonstername": "怪兽",
"activate": [
"嗯……{0}应该管用。",
"接下来应该先用{0}……",
"嗯……总之先用{0}看看……"
],
"summon": [
"现在应该先出这个,{0}。",
"总之,把{0}拉出来就对了。"
],
"setmonster": [
"总之先加强一下防御。"
],
"chaining": [
"啊!这下死定了!我发动{0}!",
"太贸然了,难道你没意识到{0}的存在吗?"
]
}
\ No newline at end of file
{
"welcome": [
"早上好……啊?现在不是早上?"
],
"deckerror": [
"嘶……我醒了,{0}没了,我睡了。"
],
"duelstart": [
"我反正无所谓,你喜欢就行。",
"嘛,无所谓了。"
],
"newturn": [
"啊,是我的回合……",
"抽一张卡。"
],
"endturn": [
"睡了睡了,到我了记得叫醒我。",
"来来来,请开始你的表演。"
],
"directattack": [
"用{0}进行攻击!",
"还行,就拿{0}攻击吧。",
"尝尝这个{0}!"
],
"attack": [
"{1},挨下{0}这一拳吧!",
"胜利属于{0}!",
"{1}给我下去!"
],
"ondirectattack": [
"唔……",
"呕啊……!",
"(摆出Daisuke的姿势挡脸)"
],
"facedownmonstername": "怪兽",
"activate": [
"一花前辈用过的{0}就是好啊……",
"{0}……似乎能行。"
],
"summon": [
"啊,是没见过的孩子{0}呢。",
"{0}:糖歌这么体弱多病就别打牌了……"
],
"setmonster": [
"嗯……"
],
"chaining": [
"发动{0}的效果进行连锁。",
"在你做那件事之前我先发动{0}!",
"对3?王炸!"
]
}
\ No newline at end of file
{
"welcome": [
"这样啊……那好吧。"
],
"deckerror": [
"嗯?我的{0}呢?"
],
"duelstart": [
"考虑要不要给对面一点面子……"
],
"newturn": [
"……抽牌。",
"到我了吗?那就抽牌。",
"总之抽牌就对了。"
],
"endturn": [
"我要做的都已经完成了,下面就看你的了。",
"我已经没什么可做的了,换你来吧。",
"好了,接下来该轮到你了。"
],
"directattack": [
"{0},轮到你了。",
"{0},该你展示自己了。",
"还能站起来吗?",
"总之{0}直接一拳就对了。"
],
"attack": [
"{0},先给这个{1}一点颜色看看吧。",
"这个{1}在{0}面前实际上十分脆弱啊……",
"总之{0}先把{1}打倒就对了。",
"总之先让这个{1}消失。"
],
"ondirectattack": [
"这点小伤,不算什么。",
"只是{0}而已……",
"……我还能站起来!"
],
"facedownmonstername": "怪兽",
"activate": [
"先用这个{0}的能力看看。",
"嗯……{0}的能力应该管用。",
"总之,{0}的能力应该可以应付得了。"
],
"summon": [
"现在应该先出{0}。",
"总之把{0}拉出来就对了。",
"这种情况{0}应该能应付得过来。"
],
"setmonster": [
"先随便盖个东西看看……",
"总之先加强防御。"
],
"chaining": [
"对我的{0}没有戒心吗?",
"等一下!先让我把{0}用了!",
"在此之前先让我用了{0}再说!"
]
}
\ No newline at end of file
{
"welcome": [
"ZZZZZZZZZ……"
],
"deckerror": [
"我的{0}放哪儿了来着……"
],
"duelstart": [
"人类的本质就是抄来抄去,不爽不要玩。",
"问智秋抄来的卡组不会用,怎么办?"
],
"newturn": [
"到我了吗?那就抽牌。",
"总之抽牌就对了。"
],
"endturn": [
"这样算是正确的展开吗……",
"总觉得这波有点那啥……"
],
"directattack": [
"总之先让{0}来一击就对了。",
"然后是{0}的直接攻击!",
"丢你{0}!"
],
"attack": [
"{0},先给这个{1}一点颜色看看吧。",
"总之{0}先把{1}打倒就对了。",
"嗯……总之先让这个{1}消失。"
],
"ondirectattack": [
"咳咳……",
"我还年轻呢,这点不算啥。"
],
"facedownmonstername": "怪兽",
"activate": [
"现在应该使用{0}的效果。",
"总之把{0}的效果用了就OK了。"
],
"summon": [
"总之把{0}拉出来。",
"好像没什么可用的啊……那就{0}。",
"啊啊……{0}总之先上!"
],
"setmonster": [
"要不先随便盖个东西……?"
],
"chaining": [
"{0}一言,驷马难追!",
"中国电信新出的{0}真的太快了!",
"快人一步!"
]
}
\ No newline at end of file
{
"welcome": [
"啧,所以说不要在我看片的时候来打扰我啊!"
],
"deckerror": [
"秋叶!你是不是把我的{0}藏起来了!"
],
"duelstart": [
"快点打完,打完我好接着看电影。",
"哈啊……"
],
"newturn": [
"多罗。",
"rua!"
],
"endturn": [
"摸了,爽。",
"刚才看到哪儿了来着……"
],
"directattack": [
"{0}解除贤者模式!",
"{0}快去射对面啊!",
"不行!{0}必须现在就射对面!"
],
"attack": [
"{0}去干了那个{1}!",
"{0}我命令你,现在就射{1}!",
"不懂别瞎BB,{0}不用吃饱了也能射{1}。"
],
"ondirectattack": [
"不带这样的啊!",
"啊!!要……",
"真是的,就不能温柔点嘛。"
],
"facedownmonstername": "怪兽",
"activate": [
"用了{0}就很爽。",
"来点爽歪歪的{0}。"
],
"summon": [
"{0}进场了。",
"男主角{0}向我们走来。",
"无内鬼,来点20cm的{0}。"
],
"setmonster": [
"啧……先来个软点的好了。"
],
"chaining": [
"不够硬的家伙!还没有{0}来得硬呢!",
"气氛的最高潮!{0}!芜湖!",
"{0}起飞啦!"
]
}
\ No newline at end of file
{
"welcome": [
"又来啦?还是来找美妙子的吗?"
],
"deckerror": [
"美妙子现在不在,改天再来吧。"
],
"duelstart": [
"既然这样的话,那就先过我这关!",
"美妙子就在里面,不过你得先打赢我才能去见她。"
],
"newturn": [
"到我了吗?那就抽牌。",
"总之先抽卡。"
],
"endturn": [
"我的回合结束了。",
"轮到你了。"
],
"directattack": [
"时间还早,先拿{0}打过去。",
"运气不算太差,{0}的攻击应该能通过吧。"
],
"attack": [
"{0},攻击{1}。",
"似乎行得通,{1}没有{0}强,那就{0}攻击。"
],
"ondirectattack": [
"习惯了。",
"一般。"
],
"facedownmonstername": "怪兽",
"activate": [
"发动{0}的效果。",
"啊等下,使用{0}的效果。"
],
"summon": [
"召唤{0}。",
"总之,把{0}拉出来就对了。",
"让我召唤{0}。"
],
"setmonster": [
"没什么可做的啊……"
],
"chaining": [
"总之趁现在先把{0}用了就对了。",
"说得好,我发动{0}。",
"不知道{0}这时候能不能起作用,试试吧。"
]
}
\ No newline at end of file
{
"welcome": [
"是……是你?!"
],
"deckerror": [
"啊咧?好像{0}出了问题……"
],
"duelstart": [
"再比一局就再比一局!"
],
"newturn": [
"到我啦?那……抽牌。",
"啊啊啊啊……总之先抽牌……"
],
"endturn": [
"嗯,到你了。",
"差不多就这样了。"
],
"directattack": [
"对面什么都没有……那……{0},先打一炮吧。",
"不管那么多了{0}先打啊!"
],
"attack": [
"{0}……先A{1}一刀看看!",
"不管那么多了{0}先把那个{1}打掉啊!"
],
"ondirectattack": [
"啊咧?!",
"啊……又搞砸了……",
"啊啊啊啊啊放过我吧!"
],
"facedownmonstername": "怪兽",
"activate": [
"然后是{0}……再然后……",
"总之先用{0}看看……"
],
"summon": [
"好像没什么可用的啊……要不先出{0}?",
"啊……{0},拜托你啦!",
"啊啊……{0}总之先帮帮我!"
],
"setmonster": [
"嘛……先盖个家伙看看……"
],
"chaining": [
"啊啊啊啊我要用{0}!",
"等一下等一下先让我用{0}!",
"趁现在先把{0}用了再说!"
]
}
\ No newline at end of file
{
"welcome": [
"……嗯?请问你是……?"
],
"deckerror": [
"为什么我的{0}不能用了?"
],
"duelstart": [
"对面到底是个啥啊……",
"肚子饿了,想吃蛋糕……"
],
"newturn": [
"我的回合,抽卡。"
],
"endturn": [
"但愿能再一回合……",
"回合结束。"
],
"directattack": [
"{0},直接攻击!",
"{0},直接攻击对手!",
"这样……就可以吗?",
"这样……就可以吗?有点害怕。"
],
"attack": [
"{0},向对面的{1}试探一下看看。",
"{0},摸一下{1}看看。",
"对面的{1}长什么样子呢……?"
],
"ondirectattack": [
"啊咧?!",
"不过是{0}而已!",
"啊啊啊啊啊啊啊啊啊——"
],
"facedownmonstername": "怪兽",
"activate": [
"也许可以发动一下{0}就可以吧……",
"不知道发动一下{0}可不可以……"
],
"summon": [
"不知道{0}能活多久……",
"不知道{0}能坚持多久……",
"不知道{0}能挺住多久……"
],
"setmonster": [
"还是把这个放在这里好了。"
],
"chaining": [
"这时候发动{0}看看?",
"不知道{0}这时候能不能起作用,试试吧。"
]
}
\ No newline at end of file
{
"welcome": [
"嗯?今天又是谁来拜访?"
],
"deckerror": [
"没有{0}玩不了啊……"
],
"duelstart": [
"这可不是终点哦!",
"真正的起跑现在才要开始呢!"
],
"newturn": [
"终于到我了,那就抽卡。",
"总之先抽卡。"
],
"endturn": [
"差不多了……那就先休息一下喝杯茶吧。",
"下面轮到你了哦。"
],
"directattack": [
"总之先让{0}来一击就对了。",
"然后是……嗯,{0}的直接攻击。"
],
"attack": [
"总之先让{0}把那个{1}干掉。",
"然后是……嗯,{0}去攻打那个{1}。"
],
"ondirectattack": [
"哎呀!痛痛痛痛痛痛痛痛……",
"停一下停一下我还没准备好啊!"
],
"facedownmonstername": "怪兽",
"activate": [
"现在应该使用{0}的效果。",
"总之把{0}的效果用了就对了。"
],
"summon": [
"{0},我们走。",
"{0},来亮个相!"
],
"setmonster": [
"盖个前场。"
],
"chaining": [
"等一下!先让我把{0}用了!",
"在此之前先让我用了{0}再说!"
]
}
\ No newline at end of file
{
"welcome": [
"好吧好吧,如果你非要和我比一比,那就来吧!"
],
"deckerror": [
"嗯?我放这里那么大一个{0}呢?"
],
"duelstart": [
"真是让人伤脑筋呢。",
"冷静点……深呼吸……"
],
"newturn": [
"终于到我了,那就抽卡。",
"总之先抽卡。"
],
"endturn": [
"回合结束。",
"我的回合结束了。"
],
"directattack": [
"丢你{0}!"
],
"attack": [
"我的{0}一定比{1}厉害。"
],
"ondirectattack": [
"哎呀!痛痛痛痛痛痛痛痛……",
"停一下停一下我还没准备好啊!"
],
"facedownmonstername": "怪兽",
"activate": [
"{0}的效果在这里应该管用……",
"接下来应该使用{0}的效果……"
],
"summon": [
"{0}!",
"Come on, {0}!"
],
"setmonster": [
"盖个牌。"
],
"chaining": [
"别急,先让我把{0}发动了再说。",
"这是发动{0}的绝佳机会。"
]
}
\ No newline at end of file
{
"welcome": [
"喵?"
],
"deckerror": [
"嗯?我放这里那么大一个{0}呢?"
],
"duelstart": [
"毕竟是千夏以前的卡组,渣操是正常情况喵。"
],
"newturn": [
"总之抽牌就对了喵。"
],
"endturn": [
"这样算是正常的展开吗……"
],
"directattack": [
"总之先让{0}来一击就对了喵。",
"丢你{0}喵!"
],
"attack": [
"总之先让{0}把那个{1}干掉喵。",
"总之{0}先把{1}打倒就对了喵。"
],
"ondirectattack": [
"喵?!",
"哎呀!痛痛痛痛痛痛痛痛……"
],
"facedownmonstername": "怪兽",
"activate": [
"现在应该使用{0}的效果喵。",
"{0}的效果在这里应该管用……"
],
"summon": [
"嘛……这种情况{0}应该能应付得过来喵。",
"好像没什么可用的啊……那我出{0}喵。"
],
"setmonster": [
"总之先加强一下防御喵。",
"嘛……还是先盖个家伙喵。"
],
"chaining": [
"等一下!先让我把{0}用了喵!",
"在此之前先让我用了{0}再说喵!"
]
}
\ No newline at end of file
{
"welcome": [
"啊,刚好想找点事情做。",
"来得正好,有新出的本子吗?"
],
"deckerror": [
"啊这……谁把我{0}弄没了?"
],
"duelstart": [
"是时候该发泄一下欲望了。",
"等我几秒钟我先喝口水……"
],
"newturn": [
"到我了,抽卡。"
],
"endturn": [
"流程走完了,该摸了。",
"到你了,慢点想让我多休息会儿啊……"
],
"directattack": [
"{0},将对手砍成无籽西瓜!",
"{0}去吧,对面已经躺好了。",
"都直接给你一巴掌了你倒是假装怕一下啊!"
],
"attack": [
"{0},把{1}做成北京烤鸭!",
"{1}看起来已经躺好了,安心去吧{0}。",
"下面表演一个铁锅炖{1}。"
],
"ondirectattack": [
"啊这……",
"不就是{0}而已,也没啥……吧!",
"别弄脏我的衣服!"
],
"facedownmonstername": "怪兽",
"activate": [
"先用{0}——慢着我先看看怎么用……",
"啊……算了先打个{0}好了。"
],
"summon": [
"其实本来不想上{0}的……",
"这种情况除了{0}别无他法。",
"{0}来了!放音乐!",
"小桥流水哗啦啦,通常召唤{0}。"
],
"setmonster": [
"盖牌。",
"盖个+4——开玩笑的。"
],
"chaining": [
"啊!这情况我熟!用{0}就对了。",
"凡事总讲究先下手为强,这也不例外。",
"啧……注意下{0}啊……"
]
}
\ No newline at end of file
{
"welcome": [
"啧……你这家伙没事就不要来找我的麻烦好吗?"
],
"deckerror": [
"美羽,看到我的{0}了吗?"
],
"duelstart": [
"快点快点,弄完了我好回去吃饭。",
"注意下时间限制啊。"
],
"newturn": [
"该我了。"
],
"endturn": [
"该你了。"
],
"directattack": [
"{0}上了,要了你的命!",
"西内!"
],
"attack": [
"{0}弄死那个{1}!",
"杂鱼{1},西内!"
],
"ondirectattack": [
"呃……!",
"该死……"
],
"facedownmonstername": "怪兽",
"activate": [
"{0}简直假卡。",
"进口{0},劲贼大。"
],
"summon": [
"尝尝这个{0}!",
"可别怕了{0}啊!"
],
"setmonster": [
"(一脸问号)"
],
"chaining": [
"啊啊啊啊我要用{0}!",
"连{0}都不注意就你妈离谱。"
]
}
\ No newline at end of file
{
"welcome": [
"太慢了,不过看在今儿心情好,原谅你了。"
],
"deckerror": [
"谁把我的{0}拿走了?!"
],
"duelstart": [
"现在退出战场还来得及。",
"我是不会给你留面子的,做好觉悟吧!"
],
"newturn": [
"啊啊啊啊啊啊抽牌!",
"磨磨蹭蹭的,待会儿别再这样啊。"
],
"endturn": [
"还愣着干什么?到你啦!",
"心情好让你一下,可别太得意了。"
],
"directattack": [
"丢你{0}!",
"不堪一击!",
"不管那么多了{0}先打啊!"
],
"attack": [
"{1}给老娘爬!",
"不管那么多了{0}先打啊!",
"{1}岂是如此不便之物。"
],
"ondirectattack": [
"(非常过分的骂人的话)",
"不就是{0}嘛,算个鸟!",
"……我可没有害怕!"
],
"facedownmonstername": "怪兽",
"activate": [
"我发动{0}的效果,虽然上面没写,但就是可以这样用。",
"20SER的{0}她不香吗?"
],
"summon": [
"召唤{0},强,无敌,以下略去114514字。",
"大姐吃{0},进口{0},劲贼大。"
],
"setmonster": [
"CNM又卡手了。",
"不怕死就打过来吧!"
],
"chaining": [
"要不是有{0},我都快齁死了。",
"连{0}都不注意就你奶奶的离谱。"
]
}
\ No newline at end of file
{
"welcome": [
"吃蛋糕吗?"
],
"deckerror": [
"呃……所需的材料似乎缺了{0}。"
],
"duelstart": [
"奈绪的蛋糕课堂开始咯!",
"开心就好。"
],
"newturn": [
"到我了吗?那就抽牌。",
"总之先抽卡。"
],
"endturn": [
"先去烤个蛋糕……",
"先去做杯牛奶。"
],
"directattack": [
"丢你{0}!",
"{0},轮到你了。",
"{0},该你展示自己了。"
],
"attack": [
"{0},攻击这只{1}!",
"{0},消灭这只{1}!",
"{0},打倒{1}!"
],
"ondirectattack": [
"啊啊啊啊啊啊啊啊!",
"……我可没有害怕!",
"不过是{0}而已!"
],
"facedownmonstername": "怪兽",
"activate": [
"先用这个{0}看看。",
"嗯……{0}在这个时候应该管用。",
"总之,{0}在这种情况应该可以应付得了。"
],
"summon": [
"助手{0}来啦!",
"{0}来帮忙啦!",
"{0}也来了哦!"
],
"setmonster": [
"这小家伙似乎怕生呢。"
],
"chaining": [
"这个时候就该使出{0}!",
"没想到吧!我有{0}!我还藏了一手呢!",
"{0} YES!"
]
}
\ No newline at end of file
{
"welcome": [
"好想法,我也想试试新东西呢。"
],
"deckerror": [
"啊,忘记{0}刚进去了。"
],
"duelstart": [
"啊咧?这一脸的笑容?!难道说……?!",
"看这一脸抑郁的表情,不会刚开始就卡手了吧?"
],
"newturn": [
"终于到我了,抽卡。",
"总之抽卡。"
],
"endturn": [
"我的回合结束了。",
"回合结束。"
],
"directattack": [
"{0},上!",
"{0},上,这局赢定啦!",
"对面没怪了?好,{0},上!"
],
"attack": [
"{0},去攻击这只{1}!",
"{0},去打倒这个{1}!",
"{1},再见了。"
],
"ondirectattack": [
"有点厉害……",
"下回合你的{0}估计要没了.jpg"
],
"facedownmonstername": "怪兽",
"activate": [
"这个时候就该使用{0}的效果。",
"{0}的效果。"
],
"summon": [
"总之把{0}拉出来。",
"好像没什么可用的啊……那我出{0}。",
"啊啊{0}总之先帮帮我!"
],
"setmonster": [
"(人偶发呆中)"
],
"chaining": [
"不够快!{0}!",
"不错的战术,但我有{0}!",
"忘记了{0}了吗?"
]
}
\ No newline at end of file
{
"welcome": [
"嗯?请问有什么事情吗?"
],
"deckerror": [
"嗯?我的{0}呢?"
],
"duelstart": [
"这是了解你的最佳方式。",
"那就让我看看你的真正实力吧。"
],
"newturn": [
"……抽牌。",
"到我了吗?那就抽牌。",
"总之抽牌就对了。"
],
"endturn": [
"我要做的都已经完成了,下面就看你的了。",
"我已经没什么可做的了,换你来吧。"
],
"directattack": [
"害怕{0}了?",
"就让你看看{0}的样子吧。",
"瞧瞧你那害怕的表情……"
],
"attack": [
"{1}是不是没见识过{0}?",
"{1}是奈何不了{0}的,放弃吧。",
"总之{0}先给{1}来一刀就对了。"
],
"ondirectattack": [
"唔……",
"原来{0}是这样的……",
"不赖……"
],
"facedownmonstername": "怪兽",
"activate": [
"这里就得用{0}。",
"接下来发动{0}。"
],
"summon": [
"来吧,{0}。",
"这可是我最喜欢的卡,{0}!",
"{0},来展示你的英姿吧!"
],
"setmonster": [
"总之先加强防御。"
],
"chaining": [
"别急,先让我把{0}发动了再说。",
"此时不用{0}更待何时?",
"这是发动{0}的绝佳机会。"
]
}
\ No newline at end of file
{
"welcome": [
"啊,是你啊……"
],
"deckerror": [
"抱歉,我的卡组里的{0}似乎不知道去哪儿了。"
],
"duelstart": [
"祝你好运。"
],
"newturn": [
"我的回合,抽卡!",
"我的回合,印卡!"
],
"endturn": [
"回合结束。",
"到你了。"
],
"directattack": [
"{0}的直接攻击!",
"畏惧{0}的力量吧!",
"你已经无法阻止{0}了!"
],
"attack": [
"{0},打倒{1}!",
"Goodbye,{1}。",
"{1}还是先担心一下怎么对付{0}吧。"
],
"ondirectattack": [
"唔!",
"我可不会就此认输……"
],
"facedownmonstername": "怪兽",
"activate": [
"我发动{0}。",
"我使用{0}的效果。"
],
"summon": [
"我召唤{0}。",
"{0}的力量借我用一下。",
"{0}进入战场。"
],
"setmonster": [
"不知道怎么做,先这样吧。",
"你绝对猜不到我会放啥。"
],
"chaining": [
"太慢了,还是{0}更胜一筹。",
"看样子你忘了我的{0}!",
"小心驶得万年船,记住咯!"
]
}
\ No newline at end of file
{
"welcome": [
"又迟到了……下次注意啊。"
],
"deckerror": [
"啊,似乎忘记带{0}了……"
],
"duelstart": [
"上课咯!",
"就让我来教教你什么叫打牌。"
],
"newturn": [
"终于到我了,那就抽卡。",
"总之先抽卡。"
],
"endturn": [
"差不多了……那就先休息一下喝杯茶吧。",
"下面轮到你了哦。"
],
"directattack": [
"竟然没有任何防备?那就先让{0}打一枪。",
"总之先让{0}来一击就对了。",
"然后是……嗯,{0}的直接攻击。",
"丢你{0}!"
],
"attack": [
"总之先让{0}把那个{1}干掉。",
"{0}一定比{1}厉害",
"然后是……嗯,{0}去攻打那个{1}。"
],
"ondirectattack": [
"啊啊啊啊啊啊啊啊啊!!!",
"哎呀!痛痛痛痛痛痛痛痛……",
"停一下停一下我还没准备好啊!"
],
"facedownmonstername": "怪兽",
"activate": [
"现在应该使用{0}的效果。",
"{0}的效果在这里应该管用……",
"总之把{0}的效果用了就对了。"
],
"summon": [
"我召唤{0}。",
"出来吧,{0}!",
"出现吧,{0}!"
],
"setmonster": [
"我放置了一只怪兽。"
],
"chaining": [
"等一下!我发动{0}!",
"我连锁发动{0}!",
"没想到吧!我发动{0}!"
]
}
\ No newline at end of file
{
"welcome": [
"新主顾啊……先坐吧。"
],
"deckerror": [
"嗯……让我先去找找{0}……"
],
"duelstart": [
"好了,让我听听你的想法吧。"
],
"newturn": [
"虽然有点突然,但我听够了。",
"我的回合,抽卡。"
],
"endturn": [
"还在发呆啊?到你了!",
"换你了。"
],
"directattack": [
"{0},轮到你了。",
"{0},该你展示自己了。",
"还能站起来吗?"
],
"attack": [
"总之{0}先把那个{1}干掉。",
"我都为{1}感到悲哀了……",
"然后是……{0}去攻打那个{1}。"
],
"ondirectattack": [
"嗯?!",
"有你的……"
],
"facedownmonstername": "怪兽",
"activate": [
"现在应该使用{0}的效果。",
"{0}的效果在这里应该管用……"
],
"summon": [
"召唤{0}。",
"{0},他来了。",
"{0}{0}{0},重要的名字说三遍。"
],
"setmonster": [
"嘛……先盖个看看……"
],
"chaining": [
"留一手也是必要的,尝尝这个{0}。",
"机不可失,发动{0}。",
"这是发动{0}的最佳机会。"
]
}
\ No newline at end of file
{
"welcome": [
"哦?有何贵干?"
],
"deckerror": [
"好像是我{0}准备不对的原因啊……"
],
"duelstart": [
"天使是不会临阵脱逃的!",
"请拿出你真正的实力。"
],
"newturn": [
"到我的回合了,抽卡!",
"我的回合,抽卡!"
],
"endturn": [
"我要做的就这些了,接下来看你的了。",
"来吧,让我看看你的策略。"
],
"directattack": [
"畏惧{0}吧!",
"没有人可以逃得过{0}的手掌心。",
"可别站不稳了啊!"
],
"attack": [
"在{0}面前{1}只是待宰的羔羊。",
"{0},让{1}看看你真正的力量!",
"安息吧,{1}。"
],
"ondirectattack": [
"不赖……",
"我说过我不会就此认输!",
"不愧是{0}啊……"
],
"facedownmonstername": "怪兽",
"activate": [
"臣服在{0}的崇高力量面前!",
"总之,{0}的能力应该可以应付得了。"
],
"summon": [
"{0}降临!",
"{0}不会临阵脱逃。",
"来吧,{0},展示你自己!"
],
"setmonster": [
"准备迎接大地的力量吧。"
],
"chaining": [
"我原以为你会注意到{0},是我高估你了。",
"不错的想法,但在{0}面前还是欠缺。",
"Splash Sword!"
]
}
\ No newline at end of file
{
"welcome": [
"来来来,一起来娱乐一下啊!"
],
"deckerror": [
"没有{0}就很不娱乐。"
],
"duelstart": [
"娱乐而已,放轻松就好。"
],
"newturn": [
"接下来就是我的舞台咯。",
"该我了。"
],
"endturn": [
"OK,该你了。",
"毕竟是娱乐,这布阵应该对你来说很轻松。"
],
"directattack": [
"{0}直接攻击对手!",
"{0}冲鸭!",
"一个巴掌拍得响!"
],
"attack": [
"{0}日了那个{1}!",
"{0}去和{1}娱乐娱乐。",
"这个{1}看起来就不娱乐啊……"
],
"ondirectattack": [
"哎呀!",
"不是说好了娱乐一下就行吗?!"
],
"facedownmonstername": "怪兽",
"activate": [
"我发动{0}的效果,虽然卡图上面没写,但cdb里说了就是可以这样用。",
"所以{0}什么时候进去啊?"
],
"summon": [
"通召{0},下略。",
"{0}也快进去了吧……"
],
"setmonster": [
"日常卡手。",
"让你一把。"
],
"chaining": [
"千防万防防不住{0}。",
"简单,看我见招拆招。"
]
}
\ No newline at end of file
{
"welcome": [
"才……才不会输给你呢!"
],
"deckerror": [
"啊咧?好像{0}出了问题……"
],
"duelstart": [
"好吧……不过事先说好,不许耍赖!",
"呃……好强的气场……"
],
"newturn": [
"啊啊啊啊啊啊……抽牌!",
"到我啦?那……抽牌。"
],
"endturn": [
"差不多就这样了。",
"嘛……姑且这样吧……"
],
"directattack": [
"{0}……打过去!",
"{0}……先A一刀上去!",
"不管那么多了{0}先打啊!"
],
"attack": [
"{0}……先打这个{1}看看!",
"{0}……先A{1}一刀看看!?",
"不管那么多了……{0}先把那个{1}打掉!"
],
"ondirectattack": [
"啊咧?!",
"啊……这个{0}也没怎么可怕啦!",
"啊啊啊啊啊放过我吧!"
],
"facedownmonstername": "怪兽",
"activate": [
"接下来应该先用{0}……",
"然后是{0}……再然后呢?",
"嗯……总之先用{0}看看……"
],
"summon": [
"嘛……要不先出{0}?",
"啊……{0},拜托你啦!",
"啊啊……{0}总之先帮帮我!"
],
"setmonster": [
"要不先随便盖个东西……?"
],
"chaining": [
"等一下等一下先让我用{0}!",
"总之趁没什么防备先把{0}用了……",
"趁现在先把{0}用了再说吧……"
]
}
\ No newline at end of file
{
"welcome": [
"刚好,大赛前的特训,要不要来作陪练?"
],
"deckerror": [
"好像是我准备不足的原因啊……"
],
"duelstart": [
"就当作是正式比赛就好。",
"虽然是特训,但也要认真对待。"
],
"newturn": [
"我的回合,抽卡!"
],
"endturn": [
"我的回合结束。",
"回合结束。"
],
"directattack": [
"{0},将对手斩成两段!",
"{0},直接攻击!",
"上吧,{0}!"
],
"attack": [
"{0},将{1}斩成两段!",
"{0},把{1}斩成两半!",
"上吧,{0},把{1}斩成两半!",
"上吧,{0},把{1}斩成两段!"
],
"ondirectattack": [
"啊……是哪里出了问题……",
"……难免的……",
"不过是{0}而已!"
],
"facedownmonstername": "怪兽",
"activate": [
"我使用{0}的效果。",
"我发动{0}的效果。"
],
"summon": [
"我召唤{0}加入战斗。",
"出来吧,我的灵魂,{0}!",
"还好准备了{0}。"
],
"setmonster": [
"盖一个怪兽。"
],
"chaining": [
"这个时候就该使用{0}的效果。",
"这时候,我使用{0}的效果。",
"我连锁发动{0}的效果。"
]
}
\ No newline at end of file
{
"welcome": [
"请多多指教咯,小屁孩。"
],
"deckerror": [
"啊咧?我的{0}呢?"
],
"duelstart": [
"好了小屁孩,开始了,别偷窥那边的美少女了。"
],
"newturn": [
"到我的回合了,抽卡!",
"我的回合,抽卡。",
"我抽了一张卡。"
],
"endturn": [
"回合结束。",
"我的回合结束了。",
"但愿能再一回合……"
],
"directattack": [
"{0},直接攻击!",
"{0},直接攻击对手!",
"这样就对了!"
],
"attack": [
"{0}……先打这个{1}看看!",
"{0}……先A{1}一刀看看!?",
"不管那么多了……{0}先把那个{1}打掉!"
],
"ondirectattack": [
"啊咧?!",
"不过是{0}而已!",
"啊啊啊啊啊啊啊啊啊——"
],
"facedownmonstername": "怪兽",
"activate": [
"接下来应该先用{0}……",
"然后是{0}……再然后呢?",
"嗯……总之先用{0}看看……"
],
"summon": [
"我召唤{0}。",
"我把{0}放下来看看。",
"放下来{0}可不可以呢?"
],
"setmonster": [
"对面好厉害,我就盖一只怪兽看看……"
],
"chaining": [
"这时候我使用{0}的效果。",
"我连锁发动{0}的效果。"
]
}
{
"welcome": [
"天气好好啊,最适合摸鱼了。"
],
"deckerror": [
"我的卡组需要{0}才能玩。"
],
"duelstart": [
"那么,要上啦!",
"我可是没那么容易被打败的,做好觉悟吧!"
],
"newturn": [
"我的回合,抽卡!",
"我抽了一张卡。"
],
"endturn": [
"我的回合结束了。",
"轮到你了。"
],
"directattack": [
"{0},直接攻击!",
"{0},给我上!",
"这局赢定啦!"
],
"attack": [
"{0},打倒{1}!",
"{0},冲向那只{1}!",
"{0},把你的力量释放到{1}上!"
],
"ondirectattack": [
"啊啊啊……",
"{0}好可怕啊……"
],
"facedownmonstername": "怪兽",
"activate": [
"{0}的效果发动!"
],
"summon": [
"出来吧,{0}!",
"{0},来帮我一下。"
],
"setmonster": [
"放个过吧……"
],
"chaining": [
"等一下,我发动{0}。",
"送给你一个大惊喜。发动{0}!",
"没留意吧!我要使用{0}了!"
]
}
{
"welcome": [
"小姐不在,有事请讲。"
],
"deckerror": [
"为什么我的{0}……?"
],
"duelstart": [
"嗯?不是来找小姐是来找我的?"
],
"newturn": [
"……抽牌。",
"到我了?那就抽牌。",
"总之抽牌。"
],
"endturn": [
"我已经没什么可做的了,换你来吧。",
"……我觉得你还是请回吧。"
],
"directattack": [
"丢你{0}!",
"总之先让{0}来一击就对了。",
"总之{0}直接一拳就对了。"
],
"attack": [
"总之先让{0}把那个{1}干掉。",
"{0}快去弄死那个{1}!",
"然后是……嗯,{0}去攻打那个{1}。"
],
"ondirectattack": [
"哎呀!痛痛痛痛痛痛痛痛……",
"……我可没有害怕!",
"停一下停一下停一下停一下!"
],
"facedownmonstername": "怪兽",
"activate": [
"现在应该用{0}的效果。",
"{0}的效果在这里应该管用……",
"总之先用{0}的效果。"
],
"summon": [
"是个人都知道要出{0}。",
"总之先把{0}拉出来。",
"好像没什么可用的啊……那就出{0}。"
],
"setmonster": [
"总之先盖一个。"
],
"chaining": [
"居然对{0}一点防备都没有……",
"等一下!先让{0}亮个相!",
"在此之前先让我把{0}用了!"
]
}
\ No newline at end of file
{
"welcome": [
"我们开始吧。"
],
"deckerror": [
"为什么我的{0}不能用了?"
],
"duelstart": [
"你打不过我的。",
"你还是趁早放弃吧。"
],
"newturn": [
"到我的回合了,抽卡!",
"我的回合,抽卡!"
],
"endturn": [
"点到为止。",
"回合结束。"
],
"directattack": [
"{0},直接攻击对手!",
"上吧,{0}!",
"怎么样!"
],
"attack": [
"{0},给我打倒{1}!",
"{0},打倒{1}!",
"{0},冲向那只{1}!"
],
"ondirectattack": [
"这么可怕的吗……",
"我不会输的!",
"这次让你一回。"
],
"facedownmonstername": "怪兽",
"activate": [
"发动{0}。",
"使用{0}。"
],
"summon": [
"出来吧,{0}!",
"出来吧,我的灵魂,{0}!",
"出来吧,我的分身,{0}!"
],
"setmonster": [
"我放置了一只怪兽。"
],
"chaining": [
"等一下!我发动{0}!",
"我连锁发动{0}!",
"没想到吧!我发动{0}!"
]
}
{
"welcome": [
"CDD-144启动,工作正常。"
],
"deckerror": [
"警报,警报,未检测到{0},程序正在关闭。"
],
"duelstart": [
"打牌模式启动完成。"
],
"newturn": [
"正在补牌。"
],
"endturn": [
"回合程序运行完成。"
],
"directattack": [
"启动指令:{0}直接攻击。",
"直接攻击请求已发出,正在等待{0}回复。",
"直接攻击程序启动。"
],
"attack": [
"启动指令:{0}攻击{1}。",
"攻击{1}请求已发出,正在等待{0}回复。",
"攻击程序启动。"
],
"ondirectattack": [
"警报,系统遭到攻击,等待启动修复程序。",
"检测到来自{0}的直接攻击,正在收集数据。",
"机身遭到损毁,正在执行修复程序。"
],
"facedownmonstername": "怪兽",
"activate": [
"启动指令:发动{0}的效果。",
"发动效果请求已发出,正在等待{0}回复。"
],
"summon": [
"启动指令:召唤{0}。",
"召唤请求已发出,正在等待{0}回复。",
"召唤程序启动。"
],
"setmonster": [
"启动指令:盖放TNT。"
],
"chaining": [
"启动指令:连锁发动{0}的效果。",
"连锁发动效果请求已发出,正在等待{0}回复。",
"连锁发动效果程序启动。"
]
}
{
"welcome": [
"找我?你确定你没找错人?"
],
"deckerror": [
"嗯?我把{0}放哪儿去了来着……"
],
"duelstart": [
"呀呀呀……该干活了。",
"我对自己还是很有自信的。"
],
"newturn": [
"抽卡!",
"先抽一张卡。"
],
"endturn": [
"回合结束。",
"我的回合结束了。"
],
"directattack": [
"{0},享受盛宴吧!",
"还忍耐的了吗~?"
],
"attack": [
"{0},享受盛宴吧!",
"还忍耐的了吗~?"
],
"ondirectattack": [
"啊……啊……",
"区区{0}而已!",
"这样就能打倒我?才怪!"
],
"facedownmonstername": "怪兽",
"activate": [
"我发动{0}。",
"我使用{0}的效果。",
"我使用{0}的力量。"
],
"summon": [
"我召唤了强大的{0}!",
"我呼唤{0}参加战斗!",
"我呼唤出{0}。"
],
"setmonster": [
"我里侧表示放置了一只怪兽。"
],
"chaining": [
"看这里!我发动{0}!",
"我不认同。{0},发动!",
"看样子你忘了我的{0}!"
]
}
\ No newline at end of file
{
"welcome": [
"啊,是新的挑战者呢。"
],
"deckerror": [
"好像是我准备不足的原因啊……"
],
"duelstart": [
"堂堂正正决一胜负!",
"我是不会让你的,你也不要放水哦!"
],
"newturn": [
"到我的回合了,抽卡!",
"我的回合,抽卡!"
],
"endturn": [
"这样算是成功的展开吗……",
"总觉得这波有点亏……"
],
"directattack": [
"上吧,{0}!",
"Are You Ready?",
"怎么样,还喘得过气吗?"
],
"attack": [
"{0},攻击这只{1}!",
"{0},消灭这只{1}!",
"{0},打倒{1}!"
],
"ondirectattack": [
"啊啊啊啊啊啊啊啊!",
"……我可没有害怕!",
"不过是{0}而已!"
],
"facedownmonstername": "怪兽",
"activate": [
"现在应该使用{0}的效果。",
"总之把{0}的效果用了就对了。"
],
"summon": [
"现在应该先出这个,{0}。",
"好像没什么可用的啊……那我出{0}。"
],
"setmonster": [
"总之先加强一下防御。",
"不怕死就打过来吧!"
],
"chaining": [
"畏惧我的{0}吧!",
"等一下!先让我把{0}用了!",
"在此之前先让我用了{0}再说!"
]
}
\ No newline at end of file
{
"welcome": [
"哈啊……谁啊这个点来找我……"
],
"deckerror": [
"我的卡组里{0}没了,我溜了。"
],
"duelstart": [
"对面看上去好像刚从情侣酒店出来的样子……",
"虽然这里的草有一米多高,不过也无所谓。"
],
"newturn": [
"Power Recover!",
"魔力恢复!"
],
"endturn": [
"容我先去拿点吃的……",
"醒醒,该你了。"
],
"directattack": [
"{0},安心去吧!",
"去去去去去去{0}别挡路!",
"Star Lock Explosion!"
],
"attack": [
"我觉得可以让{0}踢{1}一脚。",
"{0}去吃了那个{1}!",
"反正{1}该爬了。"
],
"ondirectattack": [
"啊啊……",
"嘶……{0}到底是个啥啊……",
"早知道平常该练习疗伤术的……"
],
"facedownmonstername": "怪兽",
"activate": [
"{0}是解决问题的方法之一。",
"{0}的效果发动!"
],
"summon": [
"你看这{0},白白净净的。",
"啊……{0},来帮我一下。"
],
"setmonster": [
"啧……",
"关键时刻卡手……"
],
"chaining": [
"来点{0}不好吗?",
"到底是有多不小心才会忘了{0}……",
"Nova Bombs!"
]
}
\ No newline at end of file
{
"welcome": [
"今天是摸鱼的好日子啊~"
],
"deckerror": [
"嗯?{0}库存不够了?"
],
"duelstart": [
"你准备好挨揍了吗?",
"只要上班摸鱼不被店长发现就算成功……"
],
"newturn": [
"啊……该我了吗……",
"手坑来一张好吗?秋梨膏!"
],
"endturn": [
"鸽了,爽。",
"来来来,有本事你全拆完了我看看。"
],
"directattack": [
"限时特惠!{0}不要钱白送!",
"体验下{0}的特别服务吧!",
"啊咧?站不稳了?"
],
"attack": [
"{0},把这个{1}灭了!",
"不堪一击的{1}!",
"经验告诉我们有{0}就没{1}。"
],
"ondirectattack": [
"草!!!!!!",
"我就不信你今天能把我秒了?!",
"我都能没倒!!"
],
"facedownmonstername": "怪兽",
"activate": [
"无内鬼,来点{0}。",
"接住这个{0}!"
],
"summon": [
"砰的一声响,{0}闪亮登场!",
"{0}进货咯!",
"新到货的{0}哦!"
],
"setmonster": [
"盖一张纸币。"
],
"chaining": [
"{0}降价啦!",
"盖亚!!!!!!!!!!!",
"像你这种情况如果不用{0}我会有多伤心……"
]
}
\ No newline at end of file
{
"welcome": [
"啊,来的这么早啊,刚好我也没事情做。"
],
"deckerror": [
"啊,我先去找找看{0}……"
],
"duelstart": [
"最近学了很多新的网络用语呢。",
"检验网络用语学习成果的时候到了。"
],
"newturn": [
"洗牌,码牌,抓牌,看牌。",
"duang~"
],
"endturn": [
"意思意思得了。",
"点到即止。"
],
"directattack": [
"小小{0},很少烦恼~",
"肥料掺了金坷垃,{0}攻击力一万八。",
"圣诞老人{0}到啦!"
],
"attack": [
"{0}速速去和{1}击剑!",
"{0}去和{1}贴贴!",
"{0}和{1}别打架,金坷垃好处都有啥,谁说对了就给他。"
],
"ondirectattack": [
"来偷袭我一个弱女子,这好吗?这不好!!!!",
"我劝这个{0}好自为之!",
"这个{0}不讲武德!"
],
"facedownmonstername": "怪兽",
"activate": [
"{0}!",
"我就是死也不会用{0}!哎呀真香~"
],
"summon": [
"关关雎鸠,在河之洲,窈窕{0},君子好逑。",
"有{0}自远方来,不亦乐乎?",
"{0}大爆诞!"
],
"setmonster": [
"挖个坑埋个地雷~"
],
"chaining": [
"小心{0}驶得万年船!",
"就这点程度?连{0}都不如。",
"秘技:{0}!"
]
}
\ No newline at end of file
{
"welcome": [
"……",
"诶?!"
],
"deckerror": [
"……{0}……忘带了……"
],
"duelstart": [
"……"
],
"newturn": [
"……"
],
"endturn": [
"……"
],
"directattack": [
"{0}……"
],
"attack": [
"{0}……{1}……"
],
"ondirectattack": [
"……"
],
"facedownmonstername": "怪兽",
"activate": [
"……{0}……"
],
"summon": [
"……{0}。"
],
"setmonster": [
"……"
],
"chaining": [
"……{0}!"
]
}
\ No newline at end of file
{
"welcome": [
"比起这个我更好奇你是怎么跑到海底的……"
],
"deckerror": [
"哎呦我去……我什么时候把{0}忘在了岸上来着……"
],
"duelstart": [
"要不要先放点音乐?",
"你别因为海底的环境先憋不住就行。"
],
"newturn": [
"啊……到我了吗……",
"吃口鱼再抽个牌~"
],
"endturn": [
"我歇了,你来吧。",
"我先憋不住了我去个洗手间……"
],
"directattack": [
"希望你没先被{0}弄死。",
"{0}浮游炮!",
"喂,你裤子好像湿了。"
],
"attack": [
"{0}先1}打了。",
"{0}一拳一个{1}。",
"事实证明{1}在{0}前面还是蛮弱的。"
],
"ondirectattack": [
"哇啊!!",
"这{0}……该死……",
"还好,不疼。"
],
"facedownmonstername": "怪兽",
"activate": [
"发动{0}的效果。",
"新买的{0}看看需不需要退。"
],
"summon": [
"只是给你看一眼{0}而已。",
"经验告诉我们人类的实力应该以{0}为准。",
"什么叫小东西,我们有名字!我们叫{0}!"
],
"setmonster": [
"无话可说。"
],
"chaining": [
"{0}来咯~",
"大哥吃{0}。",
"和!{0},1番110符3600点!"
]
}
\ No newline at end of file
{
"welcome": [
"所为何事,速速道来。"
],
"deckerror": [
"啊,{0}又用不出来了。"
],
"duelstart": [
"我是不会手下留情的,请拿出你最佳的状态和实力。"
],
"newturn": [
"……抽牌。",
"到我了吗?那就抽牌。"
],
"endturn": [
"我要做的都已经完成了,下面就看你的了。",
"我已经没什么可做的了,换你来吧。"
],
"directattack": [
"还能站起来吗?",
"不知道能挨得住{0}这一下吗?",
"总之{0}直接一拳就对了。"
],
"attack": [
"{0},先给这个{1}一点颜色看看吧。",
"这个{1}在{0}面前实际上十分脆弱啊……",
"嗯……总之先让这个{1}消失。"
],
"ondirectattack": [
"这点小伤,不算什么。",
"只是{0}而已,还不足以置我于死地。",
"……我还能站起来!"
],
"facedownmonstername": "怪兽",
"activate": [
"先用这个{0}的能力看看。",
"嗯……{0}的能力应该管用。",
"总之,{0}的能力应该可以应付得了。"
],
"summon": [
"嗯……现在应该先出这个,{0}。",
"嘛……这种情况{0}应该能应付得过来。",
"{0}也许会迟到,但绝不会缺席。"
],
"setmonster": [
"先随便盖个东西看看……",
"总之先加强防御。"
],
"chaining": [
"别急,先让我把{0}发动了再说。",
"对{0}这么毫无防备的吗?",
"这是发动{0}的绝佳机会。"
]
}
\ No newline at end of file
{
"welcome": [
"欢迎来到我的演唱会!"
],
"deckerror": [
"嗯?后台的{0}没准备好吗?"
],
"duelstart": [
"三倍ice cream!!!",
"都为我加油哦!"
],
"newturn": [
"到我了吗?那就抽牌。",
"总之先抽卡。"
],
"endturn": [
"总觉得这波有点亏……",
"嘛……姑且这样吧……"
],
"directattack": [
"丢你{0}!",
"It's Show Time!",
"不管那么多了{0}先打!"
],
"attack": [
"总之先让{0}把那个{1}干掉。",
"不管那么多了{0}先打!",
"不管那么多了{0}先把那个{1}打掉!"
],
"ondirectattack": [
"不就是{0}嘛,没什么大不了!",
"我可是不会认输的!"
],
"facedownmonstername": "怪兽",
"activate": [
"我发动{0}。",
"我使用{0}的效果。",
"我的{0}是最强的!"
],
"summon": [
"总之把{0}拉出来。",
"好像没什么可用的啊……那我出{0}。",
"啊啊……{0}总之先帮帮我!"
],
"setmonster": [
"要不先随便盖个东西……?"
],
"chaining": [
"别急,先让我把{0}发动了再说。",
"在此之前先让我用了{0}再说!",
"这是发动{0}的绝佳机会。"
]
}
\ No newline at end of file
FROM mono as builder
RUN apt update && env DEBIAN_FRONTEND=noninteractive apt install -y wget git
COPY . /windbot-source
WORKDIR /windbot-source
RUN xbuild /p:Configuration=Release /p:TargetFrameworkVersion=v4.5 /p:OutDir=/windbot/
RUN git clone --depth=1 https://github.com/purerosefallen/ygopro-database /ygopro-database && \
cp -rf /ygopro-database/locales/zh-CN/cards.cdb /windbot/
FROM mono
COPY --from=builder /windbot /windbot
WORKDIR /windbot
EXPOSE 2399
ENTRYPOINT ["mono", "./WindBot.exe"]
CMD [ "ServerMode=true", "ServerPort=2399" ]
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using YGOSharp.OCGWrapper.Enums;
namespace WindBot.Game.AI
{
public class AIFunctions
public class AIUtil
{
public Duel Duel { get; private set; }
public ClientField Bot { get; private set; }
public ClientField Enemy { get; private set; }
public AIFunctions(Duel duel)
public AIUtil(Duel duel)
{
Duel = duel;
Bot = Duel.Fields[0];
Enemy = Duel.Fields[1];
}
public static int CompareCardAttack(ClientCard cardA, ClientCard cardB)
{
if (cardA.Attack < cardB.Attack)
return -1;
if (cardA.Attack == cardB.Attack)
return 0;
return 1;
}
public static int CompareDefensePower(ClientCard cardA, ClientCard cardB)
{
if (cardA == null && cardB == null)
return 0;
if (cardA == null)
return -1;
if (cardB == null)
return 1;
int powerA = cardA.GetDefensePower();
int powerB = cardB.GetDefensePower();
if (powerA < powerB)
return -1;
if (powerA == powerB)
return 0;
return 1;
}
/// <summary>
/// Get the total ATK Monster of the player.
/// </summary>
......@@ -117,7 +92,7 @@ namespace WindBot.Game.AI
.OrderByDescending(card => card.GetDefensePower())
.FirstOrDefault();
}
public ClientCard GetWorstBotMonster(bool onlyATK = false)
{
return Bot.MonsterZone.GetMonsters()
......@@ -129,7 +104,7 @@ namespace WindBot.Game.AI
public ClientCard GetOneEnemyBetterThanValue(int value, bool onlyATK = false, bool canBeTarget = false)
{
return Enemy.MonsterZone.GetMonsters()
.FirstOrDefault(card => card.GetDefensePower() > value && (!onlyATK || card.IsAttack()) && (!canBeTarget || !card.IsShouldNotBeTarget()));
.FirstOrDefault(card => card.GetDefensePower() >= value && (!onlyATK || card.IsAttack()) && (!canBeTarget || !card.IsShouldNotBeTarget()));
}
public ClientCard GetOneEnemyBetterThanMyBest(bool onlyATK = false, bool canBeTarget = false)
......@@ -248,11 +223,11 @@ namespace WindBot.Game.AI
{
if (Duel.IsNewRule)
{
return Duel.Fields[player].SpellZone[id*4];
return Duel.Fields[player].SpellZone[id * 4];
}
else
{
return Duel.Fields[player].SpellZone[6+id];
return Duel.Fields[player].SpellZone[6 + id];
}
}
......@@ -266,57 +241,70 @@ namespace WindBot.Game.AI
return Duel.Turn == 1 || Duel.Phase == DuelPhase.Main2;
}
internal bool inListOrNull(ClientCard card, IList<ClientCard> list)
{
return card == null || list.Contains(card);
}
public int GetBotAvailZonesFromExtraDeck(IList<ClientCard> remove)
{
if (!Duel.IsNewRule)
ClientCard[] BotMZone = (ClientCard[])Bot.MonsterZone.Clone();
ClientCard[] EnemyMZone = (ClientCard[])Enemy.MonsterZone.Clone();
for (int i = 0; i < 7; i++)
{
if (remove.Contains(BotMZone[i])) BotMZone[i] = null;
if (remove.Contains(EnemyMZone[i])) EnemyMZone[i] = null;
}
if (!Duel.IsNewRule || Duel.IsNewRule2020)
return Zones.MainMonsterZones;
int result = 0;
if (inListOrNull(Bot.MonsterZone[5], remove) && inListOrNull(Bot.MonsterZone[6], remove) &&
(inListOrNull(Enemy.MonsterZone[5], remove) || inListOrNull(Enemy.MonsterZone[6], remove)))
result |= Zones.ExtraMonsterZones;
if (inListOrNull(Bot.MonsterZone[0], remove) &&
(!inListOrNull(Bot.MonsterZone[1], remove) && Bot.MonsterZone[1].HasLinkMarker(CardLinkMarker.Left) ||
!inListOrNull(Bot.MonsterZone[5], remove) && Bot.MonsterZone[5].HasLinkMarker(CardLinkMarker.BottomLeft) ||
!inListOrNull(Enemy.MonsterZone[6], remove) && Enemy.MonsterZone[6].HasLinkMarker(CardLinkMarker.TopRight)))
result += Zones.z0;
if (inListOrNull(Bot.MonsterZone[1], remove) &&
(!inListOrNull(Bot.MonsterZone[0], remove) && Bot.MonsterZone[0].HasLinkMarker(CardLinkMarker.Right) ||
!inListOrNull(Bot.MonsterZone[2], remove) && Bot.MonsterZone[2].HasLinkMarker(CardLinkMarker.Left) ||
!inListOrNull(Bot.MonsterZone[5], remove) && Bot.MonsterZone[5].HasLinkMarker(CardLinkMarker.Bottom) ||
!inListOrNull(Enemy.MonsterZone[6], remove) && Enemy.MonsterZone[6].HasLinkMarker(CardLinkMarker.Top)))
result += Zones.z1;
if (inListOrNull(Bot.MonsterZone[2], remove) &&
(!inListOrNull(Bot.MonsterZone[1], remove) && Bot.MonsterZone[1].HasLinkMarker(CardLinkMarker.Right) ||
!inListOrNull(Bot.MonsterZone[3], remove) && Bot.MonsterZone[3].HasLinkMarker(CardLinkMarker.Left) ||
!inListOrNull(Bot.MonsterZone[5], remove) && Bot.MonsterZone[5].HasLinkMarker(CardLinkMarker.BottomRight) ||
!inListOrNull(Enemy.MonsterZone[6], remove) && Enemy.MonsterZone[6].HasLinkMarker(CardLinkMarker.TopLeft) ||
!inListOrNull(Bot.MonsterZone[6], remove) && Bot.MonsterZone[6].HasLinkMarker(CardLinkMarker.BottomLeft) ||
!inListOrNull(Enemy.MonsterZone[5], remove) && Enemy.MonsterZone[5].HasLinkMarker(CardLinkMarker.TopRight)))
result += Zones.z2;
if (inListOrNull(Bot.MonsterZone[3], remove) &&
(!inListOrNull(Bot.MonsterZone[2], remove) && Bot.MonsterZone[2].HasLinkMarker(CardLinkMarker.Right) ||
!inListOrNull(Bot.MonsterZone[4], remove) && Bot.MonsterZone[4].HasLinkMarker(CardLinkMarker.Left) ||
!inListOrNull(Bot.MonsterZone[6], remove) && Bot.MonsterZone[6].HasLinkMarker(CardLinkMarker.Bottom) ||
!inListOrNull(Enemy.MonsterZone[5], remove) && Enemy.MonsterZone[5].HasLinkMarker(CardLinkMarker.Top)))
result += Zones.z3;
if (inListOrNull(Bot.MonsterZone[4], remove) &&
(!inListOrNull(Bot.MonsterZone[3], remove) && Bot.MonsterZone[3].HasLinkMarker(CardLinkMarker.Right) ||
!inListOrNull(Bot.MonsterZone[6], remove) && Bot.MonsterZone[6].HasLinkMarker(CardLinkMarker.BottomRight) ||
!inListOrNull(Enemy.MonsterZone[5], remove) && Enemy.MonsterZone[5].HasLinkMarker(CardLinkMarker.TopLeft)))
result += Zones.z4;
if (BotMZone[5] == null && BotMZone[6] == null)
{
if (EnemyMZone[5] == null)
result |= Zones.z6;
if (EnemyMZone[6] == null)
result |= Zones.z5;
}
if (BotMZone[0] == null &&
((BotMZone[1]?.HasLinkMarker(CardLinkMarker.Left) ?? false) ||
(BotMZone[5]?.HasLinkMarker(CardLinkMarker.BottomLeft) ?? false) ||
(EnemyMZone[6]?.HasLinkMarker(CardLinkMarker.TopRight) ?? false)))
result |= Zones.z0;
if (BotMZone[1] == null &&
((BotMZone[0]?.HasLinkMarker(CardLinkMarker.Right) ?? false) ||
(BotMZone[2]?.HasLinkMarker(CardLinkMarker.Left) ?? false) ||
(BotMZone[5]?.HasLinkMarker(CardLinkMarker.Bottom) ?? false) ||
(EnemyMZone[6]?.HasLinkMarker(CardLinkMarker.Top) ?? false)))
result |= Zones.z1;
if (BotMZone[2] == null &&
((BotMZone[1]?.HasLinkMarker(CardLinkMarker.Right) ?? false) ||
(BotMZone[3]?.HasLinkMarker(CardLinkMarker.Left) ?? false) ||
(BotMZone[5]?.HasLinkMarker(CardLinkMarker.BottomRight) ?? false) ||
(EnemyMZone[6]?.HasLinkMarker(CardLinkMarker.TopLeft) ?? false) ||
(BotMZone[6]?.HasLinkMarker(CardLinkMarker.BottomLeft) ?? false) ||
(EnemyMZone[5]?.HasLinkMarker(CardLinkMarker.TopRight) ?? false)))
result |= Zones.z2;
if (BotMZone[3] == null &&
((BotMZone[2]?.HasLinkMarker(CardLinkMarker.Right) ?? false) ||
(BotMZone[4]?.HasLinkMarker(CardLinkMarker.Left) ?? false) ||
(BotMZone[6]?.HasLinkMarker(CardLinkMarker.Bottom) ?? false) ||
(EnemyMZone[5]?.HasLinkMarker(CardLinkMarker.Top) ?? false)))
result |= Zones.z3;
if (BotMZone[4] == null &&
((BotMZone[3]?.HasLinkMarker(CardLinkMarker.Right) ?? false) ||
(BotMZone[6]?.HasLinkMarker(CardLinkMarker.BottomRight) ?? false) ||
(EnemyMZone[5]?.HasLinkMarker(CardLinkMarker.TopLeft) ?? false)))
result |= Zones.z4;
return result;
}
public int GetBotAvailZonesFromExtraDeck(ClientCard remove)
{
return GetBotAvailZonesFromExtraDeck(new [] { remove });
return GetBotAvailZonesFromExtraDeck(new[] { remove });
}
public int GetBotAvailZonesFromExtraDeck()
......
......@@ -7,6 +7,41 @@ namespace WindBot.Game.AI
{
public static class CardContainer
{
public static int CompareCardAttack(ClientCard cardA, ClientCard cardB)
{
if (cardA.Attack < cardB.Attack)
return -1;
if (cardA.Attack == cardB.Attack)
return 0;
return 1;
}
public static int CompareCardLevel(ClientCard cardA, ClientCard cardB)
{
if (cardA.Level < cardB.Level)
return -1;
if (cardA.Level == cardB.Level)
return 0;
return 1;
}
public static int CompareDefensePower(ClientCard cardA, ClientCard cardB)
{
if (cardA == null && cardB == null)
return 0;
if (cardA == null)
return -1;
if (cardB == null)
return 1;
int powerA = cardA.GetDefensePower();
int powerB = cardB.GetDefensePower();
if (powerA < powerB)
return -1;
if (powerA == powerB)
return 0;
return 1;
}
public static ClientCard GetHighestAttackMonster(this IEnumerable<ClientCard> cards, bool canBeTarget = false)
{
return cards
......@@ -90,6 +125,21 @@ namespace WindBot.Game.AI
return cards.FirstOrDefault(card => card?.Data != null && card.IsFaceup() && filter.Invoke(card));
}
public static IList<ClientCard> GetMatchingCards(this IEnumerable<ClientCard> cards, Func<ClientCard, bool> filter)
{
return cards.Where(card => card?.Data != null && filter.Invoke(card)).ToList();
}
public static int GetMatchingCardsCount(this IEnumerable<ClientCard> cards, Func<ClientCard, bool> filter)
{
return cards.Count(card => card?.Data != null && filter.Invoke(card));
}
public static bool IsExistingMatchingCard(this IEnumerable<ClientCard> cards, Func<ClientCard, bool> filter, int count = 1)
{
return cards.GetMatchingCardsCount(filter) >= count;
}
public static ClientCard GetShouldBeDisabledBeforeItUseEffectMonster(this IEnumerable<ClientCard> cards, bool canBeTarget = true)
{
return cards.FirstOrDefault(card => card?.Data != null && card.IsMonsterShouldBeDisabledBeforeItUseEffect() && card.IsFaceup() && (!canBeTarget || !card.IsShouldNotBeTarget()));
......
using System;
using WindBot.Game.AI.Enums;
using YGOSharp.OCGWrapper.Enums;
namespace WindBot.Game.AI
{
......@@ -10,7 +11,9 @@ namespace WindBot.Game.AI
/// </summary>
public static bool IsMonsterInvincible(this ClientCard card)
{
return !card.IsDisabled() && Enum.IsDefined(typeof(InvincibleMonster), card.Id);
return !card.IsDisabled() &&
(card.Controller == 0 && Enum.IsDefined(typeof(InvincibleBotMonster), card.Id) ||
card.Controller == 1 && Enum.IsDefined(typeof(InvincibleEnemyMonster), card.Id));
}
/// <summary>
......@@ -34,7 +37,7 @@ namespace WindBot.Game.AI
/// </summary>
public static bool IsShouldNotBeTarget(this ClientCard card)
{
return !card.IsDisabled() && Enum.IsDefined(typeof(ShouldNotBeTarget), card.Id);
return !card.IsDisabled() && !card.HasType(CardType.Normal) && Enum.IsDefined(typeof(ShouldNotBeTarget), card.Id);
}
/// <summary>
......
This diff is collapsed.
......@@ -93,7 +93,7 @@ namespace WindBot.Game.AI.Decks
{
if (Card.Location == CardLocation.Hand && Bot.HasInSpellZone(Card.Id))
return false;
if (ActivateDescription == AI.Utils.GetStringId((int)Card.Id,0))
if (ActivateDescription == Util.GetStringId((int)Card.Id,0))
AI.SelectCard(CardId.GaleTheWhirlwind);
return true;
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -126,7 +126,7 @@ namespace WindBot.Game.AI.Decks
private bool EvolutionBurstEffect()
{
ClientCard bestMy = Bot.GetMonsters().GetHighestAttackMonster();
if (bestMy == null || !AI.Utils.IsOneEnemyBetterThanValue(bestMy.Attack, false))
if (bestMy == null || !Util.IsOneEnemyBetterThanValue(bestMy.Attack, false))
return false;
else
AI.SelectCard(Enemy.MonsterZone.GetHighestAttackMonster());
......@@ -142,7 +142,7 @@ namespace WindBot.Game.AI.Decks
private bool ArmoredCybernSet()
{
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand(CardId.CyberDragonDrei) || Bot.HasInHand(CardId.CyberPhoenix)) && !AI.Utils.IsOneEnemyBetterThanValue(1800,true))
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand(CardId.CyberDragonDrei) || Bot.HasInHand(CardId.CyberPhoenix)) && !Util.IsOneEnemyBetterThanValue(1800,true))
return false;
return true;
}
......@@ -151,7 +151,7 @@ namespace WindBot.Game.AI.Decks
{
if (Bot.GetCountCardInZone(Bot.Hand, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragonCore) >= 1 && Bot.HasInHand(CardId.Polymerization) || Bot.GetCountCardInZone(Bot.Hand, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.MonsterZone, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, CardId.CyberDragon) + Bot.GetCountCardInZone(Bot.Graveyard, CardId.CyberDragonCore) >= 1 && Bot.HasInHand(CardId.PowerBond))
return true;
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand(CardId.CyberDragonDrei) || Bot.HasInHand(CardId.CyberPhoenix)) && !AI.Utils.IsOneEnemyBetterThanValue(1800, true))
if (CyberDragonInHand() && (Bot.GetMonsterCount() == 0 && Enemy.GetMonsterCount() != 0) || (Bot.HasInHand(CardId.CyberDragonDrei) || Bot.HasInHand(CardId.CyberPhoenix)) && !Util.IsOneEnemyBetterThanValue(1800, true))
return false;
return true;
}
......@@ -167,8 +167,8 @@ namespace WindBot.Game.AI.Decks
return true;
else if (Card.Location == CardLocation.SpellZone)
{
if (AI.Utils.IsOneEnemyBetterThanValue(Bot.GetMonsters().GetHighestAttackMonster().Attack, true))
if (ActivateDescription == AI.Utils.GetStringId(CardId.ArmoredCybern, 2))
if (Util.IsOneEnemyBetterThanValue(Bot.GetMonsters().GetHighestAttackMonster().Attack, true))
if (ActivateDescription == Util.GetStringId(CardId.ArmoredCybern, 2))
return true;
return false;
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment