diff --git a/audio/die/dc_huojun.mp3 b/audio/die/dc_huojun.mp3 new file mode 100644 index 000000000..d2e61fe30 Binary files /dev/null and b/audio/die/dc_huojun.mp3 differ diff --git a/audio/die/dc_ruiji.mp3 b/audio/die/dc_ruiji.mp3 new file mode 100644 index 000000000..37087e892 Binary files /dev/null and b/audio/die/dc_ruiji.mp3 differ diff --git a/audio/die/dc_sunziliufang.mp3 b/audio/die/dc_sunziliufang.mp3 new file mode 100644 index 000000000..d11439e38 Binary files /dev/null and b/audio/die/dc_sunziliufang.mp3 differ diff --git a/audio/die/dc_tengfanglan.mp3 b/audio/die/dc_tengfanglan.mp3 new file mode 100644 index 000000000..72d98e6e0 Binary files /dev/null and b/audio/die/dc_tengfanglan.mp3 differ diff --git a/audio/die/dongtuna.mp3 b/audio/die/dongtuna.mp3 new file mode 100644 index 000000000..136fc6449 Binary files /dev/null and b/audio/die/dongtuna.mp3 differ diff --git a/audio/die/furongfuqian.mp3 b/audio/die/furongfuqian.mp3 new file mode 100644 index 000000000..1fbb24afa Binary files /dev/null and b/audio/die/furongfuqian.mp3 differ diff --git a/audio/die/maxiumatie.mp3 b/audio/die/maxiumatie.mp3 new file mode 100644 index 000000000..bae8f1e71 Binary files /dev/null and b/audio/die/maxiumatie.mp3 differ diff --git a/audio/die/ol_zhangyì.mp3 b/audio/die/ol_zhangyì.mp3 new file mode 100644 index 000000000..aac31388f Binary files /dev/null and b/audio/die/ol_zhangyì.mp3 differ diff --git a/audio/die/ol_zhujun.mp3 b/audio/die/ol_zhujun.mp3 new file mode 100644 index 000000000..2a07fedf4 Binary files /dev/null and b/audio/die/ol_zhujun.mp3 differ diff --git a/audio/die/qiaorui.mp3 b/audio/die/qiaorui.mp3 new file mode 100644 index 000000000..592c89dd7 Binary files /dev/null and b/audio/die/qiaorui.mp3 differ diff --git a/audio/die/qinlang.mp3 b/audio/die/qinlang.mp3 new file mode 100644 index 000000000..095c4e00a Binary files /dev/null and b/audio/die/qinlang.mp3 differ diff --git a/audio/die/quhuang.mp3 b/audio/die/quhuang.mp3 new file mode 100644 index 000000000..b51ddc66f Binary files /dev/null and b/audio/die/quhuang.mp3 differ diff --git a/audio/die/re_guanzhang.mp3 b/audio/die/re_guanzhang.mp3 new file mode 100644 index 000000000..b34b5fd64 Binary files /dev/null and b/audio/die/re_guanzhang.mp3 differ diff --git a/audio/die/sb_chengong.mp3 b/audio/die/sb_chengong.mp3 new file mode 100644 index 000000000..bbda361d4 Binary files /dev/null and b/audio/die/sb_chengong.mp3 differ diff --git a/audio/die/sb_diaochan.mp3 b/audio/die/sb_diaochan.mp3 new file mode 100644 index 000000000..94acc302a Binary files /dev/null and b/audio/die/sb_diaochan.mp3 differ diff --git a/audio/die/sb_pangtong.mp3 b/audio/die/sb_pangtong.mp3 new file mode 100644 index 000000000..262f681e7 Binary files /dev/null and b/audio/die/sb_pangtong.mp3 differ diff --git a/audio/die/sb_yuanshao.mp3 b/audio/die/sb_yuanshao.mp3 new file mode 100644 index 000000000..2fdda02df Binary files /dev/null and b/audio/die/sb_yuanshao.mp3 differ diff --git a/audio/die/shen_diaochan.mp3 b/audio/die/shen_diaochan.mp3 index ca403d222..82986ef1f 100644 Binary files a/audio/die/shen_diaochan.mp3 and b/audio/die/shen_diaochan.mp3 differ diff --git a/audio/die/xia_dianwei.mp3 b/audio/die/xia_dianwei.mp3 new file mode 100644 index 000000000..6cf636177 Binary files /dev/null and b/audio/die/xia_dianwei.mp3 differ diff --git a/audio/die/xia_lusu.mp3 b/audio/die/xia_lusu.mp3 new file mode 100644 index 000000000..1b2fff0ad Binary files /dev/null and b/audio/die/xia_lusu.mp3 differ diff --git a/audio/die/xia_xiahouzie.mp3 b/audio/die/xia_xiahouzie.mp3 new file mode 100644 index 000000000..b0d6738b7 Binary files /dev/null and b/audio/die/xia_xiahouzie.mp3 differ diff --git a/audio/die/xia_zhaoe.mp3 b/audio/die/xia_zhaoe.mp3 new file mode 100644 index 000000000..cf306688f Binary files /dev/null and b/audio/die/xia_zhaoe.mp3 differ diff --git a/audio/die/xielingyu.mp3 b/audio/die/xielingyu.mp3 new file mode 100644 index 000000000..ed47e00b8 Binary files /dev/null and b/audio/die/xielingyu.mp3 differ diff --git a/audio/die/yuantanyuanxiyuanshang.mp3 b/audio/die/yuantanyuanxiyuanshang.mp3 new file mode 100644 index 000000000..f351f5c19 Binary files /dev/null and b/audio/die/yuantanyuanxiyuanshang.mp3 differ diff --git a/audio/die/zerong.mp3 b/audio/die/zerong.mp3 new file mode 100644 index 000000000..199aea01c Binary files /dev/null and b/audio/die/zerong.mp3 differ diff --git a/audio/die/zhanghua.mp3 b/audio/die/zhanghua.mp3 new file mode 100644 index 000000000..04379965d Binary files /dev/null and b/audio/die/zhanghua.mp3 differ diff --git a/audio/die/zhangkai.mp3 b/audio/die/zhangkai.mp3 new file mode 100644 index 000000000..a0052cb05 Binary files /dev/null and b/audio/die/zhangkai.mp3 differ diff --git a/audio/skill/dcaichen1.mp3 b/audio/skill/dcaichen1.mp3 new file mode 100644 index 000000000..b8e6b9762 Binary files /dev/null and b/audio/skill/dcaichen1.mp3 differ diff --git a/audio/skill/dcaichen2.mp3 b/audio/skill/dcaichen2.mp3 new file mode 100644 index 000000000..b70aa0766 Binary files /dev/null and b/audio/skill/dcaichen2.mp3 differ diff --git a/audio/skill/dcaishou1.mp3 b/audio/skill/dcaishou1.mp3 new file mode 100644 index 000000000..f2055a2b0 Binary files /dev/null and b/audio/skill/dcaishou1.mp3 differ diff --git a/audio/skill/dcaishou2.mp3 b/audio/skill/dcaishou2.mp3 new file mode 100644 index 000000000..f19dc9dca Binary files /dev/null and b/audio/skill/dcaishou2.mp3 differ diff --git a/audio/skill/dccansi1.mp3 b/audio/skill/dccansi1.mp3 new file mode 100644 index 000000000..8cdebd428 Binary files /dev/null and b/audio/skill/dccansi1.mp3 differ diff --git a/audio/skill/dccansi2.mp3 b/audio/skill/dccansi2.mp3 new file mode 100644 index 000000000..3adc978a9 Binary files /dev/null and b/audio/skill/dccansi2.mp3 differ diff --git a/audio/skill/dcfozong1.mp3 b/audio/skill/dcfozong1.mp3 new file mode 100644 index 000000000..e2b8454e1 Binary files /dev/null and b/audio/skill/dcfozong1.mp3 differ diff --git a/audio/skill/dcfozong2.mp3 b/audio/skill/dcfozong2.mp3 new file mode 100644 index 000000000..2ca43db0d Binary files /dev/null and b/audio/skill/dcfozong2.mp3 differ diff --git a/audio/skill/dcgue1.mp3 b/audio/skill/dcgue1.mp3 new file mode 100644 index 000000000..d7313af59 Binary files /dev/null and b/audio/skill/dcgue1.mp3 differ diff --git a/audio/skill/dcgue2.mp3 b/audio/skill/dcgue2.mp3 new file mode 100644 index 000000000..e7aafc5b0 Binary files /dev/null and b/audio/skill/dcgue2.mp3 differ diff --git a/audio/skill/dchaochong1.mp3 b/audio/skill/dchaochong1.mp3 new file mode 100644 index 000000000..e9d6f1fa7 Binary files /dev/null and b/audio/skill/dchaochong1.mp3 differ diff --git a/audio/skill/dchaochong2.mp3 b/audio/skill/dchaochong2.mp3 new file mode 100644 index 000000000..9c469fbc9 Binary files /dev/null and b/audio/skill/dchaochong2.mp3 differ diff --git a/audio/skill/dcjinjin1.mp3 b/audio/skill/dcjinjin1.mp3 new file mode 100644 index 000000000..1e4d0cb11 Binary files /dev/null and b/audio/skill/dcjinjin1.mp3 differ diff --git a/audio/skill/dcjinjin2.mp3 b/audio/skill/dcjinjin2.mp3 new file mode 100644 index 000000000..7283e7775 Binary files /dev/null and b/audio/skill/dcjinjin2.mp3 differ diff --git a/audio/skill/dclingyin1.mp3 b/audio/skill/dclingyin1.mp3 new file mode 100644 index 000000000..346b56e7a Binary files /dev/null and b/audio/skill/dclingyin1.mp3 differ diff --git a/audio/skill/dclingyin2.mp3 b/audio/skill/dclingyin2.mp3 new file mode 100644 index 000000000..374faef23 Binary files /dev/null and b/audio/skill/dclingyin2.mp3 differ diff --git a/audio/skill/dcliying1.mp3 b/audio/skill/dcliying1.mp3 new file mode 100644 index 000000000..23319d51d Binary files /dev/null and b/audio/skill/dcliying1.mp3 differ diff --git a/audio/skill/dcliying2.mp3 b/audio/skill/dcliying2.mp3 new file mode 100644 index 000000000..2c2bdf94e Binary files /dev/null and b/audio/skill/dcliying2.mp3 differ diff --git a/audio/skill/dcluochong1.mp3 b/audio/skill/dcluochong1.mp3 new file mode 100644 index 000000000..d77d49c23 Binary files /dev/null and b/audio/skill/dcluochong1.mp3 differ diff --git a/audio/skill/dcluochong2.mp3 b/audio/skill/dcluochong2.mp3 new file mode 100644 index 000000000..01eb77e9d Binary files /dev/null and b/audio/skill/dcluochong2.mp3 differ diff --git a/audio/skill/dcneifa1.mp3 b/audio/skill/dcneifa1.mp3 new file mode 100644 index 000000000..6d0711df7 Binary files /dev/null and b/audio/skill/dcneifa1.mp3 differ diff --git a/audio/skill/dcneifa2.mp3 b/audio/skill/dcneifa2.mp3 new file mode 100644 index 000000000..5967c1d17 Binary files /dev/null and b/audio/skill/dcneifa2.mp3 differ diff --git a/audio/skill/dcqinshen1.mp3 b/audio/skill/dcqinshen1.mp3 new file mode 100644 index 000000000..ee8448a00 Binary files /dev/null and b/audio/skill/dcqinshen1.mp3 differ diff --git a/audio/skill/dcqinshen2.mp3 b/audio/skill/dcqinshen2.mp3 new file mode 100644 index 000000000..7f5b4a4e9 Binary files /dev/null and b/audio/skill/dcqinshen2.mp3 differ diff --git a/audio/skill/dcsaowei1.mp3 b/audio/skill/dcsaowei1.mp3 new file mode 100644 index 000000000..e5f986d7c Binary files /dev/null and b/audio/skill/dcsaowei1.mp3 differ diff --git a/audio/skill/dcsaowei2.mp3 b/audio/skill/dcsaowei2.mp3 new file mode 100644 index 000000000..ab9121feb Binary files /dev/null and b/audio/skill/dcsaowei2.mp3 differ diff --git a/audio/skill/dcsigong1.mp3 b/audio/skill/dcsigong1.mp3 new file mode 100644 index 000000000..ec7561949 Binary files /dev/null and b/audio/skill/dcsigong1.mp3 differ diff --git a/audio/skill/dcsigong2.mp3 b/audio/skill/dcsigong2.mp3 new file mode 100644 index 000000000..22cc516c2 Binary files /dev/null and b/audio/skill/dcsigong2.mp3 differ diff --git a/audio/skill/dcwangyuan1.mp3 b/audio/skill/dcwangyuan1.mp3 new file mode 100644 index 000000000..2eb733f6c Binary files /dev/null and b/audio/skill/dcwangyuan1.mp3 differ diff --git a/audio/skill/dcwangyuan2.mp3 b/audio/skill/dcwangyuan2.mp3 new file mode 100644 index 000000000..929c18935 Binary files /dev/null and b/audio/skill/dcwangyuan2.mp3 differ diff --git a/audio/skill/dcweidang1.mp3 b/audio/skill/dcweidang1.mp3 new file mode 100644 index 000000000..c6304a477 Binary files /dev/null and b/audio/skill/dcweidang1.mp3 differ diff --git a/audio/skill/dcweidang2.mp3 b/audio/skill/dcweidang2.mp3 new file mode 100644 index 000000000..53148e24f Binary files /dev/null and b/audio/skill/dcweidang2.mp3 differ diff --git a/audio/skill/dcxiangshu1.mp3 b/audio/skill/dcxiangshu1.mp3 new file mode 100644 index 000000000..d5cd2dc32 Binary files /dev/null and b/audio/skill/dcxiangshu1.mp3 differ diff --git a/audio/skill/dcxiangshu2.mp3 b/audio/skill/dcxiangshu2.mp3 new file mode 100644 index 000000000..3976bf318 Binary files /dev/null and b/audio/skill/dcxiangshu2.mp3 differ diff --git a/audio/skill/dcxinyou1.mp3 b/audio/skill/dcxinyou1.mp3 new file mode 100644 index 000000000..8dce7c5fd Binary files /dev/null and b/audio/skill/dcxinyou1.mp3 differ diff --git a/audio/skill/dcxinyou2.mp3 b/audio/skill/dcxinyou2.mp3 new file mode 100644 index 000000000..fc5a31261 Binary files /dev/null and b/audio/skill/dcxinyou2.mp3 differ diff --git a/audio/skill/dcxuewei1.mp3 b/audio/skill/dcxuewei1.mp3 new file mode 100644 index 000000000..827add35e Binary files /dev/null and b/audio/skill/dcxuewei1.mp3 differ diff --git a/audio/skill/dcxuewei2.mp3 b/audio/skill/dcxuewei2.mp3 new file mode 100644 index 000000000..a74586db0 Binary files /dev/null and b/audio/skill/dcxuewei2.mp3 differ diff --git a/audio/skill/dcyuandi1.mp3 b/audio/skill/dcyuandi1.mp3 new file mode 100644 index 000000000..117869bda Binary files /dev/null and b/audio/skill/dcyuandi1.mp3 differ diff --git a/audio/skill/dcyuandi2.mp3 b/audio/skill/dcyuandi2.mp3 new file mode 100644 index 000000000..be6642678 Binary files /dev/null and b/audio/skill/dcyuandi2.mp3 differ diff --git a/audio/skill/dcyuguan1.mp3 b/audio/skill/dcyuguan1.mp3 new file mode 100644 index 000000000..e71d69b6e Binary files /dev/null and b/audio/skill/dcyuguan1.mp3 differ diff --git a/audio/skill/dcyuguan2.mp3 b/audio/skill/dcyuguan2.mp3 new file mode 100644 index 000000000..23e6eaf80 Binary files /dev/null and b/audio/skill/dcyuguan2.mp3 differ diff --git a/audio/skill/fuhun_re_guanzhang1.mp3 b/audio/skill/fuhun_re_guanzhang1.mp3 new file mode 100644 index 000000000..1dc12bbf9 Binary files /dev/null and b/audio/skill/fuhun_re_guanzhang1.mp3 differ diff --git a/audio/skill/fuhun_re_guanzhang2.mp3 b/audio/skill/fuhun_re_guanzhang2.mp3 new file mode 100644 index 000000000..f5dc3f63f Binary files /dev/null and b/audio/skill/fuhun_re_guanzhang2.mp3 differ diff --git a/audio/skill/huoxin1.mp3 b/audio/skill/huoxin1.mp3 index cb843626f..b282b1c10 100644 Binary files a/audio/skill/huoxin1.mp3 and b/audio/skill/huoxin1.mp3 differ diff --git a/audio/skill/huoxin2.mp3 b/audio/skill/huoxin2.mp3 index e45e3ad9a..ac237eaaf 100644 Binary files a/audio/skill/huoxin2.mp3 and b/audio/skill/huoxin2.mp3 differ diff --git a/audio/skill/meihun1.mp3 b/audio/skill/meihun1.mp3 index 48c89dd28..f235d9f18 100644 Binary files a/audio/skill/meihun1.mp3 and b/audio/skill/meihun1.mp3 differ diff --git a/audio/skill/meihun2.mp3 b/audio/skill/meihun2.mp3 index b907364ad..7dc83c22d 100644 Binary files a/audio/skill/meihun2.mp3 and b/audio/skill/meihun2.mp3 differ diff --git a/audio/skill/olbihun1.mp3 b/audio/skill/olbihun1.mp3 new file mode 100644 index 000000000..d1a2c5dc2 Binary files /dev/null and b/audio/skill/olbihun1.mp3 differ diff --git a/audio/skill/olbihun2.mp3 b/audio/skill/olbihun2.mp3 new file mode 100644 index 000000000..77d44b50c Binary files /dev/null and b/audio/skill/olbihun2.mp3 differ diff --git a/audio/skill/olchuanwu1.mp3 b/audio/skill/olchuanwu1.mp3 new file mode 100644 index 000000000..23bd62143 Binary files /dev/null and b/audio/skill/olchuanwu1.mp3 differ diff --git a/audio/skill/olchuanwu2.mp3 b/audio/skill/olchuanwu2.mp3 new file mode 100644 index 000000000..e787facf5 Binary files /dev/null and b/audio/skill/olchuanwu2.mp3 differ diff --git a/audio/skill/olcuipo1.mp3 b/audio/skill/olcuipo1.mp3 new file mode 100644 index 000000000..bbc9ca487 Binary files /dev/null and b/audio/skill/olcuipo1.mp3 differ diff --git a/audio/skill/olcuipo2.mp3 b/audio/skill/olcuipo2.mp3 new file mode 100644 index 000000000..134950e23 Binary files /dev/null and b/audio/skill/olcuipo2.mp3 differ diff --git a/audio/skill/oldianjun1.mp3 b/audio/skill/oldianjun1.mp3 new file mode 100644 index 000000000..62da83d06 Binary files /dev/null and b/audio/skill/oldianjun1.mp3 differ diff --git a/audio/skill/oldianjun2.mp3 b/audio/skill/oldianjun2.mp3 new file mode 100644 index 000000000..0e355d63f Binary files /dev/null and b/audio/skill/oldianjun2.mp3 differ diff --git a/audio/skill/oljianhe1.mp3 b/audio/skill/oljianhe1.mp3 new file mode 100644 index 000000000..cad422cc1 Binary files /dev/null and b/audio/skill/oljianhe1.mp3 differ diff --git a/audio/skill/oljianhe2.mp3 b/audio/skill/oljianhe2.mp3 new file mode 100644 index 000000000..ce7ab5c35 Binary files /dev/null and b/audio/skill/oljianhe2.mp3 differ diff --git a/audio/skill/oljianman1.mp3 b/audio/skill/oljianman1.mp3 new file mode 100644 index 000000000..707f87240 Binary files /dev/null and b/audio/skill/oljianman1.mp3 differ diff --git a/audio/skill/oljianman2.mp3 b/audio/skill/oljianman2.mp3 new file mode 100644 index 000000000..c47c503ad Binary files /dev/null and b/audio/skill/oljianman2.mp3 differ diff --git a/audio/skill/olkangrui1.mp3 b/audio/skill/olkangrui1.mp3 new file mode 100644 index 000000000..8a13265e7 Binary files /dev/null and b/audio/skill/olkangrui1.mp3 differ diff --git a/audio/skill/olkangrui2.mp3 b/audio/skill/olkangrui2.mp3 new file mode 100644 index 000000000..22a7924fa Binary files /dev/null and b/audio/skill/olkangrui2.mp3 differ diff --git a/audio/skill/olkenshang1.mp3 b/audio/skill/olkenshang1.mp3 new file mode 100644 index 000000000..5ec4fd881 Binary files /dev/null and b/audio/skill/olkenshang1.mp3 differ diff --git a/audio/skill/olkenshang2.mp3 b/audio/skill/olkenshang2.mp3 new file mode 100644 index 000000000..27bada01d Binary files /dev/null and b/audio/skill/olkenshang2.mp3 differ diff --git a/audio/skill/olnishou1.mp3 b/audio/skill/olnishou1.mp3 new file mode 100644 index 000000000..9cead6a59 Binary files /dev/null and b/audio/skill/olnishou1.mp3 differ diff --git a/audio/skill/olnishou2.mp3 b/audio/skill/olnishou2.mp3 new file mode 100644 index 000000000..ae001ccd0 Binary files /dev/null and b/audio/skill/olnishou2.mp3 differ diff --git a/audio/skill/olqiejian1.mp3 b/audio/skill/olqiejian1.mp3 new file mode 100644 index 000000000..7591b4b59 Binary files /dev/null and b/audio/skill/olqiejian1.mp3 differ diff --git a/audio/skill/olqiejian2.mp3 b/audio/skill/olqiejian2.mp3 new file mode 100644 index 000000000..a223cc523 Binary files /dev/null and b/audio/skill/olqiejian2.mp3 differ diff --git a/audio/skill/paoxiao_re_guanzhang1.mp3 b/audio/skill/paoxiao_re_guanzhang1.mp3 new file mode 100644 index 000000000..b2046b133 Binary files /dev/null and b/audio/skill/paoxiao_re_guanzhang1.mp3 differ diff --git a/audio/skill/paoxiao_re_guanzhang2.mp3 b/audio/skill/paoxiao_re_guanzhang2.mp3 new file mode 100644 index 000000000..31a4fb525 Binary files /dev/null and b/audio/skill/paoxiao_re_guanzhang2.mp3 differ diff --git a/audio/skill/sbbiyue1.mp3 b/audio/skill/sbbiyue1.mp3 new file mode 100644 index 000000000..874c5fbb1 Binary files /dev/null and b/audio/skill/sbbiyue1.mp3 differ diff --git a/audio/skill/sbbiyue2.mp3 b/audio/skill/sbbiyue2.mp3 new file mode 100644 index 000000000..7d96e7878 Binary files /dev/null and b/audio/skill/sbbiyue2.mp3 differ diff --git a/audio/skill/sblianhuan1.mp3 b/audio/skill/sblianhuan1.mp3 new file mode 100644 index 000000000..9e61e527d Binary files /dev/null and b/audio/skill/sblianhuan1.mp3 differ diff --git a/audio/skill/sblianhuan2.mp3 b/audio/skill/sblianhuan2.mp3 new file mode 100644 index 000000000..c5ef81ab9 Binary files /dev/null and b/audio/skill/sblianhuan2.mp3 differ diff --git a/audio/skill/sblijian1.mp3 b/audio/skill/sblijian1.mp3 new file mode 100644 index 000000000..a840f1f2d Binary files /dev/null and b/audio/skill/sblijian1.mp3 differ diff --git a/audio/skill/sblijian2.mp3 b/audio/skill/sblijian2.mp3 new file mode 100644 index 000000000..4f9054fc7 Binary files /dev/null and b/audio/skill/sblijian2.mp3 differ diff --git a/audio/skill/sbluanji1.mp3 b/audio/skill/sbluanji1.mp3 new file mode 100644 index 000000000..4b2b13b17 Binary files /dev/null and b/audio/skill/sbluanji1.mp3 differ diff --git a/audio/skill/sbluanji2.mp3 b/audio/skill/sbluanji2.mp3 new file mode 100644 index 000000000..6d41390af Binary files /dev/null and b/audio/skill/sbluanji2.mp3 differ diff --git a/audio/skill/sbmingce1.mp3 b/audio/skill/sbmingce1.mp3 new file mode 100644 index 000000000..9fb6600dc Binary files /dev/null and b/audio/skill/sbmingce1.mp3 differ diff --git a/audio/skill/sbmingce2.mp3 b/audio/skill/sbmingce2.mp3 new file mode 100644 index 000000000..1b5992f9e Binary files /dev/null and b/audio/skill/sbmingce2.mp3 differ diff --git a/audio/skill/sbniepan1.mp3 b/audio/skill/sbniepan1.mp3 new file mode 100644 index 000000000..5cc49f8ef Binary files /dev/null and b/audio/skill/sbniepan1.mp3 differ diff --git a/audio/skill/sbniepan2.mp3 b/audio/skill/sbniepan2.mp3 new file mode 100644 index 000000000..9c74d357c Binary files /dev/null and b/audio/skill/sbniepan2.mp3 differ diff --git a/audio/skill/sbxueyi1.mp3 b/audio/skill/sbxueyi1.mp3 new file mode 100644 index 000000000..6c4ed6d50 Binary files /dev/null and b/audio/skill/sbxueyi1.mp3 differ diff --git a/audio/skill/sbxueyi2.mp3 b/audio/skill/sbxueyi2.mp3 new file mode 100644 index 000000000..1f849102c Binary files /dev/null and b/audio/skill/sbxueyi2.mp3 differ diff --git a/audio/skill/sbzhichi1.mp3 b/audio/skill/sbzhichi1.mp3 new file mode 100644 index 000000000..c3ec9817c Binary files /dev/null and b/audio/skill/sbzhichi1.mp3 differ diff --git a/audio/skill/sbzhichi2.mp3 b/audio/skill/sbzhichi2.mp3 new file mode 100644 index 000000000..52279d486 Binary files /dev/null and b/audio/skill/sbzhichi2.mp3 differ diff --git a/audio/skill/twduoren1.mp3 b/audio/skill/twduoren1.mp3 new file mode 100644 index 000000000..8681daff8 Binary files /dev/null and b/audio/skill/twduoren1.mp3 differ diff --git a/audio/skill/twduoren2.mp3 b/audio/skill/twduoren2.mp3 new file mode 100644 index 000000000..4d9a5b50b Binary files /dev/null and b/audio/skill/twduoren2.mp3 differ diff --git a/audio/skill/twkaizeng1.mp3 b/audio/skill/twkaizeng1.mp3 new file mode 100644 index 000000000..45747d20f Binary files /dev/null and b/audio/skill/twkaizeng1.mp3 differ diff --git a/audio/skill/twkaizeng2.mp3 b/audio/skill/twkaizeng2.mp3 new file mode 100644 index 000000000..f85becc3b Binary files /dev/null and b/audio/skill/twkaizeng2.mp3 differ diff --git a/audio/skill/twliexi1.mp3 b/audio/skill/twliexi1.mp3 new file mode 100644 index 000000000..1f3acf736 Binary files /dev/null and b/audio/skill/twliexi1.mp3 differ diff --git a/audio/skill/twliexi2.mp3 b/audio/skill/twliexi2.mp3 new file mode 100644 index 000000000..5d957b023 Binary files /dev/null and b/audio/skill/twliexi2.mp3 differ diff --git a/audio/skill/twrenchou1.mp3 b/audio/skill/twrenchou1.mp3 new file mode 100644 index 000000000..662b9435a Binary files /dev/null and b/audio/skill/twrenchou1.mp3 differ diff --git a/audio/skill/twrenchou2.mp3 b/audio/skill/twrenchou2.mp3 new file mode 100644 index 000000000..6f15477a6 Binary files /dev/null and b/audio/skill/twrenchou2.mp3 differ diff --git a/audio/skill/twshexhong1.mp3 b/audio/skill/twshexhong1.mp3 new file mode 100644 index 000000000..5d48015e3 Binary files /dev/null and b/audio/skill/twshexhong1.mp3 differ diff --git a/audio/skill/twshexhong2.mp3 b/audio/skill/twshexhong2.mp3 new file mode 100644 index 000000000..4705db874 Binary files /dev/null and b/audio/skill/twshexhong2.mp3 differ diff --git a/audio/skill/twshezhong1.mp3 b/audio/skill/twshezhong1.mp3 new file mode 100644 index 000000000..5d48015e3 Binary files /dev/null and b/audio/skill/twshezhong1.mp3 differ diff --git a/audio/skill/twshezhong2.mp3 b/audio/skill/twshezhong2.mp3 new file mode 100644 index 000000000..4705db874 Binary files /dev/null and b/audio/skill/twshezhong2.mp3 differ diff --git a/audio/skill/twxuechang1.mp3 b/audio/skill/twxuechang1.mp3 new file mode 100644 index 000000000..3e3e61e72 Binary files /dev/null and b/audio/skill/twxuechang1.mp3 differ diff --git a/audio/skill/twxuechang2.mp3 b/audio/skill/twxuechang2.mp3 new file mode 100644 index 000000000..123d3b668 Binary files /dev/null and b/audio/skill/twxuechang2.mp3 differ diff --git a/audio/skill/twyangming1.mp3 b/audio/skill/twyangming1.mp3 new file mode 100644 index 000000000..48063778d Binary files /dev/null and b/audio/skill/twyangming1.mp3 differ diff --git a/audio/skill/twyangming2.mp3 b/audio/skill/twyangming2.mp3 new file mode 100644 index 000000000..b20a99a03 Binary files /dev/null and b/audio/skill/twyangming2.mp3 differ diff --git a/audio/skill/twyanshi1.mp3 b/audio/skill/twyanshi1.mp3 new file mode 100644 index 000000000..6ef526405 Binary files /dev/null and b/audio/skill/twyanshi1.mp3 differ diff --git a/audio/skill/twyanshi2.mp3 b/audio/skill/twyanshi2.mp3 new file mode 100644 index 000000000..fa42dcb10 Binary files /dev/null and b/audio/skill/twyanshi2.mp3 differ diff --git a/audio/skill/twyanshi3.mp3 b/audio/skill/twyanshi3.mp3 new file mode 100644 index 000000000..97bf83128 Binary files /dev/null and b/audio/skill/twyanshi3.mp3 differ diff --git a/audio/skill/wusheng_re_guanzhang1.mp3 b/audio/skill/wusheng_re_guanzhang1.mp3 new file mode 100644 index 000000000..302f26683 Binary files /dev/null and b/audio/skill/wusheng_re_guanzhang1.mp3 differ diff --git a/audio/skill/wusheng_re_guanzhang2.mp3 b/audio/skill/wusheng_re_guanzhang2.mp3 new file mode 100644 index 000000000..28bbc4256 Binary files /dev/null and b/audio/skill/wusheng_re_guanzhang2.mp3 differ diff --git a/audio/skill/wushuang_wechat_lvbu1.mp3 b/audio/skill/wushuang_wechat_lvbu1.mp3 new file mode 100644 index 000000000..07e6b5469 Binary files /dev/null and b/audio/skill/wushuang_wechat_lvbu1.mp3 differ diff --git a/audio/skill/wushuang_wechat_lvbu2.mp3 b/audio/skill/wushuang_wechat_lvbu2.mp3 new file mode 100644 index 000000000..64da6d09a Binary files /dev/null and b/audio/skill/wushuang_wechat_lvbu2.mp3 differ diff --git a/card/extra.js b/card/extra.js index a0fba9d92..689d0afd4 100644 --- a/card/extra.js +++ b/card/extra.js @@ -190,6 +190,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ return get.value(card); }; "step 1" + target.showCards(result.cards).setContent(function(){}); event.dialog=ui.create.dialog(get.translation(target)+'展示的手牌',result.cards); event.videoId=lib.status.videoId++; diff --git a/character/clan.js b/character/clan.js index 7bb9bc8de..951856a9e 100644 --- a/character/clan.js +++ b/character/clan.js @@ -13,15 +13,185 @@ game.import('character',function(lib,game,ui,get,ai,_status){ clan_xuncan:['male','wei',3,['clanyunshen','clanshangshen','clanfenchai','clandaojie'],['clan:颍川荀氏']], clan_hanshao:['male','qun',3,['clanfangzhen','clanliuju','clanxumin'],['clan:颍川韩氏']], clan_hanrong:['male','qun',3,['clanlianhe','clanhuanjia','clanxumin'],['clan:颍川韩氏']], + clan_wukuang:['male','qun',4,['clanlianzhu','clanmuyin'],['clan:陈留吴氏']], }, characterSort:{ clan:{ - clan_wu:['clan_wuxian','clan_wuban'], + clan_wu:['clan_wuxian','clan_wuban','clan_wukuang'], clan_xun:['clan_xunshu','clan_xunchen','clan_xuncai','clan_xuncan'], clan_han:['clan_hanshao','clan_hanrong'], }, }, skill:{ + //族吴匡 + clanlianzhu:{ + audio:2, + zhuanhuanji:true, + mark:true, + marktext:'☯', + intro:{ + content:function(storage){ + var str='转换技。每名角色A的出牌阶段限一次。'; + if(!storage) str+='A可以重铸一张牌,然后你可以重铸一张牌。若这两张牌颜色不同,则你的手牌上限-1。'; + else str+='A可以令你选择一名在你或A攻击范围内的另一名其他角色B,然后A和你可依次选择是否对B使用一张【杀】。若这两张【杀】颜色相同,则你的手牌上限+1'; + return str; + }, + }, + global:'clanlianzhu_global', + subSkill:{ + global:{ + enable:'phaseUse', + filter:function(event,player){ + return game.hasPlayer(current=>lib.skill.clanlianzhu_global.filterTarget(null,player,current)); + }, + filterCard:function(card,player){ + if(!game.hasPlayer(current=>{ + if(!current.hasSkill('clanlianzhu')||current.hasSkill('clanlianzhu_targeted')) return false; + return !current.storage.clanlianzhu; + })) return false; + var mod=game.checkMod(card,player,'unchanged','cardChongzhuable',player); + if(mod!='unchanged') return mod; + return true; + }, + selectCard:[0,1], + check:function(card){ + return 5-get.value(card); + }, + filterTarget:function(card,player,target){ + return target.hasSkill('clanlianzhu')&&!target.hasSkill('clanlianzhu_targeted')&&(!target.storage.clanlianzhu||target.storage.clanlianzhu&&game.hasPlayer(current=>{ + return current.inRangeOf(player)||current.inRangeOf(target); + })); + }, + selectTarget:function(){ + var player=_status.event.player; + var count=game.countPlayer(current=>lib.skill.clanlianzhu_global.filterTarget(null,player,current)); + return count==1?-1:1; + }, + filterOk:function(){ + var target=ui.selected.targets[0]; + if(!target) return false; + if(!target.storage.clanlianzhu){ + return ui.selected.cards.length==1; + } + return true; + }, + position:'he', + discard:false, + lose:false, + delay:false, + prompt:function(){ + var player=_status.event.player; + var bocchi=[],kita=[]; + game.countPlayer(function(target){ + if(target.hasSkill('clanlianzhu')&&!target.hasSkill('clanlianzhu_targeted')){ + if(target.storage.clanlianzhu){ + if(game.hasPlayer(current=>{ + return current.inRangeOf(player)||current.inRangeOf(target); + })) kita.add(target); + } + else{ + if(player.countCards('he')>0) bocchi.add(target); + } + } + }); + bocchi.sortBySeat(); + kita.sortBySeat(); + var str=''; + var getn=function(target){ + if(player==target) return '自己'; + return get.translation(target); + } + if(bocchi.length){ + str+='重铸一张牌,然后令'; + bocchi.forEach((current,i)=>{ + str+=get.translation(current); + if(i{ + str+=get.translation(current); + if(i{ + var mod=game.checkMod(card,player,'unchanged','cardChongzhuable',player); + if(mod!='unchanged') return mod; + return true; + }); + 'step 3' + if(result.bool){ + target.loseToDiscardpile(result.cards); + target.draw(result.cards.length); + if(get.color(cards[0])!=get.color(result.cards[0])) lib.skill.chenliuwushi.change(target,-1); + } + event.finish(); + 'step 4' + target.chooseTarget('联诛:选择其与你使用【杀】的目标',true,(card,player,target)=>{ + if(target==player||target==_status.event.sourcex) return false; + return target.inRangeOf(player)||target.inRangeOf(_status.event.sourcex); + }).set('ai',target=>{ + return get.effect(target,{name:'sha'},_status.event.player,_status.event.player); + }).set('sourcex',player); + 'step 5' + if(result.bool){ + var targetx=result.targets[0]; + event.targetx=targetx; + target.line(targetx); + event.targets=[player,target]; + event.cards=[]; + if(!event.isMine()&&!event.isOnline()) game.delayx(); + } + else event.finish(); + 'step 6' + var current=targets.shift(); + current.chooseToUse(function(card,player,event){ + if(get.name(card)!='sha') return false; + return lib.filter.filterCard.apply(this,arguments); + },'联诛:是否对'+get.translation(event.targetx)+'使用一张杀?').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){ + if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; + return lib.filter.targetEnabled.apply(this,arguments); + }).set('sourcex',event.targetx).set('addCount',false); + 'step 7' + if(result.bool) cards.push(result.card); + if(targets.length>0) event.goto(6); + 'step 8' + if(cards.length>1&&get.color(cards)!='none') lib.skill.chenliuwushi.change(target,1); + }, + ai:{ + order:4.1, + result:{ + player:function(player,target){ + if(!target.storage.clanlianzhu&&player.hasCard(card=>get.value(card)<5,'he')) return 1; + return 0; + }, + target:function(player,target){ + if(target.storage.clanlianzhu&&player.hasSha()) return 1; + return 0; + } + } + } + }, + targeted:{charlotte:true} + } + }, //族韩韶 clanfangzhen:{ audio:2, @@ -1073,7 +1243,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ str+=('弃置'+get.cnNumber(num1-num2)+'张牌,然后手牌上限+1。') } else{ - str+=('摸'+get.cnNumber(Math.min(5,num2-num1))+'张牌,然后手牌上限-1。'); + str+=('摸'+get.cnNumber(Math.min(8,num2-num1))+'张牌,然后手牌上限-1。'); } str+=('
※当前手牌上限:'+num2); var num3=player.countMark('clanguixiang_count'); @@ -1091,7 +1261,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } else{ var num1=player.countCards('h'),num2=player.getHandcardLimit(); - if(num1阳:A可以令你选择一名在你或A攻击范围内的另一名其他角色B,然后A和你可依次选择是否对B使用一张【杀】。若这两张【杀】颜色相同,则你的手牌上限+1。'; + return '转换技。每名其他角色A的出牌阶段限一次。阴:A可以重铸一张牌,然后你可以重铸一张牌。若这两张牌颜色不同,则你的手牌上限-1;阳:A可以令你选择一名在你或A攻击范围内的另一名其他角色B,然后A和你可依次选择是否对B使用一张【杀】。若这两张【杀】颜色相同,则你的手牌上限+1。'; + }, }, translate:{ clan_wuxian:'族吴苋', clanyirong:'移荣', - clanyirong_info:'出牌阶段限两次。若你的手牌数:小于X,则你可以将手牌摸至X张(至多摸五张),然后X-1;大于X,则你可以将手牌弃置至X张,然后X+1。(X为你的手牌上限)', + clanyirong_info:'出牌阶段限两次。若你的手牌数:小于X,则你可以将手牌摸至X张(至多摸八张),然后X-1;大于X,则你可以将手牌弃置至X张,然后X+1。(X为你的手牌上限)', clanguixiang:'贵相', clanguixiang_info:'锁定技。你的非出牌阶段开始前,若此阶段即将成为你本回合内的第X个阶段(X为你的手牌上限),则你终止此阶段,改为进行一个出牌阶段。', clanmuyin:'穆荫', @@ -1285,6 +1462,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ clanlianhe_info:'出牌阶段开始时,你可以横置两名角色。这些角色于自己的下个出牌阶段结束时,若其此阶段未摸牌,其令你摸X+1张牌或交给你X-1张牌(X为其此阶段获得的牌数且至多为3)。', clanhuanjia:'缓颊', clanhuanjia_info:'出牌阶段结束时,你可以与一名角色拼点。赢的角色可以使用一张拼点牌。然后若此牌:未造成过伤害,你获得另一张拼点牌;造成过伤害,你失去一个技能。', + clan_wukuang:'族吴匡', + clanlianzhu:'联诛', + clanlianzhu_info:'转换技。每名其他角色A的出牌阶段限一次。阴:A可以重铸一张牌,然后你可以重铸一张牌。若这两张牌颜色不同,则你的手牌上限-1;阳:A可以令你选择一名在你或A攻击范围内的另一名其他角色B,然后A和你可依次选择是否对B使用一张【杀】。若这两张【杀】颜色相同,则你的手牌上限+1。', clan_wu:'陈留·吴氏', clan_xun:'颍川·荀氏', diff --git a/character/diy.js b/character/diy.js index 3f9982030..78f6a007f 100755 --- a/character/diy.js +++ b/character/diy.js @@ -184,6 +184,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_maliang:['male','shu',3,['zishu','xinyingyuan']], junk_liubei:['male','shu',4,['junkrende','jijiang'],['zhu']], junk_huangyueying:['female','shu',3,['junkjizhi','junkqicai']], + junk_lidian:['male','wei',3,['xunxun','junkwangxi']], + junk_duanwei:['male','qun',4,['junklangmie']], }, characterFilter:{ key_jojiro:function(mode){ @@ -218,7 +220,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy_default:["diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji"], diy_noname:['noname'], diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya","key_youta","key_rumi","key_chihaya","key_yukito","key_asara","key_kotomi","key_mia","key_kano","db_key_liyingxia","key_erika","key_satomi"], - diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang','old_bulianshi','junk_sunquan','ol_maliang','junk_liubei','junk_huangyueying'], + diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang','old_bulianshi','junk_sunquan','ol_maliang','junk_liubei','junk_huangyueying','junk_lidian'], }, }, characterIntro:{ @@ -540,6 +542,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_lucia:['key_shizuru'], }, skill:{ + //伊莉雅 + iriya_yinji:{ + trigger:{player:'phaseUseBegin'}, + forced:true, + filter:function(event,player){ + return player.countCards('h')<17; + }, + content:function(){ + player.drawTo(17).gaintag=['iriya_yinji_tag']; + player.addSkill('iriya_yinji_tag'); + }, + subSkill:{ + tag:{ + charlotte:true, + mod:{ + cardEnabled:function(card){ + if(get.itemtype(card)=='card'){ + if(card.hasGaintag('iriya_yinji_tag')) return false; + } + else if(card.isCard&&card.cards){ + if(card.cards.some(card=>card.hasGaintag('iriya_yinji_tag'))) return false; + } + }, + }, + }, + }, + }, + iriya_haozhi:{ + enable:'phaseUse', + filterCard:true, + selectCard:[1,Infinity], + getType:function(cards,player){ + var numbers=cards.map(card=>get.number(card,player)); + }, + }, //远野美凪&远野小满 minagi_peiquan:{ enable:'phaseUse', @@ -11724,6 +11761,138 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, + //削弱版段煨 + junklangmie:{ + audio:'langmie', + trigger:{global:'phaseJieshuBegin'}, + direct:true, + filter:function(event,player){ + if(player==event.player||player.countCards('he')==0) return false; + var num=0; + if(event.player.hasHistory('sourceDamage',function(evt){ + num+=evt.num; + return num>=2; + })) return true; + var map={}; + return event.player.hasHistory('useCard',function(i){ + var name=get.type2(i.card,false); + if(!map[name]){ + map[name]=true; + return false; + } + return true; + }); + }, + content:function(){ + 'step 0' + var list=[],num=0,target=trigger.player; + event.target=target; + event.choices=[]; + var map={}; + if(target.hasHistory('useCard',function(i){ + var name=get.type2(i.card,false); + if(!map[name]){ + map[name]=true; + return false; + } + return true; + })){ + list.push('弃置一张牌,然后摸两张牌'); + event.choices.push('draw'); + } + if(target.hasHistory('sourceDamage',function(evt){ + num+=evt.num; + return num>=2; + })){ + list.push('弃置一张牌,对'+get.translation(target)+'造成1点伤害'); + event.choices.push('damage'); + } + player.chooseControl('cancel2').set('choiceList',list).set('ai',function(){ + var player=_status.event.player; + var choices=_status.event.getParent().choices.slice(0); + choices.push('cancel'); + choicex=choices.slice(0); + var getx=function(a){ + switch(a){ + case 'draw':return get.effect(player,{name:'wuzhong'},player,player); + case 'damage':return get.damageEffect(_status.event.getParent().target,player,player); + default:return 0; + } + } + choices.sort(function(a,b){ + return getx(b)-getx(a); + }); + return choicex.indexOf(choices[0]); + }).set('prompt',get.prompt('junklangmie',target)); + 'step 1' + if(result.control=='cancel2') event.finish(); + else{ + event.choice=event.choices[result.index]; + player.chooseToDiscard('he').set('ai',card=>(7-get.value(card))).logSkill=(event.choice=='draw'?'junklangmie':['junklangmie',target]); + } + 'step 2' + if(result.bool){ + if(event.choice=='draw') player.draw(2); + else target.damage(); + } + }, + }, + //李典光速通渠传说 + junkwangxi:{ + audio:'wangxi', + trigger:{player:'damageEnd',source:'damageSource'}, + filter:function(event){ + if(event._notrigger.contains(event.player)) return false; + return event.num&&event.source&&event.player&& + event.player.isAlive()&&event.source.isAlive()&&event.source!=event.player; + }, + check:function(event,player){ + if(player.isPhaseUsing()) return true; + if(event.player==player) return get.attitude(player,event.source)>-5; + return get.attitude(player,event.player)>-5; + }, + logTarget:function(event,player){ + if(event.player==player) return event.source; + return event.player; + }, + preHidden:true, + content:function(){ + 'step 0' + event.count=trigger.num; + event.target=lib.skill.junkwangxi.logTarget(trigger,player); + 'step 1' + player.draw(2).gaintag=['junkwangxi_tag']; + event.count--; + 'step 2' + var cards=player.getCards('he',(card)=>card.hasGaintag('junkwangxi_tag')); + if(cards.length>0&&target.isAlive()){ + if(cards.length==1) event._result={bool:true,cards:cards}; + else player.chooseCard('he','忘隙:交给'+get.translation(target)+'一张牌',true,function(card){ + return card.hasGaintag('junkwangxi_tag'); + }); + } + else event.goto(4); + 'step 3' + if(result.bool){ + player.give(result.cards,target); + } + 'step 4' + player.removeGaintag('junkwangxi_tag'); + if(event.count&&target.isAlive()){ + player.chooseBool(get.prompt2('junkwangxi',target)); + } + else event.finish(); + 'step 5' + if(result.bool){ + player.logSkill('junkwangxi',target); + event.goto(1); + } + }, + ai:{ + maixie:true, + maixie_hp:true + } + }, //2013标准包双蜀黑 junkjizhi:{ audio:'jizhi', @@ -17304,6 +17473,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ db_key_liyingxia:'李映夏', key_erika:'苍井绘梨花', key_satomi:'藏里见', + key_iriya:'喵呜·喵呼', + key_iriya_ab:'喵呜喵呼', lucia_duqu:'毒躯', lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你令对方获得一张花色点数随机的【毒】。
②当你因【毒】失去体力时,你改为回复等量的体力。', lucia_zhenren:'振刃', @@ -17673,6 +17844,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ tenzen_fenghuan_info:'其他角色使用的【杀】或伤害性锦囊牌结算结束后,若你是此牌的唯一目标,则你可以弃置任意张点数之和大于等于此牌点数两倍的牌,然后视为对其使用一张名称相同的牌。', tenzen_retianquan:'天全', tenzen_retianquan_info:'每回合限一次。当你使用【杀】指定目标后,你可失去1点体力或弃置一张牌,然后展示牌堆顶的三张牌(若你的体力值小于体力上限的50%,则改为展示五张牌)。这些牌中每有一张基本牌,响应此牌所需的【闪】的数量便+1。此牌结算结束后,若此牌造成过伤害,则你获得展示牌中的所有非基本牌。', + iriya_yinji:'殷极', + iriya_yinji_info:'锁定技。出牌阶段开始时,你将手牌摸至17张。你不能直接使用以此法获得的牌。', + iriya_haozhi:'豪掷', + iriya_haozhi_info:'出牌阶段,你可以弃置至少两张牌,然后摸一张牌。根据你以此法弃置的牌,你执行对应的效果。
' + +'对子:你额外摸一张牌;' + +'三带:' + +'单顺:' + +'双顺:' + +'飞机:' + +'炸弹:', key_kud:'库特莉亚芙卡', kud_qiaoshou:'巧手', @@ -18135,6 +18316,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ junkjizhi_info:'当你使用非转化的普通锦囊牌时,你可以展示牌堆顶的一张牌A。若A不为基本牌,则你获得A。否则你选择一项:⒈将A置入弃牌堆。⒉将一张手牌置于牌堆顶,然后获得A。', junkqicai:'奇才', junkqicai_info:'锁定技。①你使用锦囊牌无距离限制。②你装备区内的非坐骑牌不能被其他角色弃置。', + junkwangxi:'忘隙', + junkwangxi_info:'当你对其他角色造成1点伤害后,或受到其他角色造成的1点伤害后,你可以摸两张牌,然后交给其其中一张牌。', + junkwangxi_tag:'invisible', + junklangmie:'狼灭', + junklangmie_info:'其他角色的结束阶段开始时,你可以选择一项:⒈若其本回合内使用过某种类型的牌超过一张,则你弃置一张牌并摸两张牌。⒉若其本回合累计造成过的伤害大于1,则你弃置一张牌,然后对其造成1点伤害。', ol_guohuai_ab:'郭淮', old_jiakui:'通渠贾逵', ol_guohuai:'三血郭淮', @@ -18143,6 +18329,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_bulianshi:'削弱步练师', ol_maliang:'削弱马良', ol_maliang_ab:'马良', + junk_lidian:'削弱李典', + junk_lidian_ab:'李典', + junk_duanwei:'削弱段煨', + junk_duanwei_ab:'段煨', diy_tieba:'吧友设计', diy_xushi:'玩点论杀·虚实篇', diff --git a/character/mobile.js b/character/mobile.js index b6e81cc93..9ba8fcfed 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -15,7 +15,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mobile_shijiyan:['sp_cuiyan','sp_zhangchangpu','sp_jiangwan','sp_jiangqing','sp_lvfan','sp_huangfusong','sp_zhujun','liuba'], mobile_sunben:["re_sunben"], mobile_standard:["xin_xiahoudun","xin_zhangfei"], - mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong","re_caiwenji","re_xunyu","re_dianwei","xin_zhoutai"], + mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong","re_caiwenji","re_xunyu","re_dianwei","xin_zhoutai","re_yanwen"], mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin","re_wuguotai","re_gaoshun",'re_caozhi'], mobile_yijiang2:["xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui","re_bulianshi"], mobile_yijiang3:["re_liru","xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"], @@ -26,6 +26,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + re_yanwen:["male","qun",4,["reshuangxiong"]], xin_zhoutai:['male','wu',4,['buqu','new_fenji']], re_caozhi:['male','wei',3,['reluoying','rejiushi','chengzhang']], yj_weiyan:['male','qun',5,['mbguli','mbaosi']], @@ -18228,7 +18229,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ duoji:'夺冀', duoji_info:'限定技,出牌阶段,你可弃置两张手牌并选择一名装备区有牌的其他角色。你获得其装备区里的所有牌。', re_handang:'手杀韩当', - luotong:'骆统', + luotong:'手杀骆统', qinzheng:'勤政', qinzheng_info:'锁定技,当你使用或打出牌时,若你本局游戏内使用或打出过的牌数和:为3的倍数,你从牌堆中获得一张【杀】或【闪】;为5的倍数,你从牌堆中获得一张【桃】或【酒】;为8的倍数,你从牌堆中获得一张【决斗】或【无中生有】(可获得对应的衍生替换牌)。', sp_duyu:'手杀杜预', @@ -18711,6 +18712,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mbaosi:'骜肆', mbaosi_info:'锁定技。当你于出牌阶段对一名攻击范围内的角色造成伤害后,你于此阶段对其使用牌无次数限制。', xin_zhoutai:'手杀周泰', + re_yanwen:"手杀颜良文丑", mobile_standard:'手杀异构·标准包', mobile_shenhua:'手杀异构·神话再临', diff --git a/character/offline.js b/character/offline.js index 63778f26b..88aad77ff 100644 --- a/character/offline.js +++ b/character/offline.js @@ -303,80 +303,80 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.name!='phase'||game.phaseNumber==0; }, logTarget:()=>game.filterPlayer(), - equips:[ - ['heart',5,'chitu'], - ['diamond',13,'zixin'], - ['spade',5,'jueying'], - ['diamond',13,'hualiu'], - ['club',5,'dilu'], - ['spade',13,'dawan'], - ['heart',13,'zhuahuang'], - ['heart',3,'jingfanma'] - ], + equips:[ + ['heart',5,'chitu'], + ['diamond',13,'zixin'], + ['spade',5,'jueying'], + ['diamond',13,'hualiu'], + ['club',5,'dilu'], + ['spade',13,'dawan'], + ['heart',13,'zhuahuang'], + ['heart',3,'jingfanma'] + ], content:function(){ - 'step 0' - event.targets=game.filterPlayer().sortBySeat(_status.firstAct2||game.zhong||game.zhu||_status.firstAct||player); - event.target=event.targets.shift(); - game.delayx(); - 'step 1' - player.line(target,'green'); - target.chooseToUse('狩骊:使用一张坐骑牌并摸一张牌,或使用一张坐骑牌指示物',function(card,player,event){ - if(get.subtype(card)!='equip3'&&get.subtype(card)!='equip4'&&get.subtype(card)!='equip6') return false; - return lib.filter.filterCard.apply(this,arguments); - }).set('ai',()=>1); - 'step 2' - if(result.bool) target.draw(); + 'step 0' + event.targets=game.filterPlayer().sortBySeat(_status.firstAct2||game.zhong||game.zhu||_status.firstAct||player); + event.target=event.targets.shift(); + game.delayx(); + 'step 1' + player.line(target,'green'); + target.chooseToUse('狩骊:使用一张坐骑牌并摸一张牌,或使用一张坐骑牌指示物',function(card,player,event){ + if(get.subtype(card)!='equip3'&&get.subtype(card)!='equip4'&&get.subtype(card)!='equip6') return false; + return lib.filter.filterCard.apply(this,arguments); + }).set('ai',()=>1); + 'step 2' + if(result.bool) target.draw(); else{ - var cardx=lib.skill.psshouli_init.equips.randomRemove(); - if(!cardx) return; - cardx={ - suit:cardx[0], - number:cardx[1], - name:cardx[2], - } - var card=game.createCard(cardx); - if(!_status.psshouli_equips) _status.psshouli_equips=[]; - _status.psshouli_equips.push(card.cardid); - if(card){ - target.chooseUseTarget(card,true,'nopopup','noanimate'); - player.addSkill('psshouli_remove'); - } - } - 'step 3' - event.target=event.targets.shift(); - if(event.target){ - event.goto(1); - } + var cardx=lib.skill.psshouli_init.equips.randomRemove(); + if(!cardx) return; + cardx={ + suit:cardx[0], + number:cardx[1], + name:cardx[2], + } + var card=game.createCard(cardx); + if(!_status.psshouli_equips) _status.psshouli_equips=[]; + _status.psshouli_equips.push(card.cardid); + if(card){ + target.chooseUseTarget(card,true,'nopopup','noanimate'); + player.addSkill('psshouli_remove'); + } + } + 'step 3' + event.target=event.targets.shift(); + if(event.target){ + event.goto(1); + } }, }, remove:{ - trigger:{ - global:['loseAfter','loseAsyncAfter','cardsDiscardAfter','equipAfter'], - }, - forced:true, - charlotte:true, - popup:false, + trigger:{ + global:['loseAfter','loseAsyncAfter','cardsDiscardAfter','equipAfter'], + }, + forced:true, + charlotte:true, + popup:false, firstDo:true, - forceDie:true, - filter:function(event,player){ - if(!_status.psshouli_equips||!_status.psshouli_equips.length) return false; - var cards=event.getd(); - return cards.filter(i=>_status.psshouli_equips.contains(i.cardid)).length; - }, - content:function(){ - var cards=trigger.getd(),remove=[]; - for(var card of cards){ - if(_status.psshouli_equips.contains(card.cardid)){ - _status.psshouli_equips.remove(card.cardid); - remove.push(card); - } - } - if(remove.length){ - game.cardsGotoSpecial(remove); + forceDie:true, + filter:function(event,player){ + if(!_status.psshouli_equips||!_status.psshouli_equips.length) return false; + var cards=event.getd(); + return cards.filter(i=>_status.psshouli_equips.contains(i.cardid)).length; + }, + content:function(){ + var cards=trigger.getd(),remove=[]; + for(var card of cards){ + if(_status.psshouli_equips.contains(card.cardid)){ + _status.psshouli_equips.remove(card.cardid); + remove.push(card); + } + } + if(remove.length){ + game.cardsGotoSpecial(remove); lib.skill.psshouli_init.equips.addArray(remove.map(i=>[i.suit,i.number,i.name])); - game.log('坐骑指示物',remove,'被移出了游戏'); - } - }, + game.log('坐骑指示物',remove,'被移出了游戏'); + } + }, } }, }, @@ -403,38 +403,38 @@ game.import('character',function(lib,game,ui,get,ai,_status){ prompt:'请选择【杀】的目标', selectCard:-1, }, - pshengwu:{ - audio:'hengwu', - trigger:{player:['useCard','respond']}, - direct:true, - filter:function(event,player){ - return game.hasPlayer(i=>i.countCards('ej',cardx=>get.type(cardx)=='equip'&&get.suit(event.card)==get.suit(cardx))); - }, - content:function(){ - 'step 0' - var suit=get.suit(trigger.card); + pshengwu:{ + audio:'hengwu', + trigger:{player:['useCard','respond']}, + direct:true, + filter:function(event,player){ + return game.hasPlayer(i=>i.countCards('ej',cardx=>get.type(cardx)=='equip'&&get.suit(event.card)==get.suit(cardx))); + }, + content:function(){ + 'step 0' + var suit=get.suit(trigger.card); var prompt2='弃置任意张'+get.translation(suit)+'手牌,然后摸X张牌(X为你弃置的牌数+'+game.filterPlayer().map(i=>i.countCards('ej',cardx=>get.type(cardx)=='equip'&&get.suit(trigger.card)==get.suit(cardx))).reduce((p,c)=>p+c)+')'; - player.chooseToDiscard('h',[1,player.countCards('h',{suit:suit})],{suit:suit}).set('prompt',get.prompt('pshengwu')).set('prompt2',prompt2).set('ai',card=>{ - var player=_status.event.player; - if(_status.event.goon) return 12-get.value(card); + player.chooseToDiscard('h',[1,player.countCards('h',{suit:suit})],{suit:suit}).set('prompt',get.prompt('pshengwu')).set('prompt2',prompt2).set('ai',card=>{ + var player=_status.event.player; + if(_status.event.goon) return 12-get.value(card); if(player.countCards('h')>50) return 0; - if(player==_status.currentPhase){ - if(['shan','caochuan','tao','wuxie'].contains(card.name)) return 8-get.value(card); - return 6-get.value(card); - } - return 5.5-get.value(card); - }).set('goon',player.countCards('h',{suit:suit})==1).set('logSkill','pshengwu'); - 'step 1' - if(result.bool){ - var num=result.cards.length; - player.draw(num+game.filterPlayer().map(i=>i.countCards('ej',cardx=>get.type(cardx)=='equip'&&get.suit(trigger.card)==get.suit(cardx))).reduce((p,c)=>p+c)); - } - }, - ai:{ - threaten:100, - reverseEquip:true, - } - }, + if(player==_status.currentPhase){ + if(['shan','caochuan','tao','wuxie'].contains(card.name)) return 8-get.value(card); + return 6-get.value(card); + } + return 5.5-get.value(card); + }).set('goon',player.countCards('h',{suit:suit})==1).set('logSkill','pshengwu'); + 'step 1' + if(result.bool){ + var num=result.cards.length; + player.draw(num+game.filterPlayer().map(i=>i.countCards('ej',cardx=>get.type(cardx)=='equip'&&get.suit(trigger.card)==get.suit(cardx))).reduce((p,c)=>p+c)); + } + }, + ai:{ + threaten:100, + reverseEquip:true, + } + }, //战役篇田丰 gzsuishi:{ audio:'suishi', @@ -2503,58 +2503,58 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, //一战成名·群雄逐鹿·长安之战专属神贾诩 - zybishi:{ - audio:2, - trigger:{target:'useCardToTargeted'}, - filter:function(event,player){ - return event.card.name=='sha'&&event.player!=player; - }, - check:function(event,player){ - var effect=0; - if(event.targets&&event.targets.length){ - for(var i=0; i0; - }, - content:function(){ - 'step 0' - player.gainPlayerCard(trigger.player,true,'he'); - 'step 1' - if(result.bool&&result.cards&&result.cards.length){ - var card=result.cards[0]; - if(get.suit(card,trigger.player)=='heart'){ - trigger.player.recover(); - } - } - }, - }, + }, + }, + zyjianbing:{ + audio:2, + trigger:{global:'damageBegin3'}, + logTarget:'player', + filter:function(event,player){ + return event.player!=player&&event.player.isIn()&&event.card&&event.card.name=='sha'&&event.player.countGainableCards(player,'he')>0; + }, + content:function(){ + 'step 0' + player.gainPlayerCard(trigger.player,true,'he'); + 'step 1' + if(result.bool&&result.cards&&result.cards.length){ + var card=result.cards[0]; + if(get.suit(card,trigger.player)=='heart'){ + trigger.player.recover(); + } + } + }, + }, //战役篇改王允 zylianji:{ audio:'lianji', @@ -3431,6 +3431,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, filter:function(event,player){ if(event.getParent().name=='_yongjian_zengyu') return false; + if(event.getParent('yjyibing').player==player) return false; var evt=event.getParent('phaseDraw'),hs=player.getCards('h'),cards=event.getg(player); return cards.length>0&&(!evt||evt.player!=player)&&cards.filter(function(card){ return hs.contains(card)&&game.checkMod(card,player,'unchanged','cardEnabled2',player)!==false; @@ -5954,7 +5955,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yjsancai:'散财', yjsancai_info:'出牌阶段限一次,你可以展示所有手牌。若这些牌的类别均相同,则你可以发动一次〖赠予〗(可以选择任意手牌)。', yjyibing:'义兵', - yjyibing_info:'当你不因〖赠予〗而于摸牌阶段外获得牌时,你可以将此次获得的所有牌当做【杀】使用(无距离限制且不计入使用次数)。', + yjyibing_info:'当你不因〖赠予〗且不因〖义兵〗的嵌套结算而于摸牌阶段外获得牌时,你可以将此次获得的所有牌当做【杀】使用(无距离限制且不计入使用次数)。', yj_caohong:'用间曹洪', yj_caohong_ab:'曹洪', yjlifeng:'厉锋', @@ -6010,10 +6011,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yjluoshen_info:'准备阶段,你可以判定并获得判定牌,且可重复此流程直到结果的颜色不同。', //线下E系列 一战成名 战役篇官盗 shen_jiaxu:'神贾诩', - zybishi:'避世', - zybishi_info:'当你成为【杀】的目标后,你可以令使用者摸一张牌,然后令此【杀】无效。', - zyjianbing:'谏兵', - zyjianbing_info:'当一名其他角色受到执行【杀】的效果而受到伤害时,你可以获得其一张牌。若此牌花色为♥,其回复1点体力。', + zybishi:'避世', + zybishi_info:'当你成为【杀】的目标后,你可以令使用者摸一张牌,然后令此【杀】无效。', + zyjianbing:'谏兵', + zyjianbing_info:'当一名其他角色受到执行【杀】的效果而受到伤害时,你可以获得其一张牌。若此牌花色为♥,其回复1点体力。', pe_wangyun:'战役篇王允', pe_wangyun_ab:'王允', zylianji:'连计', @@ -6125,10 +6126,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //S特 ps_shen_machao:'S特神马超', ps_shen_machao_ab:'神马超', - psshouli:'狩骊', - psshouli_info:'锁定技。①游戏开始时,所有角色依次选择一项:1.使用一张坐骑牌,然后摸一张牌;2.随机从游戏外的八张坐骑牌指示物中使用一张。②你可以将场上一张进攻坐骑当【杀】,防御坐骑当【闪】使用或打出,若此坐骑牌的拥有者不为你,则其非锁定技于本回合内失效。且当你或其于本回合内受到伤害时,此伤害+1且改为雷属性。', - pshengwu:'横骛', - pshengwu_info:'当你使用或打出牌时,若场上有该花色的装备牌,你可以弃置任意张该花色的手牌,然后摸X张牌(X为你弃置的牌数与场上与此牌花色相同的装备牌数之和)。', + psshouli:'狩骊', + psshouli_info:'锁定技。①游戏开始时,所有角色依次选择一项:1.使用一张坐骑牌,然后摸一张牌;2.随机从游戏外的八张坐骑牌指示物中使用一张。②你可以将场上一张进攻坐骑当【杀】,防御坐骑当【闪】使用或打出,若此坐骑牌的拥有者不为你,则其非锁定技于本回合内失效。且当你或其于本回合内受到伤害时,此伤害+1且改为雷属性。', + pshengwu:'横骛', + pshengwu_info:'当你使用或打出牌时,若场上有该花色的装备牌,你可以弃置任意张该花色的手牌,然后摸X张牌(X为你弃置的牌数与场上与此牌花色相同的装备牌数之和)。', //线下K系列木盒 pk_sp_duyu:'K系列杜预', pk_sp_duyu_ab:'杜预', diff --git a/character/rank.js b/character/rank.js index 1209242f4..1c991c20a 100644 --- a/character/rank.js +++ b/character/rank.js @@ -291,6 +291,11 @@ window.noname_character_rank={ 'tw_jiangji', 'tw_niufudongxie', 'tw_shen_lvmeng', + 'dc_tengfanglan', + 'xia_lusu', + 'zhanghua', + 'zerong', + 'wangguan', 'key_misuzu', 'key_sunohara', 'key_umi', @@ -569,6 +574,8 @@ window.noname_character_rank={ 'mengjie', 'yj_qiaozhou', 'yj_sufei', + 'dc_ruiji', + 'yuantanyuanxiyuanshang', ], bp:[ 'chess_diaochan', @@ -889,6 +896,15 @@ window.noname_character_rank={ 'dc_huanghao', 'dc_yangbiao', 'ns_sundeng', + 'dc_huojun', + 'ol_zhangyì', + 'ol_zhujun', + 'liyan', + 're_lidian', + 'qinlang', + 'xia_dianwei', + 'xia_zhaoe', + 'zhangkai', ], b:[ 'diy_feishi', @@ -956,7 +972,7 @@ window.noname_character_rank={ 'gongsunyuan', 'guotufengji', 'xin_liru', - 'liyan', + 'old_liyan', 'cenhun', 'huanghao', 'sunziliufang', @@ -1012,6 +1028,7 @@ window.noname_character_rank={ 're_madai', 'wangyi', 'guanzhang', + 're_guanzhang', 'ns_chengpu', 're_sunluban', 're_caoxiu', @@ -1165,6 +1182,13 @@ window.noname_character_rank={ 'dc_fuwan', 'ns_duji', 'yj_weiyan', + 'dc_sunziliufang', + 'maxiumatie', + 'chendao', + 'quhuang', + 'xia_xiahouzie', + 'xielingyu', + 'ol_yanwen', ], bm:[ 'diy_xizhenxihong', @@ -1177,7 +1201,7 @@ window.noname_character_rank={ 'caocao', 'huangzhong', 'xuhuang', - 'chendao', + 'old_chendao', 'dongzhuo', 'taishici', 'yanwen', @@ -1239,7 +1263,7 @@ window.noname_character_rank={ 're_baosanniang', 're_xugong', 're_simayi', - 're_lidian', + 'old_re_lidian', 're_xuzhu', 're_xushu', 're_lvmeng', @@ -1348,6 +1372,8 @@ window.noname_character_rank={ 'hanlong', 'oldre_liubiao', 'wuanguo', + 'qiaorui', + 'clan_wukuang', ], c:[ 'xiahoudun', @@ -1443,6 +1469,9 @@ window.noname_character_rank={ 'new_caoren', 'old_handang', 'old_zhoutai', + 'tengfanglan', + 'junk_lidian', + 'junk_duanwei', ], rarity:{ legend:[ @@ -1579,6 +1608,8 @@ window.noname_character_rank={ 'shen_zhangjiao', 'sb_machao', 'dc_zhouxuān', + 'dc_tengfanglan', + 're_lidian', 'tw_jiangji', 'tw_niufudongxie', 'tw_shen_lvmeng', @@ -1804,6 +1835,8 @@ window.noname_character_rank={ 'xuelingyun', 'dc_zhaotongzhaoguang', 'mengjie', + 'dc_ruiji', + 'xia_zhaoe', 'key_kano', 'key_haruko', 'key_akiko', @@ -2268,6 +2301,14 @@ window.noname_character_rank={ 'yj_qiaozhou', 'yj_sufei', 'yj_weiyan', + 'dc_huojun', + 'ol_zhangyì', + 'ol_zhujun', + 'xia_dianwei', + 'xia_xiahouzie', + 'zhangkai', + 'wangguan', + 'ol_yanwen', ], junk:[ 'sunshao', @@ -2307,6 +2348,10 @@ window.noname_character_rank={ 'old_jiakui', 'new_caoren', 'old_zhoutai', + 'dongtuna', + 'junk_lidian', + 'junk_duanwei', + 'zerong', ], } }; diff --git a/character/refresh.js b/character/refresh.js index 91fbd42b8..b20c8e0f8 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ refresh:{ refresh_standard:["re_caocao","re_simayi","re_guojia","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong",'re_gongsunzan'], refresh_feng:['caoren','ol_xiahouyuan','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji','ol_huangzhong'], - refresh_huo:["ol_sp_zhugeliang","ol_xunyu","ol_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"], + refresh_huo:["ol_sp_zhugeliang","ol_xunyu","ol_dianwei","ol_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"], refresh_lin:['re_menghuo','ol_sunjian','re_caopi','ol_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'], refresh_shan:['ol_jiangwei','ol_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai','re_zhanghe'], refresh_yijiang1:['xin_wuguotai','xin_gaoshun','dc_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua','dc_xushu','re_chengong'], @@ -127,7 +127,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_pangde:['male','qun',4,['mashu','rejianchu']], ol_xuhuang:['male','wei',4,['olduanliang','oljiezi']], ol_sp_zhugeliang:["male","shu",3,["bazhen","olhuoji","olkanpo","cangzhuo"],[]], - re_yanwen:["male","qun",4,["reshuangxiong"],[]], + ol_yanwen:["male","qun",4,["olshuangxiong"],[]], ol_yuanshao:['male','qun',4,['olluanji','olxueyi'],['zhu']], re_menghuo:['male','shu',4,['huoshou','rezaiqi']], ol_dongzhuo:['male','qun',8,['oljiuchi','roulin','benghuai','olbaonue'],['zhu']], @@ -157,6 +157,108 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_guohuai:['xiahouyuan','zhanghe'], }, skill:{ + //颜良文丑 + olshuangxiong:{ + audio:2, + trigger:{player:'phaseDrawEnd'}, + direct:true, + filter:(event,player)=>player.countCards('he')>0, + content:function(){ + 'step 0' + player.chooseToDiscard('he',get.prompt('olshuangxiong'),'弃置一张牌,然后你本回合内可以将一张与此牌颜色不同的牌当做【决斗】使用').set('ai',function(card){ + if(!_status.event.goon) return 0.01-get.value(card); + var player=_status.event.player,color=get.color(card),effect=0,cards=player.getCards('hes'),sha=false; + for(var cardx of cards){ + if(cardx==card||get.color(cardx)==color) continue; + var cardy=get.autoViewAs({name:'juedou'},[cardx]),eff1=player.getUseValue(cardy); + if(get.position(cardx)=='e'){ + var eff2=get.value(cardx); + if(eff1>eff2) effect+=(eff1-eff2); + continue; + } + else if(get.name(cardx)=='sha'){ + if(sha){ + effect+=eff1; + continue; + } + else sha=true; + } + var eff2=player.getUseValue(cardx,null,true); + if(eff1>eff2) effect+=(eff1-eff2); + } + return effect-get.value(card); + }).set('goon',player.hasValueTarget({name:'juedou'})&&!player.hasSkill('olshuangxiong_effect')).logSkill='olshuangxiong'; + 'step 1' + if(result.bool){ + var color=get.color(result.cards[0],player); + player.markAuto('olshuangxiong_effect',[color]); + player.addTempSkill('olshuangxiong_effect'); + } + }, + group:'olshuangxiong_jianxiong', + subSkill:{ + effect:{ + audio:'olshuangxiong', + enable:'chooseToUse', + viewAs:{name:'juedou'}, + position:'hes', + viewAsFilter:function(player){ + return player.hasCard(card=>lib.skill.olshuangxiong_effect.filterCard(card,player),'hes'); + }, + filterCard:function(card,player){ + var color=get.color(card),colors=player.getStorage('olshuangxiong_effect'); + for(var i of colors){ + if(color!=i) return true; + }; + return false; + }, + prompt:function(){ + var colors=_status.event.player.getStorage('olshuangxiong_effect'); + var str='将一张颜色'; + for(var i=0;i0) str+='或'; + str+='不为'; + str+=get.translation(colors[i]); + } + str+='的牌当做【决斗】使用'; + return str; + }, + check:function(card){ + var player=_status.event.player; + if(get.position(card)=='e'){ + var raw=get.value(card); + var eff=player.getUseValue(get.autoViewAs({name:'juedou'},[card])); + return eff-raw; + } + var raw=player.getUseValue(card,null,true); + var eff=player.getUseValue(get.autoViewAs({name:'juedou'},[card])); + return eff-raw; + }, + onremove:true, + charlotte:true, + ai:{order:7}, + }, + jianxiong:{ + audio:'olshuangxiong', + trigger:{player:'phaseJieshuBegin'}, + forced:true, + locked:false, + filter:function(event,player){ + return player.hasHistory('damage',function(evt){ + //Disable Umi Kato's chaofan + return evt.card&&evt.cards&&evt.cards.some(card=>get.position(card,true)); + }); + }, + content:function(){ + var cards=[]; + player.getHistory('damage',function(evt){ + if(evt.card&&evt.cards) cards.addArray(evt.cards.filter(card=>get.position(card,true))); + }); + if(cards.length) player.gain(cards,'gain2'); + }, + }, + }, + }, //新李典 xinwangxi:{ audio:'wangxi', @@ -189,19 +291,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(cards.length==1) event._result={bool:true,cards:cards}; else player.chooseCard('he','忘隙:交给'+get.translation(target)+'一张牌',true); } - else event.goto(5); + else event.goto(4); 'step 3' if(result.bool){ player.give(result.cards,target); } 'step 4' - game.delayx(); - 'step 5' if(event.count&&target.isAlive()){ player.chooseBool(get.prompt2('xinwangxi',target)); } else event.finish(); - 'step 6' + 'step 5' if(result.bool){ player.logSkill('xinwangxi',target); event.goto(1); @@ -232,6 +332,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } event._result={cards:target.getCards('h').randomGets(1)}; "step 1" + target.showCards(result.cards).setContent(function(){}); event.dialog=ui.create.dialog(get.translation(target)+'展示的手牌',result.cards); event.videoId=lib.status.videoId++; @@ -1789,6 +1890,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, enable:'phaseUse', usable:1, + zhuSkill:true, filter:function(event,player){ if(!player.hasZhuSkill('reqinwang')) return false; return game.hasPlayer(function(current){ @@ -3927,7 +4029,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai1:function(card){ var goon=false,player=_status.event.player; for(var i of _status.event.targets){ - if(get.attitude(i,target)>0&&get.attitude(target,i)>0) goon=true;break; + if(get.attitude(i,player)>0&&get.attitude(player,i)>0) goon=true;break; } if(goon){ if(!player.hasValueTarget(card)||card.name=='sha'&&player.countCards('h',function(cardx){ @@ -4188,7 +4290,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.type2(card)=='trick'&&get.color(card)=='black') return false; }, }, - trigger:{player:'damageBegin2'}, + trigger:{player:'damageBegin4'}, forced:true, filter:function(event,player){ return player==_status.currentPhase; @@ -6935,7 +7037,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }).set('callback',function(){ if(event.judgeResult.suit=='spade'){ player.recover(); - if(get.position(event.judgeResult.card)=='d') player.gain(result.card,'gain2','log') + if(get.position(event.judgeResult.card,true)=='o') player.gain(event.judgeResult.card,'gain2','log') } }).judge2=function(result){ return result.bool?true:false; @@ -13302,8 +13404,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ viewAs:{name:'jiu'}, position:'hs', viewAsFilter:function(player){ - if(!player.countCards('hs',{suit:'spade'})) return false; - return true; + return player.hasCard(card=>get.suit(card)=='spade','hs'); }, prompt:'将一张黑桃手牌当酒使用', check:function(cardx,player){ @@ -13353,7 +13454,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ locked:true, direct:true, filter:function(event,player){ - if(event.name=='chooseToUse') return player.countCards('h',{suit:'spade'})>0; + if(event.name=='chooseToUse') return player.hasCard(card=>get.suit(card)=='spade','hs'); return event.card&&event.card.name=='sha'&&event.getParent(2).jiu==true&&!player.hasSkill('oljiuchi_air'); }, content:function(){ @@ -13468,7 +13569,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_huaxiong:"界华雄", "ol_sp_zhugeliang":"界卧龙", - "re_yanwen":"界颜良文丑", xin_yuanshao:"手杀袁绍", re_zhangjiao:'界张角', re_sunce:'界孙策', @@ -14092,6 +14192,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ olkanpo_info:'①你可以将一张黑色牌当【无懈可击】使用。②你使用的【无懈可击】不可被响应。', xinwangxi:'忘隙', xinwangxi_info:'当你对其他角色造成1点伤害后,或受到其他角色造成的1点伤害后,你可以摸两张牌,然后交给其一张牌。', + ol_yanwen:'界颜良文丑', + olshuangxiong:'双雄', + olshuangxiong_info:'①摸牌阶段结束时,你可以弃置一张牌。若如此做,你本回合内可以将一张与此牌颜色不同的牌当做【决斗】使用。②结束阶段,你从弃牌堆中获得本回合内对你造成伤害的所有牌。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/sb.js b/character/sb.js index 02ad9f3a5..f510f87c1 100644 --- a/character/sb.js +++ b/character/sb.js @@ -26,7 +26,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sb_zhangfei:['male','shu',4,['sbpaoxiao','sbxieji']], sb_zhaoyun:['male','shu',4,['sblongdan','sbjizhu']], sb_liubei:['male','shu',4,['sbrende','sbzhangwu','sbjijiang'],['zhu']], - sb_jiangwei:['male','shu',4,['sbtiaoxin','sbzhiji']], + sb_jiangwei:['male','shu','4/4/1',['sbtiaoxin','sbzhiji']], sb_fazheng:['male','shu',3,['sbxuanhuo','sbenyuan']], sb_chengong:['male','qun',3,['sbmingce','sbzhichi'],['unseen']], sb_diaochan:['female','qun',3,['sblijian','sbbiyue'],['unseen']], @@ -655,7 +655,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return lib.filter.filterCard.apply(this,arguments); },'挑衅:对'+get.translation(player)+'使用一张杀,或交给其一张牌').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){ if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false; - return lib.filter.filterTarget.apply(this,arguments); + return lib.filter.targetEnabled.apply(this,arguments); }).set('sourcex',player); 'step 1' if(!result.bool&&target.countCards('he')>0){ @@ -735,7 +735,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.awakenSkill('sbzhiji'); player.loseMaxHp(); 'step 1' - player.chooseTarget('志继:是否令任意名角色获得“北伐”标记?',[1,Infinity]).set('ai',target=>-get.attitude(player,target)); + player.chooseTarget('志继:令至少一名角色获得“北伐”标记',true,[1,Infinity]).set('ai',target=>-get.attitude(player,target)); 'step 2' if(result.bool){ player.line(result.targets,'fire'); @@ -3569,10 +3569,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return event.card.name=='sha'&&player.countMark('splveying')>1; }, - logTarget:'targets', content:function(){ + 'step 0' player.removeMark('splveying',2); - for(var i of trigger.targets) player.discardPlayerCard(i,true,'he'); + player.draw(); + 'step 1' + player.chooseUseTarget('guohe'); }, marktext:'椎', intro:{ @@ -3788,7 +3790,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ spxianchou_info:'当你受到有来源的伤害后,你可选择一名不为伤害来源的其他角色。该角色可以弃置一张牌,然后视为对伤害来源使用一张【杀】(无距离限制)。若其因此【杀】造成了伤害,则其摸一张牌,你回复1点体力。', liucheng:'刘赪', splveying:'掠影', - splveying_info:'锁定技。①每回合限两次,当你使用【杀】指定目标后,你获得一个“椎”。②当你使用的【杀】结算结束后,若你的“椎”数大于1,则你弃置两个“椎”,然后弃置所有目标角色的各一张手牌。', + splveying_info:'锁定技。①每回合限两次,当你使用【杀】指定目标后,你获得一个“椎”。②当你使用的【杀】结算结束后,若你的“椎”数大于1,则你弃置两个“椎”并摸一张牌,然后可以视为使用一张【过河拆桥】。', spyingwu:'莺舞', spyingwu_info:'若你拥有〖掠影〗,则:①每回合限两次,当你使用非伤害类普通锦囊牌指定目标后,你获得一个“椎”。②当你使用的非伤害类普通锦囊牌结算结束后,若你的“椎”数大于1,则你弃置两个“椎”并摸一张牌,然后可以视为使用一张【杀】。', sb_huangzhong:'谋黄忠', @@ -3889,14 +3891,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sbrende:'仁德', sbrende_info:'①出牌阶段每名角色限一次。你可以将任意张牌交给一名其他角色,然后你获得等量“仁望”标记(至多为8)。②每回合限一次。你可以移去2枚“仁望”,视为使用或打出一张基本牌。③出牌阶段开始时,你获得2枚“仁望”。', sbzhangwu:'章武', - sbzhangwu_info:'限定技。出牌阶段,你可以令所有于本局游戏成为过〖仁德②〗目标的其他角色依次交给你X张牌,然后你回复3点体力并失去〖仁德〗(X为游戏轮数-1,且至多为3)。', + sbzhangwu_info:'限定技。出牌阶段,你可以令所有于本局游戏成为过〖仁德①〗目标的其他角色依次交给你X张牌,然后你回复3点体力并失去〖仁德〗(X为游戏轮数-1,且至多为3)。', sbjijiang:'激将', sbjijiang_info:'主公技。出牌阶段结束时,你可以选择一名体力值不小于你的其他蜀势力角色A和一名在A攻击范围内的角色B。A选择一项:1.视为对B使用一张【杀】;2.下一个出牌阶段开始前,跳过此阶段。', sb_jiangwei:'谋姜维', sbtiaoxin:'挑衅', - sbtiaoxin_info:'蓄力技(4/4)。①出牌阶段限一次。你可以选择至多X名角色(X为你的蓄力值),令这些角色选择一项:1.对你使用一张【杀】;2.交给你一张牌。然后你消耗等同于你选择的目标数的蓄力值。②当你于弃牌阶段弃置牌后,你获得等量蓄力值。', + sbtiaoxin_info:'蓄力技(4/4)。①出牌阶段限一次。你可以选择至多X名角色(X为你的蓄力值),令这些角色选择一项:1.对你使用一张【杀】(无距离限制);2.交给你一张牌。然后你消耗等同于你选择的目标数的蓄力值。②当你于弃牌阶段弃置牌后,你获得等量蓄力值。', sbzhiji:'志继', - sbzhiji_info:'觉醒技。准备阶段,若你因〖挑衅①〗消耗过至少4点蓄力值,你减1点体力上限,令任意名角色获得“北伐”标记并获得如下效果直到你的下回合开始:其使用牌只能指定你或其为目标。', + sbzhiji_info:'觉醒技。准备阶段,若你因〖挑衅①〗消耗过至少4点蓄力值,你减1点体力上限,令至少一名角色获得“北伐”标记并获得如下效果直到你的下回合开始:其使用牌只能指定你或其为目标。', sb_fazheng:'谋法正', sbxuanhuo:'眩惑', sbxuanhuo_info:'①出牌阶段限一次。你可以将一张牌交给一名没有“眩”标记的其他角色,然后令其获得“眩”标记。②当有“眩”的其他角色于摸牌阶段外获得牌后,若你以此法于其本次获得“眩”的期间内获得其的牌数小于5,你随机获得其一张手牌。', diff --git a/character/shenhua.js b/character/shenhua.js index 8c05477d5..c31f9b700 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -4398,7 +4398,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } button.classList.add('selectedx'); event.button=button; - if(event.control){ + if(event.control&&button.link){ event.control.replacex(player.storage.huashen.owned[button.link]); } } @@ -6923,24 +6923,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){ onremove:function(player,skill){ var cards=player.getExpansions(skill); if(cards.length){ - delete player.nodying; + //delete player.nodying; player.loseToDiscardpile(cards); if(player.hp<=0) player.dying({}); } }, process:function(player){ - delete player.nodying; + //delete player.nodying; var nums=[]; var cards=player.getExpansions('gzbuqu'); for(var i=0;iget.color(card)=='black','hes') + }, + viewAs:{name:'huogong'}, + filterCard:{color:'black'}, + position:'hes', + check:function(card){ + var player=_status.event.player,suits=lib.suit.slice(0); + if(player.countCards('h')>4&&player.hasCard(function(card){ + suits.remove(get.suit(card)); + return suits.length==0; + },'h')) return 8-get.value(card); + return 4-get.value(card); + }, + promptfunc:function(){ + if(_status.event.player.storage.olmiuyan) return '转换技。你可以将一张黑色牌当做【火攻】使用。若此牌未造成伤害,则你令此技能失效直到本轮结束。'; + return '转换技。你可以将一张黑色牌当做【火攻】使用。若此牌造成了伤害,则你获得此阶段内所有被展示过的牌。'; + }, + precontent:function(){ + player.changeZhuanhuanji('olmiuyan'); + var card=event.result.card; + if(!card.storage) card.storage={}; + if(player.storage.olmiuyan){ + card.storage.olmiuyan_gain=true; + player.addTempSkill('olmiuyan_gain'); + } + else{ + card.storage.olmiuyan_remove=true; + player.addTempSkill('olmiuyan_remove'); + } + }, + init:function(player){ + player.addSkill('olmiuyan_counter'); + }, + onremove:function(player){ + player.removeSkill('olmiuyan_counter'); + }, + zhuanhuanji:true, + mark:true, + marktext:'☯', + ai:{ + order:function(item,player){ + if(player.storage.olmiuyan) return 1; + return 8; + }, + }, + intro:{ + content:function(storage){ + if(storage) return '转换技。你可以将一张黑色牌当做【火攻】使用。然后若此牌未造成伤害,则你令此技能失效直到本轮结束。'; + return '转换技。你可以将一张黑色牌当做【火攻】使用。然后若此牌造成了伤害,则你获得此阶段内所有被展示过的牌。'; + }, + }, + subSkill:{ + counter:{ + trigger:{global:['showCardsEnd','phaseZhunbeiBefore','phaseJudgeBefore','phaseDrawBefore','phaseUseBefore','phaseDiscardBefore','phaseJieshuBefore']}, + forced:true, + charlotte:true, + popup:false, + firstDo:true, + filter:function(event,player){ + if(event.name=='showCards') return get.itemtype(event.cards)=='cards'; + return true; + }, + content:function(){ + if(trigger.name=='showCards'){ + game.broadcastAll(function(cards){ + cards.forEach(card=>card.addGaintag('olmiuyan_tag')); + },trigger.cards); + } + else game.players.forEach(current=>current.removeGaintag('olmiuyan_tag')); + }, + }, + gain:{ + trigger:{player:'useCardAfter'}, + forced:true, + charlotte:true, + filter:function(event,player){ + return event.card.storage&&event.card.storage.olmiuyan_gain&&player.hasHistory('sourceDamage',function(evt){ + return evt.card==event.card; + })&&game.hasPlayer(function(current){ + return current!=player&¤t.hasCard(card=>card.hasGaintag('olmiuyan_tag')) + }); + }, + logTarget:function(event,player){ + return game.filterPlayer(function(current){ + return current!=player&¤t.hasCard(card=>card.hasGaintag('olmiuyan_tag')) + }); + }, + content:function(){ + var cards=[],players=game.filterPlayer(current=>current!=player).sortBySeat(); + players.forEach(current=>{ + var cardsx=current.getCards('h',function(card){ + return card.hasGaintag('olmiuyan_tag'); + }); + if(cardsx.length) cards.addArray(cardsx); + }); + player.gain(cards,'give'); + }, + }, + remove:{ + trigger:{player:'useCardAfter'}, + forced:true, + charlotte:true, + filter:function(event,player){ + return event.card.storage&&event.card.storage.olmiuyan_remove&&!player.hasHistory('sourceDamage',function(evt){ + return evt.card==event.card; + }); + }, + content:function(){ + player.addTempSkill('olmiuyan_blocker','roundStart'); + game.log(player,'的','#g【谬焰】','失效了'); + }, + }, + blocker:{charlotte:true}, + }, + }, + olshilu:{ + audio:2, + trigger:{player:'damageEnd'}, + forced:true, + filter:function(event,player){ + return player.hp>0; + }, + content:function(){ + 'step 0' + player.draw(Math.min(5,player.hp)); + 'step 1' + var targets=game.filterPlayer(current=>current!=player&¤t.countCards('h')>0&&player.inRange(current)); + if(targets.length>0){ + if(targets.length==1) event._result={bool:true,targets:targets} + else player.chooseTarget(true,'请选择一名攻击范围内的角色','然后你选择该角色的一张手牌,令此牌视为【杀】',function(card,player,target){ + return target!=player&&target.countCards('h')>0&&player.inRange(target); + }).set('ai',function(target){ + return -get.attitude(_status.event.player,target); + }); + } + else event.finish(); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.line(target,'green'); + player.choosePlayerCard(target,true,'h'); + } + 'step 3' + if(result.bool){ + target.addSkill('olshilu_viewas'); + target.showCards(result.cards); + target.addGaintag(result.cards,'olshilu'); + } + }, + ai:{ + maixie:true, + }, + subSkill:{ + viewas:{ + mod:{ + cardname:function(card){ + if(get.itemtype(card)=='card'&&card.hasGaintag('olshilu')) return 'sha'; + }, + }, + charlotte:true, + }, + }, + }, //张翼 oldianjun:{ audio:2, @@ -782,6 +953,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //朱儁 olcuipo:{ audio:2, + trigger:{player:'useCard'}, + forced:true, + filter:function(event,player){ + return lib.skill.dcweidang.getLength(event.card)==player.getHistory('useCard').indexOf(event)+1; + }, + content:function(){ + var card=trigger.card; + if(card.name=='sha'||get.type(card)=='trick'&&get.tag(card,'damage')>0) trigger.baseDamage++; + else player.draw(); + }, + /* trigger:{source:'damageBegin1'}, forced:true, filter:function(event,player){ @@ -791,14 +973,97 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ trigger.num++; - }, + },*/ mod:{ aiOrder:function(player,card,num){ - if(typeof card=='object'&&get.tag(card,'damage')&&lib.skill.dcweidang.getLength(card)==player.getHistory('useCard').length+1) return num+10; + if(typeof card=='object'&&lib.skill.dcweidang.getLength(card)==player.getHistory('useCard').length+1) return num+10; }, } }, //马休马铁 + rekenshang:{ + audio:'olkenshang', + enable:'chooseToUse', + filterCard:true, + selectCard:[2,Infinity], + viewAsFilter:function(player){ + return player.countCards('hes')>1; + }, + check:function(card){ + return 0; + }, + position:'hes', + viewAs:{ + name:'sha', + storage:{olkenshang:true} + }, + onuse:function(links,player){ + player.addTempSkill('rekenshang_effect'); + }, + ai:{ + order:1, + respondSha:true, + skillTagFilter:player=>player.countCards('hes')>1, + }, + subSkill:{ + effect:{ + audio:'olkenshang', + trigger:{player:'useCard2'}, + charlotte:true, + group:'rekenshang_after', + direct:true, + filter:function(event,player){ + return event.card.storage&&event.card.storage.olkenshang&&game.countPlayer(function(current){ + return current!=player&&lib.filter.targetEnabled2(event.card,player,current)&&lib.filter.targetInRange(event.card,player,current); + })>=event.cards.length; + }, + content:function(){ + 'step 0' + player.chooseTarget( + trigger.cards.length, + '是否更改'+get.translation(trigger.card)+'的目标?', + '选择'+get.cnNumber(trigger.cards.length)+'名角色作为'+get.translation(trigger.card)+'的目标,覆盖原先存在的目标', + function(card,player,target){ + var evt=_status.event.getTrigger(); + return target!=player&&lib.filter.targetEnabled2(evt.card,player,target)&&lib.filter.targetInRange(evt.card,player,target); + }).set('ai',function(target){ + var evt=_status.event.getTrigger(); + return get.effect(target,evt.card,evt.player,evt.player); + }); + 'step 1' + if(result.bool){ + if(player!=event.player&&!player.isOnline()) game.delayx(); + } + else event.finish(); + 'step 2' + var targets=result.targets; + player.logSkill('rekenshang_effect',targets); + trigger.targets.length=0; + trigger.targets.addArray(targets); + game.log(targets,'成为了',trigger.card,'的新目标'); + }, + }, + after:{ + audio:'olkenshang', + trigger:{player:'useCardAfter'}, + forced:true, + charlotte:true, + filter:function(event,player){ + if(event.card.name!='sha'||!event.card.storage||!event.card.storage.olkenshang) return false; + var num=0; + game.countPlayer2(current=>{ + current.getHistory('damage',evt=>{ + if(evt.card==event.card) num+=evt.num; + }) + }); + return numplayer.getHandcardLimit(); + return event.isFirstTarget&&player.countCards('h')>player.getHandcardLimit()&&event.targets.some(target=>target!=player); }, - group:'olbihun_give', + //group:'olbihun_give', content:function(){ - 'step 0' - if(trigger.isFirstTarget&&trigger.targets.length==1){ - trigger.getParent()._olbihun=trigger.targets[0]; + if(trigger.targets.length==1){ + var cards=trigger.cards.filterInD(); + if(cards.length){ + game.delayx(); + trigger.targets[0].gain(cards,'gain2'); + } } - trigger.targets.remove(trigger.target); - trigger.getParent().triggeredTargets2.remove(trigger.target); - trigger.untrigger(); + var targets=trigger.targets.filter(target=>target!=player); + trigger.targets.removeArray(targets); + trigger.getParent().triggeredTargets1.removeArray(targets); }, ai:{ threaten:0.8, halfneg:true, effect:{ player:function(card,player,target){ - if(player!=target&&player.countCards('h')>player.getHandcardLimit()) return [0,0.5]; + if((!card.isCard||!card.cards)&&get.itemtype(card)!='card') return; + if(target&&player!=target&&player.countCards('h')>player.getHandcardLimit()) return [0,0,0,0.5]; }, }, }, - subSkill:{ + /*subSkill:{ give:{ trigger:{player:'useCardAfter'}, filter:function(event,player){ @@ -1024,7 +1292,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger._olbihun.gain(trigger.cards.filterInD(),'gain2'); } } - } + }*/ }, olchuanwu:{ audio:2, @@ -1033,6 +1301,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ source:'damageSource', }, forced:true, + filter:function(event,player){ + return player.getAttackRange()>0; + }, content:function(){ var skills=game.filterSkills(player.getStockSkills(true,true),player); var num=Math.min(player.getAttackRange(),skills.length); @@ -6473,7 +6744,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ for(var name of lib.inpile){ var info=lib.card[name]; if(!info||info.type!='trick'||info.notarget||(info.selectTarget&&info.selectTarget!=1)) continue; - if(!player.canUse(name,target)) continue; + if(!player.canUse(name,target,false)) continue; var eff=get.effect(target,{name:name},player,player) if(eff>0) list.push(eff); } @@ -6502,7 +6773,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 3' var list=event.list.filter(function(name){ - return player.canUse(name,target); + return player.canUse(name,target,false); }); if(list.length){ var next=player.chooseButton(['视为对'+get.translation(target)+'使用一张牌',[list,'vcard']]).set('ai',function(button){ @@ -6957,13 +7228,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ phaseDiscard:function(){ 'step 0' game.log(player,'进入了弃牌阶段'); - event.num=player.needsToDiscard(); - if(event.num<=0) event.finish(); - else{ + game.broadcastAll(function(player){ if(lib.config.show_phase_prompt){ - player.popup('弃牌阶段'); + player.popup('弃牌阶段',null,false); } - } + },player); event.trigger('phaseDiscard'); 'step 1' var cards=lib.skill.olsujian.update(player); @@ -9669,43 +9938,37 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //许靖 yuxu:{ audio:2, - trigger:{player:'useCardEnd'}, + trigger:{player:'useCardAfter'}, filter:function(event,player){ - if(event!=player.getLastUsed()) return false; - var evt=event.getParent('phaseUse'); + var evt=event.getParent('phaseUse'); if(!evt||evt.player!=player) return false; - var history=player.getHistory('useCard',function(evtt){ - return evtt.getParent('phaseUse')==evt; - }); - var index=history.indexOf(event); - if(index==0) return true; - return history[index-1].yuxu!=true&&player.countCards('he')>0; + return true; }, - content:function(){ - trigger.yuxu=true; - player.addTempSkill('yuxu2'); - player.draw(); - }, - }, - yuxu2:{ - trigger:{player:'useCardEnd'}, direct:true, - charlotte:true, - locked:true, - filter:function(event,player){ - if(event!=player.getLastUsed()) return false; - var evt=event.getParent('phaseUse'); - if(!evt||evt.player!=player) return false; - var history=player.getHistory('useCard',function(evtt){ - return evtt.getParent('phaseUse')==evt; - }); - var index=history.indexOf(event); - if(index<1) return false; - return history[index-1].yuxu==true&&player.countCards('he')>0; - }, content:function(){ + 'step 0' + var draw=!player.hasMark('yuxu_used'); + if(draw) player.chooseBool(get.prompt2('yuxu')).set('ai',()=>1); + else event.goto(2); + 'step 1' + if(result.bool){ + player.logSkill('yuxu'); + player.draw(); + player.addMark('yuxu_used',1,false); + player.addTempSkill('yuxu_used','phaseUse'); + } + event.finish(); + 'step 2' + player.logSkill('yuxu'); + player.removeMark('yuxu_used',player.countMark('yuxu_used'),false); player.chooseToDiscard('he',true); }, + subSkill:{ + used:{ + charlotte:true, + onremove:true + } + } }, xjshijian:{ audio:2, @@ -19864,7 +20127,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.tag(event.card,'damage')) return true; return false; }, - content:function (){ + content:function(){ 'step 0' player.chooseTarget(get.prompt('xinfu_lingren'),'选择一名目标角色并猜测其手牌构成',function(card,player,target){ return _status.event.targets.contains(target); @@ -19881,12 +20144,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trick:false, equip:false, } - player.chooseBool('是否押基本牌?').ai=function(event,player){ - var rand=0.95; - if(!target.countCards('h',{type:['basic']})) rand=0.05; - if(!target.countCards('h')) rand=0; - return Math.random()i[2]); + if(!event.isMine()&&!event.isOnline()) game.delayx(); + var list=[]; + event.num=0; + ['basic','trick','equip'].forEach(type=>{ + if(choices.contains(type)==target.hasCard({type:type},'h')) event.num++; + }) } - player.chooseBool('是否押锦囊牌?').ai=function(event,player){ - var rand=0.9; - if(!target.countCards('h',{type:['trick','delay']})) rand=0.1; - if(!target.countCards('h')) rand=0; - return Math.random()0){ @@ -19965,8 +20212,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ silent:true, popup:false, forced:true, + charlotte:true, content:function (){ - trigger.num++; + trigger.num++; }, }, "lingren_jianxiong":{ @@ -21133,6 +21381,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.storage.olfeibai) return '转换技,锁定技。阴:当你因执行你使用的非黑色牌的效果而造成伤害时,此伤害值+1;阳:当你因执行你使用的非红色牌的效果而回复体力时,此回复值+1。'; return '转换技,锁定技。阴:当你因执行你使用的非黑色牌的效果而造成伤害时,此伤害值+1;阳:当你因执行你使用的非红色牌的效果而回复体力时,此回复值+1。' }, + olmiuyan:function(player){ + if(player.storage.olmiuyan) return '转换技。你可以将一张黑色牌当做【火攻】使用。然后若此技能:处于阳状态且此牌造成了伤害,则你获得此阶段内所有被展示过的牌;处于阴状态且未造成伤害,则你令此技能失效直到本轮结束。'; + return '转换技。你可以将一张黑色牌当做【火攻】使用。然后若此技能:处于阳状态且此牌造成了伤害,则你获得此阶段内所有被展示过的牌;处于阴状态且未造成伤害,则你令此技能失效直到本轮结束。'; + }, }, characterReplace:{ caoshuang:['caoshuang','ns_caoshuang'], @@ -21360,7 +21612,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ neifa_info:'出牌阶段开始时,你可以摸两张牌或获得场上的一张牌,然后弃置一张牌。若弃置的牌是基本牌,本回合你不能使用锦囊和装备牌,且【杀】的使用次数+X且目标+1;若弃置的不是基本牌,本回合你不能使用基本牌,且使用普通锦囊牌选择目标时可以增加或减少一个目标,前两次使用装备牌时摸X张牌(X为你发动〖内伐〗弃牌后手牌中因〖内伐〗而不能使用的牌的数量且最多为5)。', neifa_use:'内伐', yuxu:'誉虚', - yuxu_info:'当你于出牌阶段内使用的牌结算完成时,你可以摸一张牌。若如此做,当你于出牌阶段内使用的下一张牌结算完成时,你不能发动〖誉虚〗,且需弃置一张牌。', + yuxu_info:'当你于出牌阶段内使用的牌结算结束后,若你此前于此阶段发动过〖誉虚〗的次数为:偶数,你可以摸一张牌;奇数,你弃置一张牌。', yuxu2:'誉虚(弃牌)', xjshijian:'实荐', xjshijian_info:'一名其他角色于其回合内使用的第二张牌结算完成后,你可弃置一张牌并令其获得技能〖誉虚〗直到回合结束。', @@ -21379,7 +21631,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ weicheng:'伪诚', weicheng_info:'当其他角色获得你的手牌后,若你的手牌数小于体力值,你可以摸一张牌。', daoshu:'盗书', - daoshu_info:'出牌阶段,你可以选择一个花色并获得一名其他角色的一张手牌。若此牌花色与你选择的相同,则你对其造成1点伤害。否则你须交给其一张与此牌花色不同的手牌(没有则展示手牌),且本阶段内不能再发动〖盗书〗', + daoshu_info:'出牌阶段限一次。你可以选择一个花色并获得一名其他角色的一张手牌。若此牌花色与你选择的相同,则你对其造成1点伤害且你〖盗书〗于此阶段内可使用的次数上限+1。否则你须交给其一张与此牌花色不同的手牌(没有则展示手牌)。', xinshanjia:"缮甲", xinshanjia_info:"出牌阶段开始时,你可以摸三张牌,然后弃置3-X张牌(X为你本局游戏内不因使用而失去过的装备牌的数目且至多为3)。若你没有以此法弃置基本牌或锦囊牌,则你可以视为使用了一张无距离限制且不计入出牌阶段使用次数的【杀】。", @@ -22218,7 +22470,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ olnishou_info:'锁定技。当你装备区里的牌进入弃牌堆后,你选择一项:1.将这些牌中第一张能当【闪电】对你使用的牌当【闪电】使用;2.本阶段结束时,你与一名手牌数最少的角色交换手牌。', zhanghua:'张华', olbihun:'弼昏', - olbihun_info:'锁定技。当你使用牌指定一名角色为目标时:若其为第一个目标且此牌目标数为1,你令其获得此牌;若其不为你且你的手牌数大于手牌上限,取消此目标。', + olbihun_info:'锁定技。当你使用牌指定其他角色为目标时:若其不为你且你的手牌数大于手牌上限,取消此目标;若此牌目标数为1,则其获得此牌。', olchuanwu:'穿屋', olchuanwu_info:'锁定技。当你造成或受到伤害后,你令武将牌上的前X个未失效的技能失效直到回合结束。然后你摸等同于你此次失效的技能数张牌(X为你的攻击范围)。', oljianhe:'剑合', @@ -22229,14 +22481,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ maxiumatie:'马休马铁', olkenshang:'垦伤', olkenshang_info:'你可以将任意张牌当【杀】使用,然后你可以将此牌目标改为所有你攻击范围外的角色。此牌结算结束后,若此牌对应的实体牌数大于X,你摸X张牌(X为此牌造成过的伤害值),否则你失去一个技能。', + rekenshang:'垦伤', + rekenshang_info:'你可以将至少两张牌当【杀】使用,然后你可以将此牌目标改为等量名角色。此牌结算结束后,若此牌对应的实体牌数大于X,你摸X张牌(X为此牌造成过的伤害值)。', ol_zhujun:'OL朱儁', olcuipo:'摧破', - olcuipo_info:'锁定技。当你于回合内造成伤害时,若此伤害的渠道为你于此回合使用的第X张牌且受伤角色为此牌的目标,你令此伤害+1(X为此牌牌名的字数)。', + olcuipo_info:'锁定技。当你使用牌时,若此牌是你本回合使用的第X张牌(X为此牌牌名的字数),则:{若此牌为【杀】或伤害类锦囊牌,则此牌的伤害值基数+1,否则你摸一张牌}。', ol_zhangyì:'OL张翼', oldianjun:'殿军', oldianjun_info:'锁定技。回合结束时,你受到1点无来源伤害,然后执行一个额外的出牌阶段。', olkangrui:'亢锐', olkangrui_info:'当一名角色于其回合内首次受到伤害后,你可以摸一张牌并选择一项:1.令其回复1点体力;2.令其于本回合下次造成的伤害+1,然后当其于本回合造成伤害后,其本回合手牌上限基数为0。', + wangguan:'王瓘', + olmiuyan:'谬焰', + olmiuyan_tag:'invisible', + olmiuyan_info:'转换技。你可以将一张黑色牌当做【火攻】使用。然后若此技能:处于阳状态且此牌造成了伤害,则你获得此阶段内所有被展示过的手牌;处于阴状态且未造成伤害,则你令此技能失效直到本轮结束。', + olshilu:'失路', + olshilu_info:'锁定技。当你受到伤害后,你摸X张牌(X为你的体力值且至多为5)。然后你展示攻击范围内一名角色的一张手牌,令此牌的牌名视为【杀】。', sp_tianji:'天极·皇室宗亲', sp_sibi:'四弼·辅国文曲', diff --git a/character/sp2.js b/character/sp2.js index 4cb229296..65c106c93 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,11 +4,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + zhangkai:['male','qun',4,['dcxiangshu']], dc_ruiji:['female','wu',4,['dcwangyuan','dclingyin','dcliying']], zhoushan:['male','wu',4,['dcmiyun','dcdanying'],['unseen']], - zerong:['male','qun',4,['dccansi','dcfozong'],['unseen']], + zerong:['male','qun',4,['dccansi','dcfozong']], gaoxiang:['male','shu',4,['dcchiying'],['unseen']], - xielingyu:['female','wu',3,['dcyuandi','dcxinyou'],['unseen']], + xielingyu:['female','wu',3,['dcyuandi','dcxinyou']], yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']], dongwan:['female','qun',3,['dcshengdu','dcxianjiao'],['unseen']], zhangchu:['female','qun',3,['dcjizhong','dcjucheng','dcguangshi'],['unseen']], @@ -230,7 +231,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_daihan:['mamidi','dc_jiling','zhangxun','dc_yuejiu','wanglie','leibo','qiaorui','dongwan','yuanyin'], sp_jianghu:['guanning','huzhao','dc_huangchengyan','mengjie'], sp_zongheng:['huaxin','luyusheng','re_xunchen','re_miheng','fengxi','re_dengzhi','dc_yanghu','zongyu'], - sp_taiping:['guanhai','liupi','peiyuanshao','zhangchu'], + sp_taiping:['guanhai','liupi','peiyuanshao','zhangchu','zhangkai'], sp_yanhan:['dc_liuba','dc_huangquan','furongfuqian','xianglang','dc_huojun','gaoxiang'], sp_jishi:['dc_jiben','zhenghun','dc_sunhanhua'], sp_raoting:['dc_huanghao','dc_sunziliufang'], @@ -253,6 +254,74 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + //张闿 + dcxiangshu:{ + audio:2, + trigger:{global:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + return event.player!=player&&event.player.countCards('h')>=event.player.hp; + }, + content:function(){ + 'step 0' + var list=[0,1,2,3,4,5,'cancel2']; + player.chooseControl(list).set('prompt',get.prompt2('dcxiangshu')).set('ai',()=>{ + return _status.event.choice; + }).set('choice',function(){ + if(get.attitude(player,trigger.player)>0) return 'cancel2'; + var cards=trigger.player.getCards('h'); + var num=0; + for(var card of cards){ + if(!trigger.player.hasValueTarget(card)){ + num++; + if(num>=5) break; + } + } + if(cards.length>=3&&Math.random()<0.5) num=Math.max(0,num-1); + return num; + }()); + 'step 1' + if(result.control!='cancel2'){ + player.logSkill('dcxiangshu',trigger.player); + var num=result.index; + player.storage.dcxiangshu_lottery=num; + player.addTempSkill('dcxiangshu_lottery','phaseUseAfter'); + } + else event.finish(); + 'step 2' + player.chooseToDiscard('相鼠:是否弃置一张牌不公布此数字?').set('ai',card=>2-get.value(card)); + 'step 3' + if(!result.bool){ + var num=player.storage.dcxiangshu_lottery; + player.markSkill('dcxiangshu_lottery'); + player.popup(num); + game.log(player,'选择了数字','#g'+num); + } + }, + subSkill:{ + lottery:{ + audio:'dcxiangshu', + trigger:{global:'phaseUseEnd'}, + charlotte:true, + forced:true, + onremove:true, + logTarget:'player', + filter:function(event,player){ + return typeof player.storage.dcxiangshu_lottery=='number'&&Math.abs(event.player.countCards('h')-player.storage.dcxiangshu_lottery)<=1; + }, + content:function(){ + var delt=Math.abs(trigger.player.countCards('h')-player.storage.dcxiangshu_lottery); + if(delt<=1&&trigger.player.countGainableCards('he',player)>0){ + player.gainPlayerCard(trigger.player,'he',true); + } + if(delt==0){ + trigger.player.damage(player); + } + }, + intro:{content:'猜测的数字为#'} + } + } + }, //芮姬 dcwangyuan:{ audio:2, @@ -995,9 +1064,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.getParent(3).name=='dccansi'&&player.storage.dccansi_draw==event.player; }, content:function(){ - player.draw(2); + for(var i=0;ii!=player).sortBySeat(player); + else{ + event.targets=game.filterPlayer(i=>i!=player).sortBySeat(player); + game.delayx(); + } 'step 3' var target=targets.shift(); event.target=target; @@ -1039,12 +1117,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 4' if(result.bool){ var card=result.links[0]; - player.gain(card,'gain2'); + target.gain(card,'give',player); + target.recover(); } else player.loseHp(); 'step 5' if(targets.length) event.goto(3); - } + }, + ai:{halfneg:true} }, //周善 dcmiyun:{ @@ -2066,6 +2146,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ getLength:function(card){ var name=get.translation(get.name(card)); if(name=='挟令') name='挟天子以令诸侯'; + if(name=='霹雳投石车') name='霹雳车'; return name.length; }, direct:true, @@ -5376,7 +5457,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, dcmengjie:{ trigger:{ - global:'phaseJieshuBegin', + global:'phaseEnd', }, forced:true, direct:true, @@ -5393,21 +5474,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return true; } var guojue=false,renzhi=false; - game.getGlobalHistory('cardMove',evt=>{ - if(guojue&&renzhi) return; - var evtx=evt.getParent(); - if(!guojue){ - if(evtx.name=='gain'&&evtx.source&&evtx.source!=target&&evtx.player==target || - evtx.name=='discard'&&evtx.getParent().player==target&&evtx.player!=target){ - guojue=true; + game.countPlayer2(current=>{ + if(current==target) return false; + if(!guojue&¤t.hasHistory('lose',evt=>{ + if(evt.type=='discard'){ + if((evt.discarder||evt.getParent(2).player)!=target) return false; + if(!evt.getl(current).cards2.length) return false; + return true; } - } - if(!renzhi){ - if(evtx.name=='gain'&&evtx.giver==target&&evtx.getg(evtx.player).length || - evtx.name=='loseAsync'&&evtx.giver==target&&game.hasPlayer(current=>evtx.getg(current).length)){ - renzhi=true; + else if(evt.type=='gain'){ + var evtx=evt.getParent(); + if(evtx.giver||evtx.getParent().name=='_yongjian_zengyu') return false; + var cards=evtx.getg(target); + if(!cards.length) return false; + var cards2=evtx.getl(current).cards2; + for(var card of cards2){ + if(cards.contains(card)) return true; + } } - } + return false; + })) guojue=true; + if(!renzhi&¤t.hasHistory('gain',evt=>{ + debugger + if(evt.giver!=target||evt.getParent().name=='_yongjian_zengyu') return false; + return evt.cards.length; + })) renzhi=true; }); return target.hasSkill('dctongguan_guojue')&&guojue||target.hasSkill('dctongguan_renzhi')&&renzhi; }, @@ -5427,21 +5518,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.nowProperty=0; var target=trigger.player; var guojue=false,renzhi=false; - game.getGlobalHistory('cardMove',evt=>{ - if(guojue||renzhi) return; - var evtx=evt.getParent(); - if(!guojue){ - if(evtx.name=='gain'&&evtx.source&&evtx.source!=target&&evtx.player==target || - evtx.name=='discard'&&evtx.getParent().player==target&&evtx.player!=target){ - guojue=true; + game.countPlayer2(current=>{ + if(current==target) return false; + if(!guojue&¤t.hasHistory('lose',evt=>{ + if(evt.type=='discard'){ + if((evt.discarder||evt.getParent(2).player)!=target) return false; + if(!evt.getl(current).cards2.length) return false; + return true; } - } - if(!renzhi){ - if(evtx.name=='gain'&&evtx.giver==target&&evtx.getg(evtx.player).length || - evtx.name=='loseAsync'&&evtx.giver==target&&game.hasPlayer(current=>evtx.getg(current).length)){ - renzhi=true; + else if(evt.type=='gain'){ + var evtx=evt.getParent(); + if(evtx.giver||evtx.getParent().name=='_yongjian_zengyu') return false; + var cards=evtx.getg(target); + if(!cards.length) return false; + var cards2=evtx.getl(current).cards2; + for(var card of cards2){ + if(cards.contains(card)) return true; + } } - } + return false; + })) guojue=true; + if(!renzhi&¤t.hasHistory('gain',evt=>{ + if(evt.giver!=target||evt.getParent().name=='_yongjian_zengyu') return false; + return evt.cards.length; + })) renzhi=true; }); event.guojue=guojue; event.renzhi=renzhi; 'step 1' @@ -5484,7 +5584,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 8' if(game.hasPlayer(target=>target.countDiscardableCards(player,'hej'))) player.chooseTarget('梦解:弃置一名角色区域内至多两张牌',true,(card,player,target)=>{ return target.countDiscardableCards(player,'hej'); - }).set('ai',target=>get.effect(target,{name:'guohe'},player,target)); + }).set('ai',target=>get.effect(target,{name:'guohe'},player,player)); else event._result={bool:false}; 'step 9' if(result.bool){ @@ -5747,7 +5847,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ target=trigger.player; source=trigger.source; } - else { + else{ target=trigger.target; source=trigger.player; } @@ -7303,13 +7403,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(event.card.name!='sha'||!event.player.isIn()) return false; var evt=event.getParent('phaseUse'); if(!evt||evt.player!=event.player) return false; - var goon=true,goon2=false; - event.player.getHistory('useCard',function(evtx){ - if(goon2||!goon||evtx.getParent('phaseUse')!=evt) return false; - if(evtx==event) goon2=true; - else if(!goon2) goon=false; + var goon=false; + var history=event.player.getHistory('useCard',function(evtx){ + if(goon||evtx.getParent('phaseUse')!=evt) return false; + goon=true; + return true; }); - return goon; + return history[0]==event; }, prompt2:(event)=>'令其摸两张牌,且使用【杀】的次数上限+1', check:function(event,player){ @@ -8175,6 +8275,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!card) event.finish(); else{ event.card=card; + game.cardsGotoOrdering(card); player.showCards(card,get.translation(player)+'发动了【泛音】') } 'step 1' @@ -16713,7 +16814,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ game.delayx(); }, subSkill:{ - zhiren:{}, + zhiren:{charlotte:true}, }, ai:{ expose:0.5, @@ -26338,6 +26439,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gaoxiang:'高翔(又作高详、高祥)(生卒年不详),荆州南郡(治今湖北省公安县)人,三国时期蜀汉将领。曾随刘备攻打汉中,后又随蜀汉丞相诸葛亮参加北伐曹魏的战争。建兴九年(公元231年)的北伐中大破司马懿。官至杂号大将军(即某杂号将军加大,但无考何杂号将军),封玄乡侯。此后,关于高翔的记载不详。', zerong:'笮[zé]融(?—195年),丹杨(治今安徽宣城)人,东汉末年豪强,生性残暴却笃信佛教,为佛教在中国的发展做出了很大贡献。东汉末年投奔徐州刺史陶谦,督管下邳、彭城、广陵三郡运粮。将其中大量物资占为己有累积财力,遂在徐州一带大规模崇佛,修建豪华佛寺,铸造金铜大佛,衣以锦彩,并举行浴佛节,招揽信徒万余人。其崇佛活动奠定了中国大型佛事活动的基础。后又投奔赵昱、薛礼、朱皓并将他们杀害,扬州牧刘繇因此兴兵讨伐笮融。笮融兵败后逃入深山,由于当地山民同样对他恨之入骨,便联手搜捕、杀死笮融,并将他的首级献给刘繇。', zhoushan:'周善,《三国演义》中人物,不见于正史记载。为吴侯孙权的家将,此人最有胆量,自幼穿房入户,多随孙策。权为骗其妹回吴,遣善将五百人,扮为商人,分作五船;更诈修国书,以备盘诘;船内暗藏兵器。周善领命,往荆州。正骗得孙夫人带刘禅上船,赵云前来抢走禅,周善在后梢挟住舵,只顾放船下水。正僵持时张飞赶到,周善见张飞上船,提刀来迎,被张飞手起一剑砍倒,提头掷于孙夫人前。', + zhangkai:'张闿[kǎi],陶谦的手下都尉。奉命截杀曹操之父曹嵩,杀死曹嵩,夺去财宝逃往淮南投奔袁术,并担任刺杀陈王刘宠和陈国相骆俊的任务。', }, characterTitle:{ // wulan:'#b对决限定武将', @@ -26501,6 +26603,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caoanmin:['caoanmin','ns_caoanmin'], jiling:['dc_jiling','jiling'], qiaorui:['qiaorui','tw_qiaorui'], + duanwei:['duanwei','junk_duanwei'], }, translate:{ lijue:"李傕", @@ -27382,7 +27485,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcjiaofeng_info:'锁定技。每回合限一次,当你造成伤害时,若你本回合内未造成过其他伤害且你已损失的体力值:大于0,则你摸一张牌;大于1,则此伤害+1;大于2,则你回复1点体力。', dukui:'杜夔', dcfanyin:'泛音', - dcfanyin_info:'出牌阶段开始时,你可以亮出牌堆中点数最小的一张牌。然后你选择一项,并可以展示一张点数为此牌二倍的牌且重复此流程:⒈使用此牌;⒉你于本回合内使用的下一张基本牌或普通锦囊牌选择目标后,可以增加一个目标。', + dcfanyin_info:'出牌阶段开始时,你可以亮出牌堆中点数最小的一张牌。然后你选择一项,并可以亮出一张点数为此牌二倍的牌且重复此流程:⒈使用此牌;⒉你于本回合内使用的下一张基本牌或普通锦囊牌选择目标后,可以增加一个目标。', dcpeiqi:'配器', dcpeiqi_info:'当你受到伤害后,你可以移动场上的一张牌。然后若场上所有角色均在彼此的攻击范围内,则你可以再移动场上的一张牌。', dc_lvkuanglvxiang:'吕旷吕翔', @@ -27485,7 +27588,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dctongguan:'统观', dctongguan_info:'一名角色的第一个回合开始时,你为其选择一项属性(每个属性至多选两次,且仅对你可见)。', dcmengjie:'梦解', - dcmengjie_info:'一名角色的结束阶段开始时,若其本回合完成了其〖统观〗属性,你执行对应效果:
  • 「武勇」造成伤害:对一名其他角色造成1点伤害;
  • 「刚硬」回复体力,或于获得牌后手牌数大于体力值:令一名其他角色回复1点体力;
  • 「多谋」于摸牌阶段外摸牌:摸两张牌;
  • 「果决」弃置或获得其他角色的牌:弃置一名角色区域内至多两张牌;
  • 「仁智」交给其他角色牌:令一名其他角色将手牌补至体力上限(至多摸五张)。', + dcmengjie_info:'一名角色的回合结束时,若其本回合完成了其〖统观〗属性,你执行对应效果:
  • 「武勇」造成伤害:对一名其他角色造成1点伤害;
  • 「刚硬」回复体力,或于获得牌后手牌数大于体力值:令一名其他角色回复1点体力;
  • 「多谋」于摸牌阶段外摸牌:摸两张牌;
  • 「果决」弃置或获得其他角色的牌:弃置一名角色区域内至多两张牌;
  • 「仁智」交给其他角色牌:令一名其他角色将手牌补至体力上限(至多摸五张)。', dctongguan_wuyong:'武勇', dctongguan_wuyong_info:'任务目标:造成伤害。', dctongguan_gangying:'刚硬', @@ -27709,9 +27812,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcwangyuan_info:'当你于回合外失去牌后,或于回合内发动〖俐影〗后,你可以随机将牌堆里的一张与你所有“妄”牌名均不同的基本牌或锦囊牌置于武将牌上,称为“妄”(不超过游戏人数)。', dclingyin:'铃音', // dclingyin_info:'出牌阶段开始时,你可以获得至多X张“妄”(X为游戏轮数)然后若你的“妄”颜色均相同,你于本回合对其他角色造成的伤害+1,且可以将一张武器牌或防具牌当【决斗】使用。', - dclingyin_info:'出牌阶段开始时,你可以选择至多X张“妄”(X为游戏轮数),若这些牌以外的“妄”中不存在颜色不同的牌,则你于本回合对其他角色造成的伤害+1,且可以将一张武器牌或防具牌当【决斗】使用,且你获得这些牌。', + dclingyin_info:'出牌阶段开始时,你可以选择至多X张“妄”(X为游戏轮数),若这些牌以外的“妄”中不存在颜色不同的牌,则你于本回合对其他角色造成的伤害+1,且可以将一张武器牌或防具牌当【决斗】使用。你获得这些牌。', dcliying:'俐影', dcliying_info:'每回合限一次。当你于摸牌阶段外获得牌后,你可以将这些牌中的任意张交给一名其他角色,然后摸一张牌。', + zhangkai:'张闿', + dcxiangshu:'相鼠', + dcxiangshu_info:'其他角色的出牌阶段开始时,若其手牌数不小于其体力值,你可以选择一个不大于5的非负整数,然后你弃置一张牌或声明此数字。若如此做,此阶段结束时,若其手牌数与你选择的数字:差值不大于1,你获得其一张牌;相等,你对其造成1点伤害。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", diff --git a/character/standard.js b/character/standard.js index e084c01e8..3f4306833 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2484,7 +2484,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ huaxiong:['re_huaxiong','old_huaxiong','huaxiong','ol_huaxiong'], yuanshu:['yl_yuanshu','yuanshu','re_yuanshu','old_yuanshu','ol_yuanshu'], gongsunzan:['dc_gongsunzan','re_gongsunzan','xin_gongsunzan','gongsunzan'], - re_lidian:['re_lidian','old_re_lidian'], + re_lidian:['re_lidian','old_re_lidian','junk_lidian'], }, translate:{ caocao:'曹操', diff --git a/character/tw.js b/character/tw.js index d172df874..a0f2ed15e 100644 --- a/character/tw.js +++ b/character/tw.js @@ -8817,6 +8817,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }).set('ai',function(button){ var player=_status.event.player,target=_status.event.targets1,source=_status.event.targets0; var att=get.attitude(player,source); + var card=button.link; if(get.position(card)=='e'){ var val=get.value(card); if(att>0?val>0:val<=0) return 0; diff --git a/character/yijiang.js b/character/yijiang.js index f12e1965d..c530d133a 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -435,7 +435,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ var cards=[]; - for(var card of ui.cardPile.childNodes){ + for(var i=0;i=5) break; } @@ -976,7 +977,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, charlotte:true, filter:function(event,player){ - return player.getStorage('sangu_effect').length>0; + return event.cards.length>0&&player.getStorage('sangu_effect').length>0; }, content:function(){ if(!trigger.card.storage) trigger.card.storage={}; @@ -1283,17 +1284,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, lkzhongzhuang:{ audio:2, - trigger:{source:'damageBegin1'}, + trigger:{source:['damageBegin1','damageBegin4']}, forced:true, - filter:function(event,player){ + filter:function(event,player,name){ if(!event.card||event.card.name!='sha'||event.getParent().type!='card') return false; var range=player.getAttackRange(); - if(range>3) return true; + if(name=='damageBegin1') return range>3; return range<3&&event.num>1; }, content:function(){ - var range=player.getAttackRange(); - if(range>3) trigger.num++; + if(event.triggername=='damageBegin1') trigger.num++; else trigger.num=1; }, global:'lkzhongzhuang_ai', @@ -14148,13 +14148,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ lkbushi:'卜筮', lkbushi_info:'①你使用♠牌无次数限制。②当你使用或打出♥牌后,你摸一张牌。③当你成为♣牌的目标后,你可以弃置一张牌,令此牌对你无效。④结束阶段开始时,你从牌堆或弃牌堆获得一张♦牌。⑤准备阶段开始时,你可调整此技能中四种花色的对应顺序。', lkzhongzhuang:'忠壮', - lkzhongzhuang_info:'锁定技。当你因执行【杀】的效果而造成伤害时,若你的攻击范围:大于3,则此伤害+1;小于3,则此伤害改为1。', + lkzhongzhuang_info:'锁定技。①当你因执行【杀】的效果而造成伤害时,若你的攻击范围大于3,则此伤害+1。②当一名角色受到你因执行【杀】的效果而造成的伤害时,若你的攻击范围小于3,则此伤害改为1。', kebineng:'轲比能', kousheng:'寇旌', kousheng_info:'①出牌阶段开始时,你可以选择任意张手牌,这些牌称为“寇旌”直到回合结束。②你的“寇旌”均视为【杀】且无次数限制。③当你因执行对应实体牌包含“寇旌”的【杀】的效果而造成伤害后,你展示所有“寇旌”牌,然后目标角色可以用所有手牌交换这些牌。', zhugeshang:'诸葛尚', sangu:'三顾', - sangu_info:'结束阶段,你可以选择至多三个{【杀】或不为notarget或singleCard的普通锦囊牌}中的牌名,然后令一名其他角色记录这些牌名。该角色的下个出牌阶段开始时,其的手牌于其需要使用牌时均视为其记录中的第一张牌直到此阶段结束,且当其使用或打出牌时,移除这些牌中的第一张牌。若你以此法选择过的牌名均为你本回合内使用过的牌名,则防止你因其以此法使用牌造成的伤害。', + sangu_info:'结束阶段,你可以选择至多三个{【杀】或不为notarget或singleCard的普通锦囊牌}中的牌名,然后令一名其他角色记录这些牌名。该角色的下个出牌阶段开始时,其的手牌于其需要使用牌时均视为其记录中的第一张牌直到此阶段结束,且当其使用或打出有对应实体牌的牌时,移除这些牌中的第一张牌。若你以此法选择过的牌名均为你本回合内使用过的牌名,则防止你因其以此法使用牌造成的伤害。', yizu:'轶祖', yizu_info:'锁定技。每回合限一次,当你成为【杀】或【决斗】的目标后,若你的体力值不大于使用者的体力值,则你回复1点体力。', liwan:'李婉', diff --git a/character/yingbian.js b/character/yingbian.js index 04c248023..cad77da5b 100644 --- a/character/yingbian.js +++ b/character/yingbian.js @@ -153,7 +153,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:['useCard','respond']}, direct:true, filter:function(event,player){ - return player!=_status.currentPhase&&get.type(event.card,false)=='basic'&&game.hasPlayer(function(current){ + return player!=_status.currentPhase&&game.hasPlayer(function(current){ return current!=player&¤t.countCards('h')>0; }); }, @@ -171,7 +171,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.target=target; player.logSkill('zhefu',target); var name=trigger.card.name; - target.chooseToDiscard('h',{name:name},'弃置一张【'+get.translation(name)+'】或受到1点伤害').set('ai',function(card){ + target.chooseToDiscard('he',{name:name},'弃置一张【'+get.translation(name)+'】或受到1点伤害').set('ai',function(card){ var player=_status.event.player; if(_status.event.take||(get.name(card)=='tao'&&!player.hasJudge('lebu'))) return 0; return 8-get.value(card); @@ -186,25 +186,38 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{player:'useCardAfter'}, filter:function(event,player){ - return event.targets.length==1&&(event.card.name=='sha'||(get.type(event.card,null,false)=='trick'&&get.tag(event.card,'damage')>0)) - &&event.targets[0].countCards('h')>0&&!player.hasHistory('sourceDamage',function(evt){ - return evt.card==event.card; + return (event.card.name=='sha'||(get.type(event.card,null,false)=='trick'&&get.tag(event.card,'damage')>0)) + &&event.targets.some(target=>{ + return target.countCards('h')>0&&!target.hasHistory('damage',function(evt){ + return evt.card==event.card; + }); }); }, - logTarget:'targets', - check:function(event,player){ - var target=event.targets[0]; - return get.attitude(player,target)<0&&!target.hasSkillTag('noh'); - }, + direct:true, content:function(){ 'step 0' - var target=trigger.targets[0]; - event.target=target; - player.choosePlayerCard(target,true,'h',[1,Math.min(3,target.countCards('h'))]).set('forceAuto',true).set('ai',function(button){ - if(ui.selected.buttons.length) return 0; - return 1+Math.random(); + player.chooseTarget(get.prompt2('yidu'),(card,player,target)=>{ + return _status.event.targets.contains(target); + }).set('targets',trigger.targets.filter(target=>{ + return target.countCards('h')>0&&!target.hasHistory('damage',function(evt){ + return evt.card==trigger.card; + }); + })).set('ai',target=>{ + if(target.hasSkillTag('noh')) return 0; + return -get.attitude(player,target); }); 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('yidu',target); + player.choosePlayerCard(target,'遗毒:展示'+get.translation(target)+'的至多三张手牌',true,'h',[1,Math.min(3,target.countCards('h'))]).set('forceAuto',true).set('ai',function(button){ + if(ui.selected.buttons.length) return 0; + return 1+Math.random(); + }); + } + else event.finish(); + 'step 2' var cards=result.cards; player.showCards(cards,get.translation(player)+'对'+get.translation(target)+'发动了【遗毒】'); var color=get.color(cards[0],target); @@ -215,7 +228,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ break; } } - if(bool) target.discard(cards,'notBySelf'); + if(bool) target.discard(cards,'notBySelf').discarder=player; }, }, xinwanyi:{ @@ -1467,7 +1480,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ for(var j of lib.character[i][3]){ if(j=='bolan') continue; var skill=lib.skill[j]; - if(!skill||skill.juexingji||info.hiddenSkill||skill.zhuSkill||skill.dutySkill||info.chargeSkill||lib.skill.bolan.banned.contains(j)) continue; + if(!skill||skill.juexingji||skill.hiddenSkill||skill.zhuSkill||skill.dutySkill||skill.chargeSkill||lib.skill.bolan.banned.contains(j)) continue; if(skill.init||skill.ai&&(skill.ai.combo||skill.ai.notemp||skill.ai.neg)) continue; var info=lib.translate[j+'_info']; if(info&&info.indexOf('出牌阶段限一次')!=-1) skills.add(j); @@ -1530,6 +1543,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ 'step 0' player.loseHp(); + 'step 1' if(target.isIn()&&player.isIn()){ if(!target.storage.bolan) lib.skill.bolan.initList(target); var list=target.storage.bolan.randomGets(3); @@ -1547,7 +1561,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); } else event.finish(); - 'step 1' + 'step 2' target.line(player); player.addTempSkill(result.control,'phaseUseEnd'); player.popup(result.control); @@ -3174,7 +3188,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.mode()!='guozhan') player.addMark('sanchen',1,false); target.draw(3); 'step 1' - if(!target.countCards('he')) event.finish(); + if(!target.countCards('he')) event._result={bool:false}; else target.chooseToDiscard('he',true,3).set('ai',function(card){ var list=ui.selected.cards.map(function(i){ return get.type2(i); @@ -3584,7 +3598,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xijue_xiaoguo_info_guozhan:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌;2.受到你对其造成的1点伤害。', duyu:'杜预', sanchen:'三陈', - sanchen_info:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌。否则你本阶段内不能再发动〖三陈〗。', + sanchen_info:'出牌阶段限一次。你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且〖三陈〗于此阶段内使用次数上限+1。', sanchen_info_guozhan:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且你获得技能〖破竹〗直到回合结束。否则你本阶段内不能再发动〖三陈〗。', zhaotao:'诏讨', zhaotao_info:'觉醒技,准备阶段,若你本局游戏内发动〖三陈〗的次数大于2,则你减1点体力上限并获得〖破竹〗。', @@ -3742,9 +3756,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinwanyi_info:'①当你使用【杀】或普通锦囊牌指定其他角色为唯一目标后,你可将其的一张牌置于你的武将牌上作为“嫕”。②你不能使用/打出/弃置与“嫕”花色相同的牌。③结束阶段或当你受到伤害后,你令一名角色获得你的一张“嫕”。', jin_guohuai:'郭槐', zhefu:'哲妇', - zhefu_info:'当你于回合外使用或打出基本牌后,你可令一名有手牌的其他角色选择一项:⒈弃置一张名称相同的基本牌。⒉受到你造成的1点伤害。', + zhefu_info:'当你于回合外使用或打出牌后,你可令一名有手牌的其他角色选择一项:⒈弃置一张名称相同的牌。⒉受到你造成的1点伤害。', yidu:'遗毒', - yidu_info:'当你使用的【杀】或伤害性锦囊牌结算结束后,若此牌目标数为1且你未造成过渠道为此牌的伤害,则你可以展示目标角色的至多三张手牌。若这些牌颜色均相同,则其弃置这些牌。', + yidu_info:'当你使用的【杀】或伤害性锦囊牌结算结束后,你可以展示一名未受到过渠道为此牌伤害的目标角色的至多三张手牌。若这些牌颜色均相同,则你弃置这些牌。', wangxiang:'王祥', bingxin:'冰心', bingxin_info:'每种牌名每回合限一次。当你需要使用基本牌时,若你的手牌数等于体力值且这些牌的颜色均相同,则你可以摸一张牌,视为使用一张基本牌。', diff --git a/game/asset.js b/game/asset.js index 52bd5ccf0..10f5c1788 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.120.2', + 'v1.9.121', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -254,6 +254,7 @@ window.noname_asset_list=[ 'audio/die/dc_huangzu.mp3', 'audio/die/dc_huban.mp3', 'audio/die/dc_hujinding.mp3', + 'audio/die/dc_huojun.mp3', 'audio/die/dc_jiben.mp3', 'audio/die/dc_jiling.mp3', 'audio/die/dc_liru.mp3', @@ -262,8 +263,11 @@ window.noname_asset_list=[ 'audio/die/dc_liuyu.mp3', 'audio/die/dc_luotong.mp3', 'audio/die/dc_lvkuanglvxiang.mp3', + 'audio/die/dc_ruiji.mp3', 'audio/die/dc_sp_jiaxu.mp3', 'audio/die/dc_sunru.mp3', + 'audio/die/dc_sunziliufang.mp3', + 'audio/die/dc_tengfanglan.mp3', 'audio/die/dc_wangchang.mp3', 'audio/die/dc_wangyun.mp3', 'audio/die/dc_xushu.mp3', @@ -286,6 +290,7 @@ window.noname_asset_list=[ 'audio/die/dongbai.mp3', 'audio/die/dongcheng.mp3', 'audio/die/dongguiren.mp3', + 'audio/die/dongtuna.mp3', 'audio/die/dongyun.mp3', 'audio/die/dongzhao.mp3', 'audio/die/dongzhuo.mp3', @@ -308,6 +313,7 @@ window.noname_asset_list=[ 'audio/die/fengxi.mp3', 'audio/die/fuhuanghou.mp3', 'audio/die/furong.mp3', + 'audio/die/furongfuqian.mp3', 'audio/die/fuwan.mp3', 'audio/die/ganfuren.mp3', 'audio/die/ganning.mp3', @@ -490,6 +496,7 @@ window.noname_asset_list=[ 'audio/die/manchong.mp3', 'audio/die/mangyachang.mp3', 'audio/die/mateng.mp3', + 'audio/die/maxiumatie.mp3', 'audio/die/mayuanyi.mp3', 'audio/die/mayunlu.mp3', 'audio/die/mazhong.mp3', @@ -538,6 +545,8 @@ window.noname_asset_list=[ 'audio/die/ol_yangyi.mp3', 'audio/die/ol_yuanshao.mp3', 'audio/die/ol_yujin.mp3', + 'audio/die/ol_zhangyì.mp3', + 'audio/die/ol_zhujun.mp3', 'audio/die/ol_zhuling.mp3', 'audio/die/ol_zhurong.mp3', 'audio/die/old_guanzhang.mp3', @@ -556,13 +565,16 @@ window.noname_asset_list=[ 'audio/die/peixiu.mp3', 'audio/die/puyuan.mp3', 'audio/die/qiaogong.mp3', + 'audio/die/qiaorui.mp3', 'audio/die/qiaozhou.mp3', 'audio/die/qinghegongzhu.mp3', + 'audio/die/qinlang.mp3', 'audio/die/qinmi.mp3', 'audio/die/qinyilu.mp3', 'audio/die/qiuliju.mp3', 'audio/die/quancong.mp3', 'audio/die/quanhuijie.mp3', + 'audio/die/quhuang.mp3', 'audio/die/quyi.mp3', 'audio/die/re_bulianshi.mp3', 'audio/die/re_caifuren.mp3', @@ -596,6 +608,7 @@ window.noname_asset_list=[ 'audio/die/re_gongsunzan.mp3', 'audio/die/re_guanping.mp3', 'audio/die/re_guanyu.mp3', + 'audio/die/re_guanzhang.mp3', 'audio/die/re_guohuai.mp3', 'audio/die/re_guohuanghou.mp3', 'audio/die/re_guojia.mp3', @@ -696,6 +709,8 @@ window.noname_asset_list=[ 'audio/die/ruiji.mp3', 'audio/die/sb_caocao.mp3', 'audio/die/sb_caoren.mp3', + 'audio/die/sb_chengong.mp3', + 'audio/die/sb_diaochan.mp3', 'audio/die/sb_fazheng.mp3', 'audio/die/sb_ganning.mp3', 'audio/die/sb_huanggai.mp3', @@ -705,10 +720,12 @@ window.noname_asset_list=[ 'audio/die/sb_liubei.mp3', 'audio/die/sb_lvmeng.mp3', 'audio/die/sb_machao.mp3', + 'audio/die/sb_pangtong.mp3', 'audio/die/sb_sunquan.mp3', 'audio/die/sb_sunshangxiang.mp3', 'audio/die/sb_xiahoushi.mp3', 'audio/die/sb_xuhuang.mp3', + 'audio/die/sb_yuanshao.mp3', 'audio/die/sb_yujin.mp3', 'audio/die/sb_zhangfei.mp3', 'audio/die/sb_zhangjiao.mp3', @@ -912,10 +929,14 @@ window.noname_asset_list=[ 'audio/die/wuyan.mp3', 'audio/die/wuyi.mp3', 'audio/die/xf_yiji.mp3', + 'audio/die/xia_dianwei.mp3', 'audio/die/xia_liyan.mp3', + 'audio/die/xia_lusu.mp3', 'audio/die/xia_tongyuan.mp3', 'audio/die/xia_wangyue.mp3', + 'audio/die/xia_xiahouzie.mp3', 'audio/die/xia_xushu.mp3', + 'audio/die/xia_zhaoe.mp3', 'audio/die/xiahouba.mp3', 'audio/die/xiahoudun.mp3', 'audio/die/xiahoujie.mp3', @@ -927,6 +948,7 @@ window.noname_asset_list=[ 'audio/die/xiangchong.mp3', 'audio/die/xiangrang.mp3', 'audio/die/xiaoqiao.mp3', + 'audio/die/xielingyu.mp3', 'audio/die/xin_caifuren.mp3', 'audio/die/xin_caoxiu.mp3', 'audio/die/xin_caozhang.mp3', @@ -1009,6 +1031,7 @@ window.noname_asset_list=[ 'audio/die/yuanshao.mp3', 'audio/die/yuanshu.mp3', 'audio/die/yuantanyuanshang.mp3', + 'audio/die/yuantanyuanxiyuanshang.mp3', 'audio/die/yuejin.mp3', 'audio/die/yuejiu.mp3', 'audio/die/yufan.mp3', @@ -1016,6 +1039,7 @@ window.noname_asset_list=[ 'audio/die/yujin.mp3', 'audio/die/yujin_yujin.mp3', 'audio/die/zangba.mp3', + 'audio/die/zerong.mp3', 'audio/die/zhangbao.mp3', 'audio/die/zhangchangpu.mp3', 'audio/die/zhangchunhua.mp3', @@ -1026,10 +1050,12 @@ window.noname_asset_list=[ 'audio/die/zhanghe.mp3', 'audio/die/zhangheng.mp3', 'audio/die/zhanghu.mp3', + 'audio/die/zhanghua.mp3', 'audio/die/zhanghuyuechen.mp3', 'audio/die/zhangji.mp3', 'audio/die/zhangjiao.mp3', 'audio/die/zhangjunyi.mp3', + 'audio/die/zhangkai.mp3', 'audio/die/zhangliao.mp3', 'audio/die/zhangling.mp3', 'audio/die/zhanglu.mp3', @@ -1528,6 +1554,10 @@ window.noname_asset_list=[ 'audio/skill/dbquedi2.mp3', 'audio/skill/dbzhuifeng1.mp3', 'audio/skill/dbzhuifeng2.mp3', + 'audio/skill/dcaichen1.mp3', + 'audio/skill/dcaichen2.mp3', + 'audio/skill/dcaishou1.mp3', + 'audio/skill/dcaishou2.mp3', 'audio/skill/dcanliao1.mp3', 'audio/skill/dcanliao2.mp3', 'audio/skill/dcanxu1.mp3', @@ -1540,6 +1570,8 @@ window.noname_asset_list=[ 'audio/skill/dcbihuo2.mp3', 'audio/skill/dcbingji1.mp3', 'audio/skill/dcbingji2.mp3', + 'audio/skill/dccansi1.mp3', + 'audio/skill/dccansi2.mp3', 'audio/skill/dcchaixie1.mp3', 'audio/skill/dcchaixie2.mp3', 'audio/skill/dcchongwang1.mp3', @@ -1570,6 +1602,8 @@ window.noname_asset_list=[ 'audio/skill/dcfengyan2.mp3', 'audio/skill/dcfengying1.mp3', 'audio/skill/dcfengying2.mp3', + 'audio/skill/dcfozong1.mp3', + 'audio/skill/dcfozong2.mp3', 'audio/skill/dcfudao1.mp3', 'audio/skill/dcfudao2.mp3', 'audio/skill/dcfuning1.mp3', @@ -1578,8 +1612,12 @@ window.noname_asset_list=[ 'audio/skill/dcfuxue2.mp3', 'audio/skill/dcgeyuan1.mp3', 'audio/skill/dcgeyuan2.mp3', + 'audio/skill/dcgue1.mp3', + 'audio/skill/dcgue2.mp3', 'audio/skill/dcgusuan1.mp3', 'audio/skill/dcgusuan2.mp3', + 'audio/skill/dchaochong1.mp3', + 'audio/skill/dchaochong2.mp3', 'audio/skill/dchuace1.mp3', 'audio/skill/dchuace2.mp3', 'audio/skill/dchuagui1.mp3', @@ -1600,6 +1638,8 @@ window.noname_asset_list=[ 'audio/skill/dcjingzao2.mp3', 'audio/skill/dcjinjie1.mp3', 'audio/skill/dcjinjie2.mp3', + 'audio/skill/dcjinjin1.mp3', + 'audio/skill/dcjinjin2.mp3', 'audio/skill/dcjiushi1.mp3', 'audio/skill/dcjiushi2.mp3', 'audio/skill/dcjue1.mp3', @@ -1616,16 +1656,24 @@ window.noname_asset_list=[ 'audio/skill/dcligong2.mp3', 'audio/skill/dclingfang1.mp3', 'audio/skill/dclingfang2.mp3', + 'audio/skill/dclingyin1.mp3', + 'audio/skill/dclingyin2.mp3', 'audio/skill/dcliuzhuan_gain1.mp3', 'audio/skill/dcliuzhuan_gain2.mp3', 'audio/skill/dcliuzhuan1.mp3', 'audio/skill/dcliuzhuan2.mp3', + 'audio/skill/dcliying1.mp3', + 'audio/skill/dcliying2.mp3', + 'audio/skill/dcluochong1.mp3', + 'audio/skill/dcluochong2.mp3', 'audio/skill/dcmengjie1.mp3', 'audio/skill/dcmengjie2.mp3', 'audio/skill/dcmieji1.mp3', 'audio/skill/dcmieji2.mp3', 'audio/skill/dcmingfa1.mp3', 'audio/skill/dcmingfa2.mp3', + 'audio/skill/dcneifa1.mp3', + 'audio/skill/dcneifa2.mp3', 'audio/skill/dcpeiqi1.mp3', 'audio/skill/dcpeiqi2.mp3', 'audio/skill/dcpijing1.mp3', @@ -1640,10 +1688,14 @@ window.noname_asset_list=[ 'audio/skill/dcqingren2.mp3', 'audio/skill/dcqingyan1.mp3', 'audio/skill/dcqingyan2.mp3', + 'audio/skill/dcqinshen1.mp3', + 'audio/skill/dcqinshen2.mp3', 'audio/skill/dcquanjian1.mp3', 'audio/skill/dcquanjian2.mp3', 'audio/skill/dcruizhan1.mp3', 'audio/skill/dcruizhan2.mp3', + 'audio/skill/dcsaowei1.mp3', + 'audio/skill/dcsaowei2.mp3', 'audio/skill/dcshibei1.mp3', 'audio/skill/dcshibei2.mp3', 'audio/skill/dcshilie1.mp3', @@ -1656,6 +1708,8 @@ window.noname_asset_list=[ 'audio/skill/dcshuangren2.mp3', 'audio/skill/dcshuhe1.mp3', 'audio/skill/dcshuhe2.mp3', + 'audio/skill/dcsigong1.mp3', + 'audio/skill/dcsigong2.mp3', 'audio/skill/dcsilve1.mp3', 'audio/skill/dcsilve2.mp3', 'audio/skill/dcsuifu1.mp3', @@ -1672,6 +1726,10 @@ window.noname_asset_list=[ 'audio/skill/dctujue2.mp3', 'audio/skill/dcwanglu1.mp3', 'audio/skill/dcwanglu2.mp3', + 'audio/skill/dcwangyuan1.mp3', + 'audio/skill/dcwangyuan2.mp3', + 'audio/skill/dcweidang1.mp3', + 'audio/skill/dcweidang2.mp3', 'audio/skill/dcwumei1.mp3', 'audio/skill/dcwumei2.mp3', 'audio/skill/dcwuyuan1.mp3', @@ -1680,6 +1738,8 @@ window.noname_asset_list=[ 'audio/skill/dcxialei2.mp3', 'audio/skill/dcxiangmian1.mp3', 'audio/skill/dcxiangmian2.mp3', + 'audio/skill/dcxiangshu1.mp3', + 'audio/skill/dcxiangshu2.mp3', 'audio/skill/dcxianzhu1.mp3', 'audio/skill/dcxianzhu2.mp3', 'audio/skill/dcxiaojuan1.mp3', @@ -1688,6 +1748,10 @@ window.noname_asset_list=[ 'audio/skill/dcxiaoxi2.mp3', 'audio/skill/dcxieshou1.mp3', 'audio/skill/dcxieshou2.mp3', + 'audio/skill/dcxinyou1.mp3', + 'audio/skill/dcxinyou2.mp3', + 'audio/skill/dcxuewei1.mp3', + 'audio/skill/dcxuewei2.mp3', 'audio/skill/dcxunji1.mp3', 'audio/skill/dcxunji2.mp3', 'audio/skill/dcyaoyi1.mp3', @@ -1708,6 +1772,10 @@ window.noname_asset_list=[ 'audio/skill/dcyongbi2.mp3', 'audio/skill/dcyouqi1.mp3', 'audio/skill/dcyouqi2.mp3', + 'audio/skill/dcyuandi1.mp3', + 'audio/skill/dcyuandi2.mp3', + 'audio/skill/dcyuguan1.mp3', + 'audio/skill/dcyuguan2.mp3', 'audio/skill/dczecai1.mp3', 'audio/skill/dczecai2.mp3', 'audio/skill/dczhanmeng1.mp3', @@ -1946,6 +2014,8 @@ window.noname_asset_list=[ 'audio/skill/fubi2.mp3', 'audio/skill/fuhan1.mp3', 'audio/skill/fuhan2.mp3', + 'audio/skill/fuhun_re_guanzhang1.mp3', + 'audio/skill/fuhun_re_guanzhang2.mp3', 'audio/skill/fuhun1.mp3', 'audio/skill/fuhun2.mp3', 'audio/skill/fuli1.mp3', @@ -2905,12 +2975,20 @@ window.noname_asset_list=[ 'audio/skill/olbaonue2.mp3', 'audio/skill/olbeige1.mp3', 'audio/skill/olbeige2.mp3', + 'audio/skill/olbihun1.mp3', + 'audio/skill/olbihun2.mp3', 'audio/skill/olbixin1.mp3', 'audio/skill/olbixin2.mp3', 'audio/skill/olchenglie1.mp3', 'audio/skill/olchenglie2.mp3', + 'audio/skill/olchuanwu1.mp3', + 'audio/skill/olchuanwu2.mp3', + 'audio/skill/olcuipo1.mp3', + 'audio/skill/olcuipo2.mp3', 'audio/skill/old_fuhun1.mp3', 'audio/skill/old_fuhun2.mp3', + 'audio/skill/oldianjun1.mp3', + 'audio/skill/oldianjun2.mp3', 'audio/skill/oldimeng1.mp3', 'audio/skill/oldimeng2.mp3', 'audio/skill/oldingcuo1.mp3', @@ -2943,6 +3021,10 @@ window.noname_asset_list=[ 'audio/skill/olhunzi_re_sunyi2.mp3', 'audio/skill/olhunzi1.mp3', 'audio/skill/olhunzi2.mp3', + 'audio/skill/oljianhe1.mp3', + 'audio/skill/oljianhe2.mp3', + 'audio/skill/oljianman1.mp3', + 'audio/skill/oljianman2.mp3', 'audio/skill/oljieming1.mp3', 'audio/skill/oljieming2.mp3', 'audio/skill/oljiezi1.mp3', @@ -2953,6 +3035,10 @@ window.noname_asset_list=[ 'audio/skill/oljizhan2.mp3', 'audio/skill/oljuanxia1.mp3', 'audio/skill/oljuanxia2.mp3', + 'audio/skill/olkangrui1.mp3', + 'audio/skill/olkangrui2.mp3', + 'audio/skill/olkenshang1.mp3', + 'audio/skill/olkenshang2.mp3', 'audio/skill/olluanji_shen_caopi1.mp3', 'audio/skill/olluanji_shen_caopi2.mp3', 'audio/skill/olluanji1.mp3', @@ -2961,6 +3047,10 @@ window.noname_asset_list=[ 'audio/skill/olniepan2.mp3', 'audio/skill/olningwu1.mp3', 'audio/skill/olningwu2.mp3', + 'audio/skill/olnishou1.mp3', + 'audio/skill/olnishou2.mp3', + 'audio/skill/olqiejian1.mp3', + 'audio/skill/olqiejian2.mp3', 'audio/skill/olqingyi1.mp3', 'audio/skill/olqingyi2.mp3', 'audio/skill/olqisi1.mp3', @@ -3006,6 +3096,8 @@ window.noname_asset_list=[ 'audio/skill/paiyi2.mp3', 'audio/skill/paoxiao_guanzhang1.mp3', 'audio/skill/paoxiao_guanzhang2.mp3', + 'audio/skill/paoxiao_re_guanzhang1.mp3', + 'audio/skill/paoxiao_re_guanzhang2.mp3', 'audio/skill/paoxiao_re_zhangfei1.mp3', 'audio/skill/paoxiao_re_zhangfei2.mp3', 'audio/skill/paoxiao_xiahouba1.mp3', @@ -3097,6 +3189,8 @@ window.noname_asset_list=[ 'audio/skill/qibie2.mp3', 'audio/skill/qice_backup1.mp3', 'audio/skill/qice_backup2.mp3', + 'audio/skill/qice1.mp3', + 'audio/skill/qice2.mp3', 'audio/skill/qieting1.mp3', 'audio/skill/qieting2.mp3', 'audio/skill/qigong1.mp3', @@ -3568,6 +3662,8 @@ window.noname_asset_list=[ 'audio/skill/sbbenxi1.mp3', 'audio/skill/sbbenxi2.mp3', 'audio/skill/sbbenxi3.mp3', + 'audio/skill/sbbiyue1.mp3', + 'audio/skill/sbbiyue2.mp3', 'audio/skill/sbduanliang1.mp3', 'audio/skill/sbduanliang2.mp3', 'audio/skill/sbdujiang1.mp3', @@ -3611,10 +3707,20 @@ window.noname_asset_list=[ 'audio/skill/sbleiji2.mp3', 'audio/skill/sbliangzhu1.mp3', 'audio/skill/sbliangzhu2.mp3', + 'audio/skill/sblianhuan1.mp3', + 'audio/skill/sblianhuan2.mp3', 'audio/skill/sbliegong1.mp3', 'audio/skill/sbliegong2.mp3', + 'audio/skill/sblijian1.mp3', + 'audio/skill/sblijian2.mp3', + 'audio/skill/sbluanji1.mp3', + 'audio/skill/sbluanji2.mp3', 'audio/skill/sbluoshen1.mp3', 'audio/skill/sbluoshen2.mp3', + 'audio/skill/sbmingce1.mp3', + 'audio/skill/sbmingce2.mp3', + 'audio/skill/sbniepan1.mp3', + 'audio/skill/sbniepan2.mp3', 'audio/skill/sbpaoxiao1.mp3', 'audio/skill/sbpaoxiao2.mp3', 'audio/skill/sbqiaoshi1.mp3', @@ -3643,6 +3749,8 @@ window.noname_asset_list=[ 'audio/skill/sbxieji3.mp3', 'audio/skill/sbxuanhuo1.mp3', 'audio/skill/sbxuanhuo2.mp3', + 'audio/skill/sbxueyi1.mp3', + 'audio/skill/sbxueyi2.mp3', 'audio/skill/sbyangwei1.mp3', 'audio/skill/sbyangwei2.mp3', 'audio/skill/sbyanyu1.mp3', @@ -3655,6 +3763,8 @@ window.noname_asset_list=[ 'audio/skill/sbzhangwu2.mp3', 'audio/skill/sbzhaxiang1.mp3', 'audio/skill/sbzhaxiang2.mp3', + 'audio/skill/sbzhichi1.mp3', + 'audio/skill/sbzhichi2.mp3', 'audio/skill/sbzhiheng1.mp3', 'audio/skill/sbzhiheng2.mp3', 'audio/skill/sbzhiji1.mp3', @@ -4088,6 +4198,8 @@ window.noname_asset_list=[ 'audio/skill/twdianyi2.mp3', 'audio/skill/twdingzhen1.mp3', 'audio/skill/twdingzhen2.mp3', + 'audio/skill/twduoren1.mp3', + 'audio/skill/twduoren2.mp3', 'audio/skill/twfeifu1.mp3', 'audio/skill/twfeifu2.mp3', 'audio/skill/twfengji1.mp3', @@ -4134,12 +4246,16 @@ window.noname_asset_list=[ 'audio/skill/twjuntun2.mp3', 'audio/skill/twkaiji1.mp3', 'audio/skill/twkaiji2.mp3', + 'audio/skill/twkaizeng1.mp3', + 'audio/skill/twkaizeng2.mp3', 'audio/skill/twkujian1.mp3', 'audio/skill/twkujian2.mp3', 'audio/skill/twkujian3.mp3', 'audio/skill/twkunsi1.mp3', 'audio/skill/twkunsi2.mp3', 'audio/skill/twlanjiang.mp3', + 'audio/skill/twliexi1.mp3', + 'audio/skill/twliexi2.mp3', 'audio/skill/twlingbao1.mp3', 'audio/skill/twlingbao2.mp3', 'audio/skill/twlingfa1.mp3', @@ -4164,6 +4280,8 @@ window.noname_asset_list=[ 'audio/skill/twqingtao2.mp3', 'audio/skill/twqiongji1.mp3', 'audio/skill/twqiongji2.mp3', + 'audio/skill/twrenchou1.mp3', + 'audio/skill/twrenchou2.mp3', 'audio/skill/twrende1.mp3', 'audio/skill/twrende2.mp3', 'audio/skill/twrende3.mp3', @@ -4173,6 +4291,10 @@ window.noname_asset_list=[ 'audio/skill/twshanghe2.mp3', 'audio/skill/twshepan1.mp3', 'audio/skill/twshepan2.mp3', + 'audio/skill/twshexhong1.mp3', + 'audio/skill/twshexhong2.mp3', + 'audio/skill/twshezhong1.mp3', + 'audio/skill/twshezhong2.mp3', 'audio/skill/twshigong1.mp3', 'audio/skill/twshigong2.mp3', 'audio/skill/twsidai1.mp3', @@ -4204,8 +4326,15 @@ window.noname_asset_list=[ 'audio/skill/twxiongxi2.mp3', 'audio/skill/twxiongzheng1.mp3', 'audio/skill/twxiongzheng2.mp3', + 'audio/skill/twxuechang1.mp3', + 'audio/skill/twxuechang2.mp3', + 'audio/skill/twyangming1.mp3', + 'audio/skill/twyangming2.mp3', 'audio/skill/twyangshi1.mp3', 'audio/skill/twyangshi2.mp3', + 'audio/skill/twyanshi1.mp3', + 'audio/skill/twyanshi2.mp3', + 'audio/skill/twyanshi3.mp3', 'audio/skill/twyiju1.mp3', 'audio/skill/twyiju2.mp3', 'audio/skill/twyimou1.mp3', @@ -4318,6 +4447,8 @@ window.noname_asset_list=[ 'audio/skill/wusheng_jsp_guanyu2.mp3', 'audio/skill/wusheng_re_guanyu1.mp3', 'audio/skill/wusheng_re_guanyu2.mp3', + 'audio/skill/wusheng_re_guanzhang1.mp3', + 'audio/skill/wusheng_re_guanzhang2.mp3', 'audio/skill/wusheng1.mp3', 'audio/skill/wusheng2.mp3', 'audio/skill/wusheng3.mp3', @@ -4325,6 +4456,8 @@ window.noname_asset_list=[ 'audio/skill/wushuang_lvlingqi2.mp3', 'audio/skill/wushuang_re_lvbu1.mp3', 'audio/skill/wushuang_re_lvbu2.mp3', + 'audio/skill/wushuang_wechat_lvbu1.mp3', + 'audio/skill/wushuang_wechat_lvbu2.mp3', 'audio/skill/wushuang1.mp3', 'audio/skill/wushuang11.mp3', 'audio/skill/wushuang12.mp3', @@ -5716,62 +5849,6 @@ window.noname_asset_list=[ 'image/card/ziyangdan.png', 'image/card/zong.png', - 'image/character/dc_huojun.jpg', - 'image/character/dc_ruiji.jpg', - 'image/character/dc_sunziliufang.jpg', - 'image/character/dc_tengfanglan.jpg', - 'image/character/dongtuna.jpg', - 'image/character/maxiumatie.jpg', - 'image/character/ol_zhangyì.jpg', - 'image/character/ol_zhujun.jpg', - 'image/character/old_chendao.jpg', - 'image/character/old_liyan.jpg', - 'image/character/old_re_lidian.jpg', - 'image/character/pe_mengda.jpg', - 'image/character/pe_sunchen.jpg', - 'image/character/pe_wangyun.jpg', - 'image/character/pe_wenqin.jpg', - 'image/character/pe_zhonghui.jpg', - 'image/character/pk_duyu.jpg', - 'image/character/ps_caopi.jpg', - 'image/character/ps_caozhi.jpg', - 'image/character/ps_guanyu.jpg', - 'image/character/ps_jiaxu.jpg', - 'image/character/ps_jin_simayi.jpg', - 'image/character/ps_lvbu.jpg', - 'image/character/ps_machao.jpg', - 'image/character/ps_shen_machao.jpg', - 'image/character/ps_simayi.jpg', - 'image/character/ps_zhugeliang.jpg', - 'image/character/ps1059_guojia.jpg', - 'image/character/ps1062_zhouyu.jpg', - 'image/character/ps2063_zhaoyun.jpg', - 'image/character/ps2066_zhugeliang.jpg', - 'image/character/ps2067_zhaoyun.jpg', - 'image/character/ps2068_simayi.jpg', - 'image/character/ps2070_guojia.jpg', - 'image/character/ps2080_zhouyu.jpg', - 'image/character/qiaorui.jpg', - 'image/character/qinlang.jpg', - 'image/character/quhuang.jpg', - 'image/character/re_guanzhang.jpg', - 'image/character/sb_fazheng.jpg', - 'image/character/shen_jiaxu.jpg', - 'image/character/xia_dianwei.jpg', - 'image/character/xia_lusu.jpg', - 'image/character/xia_xiahouzie.jpg', - 'image/character/xia_zhaoe.jpg', - 'image/character/yj_caohong.jpg', - 'image/character/yj_dongzhuo.jpg', - 'image/character/yj_jiaxu.jpg', - 'image/character/yj_liru.jpg', - 'image/character/yj_xuyou.jpg', - 'image/character/yj_zhangfei.jpg', - 'image/character/yj_zhenji.jpg', - 'image/character/yongjian_ganning.jpg', - 'image/character/yuantanyuanxiyuanshang.jpg', - 'image/character/zhanghua.jpg', - 'image/character/ahuinan.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', @@ -5818,6 +5895,7 @@ window.noname_asset_list=[ 'image/character/chengbing.jpg', 'image/character/chengong.jpg', 'image/character/chengpu.jpg', + 'image/character/chengui.jpg', 'image/character/chengyu.jpg', 'image/character/chenjiao.jpg', 'image/character/chenlin.jpg', @@ -5826,6 +5904,7 @@ window.noname_asset_list=[ 'image/character/clan_hanrong.jpg', 'image/character/clan_hanshao.jpg', 'image/character/clan_wuban.jpg', + 'image/character/clan_wukuang.jpg', 'image/character/clan_wuxian.jpg', 'image/character/clan_xuncai.jpg', 'image/character/clan_xuncan.jpg', @@ -5847,17 +5926,24 @@ window.noname_asset_list=[ 'image/character/dc_gongsunzan.jpg', 'image/character/dc_huangchengyan.jpg', 'image/character/dc_huanghao.jpg', + 'image/character/dc_huangquan.jpg', 'image/character/dc_huangzu.jpg', + 'image/character/dc_huban.jpg', 'image/character/dc_hujinding.jpg', + 'image/character/dc_huojun.jpg', 'image/character/dc_jiben.jpg', 'image/character/dc_jiling.jpg', + 'image/character/dc_liru.jpg', 'image/character/dc_liuba.jpg', 'image/character/dc_liuye.jpg', 'image/character/dc_liuyu.jpg', 'image/character/dc_luotong.jpg', 'image/character/dc_lvkuanglvxiang.jpg', + 'image/character/dc_ruiji.jpg', 'image/character/dc_sp_jiaxu.jpg', 'image/character/dc_sunru.jpg', + 'image/character/dc_sunziliufang.jpg', + 'image/character/dc_tengfanglan.jpg', 'image/character/dc_wangchang.jpg', 'image/character/dc_wangyun.jpg', 'image/character/dc_xushu.jpg', @@ -5874,6 +5960,7 @@ window.noname_asset_list=[ 'image/character/dianwei.jpg', 'image/character/diaochan.jpg', 'image/character/dingfeng.jpg', + 'image/character/dingshangwan.jpg', 'image/character/dingyuan.jpg', 'image/character/diy_caiwenji.jpg', 'image/character/diy_feishi.jpg', @@ -5897,6 +5984,7 @@ window.noname_asset_list=[ 'image/character/dongbai.jpg', 'image/character/dongcheng.jpg', 'image/character/dongguiren.jpg', + 'image/character/dongtuna.jpg', 'image/character/dongxie.jpg', 'image/character/dongyun.jpg', 'image/character/dongzhao.jpg', @@ -6280,12 +6368,16 @@ window.noname_asset_list=[ 'image/character/jun_liubei.jpg', 'image/character/jun_sunquan.jpg', 'image/character/jun_zhangjiao.jpg', + 'image/character/junk_duanwei.jpg', 'image/character/junk_huangyueying.jpg', + 'image/character/junk_lidian.jpg', 'image/character/junk_liubei.jpg', 'image/character/junk_simayi.jpg', + 'image/character/junk_sunquan.jpg', 'image/character/junk_zhangrang.jpg', 'image/character/kaisa.jpg', 'image/character/kanze.jpg', + 'image/character/kebineng.jpg', 'image/character/key_abyusa.jpg', 'image/character/key_akane.jpg', 'image/character/key_akiko.jpg', @@ -6439,6 +6531,7 @@ window.noname_asset_list=[ 'image/character/mangyachang.jpg', 'image/character/masu.jpg', 'image/character/mateng.jpg', + 'image/character/maxiumatie.jpg', 'image/character/mayuanyi.jpg', 'image/character/mayunlu.jpg', 'image/character/mazhong.jpg', @@ -6569,12 +6662,15 @@ window.noname_asset_list=[ 'image/character/ol_xuhuang.jpg', 'image/character/ol_xunyu.jpg', 'image/character/ol_yangyi.jpg', + 'image/character/ol_yanwen.jpg', 'image/character/ol_yuanshao.jpg', 'image/character/ol_yuanshu.jpg', 'image/character/ol_yujin.jpg', 'image/character/ol_zhangchangpu.jpg', 'image/character/ol_zhangliao.jpg', 'image/character/ol_zhangrang.jpg', + 'image/character/ol_zhangyì.jpg', + 'image/character/ol_zhujun.jpg', 'image/character/ol_zhuling.jpg', 'image/character/ol_zhuran.jpg', 'image/character/ol_zhurong.jpg', @@ -6585,6 +6681,7 @@ window.noname_asset_list=[ 'image/character/old_caorui.jpg', 'image/character/old_caoxiu.jpg', 'image/character/old_caozhen.jpg', + 'image/character/old_chendao.jpg', 'image/character/old_chenqun.jpg', 'image/character/old_dingfeng.jpg', 'image/character/old_fuhuanghou.jpg', @@ -6602,11 +6699,13 @@ window.noname_asset_list=[ 'image/character/old_liubiao.jpg', 'image/character/old_liushan.jpg', 'image/character/old_liuzan.jpg', + 'image/character/old_liyan.jpg', 'image/character/old_machao.jpg', 'image/character/old_madai.jpg', 'image/character/old_majun.jpg', 'image/character/old_maliang.jpg', 'image/character/old_quancong.jpg', + 'image/character/old_re_lidian.jpg', 'image/character/old_wangyi.jpg', 'image/character/old_wangyun.jpg', 'image/character/old_xusheng.jpg', @@ -6693,18 +6792,47 @@ window.noname_asset_list=[ 'image/character/panjun.jpg', 'image/character/panshu.jpg', 'image/character/panzhangmazhong.jpg', + 'image/character/pe_mengda.jpg', + 'image/character/pe_sunchen.jpg', + 'image/character/pe_wangyun.jpg', + 'image/character/pe_wenqin.jpg', + 'image/character/pe_zhonghui.jpg', 'image/character/peixiu.jpg', 'image/character/pengyang.jpg', + 'image/character/pk_duyu.jpg', + 'image/character/pk_sp_duyu.jpg', 'image/character/prp_zhugeliang.jpg', + 'image/character/ps_caopi.jpg', + 'image/character/ps_caozhi.jpg', + 'image/character/ps_guanyu.jpg', + 'image/character/ps_jiaxu.jpg', + 'image/character/ps_jin_simayi.jpg', + 'image/character/ps_lvbu.jpg', + 'image/character/ps_machao.jpg', + 'image/character/ps_shen_machao.jpg', + 'image/character/ps_simayi.jpg', + 'image/character/ps_zhugeliang.jpg', + 'image/character/ps1059_guojia.jpg', + 'image/character/ps1062_zhouyu.jpg', + 'image/character/ps2063_zhaoyun.jpg', + 'image/character/ps2066_zhugeliang.jpg', + 'image/character/ps2067_zhaoyun.jpg', + 'image/character/ps2068_simayi.jpg', + 'image/character/ps2070_guojia.jpg', + 'image/character/ps2080_zhouyu.jpg', 'image/character/pujing.jpg', 'image/character/puyuan.jpg', 'image/character/qiaogong.jpg', + 'image/character/qiaorui.jpg', 'image/character/qiaozhou.jpg', 'image/character/qinghegongzhu.jpg', + 'image/character/qinlang.jpg', 'image/character/qinmi.jpg', 'image/character/qinyilu.jpg', 'image/character/qiuliju.jpg', 'image/character/quancong.jpg', + 'image/character/quanhuijie.jpg', + 'image/character/quhuang.jpg', 'image/character/quyi.jpg', 'image/character/re_baosanniang.jpg', 'image/character/re_bulianshi.jpg', @@ -6741,6 +6869,7 @@ window.noname_asset_list=[ 'image/character/re_guanping.jpg', 'image/character/re_guanqiujian.jpg', 'image/character/re_guanyu.jpg', + 'image/character/re_guanzhang.jpg', 'image/character/re_guohuai.jpg', 'image/character/re_guohuanghou.jpg', 'image/character/re_guojia.jpg', @@ -6852,6 +6981,7 @@ window.noname_asset_list=[ 'image/character/re_zhoucang.jpg', 'image/character/re_zhouyu.jpg', 'image/character/re_zhugeliang.jpg', + 'image/character/re_zhuhuan.jpg', 'image/character/re_zhuran.jpg', 'image/character/re_zhurong.jpg', 'image/character/re_zoushi.jpg', @@ -6861,6 +6991,7 @@ window.noname_asset_list=[ 'image/character/ruiji.jpg', 'image/character/sb_caocao.jpg', 'image/character/sb_caoren.jpg', + 'image/character/sb_fazheng.jpg', 'image/character/sb_ganning.jpg', 'image/character/sb_huanggai.jpg', 'image/character/sb_huangzhong.jpg', @@ -6887,6 +7018,7 @@ window.noname_asset_list=[ 'image/character/shen_guanyu.jpg', 'image/character/shen_guojia.jpg', 'image/character/shen_jiangwei.jpg', + 'image/character/shen_jiaxu.jpg', 'image/character/shen_liubei.jpg', 'image/character/shen_luxun.jpg', 'image/character/shen_lvbu.jpg', @@ -7181,6 +7313,7 @@ window.noname_asset_list=[ 'image/character/tw_zumao.jpg', 'image/character/wangcan.jpg', 'image/character/wangfuzhaolei.jpg', + 'image/character/wangguan.jpg', 'image/character/wangji.jpg', 'image/character/wangjun.jpg', 'image/character/wanglang.jpg', @@ -7220,10 +7353,14 @@ window.noname_asset_list=[ 'image/character/xf_sufei.jpg', 'image/character/xf_tangzi.jpg', 'image/character/xf_yiji.jpg', + 'image/character/xia_dianwei.jpg', 'image/character/xia_liyàn.jpg', + 'image/character/xia_lusu.jpg', 'image/character/xia_tongyuan.jpg', 'image/character/xia_wangyue.jpg', + 'image/character/xia_xiahouzie.jpg', 'image/character/xia_xushu.jpg', + 'image/character/xia_zhaoe.jpg', 'image/character/xiahouba.jpg', 'image/character/xiahoudun.jpg', 'image/character/xiahoujie.jpg', @@ -7233,6 +7370,7 @@ window.noname_asset_list=[ 'image/character/xiahouyuan.jpg', 'image/character/xiangchong.jpg', 'image/character/xiaoqiao.jpg', + 'image/character/xielingyu.jpg', 'image/character/xin_baosanniang.jpg', 'image/character/xin_caifuren.jpg', 'image/character/xin_caoxiu.jpg', @@ -7312,24 +7450,34 @@ window.noname_asset_list=[ 'image/character/yanrou.jpg', 'image/character/yanwen.jpg', 'image/character/yanyan.jpg', + 'image/character/yinfuren.jpg', 'image/character/yj_caoang.jpg', 'image/character/yj_caocao.jpg', + 'image/character/yj_caohong.jpg', + 'image/character/yj_dongzhuo.jpg', 'image/character/yj_ganning.jpg', 'image/character/yj_huangzhong.jpg', + 'image/character/yj_jiaxu.jpg', 'image/character/yj_jushou.jpg', + 'image/character/yj_liru.jpg', 'image/character/yj_qiaozhou.jpg', 'image/character/yj_sufei.jpg', 'image/character/yj_weiyan.jpg', 'image/character/yj_xuhuang.jpg', + 'image/character/yj_xuyou.jpg', + 'image/character/yj_zhangfei.jpg', 'image/character/yj_zhanghe.jpg', 'image/character/yj_zhangliao.jpg', + 'image/character/yj_zhenji.jpg', 'image/character/yl_luzhi.jpg', 'image/character/yl_yuanshu.jpg', + 'image/character/yongjian_ganning.jpg', 'image/character/yuanhuan.jpg', 'image/character/yuanji.jpg', 'image/character/yuanshao.jpg', 'image/character/yuanshu.jpg', 'image/character/yuantanyuanshang.jpg', + 'image/character/yuantanyuanxiyuanshang.jpg', 'image/character/yuejin.jpg', 'image/character/yuejiu.jpg', 'image/character/yufan.jpg', @@ -7381,6 +7529,7 @@ window.noname_asset_list=[ 'image/character/yxs_zhaoyong.jpg', 'image/character/yxs_zhuyuanzhang.jpg', 'image/character/zangba.jpg', + 'image/character/zerong.jpg', 'image/character/zhangbao.jpg', 'image/character/zhangchangpu.jpg', 'image/character/zhangchunhua.jpg', @@ -7390,9 +7539,11 @@ window.noname_asset_list=[ 'image/character/zhanghe.jpg', 'image/character/zhangheng.jpg', 'image/character/zhanghu.jpg', + 'image/character/zhanghua.jpg', 'image/character/zhanghuyuechen.jpg', 'image/character/zhangji.jpg', 'image/character/zhangjiao.jpg', + 'image/character/zhangkai.jpg', 'image/character/zhangliang.jpg', 'image/character/zhangliao.jpg', 'image/character/zhangling.jpg', diff --git a/game/game.js b/game/game.js index 4799a2c17..f58e20a24 100644 --- a/game/game.js +++ b/game/game.js @@ -10440,6 +10440,9 @@ emptyEvent:function(){ event.trigger(event.name); }, + delay:function(){ + game[event.name].apply(game,event._args) + }, chooseCooperationFor:function(){ 'step 0' var next=player.chooseButton([ @@ -12512,9 +12515,11 @@ event.num=player.needsToDiscard(); if(event.num<=0) event.finish(); else{ - if(lib.config.show_phase_prompt){ - player.popup('弃牌阶段'); - } + game.broadcastAll(function(player){ + if(lib.config.show_phase_prompt){ + player.popup('弃牌阶段',null,false); + } + },player); } event.trigger('phaseDiscard'); "step 1" @@ -12650,8 +12655,8 @@ if(ok){ ui.click.ok(); } - else if(ai.basic.chooseCard(event.ai1)){ - if(ai.basic.chooseTarget(event.ai2)&&(!event.filterOk||event.filterOk())){ + else if(ai.basic.chooseCard(event.ai1)||forced){ + if((ai.basic.chooseTarget(event.ai2)||forced)&&(!event.filterOk||event.filterOk())){ ui.click.ok(); event._aiexcludeclear=true; } @@ -12835,8 +12840,8 @@ if(ok){ ui.click.ok(); } - else if(ai.basic.chooseCard(event.ai1||event.ai)){ - if(ai.basic.chooseTarget(event.ai2)&&(!event.filterOk||event.filterOk())){ + else if(ai.basic.chooseCard(event.ai1||event.ai)||forced){ + if((ai.basic.chooseTarget(event.ai2)||forced)&&(!event.filterOk||event.filterOk())){ ui.click.ok(); event._aiexcludeclear=true; } @@ -14121,8 +14126,8 @@ "step 1" if(event.result=='ai'){ game.check(); - if(ai.basic.chooseCard(event.ai1)){ - if(ai.basic.chooseTarget(event.ai2)&&(!event.filterOk||event.filterOk())){ + if(ai.basic.chooseCard(event.ai1)||forced){ + if((ai.basic.chooseTarget(event.ai2)||forced)&&(!event.filterOk||event.filterOk())){ ui.click.ok(); _status.event._aiexclude.length=0; } @@ -16056,14 +16061,18 @@ var owner=get.owner(i,'judge'); if(owner&&(owner!=player||get.position(i)!='h')){ var id=owner.playerid; - if(!map[id]) map[id]=[]; - map[id].push(i); + if(!map[id]) map[id]=[[],[],[]]; + map[id][0].push(i); + var position=get.position(i); + if(position=='h') map[id][1].push(i); + else map[id][2].push(i); } else if(!event.updatePile&&get.position(i)=='c') event.updatePile=true; } + event.losing_map=map; for(var i in map){ var owner=(_status.connectMode?lib.playerOL:game.playerMap)[i]; - var next=owner.lose(map[i],ui.special).set('type','gain').set('forceDie',true).set('getlx',false); + var next=owner.lose(map[i][0],ui.special).set('type','gain').set('forceDie',true).set('getlx',false); if(event.visible==true) next.visible=true; event.relatedLose=next; } @@ -16179,22 +16188,20 @@ game.resume(); },get.delayx(gain2t,gain2t)); } - else if(event.source&&(event.animate=='give'||event.animate=='giveAuto')){ - var evtmap=event.relatedLose; + else if(event.animate=='give'||event.animate=='giveAuto'){ + var evtmap=event.losing_map; if(event.animate=='give'){ - if(evtmap&&evtmap.cards&&evtmap.cards.length>0) event.source.$give(evtmap.cards,player); - else event.source.$give(cards,player); + for(var i in evtmap){ + var source=(_status.connectMode?lib.playerOL:game.playerMap)[i]; + source.$give(evtmap[i][0],player) + } } else{ - var givemap={hs:[],ots:[]}; - if(evtmap&&evtmap.hs&&evtmap.cards){ - for(var i=0;i0){ + if(player.hp>0||event.nodying){ _status.dying.remove(player); game.broadcast(function(list){ _status.dying=list; @@ -16864,7 +16903,7 @@ game.broadcast(function(list){ _status.dying=list; },_status.dying); - if(player.hp<=0&&!player.nodying) player.die(event.reason); + if(player.hp<=0&&!event.nodying&&!player.nodying) player.die(event.reason); }, die:function(){ "step 0" @@ -17605,7 +17644,7 @@ next.player=this; next.num=num; next.toShow=toShow; - next._args=arguments; + next._args=Array.from(arguments); next.setContent('showCharacter'); var evt=_status.event; evt.next.remove(next); @@ -21610,7 +21649,7 @@ if(reason&&reason.source) next.source=reason.source; next.setContent('dying'); next.filterStop=function(){ - if(this.player.hp>0){ + if(this.player.hp>0||this.nodying){ delete this.filterStop; return true; } @@ -25626,8 +25665,11 @@ else this.gaintag.add(gaintag); var str=''; for(var gi=0;gi=range[0]){ + ok=true; + } if(range[1]<=-1){ j=0; for(i=0;i