Commit 3b2ccfd3 authored by nanahira's avatar nanahira

Merge branch 'master' into rd

parents cf4e65e4 3bd53ba5
......@@ -15,14 +15,18 @@ build:
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
- 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/
......
......@@ -2,26 +2,32 @@
# !name
# command
# description
<<<<<<< HEAD
# flags (avail flags: SUPPORT_MASTER_RULE_3, SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020)
=======
# flags (avail flags: SUPPORT_MASTER_RULE_3, SUPPORT_NEW_MASTER_RULE, SUPPORT_MASTER_RULE_2020)
>>>>>>> 795ac990ff54118181873e013ffab43cc4ec9998
# 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
SUPPORT_MASTER_RULE_2020
!随机-简单
Random=AI_LV2
一些比较弱的卡组。
SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
SUPPORT_MASTER_RULE_2020
!随机-普通
Random=AI_LV3
一些环境里可以看到的卡组。
SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
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
......@@ -31,12 +37,12 @@ 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 SUPPORT_MASTER_RULE_2020
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 SUPPORT_MASTER_RULE_2020
AI_LV2 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!谜之剑士LV4-8星同调
Name=谜之剑士LV4 Deck='Level VIII' Dialog=swordsman.zh-CN
......@@ -46,7 +52,7 @@ 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 SUPPORT_MASTER_RULE_2020
AI_LV2 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!琪露诺-饼蛙
Name=琪露诺 Deck='Toadally Awesome' Dialog=cirno.zh-CN
......@@ -56,7 +62,7 @@ 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 SUPPORT_MASTER_RULE_2020
AI_LV3 SUPPORT_MASTER_RULE_3 SUPPORT_MASTER_RULE_2020
!复制植物-十二兽
Name=复制植物 Deck=Zoodiac Dialog=copy.zh-CN
......@@ -83,24 +89,6 @@ Name=尼亚 Deck=Altergeist Dialog=near.zh-CN
幻变骚灵卡组。
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
<<<<<<< HEAD
=======
!复制梁龙-闪刀姬
Name=复制梁龙 Deck=SkyStriker Dialog=anothercopy.zh-CN
旧式闪刀姬卡组。
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!复制梁龙-自奏圣乐
Name=复制梁龙 Deck=Orcust Dialog=anothercopy.zh-CN
旧式自奏圣乐卡组。
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!复制梁龙-转生炎兽
Name=复制梁龙 Deck=Salamangreat Dialog=anothercopy.zh-CN
转生炎兽卡组。
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
>>>>>>> 795ac990ff54118181873e013ffab43cc4ec9998
!永远之魂-削血
Name=永远之魂 Deck=Burn Dialog=soul.zh-CN
老式削血卡组。
......@@ -204,7 +192,6 @@ AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!報社鬥士
Name=報社鬥士 Deck=GrenMajuThunderBoarder Dialog=kiwi.zh-TW
红莲雷王滑板卡组。
<<<<<<< HEAD
AI_LV3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
!彩音-黑魔术师
......@@ -221,9 +208,6 @@ 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
=======
AI_ANTI_META SUPPORT_MASTER_RULE_3 SUPPORT_NEW_MASTER_RULE SUPPORT_MASTER_RULE_2020
>>>>>>> 795ac990ff54118181873e013ffab43cc4ec9998
!朱露咲浅羽-真红眼
Name=朱露咲浅羽 Deck=Dragun Dialog=nlch.zh-CN
......@@ -234,3 +218,13 @@ 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
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
65367484
65367484
65367484
71564252
71564252
71564252
56308388
56308388
56308388
67696066
67696066
82496097
82496097
82496097
74578720
74578720
74578720
19891131
19891131
19891131
70368879
70368879
70368879
14558127
14558127
23434538
23434538
12580477
18144507
35261759
35261759
49238328
49238328
81439173
10877309
10877309
10877309
81670445
81670445
81670445
18678554
18678554
18678554
26708437
26708437
26708437
57319935
57319935
98827725
98827725
98827725
36975314
36975314
40605147
40605147
40605147
41420027
41420027
41420027
76587747
76587747
76587747
84749824
84749824
#extra
56832966
56832966
56832966
42421606
86532744
86532744
86532744
84013237
16195942
84013237
84013237
55285840
55285840
55285840
59208943
59208943
59208943
46772449
12014404
12014404
!side
......@@ -12,6 +12,7 @@
95245544
95245544
14558127
14558127
38814750
38814750
38814750
......@@ -41,7 +42,6 @@
83301414
24224830
24224830
24224830
56894757
65681983
65681983
......
#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},发了。"
]
}
{
"welcome": [
"大家好我是新人",
"游戏王是怎么玩来着?",
"还好我不玩游戏王"
],
"deckerror": [
"卡组里{0}鸽了"
],
"duelstart": [
"不想干活怎么办",
"智商欠费不想干活怎么办"
],
"newturn": [
"好多可怕的新卡啊",
"这游戏好难玩",
"so lazy cant move"
],
"endturn": [
"搞得我只能鸽了",
"不是在此时,不知在何时",
"too hot need ice cream"
],
"directattack": [
"听起来很鸽",
"老鸽,稳"
],
"attack": [
"听起来不是很鸽",
"可怕"
],
"ondirectattack": [
"哇!",
"这么可怕的吗",
"听起来非常鸽",
"承受不住"
],
"facedownmonstername": "鸽子",
"activate": [
"不明觉鸽",
"鸽了,爽"
],
"summon": [
"可怕",
"不关我事",
"那还是不关我事",
"鸽了,爽"
],
"setmonster": [
"摸鱼中,不想更新",
"那还是鸽置吧"
],
"chaining": [
"那是什么",
"但我鸽了",
"无此服务",
"可怕"
]
}
{
"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
......@@ -11,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>
......
......@@ -2742,8 +2742,6 @@ namespace WindBot.Game.AI.Decks
public override IList<ClientCard> OnSelectCard(IList<ClientCard> cards, int min, int max, int hint, bool cancelable)
{
int HIINT_TOGRAVE = 504;
if (max == 1 && cards[0].Location == CardLocation.Deck
&& Util.GetLastChainCard() != null && Util.GetLastChainCard().IsCode(23002292) && Bot.GetRemainingCount(CardId.WakingtheDragon,1) > 0)
{
......@@ -2764,7 +2762,7 @@ namespace WindBot.Game.AI.Decks
Logger.DebugWriteLine("EvenlyMatched: min=" + min.ToString() + ", max=" + max.ToString());
}
else if (cards[0].Location == CardLocation.Hand && cards[cards.Count - 1].Location == CardLocation.Hand
&& (hint == 501 || hint == HIINT_TOGRAVE) && min == max)
&& (hint == HintMsg.Discard || hint == HintMsg.ToGrave) && min == max)
{
if (Duel.LastChainPlayer == 0 && Util.GetLastChainCard().IsCode(CardId.OneForOne)) return null;
Logger.DebugWriteLine("Hand drop except OneForOne");
......
......@@ -20,7 +20,7 @@ namespace WindBot.Game.AI.Decks
{
AddExecutor(ExecutorType.SpSummon);
AddExecutor(ExecutorType.Activate, DefaultDontChainMyself);
AddExecutor(ExecutorType.SummonOrSet);
AddExecutor(ExecutorType.SummonOrSet, DefaultMonsterSummon);
AddExecutor(ExecutorType.Repos, DefaultMonsterRepos);
AddExecutor(ExecutorType.SpellSet);
}
......
This diff is collapsed.
......@@ -83,18 +83,10 @@ namespace WindBot.Game.AI.Decks
private int m_swapFrogSummoned;
private int m_flipFlopFrogSummoned;
private int m_treebornFrogCount = 0;
public override void OnNewTurn()
{
m_treebornFrogCount = 0;
base.OnNewTurn();
}
private bool TreebornFrog()
{
m_treebornFrogCount++;
return m_treebornFrogCount <= 5;
return true;
}
private bool SwapFrogSummon()
......
......@@ -56,7 +56,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.MonsterReborn, MonsterReborn);
AddExecutor(ExecutorType.Summon, CardId.WhiteNightDragon, WhiteNightDragon);
AddExecutor(ExecutorType.Summon, CardId.HorusTheBlackFlameDragonLv6, DefaultTributeSummon);
AddExecutor(ExecutorType.Summon, CardId.HorusTheBlackFlameDragonLv6, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.AlexandriteDragon);
AddExecutor(ExecutorType.SummonOrSet, CardId.AxeDragonute);
AddExecutor(ExecutorType.SummonOrSet, CardId.DodgerDragon);
......@@ -157,7 +157,7 @@ namespace WindBot.Game.AI.Decks
if (card.IsCode(11224103))
return false;
return DefaultTributeSummon();
return DefaultMonsterSummon();
}
private bool HorusTheBlackFlameDragonLv8()
......
......@@ -184,7 +184,6 @@ namespace WindBot.Game.AI.Decks
private bool JetSynchronUsed = false;
private bool ScrapWyvernUsed = false;
private bool MaskedChameleonUsed = false;
private int ShootingRiserDragonCount = 0;
private int[] HandCosts = new[]
{
......@@ -218,7 +217,6 @@ namespace WindBot.Game.AI.Decks
JetSynchronUsed = false;
ScrapWyvernUsed = false;
MaskedChameleonUsed = false;
ShootingRiserDragonCount = 0;
}
public override void OnChainEnd()
......@@ -845,9 +843,8 @@ namespace WindBot.Game.AI.Decks
}
else
{
if (Duel.LastChainPlayer == 0 || ShootingRiserDragonCount >= 10)
if (Duel.LastChainPlayer == 0)
return false;
ShootingRiserDragonCount++;
AI.SelectCard(new[] {
CardId.BlackRoseMoonlightDragon,
CardId.ScrapDragon,
......
This diff is collapsed.
......@@ -46,8 +46,8 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.SwordsOfRevealingLight, SwordsOfRevealingLight);
AddExecutor(ExecutorType.Activate, CardId.DoubleSummon, DoubleSummon);
AddExecutor(ExecutorType.Summon, CardId.AncientGearGolem, DefaultTributeSummon);
AddExecutor(ExecutorType.Summon, CardId.Frostosaurus, DefaultTributeSummon);
AddExecutor(ExecutorType.Summon, CardId.AncientGearGolem, DefaultMonsterSummon);
AddExecutor(ExecutorType.Summon, CardId.Frostosaurus, DefaultMonsterSummon);
AddExecutor(ExecutorType.SummonOrSet, CardId.AlexandriteDragon);
AddExecutor(ExecutorType.SummonOrSet, CardId.GeneWarpedWarwolf);
AddExecutor(ExecutorType.MonsterSet, CardId.GearGolemTheMovingFortress);
......
......@@ -181,7 +181,6 @@ namespace WindBot.Game.AI.Decks
private bool CymbalSkeletonUsed = false;
private bool BorrelswordDragonUsed = false;
private ClientCard RustyBardicheTarget = null;
private int ShootingRiserDragonCount = 0;
private int[] HandCosts = new[]
{
......@@ -215,7 +214,6 @@ namespace WindBot.Game.AI.Decks
CymbalSkeletonUsed = false;
BorrelswordDragonUsed = false;
RustyBardicheTarget = null;
ShootingRiserDragonCount = 0;
}
public override void OnChainEnd()
......@@ -611,10 +609,7 @@ namespace WindBot.Game.AI.Decks
}
else
{
if (Duel.LastChainPlayer == 0)
return false;
ShootingRiserDragonCount++;
return ShootingRiserDragonCount <= 10;
return Duel.LastChainPlayer != 0;
}
}
......@@ -825,8 +820,8 @@ namespace WindBot.Game.AI.Decks
if (ActivateDescription == 96)
{
// TODO: more FogBlade lost target
if ((Duel.Phase == DuelPhase.Main1 || Duel.Phase == DuelPhase.Main2) && Duel.CurrentChain.Count == 0)
return false;
if ((Duel.Phase == DuelPhase.Main1 || Duel.Phase == DuelPhase.Main2) && Duel.CurrentChain.Count == 0)
return false;
AI.SelectCard(CardId.OrcustCymbalSkeleton);
return true;
}
......@@ -1130,22 +1125,22 @@ namespace WindBot.Game.AI.Decks
{
return Duel.LastChainPlayer == 1;
}
else if (Duel.Phase == DuelPhase.End)
{
ClientCard target = null;
target = Bot.Banished.GetFirstMatchingFaceupCard(card=>card.IsCode(CardId.OrcustCymbalSkeleton));
if (target == null)
target = Bot.Banished.GetFirstMatchingFaceupCard(card => card.IsCode(CardId.OrcustHarpHorror));
if (target != null)
{
AI.SelectCard(target);
return true;
}
if(!Bot.HasInHand(CardId.OrcustHarpHorror) && Bot.GetRemainingCount(CardId.OrcustHarpHorror, 2) > 1)
{
AI.SelectCard(CardId.OrcustHarpHorror);
return true;
}
else if (Duel.Phase == DuelPhase.End)
{
ClientCard target = null;
target = Bot.Banished.GetFirstMatchingFaceupCard(card=>card.IsCode(CardId.OrcustCymbalSkeleton));
if (target == null)
target = Bot.Banished.GetFirstMatchingFaceupCard(card => card.IsCode(CardId.OrcustHarpHorror));
if (target != null)
{
AI.SelectCard(target);
return true;
}
if(!Bot.HasInHand(CardId.OrcustHarpHorror) && Bot.GetRemainingCount(CardId.OrcustHarpHorror, 2) > 1)
{
AI.SelectCard(CardId.OrcustHarpHorror);
return true;
}
}
return false;
}
......
......@@ -117,13 +117,11 @@ namespace WindBot.Game.AI.Decks
bool summon_used = false;
bool CardOfDemiseeff_used = false;
bool SeaStealthAttackeff_used = false;
int City_count = 0;
public override void OnNewTurn()
{
summon_used = false;
CardOfDemiseeff_used = false;
SeaStealthAttackeff_used = false;
City_count = 0;
base.OnNewTurn();
}
private bool PreventFeatherDustereff()
......@@ -356,9 +354,6 @@ namespace WindBot.Game.AI.Decks
}
else
{
if (City_count > 10)
return false;
ClientCard target = null;
foreach(ClientCard s in Bot.GetSpells())
{
......@@ -380,7 +375,6 @@ namespace WindBot.Game.AI.Decks
break;
}
}
City_count++;
AI.SelectPlace(Zones.z1 | Zones.z3);
AI.SelectCard(CardId.PhantasmSprialBattle);
return true;
......
......@@ -215,8 +215,7 @@ namespace WindBot.Game.AI.Decks
private bool Summon_used;
private bool Pilica_eff;
private bool plan_A;
private int SnowBell_count = 0;
//TODO: reset the flags when they should reset ( public override void OnNewTurn() )
public PureWindsExecutor(GameAI ai, Duel duel)
: base(ai, duel)
{
......@@ -302,7 +301,6 @@ namespace WindBot.Game.AI.Decks
Summon_used = false;
Pilica_eff = false;
plan_A = false;
SnowBell_count = 0;
base.OnNewTurn();
}
private bool windaset()
......@@ -770,7 +768,6 @@ namespace WindBot.Game.AI.Decks
private bool WindwitchSnowBellsp()
{
if (SnowBell_count >= 5) return false;
if ((Bot.HasInMonstersZone(CardId.CrystalWingSynchroDragon) ||
Bot.HasInMonstersZone(CardId.DaigustoSphreez) ||
Bot.HasInMonstersZone(CardId.MistWurm)) &&
......@@ -786,7 +783,6 @@ namespace WindBot.Game.AI.Decks
(Util.GetBotAvailZonesFromExtraDeck() == 0))
return false;
AI.SelectPosition(CardPosition.FaceUpDefence);
SnowBell_count++;
return true;
}
private bool DaigustoSphreezsp()
......
This diff is collapsed.
......@@ -73,7 +73,6 @@ namespace WindBot.Game.AI.Decks
bool snake_four_s = false;
bool tuner_eff_used = false;
bool crystal_eff_used = false;
int red_ss_count = 0;
bool white_eff_used = false;
bool lockbird_useful = false;
bool lockbird_used = false;
......@@ -758,7 +757,6 @@ namespace WindBot.Game.AI.Decks
public bool Red_ss()
{
if (red_ss_count >= 6) return false;
if ((Util.ChainContainsCard(CardId.DarkHole) || Util.ChainContainsCard(99330325) || Util.ChainContainsCard(53582587)) && Util.ChainContainsCard(CardId.Red)) return false;
if (Duel.LastChainPlayer == 0 && Util.GetLastChainCard().IsCode(CardId.Red))
{
......@@ -766,7 +764,6 @@ namespace WindBot.Game.AI.Decks
{
if (Util.IsChainTarget(m) && IsTrickstar(m.Id))
{
red_ss_count += 1;
AI.SelectCard(m);
Red_SelectPos();
return true;
......@@ -789,7 +786,6 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(c);
Red_SelectPos(c);
red_ss_count += 1;
return true;
}
if (c.IsCode(CardId.Pink)) return false;
......@@ -800,14 +796,12 @@ namespace WindBot.Game.AI.Decks
if (tosolve_enemy.Attack > 3200) AI.SelectPosition(CardPosition.FaceUpDefence);
AI.SelectCard(c);
Red_SelectPos(c);
red_ss_count += 1;
return true;
}
if (!Bot.HasInHand(CardId.White) && tosolve_enemy.Attack <= 3200 && c.IsCode(CardId.White))
{
AI.SelectCard(c);
Red_SelectPos(c);
red_ss_count += 1;
return true;
}
if (!Bot.HasInHand(CardId.White) && c.Attack < tosolve_enemy.Attack)
......@@ -824,7 +818,6 @@ namespace WindBot.Game.AI.Decks
if (tosolve_enemy.Attack > 1600) AI.SelectPosition(CardPosition.FaceUpDefence);
AI.SelectCard(c);
Red_SelectPos(c);
red_ss_count += 1;
return true;
}
}
......@@ -845,7 +838,6 @@ namespace WindBot.Game.AI.Decks
{
AI.SelectCard(card);
Red_SelectPos(card);
red_ss_count += 1;
return true;
}
}
......@@ -1710,7 +1702,6 @@ namespace WindBot.Game.AI.Decks
pink_ss = false;
snake_four_s = false;
crystal_eff_used = false;
red_ss_count = 0;
white_eff_used = false;
lockbird_useful = false;
lockbird_used = false;
......
......@@ -197,7 +197,6 @@ namespace WindBot.Game.AI.Decks
bool MagicianRightHand_used = false;
ClientCard MagiciansLeftHand_negate = null;
ClientCard MagicianRightHand_negate = null;
int PSYOmega_count = 0;
// go first
public override bool OnSelectHand()
......@@ -283,8 +282,7 @@ namespace WindBot.Game.AI.Decks
FirstCheckSS.Clear();
UseSSEffect.Clear();
ActivatedCards.Clear();
int PSYOmega_count = 0;
// CalledbytheGrave refrest
// CalledbytheGrave refresh
List<int> key_list = CalledbytheGraveCount.Keys.ToList();
foreach (int dic in key_list)
{
......@@ -311,8 +309,8 @@ namespace WindBot.Game.AI.Decks
// overwrite OnSelectCard to act normally in SelectUnselect
public override IList<ClientCard> OnSelectCard(IList<ClientCard> cards, int min, int max, int hint, bool cancelable)
{
// Patronus HINTMSG_ATOHAND
if (hint == 506)
// Patronus
if (hint == HintMsg.AddToHand)
{
bool flag = true;
foreach(ClientCard card in cards)
......@@ -336,8 +334,8 @@ namespace WindBot.Game.AI.Decks
return selected;
}
}
// MaxxC HINTMSG_SPSUMMON
if (hint == 509 && enemy_activate_MaxxC)
// MaxxC solution
if (hint == HintMsg.SpSummon && enemy_activate_MaxxC)
{
// check whether SS from deck while using effect
bool flag = true;
......@@ -394,8 +392,8 @@ namespace WindBot.Game.AI.Decks
}
}
}
// MadameVerre HINTMSG_CONFIRM
if (hint == 526)
// MadameVerre
if (hint == HintMsg.Confirm)
{
Logger.DebugWriteLine("** min-max: " + min.ToString() + " / " + max.ToString());
foreach (ClientCard card in cards)
......@@ -976,8 +974,6 @@ namespace WindBot.Game.AI.Decks
// check
bool have_FiveRainbow = false;
List<ClientCard> list = new List<ClientCard>();
ClientCard l = null;
ClientCard r = null;
if (Duel.IsNewRule || Duel.IsNewRule2020)
{
list.Add(Enemy.SpellZone[0]);
......@@ -2503,20 +2499,15 @@ namespace WindBot.Game.AI.Decks
// recycle from grave
if (Card.Location == CardLocation.Grave)
{
if (PSYOmega_count >= 5){
return false;
}
List<ClientCard> enemy_danger = CheckDangerousCardinEnemyGrave();
if (enemy_danger.Count > 0)
{
AI.SelectCard(enemy_danger);
PSYOmega_count ++;
return true;
}
if (!Bot.HasInHandOrInSpellZoneOrInGraveyard(CardId.Holiday) && Bot.HasInGraveyard(important_witchcraft))
{
AI.SelectCard(important_witchcraft);
PSYOmega_count ++;
return true;
}
if (CheckProblematicCards() == null)
......@@ -2525,7 +2516,6 @@ namespace WindBot.Game.AI.Decks
CardId.MaxxC, CardId.AshBlossom_JoyousSpring,
CardId.MagicianRightHand, CardId.MagiciansLeftHand, CardId.MagiciansRestage, CardId.Patronus,
CardId.LightningStorm, CardId.Reasoning);
PSYOmega_count ++;
return true;
}
}
......
......@@ -100,6 +100,7 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Summon, CardId.Goblindbergh);
AddExecutor(ExecutorType.Summon, CardId.TinGoldfish);
AddExecutor(ExecutorType.Summon, CardId.SummonerMonk);
AddExecutor(ExecutorType.Summon, CardId.Honest);
// Summons: Effects
AddExecutor(ExecutorType.Activate, CardId.Goblindbergh, GoblindberghEffect);
......@@ -122,13 +123,6 @@ namespace WindBot.Game.AI.Decks
AddExecutor(ExecutorType.Activate, CardId.SolemnStrike, DefaultSolemnStrike);
}
private int ZwCount = 0;
public override void OnNewTurn()
{
ZwCount = 0;
}
public override bool OnSelectHand()
{
return false;
......@@ -177,8 +171,7 @@ namespace WindBot.Game.AI.Decks
private bool ZwWeapon()
{
ZwCount++;
return ZwCount < 10;
return true;
}
private bool ReinforcementOfTheArmy()
......
......@@ -47,7 +47,6 @@ namespace WindBot.Game.AI.Decks
bool TigermortarSpsummoned = false;
bool ChakanineSpsummoned = false;
bool BroadbullSpsummoned = false;
int WhiptailEffectCount = 0;
public ZoodiacExecutor(GameAI ai, Duel duel)
: base(ai, duel)
......@@ -128,7 +127,6 @@ namespace WindBot.Game.AI.Decks
TigermortarSpsummoned = false;
ChakanineSpsummoned = false;
BroadbullSpsummoned = false;
WhiptailEffectCount = 0;
}
public override bool OnPreBattleBetween(ClientCard attacker, ClientCard defender)
......@@ -431,7 +429,7 @@ namespace WindBot.Game.AI.Decks
{
if (Duel.Phase == DuelPhase.Main1 || Duel.Phase == DuelPhase.Main2)
return false;
if (Card.IsDisabled() || WhiptailEffectCount >= 3)
if (Card.IsDisabled())
return false;
ClientCard target = null;
List<ClientCard> monsters = Bot.GetMonsters();
......@@ -461,7 +459,6 @@ namespace WindBot.Game.AI.Decks
CardId.Drident
});
}
WhiptailEffectCount++;
return true;
}
......
This diff is collapsed.
......@@ -59,7 +59,7 @@ namespace WindBot.Game.AI
_game = game;
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DialogsData));
string dialogfilename = game.Dialog;
using (FileStream fs = File.OpenRead("Dialogs/" + dialogfilename + ".json"))
using (FileStream fs = Program.ReadFile("Dialogs", dialogfilename, "json"))
{
DialogsData data = (DialogsData)serializer.ReadObject(fs);
_welcome = data.welcome;
......
namespace WindBot.Game.AI.Enums
{
/// <summary>
/// Cards that are invincible to battle and should always attack to use effect.
/// </summary>
public enum InvincibleBotMonster
{
YubelTheUltimateNightmare = 31764700,
YubelTerrorIncarnate = 4779091,
SandaionTheTimelord = 33015627,
GabrionTheTimelord = 6616912,
MichionTheTimelord = 7733560,
ZaphionTheTimelord = 28929131,
HailonTheTimelord = 34137269,
RaphionTheTimelord = 60222213,
SadionTheTimelord = 65314286,
MetaionTheTimelord = 74530899,
KamionTheTimelord = 91712985,
LazionTheTimelord = 92435533,
TimelordProgenitorVorpgate = 67508932,
RocketWarrior = 30860696,
GoDDDDivineZeroKingRage = 40227329,
BloomDivaTheMelodiousChoir = 84988419,
BlackwingArmorMaster = 69031175,
DaigustoSphreez = 29552709,
Number92HearteartHDragon = 97403510,
NumberC96DarkStorm = 77205367,
Number54LionHeart = 54366836
}
/// <summary>
/// Cards that are invincible to battle.
/// </summary>
public enum InvincibleMonster
public enum InvincibleEnemyMonster
{
SpiritReaper = 23205979,
YubelTheUltimateNightmare = 31764700,
......
This diff is collapsed.
This diff is collapsed.
namespace WindBot.Game.AI
{
public static class Opcodes
{
public const int OPCODE_ADD = 0x40000000,
OPCODE_SUB = 0x40000001,
OPCODE_MUL = 0x40000002,
OPCODE_DIV = 0x40000003,
OPCODE_AND = 0x40000004,
OPCODE_OR = 0x40000005,
OPCODE_NEG = 0x40000006,
OPCODE_NOT = 0x40000007,
OPCODE_ISCODE = 0x40000100,
OPCODE_ISSETCARD = 0x40000101,
OPCODE_ISTYPE = 0x40000102,
OPCODE_ISRACE = 0x40000103,
OPCODE_ISATTRIBUTE = 0x40000104;
}
}
\ No newline at end of file
......@@ -32,7 +32,7 @@ namespace WindBot.Game
public int RealPower { get; set; }
public List<int> Overlays { get; private set; }
public int Owner { get; private set; }
public int Controller { get; private set; }
public int Controller { get; set; }
public int Disabled { get; private set; }
public int ProcCompleted { get; private set; }
public int SelectSeq { get; set; }
......
......@@ -43,7 +43,7 @@ namespace WindBot.Game
StreamReader reader = null;
try
{
reader = new StreamReader(new FileStream("Decks/" + name + ".ydk", FileMode.Open, FileAccess.Read));
reader = new StreamReader(Program.ReadFile("Decks", name, "ydk"));
Deck deck = new Deck();
bool side = false;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -20,6 +20,11 @@ The nickname for the bot.
`Deck`
The deck to be used by the bot. Available decks are listed below. Keep empty to use random deck.
`DeckFile`
The deck file (.ydk) to be used by the bot. Will be set by `Deck` automatically, but you can override it.
Note: Most cards not in the original deck are unknown to the bot, and won't be summoned or activated in the duel.
`Dialog`
The dialog texts to be used by the bot. See Dialogs folder for list.
......
This diff is collapsed.
This diff is collapsed.
No preview for this file type
This diff is collapsed.
......@@ -2,7 +2,7 @@
"windbots": [
{
"name": "羽柔子",
"deck": "Test",
"deck": "Lucky",
"dialog": "rd"
}
]
......
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