From 7bfe02efe5409722a1c29bf3f99cfa1faa479962 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Wed, 1 May 2024 15:07:43 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E5=B0=86=E6=88=90=E5=90=8D2024?= =?UTF-8?q?=EF=BC=8C=E6=A0=BC=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加一将成名2024四名获选武将 格式化character\mobile.js、character\yijiang.js、character\yingbian.js为新prettier准则 --- character/mobile.js | 5343 +++++++--------------------- character/rank.js | 8 + character/yijiang.js | 4227 +++++++--------------- character/yingbian.js | 1357 ++----- image/character/linghuyu.jpg | Bin 0 -> 36764 bytes image/character/xukun.jpg | Bin 0 -> 49362 bytes image/character/yj_simafu.jpg | Bin 0 -> 35778 bytes image/character/yj_xuangongzhu.jpg | Bin 0 -> 49443 bytes 8 files changed, 3004 insertions(+), 7931 deletions(-) create mode 100644 image/character/linghuyu.jpg create mode 100644 image/character/xukun.jpg create mode 100644 image/character/yj_simafu.jpg create mode 100644 image/character/yj_xuangongzhu.jpg diff --git a/character/mobile.js b/character/mobile.js index cd31a94bd..a0c519c31 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -6,167 +6,23 @@ game.import("character", function () { connect: true, characterSort: { mobile: { - mobile_default: [ - "mb_sp_guanqiujian", - "mb_caomao", - "chengji", - "lizhaojiaobo", - "xin_huojun", - "muludawang", - "mb_chengui", - "mb_huban", - "mb_xianglang", - "yanxiang", - "xin_wuban", - "laimin", - "baoxin", - "jiangji", - "liwei", - "xin_guozhao", - "miheng", - "taoqian", - "lingcao", - "sunru", - "lifeng", - "zhuling", - "liuye", - "zhaotongzhaoguang", - "majun", - "simazhao", - "wangyuanji", - "pangdegong", - "shenpei", - "hujinding", - "zhangyì", - "jiakui", - "yangbiao", - "chendeng", - "dongcheng", - "yangyi", - "dengzhi", - "zhengxuan", - "sp_sufei", - "furong", - "dingyuan", - "simashi", - "yanghuiyu", - "hucheer", - "gongsunkang", - "nanhualaoxian", - "zhouqun", - "qiaozhou", - "fuqian", - "simafu", - "mayuanyi", - "yanpu", - "sunhanhua", - "sp_maojie", - "peixiu", - "sp_jianggan", - "ruanhui", - "xin_mamidi", - "sp_caosong", - "yangfu", - "wangjun", - "sp_pengyang", - "qianzhao", - "shichangshi", - "yangfeng", - ], - mobile_yijiang: [ - "yj_zhanghe", - "yj_zhangliao", - "yj_xuhuang", - "yj_ganning", - "yj_huangzhong", - "yj_weiyan", - "yj_zhoubuyi", - ], + mobile_default: ["mb_sp_guanqiujian", "mb_caomao", "chengji", "lizhaojiaobo", "xin_huojun", "muludawang", "mb_chengui", "mb_huban", "mb_xianglang", "yanxiang", "xin_wuban", "laimin", "baoxin", "jiangji", "liwei", "xin_guozhao", "miheng", "taoqian", "lingcao", "sunru", "lifeng", "zhuling", "liuye", "zhaotongzhaoguang", "majun", "simazhao", "wangyuanji", "pangdegong", "shenpei", "hujinding", "zhangyì", "jiakui", "yangbiao", "chendeng", "dongcheng", "yangyi", "dengzhi", "zhengxuan", "sp_sufei", "furong", "dingyuan", "simashi", "yanghuiyu", "hucheer", "gongsunkang", "nanhualaoxian", "zhouqun", "qiaozhou", "fuqian", "simafu", "mayuanyi", "yanpu", "sunhanhua", "sp_maojie", "peixiu", "sp_jianggan", "ruanhui", "xin_mamidi", "sp_caosong", "yangfu", "wangjun", "sp_pengyang", "qianzhao", "shichangshi", "yangfeng"], + mobile_yijiang: ["yj_zhanghe", "yj_zhangliao", "yj_xuhuang", "yj_ganning", "yj_huangzhong", "yj_weiyan", "yj_zhoubuyi"], mobile_standard: ["xin_xiahoudun", "xin_zhangfei"], mobile_shenhua_feng: ["re_xiaoqiao", "xin_zhoutai"], - mobile_shenhua_huo: [ - "re_pangtong", - "re_sp_zhugeliang", - "re_xunyu", - "re_dianwei", - "re_yanwen", - "xin_yuanshao", - ], + mobile_shenhua_huo: ["re_pangtong", "re_sp_zhugeliang", "re_xunyu", "re_dianwei", "re_yanwen", "xin_yuanshao"], mobile_shenhua_lin: ["re_dongzhuo", "re_sunjian", "re_zhurong"], - mobile_shenhua_shan: [ - "re_liushan", - "re_dengai", - "re_jiangwei", - "re_caiwenji", - "re_zhangzhang", - "re_sunben", - ], + mobile_shenhua_shan: ["re_liushan", "re_dengai", "re_jiangwei", "re_caiwenji", "re_zhangzhang", "re_sunben"], mobile_shenhua_yin: ["xin_sunliang"], mobile_shenhua_lei: ["re_guanqiujian"], - 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", - ], - mobile_yijiang4: [ - "xin_zhoucang", - "xin_caifuren", - "xin_guyong", - "xin_sunluban", - "xin_caozhen", - "xin_jushou", - "xin_wuyi", - "xin_zhuhuan", - "re_chenqun", - ], + 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"], + mobile_yijiang4: ["xin_zhoucang", "xin_caifuren", "xin_guyong", "xin_sunluban", "xin_caozhen", "xin_jushou", "xin_wuyi", "xin_zhuhuan", "re_chenqun"], mobile_yijiang5: ["xin_zhangyi", "xin_sunxiu", "xin_quancong", "xin_zhuzhi", "xin_caoxiu"], mobile_yijiang67: ["re_jikang"], - mobile_changshi: [ - "scs_zhangrang", - "scs_zhaozhong", - "scs_sunzhang", - "scs_bilan", - "scs_xiayun", - "scs_hankui", - "scs_lisong", - "scs_duangui", - "scs_guosheng", - "scs_gaowang", - ], - mobile_sp: [ - "old_yuanshu", - "re_wangyun", - "re_baosanniang", - "re_weiwenzhugezhi", - "re_zhanggong", - "re_xugong", - "re_heqi", - "liuzan", - "xin_hansui", - "mb_sunluyu", - ], + mobile_changshi: ["scs_zhangrang", "scs_zhaozhong", "scs_sunzhang", "scs_bilan", "scs_xiayun", "scs_hankui", "scs_lisong", "scs_duangui", "scs_guosheng", "scs_gaowang"], + mobile_sp: ["old_yuanshu", "re_wangyun", "re_baosanniang", "re_weiwenzhugezhi", "re_zhanggong", "re_xugong", "re_heqi", "liuzan", "xin_hansui", "mb_sunluyu"], }, }, character: { @@ -175,13 +31,7 @@ game.import("character", function () { chengji: ["male", "wei", 4, ["mbkuangli", "mbxiongsi"]], lizhaojiaobo: ["male", "wei", 4, ["mbzuoyou", "mbshishou"]], yangfeng: ["male", "qun", 4, ["mbxuetu", "mbweiming"]], - xin_huojun: [ - "male", - "shu", - 4, - ["sidai", "jieyu"], - ["character:tw_huojun", "die_audio:tw_huojun"], - ], + xin_huojun: ["male", "shu", 4, ["sidai", "jieyu"], ["character:tw_huojun", "die_audio:tw_huojun"]], muludawang: ["male", "qun", "3/3/1", ["shoufa", "zhoulin", "yuxiang"]], mb_chengui: ["male", "qun", 3, ["guimou", "zhouxian"]], mb_huban: ["male", "wei", 4, ["mbyilie"]], @@ -190,13 +40,7 @@ game.import("character", function () { mb_sunluyu: ["female", "wu", 3, ["mbmeibu", "mbmumu"]], xin_wuban: ["male", "shu", 4, ["xinjintao"], ["clan:陈留吴氏", "character:wuban"]], baoxin: ["male", "qun", 4, ["mutao", "yimou"], ["die_audio:tw_baoxin"]], - jiangji: [ - "male", - "wei", - 3, - ["twjichou", "jilun"], - ["character:tw_jiangji", "die_audio:tw_jiangji"], - ], + jiangji: ["male", "wei", 3, ["twjichou", "jilun"], ["character:tw_jiangji", "die_audio:tw_jiangji"]], liwei: ["male", "shu", 4, ["jiaohua"], ["die_audio:tw_liwei"]], laimin: ["male", "shu", 3, ["laishou", "luanqun"]], yj_zhoubuyi: ["male", "wei", 3, ["mbhuiyao", "mbquesong"]], @@ -339,88 +183,54 @@ game.import("character", function () { scs_gaowang: ["male", "qun", "", ["scsmiaoyu"], ["unseen", "sex:male_castrated"]], }, characterIntro: { - lizhaojiaobo: - "李昭(?—约公元260年),三国时期曹魏官吏,官拜冗从仆射,为魏帝曹髦的亲信。
焦伯,三国时期人物,魏帝曹髦护卫,官拜黄门从官。
曹髦见自己权力威势日渐削弱,感到不胜忿恨,于公元260年(甘露五年)五月初六夜里,令李昭和焦伯等在陵云台布署甲士,出讨司马昭,但最终失败,曹髦为成济所弑,李昭和焦伯等应该也战死。在《三国演义》里,焦伯挺枪出战成济,亦被成济所杀。", - chengji: - "成济(?~260年6月21日),三国时期曹魏官员。官至太子舍人。在魏帝曹髦起兵讨司马昭时,受到司马昭之心腹贾充指使,刺死曹髦。司马昭为平息众怒,将成倅、成济兄弟二人杀死。", - yangfeng: - "杨奉(?-197年/198年),东汉末年将领。杨奉早年参加白波军起义,曾经帮助李傕对抗郭汜,后来背叛李傕。兴平二年,加号兴义将军,护送汉献帝刘协东归雒阳,颇有功勋,加号车骑将军,屯兵于梁县。建安元年,随着汉献帝迁都许县,失去权力,先后依附于袁术、吕布,劫掠徐州和扬州地区。建安二年(一说三年),带兵进犯刘备领地,被刘备诱杀。", - muludawang: - "古典小说《三国演义》中的虚构人物,八纳洞主,孟获盟友。擅驱兽法,能行风雨,控制猛兽并指挥它们作战。在法术帮助下最初对蜀军取得一些胜利,但在诸葛亮的喷火木兽将他的动物吓跑后战败,最后死于乱军之中。", + lizhaojiaobo: "李昭(?—约公元260年),三国时期曹魏官吏,官拜冗从仆射,为魏帝曹髦的亲信。
焦伯,三国时期人物,魏帝曹髦护卫,官拜黄门从官。
曹髦见自己权力威势日渐削弱,感到不胜忿恨,于公元260年(甘露五年)五月初六夜里,令李昭和焦伯等在陵云台布署甲士,出讨司马昭,但最终失败,曹髦为成济所弑,李昭和焦伯等应该也战死。在《三国演义》里,焦伯挺枪出战成济,亦被成济所杀。", + chengji: "成济(?~260年6月21日),三国时期曹魏官员。官至太子舍人。在魏帝曹髦起兵讨司马昭时,受到司马昭之心腹贾充指使,刺死曹髦。司马昭为平息众怒,将成倅、成济兄弟二人杀死。", + yangfeng: "杨奉(?-197年/198年),东汉末年将领。杨奉早年参加白波军起义,曾经帮助李傕对抗郭汜,后来背叛李傕。兴平二年,加号兴义将军,护送汉献帝刘协东归雒阳,颇有功勋,加号车骑将军,屯兵于梁县。建安元年,随着汉献帝迁都许县,失去权力,先后依附于袁术、吕布,劫掠徐州和扬州地区。建安二年(一说三年),带兵进犯刘备领地,被刘备诱杀。", + muludawang: "古典小说《三国演义》中的虚构人物,八纳洞主,孟获盟友。擅驱兽法,能行风雨,控制猛兽并指挥它们作战。在法术帮助下最初对蜀军取得一些胜利,但在诸葛亮的喷火木兽将他的动物吓跑后战败,最后死于乱军之中。", laimin: "来敏(165年—261年),字敬达,义阳新野人,东汉太中大夫来歙之后,司空来艳之子,三国时期蜀汉官员。东汉末年,逢董卓之乱,来敏跟随姐夫黄琬到荆州避难,黄琬是刘璋祖母的侄子,来敏又与姐姐来氏入蜀,被刘璋引为宾客。来敏喜欢读书,尤其喜欢《左氏春秋》。刘备平定益州后,以来敏为典学校尉,后立太子,来敏为家令。刘禅继位后,任命来敏为虎贲中郎将,诸葛亮驻汉中,请来敏为军祭酒、辅军将军。却因其口出狂言而被罢官,诸葛亮死后,来敏历任大长秋、光禄大夫、执慎将军等职,期间多次因说错话而被免官,蜀汉景耀年间,来敏去世,时年九十七岁。", - shichangshi: - "十常侍,指中国东汉(公元25年—220年)灵帝时期(168年-189年)操纵政权的十二个宦官:张让、赵忠、夏恽、郭胜、孙璋、毕岚、栗嵩、段珪、高望、张恭、韩悝、宋典(在小说《三国演义》里,十常侍指的是指张让、赵忠、封谞、段珪、曹节、侯览、蹇硕、程旷、夏恽、郭胜十人),他们都任职中常侍。玩弄小皇帝于股掌之中,以至灵帝称“张常侍是我父,赵常侍是我母”。十常侍自己横征暴敛,卖官鬻爵,他们的父兄子弟遍布天下,横行乡里,祸害百姓,无官敢管。人民不堪剥削、压迫,纷纷起来反抗。当时一些比较清醒的官吏,已看出宦官集团的黑暗腐败,导致大规模农民起义的形势。郎中张钧在给皇帝的奏章中明确指出,黄巾起义是外戚宦官专权逼出来的,他说:“张角所以能兴兵作乱,万人所以乐附之者,其源皆由十常侍多放父兄、子弟、婚宗、宾客典据州郡,辜确财利,侵略百姓,百姓之怨无所告诉,故谋议不轨,聚为‘盗贼’。”后被曹操、袁绍所歼。", - sunzhang: - "孙璋(?-189年?)东汉末期汉灵帝的宦官,官居中常侍,为十常侍之一,在张让、赵忠之下位居第三。光熹元年(189年),张让、赵忠、段珪等诛杀何进,袁绍率军入宫,诛杀孙璋。", + shichangshi: "十常侍,指中国东汉(公元25年—220年)灵帝时期(168年-189年)操纵政权的十二个宦官:张让、赵忠、夏恽、郭胜、孙璋、毕岚、栗嵩、段珪、高望、张恭、韩悝、宋典(在小说《三国演义》里,十常侍指的是指张让、赵忠、封谞、段珪、曹节、侯览、蹇硕、程旷、夏恽、郭胜十人),他们都任职中常侍。玩弄小皇帝于股掌之中,以至灵帝称“张常侍是我父,赵常侍是我母”。十常侍自己横征暴敛,卖官鬻爵,他们的父兄子弟遍布天下,横行乡里,祸害百姓,无官敢管。人民不堪剥削、压迫,纷纷起来反抗。当时一些比较清醒的官吏,已看出宦官集团的黑暗腐败,导致大规模农民起义的形势。郎中张钧在给皇帝的奏章中明确指出,黄巾起义是外戚宦官专权逼出来的,他说:“张角所以能兴兵作乱,万人所以乐附之者,其源皆由十常侍多放父兄、子弟、婚宗、宾客典据州郡,辜确财利,侵略百姓,百姓之怨无所告诉,故谋议不轨,聚为‘盗贼’。”后被曹操、袁绍所歼。", + sunzhang: "孙璋(?-189年?)东汉末期汉灵帝的宦官,官居中常侍,为十常侍之一,在张让、赵忠之下位居第三。光熹元年(189年),张让、赵忠、段珪等诛杀何进,袁绍率军入宫,诛杀孙璋。", bilan: "毕岚(?—189),东汉宦官,十常侍之一。十常侍朋比为奸,祸乱朝纲,制造出党锢之祸,后被袁绍诛杀。另外,毕岚曾制造翻车,用于取河水洒路。", xiayun: "夏恽(?—189),东汉宦官,十常侍之一。后被袁绍、曹操诛于翠花楼前。", hankui: "韩悝(?—189),东汉宦官,十常侍之一。后被袁绍所诛。", lisong: "栗嵩,东汉宦官,十常侍之一,与张让等人均一同任职中常侍。", - duangui: - "段珪(?—189),东汉宦官,十常侍之一。段珪与张让、赵忠等人朋比为奸,党同伐异,横征暴敛,卖官鬻爵,引起了以何进为首的外戚集团的不满。何进谋诛宦官,却不纳曹操、陈琳之谏,多结外镇军阀,翘首京师,与袁绍等谋诛宦竖。终于事泄,被宦官集团查知。张让、段珪等人先下手为强,斩杀何进于嘉德殿前,却也引起了京师的变乱。袁绍等人趁机带兵冲入皇宫,大肆诛杀太监。洛阳卫军变乱后,段珪与张让等人劫持少帝刘辩、陈留王刘协出逃,后被杀。", - guosheng: - "郭胜,南阳宛(今河南南阳)人。汉灵帝时为中常侍,与张让、赵忠等狼狈为奸,并皆封侯。曾助同乡何进、何太后贵幸。后被袁绍等人率兵诛灭。", - gaowang: - "高望(?~189年),京兆人,东汉宦官,十常侍之一,为小黄门兼任尚药监,颇得皇子刘辩的信任。中平六年(189年),张让等人杀害大将军何进,袁绍与王匡等人率兵杀入雒阳端门,在承明堂上斩杀中常侍高望。", - qianzhao: - "牵招(?—231年),字子经,安平郡观津县(今河北省武邑县)人。三国时期曹魏名将。牵招早年师从乐隐,与刘备成为刎颈之交。投靠冀州牧袁绍,担任冀州从事,统领乌丸突骑。袁绍死后,跟随冀州刺史袁尚,受到并州牧高干加害,投奔丞相曹操,授军谋掾。从平乌丸,出任护乌丸校尉。举茂才出身,从平汉中,授中护军。拜平虏校尉,平定东莱郡叛乱。魏文帝曹丕时期,授护鲜卑校尉,驻扎昌平,迁右中郎将、雁门太守,遏制鲜卑轲比能发展壮大。魏明帝即位,赐爵关内侯,营救护乌丸校尉田豫。太和五年,去世。", + duangui: "段珪(?—189),东汉宦官,十常侍之一。段珪与张让、赵忠等人朋比为奸,党同伐异,横征暴敛,卖官鬻爵,引起了以何进为首的外戚集团的不满。何进谋诛宦官,却不纳曹操、陈琳之谏,多结外镇军阀,翘首京师,与袁绍等谋诛宦竖。终于事泄,被宦官集团查知。张让、段珪等人先下手为强,斩杀何进于嘉德殿前,却也引起了京师的变乱。袁绍等人趁机带兵冲入皇宫,大肆诛杀太监。洛阳卫军变乱后,段珪与张让等人劫持少帝刘辩、陈留王刘协出逃,后被杀。", + guosheng: "郭胜,南阳宛(今河南南阳)人。汉灵帝时为中常侍,与张让、赵忠等狼狈为奸,并皆封侯。曾助同乡何进、何太后贵幸。后被袁绍等人率兵诛灭。", + gaowang: "高望(?~189年),京兆人,东汉宦官,十常侍之一,为小黄门兼任尚药监,颇得皇子刘辩的信任。中平六年(189年),张让等人杀害大将军何进,袁绍与王匡等人率兵杀入雒阳端门,在承明堂上斩杀中常侍高望。", + qianzhao: "牵招(?—231年),字子经,安平郡观津县(今河北省武邑县)人。三国时期曹魏名将。牵招早年师从乐隐,与刘备成为刎颈之交。投靠冀州牧袁绍,担任冀州从事,统领乌丸突骑。袁绍死后,跟随冀州刺史袁尚,受到并州牧高干加害,投奔丞相曹操,授军谋掾。从平乌丸,出任护乌丸校尉。举茂才出身,从平汉中,授中护军。拜平虏校尉,平定东莱郡叛乱。魏文帝曹丕时期,授护鲜卑校尉,驻扎昌平,迁右中郎将、雁门太守,遏制鲜卑轲比能发展壮大。魏明帝即位,赐爵关内侯,营救护乌丸校尉田豫。太和五年,去世。", fuqian: "傅佥(?~263年),义阳(治今湖北省枣阳市)人,蜀汉将领傅彤之子,三国时期蜀汉名将。金长于谋略,并颇有胆勇,姜维甚爱之。傅佥官至关中都督。魏国攻伐蜀汉时,傅佥和蒋舒防守阳安关,兵败战死。", - wangjun: - "王濬(207年~286年),字士治,小名阿童,弘农郡湖县(今河南省灵宝市阌乡)人。西晋时期名将。王濬出身世家,博学多闻,容颜英俊,多谋善战。举秀才出身,起家河东郡从事。泰始八年(272年),担任广汉太守,平定益州叛乱,迁益州刺史。利用长江上游地势之利,修造战船,组建强大的水军。上书晋武帝,促成晋灭吴之战。咸宁六年(280年),率兵顺流而下,熔毁横江铁链,攻克丹阳郡,率先攻取石头城,接受吴末帝孙皓投降,完成西晋统一大业。凭借功勋,拜辅国将军、步兵校尉,册封襄阳侯。为避猜忌,纵情享受,累迁特进、抚军大将军、开府仪同三司、散骑常侍、后军将军等。太康六年十二月(286年1月18日),王濬去世,享年八十岁,谥号为“武”,安葬于柏谷山。", + wangjun: "王濬(207年~286年),字士治,小名阿童,弘农郡湖县(今河南省灵宝市阌乡)人。西晋时期名将。王濬出身世家,博学多闻,容颜英俊,多谋善战。举秀才出身,起家河东郡从事。泰始八年(272年),担任广汉太守,平定益州叛乱,迁益州刺史。利用长江上游地势之利,修造战船,组建强大的水军。上书晋武帝,促成晋灭吴之战。咸宁六年(280年),率兵顺流而下,熔毁横江铁链,攻克丹阳郡,率先攻取石头城,接受吴末帝孙皓投降,完成西晋统一大业。凭借功勋,拜辅国将军、步兵校尉,册封襄阳侯。为避猜忌,纵情享受,累迁特进、抚军大将军、开府仪同三司、散骑常侍、后军将军等。太康六年十二月(286年1月18日),王濬去世,享年八十岁,谥号为“武”,安葬于柏谷山。", yangfu: "杨阜(172年—244年),字义山,汉天水冀县(今甘谷县东南)人。三国时期曹魏名臣。汉献帝建安初年,任凉州从事,旋拜安定长史;韦康任刺史后辟为别驾,改任州参军;后因讨马超有功,赐爵关内侯。曹操征汉中时,杨阜担任益州刺史,回来后又担任武都太守。魏明帝时,由将作大匠改少府。杨阜不但卓识远见,而且刚正不阿,敢于直言,对朝廷弊政多有诤谏,六次进言谏魏明帝应勤政爱民,魏明帝对他颇有敬畏之心。杨阜勤政廉洁,在宫内担任少府时,专管宝器、珍膳、衣物等,而他死后则家无馀财。皇帝让杨阜的孙子杨豹继任了少府之职。原甘谷县文昌宫西侧有杨氏家祠,内悬“两代尚书”匾额。", - ruanhui: - "阮氏女,是指三国时期曹魏名士许允之妻阮氏,陈留尉氏人。阮氏女是中国古代四大丑女之一,貌丑而见识非凡。她出身士族之家,是卫尉阮共(字伯彦)之女、阮侃(字德如)之妹。嫁与许允后生有二子:许奇,官至司隶校尉;许猛,官至幽州刺史。", + ruanhui: "阮氏女,是指三国时期曹魏名士许允之妻阮氏,陈留尉氏人。阮氏女是中国古代四大丑女之一,貌丑而见识非凡。她出身士族之家,是卫尉阮共(字伯彦)之女、阮侃(字德如)之妹。嫁与许允后生有二子:许奇,官至司隶校尉;许猛,官至幽州刺史。", peixiu: "裴秀(224年-271年4月3日),字季彦。河东郡闻喜县(今山西省闻喜县)人。[1]魏晋时期名臣、地图学家,东汉尚书令裴茂之孙、曹魏光禄大夫裴潜之子。出身河东裴氏,少年时便颇有名气,后被大将军曹爽辟为掾属,袭爵清阳亭侯,又迁黄门侍郎。高平陵之变后,因是曹爽的故吏而被罢免。此后历任廷尉正、安东将军及卫将军司马,参与谋划军国之政,参与平定诸葛诞叛乱。因功转任尚书,进封鲁阳乡侯。魏元帝继位后,进爵鲁阳县侯,任尚书仆射。咸熙元年(264年),受命负责修改官制,又提议恢复五等爵制。五等制恢复后,获封济川侯。他建议立司马炎为世子,司马炎继位晋王后,拜裴秀为尚书令、右光禄大夫。西晋建立后,加左光禄大夫,封钜鹿郡公。泰始三年(267年),升任司空。泰始七年(271年),裴秀因服食寒食散后饮冷酒而逝世,年四十八,谥号“元”。有文集三卷。裴秀作《禹贡地域图》,开创了中国古代地图绘制学。李约瑟称他为“中国科学制图学之父”,与古希腊著名地图学家托勒密齐名,是世界古代地图学史上东西辉映的两颗灿烂明星。为纪念这位中国地图科学创始人而设立的“裴秀奖”,每两年评选一次,是中国地图学界最高奖项。由于他的贡献突出,联合国天文组织将月球正面的一个环形山命名为“裴秀环形山”,", liucheng: "游卡桌游的原创人物。设定为黄忠的妻子。", - jiangwan: - "蒋琬(?-246年),字公琰。零陵郡湘乡县人。三国时期蜀汉政治家,与诸葛亮、董允、费祎合称“蜀汉四相”。蒋琬最初随刘备入蜀,为广都县长。因其不理政事,惹怒刘备,在诸葛亮的劝说下才免于一死。后重获启用,受到诸葛亮的悉心培养,累官丞相长史兼抚军将军。建兴十二年(234年),诸葛亮去世,蒋琬继其执政,拜尚书令,又加行都护、假节,领益州刺史,再迁大将军,录尚书事,封安阳亭侯。延熙元年(238年),受命开府,加大司马,总揽蜀汉军政。曾制定由水路进攻曹魏的计划,但未被采纳。延熙九年(246年),蒋琬病逝,谥号为恭。", - sunhanhua: - "孙寒华,三国时女仙。梁·陶弘景《真诰》卷一三、五代·杜光庭《墉城集仙录》卷七:其父孙贲为孙权堂兄,寒华少时与杜契有私情,后从杜契受玄白之要,颜容日少。周旋吴越诸山十馀年,得道仙去。《鉴后集》卷四:一云即吴大帝孙权之女。于茅山修道,道成,冲虚而去,因号其山为华姥山。山在茅山崇禧观前。《神异典》卷二五九人于明代,误。", + jiangwan: "蒋琬(?-246年),字公琰。零陵郡湘乡县人。三国时期蜀汉政治家,与诸葛亮、董允、费祎合称“蜀汉四相”。蒋琬最初随刘备入蜀,为广都县长。因其不理政事,惹怒刘备,在诸葛亮的劝说下才免于一死。后重获启用,受到诸葛亮的悉心培养,累官丞相长史兼抚军将军。建兴十二年(234年),诸葛亮去世,蒋琬继其执政,拜尚书令,又加行都护、假节,领益州刺史,再迁大将军,录尚书事,封安阳亭侯。延熙元年(238年),受命开府,加大司马,总揽蜀汉军政。曾制定由水路进攻曹魏的计划,但未被采纳。延熙九年(246年),蒋琬病逝,谥号为恭。", + sunhanhua: "孙寒华,三国时女仙。梁·陶弘景《真诰》卷一三、五代·杜光庭《墉城集仙录》卷七:其父孙贲为孙权堂兄,寒华少时与杜契有私情,后从杜契受玄白之要,颜容日少。周旋吴越诸山十馀年,得道仙去。《鉴后集》卷四:一云即吴大帝孙权之女。于茅山修道,道成,冲虚而去,因号其山为华姥山。山在茅山崇禧观前。《神异典》卷二五九人于明代,误。", yanpu: "阎圃,生卒年不详,是益州巴西安汉(今四川省南充市)人。张鲁割据巴、汉,就以阎圃为功曹。东汉末年人物,本为张鲁部下谋士,后随张鲁一同投降曹操,封平乐乡侯。", - mayuanyi: - "马元义(?—184年6月7日),东汉末年黄巾之乱的组织者之一,是黄巾大方首领。光和六年(183年),马元义奉黄巾军首领张角之命,筹划起事的准备工作。马元义聚集荆州、扬州信徒数万人约定于邺城相会,并收买中常侍封谞、徐奉等为内应,准备于次年(甲子年)三月初五(戊申日)内外同时起事。由于张角弟子济南人唐周的告密,马元义于于中平元年(184年)正月在河内郡山阳县被捕,送往洛阳车裂,同时被杀的还有教众近千人。由于马元义的被杀,迫使张角提前于二月起兵发动叛乱。", + mayuanyi: "马元义(?—184年6月7日),东汉末年黄巾之乱的组织者之一,是黄巾大方首领。光和六年(183年),马元义奉黄巾军首领张角之命,筹划起事的准备工作。马元义聚集荆州、扬州信徒数万人约定于邺城相会,并收买中常侍封谞、徐奉等为内应,准备于次年(甲子年)三月初五(戊申日)内外同时起事。由于张角弟子济南人唐周的告密,马元义于于中平元年(184年)正月在河内郡山阳县被捕,送往洛阳车裂,同时被杀的还有教众近千人。由于马元义的被杀,迫使张角提前于二月起兵发动叛乱。", simafu: "司马孚(180年-272年4月3日),字叔达。河内郡温县(今河南温县)人。三国曹魏至西晋初年重臣,西晋宗室,东汉京兆尹司马防第三子,晋宣帝司马懿之弟。自曹操时代起,司马孚就任文学掾,而后历仕魏国五代皇帝,累迁至太傅。司马孚在“高平陵事变”之际,协助司马懿控制京师,诛杀曹爽一党。后又督军成功防御吴、蜀的进攻,为司马氏政权的稳固多有功劳。但他性格十分谨慎,自司马懿执掌大权起,便逐渐引退,更未直接参与司马氏废立魏帝的谋划。西晋代魏后,司马孚进拜太宰,封安平王。晋武帝司马炎对他十分尊宠,但他并不以此为荣,至死仍以魏臣自称。泰始八年二月壬辰日(272年4月3日),司马孚去世,年九十三。武帝为其举哀三日,葬礼规格比照东汉东平献王刘苍,赐谥献王。", - sunchen: - "孙綝(231年-259年1月18日),字子通,吴郡富春(今浙江杭州市富阳区)人。三国时期吴国宗室、权臣,昭义中郎将孙静曾孙、定武中郎将孙暠之孙、安民都尉孙绰的儿子。门荫入仕,初任偏将军。太平元年(256年),升任侍中、武卫将军、都督中外诸军事。掌权以后,诛杀大司马滕胤、骠骑将军吕据等重臣,升任大将军,册封永宁县侯。嗜好杀戮,与皇帝孙亮的矛盾激化,最终废黜孙亮,拥立琅琊王孙休即位,累迁丞相、荆州牧。永安元年十二月(259年1月),在左将军张布的协助下,遭到皇帝孙休捕杀,时年二十八岁,削除宗籍,改姓故氏。", - qiaozhou: - "谯周(201年-270年),字允南,巴西郡西充国县(今四川西充县槐树镇)人。三国时期蜀汉大臣、学者、儒学家、史学家。幼年丧父,少读典籍,精研六经,颇晓天文,成为蜀地大儒之一,门下有陈寿、罗宪等学生。诸葛亮担任益州牧时,授劝学从事。诸葛亮死后,不顾朝令,前往奔丧。后主刘禅册立太子时,授太子仆,迁太子家令、光禄大夫。反对姜维北伐,著《仇国论》,力陈北伐之失。炎兴元年(263年),邓艾攻打成都时期,力劝刘禅投降,“有全国之功”,投降魏国后,受封阳城亭侯,迁骑都尉。泰始六年(270年),授散骑常侍,同年去世,时年七十岁。", - gongsunkang: - "公孙康(生卒年不详),辽东襄平(今辽宁辽阳)人。东汉末年辽东地区割据军阀,辽东太守公孙度长子(一作庶子)、车骑将军公孙恭之兄。公孙康在其父死后继任辽东太守。建安十二年(207年),擒斩图谋不轨的袁尚、袁熙兄弟,将其首级献予曹操,被拜为左将军,封襄平侯。建安十四年(209年),公孙康大破高句丽,陷其国都,并讨伐韩濊,设置带方郡。死后因二子年幼,由公孙恭继任。曹丕称帝后,被追赠为大司马。", - zhouqun: - "周群(生卒年不详),字仲直,巴西阆中(今四川阆中)人。周群年少时随父周舒学习占验天算之术。后来刘璋聘请周群为师友从事,其预言大多得以应验。刘备割据益州,任命周群为儒林校尉。曾劝说刘备攻汉中必定不利,事后得到应验,被举荐为茂才。", - dongzhao: - "董昭(156年-236年7月4日),字公仁,济阴定陶(今山东省菏泽市定陶区)人。东汉末年曹魏谋士、重臣、开国元勋。董昭年轻时被举为孝廉,后担任袁绍帐下参军。多有战功,但是袁绍听信谗言,董昭不得已离开袁绍投奔张杨。张杨率军迎接汉献帝时,董昭随行,并拜为议郎。后与曹操在洛阳相见,又建议曹操将汉献帝迎接到许昌。董昭自此成为曹操的谋士。建安年间(198年)历任河南尹、冀州牧、徐州牧、魏郡太守等职,多有功劳,深受曹操器重。曹操受封魏公、魏王的谋划都是出自董昭之手。曹丕继魏王位后,董昭任将作大匠。曹丕称帝后,升任大鸿胪。此后先后担任侍中、太常、光禄大夫、太仆等重要职位。魏明帝曹叡即位后转任卫尉。太和六年(232年)升任司徒。青龙四年(236年)卒,时年八十一,谥曰定。", - nanhualaoxian: - "南华老仙,是古典小说《三国演义》中的虚拟人物。其原型来自道教典籍中对庄子的封号,又称“南华仙人”、“南华真人”等。在古典小说《三国演义》通行本的第一回中,描述了南华老仙将《太平要术》赠送给张角的情节。", - chenzhen: - "陈震(?—公元235年),字孝起。荆州南阳郡(今河南南阳)人。三国时期蜀汉官员。刘备领荆州牧时,辟陈震为从事。后随刘备入蜀,为蜀郡北部都尉、汶山太守、犍为太守。建兴三年(225年),拜尚书,迁尚书令。建兴七年(229年),孙权称帝。蜀汉以陈震为卫尉,前往祝贺,与孙权开坛歃盟,交分天下。还蜀,封城阳亭侯。建兴十三年(235年),卒。", - hucheer: - "胡车儿(生卒年不详),东汉末年武将,初从张绣,为其心腹猛将,勇冠三军,与贾诩交情甚佳。宛城大战后,张绣投降曹操,曹操爱胡车儿之骁勇,手以黄金与之。后因曹操私纳张绣亡叔张济的遗孀邹氏,张绣深感其辱,欲杀曹操,与贾诩商议后决心反曹。《三国演义》中,作者考虑到典韦的勇猛,便增加了令胡车儿盗走典韦的双戟的情节。最终典韦、曹昂(曹操长子)、曹安民(曹操侄子)皆死于此次战斗。野史说胡车儿跟随曹操征战,被赵云在长坂坡上红枪挑死。", - simashi: - "司马师(208年~255年3月23日),字子元,河内温县(今河南省温县)人。三国时期曹魏权臣,西晋王朝的奠基人之一,晋宣帝司马懿与宣穆皇后张春华的长子,晋文帝司马昭的同母兄,晋武帝司马炎的伯父。司马师沉着坚强,雄才大略,早年与夏侯玄、何晏齐名。高平陵政变后,以功封长平乡侯,旋加卫将军。司马懿死后,以抚军大将军辅政,独揽朝廷大权,次年升为大将军。掌权后,他制定选拔官吏的法规,命百官推荐贤才,整顿纲纪,使其各有职掌,朝野肃然。司马师也有卓越的军事才能,曾用计于新城之战击溃吴国诸葛恪的大军。嘉平六年(254年),魏帝曹芳与中书令李丰等人密谋除司马师,事情泄露,司马师杀死参与者,迫郭太后废曹芳,改立高贵乡公曹髦为帝。次年,亲自率兵平定毌丘俭、文钦之乱。回师途中病死,时年四十八岁,谥号“忠武”。后被追尊为晋景王。西晋建立后,被追尊为景皇帝,庙号世宗。", - yanghuiyu: - "羊徽瑜(214年-278年),泰山南城(今山东新泰)人,晋景帝司马师第三任妻子。羊徽瑜出身官宦世家泰山羊氏,她是南阳太守羊续的孙女,上党太守羊衜之女;其母为东汉名士左中郎将蔡邕之女、蔡文姬的姐妹。羊徽瑜聪慧贤德,嫁给司马师后未有子女。以司马师之弟司马昭的次子司马攸为继子。司马师死后,司马攸侍奉羊徽瑜非常孝顺。泰始元年(265年),司马昭长子司马炎受禅登基,建立西晋,追谥伯父司马师为景皇帝。泰始二年(266年),尊奉羊徽瑜为景皇后,因居弘训宫,故称弘训太后。咸宁四年(278年),羊徽瑜去世,时年六十五岁,谥号景献皇后,与司马师合葬峻平陵。", - dingyuan: - "丁原(?—189年),字建阳,兖州泰山郡南城县(山东省平邑县郑城镇)人。东汉末年军阀,官拜执金吾、并州刺史。任并州刺史期间,他亲近、善待主簿吕布,又调遣部下张杨、张辽等名将到洛阳任职。汉灵帝驾崩后,带兵进入洛阳,担任执金吾,并与大将军何进谋划诛杀十常侍,但不久事情败露,何进被宦官杀死。在宦官被诛灭之后,丁原与军阀董卓在废帝问题上意见不合产生矛盾,于是董卓诱使吕布将其杀害,其势力亦被吞并。", + sunchen: "孙綝(231年-259年1月18日),字子通,吴郡富春(今浙江杭州市富阳区)人。三国时期吴国宗室、权臣,昭义中郎将孙静曾孙、定武中郎将孙暠之孙、安民都尉孙绰的儿子。门荫入仕,初任偏将军。太平元年(256年),升任侍中、武卫将军、都督中外诸军事。掌权以后,诛杀大司马滕胤、骠骑将军吕据等重臣,升任大将军,册封永宁县侯。嗜好杀戮,与皇帝孙亮的矛盾激化,最终废黜孙亮,拥立琅琊王孙休即位,累迁丞相、荆州牧。永安元年十二月(259年1月),在左将军张布的协助下,遭到皇帝孙休捕杀,时年二十八岁,削除宗籍,改姓故氏。", + qiaozhou: "谯周(201年-270年),字允南,巴西郡西充国县(今四川西充县槐树镇)人。三国时期蜀汉大臣、学者、儒学家、史学家。幼年丧父,少读典籍,精研六经,颇晓天文,成为蜀地大儒之一,门下有陈寿、罗宪等学生。诸葛亮担任益州牧时,授劝学从事。诸葛亮死后,不顾朝令,前往奔丧。后主刘禅册立太子时,授太子仆,迁太子家令、光禄大夫。反对姜维北伐,著《仇国论》,力陈北伐之失。炎兴元年(263年),邓艾攻打成都时期,力劝刘禅投降,“有全国之功”,投降魏国后,受封阳城亭侯,迁骑都尉。泰始六年(270年),授散骑常侍,同年去世,时年七十岁。", + gongsunkang: "公孙康(生卒年不详),辽东襄平(今辽宁辽阳)人。东汉末年辽东地区割据军阀,辽东太守公孙度长子(一作庶子)、车骑将军公孙恭之兄。公孙康在其父死后继任辽东太守。建安十二年(207年),擒斩图谋不轨的袁尚、袁熙兄弟,将其首级献予曹操,被拜为左将军,封襄平侯。建安十四年(209年),公孙康大破高句丽,陷其国都,并讨伐韩濊,设置带方郡。死后因二子年幼,由公孙恭继任。曹丕称帝后,被追赠为大司马。", + zhouqun: "周群(生卒年不详),字仲直,巴西阆中(今四川阆中)人。周群年少时随父周舒学习占验天算之术。后来刘璋聘请周群为师友从事,其预言大多得以应验。刘备割据益州,任命周群为儒林校尉。曾劝说刘备攻汉中必定不利,事后得到应验,被举荐为茂才。", + dongzhao: "董昭(156年-236年7月4日),字公仁,济阴定陶(今山东省菏泽市定陶区)人。东汉末年曹魏谋士、重臣、开国元勋。董昭年轻时被举为孝廉,后担任袁绍帐下参军。多有战功,但是袁绍听信谗言,董昭不得已离开袁绍投奔张杨。张杨率军迎接汉献帝时,董昭随行,并拜为议郎。后与曹操在洛阳相见,又建议曹操将汉献帝迎接到许昌。董昭自此成为曹操的谋士。建安年间(198年)历任河南尹、冀州牧、徐州牧、魏郡太守等职,多有功劳,深受曹操器重。曹操受封魏公、魏王的谋划都是出自董昭之手。曹丕继魏王位后,董昭任将作大匠。曹丕称帝后,升任大鸿胪。此后先后担任侍中、太常、光禄大夫、太仆等重要职位。魏明帝曹叡即位后转任卫尉。太和六年(232年)升任司徒。青龙四年(236年)卒,时年八十一,谥曰定。", + nanhualaoxian: "南华老仙,是古典小说《三国演义》中的虚拟人物。其原型来自道教典籍中对庄子的封号,又称“南华仙人”、“南华真人”等。在古典小说《三国演义》通行本的第一回中,描述了南华老仙将《太平要术》赠送给张角的情节。", + chenzhen: "陈震(?—公元235年),字孝起。荆州南阳郡(今河南南阳)人。三国时期蜀汉官员。刘备领荆州牧时,辟陈震为从事。后随刘备入蜀,为蜀郡北部都尉、汶山太守、犍为太守。建兴三年(225年),拜尚书,迁尚书令。建兴七年(229年),孙权称帝。蜀汉以陈震为卫尉,前往祝贺,与孙权开坛歃盟,交分天下。还蜀,封城阳亭侯。建兴十三年(235年),卒。", + hucheer: "胡车儿(生卒年不详),东汉末年武将,初从张绣,为其心腹猛将,勇冠三军,与贾诩交情甚佳。宛城大战后,张绣投降曹操,曹操爱胡车儿之骁勇,手以黄金与之。后因曹操私纳张绣亡叔张济的遗孀邹氏,张绣深感其辱,欲杀曹操,与贾诩商议后决心反曹。《三国演义》中,作者考虑到典韦的勇猛,便增加了令胡车儿盗走典韦的双戟的情节。最终典韦、曹昂(曹操长子)、曹安民(曹操侄子)皆死于此次战斗。野史说胡车儿跟随曹操征战,被赵云在长坂坡上红枪挑死。", + simashi: "司马师(208年~255年3月23日),字子元,河内温县(今河南省温县)人。三国时期曹魏权臣,西晋王朝的奠基人之一,晋宣帝司马懿与宣穆皇后张春华的长子,晋文帝司马昭的同母兄,晋武帝司马炎的伯父。司马师沉着坚强,雄才大略,早年与夏侯玄、何晏齐名。高平陵政变后,以功封长平乡侯,旋加卫将军。司马懿死后,以抚军大将军辅政,独揽朝廷大权,次年升为大将军。掌权后,他制定选拔官吏的法规,命百官推荐贤才,整顿纲纪,使其各有职掌,朝野肃然。司马师也有卓越的军事才能,曾用计于新城之战击溃吴国诸葛恪的大军。嘉平六年(254年),魏帝曹芳与中书令李丰等人密谋除司马师,事情泄露,司马师杀死参与者,迫郭太后废曹芳,改立高贵乡公曹髦为帝。次年,亲自率兵平定毌丘俭、文钦之乱。回师途中病死,时年四十八岁,谥号“忠武”。后被追尊为晋景王。西晋建立后,被追尊为景皇帝,庙号世宗。", + yanghuiyu: "羊徽瑜(214年-278年),泰山南城(今山东新泰)人,晋景帝司马师第三任妻子。羊徽瑜出身官宦世家泰山羊氏,她是南阳太守羊续的孙女,上党太守羊衜之女;其母为东汉名士左中郎将蔡邕之女、蔡文姬的姐妹。羊徽瑜聪慧贤德,嫁给司马师后未有子女。以司马师之弟司马昭的次子司马攸为继子。司马师死后,司马攸侍奉羊徽瑜非常孝顺。泰始元年(265年),司马昭长子司马炎受禅登基,建立西晋,追谥伯父司马师为景皇帝。泰始二年(266年),尊奉羊徽瑜为景皇后,因居弘训宫,故称弘训太后。咸宁四年(278年),羊徽瑜去世,时年六十五岁,谥号景献皇后,与司马师合葬峻平陵。", + dingyuan: "丁原(?—189年),字建阳,兖州泰山郡南城县(山东省平邑县郑城镇)人。东汉末年军阀,官拜执金吾、并州刺史。任并州刺史期间,他亲近、善待主簿吕布,又调遣部下张杨、张辽等名将到洛阳任职。汉灵帝驾崩后,带兵进入洛阳,担任执金吾,并与大将军何进谋划诛杀十常侍,但不久事情败露,何进被宦官杀死。在宦官被诛灭之后,丁原与军阀董卓在废帝问题上意见不合产生矛盾,于是董卓诱使吕布将其杀害,其势力亦被吞并。", furong: "傅肜(?-222年),义阳(今湖北枣阳)人,三国时蜀汉将领。刘备攻伐吴国时,傅肜为别督。后刘备被陆逊击败,傅肜率部断后,奋战至死。死前怒斥道:“吴狗!何有汉将军降者!”", - zhengxuan: - "郑玄(127年-200年),字康成。北海郡高密县(今山东省高密市)人。东汉末年儒家学者、经学大师。郑玄曾入太学攻《京氏易》、《公羊春秋》及《三统历》、《九章算术》,又从张恭祖学《古文尚书》、《周礼》和《左传》等,最后从马融学古文经。游学归里之后,复客耕东莱,聚徒授课,弟子达数千人,家贫好学,终为大儒。党锢之祸起,遭禁锢,杜门注疏,潜心著述。晚年守节不仕,却遭逼迫从军,最终病逝于元城,年七十四。郑玄治学以古文经学为主,兼采今文经学。他遍注儒家经典,以毕生精力整理古代文化遗产,使经学进入了一个“小统一时代”。著有《天文七政论》、《中侯》等书,共百万余言,世称“郑学”,为汉代经学的集大成者。唐贞观年间,列郑玄于二十二“先师”之列,配享孔庙。宋代时被追封为高密伯。后人建有郑公祠以纪念。", - dengzhi: - "邓芝(178年-251年),字伯苗。义阳郡新野县(今河南新野)人。东汉名将邓禹之后,三国时期蜀汉重臣。邓芝早年曾被预言能位至大将,后被刘备任为郫令,升迁为广汉太守。因任官公廉且有治绩,被征入朝为尚书。刘备逝世后,奉命出使吴国,成功修复两国关系,并深为吴大帝孙权所赏识。建兴六年(228年),丞相诸葛亮策划北伐,命邓芝与大将赵云佯攻郿城,以吸引魏国曹真军主力。建兴十二年(234年),迁前军师、前将军,领兖州刺史,封阳武亭侯,不久督领江州。延熙六年(243年),迁车骑将军,后授假节。又率军平定涪陵叛乱。延熙十四年(251年),邓芝病逝。邓芝性格正直、简单,不刻意修饰情绪。他为将二十多年,赏罚明断,体恤士卒。身上的衣食取自官府,从未经营过私产,妻儿甚至还有忍饥挨饿之时,死时家中也没有多余财物。", + zhengxuan: "郑玄(127年-200年),字康成。北海郡高密县(今山东省高密市)人。东汉末年儒家学者、经学大师。郑玄曾入太学攻《京氏易》、《公羊春秋》及《三统历》、《九章算术》,又从张恭祖学《古文尚书》、《周礼》和《左传》等,最后从马融学古文经。游学归里之后,复客耕东莱,聚徒授课,弟子达数千人,家贫好学,终为大儒。党锢之祸起,遭禁锢,杜门注疏,潜心著述。晚年守节不仕,却遭逼迫从军,最终病逝于元城,年七十四。郑玄治学以古文经学为主,兼采今文经学。他遍注儒家经典,以毕生精力整理古代文化遗产,使经学进入了一个“小统一时代”。著有《天文七政论》、《中侯》等书,共百万余言,世称“郑学”,为汉代经学的集大成者。唐贞观年间,列郑玄于二十二“先师”之列,配享孔庙。宋代时被追封为高密伯。后人建有郑公祠以纪念。", + dengzhi: "邓芝(178年-251年),字伯苗。义阳郡新野县(今河南新野)人。东汉名将邓禹之后,三国时期蜀汉重臣。邓芝早年曾被预言能位至大将,后被刘备任为郫令,升迁为广汉太守。因任官公廉且有治绩,被征入朝为尚书。刘备逝世后,奉命出使吴国,成功修复两国关系,并深为吴大帝孙权所赏识。建兴六年(228年),丞相诸葛亮策划北伐,命邓芝与大将赵云佯攻郿城,以吸引魏国曹真军主力。建兴十二年(234年),迁前军师、前将军,领兖州刺史,封阳武亭侯,不久督领江州。延熙六年(243年),迁车骑将军,后授假节。又率军平定涪陵叛乱。延熙十四年(251年),邓芝病逝。邓芝性格正直、简单,不刻意修饰情绪。他为将二十多年,赏罚明断,体恤士卒。身上的衣食取自官府,从未经营过私产,妻儿甚至还有忍饥挨饿之时,死时家中也没有多余财物。", yangyi: "杨仪(?-235年),字威公,襄阳(今湖北襄阳)人,三国时期蜀汉官员。最初为荆州刺史傅群的主簿,后投奔关羽,任为功曹。关羽遣其至成都,大受刘备赞赏,擢为尚书。因与尚书令刘巴不和,调为弘农太守。建兴三年(225年)任丞相参军,此后一直跟随诸葛亮战斗。亮卒,他部署安全退军。诸葛亮在生前定蒋琬继己任,杨仪仅拜中军师。建兴十三年(235年),因多出怨言,被削职流放至汉嘉郡。但杨仪仍不自省,又上书诽谤,言辞激烈,最后下狱,自杀身亡。", - dongcheng: - "董承(?~200年),字号不详,冀州河间人(今河北献县)人。东汉末年外戚大臣,汉灵帝母亲董太后侄子,汉献帝嫔妃董贵人之父。初从西凉军,为董卓女婿牛辅部曲。护卫汉献帝刘协从长安东归洛阳,拜为卫将军,受封列侯。建安四年(199年),拜车骑将军。自称领受汉献帝衣带诏,联合刘备、种辑、吴子兰、王子服、吴硕等人密谋诛杀曹操。五年正月,图谋泄露,董承诸人及董贵人全部遇害。", - chendeng: - "陈登(163—201),字元龙,下邳淮浦(今江苏涟水西)人。东汉末年将领、官员。沛相陈珪之子。为人爽朗,性格沈静,智谋过人,少年时有扶世济民之志,并且博览群书,学识渊博。二十五岁时,举孝廉,任东阳县长。虽然年轻,但他能够体察民情,抚弱育孤,深得百姓敬重。后来,徐州牧陶谦提拔他为典农校尉,主管一州农业生产。他亲自考察徐州的土壤状况,开发水利,发展农田灌溉,使汉末迭遭破坏的徐州农业得到一定程度的恢复,百姓们安居乐业,“秔稻丰积”。建安初奉使赴许,向曹操献灭吕布之策,被授广陵太守。以灭吕布有功,加伏波将军。又迁东城太守。年三十九卒。其子陈肃,魏文帝时追陈登之功,为郎中。", - yangbiao: - "杨彪(142年-225年),字文先。弘农郡华阴县(今陕西华阴)人。东汉末年名臣,太尉杨赐之子、名士杨修之父。杨彪少年时受家学熏陶,初举孝廉、茂才。其后征拜为议郎,参与续写《东观汉记》。任京兆尹时,揭发黄门令王甫的贪赃行为,使其被定罪诛杀。累任侍中、五官中郎将、卫尉等职。汉献帝时,遍历三公(司空、司徒、太尉)之职。权臣董卓意图迁都时,他据理力争。献帝东迁时,杨彪尽节护主。曹操挟献帝定都许县后,将杨彪下狱,获释后又任太常。他见汉室衰微,便诈称脚疾,不理世事。曹魏建立后,拒绝出任太尉,改光禄大夫,待以客礼。黄初六年(225年),杨彪去世,年八十四。其著作现仅存《答曹公书》一篇。", - zhangyì: - "张翼(?-264年),字伯恭,益州犍为郡武阳县人。三国时期蜀汉将领。历任梓潼、广汉、蜀郡三郡太守,出任庲降都督,后随诸葛亮和姜维北伐,官至左车骑将军,领冀州刺史。初封关内侯,进爵都亭侯。蜀汉灭亡后,魏将钟会密谋造反,成都大乱,张翼亦为乱兵所杀。张翼是蜀汉第三任庲降都督,由于执法严厉,不得南夷欢心。在北伐上,张翼认为国小民疲,不应滥用武力,是蜀汉朝廷当时极少敢当朝和姜维争辩北伐问题的大臣。", + dongcheng: "董承(?~200年),字号不详,冀州河间人(今河北献县)人。东汉末年外戚大臣,汉灵帝母亲董太后侄子,汉献帝嫔妃董贵人之父。初从西凉军,为董卓女婿牛辅部曲。护卫汉献帝刘协从长安东归洛阳,拜为卫将军,受封列侯。建安四年(199年),拜车骑将军。自称领受汉献帝衣带诏,联合刘备、种辑、吴子兰、王子服、吴硕等人密谋诛杀曹操。五年正月,图谋泄露,董承诸人及董贵人全部遇害。", + chendeng: "陈登(163—201),字元龙,下邳淮浦(今江苏涟水西)人。东汉末年将领、官员。沛相陈珪之子。为人爽朗,性格沈静,智谋过人,少年时有扶世济民之志,并且博览群书,学识渊博。二十五岁时,举孝廉,任东阳县长。虽然年轻,但他能够体察民情,抚弱育孤,深得百姓敬重。后来,徐州牧陶谦提拔他为典农校尉,主管一州农业生产。他亲自考察徐州的土壤状况,开发水利,发展农田灌溉,使汉末迭遭破坏的徐州农业得到一定程度的恢复,百姓们安居乐业,“秔稻丰积”。建安初奉使赴许,向曹操献灭吕布之策,被授广陵太守。以灭吕布有功,加伏波将军。又迁东城太守。年三十九卒。其子陈肃,魏文帝时追陈登之功,为郎中。", + yangbiao: "杨彪(142年-225年),字文先。弘农郡华阴县(今陕西华阴)人。东汉末年名臣,太尉杨赐之子、名士杨修之父。杨彪少年时受家学熏陶,初举孝廉、茂才。其后征拜为议郎,参与续写《东观汉记》。任京兆尹时,揭发黄门令王甫的贪赃行为,使其被定罪诛杀。累任侍中、五官中郎将、卫尉等职。汉献帝时,遍历三公(司空、司徒、太尉)之职。权臣董卓意图迁都时,他据理力争。献帝东迁时,杨彪尽节护主。曹操挟献帝定都许县后,将杨彪下狱,获释后又任太常。他见汉室衰微,便诈称脚疾,不理世事。曹魏建立后,拒绝出任太尉,改光禄大夫,待以客礼。黄初六年(225年),杨彪去世,年八十四。其著作现仅存《答曹公书》一篇。", + zhangyì: "张翼(?-264年),字伯恭,益州犍为郡武阳县人。三国时期蜀汉将领。历任梓潼、广汉、蜀郡三郡太守,出任庲降都督,后随诸葛亮和姜维北伐,官至左车骑将军,领冀州刺史。初封关内侯,进爵都亭侯。蜀汉灭亡后,魏将钟会密谋造反,成都大乱,张翼亦为乱兵所杀。张翼是蜀汉第三任庲降都督,由于执法严厉,不得南夷欢心。在北伐上,张翼认为国小民疲,不应滥用武力,是蜀汉朝廷当时极少敢当朝和姜维争辩北伐问题的大臣。", jiakui: "贾逵(174年—228年),本名贾衢,字梁道,河东襄陵人(今山西临汾县)。汉末三国时期魏国名臣,西晋开国功臣贾充父亲。初为并州郡吏,迁渑池县令,拜弘农太守,历仕曹操、曹丕、曹叡三世,是曹魏政权中具有军政才干的人物,终其一生为魏国统一事业作出卓越贡献。担任豫州刺史期间,兴修水利,凿通运河二百余里,时称“贾侯渠”,便利民生。随同曹丕伐吴,进封阳里亭侯,加号建威将军。石亭之战,率军救出曹休。太和二年,去世,赠本官,谥号为肃,《唐会要》将其尊为魏晋八君子之一。", - shenpei: - "审配(?-204年),字正南,魏郡阴安(今河北清丰北)人。为人正直, 袁绍领冀州,审配被委以腹心之任,并总幕府。河北平定,袁绍以审配、逢纪统军事,审配恃其强盛,力主与曹操决战。曾率领弓弩手大破曹军于官渡。官渡战败,审配二子被俘,反因此受谮见疑,幸得逢纪力保。袁绍病死,审配等矫诏立袁尚为嗣,导致兄弟相争,被曹操各个击破。曹操围邺,审配死守数月,终城破被擒,拒不投降,慷慨受死。", - hujinding: - "胡金定,女,传说中关羽之妻。关索之母,配偶关羽,出处《花关索传》和元代《三国志评话》民间传说人物。", + shenpei: "审配(?-204年),字正南,魏郡阴安(今河北清丰北)人。为人正直, 袁绍领冀州,审配被委以腹心之任,并总幕府。河北平定,袁绍以审配、逢纪统军事,审配恃其强盛,力主与曹操决战。曾率领弓弩手大破曹军于官渡。官渡战败,审配二子被俘,反因此受谮见疑,幸得逢纪力保。袁绍病死,审配等矫诏立袁尚为嗣,导致兄弟相争,被曹操各个击破。曹操围邺,审配死守数月,终城破被擒,拒不投降,慷慨受死。", + hujinding: "胡金定,女,传说中关羽之妻。关索之母,配偶关羽,出处《花关索传》和元代《三国志评话》民间传说人物。", }, characterTitle: {}, card: { @@ -563,10 +373,7 @@ game.import("character", function () { equipValue: function (card, player) { if ( !game.hasPlayer(function (current) { - return ( - player.canUse("sha", current) && - get.effect(current, { name: "sha" }, player, player) > 0 - ); + return player.canUse("sha", current) && get.effect(current, { name: "sha" }, player, player) > 0; }) ) { return 1; @@ -616,12 +423,7 @@ game.import("character", function () { await target.draw(2); await target.chooseToDiscard(1, true, "h"); } else { - await target.chooseToDiscard( - target === player ? "佐佑" : `${get.translation(player)}对你发动了【佐佑】`, - "请弃置两张手牌,然后获得1点护甲", - 2, - true - ); + await target.chooseToDiscard(target === player ? "佐佑" : `${get.translation(player)}对你发动了【佐佑】`, "请弃置两张手牌,然后获得1点护甲", 2, true); await target.changeHujia(1, null, true); } }, @@ -629,8 +431,7 @@ game.import("character", function () { marktext: "☯", intro: { content(storage, player) { - if (!storage) - return "转换技。出牌阶段限一次,你可以令一名角色摸两张牌,然后其弃置一张手牌。"; + if (!storage) return "转换技。出牌阶段限一次,你可以令一名角色摸两张牌,然后其弃置一张手牌。"; return "转换技。出牌阶段限一次,你可以令一名手牌数不少于二的角色弃置两张手牌,然后其获得1点护甲。"; }, }, @@ -638,10 +439,8 @@ game.import("character", function () { order(item, player) { if ( player.storage.mbzuoyou && - game.hasPlayer((current) => { - return ( - current !== player && get.effect(current, "mbzuoyou", player, player) > 0 - ); + game.hasPlayer(current => { + return current !== player && get.effect(current, "mbzuoyou", player, player) > 0; }) ) return get.order({ name: "zengbin" }) + 0.1; @@ -675,7 +474,7 @@ game.import("character", function () { ); }, ai: { - combo: "mbzuoyou" + combo: "mbzuoyou", }, }, //成济 @@ -683,16 +482,16 @@ game.import("character", function () { audio: 2, trigger: { player: "phaseUseBegin" }, filter(event, player) { - return game.hasPlayer((current) => current !== player); + return game.hasPlayer(current => current !== player); }, forced: true, group: ["mbkuangli_target", "mbkuangli_remove"], async content(event, trigger, player) { - let targets = game.filterPlayer((current) => current !== player).randomSort(); + let targets = game.filterPlayer(current => current !== player).randomSort(); targets = targets.slice(0, Math.ceil(Math.random() * targets.length)); targets.sortBySeat(); player.line(targets, "thunder"); - targets.forEach((current) => { + targets.forEach(current => { current.addSkill("mbkuangli_mark"); }); await game.asyncDelayx(); @@ -702,21 +501,18 @@ game.import("character", function () { audio: "mbkuangli", trigger: { player: "useCardToPlayered" }, filter(event, player) { - return ( - event.target.hasSkill("mbkuangli_mark") && - [player, event.target].some((current) => current.countCards("he")) - ); + return event.target.hasSkill("mbkuangli_mark") && [player, event.target].some(current => current.countCards("he")); }, forced: true, logTarget: "target", usable: 2, async content(event, trigger, player) { const target = trigger.target; - const playerCards = player.getCards("he", (card) => { + const playerCards = player.getCards("he", card => { return lib.filter.cardDiscardable(card, player, "mbkuangli"); }); if (playerCards.length > 0) await player.discard(playerCards.randomGet()); - const targetCards = target.getCards("he", (card) => { + const targetCards = target.getCards("he", card => { return lib.filter.cardDiscardable(card, target, "mbkuangli"); }); if (targetCards.length > 0) await target.discard(targetCards.randomGet()); @@ -729,12 +525,7 @@ game.import("character", function () { player(card, player, target, current) { if (!target) return; const counttrigger = player.storage.counttrigger; - if ( - counttrigger && - counttrigger.mbkuangli_target && - counttrigger.mbkuangli_target >= lib.skill.mbkuangli_target.usable - ) - return; + if (counttrigger && counttrigger.mbkuangli_target && counttrigger.mbkuangli_target >= lib.skill.mbkuangli_target.usable) return; if (target.hasSkill("mbkuangli_mark")) { if (get.attitude(player, target) > 0) return 0.75; return 1.25; @@ -747,11 +538,11 @@ game.import("character", function () { audio: "mbkuangli", trigger: { player: "phaseEnd" }, filter(event, player) { - return game.hasPlayer((current) => current.hasSkill("mbkuangli_mark")); + return game.hasPlayer(current => current.hasSkill("mbkuangli_mark")); }, forced: true, async content(event, trigger, player) { - game.countPlayer((current) => { + game.countPlayer(current => { if (current.hasSkill("mbkuangli_mark")) { player.line(current); current.removeSkill("mbkuangli_mark"); @@ -784,7 +575,7 @@ game.import("character", function () { selectCard: [-1, -2], async content(event, trigger, player) { player.awakenSkill("mbxiongsi"); - const targets = game.filterPlayer((current) => current !== player); + const targets = game.filterPlayer(current => current !== player); for (const target of targets) { player.line(target, "thunder"); await target.loseHp(); @@ -795,7 +586,7 @@ game.import("character", function () { if (get.effect(player, "mbxiongsi", player) <= 0) return 1; if ( player.countCards("h") > 3 && - player.countCards("h", (card) => { + player.countCards("h", card => { return player.hasValueTarget(card); }) > 0 ) @@ -805,22 +596,16 @@ game.import("character", function () { result: { player(player) { let eff = 0; - game.countPlayer((current) => { + game.countPlayer(current => { let effx = get.effect(current, { name: "losehp" }, player, player); if (get.attitude(player, current) < -6 && current.getHp() <= 1) effx *= 1.3; eff += effx; }); - eff *= - player.getHp() + - player.countCards("hs", (card) => player.canSaveCard(card, player)) <= - 2 - ? 1.5 - : 0.35; + eff *= player.getHp() + player.countCards("hs", card => player.canSaveCard(card, player)) <= 2 ? 1.5 : 0.35; eff -= player .getCards("h") - .map((card) => { - if (lib.filter.cardDiscardable(card, player, "mbxiongsi")) - return get.value(card); + .map(card => { + if (lib.filter.cardDiscardable(card, player, "mbxiongsi")) return get.value(card); return 0; }) .reduce((p, c) => p + c, 0); @@ -839,7 +624,7 @@ game.import("character", function () { filter(event, player) { return ( (event.name != "phase" || game.phaseNumber == 0) && - game.hasPlayer((current) => { + game.hasPlayer(current => { return current !== player && current.hasEnabledSlot(1); }) && get.mode() == "identity" @@ -847,15 +632,10 @@ game.import("character", function () { }, async cost(event, trigger, player) { event.result = await player - .chooseTarget( - get.prompt("mbcuizhen"), - "废除至多两名其他角色的武器栏", - [1, 2], - (card, player, target) => { - return target !== player && target.hasEnabledSlot(1); - } - ) - .set("ai", (target) => { + .chooseTarget(get.prompt("mbcuizhen"), "废除至多两名其他角色的武器栏", [1, 2], (card, player, target) => { + return target !== player && target.hasEnabledSlot(1); + }) + .set("ai", target => { return -get.attitude(get.player(), target); }) .forResult(); @@ -878,11 +658,7 @@ game.import("character", function () { if (!player.isPhaseUsing()) return false; if (!get.tag(event.card, "damage")) return false; const target = event.target; - return ( - target !== player && - target.countCards("h") >= target.getHp() && - target.hasEnabledSlot(1) - ); + return target !== player && target.countCards("h") >= target.getHp() && target.hasEnabledSlot(1); }, prompt2: "废除其的武器栏", logTarget: "target", @@ -902,7 +678,7 @@ game.import("character", function () { filter(event, player) { return ( !event.numFixed && - game.hasPlayer((current) => { + game.hasPlayer(current => { return current.hasDisabledSlot(1); }) ); @@ -910,7 +686,7 @@ game.import("character", function () { async content(event, trigger, player) { trigger.num += Math.min( 2, - game.countPlayer((current) => { + game.countPlayer(current => { return current.countDisabledSlot(1); }) ); @@ -924,19 +700,12 @@ game.import("character", function () { player: "damageEnd", }, filter(event, player) { - return ( - player.countCards("h") > 0 || - (event.source && event.source.isIn() && event.source.hasDisabledSlot(1)) - ); + return player.countCards("h") > 0 || (event.source && event.source.isIn() && event.source.hasDisabledSlot(1)); }, forced: true, async content(event, trigger, player) { if (player.countCards("h") > 0) { - await player.chooseToDiscard( - `溃离:请弃置${get.cnNumber(trigger.num)}张手牌`, - trigger.num, - true - ); + await player.chooseToDiscard(`溃离:请弃置${get.cnNumber(trigger.num)}张手牌`, trigger.num, true); } const source = trigger.source; if (source && source.isIn() && source.hasDisabledSlot(1)) { @@ -956,8 +725,7 @@ game.import("character", function () { }, filter(event, player) { let skills = []; - if (player.additionalSkills && player.additionalSkills.mbqianlong) - skills.addArray(player.additionalSkills.mbqianlong); + if (player.additionalSkills && player.additionalSkills.mbqianlong) skills.addArray(player.additionalSkills.mbqianlong); return player.countMark("mbqianlong") >= 25 * skills.length; }, forced: true, @@ -971,13 +739,7 @@ game.import("character", function () { }, group: ["mbqianlong_begin", "mbqianlong_add"], async content(event, trigger, player) { - player.addAdditionalSkill( - "mbqianlong", - lib.skill.mbqianlong.derivation.slice( - 0, - Math.floor(player.countMark("mbqianlong") / 25) - ) - ); + player.addAdditionalSkill("mbqianlong", lib.skill.mbqianlong.derivation.slice(0, Math.floor(player.countMark("mbqianlong") / 25))); }, marktext: "道", intro: { @@ -1009,8 +771,7 @@ game.import("character", function () { global: "loseAsyncAfter", }, filter(event, player) { - if (player.countMark("mbqianlong") >= lib.skill.mbqianlong.maxMarkCount) - return false; + if (player.countMark("mbqianlong") >= lib.skill.mbqianlong.maxMarkCount) return false; if (event.name === "damage") return event.num > 0; return event.getg(player).length > 0; }, @@ -1021,9 +782,7 @@ game.import("character", function () { forced: true, locked: false, async content(event, trigger, player) { - let toAdd = - 5 * - (1 + (trigger.name === "damage") + (event.triggername === "damageSource")); + let toAdd = 5 * (1 + (trigger.name === "damage") + (event.triggername === "damageSource")); lib.skill.mbqianlong.addMark(player, toAdd); }, }, @@ -1038,12 +797,8 @@ game.import("character", function () { filter(event, player) { return ( (event.name != "phase" || game.phaseNumber == 0) && - game.hasPlayer((current) => { - return ( - current !== player && - current.group === "wei" && - player.hasZhuSkill("mbweitong", current) - ); + game.hasPlayer(current => { + return current !== player && current.group === "wei" && player.hasZhuSkill("mbweitong", current); }) ); }, @@ -1054,17 +809,13 @@ game.import("character", function () { lib.skill.mbqianlong.addMark( player, 20 * - game.countPlayer((current) => { - return ( - current !== player && - current.group === "wei" && - player.hasZhuSkill("mbweitong", current) - ); + game.countPlayer(current => { + return current !== player && current.group === "wei" && player.hasZhuSkill("mbweitong", current); }) ); }, ai: { - combo: "mbqianlong" + combo: "mbqianlong", }, }, mbcmqingzheng: { @@ -1078,28 +829,20 @@ game.import("character", function () { content() { "step 0"; var num = 2; - var prompt = - "###" + get.prompt("sbqingzheng") + "###弃置" + get.cnNumber(num) + "种花色的所有牌"; - var next = player.chooseButton( - [prompt, [lib.suit.map((i) => ["", "", "lukai_" + i]), "vcard"]], - num - ); - next.set("filterButton", (button) => { + var prompt = "###" + get.prompt("sbqingzheng") + "###弃置" + get.cnNumber(num) + "种花色的所有牌"; + var next = player.chooseButton([prompt, [lib.suit.map(i => ["", "", "lukai_" + i]), "vcard"]], num); + next.set("filterButton", button => { var player = _status.event.player; var cards = player.getCards("h", { suit: button.link[2].slice(6) }); - return ( - cards.length > 0 && - cards.filter((card) => lib.filter.cardDiscardable(card, player, "sbqingzheng")) - .length == cards.length - ); + return cards.length > 0 && cards.filter(card => lib.filter.cardDiscardable(card, player, "sbqingzheng")).length == cards.length; }); - next.set("ai", (button) => { + next.set("ai", button => { var player = _status.event.player; return ( 15 - player .getCards("h", { suit: button.link[2].slice(6) }) - .map((i) => get.value(i)) + .map(i => get.value(i)) .reduce((p, c) => p + c, 0) ); }); @@ -1112,18 +855,16 @@ game.import("character", function () { suit: button.link[2].slice(6), }); if (cards.length) { - var chosen = - cards.filter((i) => ui.selected.cards.includes(i)).length == - cards.length; + var chosen = cards.filter(i => ui.selected.cards.includes(i)).length == cards.length; if (chosen) { ui.selected.cards.removeArray(cards); - cards.forEach((card) => { + cards.forEach(card => { card.classList.remove("selected"); card.updateTransform(false); }); } else { ui.selected.cards.addArray(cards); - cards.forEach((card) => { + cards.forEach(card => { card.classList.add("selected"); card.updateTransform(true); }); @@ -1153,20 +894,17 @@ game.import("character", function () { if (result.bool) { var cards = result.cards; if (!cards.length) { - var suits = result.links.map((i) => i[2].slice(6)); - cards = player.getCards("h", (card) => suits.includes(get.suit(card, player))); + var suits = result.links.map(i => i[2].slice(6)); + cards = player.getCards("h", card => suits.includes(get.suit(card, player))); } event.cards = cards; if (!cards.length) event.finish(); else player - .chooseTarget( - "清正:观看一名其他角色的手牌并弃置其中一种花色的所有牌", - (card, player, target) => { - return target != player && target.countCards("h"); - } - ) - .set("ai", (target) => { + .chooseTarget("清正:观看一名其他角色的手牌并弃置其中一种花色的所有牌", (card, player, target) => { + return target != player && target.countCards("h"); + }) + .set("ai", target => { var player = _status.event.player, att = get.attitude(player, target); if (att >= 0) return 0; @@ -1183,9 +921,7 @@ game.import("character", function () { var dialog = ["清正:弃置" + get.translation(target) + "一种花色的所有牌"]; for (var suit of lib.suit.concat("none")) { if (target.countCards("h", { suit: suit })) { - dialog.push( - '
' + get.translation(suit + "2") + "牌
" - ); + dialog.push('
' + get.translation(suit + "2") + "牌
"); dialog.push(target.getCards("h", { suit: suit })); list.push(suit); } @@ -1200,13 +936,9 @@ game.import("character", function () { .set( "control", (() => { - var getv = (cards) => - cards.map((i) => get.value(i)).reduce((p, c) => p + c, 0); + var getv = cards => cards.map(i => get.value(i)).reduce((p, c) => p + c, 0); return list.sort((a, b) => { - return ( - getv(target.getCards("h", { suit: b })) - - getv(target.getCards("h", { suit: a })) - ); + return getv(target.getCards("h", { suit: b })) - getv(target.getCards("h", { suit: a })); })[0]; })() ); @@ -1274,7 +1006,7 @@ game.import("character", function () { audioname: ["mb_caomao"], inherit: "sbfangzhu", filter(event, player) { - return game.hasPlayer((current) => current !== player); + return game.hasPlayer(current => current !== player); }, usable: 1, chooseButton: { @@ -1293,23 +1025,14 @@ game.import("character", function () { const player = get.player(); if (button.link === 2) { if ( - game.hasPlayer((target) => { - if ( - target.hasSkill("mbcmfangzhu_ban") || - target.hasSkill("fengyin") || - target.hasSkill("baiban") - ) - return false; + game.hasPlayer(target => { + if (target.hasSkill("mbcmfangzhu_ban") || target.hasSkill("fengyin") || target.hasSkill("baiban")) return false; return ( get.attitude(player, target) < 0 && ["name", "name1", "name2"] .map((sum, name) => { - if ( - target[name] && - (name != "name1" || target.name != target.name1) - ) { - if (get.character(target[name])) - return get.rank(target[name], true); + if (target[name] && (name != "name1" || target.name != target.name1)) { + if (get.character(target[name])) return get.rank(target[name], true); } return 0; }) @@ -1353,24 +1076,11 @@ game.import("character", function () { target(player, target) { switch (lib.skill.mbcmfangzhu_backup.num) { case 1: - return ( - -target.countCards( - "h", - (card) => get.type(card) != "trick" - ) - 1 - ); + return -target.countCards("h", card => get.type(card) != "trick") - 1; case 2: - return -target - .getSkills(null, null, false) - .reduce((sum, skill) => { - return ( - sum + - Math.max( - get.skillRank(skill, "out"), - get.skillRank(skill, "in") - ) - ); - }, 0); + return -target.getSkills(null, null, false).reduce((sum, skill) => { + return sum + Math.max(get.skillRank(skill, "out"), get.skillRank(skill, "in")); + }, 0); } }, }, @@ -1391,7 +1101,7 @@ game.import("character", function () { order: 10, result: { player(player) { - return game.hasPlayer((current) => get.attitude(player, current) < 0) ? 1 : 0; + return game.hasPlayer(current => get.attitude(player, current) < 0) ? 1 : 0; }, }, }, @@ -1419,16 +1129,14 @@ game.import("character", function () { const hs = player.getCards("h"), cards = [card]; if (Array.isArray(card.cards)) cards.addArray(card.cards); - if (cards.containsSome(...hs) && !storage.includes(get.type2(card))) - return false; + if (cards.containsSome(...hs) && !storage.includes(get.type2(card))) return false; }, cardSavable(card, player) { const storage = player.getStorage("mbcmfangzhu_ban"); const hs = player.getCards("h"), cards = [card]; if (Array.isArray(card.cards)) cards.addArray(card.cards); - if (cards.containsSome(...hs) && !storage.includes(get.type2(card))) - return false; + if (cards.containsSome(...hs) && !storage.includes(get.type2(card))) return false; }, }, }, @@ -1464,7 +1172,7 @@ game.import("character", function () { result: { player(player) { let eff = 1; - game.countPlayer((current) => { + game.countPlayer(current => { const att = get.attitude(player, current), num = Math.abs(current.getHp(true) - 1); const delt = Math.max(0, num + current.hujia - 5); @@ -1484,20 +1192,14 @@ game.import("character", function () { firstDo: true, filter(event, player) { const nameList = ["shan", "tao", "jiu"]; - return event.getd().some((card) => { - return ( - nameList.includes(get.name(card, false)) && - get.position(card, true) === "d" - ); + return event.getd().some(card => { + return nameList.includes(get.name(card, false)) && get.position(card, true) === "d"; }); }, async content(event, trigger, player) { const nameList = ["shan", "tao", "jiu"]; - const cards = trigger.getd().filter((card) => { - return ( - nameList.includes(get.name(card, false)) && - get.position(card, true) === "d" - ); + const cards = trigger.getd().filter(card => { + return nameList.includes(get.name(card, false)) && get.position(card, true) === "d"; }); await game.cardsGotoSpecial(cards); game.log(cards, "被移出了游戏"); @@ -1512,8 +1214,7 @@ game.import("character", function () { enable: "phaseUse", usable: 2, filter(event, player) { - if (player.countMark("mbxuetu_status") !== 1 && player.getStat("skill").mbxuetu) - return false; + if (player.countMark("mbxuetu_status") !== 1 && player.getStat("skill").mbxuetu) return false; if (!player.storage.mbxuetu) return player.countCards("he"); return true; }, @@ -1546,14 +1247,12 @@ game.import("character", function () { storage = player.storage.mbxuetu, status = player.countMark("mbxuetu_status"); if (status === 0) { - if (storage) - return "转换技。出牌阶段限一次,你可以失去1点体力,然后令一名角色摸两张牌。"; + if (storage) return "转换技。出牌阶段限一次,你可以失去1点体力,然后令一名角色摸两张牌。"; return "转换技。出牌阶段限一次,你可以弃置一张牌,然后令一名角色回复1点体力。"; } else if (status === 1) { return "出牌阶段各限一次。⒈你可以弃置一张牌,然后令一名角色回复1点体力;⒉你可以失去1点体力,然后令一名角色摸两张牌。"; } else { - if (storage) - return "转换技。出牌阶段限一次,你可以摸一张牌,然后对一名角色造成1点伤害。"; + if (storage) return "转换技。出牌阶段限一次,你可以摸一张牌,然后对一名角色造成1点伤害。"; return "转换技。出牌阶段限一次,你可以回复1点体力,然后令一名角色弃置两张牌。"; } }, @@ -1594,12 +1293,10 @@ game.import("character", function () { intro: { content: (storage, player) => { if (!player.countMark("mbxuetu_status")) { - if (storage) - return "转换技。出牌阶段限一次,你可以失去1点体力,然后令一名角色摸两张牌。"; + if (storage) return "转换技。出牌阶段限一次,你可以失去1点体力,然后令一名角色摸两张牌。"; return "转换技。出牌阶段限一次,你可以弃置一张牌,然后令一名角色回复1点体力。"; } else { - if (storage) - return "转换技。出牌阶段限一次,你可以摸一张牌,然后对一名角色造成1点伤害。"; + if (storage) return "转换技。出牌阶段限一次,你可以摸一张牌,然后对一名角色造成1点伤害。"; return "转换技。出牌阶段限一次,你可以回复1点体力,然后令一名角色弃置两张牌。"; } }, @@ -1607,8 +1304,7 @@ game.import("character", function () { ai: { order(item, player) { const status = player.countMark("mbxuetu_status"); - if (status > 1) - return Math.max(get.order({ name: "guohe" }), get.order({ name: "chuqibuyi" })); + if (status > 1) return Math.max(get.order({ name: "guohe" }), get.order({ name: "chuqibuyi" })); if (status === 1 || player.storage.mbxuetu) return 9; return 2; }, @@ -1616,15 +1312,10 @@ game.import("character", function () { target(player, target) { const status = player.countMark("mbxuetu_status"); if (status > 1) { - if (player.storage.mbxuetu) - return -get.damageEffect(target, player, player) / 10; + if (player.storage.mbxuetu) return -get.damageEffect(target, player, player) / 10; return -2; } - if ( - (status === 0 && player.storage.mbxuetu) || - (status === 1 && !ui.selected.cards.length) - ) - return 2; + if ((status === 0 && player.storage.mbxuetu) || (status === 1 && !ui.selected.cards.length)) return 2; const eff = get.recoverEffect(target, player, player); return eff > 0 ? 2 : eff < 0 ? -get.sgnAttitude(player, target) : 0; }, @@ -1639,7 +1330,7 @@ game.import("character", function () { if (eff >= 0) return Math.min(1, eff / 2); const hp = player.getHp() + - player.countCards("hes", (card) => { + player.countCards("hes", card => { return player.canSaveCard(card, player); }); return -1.5 * Math.max(0, 3 - hp); @@ -1662,7 +1353,7 @@ game.import("character", function () { player: "phaseUseBegin", }, filter(event, player) { - return game.hasPlayer((current) => { + return game.hasPlayer(current => { return !player.getStorage("mbweiming").includes(current); }); }, @@ -1670,23 +1361,13 @@ game.import("character", function () { direct: true, async content(event, trigger, player) { const targets = await player - .chooseTarget( - "威命:记录一名未记录过的角色", - "当你杀死没有被记录过的角色后,则〖威命〗使命成功;如果在你杀死这些角色中的一名之前,有被记录过的角色死亡,则你〖威命〗使命失败。", - true - ) + .chooseTarget("威命:记录一名未记录过的角色", "当你杀死没有被记录过的角色后,则〖威命〗使命成功;如果在你杀死这些角色中的一名之前,有被记录过的角色死亡,则你〖威命〗使命失败。", true) .set("filterTarget", (card, player, target) => { return !player.getStorage("mbweiming").includes(target); }) - .set("ai", (target) => { + .set("ai", target => { if (target === player) return 1; - return ( - 1 + - (Math.sqrt(Math.abs(get.attitude(player, target))) * - Math.abs(get.threaten(target))) / - Math.sqrt(target.getHp() + 1) / - Math.sqrt(target.countCards("hes") + 1) - ); + return 1 + (Math.sqrt(Math.abs(get.attitude(player, target))) * Math.abs(get.threaten(target))) / Math.sqrt(target.getHp() + 1) / Math.sqrt(target.countCards("hes") + 1); }) .forResultTargets(); if (targets && targets.length > 0) { @@ -1730,7 +1411,7 @@ game.import("character", function () { game.log(player, "使命失败"); player.awakenSkill("mbweiming"); player.storage.mbxuetu_status = 2; - game.broadcastAll((player) => { + game.broadcastAll(player => { player.tempname.add("re_yangfeng"); }, player); await game.asyncDelayx(); @@ -1738,7 +1419,7 @@ game.import("character", function () { }, }, ai: { - combo: "mbxuetu" + combo: "mbxuetu", }, }, //霍骏 @@ -1756,11 +1437,7 @@ game.import("character", function () { for (var i of cards) { if (!game.checkMod(i, player, "unchanged", "cardEnabled2", player)) return false; } - return event.filterCard( - get.autoViewAs({ name: "sha", storage: { sidai: true } }, cards), - player, - event - ); + return event.filterCard(get.autoViewAs({ name: "sha", storage: { sidai: true } }, cards), player, event); }, viewAs: { name: "sha", storage: { sidai: true } }, filterCard: { type: "basic" }, @@ -1791,13 +1468,7 @@ game.import("character", function () { tao: { trigger: { source: "damageSource" }, filter: function (event, player) { - if ( - !event.card || - !event.card.storage || - !event.card.storage.sidai || - !event.player.isIn() - ) - return false; + if (!event.card || !event.card.storage || !event.card.storage.sidai || !event.player.isIn()) return false; for (var i of event.cards) { if (i.name == "tao") return true; } @@ -1812,13 +1483,7 @@ game.import("character", function () { shan: { trigger: { player: "useCardToPlayered" }, filter: function (event, player) { - if ( - !event.card || - !event.card.storage || - !event.card.storage.sidai || - !event.target.isIn() - ) - return false; + if (!event.card || !event.card.storage || !event.card.storage.sidai || !event.target.isIn()) return false; for (var i of event.cards) { if (i.name == "shan") return true; } @@ -1828,22 +1493,16 @@ game.import("character", function () { popup: false, content: function () { "step 0"; - trigger.target - .chooseToDiscard( - "h", - { type: "basic" }, - "弃置一张基本牌,否则不能响应" + get.translation(trigger.card) + trigger.target.chooseToDiscard("h", { type: "basic" }, "弃置一张基本牌,否则不能响应" + get.translation(trigger.card)).set("ai", function (card) { + var player = _status.event.player; + if ( + player.hasCard("hs", function (cardx) { + return cardx != card && get.name(cardx, player) == "shan"; + }) ) - .set("ai", function (card) { - var player = _status.event.player; - if ( - player.hasCard("hs", function (cardx) { - return cardx != card && get.name(cardx, player) == "shan"; - }) - ) - return 12 - get.value(card); - return 0; - }); + return 12 - get.value(card); + return 0; + }); "step 1"; if (!result.bool) trigger.directHit.add(trigger.target); }, @@ -1861,13 +1520,7 @@ game.import("character", function () { }, prompt2: function (event, player) { const num = lib.skill.jieyu.getNum(player); - return ( - "获得弃牌堆中" + - get.cnNumber(num) + - "张" + - (num > 1 ? "牌名各不相同的" : "") + - "基本牌" - ); + return "获得弃牌堆中" + get.cnNumber(num) + "张" + (num > 1 ? "牌名各不相同的" : "") + "基本牌"; }, async content(event, trigger, player) { const num = lib.skill.jieyu.getNum(player, event); @@ -1890,13 +1543,7 @@ game.import("character", function () { if (evt.name == "jieyu" && evt.player == player) { if (!event || evt != event) break; } - if ( - evt.name == "useCard" && - evt.player != player && - evt.targets && - evt.targets.includes(player) && - get.tag(evt.card, "damage") - ) { + if (evt.name == "useCard" && evt.player != player && evt.targets && evt.targets.includes(player) && get.tag(evt.card, "damage")) { num--; if (num == 1) break; } @@ -1912,10 +1559,9 @@ game.import("character", function () { source: "damageSource", }, filter: function (event, player, name) { - if (name == "damageSource" && player.getHistory("sourceDamage").indexOf(event) != 0) - return false; - return game.hasPlayer((target) => { - const num = (get.mode() == 'doudizhu' ? 1 : 2); + if (name == "damageSource" && player.getHistory("sourceDamage").indexOf(event) != 0) return false; + return game.hasPlayer(target => { + const num = get.mode() == "doudizhu" ? 1 : 2; if (name == "damageEnd" && get.distance(player, target) <= num) return false; if (name == "damageSource" && get.distance(player, target) > num) return false; const zhoufa = player.storage.zhoulin_zhoufa; @@ -1928,37 +1574,23 @@ game.import("character", function () { direct: true, async content(event, trigger, player) { const zhoufa = player.storage.zhoulin_zhoufa; - const str = zhoufa - ? [ - "令其受到1点无来源伤害", - "你随机获得其一张牌", - "你随机弃置其装备区的一张牌", - "令其摸一张牌", - ][["豹", "鹰", "熊", "兔"].indexOf(zhoufa)] - : "令其随机执行一个效果"; - const nodoudizhu = - get.mode() == "doudizhu" - ? "距离" + (event.triggername == "damageEnd" ? "" : "不") + "大于1的" - : "距离" + (event.triggername == "damageEnd" ? "" : "不") + "大于2的"; + const str = zhoufa ? ["令其受到1点无来源伤害", "你随机获得其一张牌", "你随机弃置其装备区的一张牌", "令其摸一张牌"][["豹", "鹰", "熊", "兔"].indexOf(zhoufa)] : "令其随机执行一个效果"; + const nodoudizhu = get.mode() == "doudizhu" ? "距离" + (event.triggername == "damageEnd" ? "" : "不") + "大于1的" : "距离" + (event.triggername == "damageEnd" ? "" : "不") + "大于2的"; const { result: { bool, targets }, } = await player - .chooseTarget( - get.prompt("shoufa"), - "选择一名" + nodoudizhu + "角色," + str, - (card, player, target) => { - const name = _status.event.triggername; - const num = (get.mode() == 'doudizhu' ? 1 : 2); - if (name == "damageEnd" && get.distance(player, target) <= num) return false; - if (name == "damageSource" && get.distance(player, target) > num) return false; - const zhoufa = player.storage.zhoulin_zhoufa; - if (!zhoufa) return true; - if (zhoufa == "豹" || zhoufa == "兔") return true; - if (zhoufa == "鹰") return target.countCards("he"); - return target.countDiscardableCards(player, "e"); - } - ) - .set("ai", (target) => { + .chooseTarget(get.prompt("shoufa"), "选择一名" + nodoudizhu + "角色," + str, (card, player, target) => { + const name = _status.event.triggername; + const num = get.mode() == "doudizhu" ? 1 : 2; + if (name == "damageEnd" && get.distance(player, target) <= num) return false; + if (name == "damageSource" && get.distance(player, target) > num) return false; + const zhoufa = player.storage.zhoulin_zhoufa; + if (!zhoufa) return true; + if (zhoufa == "豹" || zhoufa == "兔") return true; + if (zhoufa == "鹰") return target.countCards("he"); + return target.countDiscardableCards(player, "e"); + }) + .set("ai", target => { const player = _status.event.player; const zhoufa = player.storage.zhoulin_zhoufa; if (!zhoufa) return -get.attitude(player, target); @@ -1970,7 +1602,7 @@ game.import("character", function () { case "熊": let att = get.attitude(player, target), eff = 0; - target.getCards("e", (card) => { + target.getCards("e", card => { var val = get.value(card, target); eff = Math.max(eff, -val * att); }); @@ -1990,15 +1622,10 @@ game.import("character", function () { target.damage("nosource"); break; case "鹰": - player.gain( - target.getGainableCards(player, "he").randomGet(), - target, - "giveAuto" - ); + player.gain(target.getGainableCards(player, "he").randomGet(), target, "giveAuto"); break; case "熊": - target.discard(target.getGainableCards(player, "e").randomGet()).discarder = - player; + target.discard(target.getGainableCards(player, "e").randomGet()).discarder = player; break; case "兔": target.draw(); @@ -2049,8 +1676,7 @@ game.import("character", function () { player.markSkill("zhoulin_zhoufa"); game.broadcastAll( function (player, zhoufa) { - if (player.marks.zhoulin_zhoufa) - player.marks.zhoulin_zhoufa.firstChild.innerHTML = zhoufa; + if (player.marks.zhoulin_zhoufa) player.marks.zhoulin_zhoufa.firstChild.innerHTML = zhoufa; }, player, control @@ -2088,13 +1714,8 @@ game.import("character", function () { if (trigger.name != "phaseZhunbei") { player.logSkill("guimou"); var result, - choiceList = [ - "惩罚期间使用牌最少的角色", - "惩罚期间弃置牌最少的角色", - "惩罚期间得到牌最少的角色", - ]; - if (trigger.name != "phase" || game.phaseNumber == 0) - result = { index: get.rand(0, 2) }; + choiceList = ["惩罚期间使用牌最少的角色", "惩罚期间弃置牌最少的角色", "惩罚期间得到牌最少的角色"]; + if (trigger.name != "phase" || game.phaseNumber == 0) result = { index: get.rand(0, 2) }; else result = yield player .chooseControl() @@ -2111,20 +1732,13 @@ game.import("character", function () { if (player.hasSkill(skill)) { var storage = player.storage[skill], nums = storage[0].slice(); - var targetx = nums.sort( - (a, b) => - storage[1][storage[0].indexOf(a)] - storage[1][storage[0].indexOf(b)] - ); - targetx = targetx.filter( - (target) => - storage[1][storage[0].indexOf(target)] == - storage[1][storage[0].indexOf(targetx[0])] - ); + var targetx = nums.sort((a, b) => storage[1][storage[0].indexOf(a)] - storage[1][storage[0].indexOf(b)]); + targetx = targetx.filter(target => storage[1][storage[0].indexOf(target)] == storage[1][storage[0].indexOf(targetx[0])]); targets.addArray(targetx); player.removeSkill(skill); } } - targets = targets.filter((target) => target != player && target.countCards("h")); + targets = targets.filter(target => target != player && target.countCards("h")); if (targets.length) { var result = yield player .chooseTarget( @@ -2135,11 +1749,8 @@ game.import("character", function () { }, true ) - .set("ai", (target) => { - return ( - Math.sqrt(Math.min(3, target.countCards("h"))) * - get.effect(target, { name: "guohe_copy2" }, player, player) - ); + .set("ai", target => { + return Math.sqrt(Math.min(3, target.countCards("h"))) * get.effect(target, { name: "guohe_copy2" }, player, player); }) .set("targets", targets); if (result.bool) { @@ -2148,28 +1759,21 @@ game.import("character", function () { player.addExpose(0.3); var result2 = yield player .choosePlayerCard(target, "h", "visible", true) - .set("ai", (button) => { + .set("ai", button => { return get.value(button.link); }) .set("prompt", "诡谋:请选择" + get.translation(target) + "的一张手牌") - .set( - "prompt2", - '
将选择的牌交给另一名其他角色或弃置此牌
' - ); + .set("prompt2", '
将选择的牌交给另一名其他角色或弃置此牌
'); if (result2.bool) { var cards = result2.links.slice(), result3; - if (!game.hasPlayer((targetx) => targetx != player && targetx != target)) - result3 = { bool: false }; + if (!game.hasPlayer(targetx => targetx != player && targetx != target)) result3 = { bool: false }; else result3 = yield player - .chooseTarget( - "是否令另一名其他角色获得" + get.translation(cards) + "?", - (card, player, target) => { - return target != player && target != _status.event.target; - } - ) - .set("ai", (target) => get.attitude(_status.event.player, target)) + .chooseTarget("是否令另一名其他角色获得" + get.translation(cards) + "?", (card, player, target) => { + return target != player && target != _status.event.target; + }) + .set("ai", target => get.attitude(_status.event.player, target)) .set("target", target); if (result3.bool) { var targetx = result3.targets[0]; @@ -2188,7 +1792,7 @@ game.import("character", function () { if (!player.storage[skill]) { player.storage[skill] = [[], []]; var targets = game.filterPlayer().sortBySeat(player); - targets.forEach((target) => { + targets.forEach(target => { player.storage[skill][0].push(target); player.storage[skill][1].push(0); }); @@ -2196,15 +1800,14 @@ game.import("character", function () { }, mark: true, intro: { - markcount: (storage) => 0, + markcount: storage => 0, content: function (storage, player) { var str = "当前使用牌数排行榜"; var lose = storage[1].slice().sort((a, b) => a - b)[0]; - storage[0].forEach((target) => { + storage[0].forEach(target => { str += "
  • "; var score = storage[1][storage[0].indexOf(target)]; - if (score == lose) - str += ""; + if (score == lose) str += ""; str += " " + get.translation(target) + " "; str += score + "张"; if (score == lose) str += ""; @@ -2231,7 +1834,7 @@ game.import("character", function () { if (!player.storage[skill]) { player.storage[skill] = [[], []]; var targets = game.filterPlayer().sortBySeat(player); - targets.forEach((target) => { + targets.forEach(target => { player.storage[skill][0].push(target); player.storage[skill][1].push(0); }); @@ -2239,15 +1842,14 @@ game.import("character", function () { }, mark: true, intro: { - markcount: (storage) => 0, + markcount: storage => 0, content: function (storage, player) { var str = "当前弃置牌数排行榜"; var lose = storage[1].slice().sort((a, b) => a - b)[0]; - storage[0].forEach((target) => { + storage[0].forEach(target => { str += "
  • "; var score = storage[1][storage[0].indexOf(target)]; - if (score == lose) - str += ""; + if (score == lose) str += ""; str += " " + get.translation(target) + " "; str += score + "张"; if (score == lose) str += ""; @@ -2257,17 +1859,14 @@ game.import("character", function () { }, trigger: { global: ["loseAfter", "loseAsyncAfter"] }, filter: function (event, player) { - return ( - event.type == "discard" && - game.hasPlayer((target) => event.getl(target).cards2.length) - ); + return event.type == "discard" && game.hasPlayer(target => event.getl(target).cards2.length); }, forced: true, popup: false, content: function () { var storage = player.storage["guimou_1"]; - var targets = game.filterPlayer((target) => trigger.getl(target).cards2.length); - targets.forEach((target) => { + var targets = game.filterPlayer(target => trigger.getl(target).cards2.length); + targets.forEach(target => { if (!storage[0].includes(target)) { storage[0].push(target); storage[1].push(0); @@ -2283,7 +1882,7 @@ game.import("character", function () { if (!player.storage[skill]) { player.storage[skill] = [[], []]; var targets = game.filterPlayer().sortBySeat(player); - targets.forEach((target) => { + targets.forEach(target => { player.storage[skill][0].push(target); player.storage[skill][1].push(0); }); @@ -2291,15 +1890,14 @@ game.import("character", function () { }, mark: true, intro: { - markcount: (storage) => 0, + markcount: storage => 0, content: function (storage, player) { var str = "当前得到牌数排行榜"; var lose = storage[1].slice().sort((a, b) => a - b)[0]; - storage[0].forEach((target) => { + storage[0].forEach(target => { str += "
  • "; var score = storage[1][storage[0].indexOf(target)]; - if (score == lose) - str += ""; + if (score == lose) str += ""; str += " " + get.translation(target) + " "; str += score + "张"; if (score == lose) str += ""; @@ -2312,8 +1910,8 @@ game.import("character", function () { popup: false, content: function () { var storage = player.storage["guimou_2"]; - var targets = game.filterPlayer((target) => trigger.getg(target).length); - targets.forEach((target) => { + var targets = game.filterPlayer(target => trigger.getg(target).length); + targets.forEach(target => { if (!storage[0].includes(target)) { storage[0].push(target); storage[1].push(0); @@ -2340,17 +1938,11 @@ game.import("character", function () { yield game.cardsDiscard(cards); player.showCards(cards, get.translation(player) + "发动了【州贤】"); var result = yield target - .chooseToDiscard( - "he", - "州贤:弃置一张其中有的类别的牌,或令此牌对" + get.translation(player) + "无效", - (card, player) => { - return _status.event.cards.some( - (cardx) => get.type2(cardx) == get.type2(card) - ); - } - ) + .chooseToDiscard("he", "州贤:弃置一张其中有的类别的牌,或令此牌对" + get.translation(player) + "无效", (card, player) => { + return _status.event.cards.some(cardx => get.type2(cardx) == get.type2(card)); + }) .set("cards", cards) - .set("ai", (card) => { + .set("ai", card => { if (!_status.event.goon) return 0; return 7.5 - get.value(card); }) @@ -2360,11 +1952,7 @@ game.import("character", function () { ai: { effect: { target_use: function (card, player, target, current) { - if ( - get.tag(card, "damage") && - get.attitude(player, target) < 0 && - target != player - ) { + if (get.tag(card, "damage") && get.attitude(player, target) < 0 && target != player) { if (_status.event.name == "zhouxian") return; if (get.attitude(player, target) > 0 && current < 0) return "zerotarget"; var bs = player.getDiscardableCards(player, "he"); @@ -2372,10 +1960,10 @@ game.import("character", function () { if (card.cards) bs.removeArray(card.cards); else bs.removeArray(ui.selected.cards); var cardx = Array.from(ui.cardPile.childNodes).slice(0, 3); - bs = bs.filter((i) => cardx.some((j) => get.type2(j) == get.type2(i))); + bs = bs.filter(i => cardx.some(j => get.type2(j) == get.type2(i))); if (!bs.length) return "zerotarget"; if (bs.length <= 2) { - if (bs.some((bsi) => get.value(bsi) < 7)) return [1, 0, 1, -0.5]; + if (bs.some(bsi => get.value(bsi) < 7)) return [1, 0, 1, -0.5]; return [1, 0, 0.3, 0]; } return [1, 0, 1, -0.5]; @@ -2394,15 +1982,10 @@ game.import("character", function () { direct: true, content: function () { "step 0"; - player - .chooseTarget(get.prompt2("mbyilie"), lib.filter.notMe) - .set("ai", function (target) { - var player = _status.event.player; - return Math.max( - 1 + get.attitude(player, target) * get.threaten(target), - Math.random() - ); - }); + player.chooseTarget(get.prompt2("mbyilie"), lib.filter.notMe).set("ai", function (target) { + var player = _status.event.player; + return Math.max(1 + get.attitude(player, target) * get.threaten(target), Math.random()); + }); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -2424,8 +2007,7 @@ game.import("character", function () { trigger: { global: ["damageBegin4", "damageSource"] }, filter: function (event, player, name) { var target = player.storage.mbyilie2; - if (name == "damageSource") - return event.source == target && event.player != target && player.isDamaged(); + if (name == "damageSource") return event.source == target && event.player != target && player.isDamaged(); return event.player == target && player.countMark("mbyilie") < 2; }, forced: true, @@ -2444,7 +2026,7 @@ game.import("character", function () { audio: "mbyilie", trigger: { player: "phaseEnd" }, filter: function (event, player) { - return player.hasMark('mbyilie'); + return player.hasMark("mbyilie"); }, forced: true, content: function () { @@ -2463,18 +2045,13 @@ game.import("character", function () { audio: 2, trigger: { player: "phaseUseBefore" }, check: function (event, player) { - var cards = player.getCards("h", (card) => player.hasValueTarget(card)); + var cards = player.getCards("h", card => player.hasValueTarget(card)); if (!cards.length) return true; if (!(player.hp >= 2 && player.countCards("h") <= player.hp + 1)) return false; return game.hasPlayer(function (target) { if (target.hasJudge("lebu") || target == player) return false; if (get.attitude(player, target) > 4) { - return ( - get.threaten(target) / - Math.sqrt(target.hp + 1) / - Math.sqrt(target.countCards("h") + 1) > - 0 - ); + return get.threaten(target) / Math.sqrt(target.hp + 1) / Math.sqrt(target.countCards("h") + 1) > 0; } return false; }); @@ -2484,9 +2061,7 @@ game.import("character", function () { map.trigger.cancel(); var num = player.countDiscardableCards(player, "he"); if (num) { - var result = yield player - .chooseToDiscard("纳学:是否弃置任意张牌并摸等量的牌?", "he", [1, num]) - .set("ai", lib.skill.zhiheng.check); + var result = yield player.chooseToDiscard("纳学:是否弃置任意张牌并摸等量的牌?", "he", [1, num]).set("ai", lib.skill.zhiheng.check); if (result.bool) yield player.draw(result.cards.length); } if (player.countCards("h")) { @@ -2505,16 +2080,12 @@ game.import("character", function () { position: "h", ai1: function (card) { if (card.name == "du") return 10; - else if (ui.selected.cards.length && ui.selected.cards[0].name == "du") - return 0; + else if (ui.selected.cards.length && ui.selected.cards[0].name == "du") return 0; var player = _status.event.player; if ( ui.selected.cards.length > 4 || !game.hasPlayer(function (current) { - return ( - get.attitude(player, current) > 0 && - !current.hasSkillTag("nogain") - ); + return get.attitude(player, current) > 0 && !current.hasSkillTag("nogain"); }) ) return 0; @@ -2549,18 +2120,18 @@ game.import("character", function () { audio: 2, trigger: { player: "die" }, filter: function (event, player) { - return game.hasPlayer((target) => target != player); + return game.hasPlayer(target => target != player); }, forced: true, forceDie: true, skillAnimation: true, animationColor: "orange", logTarget: function (event, player) { - return game.filterPlayer((target) => target != player); + return game.filterPlayer(target => target != player); }, content: function () { "step 0"; - var targets = game.filterPlayer((target) => target != player); + var targets = game.filterPlayer(target => target != player); var sum = targets.reduce((num, target) => (num += target.hp), 0); sum = Math.max(1, Math.floor(sum / targets.length)); event.num = sum; @@ -2590,7 +2161,7 @@ game.import("character", function () { audio: "twkujian", trigger: { global: ["useCardAfter", "respondAfter"] }, filter: function (event, player) { - return event.player.hasHistory("lose", (evt) => { + return event.player.hasHistory("lose", evt => { if (event != evt.getParent()) return false; for (var i in evt.gaintag_map) { if (evt.gaintag_map[i].includes("twkujianx")) return true; @@ -2613,20 +2184,16 @@ game.import("character", function () { audio: "mumu", inherit: "new_mumu", filter: function (event, player) { - return game.hasPlayer((current) => { + return game.hasPlayer(current => { return current.countCards("e") > 0; }); }, content: function () { "step 0"; player - .chooseTarget( - get.prompt("mbmumu"), - "弃置场上的一张装备牌,或者获得场上的一张防具牌。", - function (card, player, target) { - return target.countCards("e") > 0; - } - ) + .chooseTarget(get.prompt("mbmumu"), "弃置场上的一张装备牌,或者获得场上的一张防具牌。", function (card, player, target) { + return target.countCards("e") > 0; + }) .set("ai", function (target) { var player = _status.event.player; var att = get.attitude(player, target); @@ -2689,12 +2256,7 @@ game.import("character", function () { target.addTempSkill("new_meibu_range", "phaseUseAfter"); target.markAuto("new_meibu_range", player); } - target.markSkillCharacter( - "mbmeibu", - player, - "魅步", - "锁定技。出牌阶段,若你于此阶段使用过的牌数不小于X,你不能使用牌(X为你的体力值);当你使用锦囊牌时,你结束此阶段。" - ); + target.markSkillCharacter("mbmeibu", player, "魅步", "锁定技。出牌阶段,若你于此阶段使用过的牌数不小于X,你不能使用牌(X为你的体力值);当你使用锦囊牌时,你结束此阶段。"); } }, }, @@ -2748,7 +2310,7 @@ game.import("character", function () { presha: true, pretao: true, neg: true, - nokeep: true + nokeep: true, }, }, //庞统 @@ -2768,11 +2330,8 @@ game.import("character", function () { if (info.allowMultiple == false) return false; if (event.targets && !info.multitarget) { if ( - game.hasPlayer((current) => { - return ( - !event.targets.includes(current) && - lib.filter.targetEnabled2(event.card, player, current) - ); + game.hasPlayer(current => { + return !event.targets.includes(current) && lib.filter.targetEnabled2(event.card, player, current); }) ) return true; @@ -2785,16 +2344,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("xinlianhuan"), - "为" + get.translation(trigger.card) + "额外指定一个目标", - (card, player, target) => { - return ( - !_status.event.sourcex.includes(target) && - lib.filter.targetEnabled2(_status.event.card, player, target) - ); - } - ) + .chooseTarget(get.prompt("xinlianhuan"), "为" + get.translation(trigger.card) + "额外指定一个目标", (card, player, target) => { + return !_status.event.sourcex.includes(target) && lib.filter.targetEnabled2(_status.event.card, player, target); + }) .set("sourcex", trigger.targets) .set("ai", function (target) { var player = _status.event.player; @@ -2858,10 +2410,7 @@ game.import("character", function () { event.goto(1); } else { target.line(event.togive); - event.togive.damage( - Math.min(2, event.togive.countCards("h", { name: "sha" })), - target - ); + event.togive.damage(Math.min(2, event.togive.countCards("h", { name: "sha" })), target); } }, intro: { @@ -2876,10 +2425,7 @@ game.import("character", function () { "step 0"; if (trigger.player != player) player.addExpose(0.3); var target = get.translation(trigger.player); - var choiceList = [ - "令" + target + "获得牌堆里的一张【杀】", - "令" + target + "将一张牌交给另一名角色,然后" + target + "摸一张牌", - ]; + var choiceList = ["令" + target + "获得牌堆里的一张【杀】", "令" + target + "将一张牌交给另一名角色,然后" + target + "摸一张牌"]; var list = ["选项一"]; if (trigger.player.countCards("h")) list.push("选项二"); else choiceList[1] = '' + choiceList[1] + ""; @@ -2948,10 +2494,7 @@ game.import("character", function () { if ( !player.getStorage("twjichou").length || !player.getStorage("twjichou").filter(function (name) { - return ( - !player.getStorage("jilun").includes(name) && - player.hasUseTarget({ name: name }) - ); + return !player.getStorage("jilun").includes(name) && player.hasUseTarget({ name: name }); }).length ) choiceList[1] = '' + choiceList[1] + ""; @@ -2961,8 +2504,7 @@ game.import("character", function () { .set("choiceList", choiceList) .set("prompt", get.prompt("jilun")) .set("ai", () => { - if (_status.event.choiceList.length == 1 || !player.getStorage("twjichou").length) - return 0; + if (_status.event.choiceList.length == 1 || !player.getStorage("twjichou").length) return 0; var val = player.getUseValue({ name: "wuzhong" }); for (var name of player.getStorage("twjichou")) { if (player.getStorage("jilun").includes(name)) continue; @@ -2994,14 +2536,10 @@ game.import("character", function () { if ( !player.getStorage("twjichou").length || !player.getStorage("twjichou").filter(function (name) { - return ( - !player.getStorage("jilun").includes(name) && - player.hasUseTarget({ name: name }) - ); + return !player.getStorage("jilun").includes(name) && player.hasUseTarget({ name: name }); }).length ) { - if (player.hasMark("jilun_mark")) - player.removeMark("jilun_mark", player.countMark("jilun_mark")); + if (player.hasMark("jilun_mark")) player.removeMark("jilun_mark", player.countMark("jilun_mark")); event.finish(); return; } @@ -3012,17 +2550,12 @@ game.import("character", function () { } } player - .chooseButton([ - '###机论:请选择你要执行的选项###
  • 失去1枚“机论”标记,视为使用一张〖急筹〗已记录但〖机论〗未记录的普通锦囊牌
  • 失去所有“机论”标记', - [list, "vcard"], - ]) + .chooseButton(['###机论:请选择你要执行的选项###
  • 失去1枚“机论”标记,视为使用一张〖急筹〗已记录但〖机论〗未记录的普通锦囊牌
  • 失去所有“机论”标记', [list, "vcard"]]) .set("filterButton", function (button) { return _status.event.player.hasUseTarget({ name: button.link[2] }); }) .set("ai", function (button) { - return _status.event - .getParent() - .player.getUseValue({ name: button.link[2] }, null, true); + return _status.event.getParent().player.getUseValue({ name: button.link[2] }, null, true); }); "step 1"; if (result.bool) { @@ -3052,21 +2585,15 @@ game.import("character", function () { usable: 2, chooseButton: { dialog: function (event, player) { - return ui.create.dialog( - "###教化###选择一种牌的类型,令一名角色从牌堆获得此类型的一张牌" - ); + return ui.create.dialog("###教化###选择一种牌的类型,令一名角色从牌堆获得此类型的一张牌"); }, chooseControl: function (event, player) { - var list = ["basic", "trick", "equip"].filter( - (type) => !player.getStorage("jiaohua").includes(type) - ); + var list = ["basic", "trick", "equip"].filter(type => !player.getStorage("jiaohua").includes(type)); list.push("cancel2"); return list; }, check: function (event, player) { - var list = ["trick", "equip", "basic"].filter( - (type) => !player.getStorage("jiaohua").includes(type) - ); + var list = ["trick", "equip", "basic"].filter(type => !player.getStorage("jiaohua").includes(type)); return list[0]; }, backup: function (result, player) { @@ -3079,18 +2606,13 @@ game.import("character", function () { content: function () { "step 0"; var type = lib.skill.jiaohua_backup.type; - var card = get.cardPile2((card) => get.type2(card) == type); + var card = get.cardPile2(card => get.type2(card) == type); if (card) target.gain(card, "gain2"); - else - game.log("但牌堆里已经没有", "#y" + get.translation(type) + "牌", "了!"); + else game.log("但牌堆里已经没有", "#y" + get.translation(type) + "牌", "了!"); "step 1"; player.markAuto("jiaohua", [lib.skill.jiaohua_backup.type]); "step 2"; - if ( - !["basic", "trick", "equip"].some( - (type) => !player.getStorage("jiaohua").includes(type) - ) - ) { + if (!["basic", "trick", "equip"].some(type => !player.getStorage("jiaohua").includes(type))) { player.popup("教化"); player.unmarkAuto("jiaohua", player.getStorage("jiaohua")); game.log(player, "清空了", "#g【教化】", "记录"); @@ -3137,7 +2659,7 @@ game.import("character", function () { usable: 1, content: function () { "step 0"; - var targets = game.filterPlayer((current) => current.countCards("h")).sortBySeat(); + var targets = game.filterPlayer(current => current.countCards("h")).sortBySeat(); event.targets = targets; var next = player .chooseCardOL(targets, "乱群:请选择要展示的牌", true) @@ -3167,8 +2689,7 @@ game.import("character", function () { return get.translation(name); }; for (var i = 0; i < targets.length; i++) { - dialog.buttons[i].querySelector(".info").innerHTML = - getName(targets[i]) + get.translation(cards[i].suit); + dialog.buttons[i].querySelector(".info").innerHTML = getName(targets[i]) + get.translation(cards[i].suit); } }, targets, @@ -3180,11 +2701,7 @@ game.import("character", function () { "step 2"; game.broadcastAll("closeDialog", event.videoId); var card = cards[targets.indexOf(player)]; - var cardx = cards.filter( - (cardy) => - cardy != card && - get.color(cardy, targets[cards.indexOf(cardy)]) == get.color(card, player) - ); + var cardx = cards.filter(cardy => cardy != card && get.color(cardy, targets[cards.indexOf(cardy)]) == get.color(card, player)); if (cardx.length) { player .chooseButton(["乱群:是否获得其中的一张牌", cardx]) @@ -3205,13 +2722,10 @@ game.import("character", function () { } "step 4"; var card = cards[targets.indexOf(player)]; - targets = targets.filter( - (target) => - get.color(cards[targets.indexOf(target)], target) != get.color(card, player) - ); + targets = targets.filter(target => get.color(cards[targets.indexOf(target)], target) != get.color(card, player)); if (targets.length) { player.line(targets); - targets.forEach((target) => { + targets.forEach(target => { target.addTempSkill("luanqun_effect", { player: "phaseUseAfter" }); target.markAuto("luanqun_effect", [player]); }); @@ -3234,11 +2748,7 @@ game.import("character", function () { mod: { playerEnabled: function (card, player, target) { if (!player.isPhaseUsing()) return; - if ( - card.name == "sha" && - !player.getStorage("luanqun_effect").includes(target) - ) - return false; + if (card.name == "sha" && !player.getStorage("luanqun_effect").includes(target)) return false; }, }, trigger: { player: "useCard1" }, @@ -3267,7 +2777,7 @@ game.import("character", function () { if (game.countPlayer() == 2) event._result = { bool: true, - targets: [game.findPlayer((i) => i != player), player], + targets: [game.findPlayer(i => i != player), player], }; else player @@ -3283,17 +2793,10 @@ game.import("character", function () { ) .set("multitarget", true) .set("targetprompt", ["伤害来源", "受伤角色"]) - .set("ai", (target) => { + .set("ai", target => { return target == get.event("aiTargets")[ui.selected.targets.length] ? 10 : 0; }) - .set( - "aiTargets", - lib.skill.mbhuiyao.getUnrealDamageTargets( - player, - [game.filterPlayer((i) => i != player), game.filterPlayer()], - true - ) - ); + .set("aiTargets", lib.skill.mbhuiyao.getUnrealDamageTargets(player, [game.filterPlayer(i => i != player), game.filterPlayer()], true)); "step 2"; if (result.bool) { var targets = result.targets; @@ -3305,7 +2808,7 @@ game.import("character", function () { getUnrealDamageTargets: (player, lists, forced) => { const targets = [null, null]; let sourceList, targetList; - if (lists.length == 2 && lists.every((l) => Array.isArray(l))) { + if (lists.length == 2 && lists.every(l => Array.isArray(l))) { sourceList = lists[0]; targetList = lists[1]; } else { @@ -3313,21 +2816,16 @@ game.import("character", function () { targetList = lists.slice(); } const list = targetList - .map((current) => { + .map(current => { const _hp = current.hp, _maxhp = current.maxHp; current.hp = 100; current.maxHp = 100; const att = -get.sgnAttitude(player, current); let val = get.damageEffect(current, player, current) * att; - current.getSkills(null, false, false).forEach((skill) => { + current.getSkills(null, false, false).forEach(skill => { const info = get.info(skill); - if ( - info && - info.ai && - (info.ai.maixie || info.ai.maixie_hp || info.ai.maixie_defend) - ) - val = Math[val > 0 ? "max" : "min"](val > 0 ? 0.1 : -0.1, val + 2 * att); + if (info && info.ai && (info.ai.maixie || info.ai.maixie_hp || info.ai.maixie_defend)) val = Math[val > 0 ? "max" : "min"](val > 0 ? 0.1 : -0.1, val + 2 * att); }); const eff = 100 / val + 15; current.hp = _hp; @@ -3339,8 +2837,8 @@ game.import("character", function () { const targetx = list[0]; targets[1] = targetx; const list2 = sourceList - .filter((i) => i != targetx) - .map((current) => { + .filter(i => i != targetx) + .map(current => { const _hp = targetx.hp, _maxhp = targetx.maxHp; targetx.hp = 100; @@ -3360,12 +2858,7 @@ game.import("character", function () { order: 6, result: { player: function (player) { - if ( - player.getHp() + - player.countCards("hs", (card) => player.canSaveCard(card, player)) <= - 1 - ) - return 0; + if (player.getHp() + player.countCards("hs", card => player.canSaveCard(card, player)) <= 1) return 0; var limit = 25; var quesong = player.hasSkill("mbquesong") && !player.getStat().damaged; if (quesong) { @@ -3373,7 +2866,7 @@ game.import("character", function () { } if ( quesong && - game.hasPlayer((target) => { + game.hasPlayer(target => { var att = get.attitude(player, target); if (att < 0) return false; return ( @@ -3381,10 +2874,7 @@ game.import("character", function () { Math.sqrt( Math.max( 1, - [1, 2, 3, 4].reduce( - (p, c) => p + target.countEmptySlot(c), - 0 - ) + [1, 2, 3, 4].reduce((p, c) => p + target.countEmptySlot(c), 0) ) ) >= 10 || target.getHp() <= 2 @@ -3394,7 +2884,7 @@ game.import("character", function () { return 1; if ( !quesong && - game.hasPlayer((target) => { + game.hasPlayer(target => { if (target == player) return false; var _hp = target.hp, _maxhp = target.maxHp; @@ -3402,17 +2892,9 @@ game.import("character", function () { target.maxHp = 100; var att = -get.sgnAttitude(player, target); var val = get.damageEffect(target, player, target) * att; - target.getSkills(null, false, false).forEach((skill) => { + target.getSkills(null, false, false).forEach(skill => { var info = get.info(skill); - if ( - info && - info.ai && - (info.ai.maixie || info.ai.maixie_hp || info.ai.maixie_defend) - ) - val = Math[val > 0 ? "max" : "min"]( - val > 0 ? 0.1 : -0.1, - val + 2 * att - ); + if (info && info.ai && (info.ai.maixie || info.ai.maixie_hp || info.ai.maixie_defend)) val = Math[val > 0 ? "max" : "min"](val > 0 ? 0.1 : -0.1, val + 2 * att); }); var eff = 100 / val; target.hp = _hp; @@ -3436,16 +2918,12 @@ game.import("character", function () { direct: true, content: function () { "step 0"; - player.chooseTarget(get.prompt2("mbquesong")).set("ai", (target) => { + player.chooseTarget(get.prompt2("mbquesong")).set("ai", target => { var player = _status.event.player; if (get.attitude(player, target) <= 0) return 0; var len = lib.skill.mbquesong.getNum(target), hp = target.getHp(); - return ( - len + - target.isTurnedOver() * 2 + - (1.5 * Math.min(4, target.getDamagedHp())) / (hp + 1) - ); + return len + target.isTurnedOver() * 2 + (1.5 * Math.min(4, target.getDamagedHp())) / (hp + 1); }); "step 1"; if (result.bool) { @@ -3457,18 +2935,12 @@ game.import("character", function () { else { target .chooseControl() - .set("choiceList", [ - "摸" + get.cnNumber(len) + "张牌并复原武将牌", - "回复1点体力", - ]) + .set("choiceList", ["摸" + get.cnNumber(len) + "张牌并复原武将牌", "回复1点体力"]) .set("prompt", "雀颂:请选择一项") .set("ai", () => { var player = _status.event.player; var len = _status.event.len; - return get.effect(player, { name: "draw" }, player, player) * len >= - get.recoverEffect(player, player, player) - ? 0 - : 1; + return get.effect(player, { name: "draw" }, player, player) * len >= get.recoverEffect(player, player, player) ? 0 : 1; }) .set("len", len); } @@ -3484,7 +2956,7 @@ game.import("character", function () { target.turnOver(false); }, getNum: function (player) { - return player.countCards("e", (card) => get.subtype(card) != "equip5") >= 3 ? 2 : 3; + return player.countCards("e", card => get.subtype(card) != "equip5") >= 3 ? 2 : 3; }, ai: { expose: 0.2, @@ -3522,23 +2994,17 @@ game.import("character", function () { direct: true, content: function () { "step 0"; - player - .chooseTarget( - get.prompt("yichong"), - "选择一名其他角色并选择一个花色,获得其此花色的所有牌并令其获得“雀”标记", - lib.filter.notMe - ) - .set("ai", function (target) { - var player = _status.event.player; - var att = get.attitude(player, target); - if (att > 0) return 0; - var getNum = function (player) { - var list = []; - for (var i of lib.suit) list.push(player.countCards("he", { suit: i }) + 3); - return list.sort((a, b) => b - a)[0]; - }; - return getNum(target) + target.countCards("h") / 10; - }); + player.chooseTarget(get.prompt("yichong"), "选择一名其他角色并选择一个花色,获得其此花色的所有牌并令其获得“雀”标记", lib.filter.notMe).set("ai", function (target) { + var player = _status.event.player; + var att = get.attitude(player, target); + if (att > 0) return 0; + var getNum = function (player) { + var list = []; + for (var i of lib.suit) list.push(player.countCards("he", { suit: i }) + 3); + return list.sort((a, b) => b - a)[0]; + }; + return getNum(target) + target.countCards("h") / 10; + }); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -3568,20 +3034,16 @@ game.import("character", function () { event.suit = suit; player.chat(get.translation(suit + 2)); game.log(player, "选择了", "#y" + get.translation(suit + 2)); - if (target.countCards("e", { suit: suit })) - player.gain(target.getCards("e", { suit: suit }), target, "giveAuto"); + if (target.countCards("e", { suit: suit })) player.gain(target.getCards("e", { suit: suit }), target, "giveAuto"); "step 3"; var suit = event.suit; if (target.countCards("h", { suit: suit })) { - player - .chooseButton(["选择获得其中一张牌", target.getCards("h", { suit: suit })], true) - .set("ai", (button) => get.value(button.link)); + player.chooseButton(["选择获得其中一张牌", target.getCards("h", { suit: suit })], true).set("ai", button => get.value(button.link)); } else event.goto(5); "step 4"; if (result.bool) { var card = result.links[0]; - if (lib.filter.canBeGained(card, player, target)) - player.gain(card, target, "giveAuto", "bySelf"); + if (lib.filter.canBeGained(card, player, target)) player.gain(card, target, "giveAuto", "bySelf"); else game.log("但", card, "不能被", player, "获得!"); } "step 5"; @@ -3592,8 +3054,7 @@ game.import("character", function () { game.broadcastAll(lib.skill.yichong.initSkill, skill); game.broadcastAll( function (player, suit) { - if (player.marks.yichong) - player.marks.yichong.firstChild.innerHTML = get.translation(suit); + if (player.marks.yichong) player.marks.yichong.firstChild.innerHTML = get.translation(suit); }, player, suit @@ -3614,73 +3075,27 @@ game.import("character", function () { filter: function (event, player) { if (!player.storage.yichong) return false; return game.hasPlayer(function (current) { - if ( - !event.getg(current).length || - !current.hasSkill("yichong_" + player.playerid) - ) - return false; - if ( - current.countMark("yichong_" + player.playerid) >= - lib.skill.yichong.getLimit - ) - return false; - return event - .getg(current) - .some( - (card) => - get.suit(card, current) == player.storage.yichong && - lib.filter.canBeGained(card, current, player) - ); + if (!event.getg(current).length || !current.hasSkill("yichong_" + player.playerid)) return false; + if (current.countMark("yichong_" + player.playerid) >= lib.skill.yichong.getLimit) return false; + return event.getg(current).some(card => get.suit(card, current) == player.storage.yichong && lib.filter.canBeGained(card, current, player)); }); }, forced: true, content: function () { "step 0"; var target = game.findPlayer(function (current) { - if ( - !trigger.getg(current).length || - !current.hasSkill("yichong_" + player.playerid) - ) - return false; - if ( - current.countMark("yichong_" + player.playerid) >= - lib.skill.yichong.getLimit - ) - return false; - return trigger - .getg(current) - .some( - (card) => - get.suit(card, current) == player.storage.yichong && - lib.filter.canBeGained(card, current, player) - ); + if (!trigger.getg(current).length || !current.hasSkill("yichong_" + player.playerid)) return false; + if (current.countMark("yichong_" + player.playerid) >= lib.skill.yichong.getLimit) return false; + return trigger.getg(current).some(card => get.suit(card, current) == player.storage.yichong && lib.filter.canBeGained(card, current, player)); }); event.target = target; - var cards = trigger - .getg(target) - .filter( - (card) => - get.suit(card, target) == player.storage.yichong && - lib.filter.canBeGained(card, target, player) - ); - if ( - cards.length <= - lib.skill.yichong.getLimit - target.countMark("yichong_" + player.playerid) - ) - event._result = { bool: true, links: cards }; + var cards = trigger.getg(target).filter(card => get.suit(card, target) == player.storage.yichong && lib.filter.canBeGained(card, target, player)); + if (cards.length <= lib.skill.yichong.getLimit - target.countMark("yichong_" + player.playerid)) event._result = { bool: true, links: cards }; else { - var num = - lib.skill.yichong.getLimit - - target.countMark("yichong_" + player.playerid); - player - .chooseButton( - ["易宠:获得其中的" + get.cnNumber(num) + "张牌", cards], - num, - true - ) - .set("ai", function (button) { - return get.value(button.link); - }); + var num = lib.skill.yichong.getLimit - target.countMark("yichong_" + player.playerid); + player.chooseButton(["易宠:获得其中的" + get.cnNumber(num) + "张牌", cards], num, true).set("ai", function (button) { + return get.value(button.link); + }); } "step 1"; if (result.bool) { @@ -3703,27 +3118,18 @@ game.import("character", function () { audio: 2, trigger: { player: ["useCardToPlayered", "damageEnd"] }, filter: function (event, player) { - var target = game.findPlayer((current) => current.hasSkill("yichong_" + player.playerid)); + var target = game.findPlayer(current => current.hasSkill("yichong_" + player.playerid)); if (!target) return false; if (event.name == "damage") return target.hp > 3; - return ( - event.isFirstTarget && - (event.card.name == "sha" || - (get.type(event.card) == "trick" && get.tag(event.card, "damage"))) - ); + return event.isFirstTarget && (event.card.name == "sha" || (get.type(event.card) == "trick" && get.tag(event.card, "damage"))); }, direct: true, content: function () { "step 0"; - var target = game.findPlayer((current) => current.hasSkill("yichong_" + player.playerid)); + var target = game.findPlayer(current => current.hasSkill("yichong_" + player.playerid)); event.target = target; if (trigger.name == "damage") { - player - .chooseBool( - get.prompt("wufei", target), - "令" + get.translation(target) + "受到1点无来源伤害" - ) - .set("choice", get.damageEffect(target, player, player) > 0); + player.chooseBool(get.prompt("wufei", target), "令" + get.translation(target) + "受到1点无来源伤害").set("choice", get.damageEffect(target, player, player) > 0); } else { player.logSkill("wufei", target); player.addTempSkill("wufei_effect"); @@ -3749,9 +3155,7 @@ game.import("character", function () { popup: false, firstDo: true, content: function () { - var target = game.findPlayer((current) => - current.hasSkill("yichong_" + player.playerid) - ); + var target = game.findPlayer(current => current.hasSkill("yichong_" + player.playerid)); if (!target) delete trigger.source; else trigger.source = target; }, @@ -3773,13 +3177,8 @@ game.import("character", function () { .chooseToDuiben(target) .set("title", "谋弈") .set("namelist", ["反抗", "归顺", "镇压", "安抚"]) - .set("translationList", [ - `对方选择镇压:${get.translation(player)}对你造成1点伤害,然后其摸1张牌
    对方选择安抚:${get.translation(player)}受到1点伤害,然后其摸2张牌`, - `对方选择镇压:${get.translation(player)}获得你1张牌,然后其交给你2张牌
    对方选择安抚:你须交给${get.translation(player)}两张牌(若你牌数不足2张,则改为其令你跳过你下个摸牌阶段)`, - `对方选择反抗:你对${get.translation(target)}造成1点伤害,然后你摸1张牌
    对方选择归顺:你获得${get.translation(target)}1张牌,然后你交给其2张牌`, - `对方选择反抗:你受到1点伤害,然后你摸2张牌
    对方选择归顺:${get.translation(target)}须交给你两张牌(若其牌数不足两张,则改为令其跳过其下个摸牌阶段)`, - ]) - .set("ai", (button) => 1 + Math.random()); + .set("translationList", [`对方选择镇压:${get.translation(player)}对你造成1点伤害,然后其摸1张牌
    对方选择安抚:${get.translation(player)}受到1点伤害,然后其摸2张牌`, `对方选择镇压:${get.translation(player)}获得你1张牌,然后其交给你2张牌
    对方选择安抚:你须交给${get.translation(player)}两张牌(若你牌数不足2张,则改为其令你跳过你下个摸牌阶段)`, `对方选择反抗:你对${get.translation(target)}造成1点伤害,然后你摸1张牌
    对方选择归顺:你获得${get.translation(target)}1张牌,然后你交给其2张牌`, `对方选择反抗:你受到1点伤害,然后你摸2张牌
    对方选择归顺:${get.translation(target)}须交给你两张牌(若其牌数不足两张,则改为令其跳过其下个摸牌阶段)`]) + .set("ai", button => 1 + Math.random()); "step 1"; if (result.bool) { if (result.player == "db_def1") { @@ -3793,13 +3192,7 @@ game.import("character", function () { target.addTempSkill("xinwurong_skip", { player: "phaseDrawSkipped" }); event.finish(); } else if (cards.length == 2) event._result = { bool: true, cards: cards }; - else - target.chooseCard( - "怃戎:交给" + get.translation(player) + "两张牌", - 2, - true, - "he" - ); + else target.chooseCard("怃戎:交给" + get.translation(player) + "两张牌", 2, true, "he"); } } else { if (result.player == "db_def1") { @@ -3851,8 +3244,7 @@ game.import("character", function () { "step 0"; var cards = []; player.getHistory("lose", function (evt) { - if (evt.type == "discard" && evt.getParent("phaseDiscard") == trigger) - cards.addArray(evt.cards2); + if (evt.type == "discard" && evt.getParent("phaseDiscard") == trigger) cards.addArray(evt.cards2); }); event.num = cards.length; event.str1 = "令至多" + event.num + "名角色摸一张牌"; @@ -3899,15 +3291,9 @@ game.import("character", function () { return ui.selected.targets.length + 1; }); } else { - player - .chooseTarget( - "请选择〖溃诛〗的目标", - "令至多" + get.cnNumber(event.num) + "名角色各摸一张牌", - [1, event.num] - ) - .set("ai", function (target) { - return get.attitude(_status.event.player, target); - }); + player.chooseTarget("请选择〖溃诛〗的目标", "令至多" + get.cnNumber(event.num) + "名角色各摸一张牌", [1, event.num]).set("ai", function (target) { + return get.attitude(_status.event.player, target); + }); } "step 3"; if (result.bool) { @@ -3935,13 +3321,7 @@ game.import("character", function () { mod: { playerEnabled: function (card, player, target) { var info = get.info(card); - if ( - target != player && - (!info || !info.singleCard || !ui.selected.targets.length) && - player.isPhaseUsing() && - !target.inRange(player) - ) - return false; + if (target != player && (!info || !info.singleCard || !ui.selected.targets.length) && player.isPhaseUsing() && !target.inRange(player)) return false; }, }, trigger: { player: "phaseUseEnd" }, @@ -3954,11 +3334,7 @@ game.import("character", function () { return current != player && !current.inRange(player); }) && game.hasPlayer(function (target) { - return ( - target != player && - !target.inRange(player) && - target.countDiscardableCards(player, "he") - ); + return target != player && !target.inRange(player) && target.countDiscardableCards(player, "he"); }) ); }, @@ -3966,18 +3342,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - "请选择〖掣政〗的目标", - "弃置一名攻击范围内不包含你的角色的一张牌", - true, - function (card, player, target) { - return ( - target != player && - !target.inRange(player) && - target.countDiscardableCards(player, "he") - ); - } - ) + .chooseTarget("请选择〖掣政〗的目标", "弃置一名攻击范围内不包含你的角色的一张牌", true, function (card, player, target) { + return target != player && !target.inRange(player) && target.countDiscardableCards(player, "he"); + }) .set("ai", function (target) { var player = _status.event.player; return get.effect(target, { name: "guohe_copy2" }, player, player); @@ -4003,12 +3370,7 @@ game.import("character", function () { direct: true, content: function () { "step 0"; - trigger.player - .chooseBool( - get.prompt("xinlijun"), - "将" + get.translation(trigger.cards) + "交给" + get.translation(player) - ) - .set("choice", get.attitude(trigger.player, player) > 0); + trigger.player.chooseBool(get.prompt("xinlijun"), "将" + get.translation(trigger.cards) + "交给" + get.translation(player)).set("choice", get.attitude(trigger.player, player) > 0); "step 1"; if (result.bool) { player.logSkill("xinlijun", trigger.player); @@ -4081,14 +3443,10 @@ game.import("character", function () { scs_gaowang: [], }; if (!get.isLuckyStar(player)) { - var list = lib.skill.mbdanggu.changshi.map((i) => i[0]); + var list = lib.skill.mbdanggu.changshi.map(i => i[0]); for (var i of list) { - var select = list.filter( - (scs) => scs != i && !_status.changshiMap[i].includes(i) - ); - _status.changshiMap[i].addArray( - select.randomGets(get.rand(0, select.length)) - ); + var select = list.filter(scs => scs != i && !_status.changshiMap[i].includes(i)); + _status.changshiMap[i].addArray(select.randomGets(get.rand(0, select.length))); } } } @@ -4097,7 +3455,7 @@ game.import("character", function () { group: "mbdanggu_back", content: function () { "step 0"; - var list = lib.skill.mbdanggu.changshi.map((i) => i[0]); + var list = lib.skill.mbdanggu.changshi.map(i => i[0]); player.markAuto("mbdanggu", list); game.broadcastAll( function (player, list) { @@ -4136,9 +3494,8 @@ game.import("character", function () { scs_guosheng: "scs_duangui", }, map2 = lib.skill.mbdanggu.conflictMap(player); - var conflictList = others.filter((changshi) => { - if (map[first] && others.some((changshi2) => map[first] == changshi2)) - return map[first] == changshi; + var conflictList = others.filter(changshi => { + if (map[first] && others.some(changshi2 => map[first] == changshi2)) return map[first] == changshi; else return map2[first].includes(changshi); }), list = others.slice(); @@ -4148,8 +3505,7 @@ game.import("character", function () { game.broadcastAll( function (changshi, player) { if (lib.config.background_speak) { - if (player.isUnderControl(true)) - game.playAudio("skill", changshi + "_enter"); + if (player.isUnderControl(true)) game.playAudio("skill", changshi + "_enter"); } }, conflict, @@ -4157,20 +3513,12 @@ game.import("character", function () { ); } player - .chooseButton( - [ - "党锢:请选择结党对象", - [[first], "character"], - '
    可选常侍
    ', - [others, "character"], - ], - true - ) - .set("filterButton", (button) => { + .chooseButton(["党锢:请选择结党对象", [[first], "character"], '
    可选常侍
    ', [others, "character"]], true) + .set("filterButton", button => { return _status.event.canChoose.includes(button.link); }) .set("canChoose", list) - .set("ai", (button) => Math.random() * 10); + .set("ai", button => Math.random() * 10); } "step 1"; if (result.bool) { @@ -4198,8 +3546,7 @@ game.import("character", function () { player.node.avatar2.setBackground(chosen, "character"); player.node.name2.innerHTML = get.slimName(chosen); if (player == game.me && ui.fakeme) { - ui.fakeme.style.backgroundImage = - player.node.avatar.style.backgroundImage; + ui.fakeme.style.backgroundImage = player.node.avatar.style.backgroundImage; } }, player, @@ -4222,13 +3569,7 @@ game.import("character", function () { }, isSingleShichangshi: function (player) { var map = lib.skill.mbdanggu.conflictMap(player); - return ( - player.name == "shichangshi" && - ((map[player.name1] && map[player.name2]) || - (map[player.name1] && !player.name2) || - (!player.name1 && !player.name2) || - (player.name == player.name1 && !player.name2)) - ); + return player.name == "shichangshi" && ((map[player.name1] && map[player.name2]) || (map[player.name1] && !player.name2) || (!player.name1 && !player.name2) || (player.name == player.name1 && !player.name2)); }, mod: { aiValue: function (player, card, num) { @@ -4274,8 +3615,7 @@ game.import("character", function () { player.node.avatar2.classList.add("hidden"); player.node.name2.innerHTML = ""; if (player == game.me && ui.fakeme) { - ui.fakeme.style.backgroundImage = - player.node.avatar.style.backgroundImage; + ui.fakeme.style.backgroundImage = player.node.avatar.style.backgroundImage; } }, player); } @@ -4292,11 +3632,7 @@ game.import("character", function () { audio: 2, trigger: { player: "dieBefore" }, filter: function (event, player) { - return ( - player.getStorage("mbdanggu").length && - event.getParent().name != "giveup" && - player.maxHp > 0 - ); + return player.getStorage("mbdanggu").length && event.getParent().name != "giveup" && player.maxHp > 0; }, derivation: "mbmowang_faq", forced: true, @@ -4332,10 +3668,7 @@ game.import("character", function () { } else { game.log(player, "阵亡"); } - if ( - player.isIn() && - (!_status.mbmowang_return || !_status.mbmowang_return[player.playerid]) - ) { + if (player.isIn() && (!_status.mbmowang_return || !_status.mbmowang_return[player.playerid])) { event.reserveOut = true; game.log(player, "进入了修整状态"); game.log(player, "移出了游戏"); @@ -4372,7 +3705,7 @@ game.import("character", function () { } var count = 1; var list = Array.from(player.node.marks.childNodes); - if (list.some((i) => i.name == "mbdanggu")) count++; + if (list.some(i => i.name == "mbdanggu")) count++; while (player.node.marks.childNodes.length > count) { var node = player.node.marks.lastChild; if (node.name == "mbdanggu") { @@ -4423,14 +3756,10 @@ game.import("character", function () { } }, player, - lib.skill.mbdanggu.changshi.map((i) => i[0]) + lib.skill.mbdanggu.changshi.map(i => i[0]) ); } - if ( - source && - lib.config.border_style == "auto" && - (lib.config.autoborder_count == "kill" || lib.config.autoborder_count == "mix") - ) { + if (source && lib.config.border_style == "auto" && (lib.config.autoborder_count == "kill" || lib.config.autoborder_count == "mix")) { switch (source.node.framebg.dataset.auto) { case "gold": case "silver": @@ -4485,8 +3814,7 @@ game.import("character", function () { player.node.avatar2.classList.add("hidden"); player.node.name2.innerHTML = ""; if (player == game.me && ui.fakeme) { - ui.fakeme.style.backgroundImage = - player.node.avatar.style.backgroundImage; + ui.fakeme.style.backgroundImage = player.node.avatar.style.backgroundImage; } }, player); } @@ -4506,11 +3834,7 @@ game.import("character", function () { forceDie: true, forceOut: true, filter: function (event, player) { - return ( - !event._mbmowang_return && - event.player.isOut() && - _status.mbmowang_return[event.player.playerid] - ); + return !event._mbmowang_return && event.player.isOut() && _status.mbmowang_return[event.player.playerid]; }, content: function () { "step 0"; @@ -4559,9 +3883,7 @@ game.import("character", function () { return ui.create.dialog("滔乱", [list, "vcard"]); }, filter: function (button, player) { - return _status.event - .getParent() - .filterCard({ name: button.link[2] }, player, _status.event.getParent()); + return _status.event.getParent().filterCard({ name: button.link[2] }, player, _status.event.getParent()); }, check: function (button) { var player = _status.event.player; @@ -4585,12 +3907,7 @@ game.import("character", function () { }; }, prompt: function (links, player) { - return ( - "将一张牌当做" + - (get.translation(links[0][3]) || "") + - get.translation(links[0][2]) + - "使用" - ); + return "将一张牌当做" + (get.translation(links[0][3]) || "") + get.translation(links[0][2]) + "使用"; }, }, ai: { @@ -4608,17 +3925,11 @@ game.import("character", function () { trigger: { player: "useCardToPlayered" }, direct: true, filter: function (event, player) { - return ( - event.card.name == "sha" && event.target.hp > 0 && event.target.countCards("he") > 0 - ); + return event.card.name == "sha" && event.target.hp > 0 && event.target.countCards("he") > 0; }, content: function () { "step 0"; - var next = player.choosePlayerCard( - trigger.target, - "he", - get.prompt("scschiyan", trigger.target) - ); + var next = player.choosePlayerCard(trigger.target, "he", get.prompt("scschiyan", trigger.target)); next.set("ai", function (button) { if (!_status.event.goon) return 0; var val = get.value(button.link); @@ -4640,8 +3951,7 @@ game.import("character", function () { directHit_ai: true, skillTagFilter: function (player, tag, arg) { if (get.attitude(player, arg.target) > 0) return false; - if (tag == "directHit_ai") - return arg.target.hp >= Math.max(1, arg.target.countCards("h") - 1); + if (tag == "directHit_ai") return arg.target.hp >= Math.max(1, arg.target.countCards("h") - 1); if (arg && arg.name == "sha" && arg.target.getEquip(2)) return true; return false; }, @@ -4681,11 +3991,7 @@ game.import("character", function () { logTarget: "player", filter: function (event, player) { var target = event.player; - return ( - event.getParent().name == "sha" && - player.countCards("h") >= target.countCards("h") && - player.countCards("e") >= target.countCards("e") - ); + return event.getParent().name == "sha" && player.countCards("h") >= target.countCards("h") && player.countCards("e") >= target.countCards("e"); }, content: function () { trigger.num++; @@ -4701,31 +4007,25 @@ game.import("character", function () { filter: function (event, player) { var evt = event.getParent("phaseUse"); if (!evt || evt.player != player) return false; - var num = player.getHistory( - "useCard", - (evtx) => evtx.getParent("phaseUse") == evt - ).length; + var num = player.getHistory("useCard", evtx => evtx.getParent("phaseUse") == evt).length; return num == 2 || num == 4 || num == 6; }, content: function () { var evt = trigger.getParent("phaseUse"); - var num = player.getHistory( - "useCard", - (evtx) => evtx.getParent("phaseUse") == evt - ).length; + var num = player.getHistory("useCard", evtx => evtx.getParent("phaseUse") == evt).length; var cards = []; if (num == 2) { - var card = get.cardPile2((card) => { + var card = get.cardPile2(card => { return ["jiu", "xionghuangjiu"].includes(card.name); }); if (card) cards.push(card); } else if (num == 4) { - var card = get.cardPile2((card) => { + var card = get.cardPile2(card => { return card.name == "sha"; }); if (card) cards.push(card); } else if (num == 6) { - var card = get.cardPile2((card) => { + var card = get.cardPile2(card => { return card.name == "juedou"; }); if (card) cards.push(card); @@ -4756,15 +4056,12 @@ game.import("character", function () { "step 2"; var cards = cards.filterInD(); if (cards.length) - player - .chooseTarget("将" + get.translation(cards) + "交给一名角色", true) - .set("ai", function (target) { - var player = _status.event.player; - var att = - get.attitude(player, target) / Math.sqrt(1 + target.countCards("h")); - if (target.hasSkillTag("nogain")) att /= 10; - return att; - }); + player.chooseTarget("将" + get.translation(cards) + "交给一名角色", true).set("ai", function (target) { + var player = _status.event.player; + var att = get.attitude(player, target) / Math.sqrt(1 + target.countCards("h")); + if (target.hasSkillTag("nogain")) att /= 10; + return att; + }); else event.finish(); "step 3"; if (result.bool) { @@ -4913,17 +4210,9 @@ game.import("character", function () { event.list1 = []; event.list2 = []; if (player.countCards("h") > 0) { - var chooseButton = player.chooseButton(4, [ - "你的手牌", - player.getCards("h"), - get.translation(target.name) + "的手牌", - target.getCards("h"), - ]); + var chooseButton = player.chooseButton(4, ["你的手牌", player.getCards("h"), get.translation(target.name) + "的手牌", target.getCards("h")]); } else { - var chooseButton = player.chooseButton(4, [ - get.translation(target.name) + "的手牌", - target.getCards("h"), - ]); + var chooseButton = player.chooseButton(4, [get.translation(target.name) + "的手牌", target.getCards("h")]); } chooseButton.set("target", target); chooseButton.set("ai", function (button) { @@ -5140,10 +4429,7 @@ game.import("character", function () { var name = list[i]; if ( player.countCards("hes", function (card) { - return ( - (name != "sha" || get.value(card) < 5) && - get.suit(card, player) == map[name] - ); + return (name != "sha" || get.value(card) < 5) && get.suit(card, player) == map[name]; }) > 0 && player.getUseValue({ name: name, nature: name == "sha" ? "fire" : null }) > 0 ) { @@ -5154,8 +4440,7 @@ game.import("character", function () { } } } - if (name2 == get.suit(card, player)) - return name2 == "diamond" ? 5 - get.value(card) : 20 - get.value(card); + if (name2 == get.suit(card, player)) return name2 == "diamond" ? 5 - get.value(card) : 20 - get.value(card); return 0; } return 1; @@ -5166,38 +4451,17 @@ game.import("character", function () { var filter = event._backup.filterCard; var name = get.suit(card, player); if (name == "club" && filter({ name: "shan", cards: [card] }, player, event)) return true; - if ( - name == "diamond" && - filter({ name: "sha", cards: [card], nature: "fire" }, player, event) - ) - return true; - if (name == "spade" && filter({ name: "wuxie", cards: [card] }, player, event)) - return true; + if (name == "diamond" && filter({ name: "sha", cards: [card], nature: "fire" }, player, event)) return true; + if (name == "spade" && filter({ name: "wuxie", cards: [card] }, player, event)) return true; if (name == "heart" && filter({ name: "tao", cards: [card] }, player, event)) return true; return false; }, filter: function (event, player) { var filter = event.filterCard; - if ( - filter(get.autoViewAs({ name: "sha", nature: "fire" }, "unsure"), player, event) && - player.countCards("hes", { suit: "diamond" }) - ) - return true; - if ( - filter(get.autoViewAs({ name: "shan" }, "unsure"), player, event) && - player.countCards("hes", { suit: "club" }) - ) - return true; - if ( - filter(get.autoViewAs({ name: "tao" }, "unsure"), player, event) && - player.countCards("hes", { suit: "heart" }) - ) - return true; - if ( - filter(get.autoViewAs({ name: "wuxie" }, "unsure"), player, event) && - player.countCards("hes", { suit: "spade" }) - ) - return true; + if (filter(get.autoViewAs({ name: "sha", nature: "fire" }, "unsure"), player, event) && player.countCards("hes", { suit: "diamond" })) return true; + if (filter(get.autoViewAs({ name: "shan" }, "unsure"), player, event) && player.countCards("hes", { suit: "club" })) return true; + if (filter(get.autoViewAs({ name: "tao" }, "unsure"), player, event) && player.countCards("hes", { suit: "heart" })) return true; + if (filter(get.autoViewAs({ name: "wuxie" }, "unsure"), player, event) && player.countCards("hes", { suit: "spade" })) return true; return false; }, precontent: function () { @@ -5231,10 +4495,7 @@ game.import("character", function () { var name = list[i]; if ( player.countCards("hes", function (card) { - return ( - (name != "sha" || get.value(card) < 5) && - get.suit(card, player) == map[name] - ); + return (name != "sha" || get.value(card) < 5) && get.suit(card, player) == map[name]; }) > 0 && player.getUseValue({ name: name, @@ -5276,9 +4537,7 @@ game.import("character", function () { var name = trigger.card.name; var next = game.createEvent("scsanruo_" + name); next.player = player; - next.setContent( - lib.skill.scsanruo_effect[name == "shan" ? "sha" : name] || function () {} - ); + next.setContent(lib.skill.scsanruo_effect[name == "shan" ? "sha" : name] || function () {}); }, sha: function () { "step 0"; @@ -5289,8 +4548,7 @@ game.import("character", function () { var target = trigger.source; } event.target = target; - if (!target || !target.countGainableCards(player, "he")) - event._result = { bool: false }; + if (!target || !target.countGainableCards(player, "he")) event._result = { bool: false }; else player .chooseBool(get.prompt("scsanruo_effect", target), "获得该角色的一张牌") @@ -5307,14 +4565,10 @@ game.import("character", function () { tao: function () { "step 0"; player - .chooseTarget( - get.prompt("scsanruo"), - "获得一名其他角色的一张牌", - (card, player, target) => { - return target.countGainableCards(player, "he") && target != player; - } - ) - .set("ai", (target) => { + .chooseTarget(get.prompt("scsanruo"), "获得一名其他角色的一张牌", (card, player, target) => { + return target.countGainableCards(player, "he") && target != player; + }) + .set("ai", target => { return 1 - get.attitude(_status.event.player, target); }); "step 1"; @@ -5333,8 +4587,7 @@ game.import("character", function () { } var target = trigger.respondTo[0]; event.target = target; - if (!target || !target.countGainableCards(player, player == target ? "e" : "he")) - event._result = { bool: false }; + if (!target || !target.countGainableCards(player, player == target ? "e" : "he")) event._result = { bool: false }; else player .chooseBool(get.prompt("scsanruo_effect", target), "获得该角色的一张牌") @@ -5389,10 +4642,7 @@ game.import("character", function () { var name = list[i]; if ( player.countCards("hes", function (card) { - return ( - (name != "sha" || get.value(card) < 5) && - get.suit(card, player) == map[name] - ); + return (name != "sha" || get.value(card) < 5) && get.suit(card, player) == map[name]; }) > 0 && player.getUseValue({ name: name, nature: name == "sha" ? "fire" : null }) > 0 ) { @@ -5403,8 +4653,7 @@ game.import("character", function () { } } } - if (name2 == get.suit(card, player)) - return name2 == "diamond" ? 5 - get.value(card) : 20 - get.value(card); + if (name2 == get.suit(card, player)) return name2 == "diamond" ? 5 - get.value(card) : 20 - get.value(card); return 0; } return 1; @@ -5413,44 +4662,22 @@ game.import("character", function () { complexCard: true, position: "hes", filterCard: function (card, player, event) { - if (ui.selected.cards.length) - return get.suit(card, player) == get.suit(ui.selected.cards[0], player); + if (ui.selected.cards.length) return get.suit(card, player) == get.suit(ui.selected.cards[0], player); event = event || _status.event; var filter = event._backup.filterCard; var name = get.suit(card, player); if (name == "club" && filter({ name: "shan", cards: [card] }, player, event)) return true; - if ( - name == "diamond" && - filter({ name: "sha", cards: [card], nature: "fire" }, player, event) - ) - return true; - if (name == "spade" && filter({ name: "wuxie", cards: [card] }, player, event)) - return true; + if (name == "diamond" && filter({ name: "sha", cards: [card], nature: "fire" }, player, event)) return true; + if (name == "spade" && filter({ name: "wuxie", cards: [card] }, player, event)) return true; if (name == "heart" && filter({ name: "tao", cards: [card] }, player, event)) return true; return false; }, filter: function (event, player) { var filter = event.filterCard; - if ( - filter(get.autoViewAs({ name: "sha", nature: "fire" }, "unsure"), player, event) && - player.countCards("hes", { suit: "diamond" }) - ) - return true; - if ( - filter(get.autoViewAs({ name: "shan" }, "unsure"), player, event) && - player.countCards("hes", { suit: "club" }) - ) - return true; - if ( - filter(get.autoViewAs({ name: "tao" }, "unsure"), player, event) && - player.countCards("hes", { suit: "heart" }) - ) - return true; - if ( - filter(get.autoViewAs({ name: "wuxie" }, "unsure"), player, event) && - player.countCards("hes", { suit: "spade" }) - ) - return true; + if (filter(get.autoViewAs({ name: "sha", nature: "fire" }, "unsure"), player, event) && player.countCards("hes", { suit: "diamond" })) return true; + if (filter(get.autoViewAs({ name: "shan" }, "unsure"), player, event) && player.countCards("hes", { suit: "club" })) return true; + if (filter(get.autoViewAs({ name: "tao" }, "unsure"), player, event) && player.countCards("hes", { suit: "heart" })) return true; + if (filter(get.autoViewAs({ name: "wuxie" }, "unsure"), player, event) && player.countCards("hes", { suit: "spade" })) return true; return false; }, precontent: function () { @@ -5484,10 +4711,7 @@ game.import("character", function () { var name = list[i]; if ( player.countCards("hes", function (card) { - return ( - (name != "sha" || get.value(card) < 5) && - get.suit(card, player) == map[name] - ); + return (name != "sha" || get.value(card) < 5) && get.suit(card, player) == map[name]; }) > 0 && player.getUseValue({ name: name, @@ -5517,12 +4741,7 @@ game.import("character", function () { charlotte: true, trigger: { player: "useCard" }, filter: function (event) { - return ( - ["sha", "tao"].includes(event.card.name) && - event.skill == "scsmiaoyu" && - event.cards && - event.cards.length == 2 - ); + return ["sha", "tao"].includes(event.card.name) && event.skill == "scsmiaoyu" && event.cards && event.cards.length == 2; }, forced: true, popup: false, @@ -5537,15 +4756,7 @@ game.import("character", function () { return event.name == "respond" ? 0.5 : false; }, filter: function (event, player) { - return ( - ["shan", "wuxie"].includes(event.card.name) && - event.skill == "scsmiaoyu" && - event.cards && - event.cards.length == 2 && - _status.currentPhase && - _status.currentPhase != player && - _status.currentPhase.countDiscardableCards(player, "he") - ); + return ["shan", "wuxie"].includes(event.card.name) && event.skill == "scsmiaoyu" && event.cards && event.cards.length == 2 && _status.currentPhase && _status.currentPhase != player && _status.currentPhase.countDiscardableCards(player, "he"); }, forced: true, popup: false, @@ -5562,7 +4773,7 @@ game.import("character", function () { enable: "phaseUse", usable: 1, filter: function (event, player) { - return game.hasPlayer((current) => player.canCompare(current)); + return game.hasPlayer(current => player.canCompare(current)); }, filterTarget: function (card, player, target) { return player.canCompare(target); @@ -5575,7 +4786,7 @@ game.import("character", function () { target.addTempSkill("mbshihe_prevent", { player: "phaseAfter" }); target.markAuto("mbshihe_prevent", [player]); } else { - var cards = player.getCards("he", (card) => { + var cards = player.getCards("he", card => { return lib.filter.cardDiscardable(card, player, "mbshihe"); }); if (cards.length > 0) player.discard(cards.randomGet()); @@ -5585,18 +4796,11 @@ game.import("character", function () { order: 6, result: { player: function (player, target) { - if ( - (get.realAttitude || get.attitude)(target, player) >= 0 || - get.damageEffect(player, target, player) >= 0 - ) - return 0; + if ((get.realAttitude || get.attitude)(target, player) >= 0 || get.damageEffect(player, target, player) >= 0) return 0; var card = player.getCards("h").sort(function (a, b) { return get.number(b) - get.number(a); })[0]; - return get.number(card) >= 10 || - (get.number(card) >= 7 && target.countCards("h") <= 2) - ? 1 - : -1; + return get.number(card) >= 10 || (get.number(card) >= 7 && target.countCards("h") <= 2) ? 1 : -1; }, }, }, @@ -5604,11 +4808,8 @@ game.import("character", function () { prevent: { trigger: { source: "damageBegin2" }, filter: function (event, player) { - if (get.mode() == "identity") - return player.getStorage("mbshihe_prevent").includes(event.player); - return player - .getStorage("mbshihe_prevent") - .some((target) => event.player.isFriendOf(target)); + if (get.mode() == "identity") return player.getStorage("mbshihe_prevent").includes(event.player); + return player.getStorage("mbshihe_prevent").some(target => event.player.isFriendOf(target)); }, onremove: true, forced: true, @@ -5620,15 +4821,8 @@ game.import("character", function () { marktext: "吓", intro: { content: function (storage, player) { - var targets = storage.filter((i) => i.isIn()); - return ( - "被" + - get.translation(targets) + - "吓到了,对他" + - (targets.length > 1 ? "们" : "") + - (get.mode() != "identity" ? "和他的友方角色" : "") + - "打不出伤害" - ); + var targets = storage.filter(i => i.isIn()); + return "被" + get.translation(targets) + "吓到了,对他" + (targets.length > 1 ? "们" : "") + (get.mode() != "identity" ? "和他的友方角色" : "") + "打不出伤害"; }, }, ai: { @@ -5636,18 +4830,8 @@ game.import("character", function () { player: function (card, player, target, current) { if (get.tag(card, "damage")) { var bool = false; - if ( - get.mode() == "identity" && - player.getStorage("mbshihe_prevent").includes(target) - ) - bool = true; - if ( - get.mode() != "identity" && - player - .getStorage("mbshihe_prevent") - .some((targetx) => target.isFriendOf(targetx)) - ) - bool = true; + if (get.mode() == "identity" && player.getStorage("mbshihe_prevent").includes(target)) bool = true; + if (get.mode() != "identity" && player.getStorage("mbshihe_prevent").some(targetx => target.isFriendOf(targetx))) bool = true; if (bool) return "zeroplayertarget"; } }, @@ -5660,7 +4844,7 @@ game.import("character", function () { audio: 2, trigger: { player: "phaseJieshuBegin" }, filter: function (event, player) { - return player.hasHistory("lose", (evt) => { + return player.hasHistory("lose", evt => { return evt.type == "discard"; }); }, @@ -5668,17 +4852,11 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("mbzhenfu"), - "令一名其他角色获得1点护甲", - (card, player, target) => { - return target != player && target.hujia < 5; - } - ) - .set("ai", (target) => { - return ( - Math.max(0, get.threaten(target)) * get.attitude(_status.event.player, target) - ); + .chooseTarget(get.prompt("mbzhenfu"), "令一名其他角色获得1点护甲", (card, player, target) => { + return target != player && target.hujia < 5; + }) + .set("ai", target => { + return Math.max(0, get.threaten(target)) * get.attitude(_status.event.player, target); }); "step 1"; if (result.bool) { @@ -5720,14 +4898,7 @@ game.import("character", function () { threaten: 1.14, unequip_ai: true, skillTagFilter: function (player, tag, arg) { - if ( - arg && - arg.name == "sha" && - arg.card && - arg.card.storage && - arg.card.storage.mbguli - ) - return true; + if (arg && arg.name == "sha" && arg.card && arg.card.storage && arg.card.storage.mbguli) return true; return false; }, }, @@ -5745,11 +4916,8 @@ game.import("character", function () { return ( event.card.storage && event.card.storage.mbguli && - game.hasPlayer2((current) => { - return current.hasHistory( - "sourceDamage", - (evt) => evt.card == event.card - ); + game.hasPlayer2(current => { + return current.hasHistory("sourceDamage", evt => evt.card == event.card); }) ); }, @@ -5784,12 +4952,7 @@ game.import("character", function () { trigger: { source: "damageSource" }, forced: true, filter: function (event, player) { - return ( - player.inRange(event.player) && - player.isPhaseUsing() && - event.player.isIn() && - !player.getStorage("mbaosi_inf").includes(event.player) - ); + return player.inRange(event.player) && player.isPhaseUsing() && event.player.isIn() && !player.getStorage("mbaosi_inf").includes(event.player); }, logTarget: "player", content: function () { @@ -5827,30 +4990,21 @@ game.import("character", function () { if (trigger.player.countCards("h") < num) { event._result = { bool: false }; } else { - trigger.player - .chooseToDiscard( - num, - "弃置" + - get.cnNumber(num) + - "张手牌,或令" + - get.translation(player) + - "对你造成的此伤害+1" - ) - .set("ai", function (card) { - var player = _status.event.player; - if (player.hp == 1) { - if (get.type(card) == "basic") { - return 8 - get.value(card); - } else { - return 10 - get.value(card); - } - } else { - if (num > 2) { - return 0; - } + trigger.player.chooseToDiscard(num, "弃置" + get.cnNumber(num) + "张手牌,或令" + get.translation(player) + "对你造成的此伤害+1").set("ai", function (card) { + var player = _status.event.player; + if (player.hp == 1) { + if (get.type(card) == "basic") { return 8 - get.value(card); + } else { + return 10 - get.value(card); } - }); + } else { + if (num > 2) { + return 0; + } + return 8 - get.value(card); + } + }); } "step 1"; if (!result.bool) { @@ -5869,13 +5023,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - [1, player.getHistory("skipped").length], - get.prompt2("xinpingkou"), - function (card, player, target) { - return target != player; - } - ) + .chooseTarget([1, player.getHistory("skipped").length], get.prompt2("xinpingkou"), function (card, player, target) { + return target != player; + }) .set("ai", function (target) { var player = _status.event.player; return get.damageEffect(target, player, player); @@ -5893,7 +5043,7 @@ game.import("character", function () { event.redo(); } "step 3"; - var card = get.cardPile2((card) => get.type(card, false) == "equip"); + var card = get.cardPile2(card => get.type(card, false) == "equip"); if (card) player.gain(card, "gain2"); }, ai: { @@ -5920,10 +5070,7 @@ game.import("character", function () { if (!num) return; player.storage.spdaming += num; player.markSkill("spdaming"); - game.log( - player, - (num > 0 ? "获得了" : "减少了") + get.cnNumber(Math.abs(num)) + "点“达命”值" - ); + game.log(player, (num > 0 ? "获得了" : "减少了") + get.cnNumber(Math.abs(num)) + "点“达命”值"); }, content: function () { lib.skill.spdaming.change(player, 1); @@ -5943,12 +5090,8 @@ game.import("character", function () { nopop: true, filter: function (event, player) { if (!player.countCards("he")) return false; - return game.hasPlayer((current) => { - return ( - current != player && - current.hasSkill("spdaming") && - !current.hasSkill("spdaming_used") - ); + return game.hasPlayer(current => { + return current != player && current.hasSkill("spdaming") && !current.hasSkill("spdaming_used"); }); }, selectCard: 1, @@ -5958,12 +5101,8 @@ game.import("character", function () { }, selectTarget: function () { var player = _status.event.player; - var targets = game.filterPlayer((current) => { - return ( - current != player && - current.hasSkill("spdaming") && - !current.hasSkill("spdaming_used") - ); + var targets = game.filterPlayer(current => { + return current != player && current.hasSkill("spdaming") && !current.hasSkill("spdaming_used"); }); return targets.length > 1 ? 1 : -1; }, @@ -5971,17 +5110,9 @@ game.import("character", function () { prompt: function () { var player = _status.event.player; var targets = game.filterPlayer(function (current) { - return ( - current != player && - current.hasSkill("spdaming") && - !current.hasSkill("spdaming_used") - ); + return current != player && current.hasSkill("spdaming") && !current.hasSkill("spdaming_used"); }); - return ( - "将一张牌交给" + - get.translation(targets) + - (targets.length > 1 ? "中的一人" : "") - ); + return "将一张牌交给" + get.translation(targets) + (targets.length > 1 ? "中的一人" : ""); }, position: "he", discard: false, @@ -5990,11 +5121,8 @@ game.import("character", function () { check: function (card) { var player = _status.event.player; if ( - game.hasPlayer((current) => { - return ( - lib.skill.spdaming_give.filterTarget(null, player, current) && - get.attitude(player, current) > 0 - ); + game.hasPlayer(current => { + return lib.skill.spdaming_give.filterTarget(null, player, current) && get.attitude(player, current) > 0; }) ) { return 6 + Math.random() - get.value(card) / 15; @@ -6005,8 +5133,7 @@ game.import("character", function () { "step 0"; game.trySkillAudio("spdaming", target); player.give(cards, target); - if (!game.hasPlayer((current) => current != player && current != target)) - event.finish(); + if (!game.hasPlayer(current => current != player && current != target)) event.finish(); target.addTempSkill("spdaming_used", "phaseUseAfter"); "step 1"; var type = get.type(cards[0], "trick", target); @@ -6014,21 +5141,10 @@ game.import("character", function () { var str = get.translation(type), user = get.translation(player); target - .chooseTarget( - "达命:选择另一名其他角色", - "若该角色有" + - str + - "牌,其将一张该类型的牌交给" + - user + - ",你获得1点“达命”值;否则你将" + - get.translation(cards) + - "交给" + - user, - (card, player, target) => { - return target != player && target != _status.event.getParent().player; - } - ) - .set("ai", (target) => 1 - get.attitude(_status.event.player, target)); + .chooseTarget("达命:选择另一名其他角色", "若该角色有" + str + "牌,其将一张该类型的牌交给" + user + ",你获得1点“达命”值;否则你将" + get.translation(cards) + "交给" + user, (card, player, target) => { + return target != player && target != _status.event.getParent().player; + }) + .set("ai", target => 1 - get.attitude(_status.event.player, target)); "step 2"; if (result.bool) { var targetx = result.targets[0], @@ -6037,21 +5153,12 @@ game.import("character", function () { event.targetx = targetx; if (targetx.countCards("he", { type: type }) > 0) { targetx - .chooseCard( - "交给" + - get.translation(player) + - "一张" + - get.translation(type) + - "牌", - "he", - true, - (card) => { - return get.type(card) == _status.event.getParent().cardtype; - } - ) - .set("ai", (card) => 10 - get.value(card)); + .chooseCard("交给" + get.translation(player) + "一张" + get.translation(type) + "牌", "he", true, card => { + return get.type(card) == _status.event.getParent().cardtype; + }) + .set("ai", card => 10 - get.value(card)); } else { - var cards = cards.filter((i) => get.owner(i) == target); + var cards = cards.filter(i => get.owner(i) == target); if (cards.length) target.give(cards, player); event.finish(); } @@ -6094,11 +5201,7 @@ game.import("character", function () { return ui.create.dialog("嚣逆", [list, "vcard"]); }, filter: function (button, player) { - return lib.filter.filterCard( - { name: button.link[2] }, - player, - _status.event.getParent() - ); + return lib.filter.filterCard({ name: button.link[2] }, player, _status.event.getParent()); }, check: function (button) { var player = _status.event.player; @@ -6124,13 +5227,7 @@ game.import("character", function () { }; }, prompt: function (links, player) { - return ( - "将一张牌当" + - (get.translation(links[0][3]) || "") + - "【" + - get.translation(links[0][2]) + - "】使用" - ); + return "将一张牌当" + (get.translation(links[0][3]) || "") + "【" + get.translation(links[0][2]) + "】使用"; }, }, mod: { @@ -6162,7 +5259,7 @@ game.import("character", function () { multiline: true, multitarget: true, filter: function (event, player) { - return game.countPlayer((current) => current.countCards("e") > 0) >= 2; + return game.countPlayer(current => current.countCards("e") > 0) >= 2; }, content: function () { game.asyncDraw(targets); @@ -6183,7 +5280,7 @@ game.import("character", function () { multiline: true, multitarget: true, filter: function (event, player) { - return game.countPlayer((current) => current.isLinked()); + return game.countPlayer(current => current.isLinked()); }, content: function () { "step 0"; @@ -6210,10 +5307,7 @@ game.import("character", function () { direct: true, group: ["sbanguo_move", "sbanguo_damage", "sbanguo_dying"], filter: function (event, player) { - return ( - game.hasPlayer((current) => current != player) && - (event.name != "phase" || game.phaseNumber == 0) - ); + return game.hasPlayer(current => current != player) && (event.name != "phase" || game.phaseNumber == 0); }, content: function () { "step 0"; @@ -6248,53 +5342,28 @@ game.import("character", function () { direct: true, trigger: { player: "phaseUseBegin" }, filter: function (event, player) { - return ( - game.hasPlayer((current) => current.hasSkill("sbanguo_mark")) && - game.hasPlayer( - (current) => !current.hasMark("sbanguo_marked") && current != player - ) - ); + return game.hasPlayer(current => current.hasSkill("sbanguo_mark")) && game.hasPlayer(current => !current.hasMark("sbanguo_marked") && current != player); }, content: function () { "step 0"; - var targets = game.filterPlayer((current) => current.hasSkill("sbanguo_mark")); - var prompt2 = - targets.length == 1 - ? "将" + - get.translation(targets[0]) + - "的“安国”交给一名未获得过“安国”的其他角色" - : "选择一名有“安国”的角色,将该标记交给一名未获得过“安国”的其他角色"; + var targets = game.filterPlayer(current => current.hasSkill("sbanguo_mark")); + var prompt2 = targets.length == 1 ? "将" + get.translation(targets[0]) + "的“安国”交给一名未获得过“安国”的其他角色" : "选择一名有“安国”的角色,将该标记交给一名未获得过“安国”的其他角色"; player - .chooseTarget( - get.prompt("sbanguo"), - prompt2, - targets.length == 1 ? 1 : 2, - (card, player, target) => { - if ( - ui.selected.targets.length == 0 && - _status.event.targets.length > 1 - ) - return target.hasSkill("sbanguo_mark"); - return !target.hasMark("sbanguo_marked") && target != player; - } - ) - .set("ai", (target) => { + .chooseTarget(get.prompt("sbanguo"), prompt2, targets.length == 1 ? 1 : 2, (card, player, target) => { + if (ui.selected.targets.length == 0 && _status.event.targets.length > 1) return target.hasSkill("sbanguo_mark"); + return !target.hasMark("sbanguo_marked") && target != player; + }) + .set("ai", target => { var player = _status.event.player; - if (ui.selected.targets.length == 0 && _status.event.targets.length > 1) - return -get.attitude(player, target); - return ( - get.attitude(player, _status.event.targets[0]) < - get.attitude(player, target) - ); + if (ui.selected.targets.length == 0 && _status.event.targets.length > 1) return -get.attitude(player, target); + return get.attitude(player, _status.event.targets[0]) < get.attitude(player, target); }) .set("targets", targets); "step 1"; if (result.bool) { var targets = result.targets; if (targets.length == 1) { - var target1 = game.filterPlayer((current) => - current.hasSkill("sbanguo_mark") - )[0]; + var target1 = game.filterPlayer(current => current.hasSkill("sbanguo_mark"))[0]; var target2 = targets[0]; } else { var target1 = targets[0]; @@ -6320,9 +5389,8 @@ game.import("character", function () { locked: false, trigger: { player: "damageBegin4" }, filter: function (event, player) { - if (!game.hasPlayer((current) => current.hasSkill("sbanguo_mark"))) return false; - if (event.source && event.source.isIn() && event.source.hasSkill("sbanguo_mark")) - return false; + if (!game.hasPlayer(current => current.hasSkill("sbanguo_mark"))) return false; + if (event.source && event.source.isIn() && event.source.hasSkill("sbanguo_mark")) return false; return event.num >= player.hp; }, content: function () { @@ -6334,8 +5402,7 @@ game.import("character", function () { nodamage: true, effect: { target: function (card, player, target, current) { - if (!game.hasPlayer((current) => current.hasSkill("sbanguo_mark"))) - return; + if (!game.hasPlayer(current => current.hasSkill("sbanguo_mark"))) return; if (player.hasSkill("sbanguo_mark")) return; if (get.tag(card, "damage")) { if (target.hp <= 1) return [0, 0]; @@ -6367,18 +5434,7 @@ game.import("character", function () { player .chooseControl() .set("prompt", "安国:请选择一项") - .set("choiceList", [ - "失去" + - hp + - "点体力,令" + - get.translation(trigger.player) + - "获得1点护甲", - "减" + - maxhp + - "点体力上限,令" + - get.translation(trigger.player) + - "获得1点护甲", - ]) + .set("choiceList", ["失去" + hp + "点体力,令" + get.translation(trigger.player) + "获得1点护甲", "减" + maxhp + "点体力上限,令" + get.translation(trigger.player) + "获得1点护甲"]) .set("ai", () => "选项一"); } else if (hp > 0) event._result = { control: "选项一" }; else if (maxhp > 0) event._result = { control: "选项二" }; @@ -6411,10 +5467,9 @@ game.import("character", function () { player .chooseToDiscard(get.prompt2("sbbenxi"), [1, Infinity], "he") .set("logSkill", "sbbenxi") - .set("ai", (card) => { + .set("ai", card => { var player = _status.event.player; - if (ui.selected.cards.length < _status.event.num) - return 100 - (get.useful(card, player) + player.getUseValue(card) / 3); + if (ui.selected.cards.length < _status.event.num) return 100 - (get.useful(card, player) + player.getUseValue(card) / 3); return 0; }) .set( @@ -6423,25 +5478,15 @@ game.import("character", function () { var count = 0; var list = [], list2 = []; - var targets = game.filterPlayer( - (current) => get.distance(player, current) >= 1 - ); - var cards = player.getCards("hs", (card) => { - return ( - player.hasUseTarget(card, false) && - ["basic", "trick"].includes(get.type(card, false, player)) && - get.info(card).allowMultiple != false - ); + var targets = game.filterPlayer(current => get.distance(player, current) >= 1); + var cards = player.getCards("hs", card => { + return player.hasUseTarget(card, false) && ["basic", "trick"].includes(get.type(card, false, player)) && get.info(card).allowMultiple != false; }); var cards2 = player .getCards("he") - .filter((i) => lib.filter.cardDiscardable(i, player, "sbbenxi")) + .filter(i => lib.filter.cardDiscardable(i, player, "sbbenxi")) .sort((a, b) => { - return ( - get.useful(a, player) + - player.getUseValue(a) / 3 - - (get.useful(b, player) + player.getUseValue(b) / 3) - ); + return get.useful(a, player) + player.getUseValue(a) / 3 - (get.useful(b, player) + player.getUseValue(b) / 3); }); for (var i = 0; i < cards2.length; i++) { count = 0; @@ -6449,25 +5494,18 @@ game.import("character", function () { for (var card of cards) { var num = i + 1; if (cards2.slice(0, num).includes(card)) continue; - if (get.tag(card, "damage") && i > 0) - count += get.effect(player, { name: "draw" }, player); - var targets2 = targets.filter((current) => { - return ( - player.canUse(card, current, false) && - get.distance(player, current) <= num && - get.effect(current, card, player, player) > 0 - ); + if (get.tag(card, "damage") && i > 0) count += get.effect(player, { name: "draw" }, player); + var targets2 = targets.filter(current => { + return player.canUse(card, current, false) && get.distance(player, current) <= num && get.effect(current, card, player, player) > 0; }); - targets2 = targets2 - .map((target) => get.effect(target, card, player, player)) - .sort((a, b) => b - a); - targets2.slice(0, num).forEach((eff) => (count += eff)); + targets2 = targets2.map(target => get.effect(target, card, player, player)).sort((a, b) => b - a); + targets2.slice(0, num).forEach(eff => (count += eff)); list.push(count - 1.2 * get.value(cards2[i])); } var val = list.sort((a, b) => b - a)[0]; if (!isNaN(val)) list2.push([val, i]); } - list2 = list2.filter((i) => i[0] > 0); + list2 = list2.filter(i => i[0] > 0); if (!list2.length) return 0; return list2.sort((a, b) => b[0] - a[0])[0][1]; })() @@ -6505,11 +5543,7 @@ game.import("character", function () { if (event.targets && !info.multitarget) { if ( game.hasPlayer(function (current) { - return ( - !event.targets.includes(current) && - lib.filter.targetEnabled2(card, player, current) && - get.distance(player, current) == 1 - ); + return !event.targets.includes(current) && lib.filter.targetEnabled2(card, player, current) && get.distance(player, current) == 1; }) ) { return true; @@ -6519,30 +5553,12 @@ game.import("character", function () { }; if (!filter(trigger, player)) event.finish(); else { - var prompt = - "为" + - get.translation(trigger.card) + - "增加至多" + - get.cnNumber(num) + - "个距离为1的目标?"; + var prompt = "为" + get.translation(trigger.card) + "增加至多" + get.cnNumber(num) + "个距离为1的目标?"; trigger.player - .chooseTarget( - get.prompt("sbbenxi_effect"), - prompt, - [1, num], - function (card, player, target) { - var player = _status.event.player; - return ( - !_status.event.targets.includes(target) && - lib.filter.targetEnabled2( - _status.event.card, - player, - target - ) && - get.distance(player, target) == 1 - ); - } - ) + .chooseTarget(get.prompt("sbbenxi_effect"), prompt, [1, num], function (card, player, target) { + var player = _status.event.player; + return !_status.event.targets.includes(target) && lib.filter.targetEnabled2(_status.event.card, player, target) && get.distance(player, target) == 1; + }) .set("ai", function (target) { var trigger = _status.event.getTrigger(); var player = _status.event.player; @@ -6563,8 +5579,7 @@ game.import("character", function () { ai: { effect: { target: function (card, player, target) { - if (player.canUse(card, target) && get.distance(player, target) != 1) - return 1.2; + if (player.canUse(card, target) && get.distance(player, target) != 1) return 1.2; }, }, }, @@ -6580,8 +5595,8 @@ game.import("character", function () { filter: function (event, player) { return ( player.getStorage("sbbenxi_effect3").includes(event.card) && - game.hasPlayer2((current) => { - return current.hasHistory("damage", (evt) => { + game.hasPlayer2(current => { + return current.hasHistory("damage", evt => { return event.card == evt.card; }); }) @@ -6595,11 +5610,8 @@ game.import("character", function () { var evt = _status.event.getParent("phaseUse"); if (!evt || evt.player != player) return; if ( - player.hasHistory("useCard", (evtx) => { - return ( - evtx.getParent("phaseUse") == evt && - ["basic", "trick"].includes(get.type(evtx.card)) - ); + player.hasHistory("useCard", evtx => { + return evtx.getParent("phaseUse") == evt && ["basic", "trick"].includes(get.type(evtx.card)); }) ) return; @@ -6613,11 +5625,7 @@ game.import("character", function () { intro: { content: function (storage, player) { var str = "于此阶段至其他角色的距离-" + storage; - if (player.hasSkill("sbbenxi_effect")) - str += - ";使用下一张基本牌或普通锦囊牌选择目标后,可以增加" + - get.cnNumber(storage) + - "个目标"; + if (player.hasSkill("sbbenxi_effect")) str += ";使用下一张基本牌或普通锦囊牌选择目标后,可以增加" + get.cnNumber(storage) + "个目标"; return str; }, }, @@ -6639,39 +5647,17 @@ game.import("character", function () { direct: true, forced: true, filter: function (event, player) { - return game.hasPlayer((current) => { - return ( - current != event.source && - current != player && - current.countGainableCards(player, "he") - ); + return game.hasPlayer(current => { + return current != event.source && current != player && current.countGainableCards(player, "he"); }); }, content: function () { "step 0"; player - .chooseTarget( - "借兵:选择一名其他角色", - get.skillInfoTranslation("jiebing"), - true, - (card, player, target) => { - return ( - player != target && - target != _status.event.getTrigger().source && - target.countGainableCards(player, "he") - ); - } - ) - .set( - "ai", - (target) => - get.effect( - target, - { name: "shunshou_copy2" }, - player, - player - ) /** (target.countCards('he')>1?1.5:1)*/ - ); + .chooseTarget("借兵:选择一名其他角色", get.skillInfoTranslation("jiebing"), true, (card, player, target) => { + return player != target && target != _status.event.getTrigger().source && target.countGainableCards(player, "he"); + }) + .set("ai", target => get.effect(target, { name: "shunshou_copy2" }, player, player) /** (target.countCards('he')>1?1.5:1)*/); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -6684,11 +5670,7 @@ game.import("character", function () { } else event.finish(); "step 2"; for (var card of cards) { - if ( - get.type(card) == "equip" && - player.hasUseTarget(card) && - get.owner(card) == player - ) { + if (get.type(card) == "equip" && player.hasUseTarget(card) && get.owner(card) == player) { player.chooseUseTarget(card, true); } } @@ -6702,12 +5684,8 @@ game.import("character", function () { if (player.hasSkillTag("jueqing", false, target)) return [1, -2]; if (player != target && !player.getFriends().length) return; if ( - game.hasPlayer((current) => { - return ( - current != player && - get.attitude(player, current) > 0 && - current.countGainableCards(target, "he") > 0 - ); + game.hasPlayer(current => { + return current != player && get.attitude(player, current) > 0 && current.countGainableCards(target, "he") > 0; }) ) return [1, 1]; @@ -6748,13 +5726,7 @@ game.import("character", function () { return get.number(b) - get.number(a); }); if (!hs.length || !ts.length) return 0; - if ( - get.number(hs[0]) > get.number(ts[0]) || - get.number(hs[0]) - ts.length >= 9 + Math.min(2, player.hp / 2) - ) - return ( - get.sgnAttitude(player, target) * get.damageEffect(target, player, player) - ); + if (get.number(hs[0]) > get.number(ts[0]) || get.number(hs[0]) - ts.length >= 9 + Math.min(2, player.hp / 2)) return get.sgnAttitude(player, target) * get.damageEffect(target, player, player); return 0; }, }, @@ -6768,48 +5740,28 @@ game.import("character", function () { direct: true, group: ["yijin_upstart", "yijin_die"], filter: function (event, player) { - if ( - !game.hasPlayer( - (current) => current != player && !lib.skill.yijin.getKane(current).length - ) - ) - return false; + if (!game.hasPlayer(current => current != player && !lib.skill.yijin.getKane(current).length)) return false; return lib.skill.yijin.getKane(player).length; }, getKane: function (player) { var list = lib.skill.yijin.derivation; - return list.filter((mark) => player.hasMark(mark)); + return list.filter(mark => player.hasMark(mark)); }, - derivation: [ - "yijin_wushi", - "yijin_jinmi", - "yijin_guxiong", - "yijin_tongshen", - "yijin_yongbi", - "yijin_houren", - ], + derivation: ["yijin_wushi", "yijin_jinmi", "yijin_guxiong", "yijin_tongshen", "yijin_yongbi", "yijin_houren"], getValue: function (player, mark, target) { let dis = Math.sqrt(get.distance(player, target, "absolute")); if (target.isTurnedOver()) dis++; let draw = get.effect(target, { name: "draw" }, target, target); switch (mark.slice(6)) { case "wushi": - if (target.hasJudge("bingliang")) - return 12 / (1 + target.getCardUsable("sha", true)); + if (target.hasJudge("bingliang")) return 12 / (1 + target.getCardUsable("sha", true)); return (5 * draw) / dis + 12 / (1 + target.getCardUsable("sha", true)); case "jinmi": - if (target.hasJudge("lebu") && !target.hasCard({ name: "wuxie" }, "hs")) - return (draw * target.needsToDiscard(2.2)) / dis; - return ( - get.effect(target, { name: "lebu" }, player, target) + - (draw * target.needsToDiscard(2.2)) / dis - ); + if (target.hasJudge("lebu") && !target.hasCard({ name: "wuxie" }, "hs")) return (draw * target.needsToDiscard(2.2)) / dis; + return get.effect(target, { name: "lebu" }, player, target) + (draw * target.needsToDiscard(2.2)) / dis; case "guxiong": if (target.hasJudge("lebu")) return (-draw * target.needsToDiscard(3)) / dis; - return ( - (get.effect(target, { name: "losehp" }, target, target) * 2) / dis - - (draw * target.needsToDiscard(3)) / dis - ); + return (get.effect(target, { name: "losehp" }, target, target) * 2) / dis - (draw * target.needsToDiscard(3)) / dis; case "tongshen": if (target.isMin()) return 0; var eff = -get.damageEffect(target, player, target); @@ -6819,15 +5771,10 @@ game.import("character", function () { if (target.hp > 3) return (eff * dis) / target.hp; return eff * dis; case "yongbi": - if (target.hasJudge("bingliang") && !target.hasCard({ name: "wuxie" }, "hs")) - return 0; + if (target.hasJudge("bingliang") && !target.hasCard({ name: "wuxie" }, "hs")) return 0; return (get.effect(target, { name: "bingliang" }, player, target) * 2) / dis; case "houren": - return ( - (Math.min(5, 2 + target.getDamagedHp()) * - get.recoverEffect(target, player, target)) / - dis - ); + return (Math.min(5, 2 + target.getDamagedHp()) * get.recoverEffect(target, player, target)) / dis; } }, content: function () { @@ -6836,14 +5783,14 @@ game.import("character", function () { .chooseTarget("亿金:令一名其他角色获得1枚“金”", true, (card, player, target) => { return player != target && !lib.skill.yijin.getKane(target).length; }) - .set("ai", (target) => { + .set("ai", target => { let player = _status.event.player, att = get.attitude(player, target), kane = lib.skill.yijin.getKane(player); if (Math.abs(att) > 1) att = Math.sign(att) * Math.sqrt(Math.abs(att)); return Math.max.apply( Math.max, - kane.map((i) => { + kane.map(i => { return att * lib.skill.yijin.getValue(player, i, target); }) ); @@ -6854,15 +5801,8 @@ game.import("character", function () { event.target = target; player.logSkill("yijin", target); var kane = lib.skill.yijin.getKane(player); - var choiceList = kane.map((i) => { - return ( - '
    【' + - get.translation(lib.translate[i + "_ab"] || get.translation(i).slice(0, 2)) + - "】
    " + - "
    " + - get.skillInfoTranslation(i, player) + - "
    " - ); + var choiceList = kane.map(i => { + return '
    【' + get.translation(lib.translate[i + "_ab"] || get.translation(i).slice(0, 2)) + "】
    " + "
    " + get.skillInfoTranslation(i, player) + "
    "; }); player .chooseControl(kane) @@ -6875,7 +5815,7 @@ game.import("character", function () { target = _status.event.getParent().target, att = get.attitude(player, target); if (Math.abs(att) > 1) att = Math.sign(att) * Math.sqrt(Math.abs(att)); - let list = controls.map((i) => { + let list = controls.map(i => { return [i, att * lib.skill.yijin.getValue(player, i, target)]; }); list.sort((a, b) => b[1] - a[1]); @@ -6949,15 +5889,12 @@ game.import("character", function () { forceDie: true, filter: function (event, player) { if (event.name == "die") return true; - return ( - lib.skill.yijin.getKane(event.player).length && - event.player.additionalSkills["yijin_" + player.playerid] - ); + return lib.skill.yijin.getKane(event.player).length && event.player.additionalSkills["yijin_" + player.playerid]; }, content: function () { "step 0"; if (trigger.name == "die") { - game.countPlayer((current) => { + game.countPlayer(current => { var skills = current.additionalSkills["yijin_" + player.playerid]; if (skills && skills.length) { current.removeAdditionalSkill("yijin_" + player.playerid); @@ -7019,7 +5956,7 @@ game.import("character", function () { }, ai: { neg: true, - nokeep: true + nokeep: true, }, mod: { maxHandcard: function (player, num) { @@ -7048,8 +5985,7 @@ game.import("character", function () { nodamage: true, effect: { target: function (card, player, target, current) { - if (get.tag(card, "damage") && !get.tag(card, "thunderDamage")) - return [0, 0]; + if (get.tag(card, "damage") && !get.tag(card, "thunderDamage")) return [0, 0]; }, }, }, @@ -7069,7 +6005,7 @@ game.import("character", function () { }, ai: { neg: true, - nokeep: true + nokeep: true, }, marktext: "金", intro: { @@ -7099,7 +6035,7 @@ game.import("character", function () { enable: "phaseUse", usable: 1, filter: function (event, player) { - return game.countPlayer((current) => current != player) >= 2; + return game.countPlayer(current => current != player) >= 2; }, filterTarget: lib.filter.notMe, selectTarget: 2, @@ -7111,27 +6047,19 @@ game.import("character", function () { ai: { result: { target: function (player, target) { - if (game.countPlayer((i) => i != player) < 2) return 0; + if (game.countPlayer(i => i != player) < 2) return 0; var list = game - .filterPlayer((current) => current != player) - .map((current) => { + .filterPlayer(current => current != player) + .map(current => { var _hp = current.hp, _maxhp = current.maxHp; current.hp = 10; current.maxHp = 10; var att = -get.sgnAttitude(player, current); var val = get.damageEffect(current, player, current) * att; - current.getSkills(null, false, false).forEach((skill) => { + current.getSkills(null, false, false).forEach(skill => { var info = get.info(skill); - if ( - info && - info.ai && - (info.ai.maixie || info.ai.maixie_hp || info.ai.maixie_defend) - ) - val = Math[val > 0 ? "max" : "min"]( - val > 0 ? 0.1 : -0.1, - val + 2 * att - ); + if (info && info.ai && (info.ai.maixie || info.ai.maixie_hp || info.ai.maixie_defend)) val = Math[val > 0 ? "max" : "min"](val > 0 ? 0.1 : -0.1, val + 2 * att); }); var eff = 100 / val + 15; current.hp = _hp; @@ -7146,10 +6074,10 @@ game.import("character", function () { return ( sign * (game - .filterPlayer((current) => { + .filterPlayer(current => { return current != player && current != targetx; }) - .map((current) => { + .map(current => { var _hp = targetx.hp, _maxhp = targetx.maxHp; targetx.hp = 10; @@ -7176,11 +6104,11 @@ game.import("character", function () { function (card) { return get.type(card, false) == "trick" && get.tag(card, "damage", null, false) > 0; }, - (card) => get.type(card, false) == "basic", - (card) => get.name(card, false) == "wuxie", - (card) => get.name(card, false) == "wuzhong", - (card) => get.name(card, false) == "lebu", - (card) => get.type(card, false) == "equip", + card => get.type(card, false) == "basic", + card => get.name(card, false) == "wuxie", + card => get.name(card, false) == "wuzhong", + card => get.name(card, false) == "lebu", + card => get.type(card, false) == "equip", ], getLiujing: function (player, index) { var filter = lib.skill.chengye.liujing_filter[index], @@ -7191,13 +6119,7 @@ game.import("character", function () { return false; }, trigger: { - global: [ - "useCardAfter", - "loseAfter", - "cardsDiscardAfter", - "loseAsyncAfter", - "equipAfter", - ], + global: ["useCardAfter", "loseAfter", "cardsDiscardAfter", "loseAsyncAfter", "equipAfter"], }, forced: true, filter: function (event, player) { @@ -7329,9 +6251,7 @@ game.import("character", function () { }, dialog: function (event, player) { var num = (player.getStat("skill").buxu || 0) + 1; - return ui.create.dialog( - "###补叙###弃置" + get.cnNumber(num) + "张牌并补充一张“六经”" - ); + return ui.create.dialog("###补叙###弃置" + get.cnNumber(num) + "张牌并补充一张“六经”"); }, prompt: function (links, player) { var num = (player.getStat("skill").buxu || 0) + 1; @@ -7376,7 +6296,7 @@ game.import("character", function () { trigger: { player: "phaseDrawBegin1" }, forced: true, locked: false, - filter: (event) => !event.numFixed, + filter: event => !event.numFixed, content: function () { "step 0"; var cards = game.cardsGotoOrdering(get.cards(3)).cards, @@ -7393,9 +6313,7 @@ game.import("character", function () { player.showCards(cards, get.translation(player) + "发动了【明察】"); if (!event.cards.length) event.finish(); "step 1"; - player - .chooseBool("是否放弃摸牌并获得" + get.translation(cards)) - .set("goon", trigger.num - cards.length <= 1); + player.chooseBool("是否放弃摸牌并获得" + get.translation(cards)).set("goon", trigger.num - cards.length <= 1); "step 2"; if (result.bool) { trigger.changeToZero(); @@ -7435,15 +6353,9 @@ game.import("character", function () { direct: true, content: function () { "step 0"; - player - .chooseTarget( - get.prompt("jingzhong"), - "获得一名其他角色下回合出牌阶段内使用的牌", - lib.filter.notMe - ) - .set("ai", function (target) { - return Math.sqrt(target.countCards("h")) * get.threaten(target); - }); + player.chooseTarget(get.prompt("jingzhong"), "获得一名其他角色下回合出牌阶段内使用的牌", lib.filter.notMe).set("ai", function (target) { + return Math.sqrt(target.countCards("h")) * get.threaten(target); + }); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -7459,19 +6371,12 @@ game.import("character", function () { forced: true, charlotte: true, filter: function (event, player) { - if ( - !player.getStorage("jingzhong_effect").includes(event.player) || - !event.cards.filterInD().length - ) - return false; + if (!player.getStorage("jingzhong_effect").includes(event.player) || !event.cards.filterInD().length) return false; var evt = event.getParent("phaseUse"); if (!evt || evt.player != event.player) return false; return ( player.getHistory("useSkill", function (evtx) { - return ( - evtx.skill == "jingzhong_effect" && - evtx.event.getParent("phaseUse") == evt - ); + return evtx.skill == "jingzhong_effect" && evtx.event.getParent("phaseUse") == evt; }).length < 3 ); }, @@ -7511,10 +6416,7 @@ game.import("character", function () { filterTarget: true, prompt: function () { var num = _status.event.player.storage.sbyaoming_status; - var list = [ - "弃置一名手牌数不小于你的角色的一张牌", - ";或令一名手牌数不大于你的角色摸一张牌", - ]; + var list = ["弃置一名手牌数不小于你的角色的一张牌", ";或令一名手牌数不大于你的角色摸一张牌"]; if (typeof num == "number") list[num] += "(上次选择)"; return list[0] + list[1]; }, @@ -7527,8 +6429,7 @@ game.import("character", function () { var choice = get.attitude(player, target) > 0 ? 1 : 0; var str = get.translation(target), choiceList = ["弃置" + str + "的一张牌", "令" + str + "摸一张牌"]; - if (typeof player.storage.sbyaoming_status == "number") - choiceList[player.storage.sbyaoming_status] += "(上次选择)"; + if (typeof player.storage.sbyaoming_status == "number") choiceList[player.storage.sbyaoming_status] += "(上次选择)"; var next = player.chooseControl().set("choiceList", choiceList); next.set("ai_choice", choice); next.set("ai", () => _status.event.ai_choice); @@ -7537,10 +6438,7 @@ game.import("character", function () { if (result.index == 0) { player.discardPlayerCard(target, true, "he"); } else target.draw(); - if ( - typeof player.storage.sbyaoming_status == "number" && - result.index != player.storage.sbyaoming_status - ) { + if (typeof player.storage.sbyaoming_status == "number" && result.index != player.storage.sbyaoming_status) { player.addMark("charge", 1); delete player.storage.sbyaoming_status; } else { @@ -7581,12 +6479,10 @@ game.import("character", function () { game.delayx(); } "step 1"; - player - .chooseTarget(get.prompt("sbyaoming"), lib.skill.sbyaoming.prompt()) - .set("ai", function (target) { - var player = _status.event.player; - return get.effect(target, "sbyaoming", player, player); - }); + player.chooseTarget(get.prompt("sbyaoming"), lib.skill.sbyaoming.prompt()).set("ai", function (target) { + var player = _status.event.player; + return get.effect(target, "sbyaoming", player, player); + }); "step 2"; if (result.bool) { player.useSkill("sbyaoming", result.targets); @@ -7601,10 +6497,7 @@ game.import("character", function () { forced: true, locked: false, filter: function (event, player) { - return ( - (event.name != "phase" || game.phaseNumber == 0) && - player.countMark("charge") < 4 - ); + return (event.name != "phase" || game.phaseNumber == 0) && player.countMark("charge") < 4; }, content: function () { player.addMark("charge", Math.min(2, 4 - player.countMark("charge"))); @@ -7623,19 +6516,14 @@ game.import("character", function () { "step 0"; event.count = trigger.num; "step 1"; - player - .chooseTarget( - get.prompt("rejieming"), - "令一名角色摸两张牌。然后若其手牌数少于体力上限,你摸一张牌" - ) - .set("ai", function (target) { - var att = get.attitude(_status.event.player, target); - if (att > 2) { - if (target.maxHp - target.countCards("h") > 2) return 2 * att; - return att; - } - return att / 3; - }); + player.chooseTarget(get.prompt("rejieming"), "令一名角色摸两张牌。然后若其手牌数少于体力上限,你摸一张牌").set("ai", function (target) { + var att = get.attitude(_status.event.player, target); + if (att > 2) { + if (target.maxHp - target.countCards("h") > 2) return 2 * att; + return att; + } + return att / 3; + }); "step 2"; if (result.bool) { event.current = result.targets[0]; @@ -7662,10 +6550,7 @@ game.import("character", function () { var players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { if (get.attitude(target, players[i]) > 0) { - max = Math.max( - Math.min(5, players[i].hp) - players[i].countCards("h"), - max - ); + max = Math.max(Math.min(5, players[i].hp) - players[i].countCards("h"), max); } } switch (max) { @@ -7679,12 +6564,7 @@ game.import("character", function () { return [0, max]; } } - if ( - (card.name == "tao" || card.name == "caoyao") && - target.hp > 1 && - target.countCards("h") <= target.hp - ) - return [0, 0]; + if ((card.name == "tao" || card.name == "caoyao") && target.hp > 1 && target.countCards("h") <= target.hp) return [0, 0]; }, }, }, @@ -7728,8 +6608,7 @@ game.import("character", function () { if (event.filterCard({ name: i }, player, event)) list.push(["基本", str, i]); if (i == "sha") { for (var j of lib.inpile_nature) { - if (event.filterCard({ name: i, nature: j }, player, event)) - list.push(["基本", str, i, j]); + if (event.filterCard({ name: i, nature: j }, player, event)) list.push(["基本", str, i, j]); } } } @@ -7761,15 +6640,7 @@ game.import("character", function () { return next; }, prompt: function (links) { - return ( - "将一张牌当做" + - (get.translation(links[0][3]) || "") + - get.translation(links[0][2]) + - (_status.event.xinjianying_suit - ? "(" + get.translation(_status.event.xinjianying_suit) + ")" - : "") + - "使用" - ); + return "将一张牌当做" + (get.translation(links[0][3]) || "") + get.translation(links[0][2]) + (_status.event.xinjianying_suit ? "(" + get.translation(_status.event.xinjianying_suit) + ")" : "") + "使用"; }, }, ai: { @@ -7792,9 +6663,7 @@ game.import("character", function () { player.markSkill("jianying_mark"); game.broadcastAll( function (player, suit) { - if (player.marks.jianying_mark) - player.marks.jianying_mark.firstChild.innerHTML = - get.translation(suit); + if (player.marks.jianying_mark) player.marks.jianying_mark.firstChild.innerHTML = get.translation(suit); }, player, get.suit(trigger.card, player) @@ -7831,10 +6700,7 @@ game.import("character", function () { filterTarget: function (card, player, target) { if (target == player) return false; if (!ui.selected.targets.length) return target.countCards("he") > 0; - return ( - target != ui.selected.targets[0] && - ui.selected.targets[0].countGainableCards(target, "he") > 0 - ); + return target != ui.selected.targets[0] && ui.selected.targets[0].countGainableCards(target, "he") > 0; }, multitarget: true, targetprompt: ["被拿牌", "得到牌"], @@ -7849,19 +6715,12 @@ game.import("character", function () { ) player.draw(); "step 2"; - if ( - targets[0].isIn() && - targets[1].isIn() && - targets[0].countCards("h") != targets[1].countCards("h") - ) { - event.target = - targets[targets[0].countCards("h") > targets[1].countCards("h") ? 1 : 0]; - player - .chooseBool("是否令" + get.translation(event.target) + "摸一张牌?") - .set("ai", function () { - var evt = _status.event.getParent(); - return get.attitude(evt.player, evt.target) > 0; - }); + if (targets[0].isIn() && targets[1].isIn() && targets[0].countCards("h") != targets[1].countCards("h")) { + event.target = targets[targets[0].countCards("h") > targets[1].countCards("h") ? 1 : 0]; + player.chooseBool("是否令" + get.translation(event.target) + "摸一张牌?").set("ai", function () { + var evt = _status.event.getParent(); + return get.attitude(evt.player, evt.target) > 0; + }); } else event.finish(); "step 3"; if (result.bool) target.draw(); @@ -7882,10 +6741,7 @@ game.import("character", function () { if (get.attitude(player, target) > 1) { return 0; } - return target.countCards("h") - player.countCards("h") > - (target.countCards("e") ? 2 : 1) - ? 2 - : 1; + return target.countCards("h") - player.countCards("h") > (target.countCards("e") ? 2 : 1) ? 2 : 1; } else { if (get.attitude(player, target) <= 0) return target.countCards("he", function (card) { @@ -7912,16 +6768,8 @@ game.import("character", function () { audio: "spdaoshu1", trigger: { global: "phaseUseBegin" }, filter: function (event, player) { - var goon = - event.player != player && - (get.mode() == "identity" || - get.mode() == "guozhan" || - event.player.isEnemyOf(player)); - return ( - goon && - event.player.countCards("h") > 0 && - event.player.hasUseTarget({ name: "jiu", isCard: true }, null, true) - ); + var goon = event.player != player && (get.mode() == "identity" || get.mode() == "guozhan" || event.player.isEnemyOf(player)); + return goon && event.player.countCards("h") > 0 && event.player.hasUseTarget({ name: "jiu", isCard: true }, null, true); }, round: 1, logTarget: "player", @@ -7962,14 +6810,7 @@ game.import("character", function () { game.delayx(); player .chooseControl("有!", "没有!") - .set( - "prompt", - "你觉得" + - get.translation(target) + - "的手牌区里有" + - get.translation(event.cardname) + - "吗?" - ) + .set("prompt", "你觉得" + get.translation(target) + "的手牌区里有" + get.translation(event.cardname) + "吗?") .set("ai", function () { return _status.event.choice; }) @@ -7983,9 +6824,7 @@ game.import("character", function () { tao: 0.074, jiu: 0.031, }[event.cardname] || 0.1; - return 1 - Math.pow(1 - rand, target.countCards("h")) > 0.5 - ? "有!" - : "没有!"; + return 1 - Math.pow(1 - rand, target.countCards("h")) > 0.5 ? "有!" : "没有!"; })() ); "step 3"; @@ -8039,7 +6878,7 @@ game.import("character", function () { audio: "mbdaoshu1", enable: "phaseUse", filter: function (event, player) { - return game.hasPlayer((target) => target != player && target.countCards("h") > 2); + return game.hasPlayer(target => target != player && target.countCards("h") > 2); }, filterTarget: function (card, player, target) { return target != player && target.countCards("h") > 2; @@ -8053,62 +6892,31 @@ game.import("character", function () { names = lib.inpile.randomGets(3); if (!names.length) return; var map = {}; - names.forEach((name) => (map[get.translation(name)] = name)); - if (get.mode() != "identity" && get.mode() != "guozhan") - targets.addArray(player.getFriends()); + names.forEach(name => (map[get.translation(name)] = name)); + if (get.mode() != "identity" && get.mode() != "guozhan") targets.addArray(player.getFriends()); targets.remove(target); targets.sortBySeat(); var result = yield target - .chooseButton( - [ - "盗书:请选择伪装的牌和牌名", - target.getCards("h"), - [Object.keys(map), "tdnodes"], - ], - 2, - true - ) - .set("filterButton", (button) => { + .chooseButton(["盗书:请选择伪装的牌和牌名", target.getCards("h"), [Object.keys(map), "tdnodes"]], 2, true) + .set("filterButton", button => { var map = _status.event.map; if (!ui.selected.buttons.length) return true; - if (typeof button.link == typeof ui.selected.buttons[0].link) - return false; - if (typeof button.link == "string") - return ( - get.name(ui.selected.buttons[0].link, false) != map[button.link] - ); + if (typeof button.link == typeof ui.selected.buttons[0].link) return false; + if (typeof button.link == "string") return get.name(ui.selected.buttons[0].link, false) != map[button.link]; return map[ui.selected.buttons[0].link] != get.name(button.link, false); }) - .set("ai", (button) => { + .set("ai", button => { var map = _status.event.map; if (!ui.selected.buttons.length) { if (typeof button.link == "object") { - if ( - Object.values(map).some((name) => - lib.card.list.some( - (card) => - card[0] == get.suit(button.link, false) && - card[1] == get.number(button.link, false) && - card[2] == name - ) - ) - ) - return 5; + if (Object.values(map).some(name => lib.card.list.some(card => card[0] == get.suit(button.link, false) && card[1] == get.number(button.link, false) && card[2] == name))) return 5; return 3.5 + Math.random(); } return 0; } if (typeof button.link == "string") { var cardx = ui.selected.buttons[0].link; - if ( - lib.card.list.some( - (card) => - card[0] == get.suit(cardx, false) && - card[1] == get.number(cardx, false) && - card[2] == map[button.link] - ) - ) - return 2 + Math.random(); + if (lib.card.list.some(card => card[0] == get.suit(cardx, false) && card[1] == get.number(cardx, false) && card[2] == map[button.link])) return 2 + Math.random(); return 1; } return 0; @@ -8120,33 +6928,16 @@ game.import("character", function () { var OriginCard = result.links[0], ChangeName = map[result.links[1]], cards = target.getCards("h").slice(); - var card = game.createCard( - ChangeName, - get.suit(OriginCard, false), - get.number(OriginCard, false) - ); + var card = game.createCard(ChangeName, get.suit(OriginCard, false), get.number(OriginCard, false)); cards[cards.indexOf(OriginCard)] = card; if (_status.connectMode) { - var list = targets.map((target2) => [ - target2, - ["请猜测" + get.translation(target) + "伪装的手牌", cards], - true, - ]); + var list = targets.map(target2 => [target2, ["请猜测" + get.translation(target) + "伪装的手牌", cards], true]); var result2 = yield player .chooseButtonOL(list) .set("switchToAuto", () => (_status.event.result = "ai")) .set("processAI", () => { var cards = _status.event.cards.slice(); - var card = cards.find( - (card) => - lib.card.list.some((cardx) => cardx[2] == card.name) && - !lib.card.list.some( - (cardx) => - cardx[2] == card.name && - cardx[0] == get.suit(card, false) && - cardx[0] == get.number(card, false) - ) - ); + var card = cards.find(card => lib.card.list.some(cardx => cardx[2] == card.name) && !lib.card.list.some(cardx => cardx[2] == card.name && cardx[0] == get.suit(card, false) && cardx[0] == get.number(card, false))); return { bool: true, links: card ? card : cards.randomGet(), @@ -8161,24 +6952,10 @@ game.import("character", function () { while (guessTargets.length) { var target2 = guessTargets.shift(); var result2 = yield target2 - .chooseButton( - ["请猜测" + get.translation(target) + "伪装的手牌", cards], - true - ) - .set("ai", (button) => { + .chooseButton(["请猜测" + get.translation(target) + "伪装的手牌", cards], true) + .set("ai", button => { var cards = _status.event.cards.slice(); - var card = cards.find( - (card) => - lib.card.list.some( - (cardx) => cardx[2] == get.name(card, false) - ) && - !lib.card.list.some( - (cardx) => - cardx[2] == get.name(card, false) && - cardx[0] == get.suit(card, false) && - cardx[0] == get.number(card, false) - ) - ); + var card = cards.find(card => lib.card.list.some(cardx => cardx[2] == get.name(card, false)) && !lib.card.list.some(cardx => cardx[2] == get.name(card, false) && cardx[0] == get.suit(card, false) && cardx[0] == get.number(card, false))); return button.link == card ? 3 : 1 + Math.random(); }) .set("cards", cards); @@ -8187,13 +6964,12 @@ game.import("character", function () { } } } - targets.forEach((target2) => { + targets.forEach(target2 => { if (guessWinner.includes(target2)) { target2.popup("判断正确", "wood"); game.log(target2, "猜测", "#g正确"); game.broadcastAll(() => { - if (lib.config.background_speak) - game.playAudio("skill", "mbdaoshu2"); + if (lib.config.background_speak) game.playAudio("skill", "mbdaoshu2"); }); target2.line(target); target.damage(1, target2); @@ -8201,11 +6977,9 @@ game.import("character", function () { target2.popup("判断错误", "fire"); game.log(target2, "猜测", "#y错误"); game.broadcastAll(() => { - if (lib.config.background_speak) - game.playAudio("skill", "mbdaoshu3"); + if (lib.config.background_speak) game.playAudio("skill", "mbdaoshu3"); }); - if (target2.countCards("h") >= 2) - target2.discard(target2.getCards("h").randomGets(2)); + if (target2.countCards("h") >= 2) target2.discard(target2.getCards("h").randomGets(2)); else target2.loseHp(); } }); @@ -8229,33 +7003,17 @@ game.import("character", function () { limited: true, logTarget: "source", filter: function (event, player) { - return ( - event.num >= player.hp && - event.source && - event.source.isIn() && - event.cards && - event.cards.filterInD().length > 0 - ); + return event.num >= player.hp && event.source && event.source.isIn() && event.cards && event.cards.filterInD().length > 0; }, prompt2: function (event) { - return ( - "防止即将受到的" + - get.cnNumber(event.num) + - "点伤害,并令" + - get.translation(event.source) + - "将" + - get.translation(event.cards.filterInD()) + - "置于武将牌上且回合结束时收回" - ); + return "防止即将受到的" + get.cnNumber(event.num) + "点伤害,并令" + get.translation(event.source) + "将" + get.translation(event.cards.filterInD()) + "置于武将牌上且回合结束时收回"; }, skillAnimation: true, animationColor: "thunder", content: function () { player.awakenSkill("spdaizui"); trigger.source.addSkill("spdaizui2"); - trigger.source - .addToExpansion(trigger.cards.filterInD(), "gain2") - .gaintag.add("spdaizui2"); + trigger.source.addToExpansion(trigger.cards.filterInD(), "gain2").gaintag.add("spdaizui2"); trigger.cancel(); }, }, @@ -8300,11 +7058,7 @@ game.import("character", function () { if (!evt || !evt.card) return; var num1 = get.number(card), num2 = get.number(evt.card); - if ( - num1 === "unsure" || - (typeof num1 == "number" && typeof num2 == "number" && num1 % num2 == 0) - ) - return Infinity; + if (num1 === "unsure" || (typeof num1 == "number" && typeof num2 == "number" && num1 % num2 == 0)) return Infinity; } }, aiOrder: function (player, card, num) { @@ -8313,11 +7067,7 @@ game.import("character", function () { if (!evt || !evt.card) return; var num1 = get.number(card), num2 = (num2 = get.number(evt.card)); - if ( - num1 === "unsure" || - (typeof num1 == "number" && typeof num2 == "number" && num2 % num1 == 0) - ) - return num + 5; + if (num1 === "unsure" || (typeof num1 == "number" && typeof num2 == "number" && num2 % num1 == 0)) return num + 5; } }, }, @@ -8364,7 +7114,7 @@ game.import("character", function () { var cards1 = [], cards2 = [], num = player.storage.xingtu_mark; - player.getCards("h").forEach((card) => { + player.getCards("h").forEach(card => { var numx = get.number(card, player); if (typeof numx == "number") { if (numx % num == 0) cards1.push(card); @@ -8441,14 +7191,8 @@ game.import("character", function () { filterTarget: function (card, player, target) { if (target.isMin()) return false; if (ui.selected.targets.length == 0) return true; - if (ui.selected.targets[0].countCards("e") == 0 && target.countCards("e") == 0) - return false; - return ( - target == player || - ui.selected.targets[0] == player || - Math.abs(ui.selected.targets[0].countCards("e") - target.countCards("e")) <= - player.maxHp - player.hp - ); + if (ui.selected.targets[0].countCards("e") == 0 && target.countCards("e") == 0) return false; + return target == player || ui.selected.targets[0] == player || Math.abs(ui.selected.targets[0].countCards("e") - target.countCards("e")) <= player.maxHp - player.hp; }, multitarget: true, multiline: true, @@ -8529,23 +7273,19 @@ game.import("character", function () { } "step 3"; if (event.current && event.current.countCards("he")) { - if (!player.storage.mobileyanzhu || event.targets2.length == 1) - event.current.chooseCard("选择一张牌置于牌堆顶", "he", true); + if (!player.storage.mobileyanzhu || event.targets2.length == 1) event.current.chooseCard("选择一张牌置于牌堆顶", "he", true); else event.current.chooseCardTarget({ prompt: "将一张牌置于牌堆顶,或交给其他目标角色", filterCard: true, position: "he", filterTarget: function (card, player, target) { - return ( - target != player && - _status.event.getParent().targets2.includes(target) - ); + return target != player && _status.event.getParent().targets2.includes(target); }, forced: true, selectTarget: [0, 1], - ai1: (card) => 6 - get.value(card), - ai2: (target) => get.attitude(_status.event.player, target), + ai1: card => 6 - get.value(card), + ai2: target => get.attitude(_status.event.player, target), }); } else { event.goto(2); @@ -8583,10 +7323,7 @@ game.import("character", function () { "step 0"; if (target.countCards("e")) { target - .chooseBool( - "是否将装备区内的所有牌交给" + get.translation(player) + "?", - "若选择“取消”,则其将获得你区域里的一张牌" - ) + .chooseBool("是否将装备区内的所有牌交给" + get.translation(player) + "?", "若选择“取消”,则其将获得你区域里的一张牌") .set("ai", function () { if (_status.event.effect > 0) return false; if (_status.event.player.countCards("e") >= 3) return false; @@ -8722,13 +7459,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("yingfeng"), - "令一名角色获得“奉”标记", - function (card, player, target) { - return !target.hasSkill("yingfeng_mark"); - } - ) + .chooseTarget(get.prompt("yingfeng"), "令一名角色获得“奉”标记", function (card, player, target) { + return !target.hasSkill("yingfeng_mark"); + }) .set("ai", function (target) { var player = _status.event.player, att = get.attitude(player, target); @@ -8739,17 +7472,9 @@ game.import("character", function () { }); if (preTarget) { if (get.attitude(player, preTarget) < 0) eff += 4; - else if ( - preTarget.hasValueTarget({ name: "sha" }, false) && - !preTarget.hasValueTarget({ name: "sha" }) - ) - eff -= 3; + else if (preTarget.hasValueTarget({ name: "sha" }, false) && !preTarget.hasValueTarget({ name: "sha" })) eff -= 3; } - if ( - target.hasValueTarget({ name: "sha" }, false) && - !target.hasValueTarget({ name: "sha" }) - ) - eff += 3; + if (target.hasValueTarget({ name: "sha" }, false) && !target.hasValueTarget({ name: "sha" })) eff += 3; if (player == target) att *= 1.2; return 0.01 + att * eff; }); @@ -8785,9 +7510,7 @@ game.import("character", function () { forced: true, zhuanhuanji: "number", filter: function (event, player) { - return ( - player.countMark("spshidi") % 2 == ["phaseJieshu", "phaseZhunbei"].indexOf(event.name) - ); + return player.countMark("spshidi") % 2 == ["phaseJieshu", "phaseZhunbei"].indexOf(event.name); }, content: function () { player.changeZhuanhuanji("spshidi"); @@ -8800,12 +7523,7 @@ game.import("character", function () { if (to.countMark("spshidi") % 2 == 1) return distance + 1; }, aiOrder: function (player, card, num) { - if ( - player.countMark("spshidi") % 2 == 0 && - card.name == "sha" && - get.color(card) == "black" - ) - return num + 0.1; + if (player.countMark("spshidi") % 2 == 0 && card.name == "sha" && get.color(card) == "black") return num + 0.1; }, }, mark: true, @@ -8828,11 +7546,7 @@ game.import("character", function () { trigger: { player: "useCard" }, forced: true, filter: function (event, player) { - return ( - event.card.name == "sha" && - player.countMark("spshidi") % 2 == 0 && - get.color(event.card, false) == "black" - ); + return event.card.name == "sha" && player.countMark("spshidi") % 2 == 0 && get.color(event.card, false) == "black"; }, content: function () { trigger.directHit.addArray(game.players); @@ -8842,11 +7556,7 @@ game.import("character", function () { trigger: { target: "useCardToTargeted" }, forced: true, filter: function (event, player) { - return ( - event.card.name == "sha" && - player.countMark("spshidi") % 2 == 1 && - get.color(event.card, false) == "red" - ); + return event.card.name == "sha" && player.countMark("spshidi") % 2 == 1 && get.color(event.card, false) == "red"; }, content: function () { trigger.directHit.add(player); @@ -8912,12 +7622,7 @@ game.import("character", function () { if (result && result.cards) { event.card = result.cards[0]; player.lose(result.cards, ui.cardPile, "insert"); - game.log( - player, - "将", - get.position(event.card) == "h" ? "一张牌" : event.card, - "置于牌堆顶" - ); + game.log(player, "将", get.position(event.card) == "h" ? "一张牌" : event.card, "置于牌堆顶"); game.broadcastAll(function (player) { var cardx = ui.create.card(); cardx.classList.add("infohidden"); @@ -8941,36 +7646,18 @@ game.import("character", function () { "step 1"; var score = Math.floor(Math.min(5, result.accuracy / 17)); event.score = score; - game.log( - player, - "的演奏评级为", - "#y" + result.rank[0], - ",获得积分点数", - "#y" + score, - "分" - ); + game.log(player, "的演奏评级为", "#y" + result.rank[0], ",获得积分点数", "#y" + score, "分"); if (score < 3) { if (score >= 2) player.draw(); event.finish(); return; } var list = []; - if (player.countMark("miaojian") < 2 && player.hasSkill("miaojian")) - list.push("修改【妙剑】"); - if (player.countMark("shhlianhua") < 2 && player.hasSkill("shhlianhua")) - list.push("修改【莲华】"); + if (player.countMark("miaojian") < 2 && player.hasSkill("miaojian")) list.push("修改【妙剑】"); + if (player.countMark("shhlianhua") < 2 && player.hasSkill("shhlianhua")) list.push("修改【莲华】"); if (list.length) { list.push("全部摸牌"); - player - .chooseControl(list) - .set( - "prompt", - "冲虚:修改技能" + - (score == 5 ? "并摸一张牌" : "") + - ";或摸" + - Math.floor(score / 2) + - "张牌" - ); + player.chooseControl(list).set("prompt", "冲虚:修改技能" + (score == 5 ? "并摸一张牌" : "") + ";或摸" + Math.floor(score / 2) + "张牌"); } else event._result = { control: "全部摸牌" }; "step 2"; var score = event.score; @@ -9010,10 +7697,7 @@ game.import("character", function () { { name: "竹取飛翔 ~ Lunatic Princess", filename: "taketori_hishou", - timeleap: [ - 1021, 1490, 1959, 2896, 3834, 4537, 4771, 5709, 6646, 7585, 8039, 8494, 9403, - 10291, 11180, 11832, 12049, 12920, 13345, 13771, 14196, - ], + timeleap: [1021, 1490, 1959, 2896, 3834, 4537, 4771, 5709, 6646, 7585, 8039, 8494, 9403, 10291, 11180, 11832, 12049, 12920, 13345, 13771, 14196], current: -110, judgebar_height: 0.16, range1: [84, 110], @@ -9034,10 +7718,7 @@ game.import("character", function () { mapping: [0, 2, 3, 1, 1, 0, 3, 0, 0, 3, 0, 0, 2, 1, 2], //Convert from beats (0 is the first beat) to timeleap //将节拍(0是第一拍)转换为开始时间点 - timeleap: game.generateBeatmapTimeleap( - 170, - [0, 4, 8, 12, 14, 16, 16.5, 23.5, 24, 31, 32, 40, 45, 46, 47] - ), + timeleap: game.generateBeatmapTimeleap(170, [0, 4, 8, 12, 14, 16, 16.5, 23.5, 24, 31, 32, 40, 45, 46, 47]), current: -110, judgebar_height: 0.16, range1: [84, 110], @@ -9053,11 +7734,7 @@ game.import("character", function () { //Random (Randomly choose tracks to generate notes each play) //随机(每次演奏时音符会随机选择轨道生成) mapping: "random", - timeleap: [ - 0, 1071, 1518, 2054, 4018, 4286, 5357, 6429, 7500, 8571, 9643, 10714, 11786, - 12321, 12589, 12857, 13929, 15000, 16071, 17143, 18214, 18482, 18750, 19018, - 19286, 20357, - ], + timeleap: [0, 1071, 1518, 2054, 4018, 4286, 5357, 6429, 7500, 8571, 9643, 10714, 11786, 12321, 12589, 12857, 13929, 15000, 16071, 17143, 18214, 18482, 18750, 19018, 19286, 20357], current: -110, judgebar_height: 0.16, range1: [84, 110], @@ -9071,17 +7748,8 @@ game.import("character", function () { name: "只因你太美", filename: "chicken_you_are_so_beautiful", number_of_tracks: 7, - mapping: [ - 3, 6, 4, 5, 6, 2, 3, 2, 1, 2, 0, 4, 3, 6, 5, 4, 3, 6, 3, 2, 3, 1, 0, 1, 2, 3, 4, - 5, 6, - ], - timeleap: game.generateBeatmapTimeleap( - 107, - [ - 2, 3.5, 4.5, 5.5, 6.5, 8.5, 10, 11.5, 12.5, 13.5, 14.5, 15.5, 18, 19.5, 20.5, - 21.5, 22.5, 24.5, 26, 27.5, 28.5, 29.5, 30.5, 31, 31.5, 32, 32.5, 33, 33.5, - ] - ), + mapping: [3, 6, 4, 5, 6, 2, 3, 2, 1, 2, 0, 4, 3, 6, 5, 4, 3, 6, 3, 2, 3, 1, 0, 1, 2, 3, 4, 5, 6], + timeleap: game.generateBeatmapTimeleap(107, [2, 3.5, 4.5, 5.5, 6.5, 8.5, 10, 11.5, 12.5, 13.5, 14.5, 15.5, 18, 19.5, 20.5, 21.5, 22.5, 24.5, 26, 27.5, 28.5, 29.5, 30.5, 31, 31.5, 32, 32.5, 33, 33.5]), //Hitsound file name (By default in the audio/effect folder. To redirect to the extension, please write in the format of 'ext:extension_name') //打击音文件名(默认在audio/effect文件夹下 若要重定向到扩展 请写为'ext:扩展名称'的格式) hitsound: "chickun.wav", @@ -9098,10 +7766,7 @@ game.import("character", function () { name: "Croatian Rhapsody", filename: "croatian_rhapsody", mapping: [4, 1, 2, 1, 0, 0, 4, 5, 1, 3, 2, 1, 0, 0], - timeleap: game.generateBeatmapTimeleap( - 96, - [4, 6, 8, 9, 10, 11, 12, 13.5, 14, 15.5, 16, 17, 18, 19] - ), + timeleap: game.generateBeatmapTimeleap(96, [4, 6, 8, 9, 10, 11, 12, 13.5, 14, 15.5, 16, 17, 18, 19]), current: -110, judgebar_height: 0.16, range1: [84, 110], @@ -9116,10 +7781,7 @@ game.import("character", function () { filename: "rakshasa_sea_city", number_of_tracks: 7, mapping: "random", - timeleap: game.generateBeatmapTimeleap( - 150, - [0, 2, 4, 6, 7, 9, 11, 13, 14, 16, 18, 20, 21, 23, 25, 27] - ), + timeleap: game.generateBeatmapTimeleap(150, [0, 2, 4, 6, 7, 9, 11, 13, 14, 16, 18, 20, 21, 23, 25, 27]), current: -110, judgebar_height: 0.16, range1: [84, 110], @@ -9133,14 +7795,7 @@ game.import("character", function () { name: "Pigstep (Stereo Mix)", filename: "pigstep", number_of_tracks: 16, - timeleap: game.generateBeatmapTimeleap( - 170, - [ - 3, 4, 6, 6.5, 7.5, 11, 12, 14, 14.5, 15.5, 19, 20, 22, 22.5, 23.5, 27, 28, 30, - 30.5, 31.5, 35, 36, 38, 38.5, 39.5, 43, 44, 46, 46.5, 47.5, 51, 52, 54, 54.5, - 55.5, 59, 60, 62, 62.5, - ] - ), + timeleap: game.generateBeatmapTimeleap(170, [3, 4, 6, 6.5, 7.5, 11, 12, 14, 14.5, 15.5, 19, 20, 22, 22.5, 23.5, 27, 28, 30, 30.5, 31.5, 35, 36, 38, 38.5, 39.5, 43, 44, 46, 46.5, 47.5, 51, 52, 54, 54.5, 55.5, 59, 60, 62, 62.5]), current: -110, judgebar_height: 0.16, range1: [84, 110], @@ -9209,8 +7864,7 @@ game.import("character", function () { var event = _status.event.getParent(), level = player.countMark("miaojian"); if (button.link[2] == "sha") { - if (!event.filterCard({ name: "sha", nature: "stab" }, player, event)) - return false; + if (!event.filterCard({ name: "sha", nature: "stab" }, player, event)) return false; if (level == 2) return true; if (level == 1) return player.hasCard(function (card) { @@ -9293,16 +7947,8 @@ game.import("character", function () { var index = links[0][2] == "sha" ? 0 : 1, level = player.countMark("miaojian"); return [ - [ - "将一张【杀】当做刺【杀】使用", - "将一张基本牌当做刺【杀】使用", - "请选择刺【杀】的目标", - ], - [ - "将一张锦囊牌当做【无中生有】使用", - "将一张非基本牌当做【无中生有】使用", - "请选择【无中生有】的目标", - ], + ["将一张【杀】当做刺【杀】使用", "将一张基本牌当做刺【杀】使用", "请选择刺【杀】的目标"], + ["将一张锦囊牌当做【无中生有】使用", "将一张非基本牌当做【无中生有】使用", "请选择【无中生有】的目标"], ][index][level]; }, }, @@ -9320,7 +7966,7 @@ game.import("character", function () { trigger: { target: "useCardToTargeted" }, forced: true, locked: false, - filter: (event) => event.card.name == "sha", + filter: event => event.card.name == "sha", content: function () { "step 0"; player.draw(); @@ -9332,21 +7978,14 @@ game.import("character", function () { .judge(function (result) { return get.suit(result) == "spade" ? 1 : -1; }) - .set("judge2", (result) => result.bool); + .set("judge2", result => result.bool); "step 1"; if (result.bool) trigger.excluded.add(player); event.finish(); "step 2"; var eff = get.effect(player, trigger.card, trigger.player, trigger.player); trigger.player - .chooseToDiscard( - "he", - "弃置一张牌,或令" + - get.translation(trigger.card) + - "对" + - get.translation(player) + - "无效" - ) + .chooseToDiscard("he", "弃置一张牌,或令" + get.translation(trigger.card) + "对" + get.translation(player) + "无效") .set("ai", function (card) { if (_status.event.eff > 0) { return 10 - get.value(card); @@ -9373,30 +8012,16 @@ game.import("character", function () { trigger: { global: "phaseDrawBefore" }, direct: true, filter: function (event, player) { - return ( - player.countCards("he") > 0 && - !player.hasSkill("huantu_round") && - player.inRange(event.player) - ); + return player.countCards("he") > 0 && !player.hasSkill("huantu_round") && player.inRange(event.player); }, checkx: function (event, player) { var target = event.player; - return ( - get.attitude(player, target) > 0 && - (target.hasSkill("pingkou") || - target.skipList.includes("phaseUse") || - (target.isDamaged() && target.hp <= 2) || - target.needsToDiscard()) - ); + return get.attitude(player, target) > 0 && (target.hasSkill("pingkou") || target.skipList.includes("phaseUse") || (target.isDamaged() && target.hp <= 2) || target.needsToDiscard()); }, content: function () { "step 0"; player - .chooseCard( - get.prompt("huantu", trigger.player), - "交给其一张牌并令其暂时跳过摸牌阶段", - "he" - ) + .chooseCard(get.prompt("huantu", trigger.player), "交给其一张牌并令其暂时跳过摸牌阶段", "he") .set("ai", function (card) { if (!_status.event.checkx) return 0; return 1 + Math.random(); @@ -9431,10 +8056,7 @@ game.import("character", function () { var str = get.translation(trigger.player); player .chooseControl() - .set("choiceList", [ - "令" + str + "回复1点体力并摸两张牌", - "摸三张牌,然后交给" + str + "两张手牌", - ]) + .set("choiceList", ["令" + str + "回复1点体力并摸两张牌", "摸三张牌,然后交给" + str + "两张手牌"]) .set("choice", trigger.player.isDamaged() ? 0 : 1); "step 1"; if (result.index == 0) { @@ -9449,13 +8071,7 @@ game.import("character", function () { var hs = player.getCards("h"); if (hs.length && target.isIn() && player.isIn()) { if (hs.length <= 2) event._result = { bool: true, cards: hs }; - else - player.chooseCard( - "h", - 2, - true, - "交给" + get.translation(target) + "两张手牌" - ); + else player.chooseCard("h", 2, true, "交给" + get.translation(target) + "两张手牌"); } else event.finish(); "step 3"; if (result.bool) player.give(result.cards, trigger.player); @@ -9499,35 +8115,21 @@ game.import("character", function () { audio: 2, enable: ["chooseToUse", "chooseToRespond"], filter: function (event, player) { - return ( - player.getExpansions("jibing").length > 0 && - (event.filterCard(get.autoViewAs({ name: "sha" }, "unsure"), player, event) || - event.filterCard(get.autoViewAs({ name: "shan" }, "unsure"), player, event)) - ); + return player.getExpansions("jibing").length > 0 && (event.filterCard(get.autoViewAs({ name: "sha" }, "unsure"), player, event) || event.filterCard(get.autoViewAs({ name: "shan" }, "unsure"), player, event)); }, chooseButton: { dialog: function (event, player) { var dialog = ui.create.dialog("集兵", "hidden"); - if ( - event.filterCard(get.autoViewAs({ name: "sha" }, "unsure"), player, event) && - event.filterCard(get.autoViewAs({ name: "shan" }, "unsure"), player, event) - ) { + if (event.filterCard(get.autoViewAs({ name: "sha" }, "unsure"), player, event) && event.filterCard(get.autoViewAs({ name: "shan" }, "unsure"), player, event)) { dialog._chooseButton = 2; var list = ["sha", "shan"]; dialog.add([ - list.map((i) => { + list.map(i => { return [i, get.translation(i)]; }), "tdnodes", ]); - } else - dialog._cardName = event.filterCard( - get.autoViewAs({ name: "sha" }, "unsure"), - player, - event - ) - ? "sha" - : "shan"; + } else dialog._cardName = event.filterCard(get.autoViewAs({ name: "sha" }, "unsure"), player, event) ? "sha" : "shan"; dialog.add(player.getExpansions("jibing")); return dialog; }, @@ -9537,21 +8139,13 @@ game.import("character", function () { if (evt.dialog) { if (!evt.dialog._chooseButton) { var evt2 = _status.event.getParent(); - return evt2.filterCard( - get.autoViewAs({ name: evt.dialog._cardName }, [button.link]), - player, - evt2 - ); + return evt2.filterCard(get.autoViewAs({ name: evt.dialog._cardName }, [button.link]), player, evt2); } if (ui.selected.buttons.length) { var str = ui.selected.buttons[0].link; if (typeof str != "string" || typeof button.link == "string") return false; var evt2 = _status.event.getParent(); - return evt2.filterCard( - get.autoViewAs({ name: str }, [button.link]), - player, - evt2 - ); + return evt2.filterCard(get.autoViewAs({ name: str }, [button.link]), player, evt2); } return typeof button.link == "string"; } @@ -9568,9 +8162,7 @@ game.import("character", function () { } else { card = links[0]; var event = _status.event; - name = event.filterCard(get.autoViewAs({ name: "sha" }, [card]), player, event) - ? "sha" - : "shan"; + name = event.filterCard(get.autoViewAs({ name: "sha" }, [card]), player, event) ? "sha" : "shan"; } return { audio: "jibing", @@ -9606,12 +8198,9 @@ game.import("character", function () { place: { audio: "jibing", trigger: { player: "phaseDrawBegin1" }, - prompt2: - "摸牌阶段开始时,若你的“兵”数小于势力数,则你可以改为将牌堆顶的两张牌置于你的武将牌上,称为“兵”。", + prompt2: "摸牌阶段开始时,若你的“兵”数小于势力数,则你可以改为将牌堆顶的两张牌置于你的武将牌上,称为“兵”。", filter: function (event, player) { - return ( - !event.numFixed && player.getExpansions("jibing").length < game.countGroup() - ); + return !event.numFixed && player.getExpansions("jibing").length < game.countGroup(); }, content: function () { trigger.changeToZero(); @@ -9649,11 +8238,7 @@ game.import("character", function () { mingzhi: false, effect: { target: function (card, player, target, current) { - if ( - (get.tag(card, "respondShan") || get.tag(card, "respondSha")) && - target.getExpansions("jibing").length > 0 && - player.isMaxHp() - ) { + if ((get.tag(card, "respondShan") || get.tag(card, "respondSha")) && target.getExpansions("jibing").length > 0 && player.isMaxHp()) { if (get.attitude(target, player) <= 0) { return [0, 0, 1, 0.3]; } @@ -9726,10 +8311,7 @@ game.import("character", function () { }, logTarget: "player", check: function (event, player) { - return ( - get.attitude(player, event.player) > 0 && - (!event.source || get.attitude(player, event.source) < 0) - ); + return get.attitude(player, event.player) > 0 && (!event.source || get.attitude(player, event.source) < 0); }, content: function () { "step 0"; @@ -9767,25 +8349,15 @@ game.import("character", function () { "step 0"; var suit = get.suit(trigger.player.judging[0], trigger.player); player - .chooseCard( - get.translation(trigger.player) + - "的" + - (trigger.judgestr || "") + - "判定为" + - get.translation(trigger.player.judging[0]) + - "," + - get.prompt("chenjie"), - "hes", - function (card) { - if (get.suit(card) != _status.event.suit) return false; - var player = _status.event.player; - var mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player); - if (mod2 != "unchanged") return mod2; - var mod = game.checkMod(card, player, "unchanged", "cardRespondable", player); - if (mod != "unchanged") return mod; - return true; - } - ) + .chooseCard(get.translation(trigger.player) + "的" + (trigger.judgestr || "") + "判定为" + get.translation(trigger.player.judging[0]) + "," + get.prompt("chenjie"), "hes", function (card) { + if (get.suit(card) != _status.event.suit) return false; + var player = _status.event.player; + var mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player); + if (mod2 != "unchanged") return mod2; + var mod = game.checkMod(card, player, "unchanged", "cardRespondable", player); + if (mod != "unchanged") return mod; + return true; + }) .set("ai", function (card) { var trigger = _status.event.getTrigger(); var player = _status.event.player; @@ -9818,11 +8390,7 @@ game.import("character", function () { card.clone.classList.remove("thrownhighlight"); } }, trigger.player.judging[0]); - game.addVideo( - "deletenode", - player, - get.cardsInfo([trigger.player.judging[0].clone]) - ); + game.addVideo("deletenode", player, get.cardsInfo([trigger.player.judging[0].clone])); } game.cardsDiscard(trigger.player.judging[0]); trigger.player.judging[0] = card; @@ -9844,17 +8412,7 @@ game.import("character", function () { trigger: { target: "useCardToTarget" }, forced: true, filter: function (event, player) { - return ( - event.card.name != "jiu" && - event.card.name != "tao" && - event.targets.length == 1 && - event.card.isCard && - event.cards.length == 1 && - event.getParent(2).name != "jueyong_timeout" && - get.position(event.cards[0], true) == "o" && - event.card.name == event.cards[0].name && - (!player.storage.jueyong || player.storage.jueyong[0].length < player.getHp()) - ); + return event.card.name != "jiu" && event.card.name != "tao" && event.targets.length == 1 && event.card.isCard && event.cards.length == 1 && event.getParent(2).name != "jueyong_timeout" && get.position(event.cards[0], true) == "o" && event.card.name == event.cards[0].name && (!player.storage.jueyong || player.storage.jueyong[0].length < player.getHp()); }, content: function () { trigger.targets.remove(player); @@ -9890,20 +8448,11 @@ game.import("character", function () { reverseEquip: true, effect: { target: function (card, player, target, current) { - if ( - get.type(card) == "equip" && - !get.tag(card, "gifts") && - target.storage.jueyong && - target.storage.jueyong[1].length - ) { + if (get.type(card) == "equip" && !get.tag(card, "gifts") && target.storage.jueyong && target.storage.jueyong[1].length) { var result1 = get.equipResult(player, target, card.name), subtype = get.subtype(card); for (var i of target.storage.jueyong[0]) { - if ( - get.subtype(i, false) == subtype && - get.equipResult(target, target, i.name) >= result1 - ) - return "zerotarget"; + if (get.subtype(i, false) == subtype && get.equipResult(target, target, i.name) >= result1) return "zerotarget"; } } }, @@ -9923,8 +8472,7 @@ game.import("character", function () { card = list[0].shift(), source = list[1].shift(); if (player.getExpansions("jueyong").includes(card)) { - if (source && source.isIn() && source.canUse(card, player, false)) - source.useCard(card, player, false); + if (source && source.isIn() && source.canUse(card, player, false)) source.useCard(card, player, false); else player.loseToDiscardpile(card); } if (list[0].length) event.redo(); @@ -9953,14 +8501,7 @@ game.import("character", function () { return get.tag(card, "damage") > 0; })) || !player.storage.jueyong[0].some(function (card) { - return ( - get.effect( - player, - card, - player.storage.jueyong[1][player.storage.jueyong[0].indexOf(card)], - player - ) < 0 - ); + return get.effect(player, card, player.storage.jueyong[1][player.storage.jueyong[0].indexOf(card)], player) < 0; }) ) return -1; @@ -10018,30 +8559,17 @@ game.import("character", function () { return ( get.type(event.card, false) != "delay" && game.hasPlayer(function (current) { - return ( - player != current && - (!player.storage.discretesidi || - !player.storage.discretesidi.includes(current)) - ); + return player != current && (!player.storage.discretesidi || !player.storage.discretesidi.includes(current)); }) ); }, content: function () { "step 0"; player - .chooseTarget( - get.prompt("discretesidi"), - "选择两名角色a,b建立二元序偶,或仅选择一名角色,建立二元序偶", - [1, 2], - function (card, player, target) { - if (ui.selected.targets.length) return true; - return ( - target != player && - (!player.storage.discretesidi || - !player.storage.discretesidi.includes(target)) - ); - } - ) + .chooseTarget(get.prompt("discretesidi"), "选择两名角色a,b建立二元序偶,或仅选择一名角色,建立二元序偶", [1, 2], function (card, player, target) { + if (ui.selected.targets.length) return true; + return target != player && (!player.storage.discretesidi || !player.storage.discretesidi.includes(target)); + }) .set("complexTarget", true) .set("complexSelect", true) .set("targetprompt", ["第一元素", "第二元素"]) @@ -10052,8 +8580,7 @@ game.import("character", function () { return 1 + Math.random(); } var targetx = ui.selected.targets[0]; - if (targetx.getEnemies().includes(target) && targetx.inRange(target)) - return Math.random() - 0.5; + if (targetx.getEnemies().includes(target) && targetx.inRange(target)) return Math.random() - 0.5; return 0; }).animate = false; "step 1"; @@ -10074,12 +8601,7 @@ game.import("character", function () { if ((player == game.me || player.isUnderControl()) && !game.observe) { var str = "R={ "; for (var i = 0; i < storage.length; i++) { - str += - "<" + - get.translation(storage[i]) + - ", " + - get.translation(player.storage.discretesidi2[i]) + - ">"; + str += "<" + get.translation(storage[i]) + ", " + get.translation(player.storage.discretesidi2[i]) + ">"; if (i < storage.length - 1) str += ", "; } str += " }"; @@ -10100,27 +8622,16 @@ game.import("character", function () { popup: false, locked: false, filter: function (event, player) { - if ( - !player.storage.discretesidi || - !player.storage.discretesidi.includes(event.player) - ) - return false; + if (!player.storage.discretesidi || !player.storage.discretesidi.includes(event.player)) return false; if (event.name == "die") return true; if (get.type(event.card, false) != "delay") { var index = player.storage.discretesidi.indexOf(event.player); - return ( - index != -1 && - (player.storage.discretesidi2[index] != event.target || - event.targets.length != 1) - ); + return index != -1 && (player.storage.discretesidi2[index] != event.target || event.targets.length != 1); } return false; }, content: function () { - player.storage.discretesidi2.splice( - player.storage.discretesidi.indexOf(trigger.player), - 1 - ); + player.storage.discretesidi2.splice(player.storage.discretesidi.indexOf(trigger.player), 1); player.unmarkAuto("discretesidi", [trigger.player]); }, }, @@ -10130,22 +8641,14 @@ game.import("character", function () { forced: true, locked: false, filter: function (event, player) { - if ( - get.type(event.card, false) == "delay" || - !player.storage.discretesidi || - event.targets.length != 1 - ) - return false; + if (get.type(event.card, false) == "delay" || !player.storage.discretesidi || event.targets.length != 1) return false; var index = player.storage.discretesidi.indexOf(event.player); return index != -1 && player.storage.discretesidi2[index] == event.target; }, logTarget: "player", content: function () { "step 0"; - player.storage.discretesidi2.splice( - player.storage.discretesidi.indexOf(trigger.player), - 1 - ); + player.storage.discretesidi2.splice(player.storage.discretesidi.indexOf(trigger.player), 1); player.unmarkAuto("discretesidi", [trigger.player]); if (trigger.target == player) { player.draw(); @@ -10156,22 +8659,11 @@ game.import("character", function () { event.target = target; player .chooseControl("cancel2") - .set("choiceList", [ - "取消" + - get.translation(trigger.card) + - "的所有目标并对" + - get.translation(target) + - "造成1点伤害", - "摸两张牌", - ]) + .set("choiceList", ["取消" + get.translation(trigger.card) + "的所有目标并对" + get.translation(target) + "造成1点伤害", "摸两张牌"]) .set("ai", function () { var player = _status.event.player, evt = _status.event.getTrigger(); - if ( - get.damageEffect(evt.player, player, player) > 0 && - get.effect(evt.target, evt.card, evt.player, player) < 0 - ) - return 0; + if (get.damageEffect(evt.player, player, player) > 0 && get.effect(evt.target, evt.card, evt.player, player) < 0) return 0; return 1; }); "step 1"; @@ -10192,19 +8684,10 @@ game.import("character", function () { filter: function (event, player) { if (event.targets.length != 1) return false; var card = event.card; - if ( - card.name != "sha" && - (get.type(card, null, false) != "trick" || get.color(card, false) != "black") - ) - return false; + if (card.name != "sha" && (get.type(card, null, false) != "trick" || get.color(card, false) != "black")) return false; if (!player.isPhaseUsing() || player.hasSkill("xinzenhui2")) return false; return game.hasPlayer(function (current) { - return ( - current != player && - current != event.target && - lib.filter.targetEnabled2(card, player, current) && - lib.filter.targetInRange(card, player, current) - ); + return current != player && current != event.target && lib.filter.targetEnabled2(card, player, current) && lib.filter.targetInRange(card, player, current); }); }, direct: true, @@ -10214,21 +8697,12 @@ game.import("character", function () { .chooseTarget(get.prompt2("xinzenhui"), function (card, player, target) { if (player == target) return false; var evt = _status.event.getTrigger(); - return ( - !evt.targets.includes(target) && - lib.filter.targetEnabled2(evt.card, player, target) && - lib.filter.targetInRange(evt.card, player, target) - ); + return !evt.targets.includes(target) && lib.filter.targetEnabled2(evt.card, player, target) && lib.filter.targetInRange(evt.card, player, target); }) .set("ai", function (target) { var trigger = _status.event.getTrigger(); var player = _status.event.player; - return Math.max( - target.countGainableCards(player, "he") - ? get.effect(target, { name: "shunshou_copy2" }, player, player) - : 0, - get.effect(target, trigger.card, player, player) - ); + return Math.max(target.countGainableCards(player, "he") ? get.effect(target, { name: "shunshou_copy2" }, player, player) : 0, get.effect(target, trigger.card, player, player)); }); "step 1"; if (result.bool) { @@ -10241,23 +8715,12 @@ game.import("character", function () { else player .chooseControl() - .set("choiceList", [ - "令" + str + "也成为" + get.translation(trigger.card) + "的目标", - "获得" + - str + - "的一张牌,然后其成为" + - get.translation(trigger.card) + - "的使用者", - ]) + .set("choiceList", ["令" + str + "也成为" + get.translation(trigger.card) + "的目标", "获得" + str + "的一张牌,然后其成为" + get.translation(trigger.card) + "的使用者"]) .set("ai", function () { var trigger = _status.event.getTrigger(); var player = _status.event.player, target = _status.event.getParent().target; - return (target.countGainableCards(player, "he") - ? get.effect(target, { name: "shunshou_copy2" }, player, player) - : 0) > get.effect(target, trigger.card, player, player) - ? 1 - : 0; + return (target.countGainableCards(player, "he") ? get.effect(target, { name: "shunshou_copy2" }, player, player) : 0) > get.effect(target, trigger.card, player, player) ? 1 : 0; }); } else event.finish(); "step 2"; @@ -10277,22 +8740,14 @@ game.import("character", function () { audio: 2, trigger: { player: "damageBegin4" }, filter: function (event, player) { - return ( - player.countCards("he", { type: "equip" }) && - event.source && - event.source.hasSex("male") - ); + return player.countCards("he", { type: "equip" }) && event.source && event.source.hasSex("male"); }, direct: true, content: function () { "step 0"; - var next = player.chooseToDiscard( - "he", - "骄矜:是否弃置一张装备牌防止伤害?", - function (card, player) { - return get.type(card) == "equip"; - } - ); + var next = player.chooseToDiscard("he", "骄矜:是否弃置一张装备牌防止伤害?", function (card, player) { + return get.type(card) == "equip"; + }); next.set("ai", function (card) { var player = _status.event.player; if (player.hp == 1 || _status.event.getTrigger().num > 1) { @@ -10394,8 +8849,7 @@ game.import("character", function () { js = player.next.getCards("j"); if (js.length) { var judge = get.judge(js[0]); - if (judge && (judge(card) + 0.01) * get.attitude(player, player.next) > 0) - return 20 - get.value(card); + if (judge && (judge(card) + 0.01) * get.attitude(player, player.next) > 0) return 20 - get.value(card); } return 0; }); @@ -10403,12 +8857,7 @@ game.import("character", function () { "step 2"; if (result.bool) { player.$throw(get.position(result.cards[0]) == "e" ? result.cards[0] : 1, 1000); - game.log( - player, - "将", - get.position(result.cards[0]) == "e" ? result.cards[0] : "#y一张手牌", - "置于了牌堆顶" - ); + game.log(player, "将", get.position(result.cards[0]) == "e" ? result.cards[0] : "#y一张手牌", "置于了牌堆顶"); player.lose(result.cards, ui.cardPile, "insert"); } else event.finish(); "step 3"; @@ -10436,19 +8885,14 @@ game.import("character", function () { for (var i of cards) { if (get.color(i, false) == "red") num++; } - player - .chooseTarget( - "是否选择一名其他角色获得星卜效果(" + get.cnNumber(num) + "张)?", - lib.filter.notMe - ) - .set("ai", function (target) { - var player = _status.event.player, - num = _status.event.getParent().num; - var att = get.attitude(player, target); - if (num < 3) att *= -1; - if (num == 2 && target.hasJudge("lebu")) att *= -1.4; - return att; - }); + player.chooseTarget("是否选择一名其他角色获得星卜效果(" + get.cnNumber(num) + "张)?", lib.filter.notMe).set("ai", function (target) { + var player = _status.event.player, + num = _status.event.getParent().num; + var att = get.attitude(player, target); + if (num < 3) att *= -1; + if (num == 2 && target.hasJudge("lebu")) att *= -1.4; + return att; + }); if (num == 0) num = 1; event.num = num; "step 2"; @@ -10501,8 +8945,7 @@ game.import("character", function () { return !event.numFixed; }, content: function () { - if (trigger.name == "phaseDraw") - trigger.num += player.countMark("xingbu_effect3") * 2; + if (trigger.name == "phaseDraw") trigger.num += player.countMark("xingbu_effect3") * 2; }, mod: { cardUsable: function (card, player, num) { @@ -10517,15 +8960,12 @@ game.import("character", function () { audio: 2, enable: "phaseUse", filter: function (event, player) { - return ( - (player.getStat("skill").xinshenxing || 0) < player.hp && player.countCards("he") > 1 - ); + return (player.getStat("skill").xinshenxing || 0) < player.hp && player.countCards("he") > 1; }, selectCard: 2, position: "he", check: function (card) { - if (!ui.selected.cards.length || get.color(card) != get.color(ui.selected.cards[0])) - return 6.5 - get.value(card); + if (!ui.selected.cards.length || get.color(card) != get.color(ui.selected.cards[0])) return 6.5 - get.value(card); return 6.5 - get.value(card) - get.value(ui.selected.cards[0]); }, filterCard: true, @@ -10561,16 +9001,9 @@ game.import("character", function () { "step 0"; if (lib.skill.xinbingyi.filterx(trigger, player)) { player - .chooseTarget( - get.prompt("xinbingyi"), - "展示所有手牌,并选择至多" + - get.cnNumber(player.countCards("h")) + - "名角色各摸一张牌", - [0, player.countCards("h")], - function (card, player, target) { - return true; - } - ) + .chooseTarget(get.prompt("xinbingyi"), "展示所有手牌,并选择至多" + get.cnNumber(player.countCards("h")) + "名角色各摸一张牌", [0, player.countCards("h")], function (card, player, target) { + return true; + }) .set("ai", function (target) { return get.attitude(_status.event.player, target); }); @@ -10625,11 +9058,7 @@ game.import("character", function () { player.addToExpansion(result.cards, player, "give").gaintag.add("quanji"); } "step 4"; - if ( - event.count > 0 && - player.hasSkill(event.name) && - !get.is.blocked(event.name, player) - ) { + if (event.count > 0 && player.hasSkill(event.name) && !get.is.blocked(event.name, player)) { player.chooseBool(get.prompt2("requanji")).set("frequentSkill", event.name); } else event.finish(); "step 5"; @@ -10643,19 +9072,8 @@ game.import("character", function () { return num + player.getExpansions("quanji").length; }, aiOrder(player, card, num) { - if ( - num <= 0 || - typeof card !== "object" || - !player.isPhaseUsing() || - !player.hasSkill("zili") || - player.needsToDiscard() - ) - return num; - if ( - player.getExpansions("quanji").length < 3 && - player.getUseValue(card) < Math.min(4, (player.hp * player.hp) / 4) - ) - return 0; + if (num <= 0 || typeof card !== "object" || !player.isPhaseUsing() || !player.hasSkill("zili") || player.needsToDiscard()) return num; + if (player.getExpansions("quanji").length < 3 && player.getUseValue(card) < Math.min(4, (player.hp * player.hp) / 4)) return 0; }, }, onremove: function (player, skill) { @@ -10672,8 +9090,7 @@ game.import("character", function () { if (player.hasSkillTag("jueqing", false, target)) return [1, -2]; if (!target.hasFriend()) return; if (target.hp >= 4) return [0.5, get.tag(card, "damage") * 2]; - if (!target.hasSkill("paiyi") && target.hp > 1) - return [0.5, get.tag(card, "damage") * 1.5]; + if (!target.hasSkill("paiyi") && target.hp > 1) return [0.5, get.tag(card, "damage") * 1.5]; if (target.hp == 3) return [0.5, get.tag(card, "damage") * 1.5]; if (target.hp == 2) return [1, get.tag(card, "damage") * 0.5]; } @@ -10719,11 +9136,7 @@ game.import("character", function () { var val = evt.target.hasSkillTag("noe") ? 6 : 0; if ( evt.target.countCards("e", function (card) { - return ( - evt.player.canEquip(card) && - get.value(card, evt.target) > val && - get.effect(evt.player, card, evt.player, evt.player) > 0 - ); + return evt.player.canEquip(card) && get.value(card, evt.target) > val && get.effect(evt.player, card, evt.player, evt.player) > 0; }) > 0 ) return 2 - evt.addIndex; @@ -10767,8 +9180,7 @@ game.import("character", function () { "step 4"; if (result.bool) { var card = result.links[0]; - if (lib.filter.canBeGained(card, player, target)) - player.gain(card, target, "giveAuto", "bySelf"); + if (lib.filter.canBeGained(card, player, target)) player.gain(card, target, "giveAuto", "bySelf"); else game.log("但", card, "不能被", player, "获得!"); } }, @@ -10793,9 +9205,7 @@ game.import("character", function () { for (var i of event.targets) { list.addArray( i.getHistory("useCard", function (evt) { - return ( - evt.card.name == "shan" && evt.respondTo && evt.respondTo[1] == event.card - ); + return evt.card.name == "shan" && evt.respondTo && evt.respondTo[1] == event.card; }) ); } @@ -10812,12 +9222,10 @@ game.import("character", function () { } event.goto(2); } else - player - .chooseBool(get.prompt("mobilezhongyong"), "获得" + get.translation(event.shas)) - .set("ai", function () { - var evt = _status.event.getParent(); - return get.value(evt.shas, evt.player) > 0; - }); + player.chooseBool(get.prompt("mobilezhongyong"), "获得" + get.translation(event.shas)).set("ai", function () { + var evt = _status.event.getParent(); + return get.value(evt.shas, evt.player) > 0; + }); "step 1"; if (result.bool) { player.logSkill("mobilezhongyong"); @@ -10833,13 +9241,8 @@ game.import("character", function () { return current != player && !trigger.targets.includes(current); }) ) { - if (event.shas.length) - choiceList[0] += ",然后可以令另一名其他角色获得" + get.translation(event.shas); - choiceList.push( - "令另一名其他角色获得" + - shans + - ",然后你于本回合内使用【杀】的次数上限+1且下一张【杀】的伤害值基数+1" - ); + if (event.shas.length) choiceList[0] += ",然后可以令另一名其他角色获得" + get.translation(event.shas); + choiceList.push("令另一名其他角色获得" + shans + ",然后你于本回合内使用【杀】的次数上限+1且下一张【杀】的伤害值基数+1"); } player .chooseControl("cancel2") @@ -10851,11 +9254,7 @@ game.import("character", function () { tri = _status.event.getTrigger(); if ( game.hasPlayer(function (current) { - return ( - current != player && - !tri.targets.includes(current) && - get.attitude(player, current) > 0 - ); + return current != player && !tri.targets.includes(current) && get.attitude(player, current) > 0; }) && player.countCards("hs", function (card) { return get.name(card) == "sha" && player.hasValueTarget(card); @@ -10879,15 +9278,9 @@ game.import("character", function () { }) ) { player - .chooseTarget( - "是否令一名其他角色获得" + get.translation(event.shas) + "?", - function (card, player, target) { - return ( - target != player && - !_status.event.getTrigger().targets.includes(target) - ); - } - ) + .chooseTarget("是否令一名其他角色获得" + get.translation(event.shas) + "?", function (card, player, target) { + return target != player && !_status.event.getTrigger().targets.includes(target); + }) .set("ai", function (target) { var player = _status.event.player, att = get.attitude(player, target); @@ -10906,15 +9299,9 @@ game.import("character", function () { event.finish(); "step 6"; player - .chooseTarget( - "令一名其他角色获得" + get.translation(event.shans), - true, - function (card, player, target) { - return ( - target != player && !_status.event.getTrigger().targets.includes(target) - ); - } - ) + .chooseTarget("令一名其他角色获得" + get.translation(event.shans), true, function (card, player, target) { + return target != player && !_status.event.getTrigger().targets.includes(target); + }) .set("ai", function (target) { var player = _status.event.player, att = get.attitude(player, target); @@ -10937,8 +9324,7 @@ game.import("character", function () { buff: { mod: { cardEnabled2: function (card, player) { - if (get.itemtype(card) == "card" && card.hasGaintag("mobilezhongyong")) - return false; + if (get.itemtype(card) == "card" && card.hasGaintag("mobilezhongyong")) return false; }, cardUsable: function (card, player, num) { if (card.name == "sha") return num + player.countMark("mobilezhongyong_buff"); @@ -10985,12 +9371,7 @@ game.import("character", function () { if ( get.position(card) == "h" && game.hasPlayer(function (current) { - return ( - current != player && - get.attitude(player, current) > 0 && - current.getUseValue(card) > player.getUseValue(card) && - current.getUseValue(card) > player.getUseValue(card) - ); + return current != player && get.attitude(player, current) > 0 && current.getUseValue(card) > player.getUseValue(card) && current.getUseValue(card) > player.getUseValue(card); }) ) return 12; @@ -11010,11 +9391,7 @@ game.import("character", function () { var att = get.attitude(player, target); if (card.name == "du") return -6 * att; if (att > 0) { - if ( - get.position(card) == "h" && - target.getUseValue(card) > player.getUseValue(card) - ) - return 4 * att; + if (get.position(card) == "h" && target.getUseValue(card) > player.getUseValue(card)) return 4 * att; if (get.value(card, target) > get.value(card, player)) return 2 * att; return 1.2 * att; } @@ -11033,20 +9410,12 @@ game.import("character", function () { if (target.countCards("h")) num++; if (target.countCards("e")) num++; if (num > 0) { - var next = target.chooseCard( - "he", - num, - "选择保留每个区域的各一张牌,然后弃置其余的牌。或点取消,令" + - get.translation(player) + - "摸三张牌", - function (card) { - for (var i = 0; i < ui.selected.cards.length; i++) { - if (get.position(ui.selected.cards[i]) == get.position(card)) - return false; - } - return true; + var next = target.chooseCard("he", num, "选择保留每个区域的各一张牌,然后弃置其余的牌。或点取消,令" + get.translation(player) + "摸三张牌", function (card) { + for (var i = 0; i < ui.selected.cards.length; i++) { + if (get.position(ui.selected.cards[i]) == get.position(card)) return false; } - ); + return true; + }); next.set("complexCard", true); next.set("goon", get.attitude(target, player) >= 0); next.set("maxNum", num); @@ -11096,8 +9465,7 @@ game.import("character", function () { if (result.control != "cancel2") list.push(result.index); var num = list.randomGet(); event.num = num; - var str = - get.translation(player) + "抽取的命运签为:" + lib.skill["tiansuan2_" + num].name; + var str = get.translation(player) + "抽取的命运签为:" + lib.skill["tiansuan2_" + num].name; game.log(player, "抽取出了", "#g" + lib.skill["tiansuan2_" + num].name); event.dialog = ui.create.dialog(str); event.videoId = lib.status.videoId++; @@ -11109,9 +9477,7 @@ game.import("character", function () { "step 2"; event.dialog.close(); game.broadcast("closeDialog", event.videoId); - player - .chooseTarget(true, "令一名角色获得“" + lib.skill["tiansuan2_" + num].name + "”") - .set("ai", lib.skill["tiansuan2_" + num].aiCheck); + player.chooseTarget(true, "令一名角色获得“" + lib.skill["tiansuan2_" + num].name + "”").set("ai", lib.skill["tiansuan2_" + num].aiCheck); "step 3"; if (result.bool) { var target = result.targets[0]; @@ -11138,8 +9504,7 @@ game.import("character", function () { tiansuan2: { charlotte: true, onremove: function (player, skill) { - if (player.storage.tiansuan2) - player.storage.tiansuan2.removeSkill(player.storage.tiansuan3); + if (player.storage.tiansuan2) player.storage.tiansuan2.removeSkill(player.storage.tiansuan3); delete player.storage.tiansuan2; delete player.storage.tiansuan3; }, @@ -11171,8 +9536,7 @@ game.import("character", function () { ai: { effect: { target: function (card, player, target, current) { - if (get.tag(card, "damage") && !player.hasSkillTag("jueqing", false, target)) - return "zerotarget"; + if (get.tag(card, "damage") && !player.hasSkillTag("jueqing", false, target)) return "zerotarget"; }, }, }, @@ -11215,13 +9579,7 @@ game.import("character", function () { }, effect: { target: function (card, player, target, current) { - if ( - target && - target.hp > 1 && - get.tag(card, "damage") && - !player.hasSkillTag("jueqing", false, target) - ) - return 0.8; + if (target && target.hp > 1 && get.tag(card, "damage") && !player.hasSkillTag("jueqing", false, target)) return 0.8; }, }, }, @@ -11300,12 +9658,7 @@ game.import("character", function () { ai: { effect: { target: function (card, player, target, current) { - if ( - get.tag(card, "damage") && - !player.hasSkillTag("jueqing", false, target) && - current < 0 - ) - return 1.3; + if (get.tag(card, "damage") && !player.hasSkillTag("jueqing", false, target) && current < 0) return 1.3; }, }, }, @@ -11339,12 +9692,7 @@ game.import("character", function () { ai: { effect: { target: function (card, player, target, current) { - if ( - get.tag(card, "damage") && - !player.hasSkillTag("jueqing", false, target) && - current < 0 - ) - return 1.3; + if (get.tag(card, "damage") && !player.hasSkillTag("jueqing", false, target) && current < 0) return 1.3; }, }, }, @@ -11366,8 +9714,7 @@ game.import("character", function () { player.chooseToCompare(trigger.target).clear = false; "step 1"; if (result.bool) { - if (trigger.target.countGainableCards(player, "he")) - player.gainPlayerCard(trigger.target, true, "he"); + if (trigger.target.countGainableCards(player, "he")) player.gainPlayerCard(trigger.target, true, "he"); ui.clear(); } else { var card1 = result.player; @@ -11395,11 +9742,7 @@ game.import("character", function () { .set("targetRequired", true) .set("complexSelect", true) .set("filterTarget", function (card, player, target) { - if ( - target != _status.event.sourcex && - !ui.selected.targets.includes(_status.event.sourcex) - ) - return false; + if (target != _status.event.sourcex && !ui.selected.targets.includes(_status.event.sourcex)) return false; return lib.filter.filterTarget.apply(this, arguments); }) .set("sourcex", player); @@ -11500,13 +9843,9 @@ game.import("character", function () { if (max < 2) player.addMark("yufeng", 1, false); event.score = result.score; player - .chooseTarget( - "请选择【御风】的目标", - [1, result.score], - function (card, player, target) { - return target != player && !target.hasSkill("yufeng2"); - } - ) + .chooseTarget("请选择【御风】的目标", [1, result.score], function (card, player, target) { + return target != player && !target.hasSkill("yufeng2"); + }) .set("ai", function (target) { var player = _status.event.player; var att = -get.attitude(player, target), @@ -11523,8 +9862,7 @@ game.import("character", function () { player.line(result.targets, "green"); game.log(result.targets, "获得了", "#y“御风”", "效果"); for (var i of result.targets) i.addSkill("yufeng2"); - if (event.score > result.targets.length) - player.draw(event.score - result.targets.length); + if (event.score > result.targets.length) player.draw(event.score - result.targets.length); } else player.draw(event.score); }, $playFlappyBird: function (maxScore, title) { @@ -11611,11 +9949,7 @@ game.import("character", function () { for (let i = 0; i < this.pipes.length; i++) { let p = this.pipes[i]; ctx.drawImage(this.top.sprite, p.x, p.y); - ctx.drawImage( - this.bot.sprite, - p.x, - p.y + parseFloat(this.top.sprite.height) + this.gap - ); + ctx.drawImage(this.bot.sprite, p.x, p.y + parseFloat(this.top.sprite.height) + this.gap); } }, update: function () { @@ -11628,7 +9962,7 @@ game.import("character", function () { y: -210 * Math.min(Math.random() * 0.8 + 1.2, 1.8), }); } - this.pipes.forEach((pipe) => { + this.pipes.forEach(pipe => { pipe.x -= dx * deltaTime; }); if (this.pipes.length && this.pipes[0].x < -this.top.sprite.width) { @@ -11638,12 +9972,7 @@ game.import("character", function () { }, }; const bird = { - animations: [ - { sprite: new Image() }, - { sprite: new Image() }, - { sprite: new Image() }, - { sprite: new Image() }, - ], + animations: [{ sprite: new Image() }, { sprite: new Image() }, { sprite: new Image() }, { sprite: new Image() }], rotatation: 0, x: 50, y: 100, @@ -11777,8 +10106,7 @@ game.import("character", function () { this.y = parseFloat(canvas.height - this.getReady.sprite.height) / 2; this.x = parseFloat(canvas.width - this.getReady.sprite.width) / 2; this.tx = parseFloat(canvas.width - this.tap[0].sprite.width) / 2; - this.ty = - this.y + this.getReady.sprite.height - this.tap[0].sprite.height; + this.ty = this.y + this.getReady.sprite.height - this.tap[0].sprite.height; ctx.drawImage(this.getReady.sprite, this.x, this.y); ctx.drawImage(this.tap[this.frame].sprite, this.tx, this.ty); break; @@ -11787,14 +10115,8 @@ game.import("character", function () { this.y = parseFloat(canvas.height - this.gameOver.sprite.height) / 2; this.x = parseFloat(canvas.width - this.gameOver.sprite.width) / 2; this.tx = parseFloat(canvas.width - this.tap[0].sprite.width) / 2; - this.ty = - this.y + this.gameOver.sprite.height - this.tap[0].sprite.height; - ctx.drawImage( - (state.curr == state.gameOver ? this.gameOver : this.gameClear) - .sprite, - this.x, - this.y - ); + this.ty = this.y + this.gameOver.sprite.height - this.tap[0].sprite.height; + ctx.drawImage((state.curr == state.gameOver ? this.gameOver : this.gameClear).sprite, this.x, this.y); } }, update: function () { @@ -11828,7 +10150,7 @@ game.import("character", function () { SFX.hit.src = lib.assetURL + "audio/effect/flappybird_hit.wav"; SFX.die.src = lib.assetURL + "audio/effect/flappybird_die.wav"; - const gameLoop = (domHighResTimeStamp) => { + const gameLoop = domHighResTimeStamp => { if (frames < 0) return; deltaTime = domHighResTimeStamp - previousDOMHighResTimeStamp; previousDOMHighResTimeStamp = domHighResTimeStamp; @@ -11878,10 +10200,7 @@ game.import("character", function () { game.resume(); _status.imchoosing = false; frames = -1; - document.removeEventListener( - lib.config.touchscreen ? "touchstart" : "mousedown", - click - ); + document.removeEventListener(lib.config.touchscreen ? "touchstart" : "mousedown", click); }; dialog.open(); @@ -11936,9 +10255,7 @@ game.import("character", function () { event.settleed = false; event.score = 0; event.dialog = ui.create.dialog("forcebutton", "hidden"); - event.dialog.textPrompt = event.dialog.add( - '
    准备好了吗?准备好了的话就点击屏幕开始吧!
    ' - ); + event.dialog.textPrompt = event.dialog.add('
    准备好了吗?准备好了的话就点击屏幕开始吧!
    '); var max = Math.max(2, 1 + game.me.countMark("yufeng")); event.dialog.textPrompt.style["z-index"] = 10; event.switchToAuto = function () { @@ -11968,8 +10285,7 @@ game.import("character", function () { var start = false; var bird = ui.create.div(""); - bird.style["background-image"] = - "linear-gradient(rgba(240, 235, 3, 1), rgba(230, 225, 5, 1))"; + bird.style["background-image"] = "linear-gradient(rgba(240, 235, 3, 1), rgba(230, 225, 5, 1))"; bird.style["border-radius"] = "3px"; var pipes = []; bird.style.position = "absolute"; @@ -11978,8 +10294,7 @@ game.import("character", function () { bird.style.left = Math.ceil(width / 3) + "px"; bird.style.top = (top / 100) * height + "px"; bird.updatePosition = function () { - bird.style.transform = - "translateY(" + ((top / 100) * height - bird.offsetTop) + "px)"; + bird.style.transform = "translateY(" + ((top / 100) * height - bird.offsetTop) + "px)"; }; event.dialog.appendChild(bird); var isDead = function () { @@ -12005,8 +10320,7 @@ game.import("character", function () { var fly = function () { if (!start) { start = true; - event.dialog.textPrompt.innerHTML = - '
    当前分数:' + event.score + "
    "; + event.dialog.textPrompt.innerHTML = '
    当前分数:' + event.score + "
    "; speed = -4; event.fly = setInterval(function () { top += speed; @@ -12027,8 +10341,7 @@ game.import("character", function () { var num = get.rand(5, 55); var pipe1 = ui.create.div(""); - pipe1.style["background-image"] = - "linear-gradient(rgba(57, 133, 4, 1), rgba(60, 135, 6, 1))"; + pipe1.style["background-image"] = "linear-gradient(rgba(57, 133, 4, 1), rgba(60, 135, 6, 1))"; pipe1.style["border-radius"] = "3px"; pipe1.style.position = "absolute"; pipe1.height1 = num; @@ -12041,13 +10354,11 @@ game.import("character", function () { pipe1.style.top = "0px"; var pipe2 = ui.create.div(""); - pipe2.style["background-image"] = - "linear-gradient(rgba(57, 133, 4, 1), rgba(60, 135, 6, 1))"; + pipe2.style["background-image"] = "linear-gradient(rgba(57, 133, 4, 1), rgba(60, 135, 6, 1))"; pipe2.style["border-radius"] = "3px"; pipe1.pipe2 = pipe2; pipe2.style.position = "absolute"; - pipe2.style.height = - Math.ceil(((100 - pipe1.height2) * height) / 100) + "px"; + pipe2.style.height = Math.ceil(((100 - pipe1.height2) * height) / 100) + "px"; pipe2.style.width = width / 10 + "px"; pipe2.style.left = (pipe1.left * width) / 100 + "px"; pipe2.style.top = Math.ceil((pipe1.height2 * height) / 100) + "px"; @@ -12055,21 +10366,12 @@ game.import("character", function () { event.dialog.appendChild(pipe1); event.dialog.appendChild(pipe2); pipe1.updateLeft = function () { - this.style.transform = - "translateX(" + - ((this.left / 100) * width - this.offsetLeft) + - "px)"; - this.pipe2.style.transform = - "translateX(" + - ((this.left / 100) * width - this.pipe2.offsetLeft) + - "px)"; + this.style.transform = "translateX(" + ((this.left / 100) * width - this.offsetLeft) + "px)"; + this.pipe2.style.transform = "translateX(" + ((this.left / 100) * width - this.pipe2.offsetLeft) + "px)"; if (this.left < 25 && !this.score) { this.score = true; event.score++; - event.dialog.textPrompt.innerHTML = - '
    当前分数:' + - event.score + - "
    "; + event.dialog.textPrompt.innerHTML = '
    当前分数:' + event.score + "
    "; if (event.score >= max) { event.settle(); } @@ -12091,10 +10393,7 @@ game.import("character", function () { event.settle = function () { clearInterval(event.fly); clearInterval(event.addPipe); - document.removeEventListener( - lib.config.touchscreen ? "touchstart" : "mousedown", - fly - ); + document.removeEventListener(lib.config.touchscreen ? "touchstart" : "mousedown", fly); setTimeout(function () { event.switchToAuto(); }, 1000); @@ -12139,13 +10438,9 @@ game.import("character", function () { if (max < 2) player.addMark("yufeng", 1, false); event.score = result.score; player - .chooseTarget( - "请选择【御风】的目标", - [1, result.score], - function (card, player, target) { - return target != player && !target.hasSkill("yufeng2"); - } - ) + .chooseTarget("请选择【御风】的目标", [1, result.score], function (card, player, target) { + return target != player && !target.hasSkill("yufeng2"); + }) .set("ai", function (target) { var player = _status.event.player; var att = -get.attitude(player, target), @@ -12162,8 +10457,7 @@ game.import("character", function () { player.line(result.targets, "green"); game.log(result.targets, "获得了", "#y“御风”", "效果"); for (var i of result.targets) i.addSkill("yufeng2"); - if (event.score > result.targets.length) - player.draw(event.score - result.targets.length); + if (event.score > result.targets.length) player.draw(event.score - result.targets.length); } else player.draw(event.score); }, ai: { @@ -12246,8 +10540,7 @@ game.import("character", function () { if (!event.card) event.finish(); else target.gain(event.card, "gain2"); "step 2"; - if (target.getCards("h").includes(card) && get.name(card, target) == "taipingyaoshu") - target.chooseUseTarget(card, "nopopup", true); + if (target.getCards("h").includes(card) && get.name(card, target) == "taipingyaoshu") target.chooseUseTarget(card, "nopopup", true); }, }, //界伏寿 @@ -12268,33 +10561,20 @@ game.import("character", function () { }, logTarget: "player", filter: function (event, player) { - return ( - !player.hasSkill("xinzhuikong2") && - player.hp <= event.player.hp && - player.canCompare(event.player) - ); + return !player.hasSkill("xinzhuikong2") && player.hp <= event.player.hp && player.canCompare(event.player); }, content: function () { "step 0"; player.addTempSkill("xinzhuikong2", "roundStart"); - player - .chooseToCompare(trigger.player) - .set( - "small", - player.hp > 1 && - get.effect(player, { name: "sha" }, trigger.player, player) > 0 && - Math.random() < 0.9 - ); + player.chooseToCompare(trigger.player).set("small", player.hp > 1 && get.effect(player, { name: "sha" }, trigger.player, player) > 0 && Math.random() < 0.9); "step 1"; if (result.bool) { trigger.player.addTempSkill("zishou2"); event.finish(); - } else if (result.target && get.position(result.target) == "d") - player.gain(result.target, "gain2", "log"); + } else if (result.target && get.position(result.target) == "d") player.gain(result.target, "gain2", "log"); "step 2"; var card = { name: "sha", isCard: true }; - if (trigger.player.canUse(card, player, false)) - trigger.player.useCard(card, player, false); + if (trigger.player.canUse(card, player, false)) trigger.player.useCard(card, player, false); }, }, xinzhuikong2: { charlotte: true }, @@ -12306,11 +10586,7 @@ game.import("character", function () { return ( event.card.name == "sha" && game.hasPlayer(function (current) { - return ( - current != player && - !event.targets.includes(current) && - lib.filter.targetEnabled(event.card, event.player, current) - ); + return current != player && !event.targets.includes(current) && lib.filter.targetEnabled(event.card, event.player, current); }) ); }, @@ -12319,11 +10595,7 @@ game.import("character", function () { player .chooseTarget(get.prompt2("xinqiuyuan"), function (card, player, target) { var evt = _status.event.getTrigger(); - return ( - target != player && - !evt.targets.includes(target) && - lib.filter.targetEnabled(evt.card, evt.player, target) - ); + return target != player && !evt.targets.includes(target) && lib.filter.targetEnabled(evt.card, evt.player, target); }) .set("ai", function (target) { var trigger = _status.event.getTrigger(); @@ -12342,9 +10614,7 @@ game.import("character", function () { return name != "sha" && get.type(name) == "basic"; }, "h", - "交给" + - get.translation(player) + - "一张不为【杀】的基本牌,或成为此杀的额外目标" + "交给" + get.translation(player) + "一张不为【杀】的基本牌,或成为此杀的额外目标" ) .set("ai", function (card) { return get.attitude(target, _status.event.sourcex) >= 0 ? 1 : -1; @@ -12373,23 +10643,7 @@ game.import("character", function () { if (get.attitude(player, target) <= 0) { for (var i = 0; i < players.length; i++) { var target2 = players[i]; - if ( - player != target2 && - target != target2 && - player.canUse(card, target2, false) && - get.effect( - target2, - { name: "shacopy", nature: card.nature, suit: card.suit }, - player, - target - ) > 0 && - get.effect( - target2, - { name: "shacopy", nature: card.nature, suit: card.suit }, - player, - player - ) < 0 - ) { + if (player != target2 && target != target2 && player.canUse(card, target2, false) && get.effect(target2, { name: "shacopy", nature: card.nature, suit: card.suit }, player, target) > 0 && get.effect(target2, { name: "shacopy", nature: card.nature, suit: card.suit }, player, player) < 0) { if (target.hp == target.maxHp) return 0.3; return 0.6; } @@ -12397,17 +10651,7 @@ game.import("character", function () { } else { for (var i = 0; i < players.length; i++) { var target2 = players[i]; - if ( - player != target2 && - target != target2 && - player.canUse(card, target2, false) && - get.effect( - target2, - { name: "shacopy", nature: card.nature, suit: card.suit }, - player, - player - ) > 0 - ) { + if (player != target2 && target != target2 && player.canUse(card, target2, false) && get.effect(target2, { name: "shacopy", nature: card.nature, suit: card.suit }, player, player) > 0) { if (player.canUse(card, target2)) return; if (target.hp == target.maxHp) return [0, 1]; return [0, 0]; @@ -12427,26 +10671,19 @@ game.import("character", function () { var source = event.source; if (!source) return false; var cards = source.getEquips(1); - return cards.some((card) => lib.filter.canBeGained(card, player, source)); + return cards.some(card => lib.filter.canBeGained(card, player, source)); }, prompt2: function (event, player) { var source = event.source; - var cards = source - .getEquips(1) - .filter((card) => lib.filter.canBeGained(card, player, source)); + var cards = source.getEquips(1).filter(card => lib.filter.canBeGained(card, player, source)); return "获得其装备区中的" + get.translation(cards); }, check: function (event, player) { - return ( - (get.attitude(player, event.source) + 0.1) * - get.value(event.source.getEquip(1), event.source) - ); + return (get.attitude(player, event.source) + 0.1) * get.value(event.source.getEquip(1), event.source); }, content: function () { var source = trigger.source; - var cards = source - .getEquips(1) - .filter((card) => lib.filter.canBeGained(card, player, source)); + var cards = source.getEquips(1).filter(card => lib.filter.canBeGained(card, player, source)); player.gain(cards, source, "give", "bySelf"); }, }, @@ -12465,17 +10702,14 @@ game.import("character", function () { player .chooseControl() .set("prompt", "暗箭:请选择一项") - .set("choiceList", [ - "令" + target + "不能响应" + card, - "令" + card + "对" + target + "的伤害值基数+1", - ]) + .set("choiceList", ["令" + target + "不能响应" + card, "令" + card + "对" + target + "的伤害值基数+1"]) .set("ai", function () { var target = _status.event.getTrigger().target; var player = _status.event.player; var num = target.mayHaveShan( player, "use", - target.getCards("h", (i) => { + target.getCards("h", i => { return i.hasGaintag("sha_notshan"); }) ) @@ -12500,15 +10734,7 @@ game.import("character", function () { ai: { directHit_ai: true, skillTagFilter: function (player, tag, arg) { - if ( - !arg || - !arg.card || - !arg.target || - arg.card.name != "sha" || - arg.target.inRange(player) || - get.attitude(player, arg.target) > 0 - ) - return false; + if (!arg || !arg.card || !arg.target || arg.card.name != "sha" || arg.target.inRange(player) || get.attitude(player, arg.target) > 0) return false; }, }, }, @@ -12524,8 +10750,7 @@ game.import("character", function () { var evtx = evt.getParent(); if (evtx.name != "orderingDiscard") return false; var evt2 = evtx.relatedEvent || evtx.getParent(); - if (evt2 && (evt2.name == "useCard" || evt2.name == "respond")) - num += evt.cards.length; + if (evt2 && (evt2.name == "useCard" || evt2.name == "respond")) num += evt.cards.length; }); return num >= player.hp; }, @@ -12565,8 +10790,7 @@ game.import("character", function () { var evtx = evt.getParent(); if (evtx.name != "orderingDiscard") return false; var evt2 = evtx.relatedEvent || evtx.getParent(); - if (evt2 && (evt2.name == "useCard" || evt2.name == "respond")) - num += evt.cards.length; + if (evt2 && (evt2.name == "useCard" || evt2.name == "respond")) num += evt.cards.length; }); player.storage.mobilejingce = num; player.markSkill("mobilejingce"); @@ -12598,11 +10822,7 @@ game.import("character", function () { player .chooseControl() .set("prompt", "讨灭:请选择一项") - .set("choiceList", [ - "令即将对" + target + "造成的伤害+1", - "获得" + target + "的一张牌,并可将其交给另一名其他角色", - "依次执行以上所有选项,并移去" + target + "的“讨灭”标记", - ]) + .set("choiceList", ["令即将对" + target + "造成的伤害+1", "获得" + target + "的一张牌,并可将其交给另一名其他角色", "依次执行以上所有选项,并移去" + target + "的“讨灭”标记"]) .set("ai", function () { var evt = _status.event.getTrigger(); var player = _status.event.player; @@ -12638,23 +10858,13 @@ game.import("character", function () { ) { event.card = card; player - .chooseTarget( - "是否将" + get.translation(card) + "交给一名其他角色?", - function (card, player, target) { - return target != player && target != _status.event.getTrigger().player; - } - ) + .chooseTarget("是否将" + get.translation(card) + "交给一名其他角色?", function (card, player, target) { + return target != player && target != _status.event.getTrigger().player; + }) .set("ai", function (target) { var player = _status.event.player; var card = _status.event.getParent().card; - if ( - target.hasSkillTag("nogain") || - !player.needsToDiscard() || - (get.tag(card, "damage") && - player.hasValueTarget(card, null, false) && - get.effect(_status.event.getTrigger().player, card, null, false) > 0) - ) - return 0; + if (target.hasSkillTag("nogain") || !player.needsToDiscard() || (get.tag(card, "damage") && player.hasValueTarget(card, null, false) && get.effect(_status.event.getTrigger().player, card, null, false) > 0)) return 0; return get.attitude(player, target) / (1 + target.countCards("h")); }); } else event.finish(); @@ -12815,12 +11025,7 @@ game.import("character", function () { forced: true, popup: false, filter: function (event, player) { - return ( - event.card && - event.card.name == "sha" && - event.player.isIn() && - event.getParent(2).liyong2 == true - ); + return event.card && event.card.name == "sha" && event.player.isIn() && event.getParent(2).liyong2 == true; }, content: function () { player.loseHp(); @@ -12872,10 +11077,7 @@ game.import("character", function () { return get.name(card) == "sha" && lib.filter.filterCard.apply(this, arguments); }, filterTarget: function (card, player, target) { - return ( - target == _status.event.preTarget && - lib.filter.targetEnabled.apply(this, arguments) - ); + return target == _status.event.preTarget && lib.filter.targetEnabled.apply(this, arguments); }, addCount: false, }); @@ -12938,12 +11140,7 @@ game.import("character", function () { var player = _status.event.player; if ( game.hasPlayer(function (current) { - return ( - current != player && - get.attitude(player, current) < 0 && - get.damageEffect(current, player, player) > 0 && - current.getEquip(1) - ); + return current != player && get.attitude(player, current) < 0 && get.damageEffect(current, player, player) > 0 && current.getEquip(1); }) ) return 8 - get.value(card); @@ -12954,11 +11151,7 @@ game.import("character", function () { player.gainPlayerCard(target, "e", true).set("ai", function (button) { var card = button.link; var player = _status.event.player; - if ( - get.subtype(card) == "equip1" && - get.damageEffect(_status.event.target, player, player) > 0 - ) - return 6 + get.value(card); + if (get.subtype(card) == "equip1" && get.damageEffect(_status.event.target, player, player) > 0) return 6 + get.value(card); return get.value(card); }); "step 1"; @@ -12968,8 +11161,7 @@ game.import("character", function () { } var card = result.cards[0]; event.card = card; - if (player.getCards("h").includes(card) && get.type(card) == "equip") - player.chooseUseTarget(card, true).nopopup = true; + if (player.getCards("h").includes(card) && get.type(card) == "equip") player.chooseUseTarget(card, true).nopopup = true; "step 2"; if (get.subtype(card, false) == "equip1") target.damage(); }, @@ -12977,8 +11169,7 @@ game.import("character", function () { order: 6, result: { target: function (player, current) { - if (get.damageEffect(current, player, player) > 0 && current.getEquip(1)) - return -1.5; + if (get.damageEffect(current, player, player) > 0 && current.getEquip(1)) return -1.5; return -1; }, }, @@ -13019,14 +11210,10 @@ game.import("character", function () { }, result: { target: function (player, target) { - if (player.hasUnknown() && target != player.next && target != player.previous) - return 0; + if (player.hasUnknown() && target != player.next && target != player.previous) return 0; var distance = Math.pow(get.distance(player, target, "absolute"), 2); if (!ui.selected.targets.length) return distance; - var distance2 = Math.pow( - get.distance(player, ui.selected.targets[0], "absolute"), - 2 - ); + var distance2 = Math.pow(get.distance(player, ui.selected.targets[0], "absolute"), 2); return Math.min(0, distance - distance2); }, }, @@ -13049,15 +11236,13 @@ game.import("character", function () { "step 0"; if (!player.storage.jinglve4) player.storage.jinglve4 = []; player.storage.jinglve4.add(target); - player - .chooseButton(["选择一张牌作为「死士」", target.getCards("h")], true) - .set("ai", function (button) { - var target = _status.event.getParent().target; - var card = button.link; - var val = target.getUseValue(card); - if (val > 0) return val; - return get.value(card); - }); + player.chooseButton(["选择一张牌作为「死士」", target.getCards("h")], true).set("ai", function (button) { + var target = _status.event.getParent().target; + var card = button.link; + var val = target.getUseValue(card); + if (val > 0) return val; + return get.value(card); + }); "step 1"; if (result.bool) { player.storage.jinglve2 = target; @@ -13095,12 +11280,7 @@ game.import("character", function () { charlotte: true, filter: function (event, player) { if (event.name != "gain" && event.player != player.storage.jinglve2) return false; - return ( - event.name == "die" || - (event.cards.includes(player.storage.jinglve3) && - (event.name == "gain" || - (event.position != ui.ordering && event.position != ui.discardPile))) - ); + return event.name == "die" || (event.cards.includes(player.storage.jinglve3) && (event.name == "gain" || (event.position != ui.ordering && event.position != ui.discardPile))); }, content: function () { player.removeSkill("jinglve2"); @@ -13129,8 +11309,7 @@ game.import("character", function () { } else { if (trigger.name == "phase") { player.gain(player.storage.jinglve3, trigger.player, "giveAuto", "bySelf"); - } else if (get.position(player.storage.jinglve3, true) == "d") - player.gain(player.storage.jinglve3, "gain2"); + } else if (get.position(player.storage.jinglve3, true) == "d") player.gain(player.storage.jinglve3, "gain2"); } player.removeSkill("jinglve2"); }, @@ -13151,8 +11330,7 @@ game.import("character", function () { player.loseMaxHp(); player.chooseTarget(true, "选择【擅立】的目标").set("ai", function (target) { var att = get.attitude(_status.event.player, target); - if (target == game.me || (target.isUnderControl() && target.isOnline())) - return 2 * att; + if (target == game.me || (target.isUnderControl() && target.isOnline())) return 2 * att; return att; }); "step 1"; @@ -13166,8 +11344,7 @@ game.import("character", function () { else { var list = []; for (var i in lib.character) { - if (lib.filter.characterDisabled2(i) || lib.filter.characterDisabled(i)) - continue; + if (lib.filter.characterDisabled2(i) || lib.filter.characterDisabled(i)) continue; list.push(i); } } @@ -13175,8 +11352,7 @@ game.import("character", function () { list.remove(current.name); list.remove(current.name1); list.remove(current.name2); - if (current.storage.rehuashen && current.storage.rehuashen.character) - list.removeArray(current.storage.rehuashen.character); + if (current.storage.rehuashen && current.storage.rehuashen.character) list.removeArray(current.storage.rehuashen.character); }); _status.characterlist = list; } @@ -13188,8 +11364,7 @@ game.import("character", function () { var character = lib.character[i]; if (character && character[3]) { for (var j of character[3]) { - if (skills.includes(j) || j == "yuri_wangxi" || target.hasSkill("j")) - continue; + if (skills.includes(j) || j == "yuri_wangxi" || target.hasSkill("j")) continue; var info = get.info(j); if (info && info.zhuSkill) { skills.add(j); @@ -13206,20 +11381,13 @@ game.import("character", function () { } event.chara = chara; event.skills = skills; - player - .chooseControl(skills) - .set("dialog", [ - "选择令" + get.translation(target) + "获得一个技能", - [chara, "character"], - ]); + player.chooseControl(skills).set("dialog", ["选择令" + get.translation(target) + "获得一个技能", [chara, "character"]]); "step 2"; target.addSkills(result.control); - target.setAvatarQueue(target.name1 || target.name, [ - event.chara[event.skills.indexOf(result.control)], - ]); + target.setAvatarQueue(target.name1 || target.name, [event.chara[event.skills.indexOf(result.control)]]); }, ai: { - combo: "baiyi" + combo: "baiyi", }, }, hongyi: { @@ -13321,17 +11489,16 @@ game.import("character", function () { logTarget: "player", skillAnimation: true, animationColor: "thunder", - prompt2: - "(限定技)失去技能【劝封】,并获得该角色武将牌上的所有技能,然后加1点体力上限并回复1点体力", + prompt2: "(限定技)失去技能【劝封】,并获得该角色武将牌上的所有技能,然后加1点体力上限并回复1点体力", check: (event, player) => { if ( event.player .getStockSkills("仲村由理", "天下第一") - .filter((skill) => { + .filter(skill => { let info = get.info(skill); return info && !info.hiddenSkill && !info.zhuSkill && !info.charlotte; }) - .some((i) => { + .some(i => { let info = get.info(i); if (info && info.ai) return info.ai.neg || info.ai.halfneg; }) @@ -13342,12 +11509,10 @@ game.import("character", function () { content: function () { player.awakenSkill("requanfeng"); player.removeSkills("hongyi"); - var skills = trigger.player - .getStockSkills("仲村由理", "天下第一") - .filter(function (skill) { - var info = get.info(skill); - return info && !info.hiddenSkill && !info.zhuSkill && !info.charlotte; - }); + var skills = trigger.player.getStockSkills("仲村由理", "天下第一").filter(function (skill) { + var info = get.info(skill); + return info && !info.hiddenSkill && !info.zhuSkill && !info.charlotte; + }); if (skills.length) { player.addSkills(skills); game.broadcastAll(function (list) { @@ -13371,15 +11536,7 @@ game.import("character", function () { return ( event.player.getStockSkills("仲村由理", "天下第一").filter(function (skill) { var info = get.info(skill); - return ( - info && - !info.juexingji && - !info.hiddenSkill && - !info.zhuSkill && - !info.charlotte && - !info.limited && - !info.dutySkill - ); + return info && !info.juexingji && !info.hiddenSkill && !info.zhuSkill && !info.charlotte && !info.limited && !info.dutySkill; }).length > 0 ); }, @@ -13393,15 +11550,7 @@ game.import("character", function () { player.awakenSkill("quanfeng"); var list = trigger.player.getStockSkills("仲村由理", "天下第一").filter(function (skill) { var info = get.info(skill); - return ( - info && - !info.juexingji && - !info.hiddenSkill && - !info.zhuSkill && - !info.charlotte && - !info.limited && - !info.dutySkill - ); + return info && !info.juexingji && !info.hiddenSkill && !info.zhuSkill && !info.charlotte && !info.limited && !info.dutySkill; }); if (list.length == 1) event._result = { control: list[0] }; else @@ -13449,8 +11598,7 @@ game.import("character", function () { event.num = num; if (num == 0) { if (player.hasSkill("mobiledanshou")) event._result = { bool: true }; - else - player.chooseBool("是否发动【胆守】摸一张牌?", lib.translate.mobiledanshou_info); + else player.chooseBool("是否发动【胆守】摸一张牌?", lib.translate.mobiledanshou_info); } else event.goto(2); "step 1"; if (result.bool) { @@ -13460,12 +11608,7 @@ game.import("character", function () { event.finish(); "step 2"; player - .chooseToDiscard( - num, - get.prompt("mobiledanshou", trigger.player), - "弃置" + get.translation(num) + "张牌并对其造成1点伤害", - "he" - ) + .chooseToDiscard(num, get.prompt("mobiledanshou", trigger.player), "弃置" + get.translation(num) + "张牌并对其造成1点伤害", "he") .set("ai", function (card) { if (!_status.event.goon) return 0; var num = _status.event.getParent().num; @@ -13473,10 +11616,7 @@ game.import("character", function () { if (num == 2) return 6.5 - get.value(card); return 5 - get.value(card); }) - .set("goon", get.damageEffect(trigger.player, player, player) > 0).logSkill = [ - "mobiledanshou", - trigger.player, - ]; + .set("goon", get.damageEffect(trigger.player, player, player) > 0).logSkill = ["mobiledanshou", trigger.player]; "step 3"; if (result.bool) { player.addExpose(0.2); @@ -13509,9 +11649,7 @@ game.import("character", function () { event.goto(5); } else player.discardPlayerCard("he", target, "visible", true); "step 2"; - player - .chooseBool("是否令" + get.translation(target) + "获得一张【杀】?") - .set("choice", get.attitude(player, target) > 0); + player.chooseBool("是否令" + get.translation(target) + "获得一张【杀】?").set("choice", get.attitude(player, target) > 0); "step 3"; if (result.bool) { var card = get.cardPile2(function (card) { @@ -13667,10 +11805,7 @@ game.import("character", function () { if (trigger.num1 > trigger.num2 && get.position(trigger.card2, true) == "o") { str += "/拼点牌"; cards.push(trigger.card2); - } else if ( - trigger.num1 < trigger.num2 && - get.position(trigger.card1, true) == "o" - ) { + } else if (trigger.num1 < trigger.num2 && get.position(trigger.card1, true) == "o") { str += "/拼点牌"; cards.push(trigger.card1); } @@ -13678,10 +11813,7 @@ game.import("character", function () { if (trigger.num1 < trigger.num2 && get.position(trigger.card1, true) == "o") { str += "/拼点牌"; cards.push(trigger.card1); - } else if ( - trigger.num1 > trigger.num2 && - get.position(trigger.card2, true) == "o" - ) { + } else if (trigger.num1 > trigger.num2 && get.position(trigger.card2, true) == "o") { str += "/拼点牌"; cards.push(trigger.card2); } @@ -13689,9 +11821,7 @@ game.import("character", function () { } str += ""; event.cards = cards; - player - .chooseButton(["纵适:选择要获得的牌", str, cards], true) - .set("ai", get.buttonValue); + player.chooseButton(["纵适:选择要获得的牌", str, cards], true).set("ai", get.buttonValue); "step 1"; if (result.bool) { var draw = result.links[0] == cards[0]; @@ -13720,8 +11850,7 @@ game.import("character", function () { .set("filterButton", function (button) { var cards = _status.event.cards; for (var i = 0; i < cards.length; i++) { - if (button.link != cards[i] && get.suit(cards[i]) == get.suit(button.link)) - return false; + if (button.link != cards[i] && get.suit(cards[i]) == get.suit(button.link)) return false; } return true; }) @@ -13877,17 +12006,14 @@ game.import("character", function () { player.removeSkill("xuewei2"); trigger.cancel(); player.damage(trigger.num, trigger.source || "nosource"); - if (trigger.source && trigger.source.isIn()) - trigger.source.damage(trigger.num, trigger.nature, player); + if (trigger.source && trigger.source.isIn()) trigger.source.damage(trigger.num, trigger.nature, player); }, }, liechi: { trigger: { player: "dying" }, forced: true, filter: function (event, player) { - return ( - event.getParent().name == "damage" && event.source && event.source.countCards("he") - ); + return event.getParent().name == "damage" && event.source && event.source.countCards("he"); }, audio: 2, content: function () { @@ -13903,12 +12029,7 @@ game.import("character", function () { locked: false, audio: "jiuchi", filter: function (event, player) { - return ( - event.card && - event.card.name == "sha" && - event.getParent(2).jiu == true && - !player.hasSkill("rejiuchi_air") - ); + return event.card && event.card.name == "sha" && event.getParent(2).jiu == true && !player.hasSkill("rejiuchi_air"); }, content: function () { player.logSkill("jiuchi"); @@ -13996,11 +12117,7 @@ game.import("character", function () { return player != target && target.hasMark("tongqu"); }, selectTarget: function () { - if ( - ui.selected.cards.length && - !lib.filter.cardDiscardable(ui.selected.cards[0], _status.event.player) - ) - return [1, 1]; + if (ui.selected.cards.length && !lib.filter.cardDiscardable(ui.selected.cards[0], _status.event.player)) return [1, 1]; return [0, 1]; }, prompt: "弃置一张牌,或将一张牌交给一名有“渠”的其他角色", @@ -14011,23 +12128,13 @@ game.import("character", function () { if ( get.position(card) == "h" && game.hasPlayer(function (current) { - return ( - current != player && - current.hasMark("tongqu") && - get.attitude(player, current) > 0 && - current.getUseValue(card) > player.getUseValue(card) && - current.getUseValue(card) > player.getUseValue(card) - ); + return current != player && current.hasMark("tongqu") && get.attitude(player, current) > 0 && current.getUseValue(card) > player.getUseValue(card) && current.getUseValue(card) > player.getUseValue(card); }) ) return 12; if ( game.hasPlayer(function (current) { - return ( - current != player && - current.hasMark("tongqu") && - get.attitude(player, current) > 0 - ); + return current != player && current.hasMark("tongqu") && get.attitude(player, current) > 0; }) ) { if (card.name == "wuxie") return 11; @@ -14041,11 +12148,7 @@ game.import("character", function () { var att = get.attitude(player, target); if (card.name == "du") return -6 * att; if (att > 0) { - if ( - get.position(card) == "h" && - target.getUseValue(card) > player.getUseValue(card) - ) - return 4 * att; + if (get.position(card) == "h" && target.getUseValue(card) > player.getUseValue(card)) return 4 * att; if (target.hasUseTarget(card)) return 2 * att; return 1.2 * att; } @@ -14078,11 +12181,7 @@ game.import("character", function () { logTarget: "player", check: function (event, player) { if (get.attitude(player, event.player) < 4) return false; - if ( - player.countCards("hs", (card) => player.canSaveCard(card, event.player)) >= - 1 + event.num - event.player.hp - ) - return false; + if (player.countCards("hs", card => player.canSaveCard(card, event.player)) >= 1 + event.num - event.player.hp) return false; if (event.player == player || event.player == get.zhu(player)) return true; return !player.hasUnknown(); }, @@ -14098,13 +12197,11 @@ game.import("character", function () { direct: true, content: function () { "step 0"; - player - .chooseTarget("请选择【诤荐】的目标", lib.translate.zhengjian_info) - .set("ai", function (target) { - if (target.hasSkill("zhengjian_mark")) return 0; - if (player == target) return 0.5; - return get.attitude(_status.event.player, target) * (1 + target.countCards("h")); - }); + player.chooseTarget("请选择【诤荐】的目标", lib.translate.zhengjian_info).set("ai", function (target) { + if (target.hasSkill("zhengjian_mark")) return 0; + if (player == target) return 0.5; + return get.attitude(_status.event.player, target) * (1 + target.countCards("h")); + }); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -14141,8 +12238,7 @@ game.import("character", function () { game.asyncDraw(list, function (target) { return Math.min(5, target.maxHp, target.countMark("zhengjian_mark")); }); - } else if (list.length == 1) - list[0].draw(Math.min(5, list[0].maxHp, list[0].countMark("zhengjian_mark"))); + } else if (list.length == 1) list[0].draw(Math.min(5, list[0].maxHp, list[0].countMark("zhengjian_mark"))); "step 1"; game.countPlayer(function (current) { current.removeSkill("zhengjian_mark"); @@ -14175,12 +12271,7 @@ game.import("character", function () { if (event.card.name != "sha") return false; if (player.countCards("he") == 0) return false; return game.hasPlayer(function (current) { - return ( - current != event.player && - current != player && - current.hasSkill("zhengjian_mark") && - lib.filter.targetEnabled(event.card, event.player, current) - ); + return current != event.player && current != player && current.hasSkill("zhengjian_mark") && lib.filter.targetEnabled(event.card, event.player, current); }); }, content: function () { @@ -14191,11 +12282,7 @@ game.import("character", function () { filterTarget: function (card, player, target) { var trigger = _status.event; if (target != player && target != trigger.source) { - if ( - target.hasSkill("zhengjian_mark") && - lib.filter.targetEnabled(trigger.card, trigger.source, target) - ) - return true; + if (target.hasSkill("zhengjian_mark") && lib.filter.targetEnabled(trigger.card, trigger.source, target)) return true; } return false; }, @@ -14234,7 +12321,7 @@ game.import("character", function () { } }, ai: { - combo: "zhengjian" + combo: "zhengjian", }, }, //一 将 成 名 @@ -14248,10 +12335,7 @@ game.import("character", function () { else player .chooseControl() - .set("choiceList", [ - "移动场上的一张牌", - "本回合的摸牌阶段多摸一张牌且第一张杀无距离次数限制", - ]) + .set("choiceList", ["移动场上的一张牌", "本回合的摸牌阶段多摸一张牌且第一张杀无距离次数限制"]) .set("ai", function () { return 1; }); @@ -14330,10 +12414,7 @@ game.import("character", function () { if ( player.getUseValue(card) <= 0 && game.hasPlayer(function (current) { - return ( - current != player && - get.value(card, current) * get.attitude(player, current) > 0 - ); + return current != player && get.value(card, current) * get.attitude(player, current) > 0; }) ) return 1; @@ -14348,40 +12429,24 @@ game.import("character", function () { } else { cards = cards.filterInD("d"); if (cards.length) - player - .chooseButton(["是否将其中的一张牌交给一名其他角色?", cards]) - .set("", function (button) { - var player = _status.event.player; - if ( - game.hasPlayer(function (current) { - return ( - current != player && - get.value(button.link, current) * - get.attitude(player, current) > - 0 - ); - }) - ) - return Math.abs(get.value(button.link)); - return 0; - }); + player.chooseButton(["是否将其中的一张牌交给一名其他角色?", cards]).set("", function (button) { + var player = _status.event.player; + if ( + game.hasPlayer(function (current) { + return current != player && get.value(button.link, current) * get.attitude(player, current) > 0; + }) + ) + return Math.abs(get.value(button.link)); + return 0; + }); else event.finish(); } "step 1"; - if (result.bool && game.hasPlayer((current) => current != player)) { + if (result.bool && game.hasPlayer(current => current != player)) { event.card = result.links[0]; - player - .chooseTarget( - true, - lib.filter.notMe, - "选择一名其他角色获得" + get.translation(event.card) - ) - .set("ai", function (target) { - return ( - get.value(_status.event.getParent().card, target) * - get.attitude(_status.event.player, target) - ); - }); + player.chooseTarget(true, lib.filter.notMe, "选择一名其他角色获得" + get.translation(event.card)).set("ai", function (target) { + return get.value(_status.event.getParent().card, target) * get.attitude(_status.event.player, target); + }); } else event.finish(); "step 2"; var target = result.targets[0]; @@ -14421,16 +12486,12 @@ game.import("character", function () { cards.push(card); names.push(card.name); if (get.mode() == "doudizhu") { - if (cards.length == 1 && !get.isLuckyStar(player) && Math.random() < 0.33) - break; - if (cards.length == 2 && !get.isLuckyStar(player) && Math.random() < 0.5) - break; + if (cards.length == 1 && !get.isLuckyStar(player) && Math.random() < 0.33) break; + if (cards.length == 2 && !get.isLuckyStar(player) && Math.random() < 0.5) break; if (cards.length >= 3) break; } else { - if (cards.length == 3 && !get.isLuckyStar(player) && Math.random() < 0.33) - break; - if (cards.length == 4 && !get.isLuckyStar(player) && Math.random() < 0.5) - break; + if (cards.length == 3 && !get.isLuckyStar(player) && Math.random() < 0.33) break; + if (cards.length == 4 && !get.isLuckyStar(player) && Math.random() < 0.5) break; if (cards.length >= 5) break; } } else break; @@ -14490,9 +12551,7 @@ game.import("character", function () { event.map[i] = 0; } event.dialog = ui.create.dialog("forcebutton", "hidden"); - event.dialog.textPrompt = event.dialog.add( - '
    及时点击卡牌,但不要点到毒了!
    ' - ); + event.dialog.textPrompt = event.dialog.add('
    及时点击卡牌,但不要点到毒了!
    '); var str = '
    '; for (var i of list) { str += get.translation(i) + ":" + Math.min(2, event.map[i]) + "/2 "; @@ -14522,14 +12581,10 @@ game.import("character", function () { event.dialog.textPrompt2.innerHTML = ""; if (du) { if (lib.config.background_speak) game.playAudio("skill", "zhengjing_boom"); - event.dialog.textPrompt.innerHTML = - '
    叫你别点毒你非得点 这下翻车了吧
    '; + event.dialog.textPrompt.innerHTML = '
    叫你别点毒你非得点 这下翻车了吧
    '; } else { if (lib.config.background_speak) game.playAudio("skill", "zhengjing_finish"); - event.dialog.textPrompt.innerHTML = - '
    整理经典结束!共整理出' + - get.cnNumber(event.finishedx.length) + - "份经典
    "; + event.dialog.textPrompt.innerHTML = '
    整理经典结束!共整理出' + get.cnNumber(event.finishedx.length) + "份经典
    "; } while (event.zhengjing_nodes.length) { event.zhengjing_nodes.shift().delete(); @@ -14569,10 +12624,7 @@ game.import("character", function () { if (event.zhengjing.length) { var card = ui.create.card(ui.special, "noclick", true); card.init(["", "", event.zhengjing.shift()]); - card.addEventListener( - lib.config.touchscreen ? "touchstart" : "mousedown", - click - ); + card.addEventListener(lib.config.touchscreen ? "touchstart" : "mousedown", click); event.zhengjing_nodes.push(card); card.style.position = "absolute"; var rand1 = Math.round(Math.random() * 100); @@ -14587,8 +12639,7 @@ game.import("character", function () { card.style.opacity = 1; card.style.transform = "scale(1) rotate(" + rand3 + "deg)"; } - if (event.zhengjing_nodes.length > (event.zhengjing.length > 0 ? 2 : 0)) - event.zhengjing_nodes.shift().delete(); + if (event.zhengjing_nodes.length > (event.zhengjing.length > 0 ? 2 : 0)) event.zhengjing_nodes.shift().delete(); if (event.zhengjing.length || event.zhengjing_nodes.length) setTimeout(function () { addNode(); @@ -14638,20 +12689,18 @@ game.import("character", function () { } "step 2"; game.updateRoundNumber(); - player - .chooseTarget(true, "将整理出的经典置于一名角色的武将牌上") - .set("ai", function (target) { - if (target.hasSkill("xinfu_pdgyingshi")) return 0; - var player = _status.event.player; - var cards = _status.event.getParent().cards; - var att = get.attitude(player, target); - return -att; - //if(cards.length==1) return -att; - // if(player==target) att/=2; - // if(target.hasSkill('pingkou')) att*=1.4; - // att*=(1+target.countCards('j')/2); - // return att; - }); + player.chooseTarget(true, "将整理出的经典置于一名角色的武将牌上").set("ai", function (target) { + if (target.hasSkill("xinfu_pdgyingshi")) return 0; + var player = _status.event.player; + var cards = _status.event.getParent().cards; + var att = get.attitude(player, target); + return -att; + //if(cards.length==1) return -att; + // if(player==target) att/=2; + // if(target.hasSkill('pingkou')) att*=1.4; + // att*=(1+target.countCards('j')/2); + // return att; + }); "step 3"; if (result.bool) { var target = result.targets[0]; @@ -14664,10 +12713,7 @@ game.import("character", function () { return; } var next = player.chooseToMove("整经:请分配整理出的经典", true); - next.set("list", [ - ["置于" + get.translation(target) + "的武将牌上", cards], - ["自己获得"], - ]); + next.set("list", [["置于" + get.translation(target) + "的武将牌上", cards], ["自己获得"]]); next.set("filterMove", function (from, to, moved) { if (moved[0].length == 1 && to == 1 && from.link == moved[0][0]) return false; return true; @@ -14748,14 +12794,7 @@ game.import("character", function () { var hs = player.getCards("he"); if (player.hp > 0 && hs.length) { if (hs.length <= player.hp) event._result = { bool: true, cards: hs }; - else - player.chooseCard( - player.hp, - true, - "交给" + get.translation(target) + get.cnNumber(player.hp) + "张牌", - "he", - true - ); + else player.chooseCard(player.hp, true, "交给" + get.translation(target) + get.cnNumber(player.hp) + "张牌", "he", true); } else event.finish(); "step 3"; player.give(result.cards, target); @@ -14769,11 +12808,7 @@ game.import("character", function () { }, check: function (event, player) { return game.hasPlayer(function (current) { - return ( - current != player && - current.countCards("he") && - lib.skill.shuaiyan.check2(current, player) - ); + return current != player && current.countCards("he") && lib.skill.shuaiyan.check2(current, player); }); }, check2: function (target, player) { @@ -14792,9 +12827,7 @@ game.import("character", function () { return filter("我约等于白板", player, current); }) ) { - player - .chooseTarget(true, filter, "选择一名其他角色,令其交给你一张牌") - .set("ai", lib.skill.shuaiyan.check2); + player.chooseTarget(true, filter, "选择一名其他角色,令其交给你一张牌").set("ai", lib.skill.shuaiyan.check2); } else event.finish(); "step 2"; var target = result.targets[0]; @@ -14898,11 +12931,9 @@ game.import("character", function () { if (get.type(name) == "trick") list.push(["锦囊", "", name]); else if (get.type(name) == "basic") list.push(["基本", "", name]); } - player - .chooseButton(["请选择一个牌名", [list, "vcard"], true]) - .set("ai", function (button) { - return button.link[2] == "sha" ? 1 : 0; - }); + player.chooseButton(["请选择一个牌名", [list, "vcard"], true]).set("ai", function (button) { + return button.link[2] == "sha" ? 1 : 0; + }); } else event.finish(); "step 2"; player.storage.gongsun_shadow.push([target, result.links[0][2]]); @@ -15018,11 +13049,7 @@ game.import("character", function () { trigger: { target: "useCardToTargeted" }, direct: true, filter: function (event, player) { - return ( - event.card.name == "sha" && - player.countCards("he") > 0 && - !player.hasSkill("duoduan_im") - ); + return event.card.name == "sha" && player.countCards("he") > 0 && !player.hasSkill("duoduan_im"); }, content: function () { "step 0"; @@ -15058,10 +13085,7 @@ game.import("character", function () { else player .chooseControl() - .set("choiceList", [ - "令其摸两张牌,然后令" + sha + "对你无效", - "令其弃置一张牌,然后你不可响应" + sha, - ]) + .set("choiceList", ["令其摸两张牌,然后令" + sha + "对你无效", "令其弃置一张牌,然后你不可响应" + sha]) .set("prompt", "度断:令" + get.translation(trigger.player) + "执行一项") .set("ai", function () { var player = _status.event.player; @@ -15072,12 +13096,7 @@ game.import("character", function () { }); "step 3"; if (result.index == 0) event.goto(5); - else - trigger.player.chooseToDiscard( - "弃置一张牌令" + get.translation(player) + "不能闪避此【杀】", - "he", - true - ); + else trigger.player.chooseToDiscard("弃置一张牌令" + get.translation(player) + "不能闪避此【杀】", "he", true); "step 4"; if (result.bool) { trigger.directHit.add(player); @@ -15128,8 +13147,7 @@ game.import("character", function () { "step 2"; if (result.bool) { var card = { name: "sha", isCard: true }; - if (player.canUse(card, target, false)) - player.useCard(card, target, false).card.chengzhao = true; + if (player.canUse(card, target, false)) player.useCard(card, target, false).card.chengzhao = true; } }, ai: { @@ -15171,13 +13189,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("rezhengrong"), - "将一名其他角色的随机一张牌置于你的武将牌上,成为「荣」", - function (card, player, target) { - return target != player && target.countCards("he") > 0; - } - ) + .chooseTarget(get.prompt("rezhengrong"), "将一名其他角色的随机一张牌置于你的武将牌上,成为「荣」", function (card, player, target) { + return target != player && target.countCards("he") > 0; + }) .set("ai", function (target) { return (1 - get.attitude(_status.event.player, target)) / target.countCards("he"); }); @@ -15219,13 +13233,7 @@ game.import("character", function () { "step 1"; if (player.countCards("h") == 0) event.goto(3); else { - var dialog = [ - "请选择要交换的手牌和「荣」,或点「取消」", - '
    「征荣」牌
    ', - player.getExpansions("rezhengrong"), - '
    手牌区
    ', - player.getCards("h"), - ]; + var dialog = ["请选择要交换的手牌和「荣」,或点「取消」", '
    「征荣」牌
    ', player.getExpansions("rezhengrong"), '
    手牌区
    ', player.getCards("h")]; var next = player.chooseButton(dialog); next.set("filterButton", function (button) { var ss = _status.event.player.getExpansions("rezhengrong"); @@ -15237,10 +13245,7 @@ game.import("character", function () { if (ss.includes(ub[i].link)) sn++; else hn++; } - return !( - (sn >= hs.length && ss.includes(button.link)) || - (hn >= ss.length && hs.includes(button.link)) - ); + return !((sn >= hs.length && ss.includes(button.link)) || (hn >= ss.length && hs.includes(button.link))); }); next.set("selectButton", function () { if (ui.selected.buttons.length == 0) return 2; @@ -15255,8 +13260,7 @@ game.import("character", function () { } if (sn != hn) return 2 * Math.max(sn, hn); else { - if (sn == ss.length || hn == hs.length || sn == hs.length || hn == ss.length) - return ub.length; + if (sn == ss.length || hn == hs.length || sn == hs.length || hn == ss.length) return ub.length; return [ub.length, ub.length + 1]; } }); @@ -15282,7 +13286,7 @@ game.import("character", function () { player.loseMaxHp(); }, ai: { - combo: "rezhengrong" + combo: "rezhengrong", }, }, reqingce: { @@ -15293,11 +13297,7 @@ game.import("character", function () { }, chooseButton: { dialog: function (event, player) { - return ui.create.dialog( - "请选择要移去的「荣」", - player.getExpansions("rezhengrong"), - "hidden" - ); + return ui.create.dialog("请选择要移去的「荣」", player.getExpansions("rezhengrong"), "hidden"); }, backup: function (links, player) { return { @@ -15324,12 +13324,7 @@ game.import("character", function () { })) ) return 2; - if ( - att < 0 && - target.countCards("e") > 0 && - !target.hasSkillTag("noe") - ) - return -1; + if (att < 0 && target.countCards("e") > 0 && !target.hasSkillTag("noe")) return -1; return 0; }, }, @@ -15357,11 +13352,7 @@ game.import("character", function () { if ( game.hasPlayer(function (current) { var att = get.attitude(player, current); - if ( - (att > 0 && current.countCards("j") > 0) || - (att < 0 && current.countCards("e") > 0) - ) - return true; + if ((att > 0 && current.countCards("j") > 0) || (att < 0 && current.countCards("e") > 0)) return true; return false; }) ) @@ -15376,10 +13367,7 @@ game.import("character", function () { trigger: { player: "phaseZhunbeiBegin" }, forced: true, filter: function (event, player) { - return ( - typeof player.storage.fengji == "number" && - player.countCards("h") >= player.storage.fengji - ); + return typeof player.storage.fengji == "number" && player.countCards("h") >= player.storage.fengji; }, content: function () { player.draw(2); @@ -15481,14 +13469,7 @@ game.import("character", function () { aiOrder: function (player, card, num) { if ( game.hasPlayer(function (current) { - return ( - current.storage.zhouxuan2 && - current.storage.zhouxuan2.player == player && - get.attitude(player, current) > 0 && - (current.storage.zhouxuan2.isbasic - ? card.name - : get.type(card, "trick")) == current.storage.zhouxuan2.card - ); + return current.storage.zhouxuan2 && current.storage.zhouxuan2.player == player && get.attitude(player, current) > 0 && (current.storage.zhouxuan2.isbasic ? card.name : get.type(card, "trick")) == current.storage.zhouxuan2.card; }) ) return num + 10; @@ -15498,13 +13479,7 @@ game.import("character", function () { zhouxuan2: { intro: { mark: function (player, storage) { - return ( - get.translation(storage.player) + - "使用或打出下一张牌时,若此牌为" + - get.translation(storage.card) + - (storage.isbasic ? "" : "牌") + - ",你观看牌堆顶的三张牌并分配给任意角色" - ); + return get.translation(storage.player) + "使用或打出下一张牌时,若此牌为" + get.translation(storage.card) + (storage.isbasic ? "" : "牌") + ",你观看牌堆顶的三张牌并分配给任意角色"; }, }, audio: "zhouxuan", @@ -15518,8 +13493,7 @@ game.import("character", function () { if (map.player != event.player) return false; delete player.storage.zhouxuan2; player.unmarkSkill("zhouxuan2"); - if (map.card != (map.isbasic ? event.card.name : get.type(event.card, "trick"))) - return false; + if (map.card != (map.isbasic ? event.card.name : get.type(event.card, "trick"))) return false; event.zhouxuanable = true; return true; } @@ -15536,15 +13510,10 @@ game.import("character", function () { event.given_map = {}; "step 1"; if (event.cards.length > 1) { - player - .chooseCardButton("周旋:请选择要分配的牌", true, event.cards, [ - 1, - event.cards.length, - ]) - .set("ai", function (button) { - if (ui.selected.buttons.length == 0) return 1; - return 0; - }); + player.chooseCardButton("周旋:请选择要分配的牌", true, event.cards, [1, event.cards.length]).set("ai", function (button) { + if (ui.selected.buttons.length == 0) return 1; + return 0; + }); } else if (event.cards.length == 1) { event._result = { links: event.cards.slice(0), bool: true }; } else { @@ -15613,18 +13582,13 @@ game.import("character", function () { "step 0"; player.chooseCardTarget({ filterCard: function (card) { - return ( - get.color(card) == "red" && - get.type(card) == "basic" && - lib.filter.cardDiscardable.apply(this, arguments) - ); + return get.color(card) == "red" && get.type(card) == "basic" && lib.filter.cardDiscardable.apply(this, arguments); }, filterTarget: function (card, player, target) { return player != target && target.countCards("he") > 0; }, prompt: get.prompt("reshanxi"), - prompt2: - "弃置一张红色基本牌并选择一名其他角色,将其的至多X张牌置于其武将牌上直到回合结束。(X为你的体力值)", + prompt2: "弃置一张红色基本牌并选择一名其他角色,将其的至多X张牌置于其武将牌上直到回合结束。(X为你的体力值)", ai1: function () { return -1; }, @@ -15641,14 +13605,7 @@ game.import("character", function () { player .choosePlayerCard("he", target, true, [1, max]) .set("forceAuto", true) - .set( - "prompt", - "将" + - get.translation(target) + - "的至多" + - get.cnNumber(max) + - "张牌置于其武将牌上" - ); + .set("prompt", "将" + get.translation(target) + "的至多" + get.cnNumber(max) + "张牌置于其武将牌上"); } else event.finish(); "step 3"; target.addSkill("reshanxi2"); @@ -15774,8 +13731,7 @@ game.import("character", function () { .set("prompt", "选择获得一种类型的牌") .set("ai", function () { var player = _status.event.player; - if (player.hp <= 3 && !player.countCards("h", { name: ["shan", "tao"] })) - return "basic"; + if (player.hp <= 3 && !player.countCards("h", { name: ["shan", "tao"] })) return "basic"; if (player.countCards("he", { type: "equip" }) < 2) return "equip"; return "trick"; }); @@ -15848,12 +13804,7 @@ game.import("character", function () { return -b * (1 - Math.pow((a - 1) / 13, target.countCards("h"))); }, target: (player, target) => { - if ( - target.skipList.includes("phaseDraw") || - target.hasSkill("pingkou") || - target.hasSkill("xinpingkou") - ) - return 0; + if (target.skipList.includes("phaseDraw") || target.hasSkill("pingkou") || target.hasSkill("xinpingkou")) return 0; let hs = player.getCards("h").sort(function (a, b) { return get.number(b) - get.number(a); }); @@ -15874,12 +13825,7 @@ game.import("character", function () { trigger: { player: "useCard1" }, forced: true, filter: function (event, player) { - return ( - !event.audioed && - event.card.name == "sha" && - player.countUsed("sha", true) > 1 && - event.getParent().type == "phase" - ); + return !event.audioed && event.card.name == "sha" && player.countUsed("sha", true) > 1 && event.getParent().type == "phase"; }, content: function () { trigger.audioed = true; @@ -15888,14 +13834,7 @@ game.import("character", function () { cardUsable: function (card, player, num) { var cards = player.getEquips("rewrite_zhuge"); if (card.name == "sha") { - if ( - !cards.length || - player.hasSkill("rw_zhuge_skill", null, false) || - cards.some( - (card) => - card != _status.rw_zhuge_temp && !ui.selected.cards.includes(card) - ) - ) { + if (!cards.length || player.hasSkill("rw_zhuge_skill", null, false) || cards.some(card => card != _status.rw_zhuge_temp && !ui.selected.cards.includes(card))) { if (get.is.versus() || get.is.changban()) { return num + 3; } @@ -15904,8 +13843,7 @@ game.import("character", function () { } }, cardEnabled2: function (card, player) { - if (!_status.event.addCount_extra || player.hasSkill("rw_zhuge_skill", null, false)) - return; + if (!_status.event.addCount_extra || player.hasSkill("rw_zhuge_skill", null, false)) return; var cards = player.getEquips("rewrite_zhuge"); if (card && cards.includes(card)) { try { @@ -15915,10 +13853,7 @@ game.import("character", function () { } if (!cardz || cardz.name != "sha") return; _status.rw_zhuge_temp = card; - var bool = lib.filter.cardUsable( - get.autoViewAs({ name: "sha" }, ui.selected.cards.concat([card])), - player - ); + var bool = lib.filter.cardUsable(get.autoViewAs({ name: "sha" }, ui.selected.cards.concat([card])), player); delete _status.rw_zhuge_temp; if (!bool) return false; } @@ -15934,18 +13869,13 @@ game.import("character", function () { direct: true, usable: 1, filter: function (event, player) { - return ( - event.getg(player).length && - event.getParent("phaseDraw").player != player && - player.countCards("he") > 0 - ); + return event.getg(player).length && event.getParent("phaseDraw").player != player && player.countCards("he") > 0; }, content: function () { "step 0"; - player.chooseCard(get.prompt2("xinqingjian"), "he", [1, player.countCards("he")]).ai = - function () { - return -1; - }; + player.chooseCard(get.prompt2("xinqingjian"), "he", [1, player.countCards("he")]).ai = function () { + return -1; + }; "step 1"; if (result.bool) { player.logSkill("xinqingjian"); @@ -15969,18 +13899,12 @@ game.import("character", function () { content: function () { "step 0"; var cards = player.getExpansions("xinqingjian2"); - player - .chooseTarget(true, lib.filter.notMe) - .set("createDialog", [ - "清俭:将这些牌交给一名角色" + (cards.length > 1 ? ",然后摸一张牌" : ""), - cards, - ]); + player.chooseTarget(true, lib.filter.notMe).set("createDialog", ["清俭:将这些牌交给一名角色" + (cards.length > 1 ? ",然后摸一张牌" : ""), cards]); "step 1"; if (result.bool) { var target = result.targets[0]; player.line(target, "thunder"); - if (player.give(player.getExpansions("xinqingjian2"), target).cards.length > 1) - player.draw(); + if (player.give(player.getExpansions("xinqingjian2"), target).cards.length > 1) player.draw(); } "step 2"; player.removeSkill("xinqingjian2"); @@ -15999,24 +13923,17 @@ game.import("character", function () { trigger: { global: "phaseJieshuBegin" }, direct: true, filter: function (event, player) { - return ( - player.getHistory("damage").length > 0 || player.getHistory("sourceDamage").length > 0 - ); + return player.getHistory("damage").length > 0 || player.getHistory("sourceDamage").length > 0; }, content: function () { "step 0"; - player - .chooseTarget( - get.prompt("zhongzuo"), - "令一名角色摸两张牌。若其已受伤,则你摸一张牌。" - ) - .set("ai", function (target) { - if (target.hasSkillTag("nogain")) return target.isDamaged() ? 0 : 1; - let att = get.attitude(_status.event.player, target); - if (att <= 0) return 0; - if (target.isDamaged()) return 1 + att / 5; - return att / 5; - }); + player.chooseTarget(get.prompt("zhongzuo"), "令一名角色摸两张牌。若其已受伤,则你摸一张牌。").set("ai", function (target) { + if (target.hasSkillTag("nogain")) return target.isDamaged() ? 0 : 1; + let att = get.attitude(_status.event.player, target); + if (att <= 0) return 0; + if (target.isDamaged()) return 1 + att / 5; + return att / 5; + }); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -16031,14 +13948,9 @@ game.import("character", function () { trigger: { global: "dying" }, check: function (event, player) { if (get.attitude(player, event.player) < 4) return false; - if ( - player.countCards("hs", (card) => player.canSaveCard(card, event.player)) >= - 1 - event.player.hp - ) - return false; + if (player.countCards("hs", card => player.canSaveCard(card, event.player)) >= 1 - event.player.hp) return false; if (event.player == player || event.player == get.zhu(player)) return true; - if (_status.currentPhase && get.damageEffect(_status.currentPhase, player, player) < 0) - return false; + if (_status.currentPhase && get.damageEffect(_status.currentPhase, player, player) < 0) return false; return !player.hasUnknown(); }, limited: true, @@ -16157,11 +14069,7 @@ game.import("character", function () { ); "step 1"; if (!result.bool) player.draw(); - else - player.chooseUseTarget( - { name: result.links[0][2], isCard: true, nature: result.links[0][3] }, - true - ); + else player.chooseUseTarget({ name: result.links[0][2], isCard: true, nature: result.links[0][3] }, true); }, }, zhiyi: { @@ -16187,8 +14095,7 @@ game.import("character", function () { if (!info || !info.enable) event._result = { index: 0 }; else { var evt = trigger; - if (evt.respondTo && evt.getParent("useCard").name == "useCard") - evt = evt.getParent("useCard"); + if (evt.respondTo && evt.getParent("useCard").name == "useCard") evt = evt.getParent("useCard"); event.evt = evt; player .chooseControl() @@ -16230,11 +14137,7 @@ game.import("character", function () { if (result.index == 0) { player.draw(); } else { - var next = player.chooseUseTarget( - { name: trigger.card.name, nature: trigger.card.nature, isCard: true }, - false, - true - ); + var next = player.chooseUseTarget({ name: trigger.card.name, nature: trigger.card.nature, isCard: true }, false, true); _status.event.next.remove(next); event.evt.after.push(next); next.logSkill = "zhiyi"; @@ -16261,9 +14164,7 @@ game.import("character", function () { _status.imchoosing = false; event._result = { bool: true, - links: ["qiaosi_c1", "qiaosi_c6"].concat( - ["qiaosi_c2", "qiaosi_c3", "qiaosi_c4", "qiaosi_c5"].randomGets(1) - ), + links: ["qiaosi_c1", "qiaosi_c6"].concat(["qiaosi_c2", "qiaosi_c3", "qiaosi_c4", "qiaosi_c5"].randomGets(1)), }; if (event.dialog) event.dialog.close(); if (event.controls) { @@ -16302,29 +14203,12 @@ game.import("character", function () { qiaosi_c6: [40, 60], }; event.finishedx = []; - event.str = - '请开始你的表演
    qiaosi_c1% qiaosi_c2% qiaosi_c3%
    qiaosi_c4%qiaosi_c5% qiaosi_c6%'; + event.str = '请开始你的表演
    qiaosi_c1% qiaosi_c2% qiaosi_c3%
    qiaosi_c4%qiaosi_c5% qiaosi_c6%'; event.dialog = ui.create.dialog(event.str, "forcebutton", "hidden"); - event.dialog.addText( - "
  • 点击下方的按钮,可以增加按钮对应的角色的「表演完成度」。对于不同的角色,点击时增加的完成度不同,最终获得的牌也不同。一次表演最多只能完成3名角色的进度。", - false - ); + event.dialog.addText("
  • 点击下方的按钮,可以增加按钮对应的角色的「表演完成度」。对于不同的角色,点击时增加的完成度不同,最终获得的牌也不同。一次表演最多只能完成3名角色的进度。", false); event.dialog.open(); for (var i in event.status) { - event.dialog.content.childNodes[0].innerHTML = - event.dialog.content.childNodes[0].innerHTML.replace(i, event.status[i]); + event.dialog.content.childNodes[0].innerHTML = event.dialog.content.childNodes[0].innerHTML.replace(i, event.status[i]); } for (var i = 0; i < event.dialog.buttons.length; i++) { event.dialog.buttons[i].classList.add("pointerdiv"); @@ -16453,10 +14337,7 @@ game.import("character", function () { player.gain(event.cards, "gain2"); player .chooseControl() - .set("choiceList", [ - "将" + get.cnNumber(event.num) + "张牌交给一名其他角色", - "弃置" + get.cnNumber(event.num) + "张牌", - ]) + .set("choiceList", ["将" + get.cnNumber(event.num) + "张牌交给一名其他角色", "弃置" + get.cnNumber(event.num) + "张牌"]) .set("ai", function () { if ( game.hasPlayer(function (current) { @@ -16517,10 +14398,9 @@ game.import("character", function () { event.stopped = false; "step 1"; event.acted.push(event.current); - event.current.chooseControl("潮起", "潮落").set("prompt", "潮鸣起乎?潮鸣落乎?").ai = - function () { - return Math.random() < 0.5 ? 0 : 1; - }; + event.current.chooseControl("潮起", "潮落").set("prompt", "潮鸣起乎?潮鸣落乎?").ai = function () { + return Math.random() < 0.5 ? 0 : 1; + }; "step 2"; if (!event.chosen) event.chosen = result.control; if (event.chosen != result.control) event.stopped = true; @@ -16560,10 +14440,9 @@ game.import("character", function () { }, content: function () { "step 0"; - player.chooseCard("he", get.prompt("rebiaozhao"), "将一张牌置于武将牌上作为“表”").ai = - function (card) { - return 6 - get.value(card); - }; + player.chooseCard("he", get.prompt("rebiaozhao"), "将一张牌置于武将牌上作为“表”").ai = function (card) { + return 6 - get.value(card); + }; "step 1"; if (result.bool) { player.logSkill("rebiaozhao"); @@ -16697,10 +14576,7 @@ game.import("character", function () { source.logSkill("reqianxin", player); player .chooseControl() - .set("choiceList", [ - "令" + get.translation(source) + "摸两张牌", - "令自己本回合的手牌上限-2", - ]) + .set("choiceList", ["令" + get.translation(source) + "摸两张牌", "令自己本回合的手牌上限-2"]) .set("prompt", get.translation(source) + "发动了【遣信】,请选择一项") .set("source", source) .set("ai", function () { @@ -16767,9 +14643,7 @@ game.import("character", function () { if ( get.color(card) == "red" && game.hasPlayer(function (current) { - return ( - current != player && current.isDamaged() && get.attitude(player, current) > 2 - ); + return current != player && current.isDamaged() && get.attitude(player, current) > 2; }) ) return 2; @@ -16901,9 +14775,7 @@ game.import("character", function () { content: function () { "step 0"; player.removeSkill("rexushen2"); - player.chooseBool( - "是否令" + get.translation(trigger.source) + "获得技能〖武圣〗和〖当先〗" - ).ai = function () { + player.chooseBool("是否令" + get.translation(trigger.source) + "获得技能〖武圣〗和〖当先〗").ai = function () { return get.attitude(player, trigger.source) > 0; }; "step 1"; @@ -16917,21 +14789,12 @@ game.import("character", function () { audio: "xinfu_zhennan", trigger: { target: "useCardToTargeted" }, filter: function (event, player) { - return ( - event.player != player && - event.targets && - event.targets.length && - event.targets.length > event.player.hp - ); + return event.player != player && event.targets && event.targets.length && event.targets.length > event.player.hp; }, direct: true, content: function () { "step 0"; - var next = player.chooseToDiscard( - get.prompt("rezhennan", trigger.player), - "弃置一张牌并对其造成1点伤害", - "he" - ); + var next = player.chooseToDiscard(get.prompt("rezhennan", trigger.player), "弃置一张牌并对其造成1点伤害", "he"); next.set("logSkill", ["rezhennan", trigger.player]); next.set("ai", function (card) { var player = _status.event.player; @@ -16949,14 +14812,10 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("meiyong"), - "获得一名其他角色的一张牌,然后其摸一张牌。", - function (card, player, target) { - if (player == target) return false; - return target.countGainableCards(player, "he") > 0; - } - ) + .chooseTarget(get.prompt("meiyong"), "获得一名其他角色的一张牌,然后其摸一张牌。", function (card, player, target) { + if (player == target) return false; + return target.countGainableCards(player, "he") > 0; + }) .set("ai", function (target) { return 10 - get.attitude(_status.event.player, target); }); @@ -17075,7 +14934,7 @@ game.import("character", function () { player.recover(); }, ai: { - combo: "relianji" + combo: "relianji", }, }, shouye: { @@ -17086,8 +14945,7 @@ game.import("character", function () { return event.player != player && event.targets.length == 1; }, check: function (event, player) { - if (event.player == game.me || event.player.isOnline()) - return get.attitude(player, event.player) < 0; + if (event.player == game.me || event.player.isOnline()) return get.attitude(player, event.player) < 0; return get.effect(player, event.card, event.player, player) < 0; }, usable: 1, @@ -17141,14 +14999,9 @@ game.import("character", function () { }, content: function () { "step 0"; - player.chooseTarget( - get.prompt("liezhi"), - "弃置至多两名其他角色区域内的各一张牌", - [1, 2], - function (card, player, target) { - return target != player && target.countDiscardableCards(player, "hej") > 0; - } - ).ai = function (target) { + player.chooseTarget(get.prompt("liezhi"), "弃置至多两名其他角色区域内的各一张牌", [1, 2], function (card, player, target) { + return target != player && target.countDiscardableCards(player, "hej") > 0; + }).ai = function (target) { var player = _status.event.player; return get.effect(target, { name: "guohe" }, player, player); }; @@ -17204,11 +15057,7 @@ game.import("character", function () { if ( player.hasSha() && game.hasPlayer(function (current) { - return ( - player.canUse("sha", current) && - get.attitude(player, current) < 0 && - get.effect(current, { name: "sha" }, player, player) > 0 - ); + return player.canUse("sha", current) && get.attitude(player, current) < 0 && get.effect(current, { name: "sha" }, player, player) > 0; }) ) { return 6 - get.value(card); @@ -17282,12 +15131,10 @@ game.import("character", function () { var list = []; for (var name of lib.inpile) { if (get.type(name) != "basic") continue; - if (event.filterCard(get.autoViewAs({ name }, "unsure"), player, event)) - list.push(["基本", "", name]); + if (event.filterCard(get.autoViewAs({ name }, "unsure"), player, event)) list.push(["基本", "", name]); if (name != "sha") continue; for (var j of lib.inpile_nature) { - if (event.filterCard({ name: name, nature: j }, player, event)) - list.push(["基本", "", "sha", j]); + if (event.filterCard({ name: name, nature: j }, player, event)) list.push(["基本", "", "sha", j]); } } return ui.create.dialog("战意", [list, "vcard"], "hidden"); @@ -17297,10 +15144,7 @@ game.import("character", function () { var card = { name: button.link[2], nature: button.link[3] }; if ( game.hasPlayer(function (current) { - return ( - player.canUse(card, current) && - get.effect(current, card, player, player) > 0 - ); + return player.canUse(card, current) && get.effect(current, card, player, player) > 0; }) ) { switch (button.link[2]) { @@ -17311,8 +15155,7 @@ game.import("character", function () { } case "sha": if (button.link[3] == "fire") return 2.95; - else if (button.link[3] == "thunder" || button.link[3] == "ice") - return 2.92; + else if (button.link[3] == "thunder" || button.link[3] == "ice") return 2.92; else return 2.9; } } @@ -17333,23 +15176,14 @@ game.import("character", function () { }; }, prompt: function (links, player) { - return ( - "将一张基本牌当做" + - get.translation(links[0][3] || "") + - get.translation(links[0][2]) + - "使用" - ); + return "将一张基本牌当做" + get.translation(links[0][3] || "") + get.translation(links[0][2]) + "使用"; }, }, ai: { order: function () { var player = _status.event.player; var event = _status.event; - if ( - event.filterCard({ name: "jiu" }, player, event) && - get.effect(player, { name: "jiu" }) > 0 && - player.countCards("hs", { type: "basic" }) >= 2 - ) { + if (event.filterCard({ name: "jiu" }, player, event) && get.effect(player, { name: "jiu" }) > 0 && player.countCards("hs", { type: "basic" }) >= 2) { return 3.3; } return 3.1; @@ -17378,11 +15212,7 @@ game.import("character", function () { trigger: { player: "useCardToPlayered" }, forced: true, filter: function (event, player) { - return ( - event.card.name == "sha" && - event.target.countCards("he") > 0 && - event.targets.length == 1 - ); + return event.card.name == "sha" && event.target.countCards("he") > 0 && event.targets.length == 1; }, check: function (event, player) { return get.attitude(player, event.target) < 0; @@ -17395,10 +15225,9 @@ game.import("character", function () { if (result.cards.length == 1) { event._result = { bool: true, links: result.cards.slice(0) }; } else - player.chooseButton(["选择获得其中的一张牌", result.cards.slice(0)], true).ai = - function (button) { - return get.value(button.link); - }; + player.chooseButton(["选择获得其中的一张牌", result.cards.slice(0)], true).ai = function (button) { + return get.value(button.link); + }; } else event.finish(); "step 2"; if (result.links) player.gain(result.links, "gain2"); @@ -17430,13 +15259,9 @@ game.import("character", function () { suits.add(get.suit(cards[i])); } trigger.source - .chooseCard( - "he", - "交给" + get.translation(player) + "一张满足条件的牌,否则防止此伤害。", - function (card) { - return !_status.event.suits.includes(get.suit(card)); - } - ) + .chooseCard("he", "交给" + get.translation(player) + "一张满足条件的牌,否则防止此伤害。", function (card) { + return !_status.event.suits.includes(get.suit(card)); + }) .set("suits", suits).ai = function (card) { var player = _status.event.player; var target = _status.event.getParent("xinfu_daigong").player; @@ -17499,13 +15324,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseCardButton( - get.prompt("xinfu_zhaoxin", trigger.player), - player.getExpansions("xinfu_zhaoxin"), - function (button) { - return true; - } - ) + .chooseCardButton(get.prompt("xinfu_zhaoxin", trigger.player), player.getExpansions("xinfu_zhaoxin"), function (button) { + return true; + }) .set("ai", function (button) { return 1 + Math.random(); }); @@ -17517,17 +15338,15 @@ game.import("character", function () { player.showCards(event.card); } else event.finish(); "step 2"; - trigger.player.chooseBool("是否获得" + get.translation(event.card) + "?").ai = - function () { - return get.attitude(trigger.player, player) > 0; - }; + trigger.player.chooseBool("是否获得" + get.translation(event.card) + "?").ai = function () { + return get.attitude(trigger.player, player) > 0; + }; "step 3"; if (result.bool) { trigger.player.gain(event.card, "give", player, "bySelf"); - player.chooseBool("是否对" + get.translation(trigger.player) + "造成1点伤害?").ai = - function () { - return get.damageEffect(trigger.player, player, player) > 0; - }; + player.chooseBool("是否对" + get.translation(trigger.player) + "造成1点伤害?").ai = function () { + return get.damageEffect(trigger.player, player, player) > 0; + }; } else { trigger.player.chat("拒绝"); event.finish(); @@ -17548,8 +15367,7 @@ game.import("character", function () { mod: { cardUsable: function (card, player) { var type = get.type2(card); - if (player.getStorage("xinfu_qianchong_effect").includes(type)) - return Infinity; + if (player.getStorage("xinfu_qianchong_effect").includes(type)) return Infinity; }, targetInRange: function (card, player) { var type = get.type2(card); @@ -17582,10 +15400,7 @@ game.import("character", function () { return list[0]; }) .set("prompt", get.prompt("xinfu_qianchong")) - .set( - "prompt2", - "你可以选择一种类别的牌,然后你本回合内使用该类别的牌时没有次数和距离限制。" - ); + .set("prompt2", "你可以选择一种类别的牌,然后你本回合内使用该类别的牌时没有次数和距离限制。"); } else event.finish(); "step 1"; if (result.control && result.control != "cancel2") { @@ -17609,12 +15424,7 @@ game.import("character", function () { for (var i = 0; i < es.length; i++) { if (get.color(es[i]) != "black") bool = false; } - if ( - bool && - (get.type(card) == "trick" || get.type(card) == "delay") && - get.color(card) == "black" - ) - return false; + if (bool && (get.type(card) == "trick" || get.type(card) == "delay") && get.color(card) == "black") return false; }, }, }, @@ -17679,12 +15489,7 @@ game.import("character", function () { var num = 0; player.getHistory("lose", function (evt) { var evt2 = evt.getParent(); - if ( - evt2.name == "useCard" && - evt2.player == player && - get.type(evt2.card, null, false) == "equip" - ) - return; + if (evt2.name == "useCard" && evt2.player == player && get.type(evt2.card, null, false) == "equip") return; if (evt.cards2) num += evt.cards2.length; }); return num > 0 && num <= player.hp; @@ -17695,12 +15500,7 @@ game.import("character", function () { var num = 0; player.getHistory("lose", function (evt) { var evt2 = evt.getParent(); - if ( - evt2.name == "useCard" && - evt2.player == player && - get.type(evt2.card, null, false) == "equip" - ) - return; + if (evt2.name == "useCard" && evt2.player == player && get.type(evt2.card, null, false) == "equip") return; if (evt.cards2) num += evt.cards2.length; }); if (num > 0) { @@ -17737,22 +15537,16 @@ game.import("character", function () { equipSkill: true, trigger: { player: "loseAfter", - global: [ - "equipAfter", - "addJudgeAfter", - "gainAfter", - "loseAsyncAfter", - "addToExpansionAfter", - ], + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, filter: (event, player) => { if (player.hasSkillTag("unequip2")) return false; var evt = event.getl(player); - return evt && evt.es.some((card) => card.name == "rewrite_baiyin"); + return evt && evt.es.some(card => card.name == "rewrite_baiyin"); }, content: function () { var evt = trigger.getl(player); - evt.es.forEach((card) => { + evt.es.forEach(card => { if (card.name == "rewrite_baiyin") { player.recover(); player.draw(2); @@ -17805,10 +15599,7 @@ game.import("character", function () { }) ) return false; - return ( - event.card.name == "sha" && - (get.suit(event.card) == "heart" || get.color(event.card) == "black") - ); + return event.card.name == "sha" && (get.suit(event.card) == "heart" || get.color(event.card) == "black"); }, ai: { effect: { @@ -17827,8 +15618,7 @@ game.import("character", function () { }) ) return; - if (card.name == "sha" && ["spade", "club", "heart"].includes(get.suit(card))) - return "zeroplayertarget"; + if (card.name == "sha" && ["spade", "club", "heart"].includes(get.suit(card))) return "zeroplayertarget"; }, }, }, @@ -17863,20 +15653,7 @@ game.import("character", function () { wolong_card: function () { "step 0"; var ingame = game.hasPlayer(function (current) { - return ( - [ - "sp_zhugeliang", - "re_sp_zhugeliang", - "ol_sp_zhugeliang", - "prp_zhugeliang", - ].includes(current.name) || - [ - "sp_zhugeliang", - "re_sp_zhugeliang", - "ol_sp_zhugeliang", - "prp_zhugeliang", - ].includes(current.name2) - ); + return ["sp_zhugeliang", "re_sp_zhugeliang", "ol_sp_zhugeliang", "prp_zhugeliang"].includes(current.name) || ["sp_zhugeliang", "re_sp_zhugeliang", "ol_sp_zhugeliang", "prp_zhugeliang"].includes(current.name2); }) ? true : false; @@ -17900,10 +15677,7 @@ game.import("character", function () { fengchu_card: function () { "step 0"; var ingame = game.hasPlayer(function (current) { - return ( - ["re_pangtong", "pangtong", "ol_pangtong"].includes(current.name) || - ["re_pangtong", "pangtong", "ol_pangtong"].includes(current.name2) - ); + return ["re_pangtong", "pangtong", "ol_pangtong"].includes(current.name) || ["re_pangtong", "pangtong", "ol_pangtong"].includes(current.name2); }) ? true : false; @@ -17927,10 +15701,7 @@ game.import("character", function () { xuanjian_card: function () { "step 0"; event.ingame = game.hasPlayer(function (current) { - return ( - ["re_xushu", "xin_xushu", "xushu", "dc_xushu"].includes(current.name) || - ["re_xushu", "xin_xushu", "xushu", "dc_xushu"].includes(current.name2) - ); + return ["re_xushu", "xin_xushu", "xushu", "dc_xushu"].includes(current.name) || ["re_xushu", "xin_xushu", "xushu", "dc_xushu"].includes(current.name2); }) ? true : false; @@ -17963,7 +15734,7 @@ game.import("character", function () { if (ui.selected.targets.length) { if (!_status.event.ingame) { var cards = ui.selected.targets[0].getEquips(2); - return cards.some((card) => target.canEquip(card)); + return cards.some(card => target.canEquip(card)); } var from = ui.selected.targets[0]; if (target.isMin()) return false; @@ -18043,8 +15814,7 @@ game.import("character", function () { .set("targets0", targets[0]) .set("targets1", targets[1]) .set("filterButton", function (button) { - if (!get.subtypes(button.link, false).includes("equip2")) - return false; + if (!get.subtypes(button.link, false).includes("equip2")) return false; var targets1 = _status.event.targets1; return targets1.canEquip(button.link); }); @@ -18094,11 +15864,7 @@ game.import("character", function () { if (name == "xuanjian_card") { if ( game.hasPlayer(function (current) { - return ( - current.isDamaged() && - current.hp < 3 && - get.attitude(player, current) > 1 - ); + return current.isDamaged() && current.hp < 3 && get.attitude(player, current) > 1; }) ) return 1 + Math.random(); @@ -18176,17 +15942,7 @@ game.import("character", function () { var img = new Image(); img.src = lib.assetURL + "image/card/" + name + ".png"; img.onload = function () { - ctx2.drawImage( - this, - 0, - 0, - this.width, - this.height, - 0, - 0, - canvas2.width, - canvas2.height - ); + ctx2.drawImage(this, 0, 0, this.width, this.height, 0, 0, canvas2.width, canvas2.height); }; if (canSkip) { var skip = function () { @@ -18197,10 +15953,7 @@ game.import("character", function () { bool: true, }; game.resume(); - canvas2.removeEventListener( - lib.config.touchscreen ? "touchend" : "click", - skip - ); + canvas2.removeEventListener(lib.config.touchscreen ? "touchend" : "click", skip); } }; canvas2.addEventListener(lib.config.touchscreen ? "touchend" : "click", skip); @@ -18212,9 +15965,7 @@ game.import("character", function () { _status.xinfu_pingcai_finished = false; var dialog = ui.create.dialog("forcebutton", "hidden"); - dialog.textPrompt = dialog.add( - '
    擦拭掉宝物上的灰尘吧!
    ' - ); + dialog.textPrompt = dialog.add('
    擦拭掉宝物上的灰尘吧!
    '); event.switchToAuto = function () { event._result = { bool: _status.xinfu_pingcai_finished, @@ -18263,17 +16014,7 @@ game.import("character", function () { var img = new Image(); img.src = lib.assetURL + "image/card/" + name + ".png"; img.onload = function () { - ctx2.drawImage( - this, - 0, - 0, - this.width, - this.height, - 0, - 0, - canvas2.width, - canvas2.height - ); + ctx2.drawImage(this, 0, 0, this.width, this.height, 0, 0, canvas2.width, canvas2.height); }; ctx.fillStyle = "lightgray"; @@ -18285,12 +16026,7 @@ game.import("character", function () { if (_status.xinfu_pingcai_finished) return; ctx.beginPath(); ctx.clearRect(e.offsetX - 16, e.offsetY - 16, 32, 32); - var data = ctx.getImageData( - canvas.width * 0.1, - canvas.height * 0.1, - canvas.width * 0.8, - canvas.height * 0.8 - ).data; + var data = ctx.getImageData(canvas.width * 0.1, canvas.height * 0.1, canvas.width * 0.8, canvas.height * 0.8).data; var sum = 0; for (var i = 3; i < data.length; i += 4) { if (data[i] == 0) { @@ -18315,12 +16051,7 @@ game.import("character", function () { var X = ((e.touches[0].clientX - rect.left) / rect.width) * canvas.width; var Y = ((e.touches[0].clientY - rect.top) / rect.height) * canvas.height; ctx.clearRect(X - 16, Y - 16, 32, 32); - var data = ctx.getImageData( - canvas.width * 0.1, - canvas.height * 0.1, - canvas.width * 0.8, - canvas.height * 0.8 - ).data; + var data = ctx.getImageData(canvas.width * 0.1, canvas.height * 0.1, canvas.width * 0.8, canvas.height * 0.8).data; var sum = 0; for (var i = 3; i < data.length; i += 4) { if (data[i] == 0) { @@ -18367,14 +16098,8 @@ game.import("character", function () { _status.xinfu_pingcai_finished = true; var dialog = get.idDialog(id); if (dialog) { - dialog.textPrompt.innerHTML = - '
    ' + - (get.translation(player) + - "擦拭宝物" + - (result.bool ? "成功!" : "失败…")) + - "
    "; - if (result.bool && dialog.canvas_viewer) - dialog.canvas_viewer.classList.remove("grayscale"); + dialog.textPrompt.innerHTML = '
    ' + (get.translation(player) + "擦拭宝物" + (result.bool ? "成功!" : "失败…")) + "
    "; + if (result.bool && dialog.canvas_viewer) dialog.canvas_viewer.classList.remove("grayscale"); } if (!_status.connectMode) delete event.pingcai_delayed; }, @@ -18417,11 +16142,7 @@ game.import("character", function () { group: "xinfu_pdgyingshi2", content: function () { trigger.cancel(); - game.log( - player, - "跳过了", - event.triggername == "phaseZhunbeiBefore" ? "准备阶段" : "结束阶段" - ); + game.log(player, "跳过了", event.triggername == "phaseZhunbeiBefore" ? "准备阶段" : "结束阶段"); }, }, xinfu_pdgyingshi2: { @@ -18473,14 +16194,7 @@ game.import("character", function () { if (event.filterCard(get.autoViewAs({ name }, "unsure"), player, event)) return true; if (name == "sha") { for (var nature of lib.inpile_nature) { - if ( - event.filterCard( - get.autoViewAs({ name, nature }, "unsure"), - player, - event - ) - ) - return true; + if (event.filterCard(get.autoViewAs({ name, nature }, "unsure"), player, event)) return true; } } } @@ -18496,14 +16210,7 @@ game.import("character", function () { } if (name == "sha") { for (var nature of lib.inpile_nature) { - if ( - event.filterCard( - get.autoViewAs({ name, nature }, "unsure"), - player, - event - ) - ) - list.push(["基本", "", "sha", nature]); + if (event.filterCard(get.autoViewAs({ name, nature }, "unsure"), player, event)) list.push(["基本", "", "sha", nature]); } } } @@ -18515,10 +16222,7 @@ game.import("character", function () { if ( _status.event.getParent().type != "phase" || game.hasPlayer(function (current) { - return ( - player.canUse(card, current) && - get.effect(current, card, player, player) > 0 - ); + return player.canUse(card, current) && get.effect(current, card, player, player) > 0; }) ) { switch (button.link[2]) { @@ -18526,16 +16230,11 @@ game.import("character", function () { case "shan": return 5; case "jiu": { - if ( - player.storage.yizan && - player.countCards("hs", { type: "basic" }) > 2 - ) - return 3; + if (player.storage.yizan && player.countCards("hs", { type: "basic" }) > 2) return 3; } case "sha": if (button.link[3] == "fire") return 2.95; - else if (button.link[3] == "thunder" || button.link[3] == "ice") - return 2.92; + else if (button.link[3] == "thunder" || button.link[3] == "ice") return 2.92; else return 2.9; } } @@ -18572,26 +16271,14 @@ game.import("character", function () { }, prompt: function (links, player) { var str = player.storage.yizan ? "一张基本牌" : "两张牌(其中至少应有一张基本牌)"; - return ( - "将" + - str + - "当做" + - get.translation(links[0][3] || "") + - get.translation(links[0][2]) + - "使用或打出" - ); + return "将" + str + "当做" + get.translation(links[0][3] || "") + get.translation(links[0][2]) + "使用或打出"; }, }, ai: { order: function () { var player = _status.event.player; var event = _status.event; - if ( - event.filterCard({ name: "jiu" }, player, event) && - get.effect(player, { name: "jiu" }) > 0 && - player.storage.yizan && - player.countCards("hs", { type: "basic" }) > 2 - ) { + if (event.filterCard({ name: "jiu" }, player, event) && get.effect(player, { name: "jiu" }) > 0 && player.storage.yizan && player.countCards("hs", { type: "basic" }) > 2) { return 3.3; } return 3.1; @@ -18661,19 +16348,12 @@ game.import("character", function () { filter: function (event, player) { var he = player.getCards("he"); for (var i = 0; i < he.length; i++) { - if ( - ["bagua", "baiyin", "lanyinjia", "renwang", "tengjia", "zhuge"].includes( - he[i].name - ) - ) - return true; + if (["bagua", "baiyin", "lanyinjia", "renwang", "tengjia", "zhuge"].includes(he[i].name)) return true; } return false; }, filterCard: function (card) { - return ["bagua", "baiyin", "lanyinjia", "renwang", "tengjia", "zhuge"].includes( - card.name - ); + return ["bagua", "baiyin", "lanyinjia", "renwang", "tengjia", "zhuge"].includes(card.name); }, discard: false, lose: false, @@ -18718,7 +16398,7 @@ game.import("character", function () { filter: (event, player) => { if (event.type != "dying") return false; if (player != event.dying) return false; - return player.hasCard((card) => lib.skill.xinfu_jingxie2.filterCard(card, player), "he"); + return player.hasCard(card => lib.skill.xinfu_jingxie2.filterCard(card, player), "he"); }, position: "he", discard: false, @@ -18735,12 +16415,7 @@ game.import("character", function () { order: 0.5, skillTagFilter: function (player, arg, target) { if (player != target) return false; - return player.hasCard( - (card) => - (_status.connectMode && get.position(card) == "h") || - (get.subtype(card) == "equip2" && player.canRecast(card)), - "he" - ); + return player.hasCard(card => (_status.connectMode && get.position(card) == "h") || (get.subtype(card) == "equip2" && player.canRecast(card)), "he"); }, save: true, result: { @@ -18766,10 +16441,7 @@ game.import("character", function () { player.gain(event.cards, "gain2"); player .chooseControl() - .set("choiceList", [ - "将" + get.cnNumber(event.num) + "张牌交给一名其他角色", - "弃置" + get.cnNumber(event.num) + "张牌", - ]) + .set("choiceList", ["将" + get.cnNumber(event.num) + "张牌交给一名其他角色", "弃置" + get.cnNumber(event.num) + "张牌"]) .set("ai", function () { if ( game.hasPlayer(function (current) { @@ -18994,8 +16666,7 @@ game.import("character", function () { filter: function (event, player) { var cards = []; player.getHistory("lose", function (evt) { - if (evt.type == "discard" && evt.getParent("phaseDiscard") == event) - cards.addArray(evt.cards2); + if (evt.type == "discard" && evt.getParent("phaseDiscard") == event) cards.addArray(evt.cards2); }); if (cards) { if (cards.length < 2) return false; @@ -19014,14 +16685,10 @@ game.import("character", function () { }, content: function () { "step 0"; - player.chooseTarget( - get.prompt("shejian"), - "弃置一名其他角色的一张牌", - function (card, player, target) { - if (player == target) return false; - return target.countDiscardableCards(player, "he") > 0; - } - ).ai = function (target) { + player.chooseTarget(get.prompt("shejian"), "弃置一名其他角色的一张牌", function (card, player, target) { + if (player == target) return false; + return target.countDiscardableCards(player, "he") > 0; + }).ai = function (target) { return -get.attitude(player, target); }; "step 1"; @@ -19058,13 +16725,7 @@ game.import("character", function () { aiOrder: function (player, card, num) { if (typeof card == "object" && player == _status.currentPhase) { var evt = player.getLastUsed(); - if ( - evt && - evt.card && - get.color(evt.card) != "none" && - get.color(card) != "none" && - get.color(evt.card) != get.color(card) - ) { + if (evt && evt.card && get.color(evt.card) != "none" && get.color(card) != "none" && get.color(evt.card) != get.color(card)) { return num + 10; } } @@ -19106,12 +16767,7 @@ game.import("character", function () { direct: true, audio: "qingyi", content: function () { - player.chooseUseTarget( - "###是否发动【影箭】?###视为使用一张没有距离限制的【杀】", - { name: "sha" }, - false, - "nodistance" - ).logSkill = "yingjian"; + player.chooseUseTarget("###是否发动【影箭】?###视为使用一张没有距离限制的【杀】", { name: "sha" }, false, "nodistance").logSkill = "yingjian"; }, ai: { threaten: function (player, target) { @@ -19159,19 +16815,14 @@ game.import("character", function () { player.removeSkill("tunchu_choose"); var nh = player.countCards("h"); if (nh) { - player - .chooseCard("h", [1, nh], "将任意张手牌置于你的武将牌上") - .set("ai", function (card) { - var player = _status.event.player; - var count = game.countPlayer(function (current) { - return ( - get.attitude(player, current) > 2 && - current.hp - current.countCards("h") > 1 - ); - }); - if (ui.selected.cards.length >= count) return -get.value(card); - return 5 - get.value(card); + player.chooseCard("h", [1, nh], "将任意张手牌置于你的武将牌上").set("ai", function (card) { + var player = _status.event.player; + var count = game.countPlayer(function (current) { + return get.attitude(player, current) > 2 && current.hp - current.countCards("h") > 1; }); + if (ui.selected.cards.length >= count) return -get.value(card); + return 5 - get.value(card); + }); } else { event.finish(); } @@ -19188,20 +16839,13 @@ game.import("character", function () { trigger: { global: "phaseJieshuBegin" }, direct: true, filter: function (event, player) { - return ( - player.getExpansions("tunchu").length > 0 && - event.player.countCards("h") < event.player.hp && - event.player.isIn() - ); + return player.getExpansions("tunchu").length > 0 && event.player.countCards("h") < event.player.hp && event.player.isIn(); }, content: function () { "step 0"; var goon = get.attitude(player, trigger.player) > 0; player - .chooseCardButton( - get.prompt("shuliang", trigger.player), - player.getExpansions("tunchu") - ) + .chooseCardButton(get.prompt("shuliang", trigger.player), player.getExpansions("tunchu")) .set("ai", function () { if (_status.event.goon) return 1; return 0; @@ -19238,10 +16882,7 @@ game.import("character", function () { var goon = true; if (event.cardname) { goon = game.hasPlayer(function (current) { - return ( - player.canUse(event.cardname, current) && - get.effect(current, { name: event.cardname }, player, player) > 0 - ); + return player.canUse(event.cardname, current) && get.effect(current, { name: event.cardname }, player, player) > 0; }); } player @@ -19262,17 +16903,7 @@ game.import("character", function () { var target = result.targets[0]; player.logSkill("choulve", target); target - .chooseCard( - "he", - "是否交给" + get.translation(player) + "一张牌?", - event.cardname - ? "若如此做,视为" + - get.translation(player) + - "使用【" + - get.translation(event.cardname) + - "】" - : null - ) + .chooseCard("he", "是否交给" + get.translation(player) + "一张牌?", event.cardname ? "若如此做,视为" + get.translation(player) + "使用【" + get.translation(event.cardname) + "】" : null) .set("ai", function (card) { if (_status.event.goon) return 7 - get.value(card); return 0; @@ -19340,11 +16971,7 @@ game.import("character", function () { ly_piliche: { trigger: { source: "damageSource" }, check: function (event, player) { - return ( - get.attitude(player, event.player) * - get.value(event.player.getDiscardableCards(player, "e"), event.player) <= - 0 - ); + return get.attitude(player, event.player) * get.value(event.player.getDiscardableCards(player, "e"), event.player) <= 0; }, filter: function (event, player) { return player != event.player && event.player.countDiscardableCards(player, "e") > 0; @@ -19441,9 +17068,7 @@ game.import("character", function () { !_status.event.nojudge && target.countCards("j", function (card) { return game.hasPlayer(function (current) { - return ( - current.canAddJudge(card) && get.attitude(player, current) < 0 - ); + return current.canAddJudge(card) && get.attitude(player, current) < 0; }); }) ) @@ -19453,11 +17078,7 @@ game.import("character", function () { return ( get.value(card, target) < 0 && game.hasPlayer(function (current) { - return ( - current != target && - get.attitude(player, current) < 0 && - current.canEquip(card) - ); + return current != target && get.attitude(player, current) < 0 && current.canEquip(card); }) ); }) > 0 @@ -19469,12 +17090,7 @@ game.import("character", function () { if (current != target && get.attitude(player, current) > 0) { var es = target.getCards("e"); for (var i = 0; i < es.length; i++) { - if ( - get.value(es[i], target) > 0 && - current.canEquip(es[i]) && - get.value(es[i], current) > 0 - ) - return true; + if (get.value(es[i], target) > 0 && current.canEquip(es[i]) && get.value(es[i], current) > 0) return true; } } }) @@ -19488,13 +17104,7 @@ game.import("character", function () { var i; var att2 = get.sgn(get.attitude(player, ui.selected.targets[0])); for (i = 0; i < es.length; i++) { - if ( - sgnatt != 0 && - att2 != 0 && - get.sgn(get.value(es[i], ui.selected.targets[0])) == -att2 && - get.sgn(get.value(es[i], target)) == sgnatt && - target.canEquip(es[i]) - ) { + if (sgnatt != 0 && att2 != 0 && get.sgn(get.value(es[i], ui.selected.targets[0])) == -att2 && get.sgn(get.value(es[i], target)) == sgnatt && target.canEquip(es[i])) { return Math.abs(att); } } @@ -19534,10 +17144,7 @@ game.import("character", function () { var player = _status.event.player; var targets0 = _status.event.targets0; var targets1 = _status.event.targets1; - if ( - get.attitude(player, targets0) > 0 && - get.attitude(player, targets1) < 0 - ) { + if (get.attitude(player, targets0) > 0 && get.attitude(player, targets1) < 0) { if (get.position(button.link) == "j") return 12; if (get.value(button.link, targets0) < 0) return 10; return 0; @@ -19624,22 +17231,14 @@ game.import("character", function () { audio: "xhzhiyan", enable: "phaseUse", filter: function (event, player) { - return ( - (!player.hasSkill("xinxhzhiyan_true") && player.countCards("h") > player.hp) || - (!player.hasSkill("xinxhzhiyan_false") && player.countCards("h") < player.maxHp) - ); + return (!player.hasSkill("xinxhzhiyan_true") && player.countCards("h") > player.hp) || (!player.hasSkill("xinxhzhiyan_false") && player.countCards("h") < player.maxHp); }, filterCard: true, selectCard: function () { var player = _status.event.player; if (player.hasSkill("xinxhzhiyan_true")) return 0; var num = Math.max(0, player.countCards("h") - player.hp); - if ( - ui.selected.cards.length || - player.hasSkill("xinxhzhiyan_false") || - player.countCards("h") >= player.maxHp - ) - return [num, num]; + if (ui.selected.cards.length || player.hasSkill("xinxhzhiyan_false") || player.countCards("h") >= player.maxHp) return [num, num]; return [0, num]; }, filterTarget: lib.filter.notMe, @@ -19653,11 +17252,7 @@ game.import("character", function () { if ( player.getUseValue(card, null, true) <= 0 && game.hasPlayer(function (current) { - return ( - current != player && - get.value(card, current) > 0 && - get.attitude(player, current) > 0 - ); + return current != player && get.value(card, current) > 0 && get.attitude(player, current) > 0; }) ) return 2; @@ -19702,11 +17297,7 @@ game.import("character", function () { xinxhzhiyan_false: { mod: { playerEnabled: function (card, player, target) { - if ( - player != target && - (!get.info(card) || !get.info(card).singleCard || !ui.selected.targets.length) - ) - return false; + if (player != target && (!get.info(card) || !get.info(card).singleCard || !ui.selected.targets.length)) return false; }, }, mark: true, @@ -19733,38 +17324,20 @@ game.import("character", function () { return ( player .getHistory("useCard", function (ev) { - return ( - ev.getParent("phaseUse") == evt && - get.tag(ev.card, "damage") && - ["basic", "trick"].includes(get.type(ev.card)) - ); + return ev.getParent("phaseUse") == evt && get.tag(ev.card, "damage") && ["basic", "trick"].includes(get.type(ev.card)); }) .indexOf(event) == 0 && game.hasPlayer(function (current) { - return ( - current != player && - !current.storage.weifeng2 && - event.targets.includes(current) - ); + return current != player && !current.storage.weifeng2 && event.targets.includes(current); }) ); }, content: function () { "step 0"; player - .chooseTarget( - true, - "威风:请选择一个目标,令其获得一个【惧(" + - get.translation(trigger.card.name) + - ")】标记", - function (card, player, target) { - return ( - player != target && - !target.storage.weifeng2 && - _status.event.getTrigger().targets.includes(target) - ); - } - ) + .chooseTarget(true, "威风:请选择一个目标,令其获得一个【惧(" + get.translation(trigger.card.name) + ")】标记", function (card, player, target) { + return player != target && !target.storage.weifeng2 && _status.event.getTrigger().targets.includes(target); + }) .set("ai", function (target) { return -get.attitude(_status.event.player, target); }); @@ -19773,12 +17346,7 @@ game.import("character", function () { var target = result.targets[0]; target.storage.weifeng2 = trigger.card.name; player.line(target, "green"); - game.log( - target, - "获得了一个", - "#g【惧(" + get.translation(trigger.card.name) + ")】", - "标记" - ); + game.log(target, "获得了一个", "#g【惧(" + get.translation(trigger.card.name) + ")】", "标记"); target.markSkill("weifeng2"); player.addSkill("weifeng3"); } @@ -19789,12 +17357,7 @@ game.import("character", function () { content: "当前“惧”标记名称:$", onunmark: function (storage, player) { if (player.storage.weifeng2) { - game.log( - player, - "移去了一个", - "#g【惧(" + get.translation(player.storage.weifeng2) + ")】", - "标记" - ); + game.log(player, "移去了一个", "#g【惧(" + get.translation(player.storage.weifeng2) + ")】", "标记"); delete player.storage.weifeng2; } }, @@ -19815,10 +17378,8 @@ game.import("character", function () { content: function () { if (trigger.name == "damage") { player.logSkill("weifeng", trigger.player); - if (trigger.card && trigger.card.name == trigger.player.storage.weifeng2) - trigger.num++; - else if (trigger.player.countGainableCards(player, "he") > 0) - player.gainPlayerCard(trigger.player, "he", true); + if (trigger.card && trigger.card.name == trigger.player.storage.weifeng2) trigger.num++; + else if (trigger.player.countGainableCards(player, "he") > 0) player.gainPlayerCard(trigger.player, "he", true); trigger.player.unmarkSkill("weifeng2"); } else { game.countPlayer(function (current) { @@ -19870,10 +17431,7 @@ game.import("character", function () { function (card, player) { return ( !player.countCards("s", function (cardx) { - return ( - cardx.hasGaintag("gnjinfan") && - get.suit(cardx, false) == get.suit(card, player) - ); + return cardx.hasGaintag("gnjinfan") && get.suit(cardx, false) == get.suit(card, player); }) && !ui.selected.cards.filter(function (cardx) { return get.suit(cardx, player) == get.suit(card, player); @@ -19884,8 +17442,7 @@ game.import("character", function () { .set("ai", function (card) { var player = _status.event.player; if (player.hasUseTarget(card) && !player.hasValueTarget(card)) return 0; - if (["sha", "shan", "wuxie", "caochuan"].includes(card.name)) - return 2 + Math.random(); + if (["sha", "shan", "wuxie", "caochuan"].includes(card.name)) return 2 + Math.random(); return 1 + Math.random(); }) .set("complexCard", true); @@ -19945,11 +17502,7 @@ game.import("character", function () { "step 0"; var cards = []; for (var i of trigger.ss) { - if ( - !trigger.gaintag_map[i.cardid] || - !trigger.gaintag_map[i.cardid].includes("gnjinfan") - ) - continue; + if (!trigger.gaintag_map[i.cardid] || !trigger.gaintag_map[i.cardid].includes("gnjinfan")) continue; var suit = get.suit(i, false); var card = get.cardPile2(function (card) { return !cards.includes(card) && get.suit(card, false) == suit; @@ -19971,12 +17524,7 @@ game.import("character", function () { trigger: { global: "phaseZhunbeiBegin" }, direct: true, filter: function (event, player) { - return ( - event.player.isIn() && - event.player.countCards("e") > 0 && - lib.filter.targetEnabled({ name: "sha" }, player, event.player) && - (player.hasSha() || (_status.connectMode && player.countCards("h") > 0)) - ); + return event.player.isIn() && event.player.countCards("e") > 0 && lib.filter.targetEnabled({ name: "sha" }, player, event.player) && (player.hasSha() || (_status.connectMode && player.countCards("h") > 0)); }, content: function () { player @@ -19987,11 +17535,7 @@ game.import("character", function () { .set("logSkill", "gnsheque") .set("complexSelect", true) .set("filterTarget", function (card, player, target) { - if ( - target != _status.event.sourcex && - !ui.selected.targets.includes(_status.event.sourcex) - ) - return false; + if (target != _status.event.sourcex && !ui.selected.targets.includes(_status.event.sourcex)) return false; return lib.filter.targetEnabled.apply(this, arguments); }) .set("sourcex", trigger.player) @@ -19999,9 +17543,7 @@ game.import("character", function () { try { card.gnsheque_tag = true; } catch (e) { - alert( - "发生了一个导致【射却】无法正常触发无视防具效果的错误。请关闭十周年UI/手杀ui等扩展以解决" - ); + alert("发生了一个导致【射却】无法正常触发无视防具效果的错误。请关闭十周年UI/手杀ui等扩展以解决"); } }); }, @@ -20042,66 +17584,42 @@ game.import("character", function () { return "你可以将两张牌(其中至少一张为基本牌)当做任意基本牌使用或打出。"; }, miaojian: function (player) { - return [ - "出牌阶段限一次。你可将一张【杀】当做刺【杀】使用,或将一张锦囊牌当做【无中生有】使用。", - "出牌阶段限一次。你可将一张基本牌当做刺【杀】使用,或将一张非基本牌当做【无中生有】使用。", - "出牌阶段限一次。你可视为使用一张刺【杀】或【无中生有】。", - ][player.countMark("miaojian")]; + return ["出牌阶段限一次。你可将一张【杀】当做刺【杀】使用,或将一张锦囊牌当做【无中生有】使用。", "出牌阶段限一次。你可将一张基本牌当做刺【杀】使用,或将一张非基本牌当做【无中生有】使用。", "出牌阶段限一次。你可视为使用一张刺【杀】或【无中生有】。"][player.countMark("miaojian")]; }, shhlianhua: function (player) { - return [ - "当你成为【杀】的目标后,你摸一张牌。", - "当你成为【杀】的目标后,你摸一张牌。然后你进行判定,若结果为黑桃,则此【杀】对你无效。", - "当你成为【杀】的目标后,你摸一张牌。然后此【杀】的使用者选择一项:①弃置一张牌。②令此【杀】对你无效。", - ][player.countMark("shhlianhua")]; + return ["当你成为【杀】的目标后,你摸一张牌。", "当你成为【杀】的目标后,你摸一张牌。然后你进行判定,若结果为黑桃,则此【杀】对你无效。", "当你成为【杀】的目标后,你摸一张牌。然后此【杀】的使用者选择一项:①弃置一张牌。②令此【杀】对你无效。"][player.countMark("shhlianhua")]; }, spshidi: function (player) { - if (player.countMark("spshidi") % 2 == 0) - return '转换技,锁定技。①准备阶段/结束阶段开始时,若你发动此分支的累计次数为奇数/偶数,则你获得一个“☯”。②若你的“☯”数为偶数,则你至其他角色的距离-1,且你使用的黑色【杀】不可被响应。③若你的“☯”数为奇数,则其他角色至你的距离+1,且你不可响应红色【杀】。'; + if (player.countMark("spshidi") % 2 == 0) return '转换技,锁定技。①准备阶段/结束阶段开始时,若你发动此分支的累计次数为奇数/偶数,则你获得一个“☯”。②若你的“☯”数为偶数,则你至其他角色的距离-1,且你使用的黑色【杀】不可被响应。③若你的“☯”数为奇数,则其他角色至你的距离+1,且你不可响应红色【杀】。'; return '转换技,锁定技。①准备阶段/结束阶段开始时,若你发动此分支的累计次数为奇数/偶数,则你获得一个“☯”。②若你的“☯”数为偶数,则你至其他角色的距离-1,且你使用的黑色【杀】不可被响应。③若你的“☯”数为奇数,则其他角色至你的距离+1,且你不可响应红色【杀】。'; }, mobilexingxue: function (player) { - return lib.translate[ - (player.storage.mobileyanzhu ? "mobilexingxuex" : "mobilexingxue") + "_info" - ]; + return lib.translate[(player.storage.mobileyanzhu ? "mobilexingxuex" : "mobilexingxue") + "_info"]; }, shoufa: function (player) { const zhoufa = player.storage.zhoulin_zhoufa; const nodoudizhu = get.mode() == "doudizhu" ? "与你距离大于/不大于1的" : "与你距离大于/不大于2的"; - if (!zhoufa) - return ( - "当你受到伤害后/于一回合首次造成伤害后,你可以选择一名" + - nodoudizhu + - "角色,令其随机执行以下一项:豹,令其受到1点无来源伤害;鹰,你随机获得其一张牌;熊,你随机弃置其装备区的一张牌;兔,令其摸一张牌。" - ); + if (!zhoufa) return "当你受到伤害后/于一回合首次造成伤害后,你可以选择一名" + nodoudizhu + "角色,令其随机执行以下一项:豹,令其受到1点无来源伤害;鹰,你随机获得其一张牌;熊,你随机弃置其装备区的一张牌;兔,令其摸一张牌。"; let str = "当你受到伤害后/于一回合首次造成伤害后,你可以选择一名" + nodoudizhu + "角色,"; - str += [ - "令其受到1点无来源伤害", - "你随机获得其一张牌", - "你随机弃置其装备区的一张牌", - "令其摸一张牌", - ][["豹", "鹰", "熊", "兔"].indexOf(zhoufa)]; + str += ["令其受到1点无来源伤害", "你随机获得其一张牌", "你随机弃置其装备区的一张牌", "令其摸一张牌"][["豹", "鹰", "熊", "兔"].indexOf(zhoufa)]; return str + "。"; }, mbxuetu(player) { const xuetu = player.storage.mbxuetu, status = player.countMark("mbxuetu_status"); if (status === 0) { - if (!xuetu) - return '转换技。出牌阶段限一次,阴:你可以弃置一张牌,然后令一名角色回复1点体力;阳:你可以失去1点体力,然后令一名角色摸两张牌。'; + if (!xuetu) return '转换技。出牌阶段限一次,阴:你可以弃置一张牌,然后令一名角色回复1点体力;阳:你可以失去1点体力,然后令一名角色摸两张牌。'; return '转换技。出牌阶段限一次,阴:你可以弃置一张牌,然后令一名角色回复1点体力;阳:你可以失去1点体力,然后令一名角色摸两张牌。'; } else if (status === 1) { return lib.translate.mbxuetu_achieve_info; } else { - if (!xuetu) - return '转换技。出牌阶段限一次,阴:你可以回复1点体力,然后令一名角色弃置两张牌;阳:你可以摸一张牌,然后对一名角色造成1点伤害。'; + if (!xuetu) return '转换技。出牌阶段限一次,阴:你可以回复1点体力,然后令一名角色弃置两张牌;阳:你可以摸一张牌,然后对一名角色造成1点伤害。'; return '转换技。出牌阶段限一次,阴:你可以回复1点体力,然后令一名角色弃置两张牌;阳:你可以摸一张牌,然后对一名角色造成1点伤害。'; } }, mbzuoyou(player) { const mbzuoyou = player.storage.mbzuoyou; - if (mbzuoyou) - return '转换技。出牌阶段限一次,阴:你可以令一名角色摸两张牌,然后其弃置一张牌;阳:你可以令一名手牌数不少于二的角色弃置两张手牌,然后其获得1点护甲。'; + if (mbzuoyou) return '转换技。出牌阶段限一次,阴:你可以令一名角色摸两张牌,然后其弃置一张牌;阳:你可以令一名手牌数不少于二的角色弃置两张手牌,然后其获得1点护甲。'; return '转换技。出牌阶段限一次,阴:你可以令一名角色摸两张牌,然后其弃置一张牌;阳:你可以令一名手牌数不少于二的角色弃置两张手牌,然后其获得1点护甲。'; }, }, @@ -20137,124 +17655,94 @@ game.import("character", function () { ly_piliche: "霹雳车", ly_piliche_info: "当你对其他角色造成伤害后,你可以弃置其装备区内的所有牌。", polu: "破橹", - polu_info: - "锁定技,回合开始时,若【霹雳车】未加入游戏或在牌堆/弃牌堆内,则你使用之;当你受到1点伤害后,若你的装备区里没有【霹雳车】,则你摸一张牌并使用牌堆中的一张随机武器牌。", + polu_info: "锁定技,回合开始时,若【霹雳车】未加入游戏或在牌堆/弃牌堆内,则你使用之;当你受到1点伤害后,若你的装备区里没有【霹雳车】,则你摸一张牌并使用牌堆中的一张随机武器牌。", choulve: "筹略", - choulve_info: - "出牌阶段开始时,你可以令一名其他角色交给你一张牌,若其如此做,视为你使用上一张对你过造成伤害且不为延时锦囊牌的牌。", + choulve_info: "出牌阶段开始时,你可以令一名其他角色交给你一张牌,若其如此做,视为你使用上一张对你过造成伤害且不为延时锦囊牌的牌。", tunchu: "屯储", - tunchu_info: - "摸牌阶段,若你没有「粮」,你可以多摸两张牌。若如此做,摸牌阶段结束时,你可以将任意张手牌置于你的武将上,称为「粮」,只要你的武将牌上有「粮」,你便不能使用【杀】。", + tunchu_info: "摸牌阶段,若你没有「粮」,你可以多摸两张牌。若如此做,摸牌阶段结束时,你可以将任意张手牌置于你的武将上,称为「粮」,只要你的武将牌上有「粮」,你便不能使用【杀】。", shuliang: "输粮", - shuliang_info: - "一名角色的结束阶段开始时,若其手牌数少于体力值,你可以移去一张「粮」,然后该角色摸两张牌。", + shuliang_info: "一名角色的结束阶段开始时,若其手牌数少于体力值,你可以移去一张「粮」,然后该角色摸两张牌。", fenyin: "奋音", yingjian: "影箭", - fenyin_info: - "你的回合内,当你使用牌时,若此牌与你于此回合内使用的上一张牌的颜色不同,则你可以摸一张牌。", + fenyin_info: "你的回合内,当你使用牌时,若此牌与你于此回合内使用的上一张牌的颜色不同,则你可以摸一张牌。", yingjian_info: "准备阶段开始时,你可以视为使用一张无距离限制的【杀】。", dujin: "独进", dujin_info: "摸牌阶段,你可以多摸X+1张牌(X为你装备区里牌数的一半且向上取整)。", shixin: "释衅", shixin_info: "锁定技,当你受到火属性伤害时,你防止此伤害。", zhaohuo: "招祸", - zhaohuo_info: - "锁定技,当其他角色进入濒死状态时,你将体力上限调整为1点。若你的体力上限因此减少,则你摸X张牌。(X为你以此法减少的体力上限)", + zhaohuo_info: "锁定技,当其他角色进入濒死状态时,你将体力上限调整为1点。若你的体力上限因此减少,则你摸X张牌。(X为你以此法减少的体力上限)", yixiang: "义襄", - yixiang_info: - "每名角色的回合限一次,当你成为一名角色使用牌的目标后,若该角色的体力值大于你的体力值,你可以随机获得牌堆里的一张你没有的基本牌。", + yixiang_info: "每名角色的回合限一次,当你成为一名角色使用牌的目标后,若该角色的体力值大于你的体力值,你可以随机获得牌堆里的一张你没有的基本牌。", yirang: "揖让", - yirang_info: - "出牌阶段开始时,你可以将所有非基本牌交给一名体力上限大于你的其他角色,然后调整体力上限至与该角色相同并回复X点体力(X为你以此法交给其的牌的类别数)。", + yirang_info: "出牌阶段开始时,你可以将所有非基本牌交给一名体力上限大于你的其他角色,然后调整体力上限至与该角色相同并回复X点体力(X为你以此法交给其的牌的类别数)。", kuangcai: "狂才", - kuangcai_info: - "出牌阶段开始时,你可以令你此阶段内的主动出牌时间变为5秒。若如此做,你于此阶段内使用牌没距离和次数限制,且每当你于此阶段内使用牌时,你摸一张牌且主动出牌时间-1秒。若主动出牌时间减至0,则你结束出牌阶段。", + kuangcai_info: "出牌阶段开始时,你可以令你此阶段内的主动出牌时间变为5秒。若如此做,你于此阶段内使用牌没距离和次数限制,且每当你于此阶段内使用牌时,你摸一张牌且主动出牌时间-1秒。若主动出牌时间减至0,则你结束出牌阶段。", shejian: "舌剑", - shejian_info: - "弃牌阶段结束时,若你于此阶段弃置的所有牌花色均不相同,则你可以弃置一名其他角色的一张牌。", + shejian_info: "弃牌阶段结束时,若你于此阶段弃置的所有牌花色均不相同,则你可以弃置一名其他角色的一张牌。", xinfu_daigong: "怠攻", - xinfu_daigong_info: - "每回合限一次。当你受到伤害时,你可以展示所有手牌,然后令伤害来源选择一项:交给你一张与你所有手牌花色均不相同的一张牌,或防止此伤害。", + xinfu_daigong_info: "每回合限一次。当你受到伤害时,你可以展示所有手牌,然后令伤害来源选择一项:交给你一张与你所有手牌花色均不相同的一张牌,或防止此伤害。", xinfu_zhaoxin: "昭心", - xinfu_zhaoxin_info: - "出牌阶段限一次,你可以将任意张手牌置于武将牌上并摸等量的牌,称之为「望」(你至多拥有三张「望」)。你或你攻击范围内的一名其他角色的摸牌阶段结束后,其可以获得一张由你选择的「望」,然后你可以对其造成1点伤害。", + xinfu_zhaoxin_info: "出牌阶段限一次,你可以将任意张手牌置于武将牌上并摸等量的牌,称之为「望」(你至多拥有三张「望」)。你或你攻击范围内的一名其他角色的摸牌阶段结束后,其可以获得一张由你选择的「望」,然后你可以对其造成1点伤害。", zhaoxin_give: "昭心", zhaoxin_give_info: "", xinfu_qianchong: "谦冲", - xinfu_qianchong_info: - "锁定技,若你的装备区内有牌且:均为红色,则你视为拥有技能〖明哲〗。均为黑色,则你视为拥有技能〖帷幕〗。若均不满足,则出牌阶段开始时,你可以选择一种类别的牌,然后你本回合内使用该类别的牌时没有次数和距离限制。", + xinfu_qianchong_info: "锁定技,若你的装备区内有牌且:均为红色,则你视为拥有技能〖明哲〗。均为黑色,则你视为拥有技能〖帷幕〗。若均不满足,则出牌阶段开始时,你可以选择一种类别的牌,然后你本回合内使用该类别的牌时没有次数和距离限制。", qc_weimu: "帷幕", qc_weimu_info: "", qc_mingzhe: "明哲", qc_mingzhe_info: "", xinfu_shangjian: "尚俭", - xinfu_shangjian_info: - "锁定技。一名角色的结束阶段开始时,若你于此回合内不因使用装备牌而失去了X张或更少的牌,则你摸等量的牌(X为你的体力值)。", + xinfu_shangjian_info: "锁定技。一名角色的结束阶段开始时,若你于此回合内不因使用装备牌而失去了X张或更少的牌,则你摸等量的牌(X为你的体力值)。", rw_bagua_skill: "先天八卦阵", - rw_bagua_skill_info: - "当你需要使用或打出一张【闪】时,你可以进行判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。", + rw_bagua_skill_info: "当你需要使用或打出一张【闪】时,你可以进行判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。", rw_baiyin_skill: "照月狮子盔", - rw_baiyin_skill_info: - "锁定技,当你受到大于1的伤害时,你将伤害值改为1;当你失去装备区里的【照月狮子盔】时,你回复1点体力并摸两张牌。", + rw_baiyin_skill_info: "锁定技,当你受到大于1的伤害时,你将伤害值改为1;当你失去装备区里的【照月狮子盔】时,你回复1点体力并摸两张牌。", rw_lanyinjia: "精银甲", rw_lanyinjia_info: "你可以将一张手牌当做【闪】使用或打出。锁定技,【精银甲】不会无效。", rw_minguangkai_cancel: "耀光铠", - rw_minguangkai_cancel_info: - "锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。", + rw_minguangkai_cancel_info: "锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。", rw_minguangkai_link: "耀光铠", - rw_minguangkai_link_info: - "锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。", + rw_minguangkai_link_info: "锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。", rw_renwang_skill: "仁王金刚盾", rw_renwang_skill_info: "黑色【杀】和红桃【杀】对你无效。", rw_tengjia1: "桐油百韧甲", - rw_tengjia1_info: - "锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时,取消之。", + rw_tengjia1_info: "锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时,取消之。", rw_tengjia2: "桐油百韧甲", - rw_tengjia2_info: - "锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时,取消之。", + rw_tengjia2_info: "锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时,取消之。", rw_tengjia3: "桐油百韧甲", - rw_tengjia3_info: - "锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时,取消之。", + rw_tengjia3_info: "锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时,取消之。", rw_tengjia4: "桐油百韧甲", rewrite_bagua: "先天八卦阵", - rewrite_bagua_info: - "当你需要使用或打出一张【闪】时,你可以进行判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。", + rewrite_bagua_info: "当你需要使用或打出一张【闪】时,你可以进行判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。", rewrite_baiyin: "照月狮子盔", - rewrite_baiyin_info: - "锁定技,当你受到大于1的伤害时,你将伤害值改为1;当你失去装备区里的【照月狮子盔】时,你回复1点体力并摸两张牌。", + rewrite_baiyin_info: "锁定技,当你受到大于1的伤害时,你将伤害值改为1;当你失去装备区里的【照月狮子盔】时,你回复1点体力并摸两张牌。", rewrite_lanyinjia: "精银甲", rewrite_lanyinjia_info: "你可以将一张手牌当做【闪】使用或打出。锁定技,【精银甲】不会无效。", rewrite_minguangkai: "耀光铠", - rewrite_minguangkai_info: - "锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。", + rewrite_minguangkai_info: "锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。", rewrite_renwang: "仁王金刚盾", rewrite_renwang_info: "黑色【杀】和红桃【杀】对你无效。", rewrite_tengjia: "桐油百韧甲", - rewrite_tengjia_info: - "锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时,取消之。", + rewrite_tengjia_info: "锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时,取消之。", rewrite_zhuge: "元戎精械弩", rewrite_zhuge_info: "锁定技,你于出牌阶段内使用【杀】无次数限制。", rw_zhuge_skill: "诸葛连弩", rw_zhuge_skill_info: "锁定技,你于出牌阶段内使用【杀】无次数限制。", takaramono: "宝物", wolong_card: "卧龙", - wolong_card_info: - "对一名角色造成1点火焰伤害。若场上有存活的诸葛亮(火),则改为对至多两名角色各造成1点火焰伤害。", + wolong_card_info: "对一名角色造成1点火焰伤害。若场上有存活的诸葛亮(火),则改为对至多两名角色各造成1点火焰伤害。", fengchu_card: "凤雏", fengchu_card_info: "横置至多三名角色。若场上有存活的庞统(火),则改为横置至多四名角色。", xuanjian_card: "玄剑", - xuanjian_card_info: - "令一名角色摸一张牌并回复1点体力。若场上有存活的徐庶(将/界),则改为令一名角色摸一张牌并回复1点体力,然后你摸一张牌。", + xuanjian_card_info: "令一名角色摸一张牌并回复1点体力。若场上有存活的徐庶(将/界),则改为令一名角色摸一张牌并回复1点体力,然后你摸一张牌。", shuijing_card: "水镜", - shuijing_card_info: - "将一名角色装备区内的防具牌移动到另一名角色对应区域。若场上有存活的司马徽,则改为将1名角色装备区内的1件装备移动到另1角色对应区域。", + shuijing_card_info: "将一名角色装备区内的防具牌移动到另一名角色对应区域。若场上有存活的司马徽,则改为将1名角色装备区内的1件装备移动到另1角色对应区域。", xinfu_pingcai: "评才", - xinfu_pingcai_info: - "出牌阶段限一次,你可以挑选一个宝物并擦拭掉其上面的灰尘。然后,你可以根据宝物类型执行对应的效果。", + xinfu_pingcai_info: "出牌阶段限一次,你可以挑选一个宝物并擦拭掉其上面的灰尘。然后,你可以根据宝物类型执行对应的效果。", xinfu_pdgyingshi: "隐世", xinfu_pdgyingshi2: "隐世", - xinfu_pdgyingshi_info: - "锁定技,你始终跳过准备阶段,判定阶段,结束阶段。你不能被选择为延时锦囊牌的目标。", + xinfu_pdgyingshi_info: "锁定技,你始终跳过准备阶段,判定阶段,结束阶段。你不能被选择为延时锦囊牌的目标。", pcaudio_wolong_card: "卧龙", pcaudio_wolong_card_info: "", pcaudio_fengchu_card: "凤雏", @@ -20271,62 +17759,49 @@ game.import("character", function () { yizan_respond_shan: "翊赞", yizan_respond_shan_info: "", xinfu_longyuan: "龙渊", - xinfu_longyuan_info: - "觉醒技,准备阶段,若你本局游戏内发动过〖翊赞〗的次数大于等于3,则你修改〖翊赞〗。", + xinfu_longyuan_info: "觉醒技,准备阶段,若你本局游戏内发动过〖翊赞〗的次数大于等于3,则你修改〖翊赞〗。", yizan_rewrite: "翊赞·改", yizan_rewrite_info: "你可以将一张基本牌当做任意基本牌使用或打出。", yizan_count: "翊赞", yizan_count_info: "", xinfu_jingxie1: "精械", - xinfu_jingxie1_info: - "出牌阶段,你可以展示一张未强化过的【诸葛连弩】或标准包/军争包/SP包中的防具牌,然后对其进行强化。当你处于濒死状态时,你可以重铸一张防具牌,然后将体力回复至1点。", + xinfu_jingxie1_info: "出牌阶段,你可以展示一张未强化过的【诸葛连弩】或标准包/军争包/SP包中的防具牌,然后对其进行强化。当你处于濒死状态时,你可以重铸一张防具牌,然后将体力回复至1点。", xinfu_jingxie2: "精械", xinfu_jingxie2_info: "", xinfu_qiaosi: "巧思", - xinfu_qiaosi_info: - "出牌阶段限一次,你可以投掷一枚六面骰子,亮出牌堆顶的X张牌并获得之。然后,你选择一项:1.交给一名其他角色X张牌。2.弃置X张牌。(X为骰子的点数)", + xinfu_qiaosi_info: "出牌阶段限一次,你可以投掷一枚六面骰子,亮出牌堆顶的X张牌并获得之。然后,你选择一项:1.交给一名其他角色X张牌。2.弃置X张牌。(X为骰子的点数)", xin_xiahoudun: "手杀界夏侯惇", xin_xiahoudun_prefix: "手杀界", xinqingjian: "清俭", xinqingjian2: "清俭", - xinqingjian_info: - "每回合限一次。当你不因摸牌阶段的额定摸牌而得到牌后,你可以将任意张牌扣置于武将牌上。回合结束时,你将这些牌交给一名其他角色。若这些牌的数量大于1,你摸一张牌。", + xinqingjian_info: "每回合限一次。当你不因摸牌阶段的额定摸牌而得到牌后,你可以将任意张牌扣置于武将牌上。回合结束时,你将这些牌交给一名其他角色。若这些牌的数量大于1,你摸一张牌。", zhangyì: "张翼", jiakui: "贾逵", zhiyi: "执义", - zhiyi_info: - "锁定技,当你于一回合内使用或打出第一张基本牌时,你选择一项:1.摸一张牌。2.于此牌A(若此牌是因响应牌B而使用或打出的,则改为牌B)的使用或打出流程结算完成后,视为使用一张与此牌名称和属性相同的卡牌。", + zhiyi_info: "锁定技,当你于一回合内使用或打出第一张基本牌时,你选择一项:1.摸一张牌。2.于此牌A(若此牌是因响应牌B而使用或打出的,则改为牌B)的使用或打出流程结算完成后,视为使用一张与此牌名称和属性相同的卡牌。", rezhiyi: "执义", - rezhiyi_info: - "锁定技,一名角色的结束阶段开始时,若你本回合内使用或打出过基本牌,则你选择一项:1.摸一张牌。2.视为使用一张你本回合内使用或打出过的基本牌。", + rezhiyi_info: "锁定技,一名角色的结束阶段开始时,若你本回合内使用或打出过基本牌,则你选择一项:1.摸一张牌。2.视为使用一张你本回合内使用或打出过的基本牌。", zhongzuo: "忠佐", - zhongzuo_info: - "一名角色的结束阶段开始时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。", + zhongzuo_info: "一名角色的结束阶段开始时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。", wanlan: "挽澜", - wanlan_info: - "限定技,当一名角色进入濒死状态时,你可以弃置所有手牌(无牌可不弃)。其回复体力至1点,然后你对当前回合角色造成1点伤害。", + wanlan_info: "限定技,当一名角色进入濒死状态时,你可以弃置所有手牌(无牌可不弃)。其回复体力至1点,然后你对当前回合角色造成1点伤害。", re_jikang: "手杀嵇康", re_jikang_prefix: "手杀", shenpei: "审配", re_wangyun: "手杀王允", re_wangyun_prefix: "手杀", relianji: "连计", - relianji_info: - "出牌阶段限一次,你可以选择两名其他角色。第一名角色随机使用牌堆中的一张武器牌,然后这名角色视为对另一名角色随机使用一张下列的牌名的牌:【决斗】、【火攻】、【南蛮入侵】、【万箭齐发】或普【杀】。然后若此牌造成伤害,你获得X枚“连计”标记(X为此次扣减的体力值点数)。", + relianji_info: "出牌阶段限一次,你可以选择两名其他角色。第一名角色随机使用牌堆中的一张武器牌,然后这名角色视为对另一名角色随机使用一张下列的牌名的牌:【决斗】、【火攻】、【南蛮入侵】、【万箭齐发】或普【杀】。然后若此牌造成伤害,你获得X枚“连计”标记(X为此次扣减的体力值点数)。", remoucheng: "谋逞", - remoucheng_info: - "觉醒技,当一名角色因〖连计〗造成伤害后,若你拥有的“连计”标记数大于2,你加1点体力上限,回复1点体力,失去“连计”,获得“矜功”。", + remoucheng_info: "觉醒技,当一名角色因〖连计〗造成伤害后,若你拥有的“连计”标记数大于2,你加1点体力上限,回复1点体力,失去“连计”,获得“矜功”。", shouye: "守邺", - shouye_info: - "每回合限一次。当其他角色使用牌指定你为唯一目标时,你可以与其进行【对策】。若你赢,则你取消此牌的目标,且你于此牌结算完成后获得其对应的所有实体牌。", + shouye_info: "每回合限一次。当其他角色使用牌指定你为唯一目标时,你可以与其进行【对策】。若你赢,则你取消此牌的目标,且你于此牌结算完成后获得其对应的所有实体牌。", liezhi: "烈直", - liezhi_info: - "准备阶段,你可以依次弃置至多两名其他角色区域内的各一张牌。若你受到过伤害,则〖烈直〗于你的下个回合无效。", + liezhi_info: "准备阶段,你可以依次弃置至多两名其他角色区域内的各一张牌。若你受到过伤害,则〖烈直〗于你的下个回合无效。", xinzhanyi: "战意", - xinzhanyi_info: - "出牌阶段限一次,你可以弃置一张牌并失去1点体力,然后根据你弃置的牌获得以下效果直到回合结束:基本牌,你可以将一张基本牌当作杀、酒或桃使用,且你本回合第一次以此法使用的牌的回复值/伤害值+1;锦囊牌,摸三张牌且你使用的牌不能被【无懈可击】响应;装备牌,你使用【杀】指定唯一目标后,其弃置两张牌,然后你获得其中的一张。", + xinzhanyi_info: "出牌阶段限一次,你可以弃置一张牌并失去1点体力,然后根据你弃置的牌获得以下效果直到回合结束:基本牌,你可以将一张基本牌当作杀、酒或桃使用,且你本回合第一次以此法使用的牌的回复值/伤害值+1;锦囊牌,摸三张牌且你使用的牌不能被【无懈可击】响应;装备牌,你使用【杀】指定唯一目标后,其弃置两张牌,然后你获得其中的一张。", xinzhanyi_basic_backup: "战意", xinzhanyi_basic: "战意", xinzhanyi_equip: "战意", @@ -20334,22 +17809,18 @@ game.import("character", function () { meiyong: "姝勇", meiyong_info: "当你使用或打出【杀】时,你可以获得一名其他角色的一张牌,然后其摸一张牌。", rexushen: "许身", - rexushen_info: - "限定技,出牌阶段,你可以失去X点体力(X为场上男性角色的数量)。若你以此法进入了濒死状态,则当你因一名角色而脱离此濒死状态后,你可以令其获得技能〖武圣〗和〖当先〗。", + rexushen_info: "限定技,出牌阶段,你可以失去X点体力(X为场上男性角色的数量)。若你以此法进入了濒死状态,则当你因一名角色而脱离此濒死状态后,你可以令其获得技能〖武圣〗和〖当先〗。", rezhennan: "镇南", - rezhennan_info: - "当你成为其他角色使用的牌的目标后,若此牌的目标数大于该角色的体力值,则你可以弃置一张牌并对其造成1点伤害。", + rezhennan_info: "当你成为其他角色使用的牌的目标后,若此牌的目标数大于该角色的体力值,则你可以弃置一张牌并对其造成1点伤害。", hujinding: "手杀胡金定", hujinding_prefix: "手杀", huaizi: "怀子", huaizi_info: "锁定技,你的手牌上限为你的体力上限。", renshi: "仁释", - renshi_info: - "锁定技,当你受到【杀】的伤害时,若你已受伤,则你防止此伤害并获得此【杀】对应的所有实体牌,然后减1点体力上限。", + renshi_info: "锁定技,当你受到【杀】的伤害时,若你已受伤,则你防止此伤害并获得此【杀】对应的所有实体牌,然后减1点体力上限。", wuyuan: "武缘", - wuyuan_info: - "出牌阶段限一次,你可将一张【杀】交给一名其他角色,然后你回复1点体力,其摸一张牌。若此【杀】为:红色【杀】,其回复1点体力;属性【杀】,其改为摸两张牌。", + wuyuan_info: "出牌阶段限一次,你可将一张【杀】交给一名其他角色,然后你回复1点体力,其摸一张牌。若此【杀】为:红色【杀】,其回复1点体力;属性【杀】,其改为摸两张牌。", re_weiwenzhugezhi: "手杀卫温诸葛直", re_weiwenzhugezhi_prefix: "手杀", @@ -20359,24 +17830,19 @@ game.import("character", function () { re_zhanggong: "手杀张恭", re_zhanggong_prefix: "手杀", reqianxin: "遣信", - reqianxin_info: - "出牌阶段限一次,你可将至多两张手牌随机交给等量的其他角色,称为「信」。这些角色的准备阶段开始时,若其手牌中有「信」,则其选择一项:令你摸两张牌,本回合手牌上限-2。", + reqianxin_info: "出牌阶段限一次,你可将至多两张手牌随机交给等量的其他角色,称为「信」。这些角色的准备阶段开始时,若其手牌中有「信」,则其选择一项:令你摸两张牌,本回合手牌上限-2。", rebiaozhao: "表召", - rebiaozhao_info: - "结束阶段,你可以将一张牌置于武将牌上,称为「表」。当有一张与「表」点数相同的牌进入弃牌堆后,你将「表」置入弃牌堆并失去1点体力。准备阶段,若你的武将牌上有「表」,则你移去「表」并选择一名角色,该角色回复1点体力并摸三张牌。", + rebiaozhao_info: "结束阶段,你可以将一张牌置于武将牌上,称为「表」。当有一张与「表」点数相同的牌进入弃牌堆后,你将「表」置入弃牌堆并失去1点体力。准备阶段,若你的武将牌上有「表」,则你移去「表」并选择一名角色,该角色回复1点体力并摸三张牌。", rebiaozhao2: "表召", rebiaozhao2_info: "", rebiaozhao3: "表召", rebiaozhao3_info: "", refuhai: "浮海", - refuhai_info: - "出牌阶段限一次,你可令其他角色同时在「潮起」和「潮落」中选择一项,并依次展示这些角色的选项。若从你下家开始选择了相同选项的角色数目大于1,则你摸X张牌(X为连续相同结果的数量)。", + refuhai_info: "出牌阶段限一次,你可令其他角色同时在「潮起」和「潮落」中选择一项,并依次展示这些角色的选项。若从你下家开始选择了相同选项的角色数目大于1,则你摸X张牌(X为连续相同结果的数量)。", qiaosi: "巧思", - qiaosi_info: - "出牌阶段限一次,你可以表演「大键角色图」并根据表演结果获得相应的牌。然后,你选择一项:1.弃置X张牌。2.将X张牌交给一名其他角色。(X为你以此法得到的牌数)", + qiaosi_info: "出牌阶段限一次,你可以表演「大键角色图」并根据表演结果获得相应的牌。然后,你选择一项:1.弃置X张牌。2.将X张牌交给一名其他角色。(X为你以此法得到的牌数)", qiaosi_map: "大键角色图", - qiaosi_map_info: - "
  • 星野 梦美:锦囊牌*2
  • 能美 库特莉亚芙卡:装备牌/【杀】/【酒】*1
  • 友利 奈绪:【杀】/【酒】*1
  • 神尾 观铃:【闪】/【桃】*1
  • 伊吹 风子:锦囊牌/【闪】/【桃】*1
  • 仲村 由理:装备牌*2
  • Illustration:うら;Twitter:@ura530", + qiaosi_map_info: "
  • 星野 梦美:锦囊牌*2
  • 能美 库特莉亚芙卡:装备牌/【杀】/【酒】*1
  • 友利 奈绪:【杀】/【酒】*1
  • 神尾 观铃:【闪】/【桃】*1
  • 伊吹 风子:锦囊牌/【闪】/【桃】*1
  • 仲村 由理:装备牌*2
  • Illustration:うら;Twitter:@ura530", qiaosi_c1: ' ', //星野 梦美 qiaosi_c2: ' ', @@ -20393,79 +17859,63 @@ game.import("character", function () { yangbiao: "手杀杨彪", yangbiao_prefix: "手杀", zhaohan: "昭汉", - zhaohan_info: - "锁定技,你的第1-4个准备阶段开始时,你加1点体力上限并回复1点体力,你的第5-7个准备阶段开始时,你减1点体力上限。", + zhaohan_info: "锁定技,你的第1-4个准备阶段开始时,你加1点体力上限并回复1点体力,你的第5-7个准备阶段开始时,你减1点体力上限。", rangjie: "让节", - rangjie_info: - "当你受到1点伤害后,你可以选择一项并摸一张牌:获得牌堆里你选择的类型的一张牌,或移动场上的一张牌。", + rangjie_info: "当你受到1点伤害后,你可以选择一项并摸一张牌:获得牌堆里你选择的类型的一张牌,或移动场上的一张牌。", yizheng: "义争", yizheng2: "义争", - yizheng_info: - "出牌阶段限一次,你可以和一名体力值不大于你的其他角色拼点。若你赢,其跳过下个摸牌阶段。若你没赢,你减1点体力上限。", + yizheng_info: "出牌阶段限一次,你可以和一名体力值不大于你的其他角色拼点。若你赢,其跳过下个摸牌阶段。若你没赢,你减1点体力上限。", re_heqi: "手杀贺齐", re_heqi_prefix: "手杀", reqizhou: "绮胄", - reqizhou_info: - "锁定技,你根据装备区里牌的花色数获得以下技能:1种或以上:〖英姿〗;2种或以上:〖奇袭〗;3种或以上:〖旋风〗。", + reqizhou_info: "锁定技,你根据装备区里牌的花色数获得以下技能:1种或以上:〖英姿〗;2种或以上:〖奇袭〗;3种或以上:〖旋风〗。", reshanxi: "闪袭", reshanxi2: "闪袭", - reshanxi_info: - "出牌阶段开始时,你可以弃置一张红色基本牌并选择一名有牌的其他角色,将其的至多X张牌置于其的武将牌上(X为你的体力值)。回合结束时,该角色获得这些牌。", + reshanxi_info: "出牌阶段开始时,你可以弃置一张红色基本牌并选择一名有牌的其他角色,将其的至多X张牌置于其的武将牌上(X为你的体力值)。回合结束时,该角色获得这些牌。", chendeng: "手杀陈登", chendeng_prefix: "手杀", zhouxuan: "周旋", zhouxuan2: "周旋", - zhouxuan_info: - "出牌阶段限一次,你可以弃置一张牌并指定一名角色,然后选择一个基本牌的名称或非基本牌的类型。其使用或打出下一张牌时,若此牌的名称或类型和你选择的相同,则你观看牌堆顶的三张牌,然后将这些牌以任意分割方式交给任意名角色。", + zhouxuan_info: "出牌阶段限一次,你可以弃置一张牌并指定一名角色,然后选择一个基本牌的名称或非基本牌的类型。其使用或打出下一张牌时,若此牌的名称或类型和你选择的相同,则你观看牌堆顶的三张牌,然后将这些牌以任意分割方式交给任意名角色。", fengji: "丰积", - fengji_info: - "锁定技,回合结束时,你记录你的手牌数。准备阶段开始时,若你的手牌数不小于你记录的手牌数,则你摸两张牌且本回合手牌上限为体力上限。", + fengji_info: "锁定技,回合结束时,你记录你的手牌数。准备阶段开始时,若你的手牌数不小于你记录的手牌数,则你摸两张牌且本回合手牌上限为体力上限。", re_guanqiujian: "手杀毌丘俭", re_guanqiujian_prefix: "手杀", rezhengrong: "征荣", rehongju: "鸿举", reqingce: "清侧", reqingce_backup: "清侧", - rezhengrong_info: - "当你于出牌阶段使用的指定了其他角色为目标的牌结算完成后,若此牌是你本局游戏内于出牌阶段使用的指定了其他角色为目标的第偶数张牌,则你可以将一名其他角色角色的随机一张牌置于你的武将牌上,称为「荣」。", - rehongju_info: - "觉醒技,准备阶段,若你武将牌上「荣」的数量不小于3且有角色死亡,则你摸等同于「荣」数量的牌。然后可以用任意数量的手牌交换等量的「荣」。你减1点体力上限并获得技能〖清侧〗。", + rezhengrong_info: "当你于出牌阶段使用的指定了其他角色为目标的牌结算完成后,若此牌是你本局游戏内于出牌阶段使用的指定了其他角色为目标的第偶数张牌,则你可以将一名其他角色角色的随机一张牌置于你的武将牌上,称为「荣」。", + rehongju_info: "觉醒技,准备阶段,若你武将牌上「荣」的数量不小于3且有角色死亡,则你摸等同于「荣」数量的牌。然后可以用任意数量的手牌交换等量的「荣」。你减1点体力上限并获得技能〖清侧〗。", reqingce_info: "出牌阶段,你可以将一张「荣」置入弃牌堆,然后弃置场上的一张牌。", re_pangtong: "手杀界庞统", re_pangtong_prefix: "手杀界", dongcheng: "手杀董承", dongcheng_prefix: "手杀", chengzhao: "承诏", - chengzhao_info: - "一名角色的结束阶段,若你于本回合内获得了两张以上的牌,则你可以与一名其他角色拼点。若你赢,你视为对其使用一张无视防具的【杀】。", + chengzhao_info: "一名角色的结束阶段,若你于本回合内获得了两张以上的牌,则你可以与一名其他角色拼点。若你赢,你视为对其使用一张无视防具的【杀】。", yangyi: "手杀杨仪", yangyi_prefix: "手杀", duoduan: "度断", - duoduan_info: - "每回合限一次,当你成为【杀】的目标后,你可以重铸一张牌。若如此做,你选择一项:①令使用者摸两张牌,且此【杀】无效。②令使用弃置一张牌,且你不能响应此【杀】。", + duoduan_info: "每回合限一次,当你成为【杀】的目标后,你可以重铸一张牌。若如此做,你选择一项:①令使用者摸两张牌,且此【杀】无效。②令使用弃置一张牌,且你不能响应此【杀】。", gongsun: "共损", - gongsun_info: - "出牌阶段开始时,你可以弃置两张牌并指定一名其他角色。你选择一个基本牌或普通锦囊牌的牌名。直到你的下回合开始或你死亡,你与其不能使用或打出或弃置此名称的牌。", + gongsun_info: "出牌阶段开始时,你可以弃置两张牌并指定一名其他角色。你选择一个基本牌或普通锦囊牌的牌名。直到你的下回合开始或你死亡,你与其不能使用或打出或弃置此名称的牌。", gongsun_shadow: "共损", xin_chengpu: "手杀界程普", xin_chengpu_prefix: "手杀界", relihuo: "疠火", relihuo_damage: "疠火", relihuo_baigei: "疠火", - relihuo_info: - "当你使用普【杀】时,你可以将此杀改为火属性。若如此做,当你因执行此【杀】的效果而对横置角色造成伤害时,此伤害+1;当你使用的火【杀】结算完成后,你失去X点体力(X为你因此【杀】造成的伤害总点数的一半且向下取整)。", + relihuo_info: "当你使用普【杀】时,你可以将此杀改为火属性。若如此做,当你因执行此【杀】的效果而对横置角色造成伤害时,此伤害+1;当你使用的火【杀】结算完成后,你失去X点体力(X为你因此【杀】造成的伤害总点数的一半且向下取整)。", dengzhi: "手杀邓芝", dengzhi_prefix: "手杀", jimeng: "急盟", - jimeng_info: - "出牌阶段开始时,你可以获得一名其他角色的一张牌,然后交给该角色X张牌(X为你当前体力值)。", + jimeng_info: "出牌阶段开始时,你可以获得一名其他角色的一张牌,然后交给该角色X张牌(X为你当前体力值)。", shuaiyan: "率言", - shuaiyan_info: - "弃牌阶段开始时,若你的手牌数大于1,则你可以展示所有手牌,然后你令一名其他角色交给你一张牌。", + shuaiyan_info: "弃牌阶段开始时,若你的手牌数大于1,则你可以展示所有手牌,然后你令一名其他角色交给你一张牌。", zhengxuan: "郑玄", zhengjing: "整经", - zhengjing_info: - "出牌阶段,你可以整理卡牌。然后,你将整理出的卡牌中的至少一张作为“经”置于一名角色的武将牌上,然后获得其余的牌。该角色的准备阶段获得这些牌,且跳过此回合的判定和摸牌阶段。", + zhengjing_info: "出牌阶段,你可以整理卡牌。然后,你将整理出的卡牌中的至少一张作为“经”置于一名角色的武将牌上,然后获得其余的牌。该角色的准备阶段获得这些牌,且跳过此回合的判定和摸牌阶段。", zhengjing2: "整经", mobile_yijiang: "将星独具", @@ -20478,60 +17928,47 @@ game.import("character", function () { yj_ganning: "☆甘宁", yj_ganning_prefix: "☆", xhzhiyan: "治严", - xhzhiyan_info: - "出牌阶段,若你的手牌数不等于体力上限,则你可以将手牌摸至/弃至手牌上限,然后本回合不能对其他角色使用牌/可以将弃置的一张牌交给一名其他角色。", + xhzhiyan_info: "出牌阶段,若你的手牌数不等于体力上限,则你可以将手牌摸至/弃至手牌上限,然后本回合不能对其他角色使用牌/可以将弃置的一张牌交给一名其他角色。", zhilve: "知略", - zhilve_info: - "锁定技,准备阶段,你选择一项:1.移动场上装备区的一张牌并失去1点体力。2.移动场上判定区的一张牌并令本回合手牌上限-1。3.本回合摸牌阶段多摸一张牌且使用的第一张【杀】无距离限制且不计入次数限制。", + zhilve_info: "锁定技,准备阶段,你选择一项:1.移动场上装备区的一张牌并失去1点体力。2.移动场上判定区的一张牌并令本回合手牌上限-1。3.本回合摸牌阶段多摸一张牌且使用的第一张【杀】无距离限制且不计入次数限制。", xinzhilve: "知略", xinzhilve_backup: "知略", xinzhilve_mark: "知略", - xinzhilve_info: - "出牌阶段限一次,你可以失去1点体力并选择一项:1.移动场上的一张牌;2.视为使用一张无距离限制且不计入次数限制的【杀】并摸一张牌。然后你本回合的手牌上限+1。", + xinzhilve_info: "出牌阶段限一次,你可以失去1点体力并选择一项:1.移动场上的一张牌;2.视为使用一张无距离限制且不计入次数限制的【杀】并摸一张牌。然后你本回合的手牌上限+1。", xinxhzhiyan: "治严", xinxhzhiyan_false: "治严", - xinxhzhiyan_info: - "出牌阶段每项各限一次,若你的手牌数:大于体力值,则你可以将X张手牌交给一名其他角色(X为你的手牌数与体力值之差);小于体力上限,则你可以摸X张牌且本阶段内不能再对其他角色使用牌。(X为你的手牌数与体力上限之差)", + xinxhzhiyan_info: "出牌阶段每项各限一次,若你的手牌数:大于体力值,则你可以将X张手牌交给一名其他角色(X为你的手牌数与体力值之差);小于体力上限,则你可以摸X张牌且本阶段内不能再对其他角色使用牌。(X为你的手牌数与体力上限之差)", weifeng: "威风", weifeng2: "威风", weifeng3: "威风", - weifeng_info: - "锁定技,当你于出牌阶段内使用第一张伤害性基本牌或普通锦囊牌后,你令此牌的一名没有“惧”的其他目标角色获得一枚名称为此牌牌名的“惧”。有“惧”的角色受到伤害时,其移去“惧”,然后若造成伤害的牌名称和“惧”:相同,此伤害+1;不同,你获得该角色的一张牌。准备阶段开始时或你死亡时,你移去场上的所有“惧”。", + weifeng_info: "锁定技,当你于出牌阶段内使用第一张伤害性基本牌或普通锦囊牌后,你令此牌的一名没有“惧”的其他目标角色获得一枚名称为此牌牌名的“惧”。有“惧”的角色受到伤害时,其移去“惧”,然后若造成伤害的牌名称和“惧”:相同,此伤害+1;不同,你获得该角色的一张牌。准备阶段开始时或你死亡时,你移去场上的所有“惧”。", gnjinfan: "锦帆", gnjinfan_gain: "锦帆", - gnjinfan_info: - "弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。你可以如手牌般使用或打出“铃”。当有“铃”移动到处理区后,你从牌堆中获得与“铃”花色相同的一张牌。", + gnjinfan_info: "弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。你可以如手牌般使用或打出“铃”。当有“铃”移动到处理区后,你从牌堆中获得与“铃”花色相同的一张牌。", gnsheque: "射却", - gnsheque_info: - "一名其他角色的准备阶段开始时,若其装备区内有牌,则你可以对其使用一张【杀】(无距离关系的限制且无视防具)。", + gnsheque_info: "一名其他角色的准备阶段开始时,若其装备区内有牌,则你可以对其使用一张【杀】(无距离关系的限制且无视防具)。", sp_sufei: "手杀苏飞", sp_sufei_prefix: "手杀", zhengjian: "诤荐", zhengjian_draw: "诤荐", zhengjian_mark: "诤荐", - zhengjian_info: - "锁定技,结束阶段,你令一名角色获得一枚“诤”。回合开始时,你令有“诤”的角色移去“诤”并摸X张牌(X为其最后一次获得“诤”后使用和打出的牌数,且至多不能超过其体力上限或5)。", + zhengjian_info: "锁定技,结束阶段,你令一名角色获得一枚“诤”。回合开始时,你令有“诤”的角色移去“诤”并摸X张牌(X为其最后一次获得“诤”后使用和打出的牌数,且至多不能超过其体力上限或5)。", gaoyuan: "告援", - gaoyuan_info: - "当你成为【杀】的目标时,你可弃置一张牌将此【杀】转移给一名有“诤”且不是此【杀】使用者的其他角色。", + gaoyuan_info: "当你成为【杀】的目标时,你可弃置一张牌将此【杀】转移给一名有“诤”且不是此【杀】使用者的其他角色。", tongqu: "通渠", - tongqu_info: - "游戏开始时,你拥有一个“渠”标记。准备阶段,你可以失去1点体力令一名没有“渠”标记的角色获得“渠”标记。有“渠”的角色摸牌阶段额外摸一张牌,然后将一张牌交给其他有“渠”的角色或弃置。若以此法给出的是装备牌则使用之。当有“渠”的角色进入濒死状态时,移除其“渠”标记。", + tongqu_info: "游戏开始时,你拥有一个“渠”标记。准备阶段,你可以失去1点体力令一名没有“渠”标记的角色获得“渠”标记。有“渠”的角色摸牌阶段额外摸一张牌,然后将一张牌交给其他有“渠”的角色或弃置。若以此法给出的是装备牌则使用之。当有“渠”的角色进入濒死状态时,移除其“渠”标记。", xinwanlan: "挽澜", - xinwanlan_info: - "当一名角色受到伤害值不小于体力值的伤害时,你可以弃置装备区中的所有牌(至少一张) 防止此伤害。", + xinwanlan_info: "当一名角色受到伤害值不小于体力值的伤害时,你可以弃置装备区中的所有牌(至少一张) 防止此伤害。", re_xusheng: "手杀界徐盛", re_xusheng_prefix: "手杀界", re_dongzhuo: "手杀界董卓", re_dongzhuo_prefix: "手杀界", rejiuchi: "酒池", - rejiuchi_info: - "你可以将一张黑桃手牌当做【酒】使用。当你于回合内使用带有【酒】效果的【杀】造成伤害时,你令你的〖崩坏〗失效直到回合结束。", + rejiuchi_info: "你可以将一张黑桃手牌当做【酒】使用。当你于回合内使用带有【酒】效果的【杀】造成伤害时,你令你的〖崩坏〗失效直到回合结束。", furong: "手杀傅肜", furong_prefix: "手杀", xuewei: "血卫", - xuewei_info: - "准备阶段,你可以选择一名其他角色(仅自己可见)。若如此做,直到你的下回合开始前,当其第一次受到伤害时,你防止此伤害,改为由你受到等量的伤害并对伤害来源造成等量同属性的伤害。", + xuewei_info: "准备阶段,你可以选择一名其他角色(仅自己可见)。若如此做,直到你的下回合开始前,当其第一次受到伤害时,你防止此伤害,改为由你受到等量的伤害并对伤害来源造成等量同属性的伤害。", liechi: "烈斥", liechi_info: "锁定技,当你进入濒死状态时,伤害来源弃置一张牌。", xin_liaohua: "手杀界廖化", @@ -20539,47 +17976,37 @@ game.import("character", function () { redangxian: "当先", redangxian_info: "锁定技,回合开始时,你从弃牌堆中获得一张【杀】并进行一个额外的出牌阶段。", refuli: "伏枥", - refuli_info: - "限定技,当你处于濒死状态时,你可以将体力值回复至X点(X为势力数)。然后若你的体力值为全场唯一最多,你翻面。", + refuli_info: "限定技,当你处于濒死状态时,你可以将体力值回复至X点(X为势力数)。然后若你的体力值为全场唯一最多,你翻面。", xin_caozhang: "手杀界曹彰", xin_caozhang_prefix: "手杀界", rejiangchi: "将驰", - rejiangchi_info: - "出牌阶段开始时,你可以选择一项:1、摸一张牌,若如此做,你本阶段内不能使用【杀】。 2、弃置一张牌,若如此做,此阶段你使用【杀】无距离限制且你可以额外使用一张【杀】。", + rejiangchi_info: "出牌阶段开始时,你可以选择一项:1、摸一张牌,若如此做,你本阶段内不能使用【杀】。 2、弃置一张牌,若如此做,此阶段你使用【杀】无距离限制且你可以额外使用一张【杀】。", rezhenxing: "镇行", - rezhenxing_info: - "结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的三张牌,然后你获得其中与其余牌花色均不相同的一张牌。", + rezhenxing_info: "结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的三张牌,然后你获得其中与其余牌花色均不相同的一张牌。", xin_jianyong: "手杀界简雍", xin_jianyong_prefix: "手杀界", xinqiaoshui: "巧说", - xinqiaoshui_info: - "出牌阶段限一次,你可以和一名其他角色拼点。若你赢,则你本阶段内使用的下一张基本牌或普通锦囊牌可以增加减少一个目标。若你没赢,你本阶段内不能使用锦囊牌。", + xinqiaoshui_info: "出牌阶段限一次,你可以和一名其他角色拼点。若你赢,则你本阶段内使用的下一张基本牌或普通锦囊牌可以增加减少一个目标。若你没赢,你本阶段内不能使用锦囊牌。", xinjyzongshi: "纵适", - xinjyzongshi_info: - "当你拼点后,你可以观看牌堆顶的一张牌,然后选择一项:获得此牌,或获得两张拼点牌中点数较小的一张。", + xinjyzongshi_info: "当你拼点后,你可以观看牌堆顶的一张牌,然后选择一项:获得此牌,或获得两张拼点牌中点数较小的一张。", dingyuan: "手杀丁原", dingyuan_prefix: "手杀", beizhu: "备诛", beizhu_draw: "备诛", - beizhu_info: - "出牌阶段限一次,你可以观看一名其他角色的手牌。若其中:没有【杀】,你弃置其一张牌,然后你可令其获得牌堆中的一张【杀】;有【杀】,其依次对你使用这些【杀】,当你因此受到1点伤害后,你摸一张牌。", + beizhu_info: "出牌阶段限一次,你可以观看一名其他角色的手牌。若其中:没有【杀】,你弃置其一张牌,然后你可令其获得牌堆中的一张【杀】;有【杀】,其依次对你使用这些【杀】,当你因此受到1点伤害后,你摸一张牌。", xin_zhuran: "手杀界朱然", xin_zhuran_prefix: "手杀界", mobiledanshou: "胆守", - mobiledanshou_info: - "一名其他角色的结束阶段开始时,若X:为0,你摸一张牌;不等于0,你可弃置X张牌并对其造成1点伤害(X为其本回合内使用的目标包含你的牌的数量)。", + mobiledanshou_info: "一名其他角色的结束阶段开始时,若X:为0,你摸一张牌;不等于0,你可弃置X张牌并对其造成1点伤害(X为其本回合内使用的目标包含你的牌的数量)。", yanghuiyu: "羊徽瑜", hongyi: "弘仪", hongyi2: "弘仪", - hongyi_info: - "出牌阶段限一次,你可以选择一名其他角色。你的下回合开始前,该角色造成伤害时进行判定,若结果为:黑色,此伤害-1。红色,受到伤害的角色摸一张牌。", + hongyi_info: "出牌阶段限一次,你可以选择一名其他角色。你的下回合开始前,该角色造成伤害时进行判定,若结果为:黑色,此伤害-1。红色,受到伤害的角色摸一张牌。", requanfeng: "劝封", requanfeng_gain: "劝封", - requanfeng_info: - "限定技。①其他角色死亡时,你可失去〖弘仪〗,然后获得其武将牌上的所有非主公技,非隐匿技和非Charlotte技,加1点体力上限并回复1点体力。②当你处于濒死状态时,你可以加2点体力上限,然后回复4点体力。", + requanfeng_info: "限定技。①其他角色死亡时,你可失去〖弘仪〗,然后获得其武将牌上的所有非主公技,非隐匿技和非Charlotte技,加1点体力上限并回复1点体力。②当你处于濒死状态时,你可以加2点体力上限,然后回复4点体力。", quanfeng: "劝封", - quanfeng_info: - "锁定技,限定技,一名角色死亡时,你选择获得其的一个技能(主公技,限定技,觉醒技,隐匿技,使命技,带有Charlotte标签的技能除外),然后加1点体力上限并回复1点体力。", + quanfeng_info: "锁定技,限定技,一名角色死亡时,你选择获得其的一个技能(主公技,限定技,觉醒技,隐匿技,使命技,带有Charlotte标签的技能除外),然后加1点体力上限并回复1点体力。", simashi: "手杀司马师", simashi_prefix: "手杀", baiyi: "败移", @@ -20587,11 +18014,9 @@ game.import("character", function () { jinglve: "景略", jinglve2: "景略", jinglve3: "景略", - jinglve_info: - "出牌阶段限一次,若场上没有与你对应的「死士」牌,则你可以观看一名其他角色的手牌,将其中一张牌标记为「死士」。当其使用对应的实体牌中包含「死士」的牌时,你取消此牌的所有目标。当「死士」牌不因使用而进入弃牌堆,或其回合结束后,若「死士」牌仍在其区域内,则你获得此牌。", + jinglve_info: "出牌阶段限一次,若场上没有与你对应的「死士」牌,则你可以观看一名其他角色的手牌,将其中一张牌标记为「死士」。当其使用对应的实体牌中包含「死士」的牌时,你取消此牌的所有目标。当「死士」牌不因使用而进入弃牌堆,或其回合结束后,若「死士」牌仍在其区域内,则你获得此牌。", shanli: "擅立", - shanli_info: - "觉醒技,准备阶段,若你已发动过〖败移〗且对至少两名角色发动过〖景略〗,则你减1点体力上限并选择一名角色。系统随机选择三个不为〖忘隙(仲村由理)〗的主公技,然后你选择其中一个技能,令其获得之。其将交互表情中的【拖鞋】和【酒杯】替换为【枷锁】和【玉玺】。", + shanli_info: "觉醒技,准备阶段,若你已发动过〖败移〗且对至少两名角色发动过〖景略〗,则你减1点体力上限并选择一名角色。系统随机选择三个不为〖忘隙(仲村由理)〗的主公技,然后你选择其中一个技能,令其获得之。其将交互表情中的【拖鞋】和【酒杯】替换为【枷锁】和【玉玺】。", re_lingtong: "手杀界凌统", re_lingtong_prefix: "手杀界", re_liubiao: "手杀界刘表", @@ -20599,13 +18024,11 @@ game.import("character", function () { hucheer: "手杀胡车儿", hucheer_prefix: "手杀", daoji: "盗戟", - daoji_info: - "出牌阶段限一次,你可以弃置一张非基本牌并选择一名装备区里有牌的其他角色,你获得其装备区中的一张牌并使用之。若你以此法得到的牌是武器牌,则你使用此牌后对其造成1点伤害。", + daoji_info: "出牌阶段限一次,你可以弃置一张非基本牌并选择一名装备区里有牌的其他角色,你获得其装备区中的一张牌并使用之。若你以此法得到的牌是武器牌,则你使用此牌后对其造成1点伤害。", xin_hansui: "手杀韩遂", xin_hansui_prefix: "手杀", xinniluan: "逆乱", - xinniluan_info: - "其他角色的结束阶段,若其本回合对除其以外的角色使用过牌,则你可以对其使用一张【杀】。若以此法使用的【杀】造成伤害,则你弃置其一张牌。", + xinniluan_info: "其他角色的结束阶段,若其本回合对除其以外的角色使用过牌,则你可以对其使用一张【杀】。若以此法使用的【杀】造成伤害,则你弃置其一张牌。", xiaoxi_hansui: "骁袭", xiaoxi_hansui_info: "你可以将一张黑色牌当做【杀】使用或打出。", xin_zhangfei: "手杀界张飞", @@ -20613,8 +18036,7 @@ game.import("character", function () { liyong: "厉勇", liyong2: "厉勇", liyong3: "厉勇", - liyong_info: - "锁定技,若你于出牌阶段内使用的【杀】被【闪】抵消,则你获得如下效果:你本回合使用的下一张【杀】不可被响应且伤害+1,指定的目标本回合非锁定技失效,当此【杀】造成伤害后,若目标角色未死亡,你失去1点体力。", + liyong_info: "锁定技,若你于出牌阶段内使用的【杀】被【闪】抵消,则你获得如下效果:你本回合使用的下一张【杀】不可被响应且伤害+1,指定的目标本回合非锁定技失效,当此【杀】造成伤害后,若目标角色未死亡,你失去1点体力。", gongsunkang: "公孙康", juliao: "据辽", juliao_info: "锁定技,其他角色计算与你的距离始终+X(X为场上势力数-1)。", @@ -20623,28 +18045,23 @@ game.import("character", function () { taomie2: "讨灭", taomie3: "讨灭", taomie4: "讨灭", - taomie_info: - "当你受到伤害后或当你造成伤害后,你可以令伤害来源或受伤角色获得“讨灭”标记(如场上已有标记则转移给该角色);你和拥有“讨灭”标记的角色视为在彼此的攻击范围内,且当你对该角色造成伤害时,选择一项:1. 此伤害+1;2. 你获得其区域内的一张牌并可将之交给另一名角色;3. 依次执行前两项并于伤害结算后弃置其“讨灭”标记。", + taomie_info: "当你受到伤害后或当你造成伤害后,你可以令伤害来源或受伤角色获得“讨灭”标记(如场上已有标记则转移给该角色);你和拥有“讨灭”标记的角色视为在彼此的攻击范围内,且当你对该角色造成伤害时,选择一项:1. 此伤害+1;2. 你获得其区域内的一张牌并可将之交给另一名角色;3. 依次执行前两项并于伤害结算后弃置其“讨灭”标记。", xin_guohuai: "手杀界郭淮", xin_guohuai_prefix: "手杀界", mobilejingce: "精策", - mobilejingce_info: - "结束阶段,若此回合因使用或打出而置入弃牌堆的牌的数量不小于你的体力值,则你可以摸两张牌。", + mobilejingce_info: "结束阶段,若此回合因使用或打出而置入弃牌堆的牌的数量不小于你的体力值,则你可以摸两张牌。", xin_panzhangmazhong: "手杀界潘璋马忠", xin_panzhangmazhong_prefix: "手杀界", xinduodao: "夺刀", xinduodao_info: "当你受到伤害后,你可以获得伤害来源装备区里的武器牌。", xinanjian: "暗箭", - xinanjian_info: - "锁定技,当你使用【杀】指定目标后,若你不在目标角色攻击范围内,你选择一项:1. 令其无法响应此【杀】;2. 其受到此【杀】造成的伤害+1。", + xinanjian_info: "锁定技,当你使用【杀】指定目标后,若你不在目标角色攻击范围内,你选择一项:1. 令其无法响应此【杀】;2. 其受到此【杀】造成的伤害+1。", xin_fuhuanghou: "手杀界伏寿", xin_fuhuanghou_prefix: "手杀界", xinzhuikong: "惴恐", - xinzhuikong_info: - "每轮限一次,其他角色的回合开始时,若其体力值不小于你,你可与其拼点。若你赢,其本回合无法使用牌指定除其以外的角色为目标;若你没赢,你获得其拼点的牌,然后其视为对你使用一张【杀】。", + xinzhuikong_info: "每轮限一次,其他角色的回合开始时,若其体力值不小于你,你可与其拼点。若你赢,其本回合无法使用牌指定除其以外的角色为目标;若你没赢,你获得其拼点的牌,然后其视为对你使用一张【杀】。", xinqiuyuan: "求援", - xinqiuyuan_info: - "当你成为【杀】的目标时,你可以令另一名其他角色交给你一张除【杀】以外的基本牌,否则其也成为此【杀】的目标。", + xinqiuyuan_info: "当你成为【杀】的目标时,你可以令另一名其他角色交给你一张除【杀】以外的基本牌,否则其也成为此【杀】的目标。", xin_gongsunzan: "手杀界公孙瓒", xin_gongsunzan_prefix: "手杀界", re_dengai: "手杀界邓艾", @@ -20657,28 +18074,22 @@ game.import("character", function () { nanhualaoxian_prefix: "手杀", yufeng: "御风", yufeng2: "御风", - yufeng_info: - "出牌阶段限一次,你可以表演“御风飞行”。若表演失败,则你摸X张牌。若表演成功,则你可以选择至多X名其他角色获得“御风”效果,然后摸X-Y张牌(准备阶段开始时,你进行判定。若结果为:红色,你跳过摸牌阶段;黑色,你跳过出牌阶段和弃牌阶段。X为你的得分。Y为你选择的角色数)。", + yufeng_info: "出牌阶段限一次,你可以表演“御风飞行”。若表演失败,则你摸X张牌。若表演成功,则你可以选择至多X名其他角色获得“御风”效果,然后摸X-Y张牌(准备阶段开始时,你进行判定。若结果为:红色,你跳过摸牌阶段;黑色,你跳过出牌阶段和弃牌阶段。X为你的得分。Y为你选择的角色数)。", tianshu: "天书", - tianshu_info: - "出牌阶段开始时,若场上没有【太平要术】,则你可以弃置一张牌并选择一名角色。该角色获得并使用【太平要术】。", + tianshu_info: "出牌阶段开始时,若场上没有【太平要术】,则你可以弃置一张牌并选择一名角色。该角色获得并使用【太平要术】。", re_jiangwei: "手杀界姜维", re_jiangwei_prefix: "手杀界", retiaoxin: "挑衅", - retiaoxin_info: - "出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。", + retiaoxin_info: "出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。", re_zhurong: "手杀界祝融", re_zhurong_prefix: "手杀界", relieren: "烈刃", - relieren_info: - "当你使用【杀】指定目标后,你可以和目标角色进行拼点。若你赢,你获得其一张牌。若你没赢,你获得对方的拼点牌,其获得你的拼点牌。", + relieren_info: "当你使用【杀】指定目标后,你可以和目标角色进行拼点。若你赢,你获得其一张牌。若你没赢,你获得对方的拼点牌,其获得你的拼点牌。", zhouqun: "周群", tiansuan: "天算", - tiansuan_info: - "出牌阶段限一次,若场上没有因你产生的“命运签”,则你可以抽取一张“命运签”,然后令一名角色获得“命运签”直到你的下回合开始。若你以此法抽取的“命运签”为:上上签,你观看其手牌;上上签/上签,你获得其区域内的一张牌。", + tiansuan_info: "出牌阶段限一次,若场上没有因你产生的“命运签”,则你可以抽取一张“命运签”,然后令一名角色获得“命运签”直到你的下回合开始。若你以此法抽取的“命运签”为:上上签,你观看其手牌;上上签/上签,你获得其区域内的一张牌。", tiansuan_faq: "【命运签】说明", - tiansuan_faq_info: - "当你抽取“命运签”时,你可以令其中一种命运签的权重+1。
    上上签(权重1):当你受到伤害时,防止此伤害。
    上签(权重2):当你受到伤害时,你令伤害值改为1;当你受到1点伤害后,你摸一张牌。
    中签(权重3):当你受到伤害时,你令伤害属性改为火属性并将伤害值改为1。
    下签(权重2):当你受到伤害时,你令此伤害+1。
    下下签(权重1):当你受到伤害时,你令此伤害+1。你不能使用【酒】或【桃】。", + tiansuan_faq_info: "当你抽取“命运签”时,你可以令其中一种命运签的权重+1。
    上上签(权重1):当你受到伤害时,防止此伤害。
    上签(权重2):当你受到伤害时,你令伤害值改为1;当你受到1点伤害后,你摸一张牌。
    中签(权重3):当你受到伤害时,你令伤害属性改为火属性并将伤害值改为1。
    下签(权重2):当你受到伤害时,你令此伤害+1。
    下下签(权重1):当你受到伤害时,你令此伤害+1。你不能使用【酒】或【桃】。", tiansuan2_0: "命运签", tiansuan2_1: "命运签", tiansuan2_2: "命运签", @@ -20689,148 +18100,116 @@ game.import("character", function () { ol_yujin: "手杀界于禁", ol_yujin_prefix: "手杀界", rejieyue: "节钺", - rejieyue_info: - "结束阶段开始时,你可以将一张牌交给一名其他角色。然后其选择一项:令你摸三张牌:或其保留一张手牌和装备区的牌,然后弃置其余的牌。", + rejieyue_info: "结束阶段开始时,你可以将一张牌交给一名其他角色。然后其选择一项:令你摸三张牌:或其保留一张手牌和装备区的牌,然后弃置其余的牌。", xin_zhoucang: "手杀界周仓", xin_zhoucang_prefix: "手杀界", mobilezhongyong: "忠勇", - mobilezhongyong_info: - "当你于出牌阶段内使用的【杀】结算结束后,若没有目标角色使用【闪】响应过此【杀】,则你可获得此【杀】;否则你可选择一项:①获得目标角色使用的【闪】,然后可将此【杀】交给另一名其他角色。②将目标角色使用的【闪】交给另一名其他角色,然后你本回合使用【杀】的次数上限+1且下一张【杀】的伤害值基数+1。(你不能使用本回合因执行〖忠勇〗的效果得到的牌)", + mobilezhongyong_info: "当你于出牌阶段内使用的【杀】结算结束后,若没有目标角色使用【闪】响应过此【杀】,则你可获得此【杀】;否则你可选择一项:①获得目标角色使用的【闪】,然后可将此【杀】交给另一名其他角色。②将目标角色使用的【闪】交给另一名其他角色,然后你本回合使用【杀】的次数上限+1且下一张【杀】的伤害值基数+1。(你不能使用本回合因执行〖忠勇〗的效果得到的牌)", xin_caifuren: "手杀界蔡夫人", xin_caifuren_prefix: "手杀界", xinqieting: "窃听", - xinqieting_info: - "其他角色的回合结束时,若其本回合内未对其他角色造成过伤害,则你可选择一项:①摸一张牌。②观看其两张手牌并获得其中的一张。③将其装备区内的一张牌移动至你的装备区。", + xinqieting_info: "其他角色的回合结束时,若其本回合内未对其他角色造成过伤害,则你可选择一项:①摸一张牌。②观看其两张手牌并获得其中的一张。③将其装备区内的一张牌移动至你的装备区。", xinguixiu: "闺秀", xinguixiu_info: "锁定技。结束阶段,若你的体力值为:奇数,你摸一张牌;偶数,你回复1点体力。", re_zhonghui: "手杀界钟会", re_zhonghui_prefix: "手杀界", requanji: "权计", - requanji_info: - "出牌阶段结束时,若你的手牌数大于体力值,或当你受到1点伤害后,你可以摸一张牌,然后将一张手牌置于武将牌上,称为“权”;你的手牌上限+X(X为“权”的数量)。", + requanji_info: "出牌阶段结束时,若你的手牌数大于体力值,或当你受到1点伤害后,你可以摸一张牌,然后将一张手牌置于武将牌上,称为“权”;你的手牌上限+X(X为“权”的数量)。", xin_guyong: "手杀界顾雍", xin_guyong_prefix: "手杀界", xinshenxing: "慎行", - xinshenxing_info: - "出牌阶段限X次(X为你的体力值),你可以弃置两张牌,然后摸一张牌。若这两张牌颜色不同,则改为摸两张牌。", + xinshenxing_info: "出牌阶段限X次(X为你的体力值),你可以弃置两张牌,然后摸一张牌。若这两张牌颜色不同,则改为摸两张牌。", xinbingyi: "秉壹", - xinbingyi_info: - "结束阶段,你可展示所有手牌。若这些牌的颜色或类型均相同,则你可以令至多X名角色各摸一张牌(X为你的手牌数)。", + xinbingyi_info: "结束阶段,你可展示所有手牌。若这些牌的颜色或类型均相同,则你可以令至多X名角色各摸一张牌(X为你的手牌数)。", qiaozhou: "手杀谯周", qiaozhou_prefix: "手杀", zhiming: "知命", zhiming_info: "准备阶段开始时或弃牌阶段结束时,你摸一张牌,然后可以将一张牌置于牌堆顶。", xingbu: "星卜", - xingbu_info: - "结束阶段,你可以亮出牌堆顶的三张牌,然后你可以根据X值(X为这三张牌中红色牌的数量),令一名其他角色获得对应的效果直到其下回合结束:①三张:其摸牌阶段多摸两张牌,使用【杀】的次数上限+1。②两张:其使用【杀】的次数上限-1,跳过弃牌阶段。③小于两张:其于准备阶段开始时弃置一张手牌。", + xingbu_info: "结束阶段,你可以亮出牌堆顶的三张牌,然后你可以根据X值(X为这三张牌中红色牌的数量),令一名其他角色获得对应的效果直到其下回合结束:①三张:其摸牌阶段多摸两张牌,使用【杀】的次数上限+1。②两张:其使用【杀】的次数上限-1,跳过弃牌阶段。③小于两张:其于准备阶段开始时弃置一张手牌。", xin_sunluban: "手杀界孙鲁班", xin_sunluban_prefix: "手杀界", xinzenhui: "谮毁", - xinzenhui_info: - "出牌阶段限一次。当你使用【杀】或黑色普通锦囊牌指定目标时,你可选择另一名能成为此牌目标的其他角色并选择一项:①令其也成为此牌的目标。②获得其一张牌,然后将此牌的使用者改为该角色。", + xinzenhui_info: "出牌阶段限一次。当你使用【杀】或黑色普通锦囊牌指定目标时,你可选择另一名能成为此牌目标的其他角色并选择一项:①令其也成为此牌的目标。②获得其一张牌,然后将此牌的使用者改为该角色。", xinjiaojin: "骄矜", xinjiaojin_info: "当你受到男性角色造成的伤害时,你可以弃置一张装备牌并防止此伤害。", xin_caozhen: "手杀界曹真", xin_caozhen_prefix: "手杀界", discretesidi: "司敌", - discretesidi_info: - "①当你使用的不为延时锦囊牌的牌结算结束后,你可选择一名R内不存在以a为第一序偶的二元序偶的其他角色a,并选择一名角色b,在关系R内建立二元序偶<a,b>(b对其他角色不可见)。②一名角色a使用不为延时锦囊牌的牌指定b为目标时,若(aRb)∧(此牌目标数为1)为真,则{你从R内移除<a,b>,且:若b为你,你摸一张牌;若b不为你,你可选择:⒈取消此牌的目标,然后若场上没有处于濒死状态的角色,则你对a造成1点伤害。⒉摸两张牌};否则{你清除R内以a为第一元素的二元序偶}。", + discretesidi_info: "①当你使用的不为延时锦囊牌的牌结算结束后,你可选择一名R内不存在以a为第一序偶的二元序偶的其他角色a,并选择一名角色b,在关系R内建立二元序偶<a,b>(b对其他角色不可见)。②一名角色a使用不为延时锦囊牌的牌指定b为目标时,若(aRb)∧(此牌目标数为1)为真,则{你从R内移除<a,b>,且:若b为你,你摸一张牌;若b不为你,你可选择:⒈取消此牌的目标,然后若场上没有处于濒死状态的角色,则你对a造成1点伤害。⒉摸两张牌};否则{你清除R内以a为第一元素的二元序偶}。", fuqian: "傅佥", jueyong: "绝勇", - jueyong_info: - "锁定技。①当你不因〖绝勇〗成为唯一牌的目标时,若此牌不为转化牌且对应的实体牌牌数为1且不为【桃】或【酒】且你的“绝”数小于你的体力值,则你将此牌置于你的武将牌上,称为“绝”,且取消此牌的目标。②结束阶段开始时,若你有“绝”,则你令所有“绝”的原使用者依次对你使用所有“绝”,将无法使用的“绝”置入弃牌堆。", + jueyong_info: "锁定技。①当你不因〖绝勇〗成为唯一牌的目标时,若此牌不为转化牌且对应的实体牌牌数为1且不为【桃】或【酒】且你的“绝”数小于你的体力值,则你将此牌置于你的武将牌上,称为“绝”,且取消此牌的目标。②结束阶段开始时,若你有“绝”,则你令所有“绝”的原使用者依次对你使用所有“绝”,将无法使用的“绝”置入弃牌堆。", poxiang: "破降", - poxiang_info: - "出牌阶段限一次。你可以将一张牌交给一名其他角色。你摸三张牌(不计入本回合的手牌上限),移去所有“绝”并失去1点体力。", - simafu: "司马孚", + poxiang_info: "出牌阶段限一次。你可以将一张牌交给一名其他角色。你摸三张牌(不计入本回合的手牌上限),移去所有“绝”并失去1点体力。", + simafu: "手杀司马孚", + simafu_prefix: "手杀", xunde: "勋德", - xunde_info: - "一名角色受到伤害后,若你至其的距离不大于1,则你可判定。若判定结果:大于5,你令该角色获得判定牌;小于7,你令伤害来源弃置一张手牌。", + xunde_info: "一名角色受到伤害后,若你至其的距离不大于1,则你可判定。若判定结果:大于5,你令该角色获得判定牌;小于7,你令伤害来源弃置一张手牌。", chenjie: "臣节", - chenjie_info: - "一名角色的判定牌生效前,你可打出一张花色相同的牌。系统将你打出的牌作为新判定牌,将原判定牌置入弃牌堆。然后你摸两张牌。", + chenjie_info: "一名角色的判定牌生效前,你可打出一张花色相同的牌。系统将你打出的牌作为新判定牌,将原判定牌置入弃牌堆。然后你摸两张牌。", mayuanyi: "马元义", jibing: "集兵", - jibing_info: - "①摸牌阶段开始时,若你的“兵”数小于势力数,则你可以改为将牌堆顶的两张牌置于你的武将牌上,称为“兵”。②你可以将一张“兵”当做【杀】或【闪】使用或打出。", + jibing_info: "①摸牌阶段开始时,若你的“兵”数小于势力数,则你可以改为将牌堆顶的两张牌置于你的武将牌上,称为“兵”。②你可以将一张“兵”当做【杀】或【闪】使用或打出。", wangjing: "往京", - wangjing_info: - "锁定技。当你因〖集兵〗而使用或打出牌时,若对方是场上体力值最高的角色,则你摸一张牌。", + wangjing_info: "锁定技。当你因〖集兵〗而使用或打出牌时,若对方是场上体力值最高的角色,则你摸一张牌。", moucuan: "谋篡", moucuan_info: "觉醒技。准备阶段,若你的“兵”数不小于势力数,则你减1点体力上限并获得〖兵祸〗。", binghuo: "兵祸", - binghuo_info: - "一名角色的结束阶段开始时,若你本回合内因〖集兵〗而使用或打出过牌,则你可令一名角色判定。若判定结果为黑色,则你对其造成1点雷属性伤害。", + binghuo_info: "一名角色的结束阶段开始时,若你本回合内因〖集兵〗而使用或打出过牌,则你可令一名角色判定。若判定结果为黑色,则你对其造成1点雷属性伤害。", yanpu: "阎圃", huantu: "缓图", - huantu_info: - "每轮限一次。一名角色的摸牌阶段开始前,若其在你攻击范围内,则你可以交给其一张牌并令其跳过此阶段。然后你于此回合的结束阶段选择一项:①令其回复1点体力并摸两张牌。②你摸三张牌,然后交给其两张手牌。", + huantu_info: "每轮限一次。一名角色的摸牌阶段开始前,若其在你攻击范围内,则你可以交给其一张牌并令其跳过此阶段。然后你于此回合的结束阶段选择一项:①令其回复1点体力并摸两张牌。②你摸三张牌,然后交给其两张手牌。", bihuo: "避祸", - bihuo_info: - "限定技。一名角色脱离濒死状态时,你可以令其摸三张牌,然后其他角色计算至其的距离时+X直到本轮结束(X为角色数)。", + bihuo_info: "限定技。一名角色脱离濒死状态时,你可以令其摸三张牌,然后其他角色计算至其的距离时+X直到本轮结束(X为角色数)。", sunhanhua: "手杀孙寒华", sunhanhua_prefix: "手杀", chongxu: "冲虚", - chongxu_info: - "出牌阶段限一次,你可以随机演奏一首音乐,并根据完成度来获得相应的分数(至多五分)。然后你可修改〖妙剑〗或〖莲华〗(消耗3分),并使用剩余的分数进行摸牌(每张2分)。", + chongxu_info: "出牌阶段限一次,你可以随机演奏一首音乐,并根据完成度来获得相应的分数(至多五分)。然后你可修改〖妙剑〗或〖莲华〗(消耗3分),并使用剩余的分数进行摸牌(每张2分)。", chongxu_faq: "目前的曲库", - chongxu_faq_info: - " 
    《鸟之诗》- 折户伸治
    《竹取飛翔 ~ Lunatic Princess》- ZUN
    《ignotus》- ak+q
    《Super Mario 3D World Theme》- 横田真人
    《只因你太美》- SWIN-S
    《Croatian Rhapsody》- Maksim
    《罗刹海市》- 刀郎
    《Pigstep (Stereo Mix)》- Lena Raine", + chongxu_faq_info: " 
    《鸟之诗》- 折户伸治
    《竹取飛翔 ~ Lunatic Princess》- ZUN
    《ignotus》- ak+q
    《Super Mario 3D World Theme》- 横田真人
    《只因你太美》- SWIN-S
    《Croatian Rhapsody》- Maksim
    《罗刹海市》- 刀郎
    《Pigstep (Stereo Mix)》- Lena Raine", miaojian: "妙剑", - miaojian_info: - "出牌阶段限一次。你可将一张【杀】当做刺【杀】使用,或将一张锦囊牌当做【无中生有】使用。", + miaojian_info: "出牌阶段限一次。你可将一张【杀】当做刺【杀】使用,或将一张锦囊牌当做【无中生有】使用。", miaojian1: "妙剑·改", - miaojian1_info: - "出牌阶段限一次。你可将一张基本牌当做刺【杀】使用,或将一张非基本牌当做【无中生有】使用。", + miaojian1_info: "出牌阶段限一次。你可将一张基本牌当做刺【杀】使用,或将一张非基本牌当做【无中生有】使用。", miaojian2: "妙剑·极", miaojian2_info: "出牌阶段限一次。你可视为使用一张刺【杀】或【无中生有】。", shhlianhua: "莲华", shhlianhua_info: "当你成为【杀】的目标后,你摸一张牌。", shhlianhua1: "莲华·改", - shhlianhua1_info: - "当你成为【杀】的目标后,你摸一张牌。然后你进行判定,若结果为黑桃,则此【杀】对你无效。", + shhlianhua1_info: "当你成为【杀】的目标后,你摸一张牌。然后你进行判定,若结果为黑桃,则此【杀】对你无效。", shhlianhua2: "莲华·极", - shhlianhua2_info: - "当你成为【杀】的目标后,你摸一张牌。然后此【杀】的使用者选择一项:①弃置一张牌。②令此【杀】对你无效。", + shhlianhua2_info: "当你成为【杀】的目标后,你摸一张牌。然后此【杀】的使用者选择一项:①弃置一张牌。②令此【杀】对你无效。", re_yufan: "手杀界虞翻", re_yufan_prefix: "手杀界", rezongxuan: "纵玄", rezongxuan_place: "纵玄", - rezongxuan_info: - "当你的牌因弃置而进入弃牌堆后,你可以将其以任意顺序置于牌堆顶。出牌阶段限一次,你可以摸一张牌,然后将一张牌置于牌堆顶。", + rezongxuan_info: "当你的牌因弃置而进入弃牌堆后,你可以将其以任意顺序置于牌堆顶。出牌阶段限一次,你可以摸一张牌,然后将一张牌置于牌堆顶。", yj_huangzhong: "☆黄忠", yj_huangzhong_prefix: "☆", spshidi: "势敌", - spshidi_info: - "转换技,锁定技。①准备阶段/结束阶段开始时,若你发动此分支的累计次数为奇数/偶数,则你获得一个“☯”。②若你的“☯”数为偶数,则你至其他角色的距离-1,且你使用的黑色【杀】不可被响应。③若你的“☯”数为奇数,则其他角色至你的距离+1,且你不可响应红色【杀】。", + spshidi_info: "转换技,锁定技。①准备阶段/结束阶段开始时,若你发动此分支的累计次数为奇数/偶数,则你获得一个“☯”。②若你的“☯”数为偶数,则你至其他角色的距离-1,且你使用的黑色【杀】不可被响应。③若你的“☯”数为奇数,则其他角色至你的距离+1,且你不可响应红色【杀】。", spyishi: "义释", - spyishi_info: - "当你对装备区有牌的其他角色造成伤害时,你可令此伤害-1,然后获得其装备区内的一张牌。", + spyishi_info: "当你对装备区有牌的其他角色造成伤害时,你可令此伤害-1,然后获得其装备区内的一张牌。", spqishe: "骑射", spqishe_info: "你可以将一张装备牌当做【酒】使用。你的手牌上限+X(X为你装备区内的牌数)。", sp_maojie: "毛玠", bingqing: "秉清", - bingqing_info: - "当你于出牌阶段内使用的牌结算结束后,若你于本阶段内使用的所有已结算结束的其他牌与此牌花色均不相同,则你可根据X的值执行对应效果:为2,你令一名角色摸两张牌;为3,你弃置一名角色区域内的一张牌;为4,你对一名其他角色造成1点伤害。(X为你本阶段内使用过的已结算结束的牌中包含的花色数)", + bingqing_info: "当你于出牌阶段内使用的牌结算结束后,若你于本阶段内使用的所有已结算结束的其他牌与此牌花色均不相同,则你可根据X的值执行对应效果:为2,你令一名角色摸两张牌;为3,你弃置一名角色区域内的一张牌;为4,你对一名其他角色造成1点伤害。(X为你本阶段内使用过的已结算结束的牌中包含的花色数)", yingfeng: "迎奉", - yingfeng_info: - "准备阶段,你可以令一名角色获得“奉”标记并移除场上所有其他的“奉”标记。有“奉”标记的角色使用牌没有距离限制。", + yingfeng_info: "准备阶段,你可以令一名角色获得“奉”标记并移除场上所有其他的“奉”标记。有“奉”标记的角色使用牌没有距离限制。", xin_sunxiu: "手杀界孙休", xin_sunxiu_prefix: "手杀界", mobileyanzhu: "宴诛", - mobileyanzhu_info: - "出牌阶段限一次,你可以令一名有牌的其他角色选择一项:①你获得其装备区里所有的牌,然后你失去技能〖宴诛〗并修改技能〖兴学〗。②你获得其区域里的一张牌。", + mobileyanzhu_info: "出牌阶段限一次,你可以令一名有牌的其他角色选择一项:①你获得其装备区里所有的牌,然后你失去技能〖宴诛〗并修改技能〖兴学〗。②你获得其区域里的一张牌。", mobilexingxue: "兴学", - mobilexingxue_info: - "结束阶段开始时,你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶(X为你的体力值)。", + mobilexingxue_info: "结束阶段开始时,你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶(X为你的体力值)。", mobilexingxuex: "兴学·改", - mobilexingxuex_info: - "结束阶段开始时,你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶或交给一名其他目标角色(X为你的体力上限)。", + mobilexingxuex_info: "结束阶段开始时,你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶或交给一名其他目标角色(X为你的体力上限)。", re_wuguotai: "手杀界吴国太", re_wuguotai_prefix: "手杀界", reganlu: "甘露", - reganlu_info: - "出牌阶段限一次,你可以选择装备区牌数之差的绝对值不大于X的两名角色或包含你在内的两名角色,然后交换这两名角色装备区内的牌。(X为你已损失的体力值)", + reganlu_info: "出牌阶段限一次,你可以选择装备区牌数之差的绝对值不大于X的两名角色或包含你在内的两名角色,然后交换这两名角色装备区内的牌。(X为你已损失的体力值)", taoqian: "手杀陶谦", taoqian_prefix: "手杀", miheng: "手杀祢衡", @@ -20841,71 +18220,53 @@ game.import("character", function () { xingtu: "行图", xingtu1: "倍数", xingtu2: "约数", - xingtu_info: - "锁定技。你使用点数为X的倍数的牌无次数限制,你使用点数为X的约数的牌时摸一张牌(X为你本局游戏使用的上一张牌的点数)。", + xingtu_info: "锁定技。你使用点数为X的倍数的牌无次数限制,你使用点数为X的约数的牌时摸一张牌(X为你本局游戏使用的上一张牌的点数)。", juezhi: "爵制", - juezhi_info: - "出牌阶段,你可以弃置至少两张牌,然后从牌堆中获得一张点数为Y的牌(Y为这些牌的点数和对13取余,余数为0时Y取13)。", + juezhi_info: "出牌阶段,你可以弃置至少两张牌,然后从牌堆中获得一张点数为Y的牌(Y为这些牌的点数和对13取余,余数为0时Y取13)。", sp_jianggan: "手杀蒋干", sp_jianggan_prefix: "手杀", spdaoshu: "盗书", - spdaoshu_info: - "每轮限一次。一名敌方角色的出牌阶段开始时,若其有手牌,则你可以令其视为使用一张【酒】。其须声明一个基本牌的牌名,然后你判断其手牌区内是否有该牌名的牌。若你判断正确,则你获得其两张手牌。", - spdaoshu_info_identity: - "每轮限一次。一名其他角色的出牌阶段开始时,若其有手牌,则你可以令其视为使用一张【酒】。其须声明一个基本牌的牌名,然后你判断其手牌区内是否有该牌名的牌。若你判断正确,则你获得其两张手牌。", - spdaoshu_info_guozhan: - "每轮限一次。一名其他角色的出牌阶段开始时,若其有手牌,则你可以令其视为使用一张【酒】。其须声明一个基本牌的牌名,然后你判断其手牌区内是否有该牌名的牌。若你判断正确,则你获得其两张手牌。", + spdaoshu_info: "每轮限一次。一名敌方角色的出牌阶段开始时,若其有手牌,则你可以令其视为使用一张【酒】。其须声明一个基本牌的牌名,然后你判断其手牌区内是否有该牌名的牌。若你判断正确,则你获得其两张手牌。", + spdaoshu_info_identity: "每轮限一次。一名其他角色的出牌阶段开始时,若其有手牌,则你可以令其视为使用一张【酒】。其须声明一个基本牌的牌名,然后你判断其手牌区内是否有该牌名的牌。若你判断正确,则你获得其两张手牌。", + spdaoshu_info_guozhan: "每轮限一次。一名其他角色的出牌阶段开始时,若其有手牌,则你可以令其视为使用一张【酒】。其须声明一个基本牌的牌名,然后你判断其手牌区内是否有该牌名的牌。若你判断正确,则你获得其两张手牌。", mbdaoshu: "盗书", - mbdaoshu_info: - "出牌阶段限一次,你可以选择一名手牌数大于两张的其他角色,其随机获得三个牌名并将一张手牌的牌名伪装成其中一个与原牌名不同的牌名,然后你和队友观看其手牌并猜测其伪装的手牌,猜对的角色对其造成1点伤害,猜错的角色随机弃置两张手牌(手牌数不足两张则改为失去1点体力)。", - mbdaoshu_info_identity: - "出牌阶段限一次,你可以选择一名手牌数大于两张的其他角色,其随机获得三个牌名并将一张手牌的牌名伪装成其中一个与原牌名不同的牌名,然后你观看其手牌并猜测其伪装的手牌。若猜中,你对其造成1点伤害;若猜错,你随机弃置两张手牌(手牌数不足两张则改为失去1点体力)。", - mbdaoshu_info_guozhan: - "出牌阶段限一次,你可以选择一名手牌数大于两张的其他角色,其随机获得三个牌名并将一张手牌的牌名伪装成其中一个与原牌名不同的牌名,然后你观看其手牌并猜测其伪装的手牌。若猜中,你对其造成1点伤害;若猜错,你随机弃置两张手牌(手牌数不足两张则改为失去1点体力)。", + mbdaoshu_info: "出牌阶段限一次,你可以选择一名手牌数大于两张的其他角色,其随机获得三个牌名并将一张手牌的牌名伪装成其中一个与原牌名不同的牌名,然后你和队友观看其手牌并猜测其伪装的手牌,猜对的角色对其造成1点伤害,猜错的角色随机弃置两张手牌(手牌数不足两张则改为失去1点体力)。", + mbdaoshu_info_identity: "出牌阶段限一次,你可以选择一名手牌数大于两张的其他角色,其随机获得三个牌名并将一张手牌的牌名伪装成其中一个与原牌名不同的牌名,然后你观看其手牌并猜测其伪装的手牌。若猜中,你对其造成1点伤害;若猜错,你随机弃置两张手牌(手牌数不足两张则改为失去1点体力)。", + mbdaoshu_info_guozhan: "出牌阶段限一次,你可以选择一名手牌数大于两张的其他角色,其随机获得三个牌名并将一张手牌的牌名伪装成其中一个与原牌名不同的牌名,然后你观看其手牌并猜测其伪装的手牌。若猜中,你对其造成1点伤害;若猜错,你随机弃置两张手牌(手牌数不足两张则改为失去1点体力)。", spdaizui: "戴罪", spdaizui2: "戴罪", - spdaizui_info: - "限定技。当你受到伤害值不小于体力值的伤害时,你可防止此伤害并将此伤害渠道对应的所有实体牌置于伤害来源的武将牌上,称为“释”。本回合结束时,其获得所有“释”。", + spdaizui_info: "限定技。当你受到伤害值不小于体力值的伤害时,你可防止此伤害并将此伤害渠道对应的所有实体牌置于伤害来源的武将牌上,称为“释”。本回合结束时,其获得所有“释”。", re_caiwenji: "手杀界蔡琰", re_caiwenji_prefix: "手杀界", re_bulianshi: "手杀界步练师", re_bulianshi_prefix: "手杀界", reanxu: "安恤", - reanxu_info: - "出牌阶段限一次,你可以选择两名其他角色,令其中一名角色获得另一名角色的一张牌。若以此法移动的牌不来自装备区,则你摸一张牌。然后你可以令二者中手牌数较少的一名角色摸一张牌。", + reanxu_info: "出牌阶段限一次,你可以选择两名其他角色,令其中一名角色获得另一名角色的一张牌。若以此法移动的牌不来自装备区,则你摸一张牌。然后你可以令二者中手牌数较少的一名角色摸一张牌。", xin_jushou: "手杀界沮授", xin_jushou_prefix: "手杀界", xinjianying: "渐营", - xinjianying_info: - "①当你于出牌阶段内使用与此阶段你使用的上一张牌点数或花色相同的牌时,你可以摸一张牌。②出牌阶段限一次,你可以将一张牌当做任意基本牌使用。若你于此阶段内使用的上一张牌有花色,则此牌的花色视为上一张牌的花色。", + xinjianying_info: "①当你于出牌阶段内使用与此阶段你使用的上一张牌点数或花色相同的牌时,你可以摸一张牌。②出牌阶段限一次,你可以将一张牌当做任意基本牌使用。若你于此阶段内使用的上一张牌有花色,则此牌的花色视为上一张牌的花色。", re_xunyu: "手杀界荀彧", re_xunyu_prefix: "手杀界", rejieming: "节命", - rejieming_info: - "当你受到1点伤害后,你可以令一名角色摸两张牌。然后若其手牌数小于体力上限,则你摸一张牌。", + rejieming_info: "当你受到1点伤害后,你可以令一名角色摸两张牌。然后若其手牌数小于体力上限,则你摸一张牌。", xin_quancong: "手杀界全琮", xin_quancong_prefix: "手杀界", sbyaoming: "邀名", - sbyaoming_info: - "蓄力技(2/4)。①当你受到1点伤害后,你可以获得1点蓄力值。②出牌阶段或当你受到伤害后,你可消耗1点蓄力值并选择一项:⒈弃置一名手牌数不小于你的角色的一张牌。⒉令一名手牌数不大于你的角色摸一张牌。若你上次发动〖邀名②〗时未获得过蓄力值且你选择的选项和上次不同,则你获得1点蓄力值。", + sbyaoming_info: "蓄力技(2/4)。①当你受到1点伤害后,你可以获得1点蓄力值。②出牌阶段或当你受到伤害后,你可消耗1点蓄力值并选择一项:⒈弃置一名手牌数不小于你的角色的一张牌。⒉令一名手牌数不大于你的角色摸一张牌。若你上次发动〖邀名②〗时未获得过蓄力值且你选择的选项和上次不同,则你获得1点蓄力值。", ruanhui: "阮慧", mingcha: "明察", - mingcha_info: - "摸牌阶段开始时,你亮出牌堆顶的三张牌。若这三张牌中有点数小于9的牌,则你可以放弃摸牌并获得这些牌,然后你可以获得一名其他角色的随机一张牌。", + mingcha_info: "摸牌阶段开始时,你亮出牌堆顶的三张牌。若这三张牌中有点数小于9的牌,则你可以放弃摸牌并获得这些牌,然后你可以获得一名其他角色的随机一张牌。", jingzhong: "敬重", - jingzhong_info: - "弃牌阶段结束时,若你于本阶段内弃置过至少两张黑色牌,则你可以选择一名其他角色并获得如下效果直到其回合结束:每阶段限三次,其于出牌阶段内使用的牌结算结束后,你获得此牌对应的实体牌。", + jingzhong_info: "弃牌阶段结束时,若你于本阶段内弃置过至少两张黑色牌,则你可以选择一名其他角色并获得如下效果直到其回合结束:每阶段限三次,其于出牌阶段内使用的牌结算结束后,你获得此牌对应的实体牌。", xin_mamidi: "手杀马日磾", xin_mamidi_prefix: "手杀", chengye: "承业", - chengye_info: - "锁定技。①其他角色使用的非转化牌结算结束后,或其他角色的装备牌和延时锦囊牌进入弃牌堆后,或有延时锦囊牌因其他角色执行判定阶段的流程而进入弃牌堆后,若你的“六经”有空缺的位置可以置入此牌,则你将此牌置于你武将牌上,填补“六经”的对应位置。②出牌阶段开始时,若你的“六经”没有空缺的位置,则你获得所有“六经”。", - chengye_append: - '
  • 《诗经》:伤害类锦囊牌
  • 《尚书》:基本牌
  • 《仪礼》:无懈可击
  • 《易经》:无中生有
  • 《乐经》:乐不思蜀
  • 《春秋》:装备牌', + chengye_info: "锁定技。①其他角色使用的非转化牌结算结束后,或其他角色的装备牌和延时锦囊牌进入弃牌堆后,或有延时锦囊牌因其他角色执行判定阶段的流程而进入弃牌堆后,若你的“六经”有空缺的位置可以置入此牌,则你将此牌置于你武将牌上,填补“六经”的对应位置。②出牌阶段开始时,若你的“六经”没有空缺的位置,则你获得所有“六经”。", + chengye_append: '
  • 《诗经》:伤害类锦囊牌
  • 《尚书》:基本牌
  • 《仪礼》:无懈可击
  • 《易经》:无中生有
  • 《乐经》:乐不思蜀
  • 《春秋》:装备牌', buxu: "补叙", buxu_backup: "补叙", - buxu_info: - "出牌阶段,若你的“六经”中有空缺的位置,则你可以弃置X+1张牌并选择一种空缺的“六经”(X为你本阶段内发动过〖补叙〗的次数)。系统从牌堆或弃牌堆中检索一张对应的牌,然后你将此牌置于你武将牌上,填补“六经”的对应位置。", + buxu_info: "出牌阶段,若你的“六经”中有空缺的位置,则你可以弃置X+1张牌并选择一种空缺的“六经”(X为你本阶段内发动过〖补叙〗的次数)。系统从牌堆或弃牌堆中检索一张对应的牌,然后你将此牌置于你武将牌上,填补“六经”的对应位置。", re_dianwei: "手杀界典韦", re_dianwei_prefix: "手杀界", liuye: "手杀刘晔", @@ -20913,8 +18274,7 @@ game.import("character", function () { sp_caosong: "手杀曹嵩", sp_caosong_prefix: "手杀", yijin: "亿金", - yijin_info: - "锁定技。①游戏开始时,你获得“膴仕”、“金迷”、“贾凶”、“通神”、“拥蔽”、“厚任”各1枚(均称为“金”)。②出牌阶段开始时,你选择一名没有“金”的其他角色。你交给其1枚“金”,且令其获得对应效果。③一名角色的回合结束后,若其有你交给其的“金”,其移去此“金”。④当你死亡时,移去场上所有你交出的“金”。⑤回合开始时,若你没有“金”,你死亡。", + yijin_info: "锁定技。①游戏开始时,你获得“膴仕”、“金迷”、“贾凶”、“通神”、“拥蔽”、“厚任”各1枚(均称为“金”)。②出牌阶段开始时,你选择一名没有“金”的其他角色。你交给其1枚“金”,且令其获得对应效果。③一名角色的回合结束后,若其有你交给其的“金”,其移去此“金”。④当你死亡时,移去场上所有你交出的“金”。⑤回合开始时,若你没有“金”,你死亡。", yijin_wushi: "膴仕", yijin_wushi_info: "锁定技。①摸牌阶段,你多摸四张牌。②你使用【杀】的次数上限+1。", yijin_jinmi: "金迷", @@ -20931,53 +18291,43 @@ game.import("character", function () { guanzong_info: "出牌阶段限一次。你可以令一名其他角色视为对另一名其他角色造成过1点伤害。", yangfu: "杨阜", jiebing: "借兵", - jiebing_info: - "锁定技。当你受到伤害后,你选择来源外的一名其他角色,随机获得其一张牌并展示。若此牌为装备牌,你使用之。", + jiebing_info: "锁定技。当你受到伤害后,你选择来源外的一名其他角色,随机获得其一张牌并展示。若此牌为装备牌,你使用之。", hannan: "扞难", hannan_info: "出牌阶段限一次。你可以与一名角色拼点,赢的角色对没赢的角色造成2点伤害。", xin_wuyi: "手杀界吴懿", xin_wuyi_prefix: "手杀界", sbbenxi: "奔袭", - sbbenxi_info: - "出牌阶段开始时,你可以弃置至少一张牌,然后你于此阶段获得如下效果:①你至其他角色距离-X;②当你使用的下一张基本牌或普通锦囊牌A选择目标后,你可以额外指定X名距离为1的角色为目标;③牌A结算结束后,若此牌造成过伤害,你摸五张牌(X为你以此法弃置的牌数)。", + sbbenxi_info: "出牌阶段开始时,你可以弃置至少一张牌,然后你于此阶段获得如下效果:①你至其他角色距离-X;②当你使用的下一张基本牌或普通锦囊牌A选择目标后,你可以额外指定X名距离为1的角色为目标;③牌A结算结束后,若此牌造成过伤害,你摸五张牌(X为你以此法弃置的牌数)。", xin_zhuzhi: "手杀界朱治", xin_zhuzhi_prefix: "手杀界", sbanguo: "安国", - sbanguo_info: - "①游戏开始时,你令一名其他角色获得1枚“安国”标记(有“安国”的角色手牌上限基数等于体力上限)。②出牌阶段开始时,你可以将一名有“安国”的角色的所有“安国”移动给一名本局游戏未获得过“安国”的其他角色。③当你受到伤害时,若有有“安国”的角色且伤害值不小于你的体力值且此伤害没有来源或来源没有“安国”,防止此伤害。④一名角色进入濒死状态时,若其有你因〖安国①〗获得的“安国”,你移去其该“安国”,令其将体力回复至1点。然后你选择一项:1.若你的体力值大于1,你失去体力至1点;2.若你的体力上限大于1,你将体力上限减至1。最后你令其获得1点护甲。", + sbanguo_info: "①游戏开始时,你令一名其他角色获得1枚“安国”标记(有“安国”的角色手牌上限基数等于体力上限)。②出牌阶段开始时,你可以将一名有“安国”的角色的所有“安国”移动给一名本局游戏未获得过“安国”的其他角色。③当你受到伤害时,若有有“安国”的角色且伤害值不小于你的体力值且此伤害没有来源或来源没有“安国”,防止此伤害。④一名角色进入濒死状态时,若其有你因〖安国①〗获得的“安国”,你移去其该“安国”,令其将体力回复至1点。然后你选择一项:1.若你的体力值大于1,你失去体力至1点;2.若你的体力上限大于1,你将体力上限减至1。最后你令其获得1点护甲。", wangjun: "手杀王濬", wangjun_prefix: "手杀", zhujian: "筑舰", zhujian_info: "出牌阶段限一次。你可以令至少两名装备区里有牌的角色各摸一张牌。", duansuo: "断索", - duansuo_info: - "出牌阶段限一次。你可以重置任意名处于连环状态的角色,然后对这些角色各造成1点火焰伤害。", + duansuo_info: "出牌阶段限一次。你可以重置任意名处于连环状态的角色,然后对这些角色各造成1点火焰伤害。", sp_pengyang: "手杀彭羕", sp_pengyang_prefix: "手杀", spdaming: "达命", - spdaming_info: - "①游戏开始时,你获得1点“达命”值。②其他角色A的出牌阶段限一次。其可以交给你一张牌,然后你选择另一名其他角色B。若B有与此牌相同类型的牌,其将一张该类型的牌交给A,你获得1点“达命”值;否则你将此牌交给A。", + spdaming_info: "①游戏开始时,你获得1点“达命”值。②其他角色A的出牌阶段限一次。其可以交给你一张牌,然后你选择另一名其他角色B。若B有与此牌相同类型的牌,其将一张该类型的牌交给A,你获得1点“达命”值;否则你将此牌交给A。", spxiaoni: "嚣逆", - spxiaoni_info: - "①出牌阶段限一次。若你的“达命”值大于0,你可以将一张牌当任意一种【杀】或伤害类锦囊牌使用。然后你减少等同于此牌指定目标数的“达命”值。②你的手牌上限基数为X(X为“达命”值,且至多为你的体力值,至少为0)。", + spxiaoni_info: "①出牌阶段限一次。若你的“达命”值大于0,你可以将一张牌当任意一种【杀】或伤害类锦囊牌使用。然后你减少等同于此牌指定目标数的“达命”值。②你的手牌上限基数为X(X为“达命”值,且至多为你的体力值,至少为0)。", xin_zhuhuan: "手杀界朱桓", xin_zhuhuan_prefix: "手杀界", xinpingkou: "平寇", - xinpingkou_info: - "回合结束时,你可以对至多X名其他角色各造成1点伤害(X为你本回合跳过的阶段数)。然后你从牌堆中获得一张装备牌。", + xinpingkou_info: "回合结束时,你可以对至多X名其他角色各造成1点伤害(X为你本回合跳过的阶段数)。然后你从牌堆中获得一张装备牌。", xin_caoxiu: "手杀界曹休", xin_caoxiu_prefix: "手杀界", xinqingxi: "倾袭", - xinqingxi_info: - "每回合限一次。当你对其他角色造成伤害时,你可以令其选择一项:1.弃置X张手牌(X为4减去你至其的距离,至少为1);2.令此伤害+1。", + xinqingxi_info: "每回合限一次。当你对其他角色造成伤害时,你可以令其选择一项:1.弃置X张手牌(X为4减去你至其的距离,至少为1);2.令此伤害+1。", yj_weiyan: "☆魏延", yj_weiyan_prefix: "☆", mbguli: "孤厉", - mbguli_info: - "出牌阶段限一次。你可以将所有手牌当做一张无视防具的【杀】使用。此牌结算结束后,若此牌造成过伤害,你可以失去1点体力并将手牌摸至X张(X为你的体力上限)。", + mbguli_info: "出牌阶段限一次。你可以将所有手牌当做一张无视防具的【杀】使用。此牌结算结束后,若此牌造成过伤害,你可以失去1点体力并将手牌摸至X张(X为你的体力上限)。", mbaosi: "骜肆", - mbaosi_info: - "锁定技。当你于出牌阶段对一名攻击范围内的角色造成伤害后,你于此阶段对其使用牌无次数限制。", + mbaosi_info: "锁定技。当你于出牌阶段对一名攻击范围内的角色造成伤害后,你于此阶段对其使用牌无次数限制。", xin_zhoutai: "手杀界周泰", xin_zhoutai_prefix: "手杀界", re_yanwen: "手杀界颜良文丑", @@ -20985,25 +18335,19 @@ game.import("character", function () { qianzhao: "手杀牵招", qianzhao_prefix: "手杀", mbshihe: "势吓", - mbshihe_info_identity: - "出牌阶段限一次。你可以与一名角色拼点。若你:赢,当其于其下回合结束前对你造成伤害时,取消之;没赢,你随机弃置一张牌。", - mbshihe_info: - "出牌阶段限一次。你可以与一名角色拼点。若你:赢,当其于其下回合结束前对你和你的友方角色造成伤害时,取消之;没赢,你随机弃置一张牌。", + mbshihe_info_identity: "出牌阶段限一次。你可以与一名角色拼点。若你:赢,当其于其下回合结束前对你造成伤害时,取消之;没赢,你随机弃置一张牌。", + mbshihe_info: "出牌阶段限一次。你可以与一名角色拼点。若你:赢,当其于其下回合结束前对你和你的友方角色造成伤害时,取消之;没赢,你随机弃置一张牌。", mbzhenfu: "镇抚", mbzhenfu_info: "结束阶段,若你本回合因弃置失去过牌,你可以令一名其他角色获得1点护甲。", shichangshi: "十常侍", mbdanggu: "党锢", - mbdanggu_info: - "锁定技。①游戏开始时,你获得十张“常侍”牌,然后你进行一次结党。②当你修整结束后,你进行一次结党并摸一张牌。③若你有亮出的“常侍”牌,你视为拥有这些牌的技能。", + mbdanggu_info: "锁定技。①游戏开始时,你获得十张“常侍”牌,然后你进行一次结党。②当你修整结束后,你进行一次结党并摸一张牌。③若你有亮出的“常侍”牌,你视为拥有这些牌的技能。", mbdanggu_faq: "关于结党", - mbdanggu_faq_info: - "
    系统随机选择一张未亮出过的“常侍”牌,然后选择四张未亮出过的“常侍”牌。你观看前者,然后从后者中选择一名认可前者的“常侍”牌。然后若此时不为双将模式,你将这两张武将牌作为你的武将牌(不移除原有技能);否则你获得这两张武将牌上的技能。", + mbdanggu_faq_info: "
    系统随机选择一张未亮出过的“常侍”牌,然后选择四张未亮出过的“常侍”牌。你观看前者,然后从后者中选择一名认可前者的“常侍”牌。然后若此时不为双将模式,你将这两张武将牌作为你的武将牌(不移除原有技能);否则你获得这两张武将牌上的技能。", mbdanggu_faq2: "关于认可", - mbdanggu_faq2_info: - "
    双向不认可常侍为固定组合:
  • 郭胜、段珪
  • 韩悝、毕岚
    单向不认可常侍为系统随机分配。
    每次结党至多存在一张不认可主将的常侍牌,且若此次结党仅有一张常侍牌,则不会存在不认可情况。", + mbdanggu_faq2_info: "
    双向不认可常侍为固定组合:
  • 郭胜、段珪
  • 韩悝、毕岚
    单向不认可常侍为系统随机分配。
    每次结党至多存在一张不认可主将的常侍牌,且若此次结党仅有一张常侍牌,则不会存在不认可情况。", mbmowang: "殁亡", - mbmowang_info: - "锁定技。①当你死亡前,若你有未亮出的“常侍”牌且体力上限大于0,你将死亡改为修整至你的下个回合开始前,然后你复原武将牌,且不于此次死亡事件中进行展示身份牌、检测游戏胜利条件与执行奖惩的流程。②回合结束后,你死亡。", + mbmowang_info: "锁定技。①当你死亡前,若你有未亮出的“常侍”牌且体力上限大于0,你将死亡改为修整至你的下个回合开始前,然后你复原武将牌,且不于此次死亡事件中进行展示身份牌、检测游戏胜利条件与执行奖惩的流程。②回合结束后,你死亡。", mbmowang_faq: "关于修整", mbmowang_faq_info: "
    将武将牌移出游戏(视为你存活)。当该角色修整结束,其移回游戏。", scs_zhangrang: "张让", @@ -21011,76 +18355,59 @@ game.import("character", function () { scstaoluan_info: "出牌阶段限一次。你可以将一张牌当任意一种基本牌或普通锦囊牌使用。", scs_zhaozhong: "赵忠", scschiyan: "鸱咽", - scschiyan_info: - "①当你使用【杀】指定目标后,你可以将其的一张牌置于其武将牌上,然后其于当前回合结束时获得这些牌。②当你因执行【杀】的效果对一名角色造成伤害时,若该角色的手牌数和装备区内的牌数均不大于你,此伤害+1。", + scschiyan_info: "①当你使用【杀】指定目标后,你可以将其的一张牌置于其武将牌上,然后其于当前回合结束时获得这些牌。②当你因执行【杀】的效果对一名角色造成伤害时,若该角色的手牌数和装备区内的牌数均不大于你,此伤害+1。", scs_sunzhang: "孙璋", scszimou: "自谋", - scszimou_info: - "锁定技。出牌阶段,当你使用第二/四/六张牌时,你从牌堆中获得一张【酒】/【杀】/【决斗】。", + scszimou_info: "锁定技。出牌阶段,当你使用第二/四/六张牌时,你从牌堆中获得一张【酒】/【杀】/【决斗】。", scs_bilan: "毕岚", scspicai: "庀材", - scspicai_info: - "出牌阶段限一次。你可进行判定牌不置入弃牌堆的判定。若判定结果与本次发动技能时的其他判定结果的花色均不相同,则你可以重复此流程。然后你将所有位于处理区的判定牌交给一名角色。", + scspicai_info: "出牌阶段限一次。你可进行判定牌不置入弃牌堆的判定。若判定结果与本次发动技能时的其他判定结果的花色均不相同,则你可以重复此流程。然后你将所有位于处理区的判定牌交给一名角色。", scs_xiayun: "夏恽", scsyaozhuo: "谣诼", - scsyaozhuo_info: - "出牌阶段限一次。你可以与一名角色拼点,若你赢,其跳过下一个摸牌阶段;若你没赢,你弃置两张牌。", + scsyaozhuo_info: "出牌阶段限一次。你可以与一名角色拼点,若你赢,其跳过下一个摸牌阶段;若你没赢,你弃置两张牌。", scs_hankui: "韩悝", scsxiaolu: "宵赂", - scsxiaolu_info: - "出牌阶段限一次。你可以摸两张牌,然后选择一项:1.弃置两张牌;2.将两张牌交给一名其他角色。", + scsxiaolu_info: "出牌阶段限一次。你可以摸两张牌,然后选择一项:1.弃置两张牌;2.将两张牌交给一名其他角色。", scs_lisong: "栗嵩", scskuiji: "窥机", - scskuiji_info: - "出牌阶段限一次。你可以观看一名其他角色的手牌,然后弃置你与其的共计四张花色各不相同的手牌。", + scskuiji_info: "出牌阶段限一次。你可以观看一名其他角色的手牌,然后弃置你与其的共计四张花色各不相同的手牌。", scs_duangui: "段珪", scschihe: "叱吓", - scschihe_info: - "当你使用【杀】指定唯一目标后,你可亮出牌堆顶的两张牌,令此【杀】的伤害值基数+X(X为亮出牌中花色与此【杀】相同的牌数),且目标角色不能使用亮出牌包含的花色的牌响应此【杀】。", + scschihe_info: "当你使用【杀】指定唯一目标后,你可亮出牌堆顶的两张牌,令此【杀】的伤害值基数+X(X为亮出牌中花色与此【杀】相同的牌数),且目标角色不能使用亮出牌包含的花色的牌响应此【杀】。", scs_guosheng: "郭胜", scsniqu: "逆取", scsniqu_info: "出牌阶段限一次。你可以对一名角色造成1点火焰伤害。", scs_gaowang: "高望", scsanruo: "安弱", - scsanruo_info: - "你可以将一张♥牌当【桃】、♦牌当火【杀】、♣牌当【闪】、♠牌当【无懈可击】使用。当你以此法使用或打出【杀】或【闪】时,你可以获得对方的一张牌;当你以此法使用【桃】时,你可以获得一名其他角色的一张牌;当你以此法使用【无懈可击】时,你可以获得此牌响应的普通锦囊牌的使用者的一张牌。", + scsanruo_info: "你可以将一张♥牌当【桃】、♦牌当火【杀】、♣牌当【闪】、♠牌当【无懈可击】使用。当你以此法使用或打出【杀】或【闪】时,你可以获得对方的一张牌;当你以此法使用【桃】时,你可以获得一名其他角色的一张牌;当你以此法使用【无懈可击】时,你可以获得此牌响应的普通锦囊牌的使用者的一张牌。", scsmiaoyu: "妙语", - scsmiaoyu_info: - "你可以将至多两张相同花色的牌按照以下规则使用或打出:♦牌当作火【杀】,♥牌当作【桃】,♣牌当作【闪】,♠牌当作【无懈可击】。若你以此法使用了两张红色牌,则此牌回复值或伤害值+1。若你以此法使用了两张黑色牌,则你弃置当前回合角色一张牌。", + scsmiaoyu_info: "你可以将至多两张相同花色的牌按照以下规则使用或打出:♦牌当作火【杀】,♥牌当作【桃】,♣牌当作【闪】,♠牌当作【无懈可击】。若你以此法使用了两张红色牌,则此牌回复值或伤害值+1。若你以此法使用了两张黑色牌,则你弃置当前回合角色一张牌。", re_xiaoqiao: "手杀界小乔", re_xiaoqiao_prefix: "手杀界", xin_sunliang: "手杀孙亮", xin_sunliang_prefix: "手杀", xinkuizhu: "溃诛", - xinkuizhu_info: - "弃牌阶段结束后,你可以选择一项:1.令至多X名角色各摸一张牌。2.对任意名体力值之和为X的角色造成1点伤害,若你以此法选择的角色数不小于2,你失去1点体力。(X为你此阶段弃置的牌数)", + xinkuizhu_info: "弃牌阶段结束后,你可以选择一项:1.令至多X名角色各摸一张牌。2.对任意名体力值之和为X的角色造成1点伤害,若你以此法选择的角色数不小于2,你失去1点体力。(X为你此阶段弃置的牌数)", xinzhizheng: "掣政", - xinzhizheng_info: - "锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色的数量,则你弃置其中一名角色的一张牌。", + xinzhizheng_info: "锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色的数量,则你弃置其中一名角色的一张牌。", xinlijun: "立军", - xinlijun_info: - "主公技,其他吴势力角色于其回合内使用【杀】结算完毕后,其可以将此【杀】对应的实体牌交给你,然后你可以令其摸一张牌。", + xinlijun_info: "主公技,其他吴势力角色于其回合内使用【杀】结算完毕后,其可以将此【杀】对应的实体牌交给你,然后你可以令其摸一张牌。", xin_zhangyi: "手杀界张嶷", xin_zhangyi_prefix: "手杀界", xinwurong: "怃戎", - xinwurong_info: - "出牌阶段限一次,你可以与一名其他角色进行谋弈:
  • 若你选择“镇压”且其选择“反抗”,你对其造成1点伤害,然后你摸一张牌。
  • 若你选择“安抚”且其选择“归顺”,其须交给你两张牌(若其牌数不足两张,则改为令其跳过其下个摸牌阶段)。
  • 若你选择“镇压”且其选择“归顺”,你获得其一张牌,然后你交给其两张牌。
  • 若你选择“安抚”且其选择“反抗”,你受到1点伤害,然后你摸两张牌。", + xinwurong_info: "出牌阶段限一次,你可以与一名其他角色进行谋弈:
  • 若你选择“镇压”且其选择“反抗”,你对其造成1点伤害,然后你摸一张牌。
  • 若你选择“安抚”且其选择“归顺”,其须交给你两张牌(若其牌数不足两张,则改为令其跳过其下个摸牌阶段)。
  • 若你选择“镇压”且其选择“归顺”,你获得其一张牌,然后你交给其两张牌。
  • 若你选择“安抚”且其选择“反抗”,你受到1点伤害,然后你摸两张牌。", xin_guozhao: "手杀郭照", xin_guozhao_prefix: "手杀", yichong: "易宠", - yichong_info: - "①准备阶段,你可以选择一名其他角色并选择一个花色,然后你获得其所有此花色的装备牌和其一张此花色的手牌,移除场上的所有“雀”标记,令其获得“雀”标记直到你的下个回合开始。②拥有“雀”标记的角色获得你最后一次发动〖易宠①〗选择的花色的牌后,你获得这些牌(你至多通过每个“雀”得到一张牌)。", + yichong_info: "①准备阶段,你可以选择一名其他角色并选择一个花色,然后你获得其所有此花色的装备牌和其一张此花色的手牌,移除场上的所有“雀”标记,令其获得“雀”标记直到你的下个回合开始。②拥有“雀”标记的角色获得你最后一次发动〖易宠①〗选择的花色的牌后,你获得这些牌(你至多通过每个“雀”得到一张牌)。", wufei: "诬诽", - wufei_info: - "若场上存在拥有“雀”标记的角色A,则:①当你使用【杀】或伤害类锦囊牌指定第一个目标后,你令A成为此牌伤害来源。②当你受到伤害后,若A的体力值大于3,则你可以令A受到1点无来源伤害。", + wufei_info: "若场上存在拥有“雀”标记的角色A,则:①当你使用【杀】或伤害类锦囊牌指定第一个目标后,你令A成为此牌伤害来源。②当你受到伤害后,若A的体力值大于3,则你可以令A受到1点无来源伤害。", yj_zhoubuyi: "☆周不疑", yj_zhoubuyi_prefix: "☆", mbhuiyao: "慧夭", - mbhuiyao_info: - "出牌阶段限一次。你可以受到1点无来源伤害,然后你选择一名其他角色,令其视为对另一名角色造成过1点伤害。", + mbhuiyao_info: "出牌阶段限一次。你可以受到1点无来源伤害,然后你选择一名其他角色,令其视为对另一名角色造成过1点伤害。", mbquesong: "雀颂", - mbquesong_info: - "一名角色的结束阶段,若你于本回合受到过伤害,你可以令一名角色选择一项:1.摸X张牌并复原武将牌(X为3,若其装备区非宝物牌牌数不小于三张则X为2);2.回复1点体力。", + mbquesong_info: "一名角色的结束阶段,若你于本回合受到过伤害,你可以令一名角色选择一项:1.摸X张牌并复原武将牌(X为3,若其装备区非宝物牌牌数不小于三张则X为2);2.回复1点体力。", xin_yuanshao: "手杀界袁绍", xin_yuanshao_prefix: "手杀界", re_baosanniang: "手杀鲍三娘", @@ -21109,149 +18436,109 @@ game.import("character", function () { old_yuanshu_prefix: "手杀", baoxin: "鲍信", mutao: "募讨", - mutao_info: - "出牌阶段限一次。你可以选择一名角色,令其将手牌中所有的【杀】置于武将牌上,然后将这些牌依次随机交给其下家开始的每一名角色。然后其对最后一名以此法获得【杀】的角色A造成X点伤害(X为A手牌中【杀】的数量且至多为2)。", + mutao_info: "出牌阶段限一次。你可以选择一名角色,令其将手牌中所有的【杀】置于武将牌上,然后将这些牌依次随机交给其下家开始的每一名角色。然后其对最后一名以此法获得【杀】的角色A造成X点伤害(X为A手牌中【杀】的数量且至多为2)。", yimou: "毅谋", - yimou_info: - "当一名角色受到伤害后,若其存活且你至其的距离不大于1,你可以选择一项:1.令其从牌堆中获得一张【杀】;2.令其将一张手牌交给另一名角色,然后摸一张牌。", + yimou_info: "当一名角色受到伤害后,若其存活且你至其的距离不大于1,你可以选择一项:1.令其从牌堆中获得一张【杀】;2.令其将一张手牌交给另一名角色,然后摸一张牌。", jiangji: "手杀蒋济", jiangji_prefix: "手杀", jilun: "机论", - jilun_info: - "①当你受到伤害后,若你拥有技能〖急筹〗,则你可以一项:1.摸两张牌。2.获得1枚“机论”标记。②一名角色的结束阶段,若你拥有“机论”,则重复选择执行以下项直到你没有“机论”标记:1.失去1枚“机论”标记,视为使用一张〖急筹①〗记录过且未被〖机论②〗记录过的普通锦囊牌并记录此牌牌名。2.失去所有“机论”标记。", + jilun_info: "①当你受到伤害后,若你拥有技能〖急筹〗,则你可以一项:1.摸两张牌。2.获得1枚“机论”标记。②一名角色的结束阶段,若你拥有“机论”,则重复选择执行以下项直到你没有“机论”标记:1.失去1枚“机论”标记,视为使用一张〖急筹①〗记录过且未被〖机论②〗记录过的普通锦囊牌并记录此牌牌名。2.失去所有“机论”标记。", liwei: "李遗", jiaohua: "教化", jiaohua_backup: "教化", - jiaohua_info: - "出牌阶段限两次,你可以选择一个未被〖教化〗记录过的牌的类型,令一名角色从牌堆中获得一张此类型的牌,然后记录此类型,若基本、锦囊、装备均已被你发动〖教化〗记录,则你清空〖教化〗记录。", + jiaohua_info: "出牌阶段限两次,你可以选择一个未被〖教化〗记录过的牌的类型,令一名角色从牌堆中获得一张此类型的牌,然后记录此类型,若基本、锦囊、装备均已被你发动〖教化〗记录,则你清空〖教化〗记录。", laimin: "来敏", laishou: "来寿", - laishou_info: - "锁定技。①当你受到伤害值大于等于你的体力值的伤害时,若你的体力上限小于9,你防止此伤害并增加等量体力上限。②准备阶段,若你的体力上限不小于9,你死亡。", + laishou_info: "锁定技。①当你受到伤害值大于等于你的体力值的伤害时,若你的体力上限小于9,你防止此伤害并增加等量体力上限。②准备阶段,若你的体力上限不小于9,你死亡。", luanqun: "乱群", - luanqun_info: - "出牌阶段限一次,若你有手牌,则你可以令所有有手牌的角色同时展示一张手牌,然后你可以获得其中一张与你展示的牌颜色相同的展示牌,所有本次展示牌颜色与你展示的牌颜色不同的角色的下个出牌阶段使用的第一张【杀】只能对你使用,且此【杀】不可被响应。", + luanqun_info: "出牌阶段限一次,若你有手牌,则你可以令所有有手牌的角色同时展示一张手牌,然后你可以获得其中一张与你展示的牌颜色相同的展示牌,所有本次展示牌颜色与你展示的牌颜色不同的角色的下个出牌阶段使用的第一张【杀】只能对你使用,且此【杀】不可被响应。", xin_wuban: "吴班", xinjintao: "进讨", - xinjintao_info: - "锁定技,你使用【杀】无距离限制且次数上限+1。你于出牌阶段内使用的第一张【杀】不可被响应,第二张【杀】伤害+1。", + xinjintao_info: "锁定技,你使用【杀】无距离限制且次数上限+1。你于出牌阶段内使用的第一张【杀】不可被响应,第二张【杀】伤害+1。", xinlianhuan: "连环", - xinlianhuan_info: - "你可以将一张♣手牌当【铁索连环】使用或重铸。你使用【铁索连环】选择目标后,可以给此牌增加一个目标。", + xinlianhuan_info: "你可以将一张♣手牌当【铁索连环】使用或重铸。你使用【铁索连环】选择目标后,可以给此牌增加一个目标。", mb_sunluyu: "手杀孙鲁育", mb_sunluyu_prefix: "手杀", mbmumu: "穆穆", - mbmumu_info: - "出牌阶段开始时,你可以选择一项:1.弃置场上的一张装备牌;2.获得场上的一张防具牌,然后你本回合不能使用或打出【杀】。", + mbmumu_info: "出牌阶段开始时,你可以选择一项:1.弃置场上的一张装备牌;2.获得场上的一张防具牌,然后你本回合不能使用或打出【杀】。", mbmeibu: "魅步", - mbmeibu_info: - "其他角色的出牌阶段开始时,若你在其攻击范围内,你可以弃置一张牌,令该角色于本回合内获得〖止息〗。若你以此法弃置的牌不是【杀】或黑色锦囊牌,则本回合其与你的距离视为1。", + mbmeibu_info: "其他角色的出牌阶段开始时,若你在其攻击范围内,你可以弃置一张牌,令该角色于本回合内获得〖止息〗。若你以此法弃置的牌不是【杀】或黑色锦囊牌,则本回合其与你的距离视为1。", mbzhixi: "止息", - mbzhixi_info: - "锁定技。出牌阶段,若你于此阶段使用过的牌数不小于X,你不能使用牌(X为你的体力值);当你使用锦囊牌时,你结束此阶段。", + mbzhixi_info: "锁定技。出牌阶段,若你于此阶段使用过的牌数不小于X,你不能使用牌(X为你的体力值);当你使用锦囊牌时,你结束此阶段。", yanxiang: "阎象", kujian: "苦谏", - kujian_info: - "出牌阶段限一次,你可以将至多两张手牌称为“谏”并交给一名其他角色,然后你获得以下效果:当其他角色使用或打出牌后,若其中有“谏”,你与其各摸两张牌;当其他角色不因使用或打出而失去牌后,若其中有“谏”,你与其各弃置一张牌。", + kujian_info: "出牌阶段限一次,你可以将至多两张手牌称为“谏”并交给一名其他角色,然后你获得以下效果:当其他角色使用或打出牌后,若其中有“谏”,你与其各摸两张牌;当其他角色不因使用或打出而失去牌后,若其中有“谏”,你与其各弃置一张牌。", mb_xianglang: "手杀向朗", mb_xianglang_prefix: "手杀", naxue: "纳学", - naxue_info: - "你可以跳过出牌阶段。若如此做,你可以弃置任意张牌并摸等量的牌,然后你可以交给至多两名其他角色各一张手牌。", + naxue_info: "你可以跳过出牌阶段。若如此做,你可以弃置任意张牌并摸等量的牌,然后你可以交给至多两名其他角色各一张手牌。", yijie: "遗诫", - yijie_info: - "锁定技。当你死亡时,你令所有其他角色将体力回复或失去至X(X为所有其他角色的体力之和除以所有其他角色数,向下取整,且X至少为1)。", + yijie_info: "锁定技。当你死亡时,你令所有其他角色将体力回复或失去至X(X为所有其他角色的体力之和除以所有其他角色数,向下取整,且X至少为1)。", mb_chengui: "手杀陈珪", mb_chengui_prefix: "手杀", guimou: "诡谋", - guimou_info: - "锁定技。游戏开始时/回合结束时,你随机/须选择以下一项直到你的下个准备阶段:①记录场上期间角色使用牌数;②记录期间场上角色弃置牌数;③记录期间场上角色获得牌数。准备阶段,你可以选择一名场上对应记录数值最少的其他角色,观看其手牌并选择其中一张牌,然后你将此牌交给另一名其他角色或弃置此牌。", + guimou_info: "锁定技。游戏开始时/回合结束时,你随机/须选择以下一项直到你的下个准备阶段:①记录场上期间角色使用牌数;②记录期间场上角色弃置牌数;③记录期间场上角色获得牌数。准备阶段,你可以选择一名场上对应记录数值最少的其他角色,观看其手牌并选择其中一张牌,然后你将此牌交给另一名其他角色或弃置此牌。", zhouxian: "州贤", - zhouxian_info: - "锁定技。当你成为其他角色使用的伤害类卡牌的目标后,你亮出牌堆顶的三张牌,然后其须选择一项:①弃置一张与亮出牌之一类别相同的牌;②令此牌对你无效。", + zhouxian_info: "锁定技。当你成为其他角色使用的伤害类卡牌的目标后,你亮出牌堆顶的三张牌,然后其须选择一项:①弃置一张与亮出牌之一类别相同的牌;②令此牌对你无效。", mb_huban: "手杀胡班", mb_huban_prefix: "手杀", mbyilie: "义烈", mbyilie2: "义烈", mbyilie3: "义烈", - mbyilie_info: - "锁定技。①游戏开始时,你选择一名其他角色,然后你获得以下效果:其受到伤害时,若你没有“烈”,则你获得等同于伤害值的“烈”标记,然后防止此伤害;其对其他角色造成伤害后,你回复1点体力。②结束阶段,若你拥有“烈”标记,你摸一张牌并失去X点体力,然后移去所有“烈”(X为你拥有的“烈”标记数)。", + mbyilie_info: "锁定技。①游戏开始时,你选择一名其他角色,然后你获得以下效果:其受到伤害时,若你没有“烈”,则你获得等同于伤害值的“烈”标记,然后防止此伤害;其对其他角色造成伤害后,你回复1点体力。②结束阶段,若你拥有“烈”标记,你摸一张牌并失去X点体力,然后移去所有“烈”(X为你拥有的“烈”标记数)。", muludawang: "木鹿大王", shoufa: "兽法", - shoufa_info: - "当你受到伤害后/于一回合首次造成伤害后,你可以选择一名与你距离大于/不大于2的角色,令其随机执行以下一项:豹,令其受到1点无来源伤害;鹰,你随机获得其一张牌;熊,你随机弃置其装备区的一张牌;兔,令其摸一张牌。", - shoufa_info_doudizhu: - "当你受到伤害后/于一回合首次造成伤害后,你可以选择一名与你距离大于/不大于1的角色,令其随机执行以下一项:豹,令其受到1点无来源伤害;鹰,你随机获得其一张牌;熊,你随机弃置其装备区的一张牌;兔,令其摸一张牌。", + shoufa_info: "当你受到伤害后/于一回合首次造成伤害后,你可以选择一名与你距离大于/不大于2的角色,令其随机执行以下一项:豹,令其受到1点无来源伤害;鹰,你随机获得其一张牌;熊,你随机弃置其装备区的一张牌;兔,令其摸一张牌。", + shoufa_info_doudizhu: "当你受到伤害后/于一回合首次造成伤害后,你可以选择一名与你距离大于/不大于1的角色,令其随机执行以下一项:豹,令其受到1点无来源伤害;鹰,你随机获得其一张牌;熊,你随机弃置其装备区的一张牌;兔,令其摸一张牌。", yuxiang: "御象", - yuxiang_info: - "锁定技,若你有护甲值,则:①你计算与其他角色的距离-1,其他角色计算与你的距离+1;②当你受到火焰伤害时,此伤害+1。", + yuxiang_info: "锁定技,若你有护甲值,则:①你计算与其他角色的距离-1,其他角色计算与你的距离+1;②当你受到火焰伤害时,此伤害+1。", zhoulin: "咒鳞", - zhoulin_info: - "限定技,出牌阶段,你可以获得2点护甲值,然后选择一个“兽法”效果,你发动〖兽法〗的执行效果改为你选择的效果直到你的下个回合结束。", + zhoulin_info: "限定技,出牌阶段,你可以获得2点护甲值,然后选择一个“兽法”效果,你发动〖兽法〗的执行效果改为你选择的效果直到你的下个回合结束。", xin_huojun: "手杀霍峻", xin_huojun_prefix: "手杀", sidai: "伺怠", - sidai_info: - "限定技,出牌阶段,你可以将手牌区内的所有基本牌当做【杀】使用。若此牌对应的实体牌中:包含【闪】,则目标角色成为此牌的目标后,需弃置一张基本牌,否则不可响应此牌;包含【桃】,则当目标角色受到此牌的伤害后,其减1点体力上限。", + sidai_info: "限定技,出牌阶段,你可以将手牌区内的所有基本牌当做【杀】使用。若此牌对应的实体牌中:包含【闪】,则目标角色成为此牌的目标后,需弃置一张基本牌,否则不可响应此牌;包含【桃】,则当目标角色受到此牌的伤害后,其减1点体力上限。", jieyu: "竭御", - jieyu_info: - "结束阶段,你可以从弃牌堆中获得共X张不同牌名的基本牌(X为4-你上次发动〖竭御〗至今你成为其他角色使用伤害类卡牌目标的次数,且X至少为1)。", - jieyu_info_identity: - "结束阶段,你可以从弃牌堆中获得共X张不同牌名的基本牌(X为3-你上次发动〖竭御〗至今你成为其他角色使用伤害类卡牌目标的次数,且X至少为1)。", + jieyu_info: "结束阶段,你可以从弃牌堆中获得共X张不同牌名的基本牌(X为4-你上次发动〖竭御〗至今你成为其他角色使用伤害类卡牌目标的次数,且X至少为1)。", + jieyu_info_identity: "结束阶段,你可以从弃牌堆中获得共X张不同牌名的基本牌(X为3-你上次发动〖竭御〗至今你成为其他角色使用伤害类卡牌目标的次数,且X至少为1)。", yangfeng: "杨奉", mbxuetu: "血途", - mbxuetu_info: - "转换技。出牌阶段限一次,阴:你可以弃置一张牌,然后令一名角色回复1点体力;阳:你可以失去1点体力,然后令一名角色摸两张牌。", + mbxuetu_info: "转换技。出牌阶段限一次,阴:你可以弃置一张牌,然后令一名角色回复1点体力;阳:你可以失去1点体力,然后令一名角色摸两张牌。", mbxuetu_achieve: "血途·成功", - mbxuetu_achieve_info: - "出牌阶段各限一次。⒈你可以弃置一张牌,然后令一名角色回复1点体力;⒉你可以失去1点体力,然后令一名角色摸两张牌。", + mbxuetu_achieve_info: "出牌阶段各限一次。⒈你可以弃置一张牌,然后令一名角色回复1点体力;⒉你可以失去1点体力,然后令一名角色摸两张牌。", mbxuetu_fail: "血途·失败", - mbxuetu_fail_info: - "转换技。出牌阶段限一次,阴:你可以回复1点体力,然后令一名角色弃置两张牌;阳:你可以摸一张牌,然后对一名角色造成1点伤害。", + mbxuetu_fail_info: "转换技。出牌阶段限一次,阴:你可以回复1点体力,然后令一名角色弃置两张牌;阳:你可以摸一张牌,然后对一名角色造成1点伤害。", mbweiming: "威命", - mbweiming_info: - "使命技,锁定技。①出牌阶段开始时,你记录一名未以此法记录过的角色。②成功:当你杀死一名未被〖威命①〗记录过的角色后,修改〖血途〗为成功版本。③失败:当一名被〖威命①〗记录过的角色死亡后,你修改〖血途〗为失败版本。", + mbweiming_info: "使命技,锁定技。①出牌阶段开始时,你记录一名未以此法记录过的角色。②成功:当你杀死一名未被〖威命①〗记录过的角色后,修改〖血途〗为成功版本。③失败:当一名被〖威命①〗记录过的角色死亡后,你修改〖血途〗为失败版本。", lizhaojiaobo: "李昭焦伯", mbzuoyou: "佐佑", - mbzuoyou_info: - "转换技。出牌阶段限一次,阴:你可以令一名角色摸两张牌,然后其弃置一张手牌;阳:你可以令一名手牌数不少于二的角色弃置两张手牌,然后其获得1点护甲。", + mbzuoyou_info: "转换技。出牌阶段限一次,阴:你可以令一名角色摸两张牌,然后其弃置一张手牌;阳:你可以令一名手牌数不少于二的角色弃置两张手牌,然后其获得1点护甲。", mbshishou: "侍守", - mbshishou_info: - "锁定技。当你发动〖佐佑〗后,若目标角色不为你,你执行〖佐佑〗中目标角色未执行的一项。", + mbshishou_info: "锁定技。当你发动〖佐佑〗后,若目标角色不为你,你执行〖佐佑〗中目标角色未执行的一项。", chengji: "成济", mbkuangli: "狂戾", - mbkuangli_info: - "锁定技。①出牌阶段开始时,你随机令场上任意名其他角色获得“狂戾”标记。②出牌阶段限两次。当你使用牌指定有“狂戾”的角色为目标后,你与其各随机弃置一张牌,然后你摸一张牌。③回合结束时,你移除所有角色的“狂戾”。", + mbkuangli_info: "锁定技。①出牌阶段开始时,你随机令场上任意名其他角色获得“狂戾”标记。②出牌阶段限两次。当你使用牌指定有“狂戾”的角色为目标后,你与其各随机弃置一张牌,然后你摸一张牌。③回合结束时,你移除所有角色的“狂戾”。", mbxiongsi: "凶肆", - mbxiongsi_info: - "限定技。出牌阶段,若你的手牌数不少于三张,你可以弃置所有手牌,然后令所有其他角色依次失去1点体力。", + mbxiongsi_info: "限定技。出牌阶段,若你的手牌数不少于三张,你可以弃置所有手牌,然后令所有其他角色依次失去1点体力。", mb_sp_guanqiujian: "SP毌丘俭", mb_sp_guanqiujian_prefix: "SP", mbcuizhen: "摧阵", - mbcuizhen_info_identity: - "①游戏开始时,你可以废除至多两名其他角色的武器栏。②当你于出牌阶段使用伤害类牌指定其他角色为目标后,若目标角色的手牌数不小于体力值,你可以废除其武器栏。③摸牌阶段,你令额定摸牌数+X(X为所有角色被废除的武器栏数之和,至多为2)。", - mbcuizhen_info: - "①当你于出牌阶段使用伤害类牌指定其他角色为目标后,若目标角色的手牌数不小于体力值,你可以废除其武器栏。②摸牌阶段,你令额定摸牌数+X(X为所有角色被废除的武器栏数之和,至多为2)。", + mbcuizhen_info_identity: "①游戏开始时,你可以废除至多两名其他角色的武器栏。②当你于出牌阶段使用伤害类牌指定其他角色为目标后,若目标角色的手牌数不小于体力值,你可以废除其武器栏。③摸牌阶段,你令额定摸牌数+X(X为所有角色被废除的武器栏数之和,至多为2)。", + mbcuizhen_info: "①当你于出牌阶段使用伤害类牌指定其他角色为目标后,若目标角色的手牌数不小于体力值,你可以废除其武器栏。②摸牌阶段,你令额定摸牌数+X(X为所有角色被废除的武器栏数之和,至多为2)。", mbkuili: "溃离", - mbkuili_info: - "锁定技。当你受到伤害后,你弃置等同于伤害值的手牌;若来源有被废除的武器栏,你令其恢复武器栏。", + mbkuili_info: "锁定技。当你受到伤害后,你弃置等同于伤害值的手牌;若来源有被废除的武器栏,你令其恢复武器栏。", mb_caomao: "手杀曹髦", mb_caomao_prefix: "手杀", mbqianlong: "潜龙", - mbqianlong_info: - "①游戏开始时,你获得20枚“道心”标记。②当你得到牌后/受到1点伤害后/造成1点伤害后,你获得5/10/15枚“道心”(上限为100枚)。③若你的“道心”数不小于25/50/75/100,你视为拥有〖清正〗/〖酒诗〗/〖放逐〗/〖决进〗。", + mbqianlong_info: "①游戏开始时,你获得20枚“道心”标记。②当你得到牌后/受到1点伤害后/造成1点伤害后,你获得5/10/15枚“道心”(上限为100枚)。③若你的“道心”数不小于25/50/75/100,你视为拥有〖清正〗/〖酒诗〗/〖放逐〗/〖决进〗。", mbcmqingzheng: "清正", - mbcmqingzheng_info: - "出牌阶段开始时,你可以弃置两种花色的所有手牌,并观看一名有手牌的其他角色的手牌,你弃置其中一种花色的所有牌。若其被弃置的牌数小于你以此法弃置的牌数,你对其造成1点伤害。", + mbcmqingzheng_info: "出牌阶段开始时,你可以弃置两种花色的所有手牌,并观看一名有手牌的其他角色的手牌,你弃置其中一种花色的所有牌。若其被弃置的牌数小于你以此法弃置的牌数,你对其造成1点伤害。", mbcmjiushi: "酒诗", - mbcmjiushi_info: - "①当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。②当你受到伤害后,若你的武将牌背面向上,你可以翻面。③当你翻面后,你获得牌堆里的一张锦囊牌。", + mbcmjiushi_info: "①当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。②当你受到伤害后,若你的武将牌背面向上,你可以翻面。③当你翻面后,你获得牌堆里的一张锦囊牌。", mbcmfangzhu: "放逐", - mbcmfangzhu_info: - "出牌阶段限一次。你可以选择一名其他角色,选择一项:⒈令其不能使用手牌中的非锦囊牌直到其回合结束;⒉令其所有非Charlotte技能失效直到其回合结束。", + mbcmfangzhu_info: "出牌阶段限一次。你可以选择一名其他角色,选择一项:⒈令其不能使用手牌中的非锦囊牌直到其回合结束;⒉令其所有非Charlotte技能失效直到其回合结束。", mbjuejin: "决进", - mbjuejin_info: - "限定技。出牌阶段,你可以令所有角色依次将体力回复或失去至1并获得X点护甲(X为一名角色以此法变化的体力值)。然后你增加如下“向死存魏”的全局技能:当有牌进入弃牌堆后,系统将这些牌中的【闪】、【桃】和【酒】移出游戏。", + mbjuejin_info: "限定技。出牌阶段,你可以令所有角色依次将体力回复或失去至1并获得X点护甲(X为一名角色以此法变化的体力值)。然后你增加如下“向死存魏”的全局技能:当有牌进入弃牌堆后,系统将这些牌中的【闪】、【桃】和【酒】移出游戏。", mbweitong: "卫统", mbweitong_info: "主公技。游戏开始时,若你有〖潜龙〗,你获得20X枚“道心”(X为其他魏势力角色数)。", diff --git a/character/rank.js b/character/rank.js index c216601e2..3a6a16ba6 100644 --- a/character/rank.js +++ b/character/rank.js @@ -145,6 +145,7 @@ window.noname_character_rank = { "clan_zhongyao", "guanyue", "wupu", + "xukun", ], a: [ "star_caoren", @@ -385,6 +386,7 @@ window.noname_character_rank = { "drag_caoren", "drag_lvchang", "star_sunjian", + "yj_xuangongzhu", ], am: [ "tw_yanliang", @@ -700,6 +702,7 @@ window.noname_character_rank = { "clan_wangling", "clan_wangguang", "lizhaojiaobo", + "linghuyu", ], bp: [ "xin_huojun", @@ -1418,6 +1421,7 @@ window.noname_character_rank = { "jsrg_sunjun", "xia_shie", "clan_wangmingshan", + "yj_simafu", ], bm: [ "kongrong", @@ -1921,6 +1925,7 @@ window.noname_character_rank = { "guanyue", ], epic: [ + "xukun", "clan_zhongyao", "dc_caoshuang", "tianchou", @@ -2210,6 +2215,9 @@ window.noname_character_rank = { "star_sunjian", ], rare: [ + "linghuyu", + "yj_simafu", + "yj_xuangongzhu", "drag_lvchang", "re_wangyi", "ol_wangyi", diff --git a/character/yijiang.js b/character/yijiang.js index b7998a257..c16718bec 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -6,103 +6,16 @@ game.import("character", function () { //connectBanned:['qinmi'], characterSort: { yijiang: { - yijiang_2011: [ - "caozhi", - "yujin", - "zhangchunhua", - "xin_fazheng", - "xin_masu", - "xin_xushu", - "xusheng", - "lingtong", - "wuguotai", - "chengong", - "gaoshun", - ], - yijiang_2012: [ - "wangyi", - "xunyou", - "zhonghui", - "old_madai", - "liaohua", - "guanzhang", - "bulianshi", - "handang", - "chengpu", - "liubiao", - "old_huaxiong", - "caozhang", - ], - yijiang_2013: [ - "manchong", - "guohuai", - "caochong", - "guanping", - "liufeng", - "jianyong", - "yufan", - "panzhangmazhong", - "zhuran", - "xin_liru", - "fuhuanghou", - ], - yijiang_2014: [ - "hanhaoshihuan", - "chenqun", - "caozhen", - "zhangsong", - "wuyi", - "zhoucang", - "zhuhuan", - "guyong", - "sunluban", - "yj_jushou", - "caifuren", - ], - yijiang_2015: [ - "caoxiu", - "caorui", - "zhongyao", - "xiahoushi", - "liuchen", - "zhangyi", - "zhuzhi", - "quancong", - "sunxiu", - "gongsunyuan", - "guotufengji", - ], - yijiang_2016: [ - "guohuanghou", - "sunziliufang", - "huanghao", - "liyan", - "sundeng", - "cenhun", - "zhangrang", - "liuyu", - ], - yijiang_2017: [ - "xinxianying", - "jikang", - "wuxian", - "qinmi", - "xuezong", - "xushi", - "caiyong", - "caojie", - ], - yijiang_2022: [ - "lukai", - "kebineng", - "zhugeshang", - "liwan", - "wuanguo", - "hanlong", - "yj_sufei", - "yj_qiaozhou", - ], + yijiang_2011: ["caozhi", "yujin", "zhangchunhua", "xin_fazheng", "xin_masu", "xin_xushu", "xusheng", "lingtong", "wuguotai", "chengong", "gaoshun"], + yijiang_2012: ["wangyi", "xunyou", "zhonghui", "old_madai", "liaohua", "guanzhang", "bulianshi", "handang", "chengpu", "liubiao", "old_huaxiong", "caozhang"], + yijiang_2013: ["manchong", "guohuai", "caochong", "guanping", "liufeng", "jianyong", "yufan", "panzhangmazhong", "zhuran", "xin_liru", "fuhuanghou"], + yijiang_2014: ["hanhaoshihuan", "chenqun", "caozhen", "zhangsong", "wuyi", "zhoucang", "zhuhuan", "guyong", "sunluban", "yj_jushou", "caifuren"], + yijiang_2015: ["caoxiu", "caorui", "zhongyao", "xiahoushi", "liuchen", "zhangyi", "zhuzhi", "quancong", "sunxiu", "gongsunyuan", "guotufengji"], + yijiang_2016: ["guohuanghou", "sunziliufang", "huanghao", "liyan", "sundeng", "cenhun", "zhangrang", "liuyu"], + yijiang_2017: ["xinxianying", "jikang", "wuxian", "qinmi", "xuezong", "xushi", "caiyong", "caojie"], + yijiang_2022: ["lukai", "kebineng", "zhugeshang", "liwan", "wuanguo", "hanlong", "yj_sufei", "yj_qiaozhou"], yijiang_2023: ["xiahoumao", "chenshi", "sunli", "feiyao"], + yijiang_2024: ["linghuyu", "yj_simafu", "yj_xuangongzhu", "xukun"], }, }, character: { @@ -199,136 +112,95 @@ game.import("character", function () { old_huaxiong: ["male", "qun", 6, ["shiyong"]], yujin: ["male", "wei", 4, ["rezhenjun"], []], + + linghuyu: ["male", "wei", 4, ["xvzhi"]], + yj_simafu: ["male", "wei", 3, ["beiyu", "duchi"]], + yj_xuangongzhu: ["female", "wei", 3, ["qimei", "zhuiji"]], + xukun: ["male", "wu", 4, ["fazhu"]], }, characterIntro: { + linghuyu: "令狐愚(?-249年),字公治,太原人。曹魏时期将领, 原名浚。太尉王凌的外甥,弘农太守令狐邵之侄。黄初年间出任和戎护军,后任曹爽府长史、兖州刺史。嘉平年间,与王凌一起密谋废除曹芳,共立楚王曹彪,事未行而病卒。嘉平三年(251年),事泄,王凌服毒自尽,与此事相连者,皆夷三族。王凌及令狐愚被开棺暴尸三日, 亲土埋之。", + xukun: "徐琨,字号不详,吴郡富春县(今浙江省杭州市富阳区)人。三国时期吴国开国功臣,武烈皇帝孙坚的外甥,吴大帝孙权的表兄弟,徐夫人的生父。出身吴郡豪门,最初担任郡吏。投靠舅舅孙坚,参与征伐董卓有功,拜偏将军。孙坚逝后,追随孙策,攻讨扬州刺史刘繇,采取奇袭作战方式,占领丹阳郡,为孙策开拓江东事业奠定基础,领丹杨太守。适逢吴景归附江东,改授督军中郎将。孙权嗣位后,平定庐江太守李术叛乱,击破皖城,册封广德侯,加号平虏将军。后来,随孙权征讨黄祖,身中流矢,不治而亡。", sunli: "孙礼(?—250年),字德达,涿郡容城县人。三国时期曹魏名将。曹操平定幽州后,孙礼被征召为司空军谋掾。后被任命为河间郡丞,升至荥阳都尉。后孙礼被调为鲁国相。历任山阳、平原、平昌、琅邪郡太守。从大司马曹休在夹石征吴,孙礼谏其不可深入作战,曹休不听遂战败。后孙礼调任阳平郡太守。明帝时入为尚书,受遗诏拜大将军长史,加散骑常侍。曹爽令孙礼出任扬州刺史,加管伏波将军,赐爵关内侯。孙礼率兵御东吴军队,奋不顾身,贼众乃退。朝廷赐绢七百匹,孙礼皆以绢付亡者家,无以入身。后征拜少府,出为荆州刺史,迁冀州牧。爽见礼奏,大怒,劾礼怨望,结刑五岁。在家期年,众人多以为言,除城门校尉。出为并州刺史,加振武将军,使持节,护匈奴中郎将。爽诛后,入为司隶校尉。迁司空,封大利亭侯,邑一百户。嘉平二年(250年),孙礼去世,谥号景侯。其孙孙元继承爵位。《全三国文》录有孙礼文一篇《清河平原争界案图宜属平原疏》。陈寿评曰“孙礼刚断伉厉”。", - xiahoumao: - "夏侯楙,字子林,沛国谯县(今安徽省亳州市)人,曹魏名将夏侯惇之子,三国时期魏国官员、将领,其妻为曹操之女清河公主。在魏国历任侍中、尚书、安西将军、镇东将军,假节,封列侯。曾一度驻守曹魏都城长安,但蜀汉北伐后就被调离。", - chenshi: - "陈式,生卒年不详,三国时期蜀汉将领。最初为刘备军中重要的基层指挥官,后成长为高级将领。在诸葛亮第三次北伐期间,在诸葛亮的军事指挥下攻克了魏国的武都、阴平二郡。", + xiahoumao: "夏侯楙,字子林,沛国谯县(今安徽省亳州市)人,曹魏名将夏侯惇之子,三国时期魏国官员、将领,其妻为曹操之女清河公主。在魏国历任侍中、尚书、安西将军、镇东将军,假节,封列侯。曾一度驻守曹魏都城长安,但蜀汉北伐后就被调离。", + chenshi: "陈式,生卒年不详,三国时期蜀汉将领。最初为刘备军中重要的基层指挥官,后成长为高级将领。在诸葛亮第三次北伐期间,在诸葛亮的军事指挥下攻克了魏国的武都、阴平二郡。", feiyao: "费曜(生卒年不详),又作费瑶、费繇,三国时期曹魏将领。魏初,参与平河西之乱。明帝时官任后将军,跟随曹真、司马懿多次对抗蜀汉。《三国演义》中作“费耀”,随曹真和诸葛亮的第二次北伐军作战。怀疑姜维作内应是假,自告奋勇替曹真出征,结果被事先埋伏的姜维包围,自尽而死。", - wuanguo: - "武安国,历史小说《三国演义》中人物,是北海太守孔融的部将,兵器为一把长柄铁锤,重五十余斤。诸侯伐董时,双方于虎牢关相峙,吕布撰战,一合而斩穆顺,关东军大惊。北海太守孔融部将武安国,使铁锤飞马而出,吕布挥戟拍马来迎,战到十余合,一戟砍断安国手腕,安国弃锤于地而走,八路军兵齐出,这才救了他性命。", - hanlong: - "韩龙,汉末三国时期刺客。韩龙使得魏国北方边得到数十年的安宁,减少魏国的军政压力,得以休养生息。太和二年,豫遣译夏舍诣比能女婿郁筑鞬部,舍为鞬所杀。其秋,豫将西部鲜卑蒲头、泄归泥出塞讨郁筑鞬,大破之。还至马城,比能自将三万骑围豫七日。上谷太守阎志,阎柔之弟也,素为鲜卑所信。志往解喻,即解围去。后幽州刺史王雄并领校尉,抚以恩信。比能数款塞,诣州奉贡献。至青龙元年,比能诱纳步度根,使叛并州,与结和亲,自勒万骑迎其累重於陉北。并州刺史毕轨遣将军苏尚、董弼等击之,比能遣子将骑与尚等会战於楼烦,临陈害尚、弼。至三年中,雄遣勇士韩龙刺杀比能,更立其弟。", + wuanguo: "武安国,历史小说《三国演义》中人物,是北海太守孔融的部将,兵器为一把长柄铁锤,重五十余斤。诸侯伐董时,双方于虎牢关相峙,吕布撰战,一合而斩穆顺,关东军大惊。北海太守孔融部将武安国,使铁锤飞马而出,吕布挥戟拍马来迎,战到十余合,一戟砍断安国手腕,安国弃锤于地而走,八路军兵齐出,这才救了他性命。", + hanlong: "韩龙,汉末三国时期刺客。韩龙使得魏国北方边得到数十年的安宁,减少魏国的军政压力,得以休养生息。太和二年,豫遣译夏舍诣比能女婿郁筑鞬部,舍为鞬所杀。其秋,豫将西部鲜卑蒲头、泄归泥出塞讨郁筑鞬,大破之。还至马城,比能自将三万骑围豫七日。上谷太守阎志,阎柔之弟也,素为鲜卑所信。志往解喻,即解围去。后幽州刺史王雄并领校尉,抚以恩信。比能数款塞,诣州奉贡献。至青龙元年,比能诱纳步度根,使叛并州,与结和亲,自勒万骑迎其累重於陉北。并州刺史毕轨遣将军苏尚、董弼等击之,比能遣子将骑与尚等会战於楼烦,临陈害尚、弼。至三年中,雄遣勇士韩龙刺杀比能,更立其弟。", liwan: "李婉(生卒年不详),字淑文,里居不详,贾充之妻,魏晋时期才女,约景元年间(260年前后)在世。著有《典戒》。《隋书·经籍志》载李婉有文集一卷,今失传。", - zhugeshang: - "诸葛尚(244年2月-263年11月),琅琊阳都(今山东沂南)人,诸葛瞻长子,诸葛亮之孙。诸葛尚博览兵书且精通武艺。炎兴元年(公元263年),出任先锋,抗拒魏国大将邓艾,与其父诸葛瞻同战死于绵竹,时年十九岁。", - kebineng: - "轲比能(?~235年),为中国三国时期的鲜卑首领之一。轲比能出身鲜卑支部,因他作战勇敢,执法公平,不贪财物,所以被鲜卑民众推举为大人。轲比能因其部落近塞,所以他抓住有利条件积极学习汉族先进技术和文化,促进了鲜卑族的进步和北方的民族融合。轲比能统率下的部众,战守有法,战斗力相当强大。自曹操北征后向曹氏进贡表示效忠。魏文帝时,轲比能受封附义王。轲比能在进行部落统一战争时,受魏国干涉,受沉重打击,于是对魏怀贰,献书魏帝表忠,以麻痹魏庭,使之放松警惕。此后,轲比能的部众变得强盛,控弦十余万骑,为害魏国边境。每次钞略得财物,轲比能都公开透明地均平分配,所以得部众死力,各部大人都敬畏之。实力强大后,他继续部落统一战争,于是威行诸部落,建立起强大的鲜卑族政权。深感威胁的魏国幽州刺史王雄派刺客韩龙将其刺杀,其政权立刻崩溃,鲜卑民族再次陷入混战。", + zhugeshang: "诸葛尚(244年2月-263年11月),琅琊阳都(今山东沂南)人,诸葛瞻长子,诸葛亮之孙。诸葛尚博览兵书且精通武艺。炎兴元年(公元263年),出任先锋,抗拒魏国大将邓艾,与其父诸葛瞻同战死于绵竹,时年十九岁。", + kebineng: "轲比能(?~235年),为中国三国时期的鲜卑首领之一。轲比能出身鲜卑支部,因他作战勇敢,执法公平,不贪财物,所以被鲜卑民众推举为大人。轲比能因其部落近塞,所以他抓住有利条件积极学习汉族先进技术和文化,促进了鲜卑族的进步和北方的民族融合。轲比能统率下的部众,战守有法,战斗力相当强大。自曹操北征后向曹氏进贡表示效忠。魏文帝时,轲比能受封附义王。轲比能在进行部落统一战争时,受魏国干涉,受沉重打击,于是对魏怀贰,献书魏帝表忠,以麻痹魏庭,使之放松警惕。此后,轲比能的部众变得强盛,控弦十余万骑,为害魏国边境。每次钞略得财物,轲比能都公开透明地均平分配,所以得部众死力,各部大人都敬畏之。实力强大后,他继续部落统一战争,于是威行诸部落,建立起强大的鲜卑族政权。深感威胁的魏国幽州刺史王雄派刺客韩龙将其刺杀,其政权立刻崩溃,鲜卑民族再次陷入混战。", lukai: "陆凯(198-269年),字敬风,吴郡吴县(今江苏省苏州市)人。三国时期吴国重臣,丞相陆逊的族侄,大司马陆抗的族兄。黄武年间,举孝廉出身,曾任永兴县长、诸暨县长,颇有治绩。拜建武都尉、儋耳太守,与聂友率军讨伐朱崖和儋耳,迁建武校尉。五凤二年(255年),讨斩零陵山贼陈毖,拜偏将军、巴丘督,册封都乡侯。迁武昌右部督,随军进入寿春。后拜荡魏将军,加号绥远将军。吴景帝孙休继位,拜征北将军、假节、领豫州牧。孙皓即位,迁任镇西大将军,都督巴丘,又领荆州牧,进封嘉兴侯。宝鼎元年(266年),迁左丞相。以正直及屡次劝谏孙皓而闻名。建衡元年(269年),去世,时年七十二。", caozhi: "字子建,沛国谯人,三国曹魏著名文学家,建安文学代表人物。魏武帝曹操之子,魏文帝曹丕之弟,生前曾为陈王,去世后谥号“思”,因此又称陈思王。南朝宋文学家谢灵运更有“天下才有一石,曹子建独占八斗”的评价。王士祯尝论汉魏以来二千年间诗家堪称“仙才”者,曹植、李白、苏轼三人耳。", - gaoshun: - "中国东汉末年将领,吕布帐下中郎将。史载高顺为人清白有威严,不好饮酒,所统率的部队精锐非常,号称“陷阵营”。屡进忠言于吕布,吕布虽知其忠而不能用。曹操击破吕布后,高顺被曹操所杀。", - chengong: - "字公台,东汉末年吕布帐下谋士,东郡东武阳人。性情刚直,足智多谋,年少时与海内知名之士相互结交。192年,陈宫等人主张曹操接任兖州牧。但此后陈宫因曹操杀害边让而与曹操反目,并游说张邈等人背叛曹操迎吕布入兖州,辅助吕布攻打曹操。吕布战败后,随吕布等一同被曹操所擒,决意赴死。", + gaoshun: "中国东汉末年将领,吕布帐下中郎将。史载高顺为人清白有威严,不好饮酒,所统率的部队精锐非常,号称“陷阵营”。屡进忠言于吕布,吕布虽知其忠而不能用。曹操击破吕布后,高顺被曹操所杀。", + chengong: "字公台,东汉末年吕布帐下谋士,东郡东武阳人。性情刚直,足智多谋,年少时与海内知名之士相互结交。192年,陈宫等人主张曹操接任兖州牧。但此后陈宫因曹操杀害边让而与曹操反目,并游说张邈等人背叛曹操迎吕布入兖州,辅助吕布攻打曹操。吕布战败后,随吕布等一同被曹操所擒,决意赴死。", lingtong: "字公绩,吴郡馀杭人,三国时期吴国名将。凌操之子,官至偏将军。", masu: "字幼常,襄阳宜城人,三国时期蜀汉大臣,侍中马良之弟。初以荆州从事跟随刘备取蜀入川,曾任绵竹、成都令、越嶲太守。诸葛亮北伐时因作战失误而失守街亭,因而被诸葛亮所斩。", - wuguotai: - "吴国太,小说《三国演义》中的人物,不见于正史记载。在小说中,吴国太被描述为孙坚的次妻,孙坚正妻武烈皇后(小说中写作吴太夫人)的妹妹,孙朗、孙仁(孙尚香)的母亲。", - xusheng: - "字文向,琅邪莒县人。三国时期吴将。徐盛最初因讨伐山贼有功而被加为中郎将,后于濡须口之战中表现出色,得到孙权的赞赏。魏文帝曹丕伐吴时,徐盛以疑城之计退去魏军。", + wuguotai: "吴国太,小说《三国演义》中的人物,不见于正史记载。在小说中,吴国太被描述为孙坚的次妻,孙坚正妻武烈皇后(小说中写作吴太夫人)的妹妹,孙朗、孙仁(孙尚香)的母亲。", + xusheng: "字文向,琅邪莒县人。三国时期吴将。徐盛最初因讨伐山贼有功而被加为中郎将,后于濡须口之战中表现出色,得到孙权的赞赏。魏文帝曹丕伐吴时,徐盛以疑城之计退去魏军。", yujin: "字文则,泰山钜平人。三国时期曹魏武将。本为鲍信部将,后属曹操,曹操称赞他可与古代名将相比。然而在建安二十四年的襄樊之战中,于禁在败给关羽后投降,致使一代名将晚节不保。", - zhangchunhua: - "西晋宣穆皇后张春华(189-247),河内平皋(今河南温县)人。她是晋宣帝司马懿之妻,晋景帝司马师、晋文帝司马昭的母亲。后被追尊为皇后。", - fazheng: - "字孝直,本为刘璋部下,刘备围成都时劝说刘璋投降,而后又与刘备进取汉中,献计将曹操大将夏侯渊斩首。法正善奇谋,深受刘备信任和敬重。", + zhangchunhua: "西晋宣穆皇后张春华(189-247),河内平皋(今河南温县)人。她是晋宣帝司马懿之妻,晋景帝司马师、晋文帝司马昭的母亲。后被追尊为皇后。", + fazheng: "字孝直,本为刘璋部下,刘备围成都时劝说刘璋投降,而后又与刘备进取汉中,献计将曹操大将夏侯渊斩首。法正善奇谋,深受刘备信任和敬重。", xushu: "字元直,与司马徽、诸葛亮等人为友。先化名单福仕官于新野的刘备,后因曹操囚禁其母而不得不弃备投操,临行前向刘备推荐诸葛亮之才。入曹营后,一言不发,不曾为曹操进献过一计半策。后人形容徐庶“身在曹营心在汉”。", - caozhang: - "字子文,是曹操与武宣卞皇后所生第二子,曹丕之弟,曹植之兄,曹魏任城王。曹彰武艺过人,曹操问诸子志向时自言“好为将”,因此得到曹操的赞赏。其胡须黄色,被曹操称为“黄须儿”。", + caozhang: "字子文,是曹操与武宣卞皇后所生第二子,曹丕之弟,曹植之兄,曹魏任城王。曹彰武艺过人,曹操问诸子志向时自言“好为将”,因此得到曹操的赞赏。其胡须黄色,被曹操称为“黄须儿”。", xunyou: "字公达,颍川颍阴人。东汉末年曹操的五谋臣之一,荀彧从子,被曹操称为“谋主”。官至尚书令。正始五年被追谥为敬侯。", - liaohua: - "本名淳,字元俭,襄阳中卢(今湖北襄樊)人。三国时期蜀国后期将领,以勇敢果断著称。廖化是三国时代中经历了魏、蜀、吴整个兴衰过程极少数人中的一个,与严颜、黄忠共称为蜀汉三老将。", - bulianshi: - "步夫人(?-238),讳练师,临淮淮阴人。东吴丞相步骘同族,吴大帝孙权之妃,在孙权众夫人中最受孙权的宠爱(宠冠后庭),生有二女:孙鲁班、孙鲁育。赤乌元年卒,追封为皇后,葬于蒋陵。", - chengpu: - "字德谋,右北平土垠人。历仕孙坚、孙策、孙权三任君主。孙策死后,他与张昭等人共同辅佐孙权,并讨伐江东境内的山贼,功勋卓著。被人们尊称为“程公”。", - handang: - "字义公,辽西令支(今河北迁安)人,吴国将领。韩当因为长于弓箭、骑术并且膂力过人而被孙坚赏识,追随他四处征伐周旋,数次冒险犯难,攻陷敌人、擒拿俘虏。对江东基业的逐渐稳固和吴国的建立有着重要影响。", - liubiao: - "刘表,字景升,山阳郡高平(今山东微山)人。东汉末年名士,汉室宗亲,荆州牧,汉末群雄之一。", - zhonghui: - "字士季。魏名将,太傅钟繇之子。公元263年,他与邓艾带兵攻打蜀国,最终导致蜀国灭亡。之后钟会设计害死邓艾,联合姜维准备自立,最终因部下反叛失败,与姜维一同死于兵变。", + liaohua: "本名淳,字元俭,襄阳中卢(今湖北襄樊)人。三国时期蜀国后期将领,以勇敢果断著称。廖化是三国时代中经历了魏、蜀、吴整个兴衰过程极少数人中的一个,与严颜、黄忠共称为蜀汉三老将。", + bulianshi: "步夫人(?-238),讳练师,临淮淮阴人。东吴丞相步骘同族,吴大帝孙权之妃,在孙权众夫人中最受孙权的宠爱(宠冠后庭),生有二女:孙鲁班、孙鲁育。赤乌元年卒,追封为皇后,葬于蒋陵。", + chengpu: "字德谋,右北平土垠人。历仕孙坚、孙策、孙权三任君主。孙策死后,他与张昭等人共同辅佐孙权,并讨伐江东境内的山贼,功勋卓著。被人们尊称为“程公”。", + handang: "字义公,辽西令支(今河北迁安)人,吴国将领。韩当因为长于弓箭、骑术并且膂力过人而被孙坚赏识,追随他四处征伐周旋,数次冒险犯难,攻陷敌人、擒拿俘虏。对江东基业的逐渐稳固和吴国的建立有着重要影响。", + liubiao: "刘表,字景升,山阳郡高平(今山东微山)人。东汉末年名士,汉室宗亲,荆州牧,汉末群雄之一。", + zhonghui: "字士季。魏名将,太傅钟繇之子。公元263年,他与邓艾带兵攻打蜀国,最终导致蜀国灭亡。之后钟会设计害死邓艾,联合姜维准备自立,最终因部下反叛失败,与姜维一同死于兵变。", wangyi: "益州刺史赵昂之妻,赵英、赵月之母。马超作乱凉州时,王异协助丈夫守城,多有功勋,自马超攻冀城至祁山坚守,赵昂曾出奇计九条,王异皆有参与。", - guanzhang: - "关兴,名将关羽之子,继承了父亲汉寿亭侯的爵位。年少时即受诸葛亮器重,在蜀汉担任侍中、中监军之职,后在夷陵之战中报了杀父之仇。张苞,张飞的长子,使用父亲的家传蛇矛为兵器,勇猛剽悍不弱其父。", + guanzhang: "关兴,名将关羽之子,继承了父亲汉寿亭侯的爵位。年少时即受诸葛亮器重,在蜀汉担任侍中、中监军之职,后在夷陵之战中报了杀父之仇。张苞,张飞的长子,使用父亲的家传蛇矛为兵器,勇猛剽悍不弱其父。", madai: "名将马超的从弟。早年他曾经从曹操手中死里逃生,后跟随马超大战曹操。后在诸葛亮病逝后受杨仪派遣斩杀了蜀将魏延。曾率领军队出师北伐,被魏将牛金击败而退还。", - caochong: - "字仓舒,曹操之子。从小聪明仁爱,与众不同,深受曹操喜爱。留有“曹冲称象”的典故。曹操几次对群臣夸耀他,有让他继嗣之意。可惜曹冲在建安十三病逝,年仅13岁。", - guohuai: - "魏国名将,夏侯渊战死时郭淮收集残兵,与杜袭共推张郃为主将而得以稳定局势。曹丕称帝后,赐郭淮爵关内侯,又任镇西长史。诸葛亮伐魏时,郭淮料敌准确,多立战功,而后亦曾击退姜维。", - manchong: - "初在曹操手下任许县县令,掌管司法,以执法严格著称;转任汝南太守,开始参与军事,曾参与赤壁之战。后关羽围攻樊城,满宠协助曹仁守城,劝阻了弃城而逃的计划,成功坚持到援军到来。曹丕在位期间,满宠驻扎在新野,负责荆州侧的对吴作战。曹叡在位期间,满宠转任到扬州,接替曹休负责东侧对吴作战,屡有功劳。", - guanping: - "关平是关羽在战乱中所收之义子。关羽脱离曹军后,与刘备于关定家中重逢,关定欲使年仅十八岁的关平随关羽同行,刘备便主张让关羽与关平结为义父子。自此后关平随侍在关羽身边,一生东征西讨。他武勇过人,不逊乃父,曾跟随刘备出征西川,立下战功,后来又与曹魏猛将庞德大战三十回合,不分胜负。", - jianyong: - "简雍为刘备同乡,年少时与刘备相识。黄巾之乱时,刘备加入对抗黄巾军的战争,简雍便跟随他奔走。常作为谈客,往来使命,刘备围成都时简雍作为刘备使臣成功劝说刘璋投降。简雍擅于辩论、议事。性情简单直接、不拘小节。", - liufeng: - "刘备义子。性格刚猛,气力过人。随赵云、张飞等扫荡西川,颇有战功,而后又统领孟达攻取上庸,深为刘备信任。但是后来关羽北伐曹魏,多次要求刘封起兵相助,刘封不从。而后又侵凌孟达,迫其降魏。孟达与魏徐晃共袭刘封,并劝刘封投降,刘封不降,又遭部下叛变,败归成都。刘备在诸葛亮的建议下赐死刘封,刘封自裁,刘备深表痛惜。", - panzhangmazhong: - "马忠为潘璋部将。于麦城之战中设伏擒获关羽及关平。刘备伐吴时,马忠随潘璋等往拒,突袭射伤蜀将黄忠,导致黄忠阵亡。不久,潘璋为关兴所杀,马忠领兵围击,击退张苞援军。后降将糜、傅发动兵变,刺杀了马忠,将首级献于刘备。", + caochong: "字仓舒,曹操之子。从小聪明仁爱,与众不同,深受曹操喜爱。留有“曹冲称象”的典故。曹操几次对群臣夸耀他,有让他继嗣之意。可惜曹冲在建安十三病逝,年仅13岁。", + guohuai: "魏国名将,夏侯渊战死时郭淮收集残兵,与杜袭共推张郃为主将而得以稳定局势。曹丕称帝后,赐郭淮爵关内侯,又任镇西长史。诸葛亮伐魏时,郭淮料敌准确,多立战功,而后亦曾击退姜维。", + manchong: "初在曹操手下任许县县令,掌管司法,以执法严格著称;转任汝南太守,开始参与军事,曾参与赤壁之战。后关羽围攻樊城,满宠协助曹仁守城,劝阻了弃城而逃的计划,成功坚持到援军到来。曹丕在位期间,满宠驻扎在新野,负责荆州侧的对吴作战。曹叡在位期间,满宠转任到扬州,接替曹休负责东侧对吴作战,屡有功劳。", + guanping: "关平是关羽在战乱中所收之义子。关羽脱离曹军后,与刘备于关定家中重逢,关定欲使年仅十八岁的关平随关羽同行,刘备便主张让关羽与关平结为义父子。自此后关平随侍在关羽身边,一生东征西讨。他武勇过人,不逊乃父,曾跟随刘备出征西川,立下战功,后来又与曹魏猛将庞德大战三十回合,不分胜负。", + jianyong: "简雍为刘备同乡,年少时与刘备相识。黄巾之乱时,刘备加入对抗黄巾军的战争,简雍便跟随他奔走。常作为谈客,往来使命,刘备围成都时简雍作为刘备使臣成功劝说刘璋投降。简雍擅于辩论、议事。性情简单直接、不拘小节。", + liufeng: "刘备义子。性格刚猛,气力过人。随赵云、张飞等扫荡西川,颇有战功,而后又统领孟达攻取上庸,深为刘备信任。但是后来关羽北伐曹魏,多次要求刘封起兵相助,刘封不从。而后又侵凌孟达,迫其降魏。孟达与魏徐晃共袭刘封,并劝刘封投降,刘封不降,又遭部下叛变,败归成都。刘备在诸葛亮的建议下赐死刘封,刘封自裁,刘备深表痛惜。", + panzhangmazhong: "马忠为潘璋部将。于麦城之战中设伏擒获关羽及关平。刘备伐吴时,马忠随潘璋等往拒,突袭射伤蜀将黄忠,导致黄忠阵亡。不久,潘璋为关兴所杀,马忠领兵围击,击退张苞援军。后降将糜、傅发动兵变,刺杀了马忠,将首级献于刘备。", yufan: "虞翻初在会稽被太守王朗任命为功曹,曾劝谏王朗躲开孙策未果。后孙策占江东仍任命他为功曹。吕蒙袭取荆州时,虞翻提醒其躲过了埋伏,成功占领城池。后因为直言进谏被孙权发配到交州。", zhuran: "吴国著名将领,吕蒙白衣渡江取荆州,朱然协助潘璋捉住了关羽。黄武元年,刘备兵伐东吴,朱然与孙桓抵抗刘备大军。后又参加夷陵之战,追击刘备,被前来接应的赵云一枪刺死。", - fuhuanghou: - "执金吾伏完之女,汉献帝的皇后,后因怨恨曹操诛董承,与父伏完密谋曹操,事情泄漏,曹将伏皇后禁闭冷宫逼其自缢,所生二位皇子亦被鸩杀。", + fuhuanghou: "执金吾伏完之女,汉献帝的皇后,后因怨恨曹操诛董承,与父伏完密谋曹操,事情泄漏,曹将伏皇后禁闭冷宫逼其自缢,所生二位皇子亦被鸩杀。", liru: "董卓的首席谋士,为董卓所亲信,大小事宜皆与其商议。董卓趁乱进京、说降吕布、废立皇帝、迁都长安等举动,均离不开李儒的参谋之功,并奉命毒杀皇帝刘辩。李傕被曹操击败后,李儒从此不知所踪,消失在历史长河中。", - caozhen: - "曹操族子,官至大将军、大司马。其父为曹操招募人马时被州郡所杀,曹操因怜悯曹真少年丧父而待其如亲子一般,因赞赏曹真的勇猛而让他率领虎豹骑。曹真在镇守曹魏西北边境时表现突出,魏文帝时期督众将大破羌胡联军,平定河西;魏明帝时期屡次对抗诸葛亮的北伐。", + caozhen: "曹操族子,官至大将军、大司马。其父为曹操招募人马时被州郡所杀,曹操因怜悯曹真少年丧父而待其如亲子一般,因赞赏曹真的勇猛而让他率领虎豹骑。曹真在镇守曹魏西北边境时表现突出,魏文帝时期督众将大破羌胡联军,平定河西;魏明帝时期屡次对抗诸葛亮的北伐。", hanhaoshihuan: "韩浩和史涣都以忠勇著称,两人皆是曹操心腹将领,共同掌管禁兵。", - chenqun: - "陈群一直位居要职,先后受曹操、曹丕托孤,成为魏国重臣,官至司空。其子陈泰,亦是魏国后期名将。最大的贡献为创立了九品中正制,为后期的人才选拔和管理打好了基础。", + chenqun: "陈群一直位居要职,先后受曹操、曹丕托孤,成为魏国重臣,官至司空。其子陈泰,亦是魏国后期名将。最大的贡献为创立了九品中正制,为后期的人才选拔和管理打好了基础。", wuyi: "初为益州牧刘璋的部将,刘备进攻益州时,泠苞在雒城大败,吴懿自告奋勇,领兵前往救援。不料被赵云和张飞生擒,吴懿于是归降。刘备自称汉中王,迎娶吴懿之妹。诸葛亮出师北伐,吴懿以左将军、高阳侯的身份跟随出征,屡立战功。诸葛亮逝世后,吴懿随姜维一并镇守汉中。", - zhoucang: - "原为张宝部将。关羽千里走单骑时,周仓投降关羽,成为了关羽的贴身护卫。建安十六年(公元211年),刘备攻打成都时,周仓跟随关羽镇守荆州。关羽水淹七军时,周仓曾生擒魏军的立义将军庞德,关羽被孙权斩首之后,周仓在麦城大哭失声,拔剑自刎而死。", - zhangsong: - "刘璋的部下,长相丑陋但有过目不忘的本领。张松奉命出使许都被曹操赶出,归蜀时为刘备所厚待,于是将西川地理图献予刘备,劝刘备取益州,愿为内应,并派好友孟达、法正帮助刘备。", - sunluban: - "孙权之女。孙鲁班与孙权二子孙和不睦。孙权长子孙登死后,孙和被立为太子。孙鲁班向孙权进谗言废孙和太子之位,孙和被废后忧愤而死。", - zhuhuan: - "字休穆,吴郡吴县(今江苏苏州)人,吴国名将,官至前将军、青州牧,假节,封为嘉兴侯。有一子朱异。", + zhoucang: "原为张宝部将。关羽千里走单骑时,周仓投降关羽,成为了关羽的贴身护卫。建安十六年(公元211年),刘备攻打成都时,周仓跟随关羽镇守荆州。关羽水淹七军时,周仓曾生擒魏军的立义将军庞德,关羽被孙权斩首之后,周仓在麦城大哭失声,拔剑自刎而死。", + zhangsong: "刘璋的部下,长相丑陋但有过目不忘的本领。张松奉命出使许都被曹操赶出,归蜀时为刘备所厚待,于是将西川地理图献予刘备,劝刘备取益州,愿为内应,并派好友孟达、法正帮助刘备。", + sunluban: "孙权之女。孙鲁班与孙权二子孙和不睦。孙权长子孙登死后,孙和被立为太子。孙鲁班向孙权进谗言废孙和太子之位,孙和被废后忧愤而死。", + zhuhuan: "字休穆,吴郡吴县(今江苏苏州)人,吴国名将,官至前将军、青州牧,假节,封为嘉兴侯。有一子朱异。", guyong: "为蔡邕之徒。其为人少言语,不饮酒,严厉正大,被张纮推荐仕于孙权。孙权任命他为会稽郡丞,行太守事,后不断升迁,官至吴国丞相。顾雍为官,多进良言,有功于吴。", jushou: "袁绍帐下谋士。史载他“少有大志,擅于谋略”。曾为冀州别驾,举茂才,并当过两次县令。后来又当韩馥别驾,被韩馥表为骑都尉。袁绍占据冀州后任用沮授为从事。经常对袁绍提出良策,但很多时候袁绍并不听从。官渡之战时袁绍大败,沮授未及逃走,被曹操所获,因拒降被曹操处死。", - caifuren: - "原是刘表的小妾,正室死后,成为了刘表的后妻。因刘琮娶了自己的侄女所以对其偏爱有加。刘备客居荆州时险些受其所害。刘表死后为了让刘琮即位不惜献州于曹操。", + caifuren: "原是刘表的小妾,正室死后,成为了刘表的后妻。因刘琮娶了自己的侄女所以对其偏爱有加。刘备客居荆州时险些受其所害。刘表死后为了让刘琮即位不惜献州于曹操。", caorui: "魏文帝曹丕长子,曹魏第二位皇帝。在位期间指挥曹真、司马懿等人成功防御了吴、蜀的多次攻伐,并且平定鲜卑,攻灭公孙渊,颇有建树。", caoxiu: "曹操族子,曹操大宴铜雀台之时,射箭夺袍。曹休随曹操四处征伐,在攻蜀汉中之战,伐吴濡须口之战均有登场,曾放冷箭射倒凌统的马匹,后又协助夏侯惇平息洛阳纵火叛乱,总管御林兵马,协助曹丕代汉。", - zhongyao: - "初为长安郡守,马超反叛时,引军攻打长安,钟繇率军防卫。后城破,钟繇从东门弃城而走,退守潼关。后奉献帝令繇草拟诏令,册立曹操为魏王,曹操以钟繇为相国。明帝即位时,钟繇为太傅。诸葛亮北伐,钟繇举荐司马懿前往抵御。", - liuchen: - "刘禅第五子,自幼聪明,英敏过人。魏军兵临城下时,刘禅准备投降,刘谌劝阻刘禅投降不成后悲愤不已,遂自杀于昭烈庙。", + zhongyao: "初为长安郡守,马超反叛时,引军攻打长安,钟繇率军防卫。后城破,钟繇从东门弃城而走,退守潼关。后奉献帝令繇草拟诏令,册立曹操为魏王,曹操以钟繇为相国。明帝即位时,钟繇为太傅。诸葛亮北伐,钟繇举荐司马懿前往抵御。", + liuchen: "刘禅第五子,自幼聪明,英敏过人。魏军兵临城下时,刘禅准备投降,刘谌劝阻刘禅投降不成后悲愤不已,遂自杀于昭烈庙。", xiahoushi: "夏侯渊从女,夏侯霸从妹,出城拾柴时被张飞所得,取其为妻。后生有二女,其中一人为星彩。", - zhangyi: - "曾随诸葛亮南征孟获,七擒孟获的战斗中立下赫赫战功,与祝融夫人单挑。诸葛亮病死五丈原,告诉姜维张嶷忠贞勇猛,经验丰富,是可以依靠的武将,后于征伐魏国时为掩护姜维撤退阵亡。", + zhangyi: "曾随诸葛亮南征孟获,七擒孟获的战斗中立下赫赫战功,与祝融夫人单挑。诸葛亮病死五丈原,告诉姜维张嶷忠贞勇猛,经验丰富,是可以依靠的武将,后于征伐魏国时为掩护姜维撤退阵亡。", sunxiu: "孙权第六子,孙綝发动政变罢黜孙亮后,迎立孙休为帝。后孙綝专权,孙休遣使丁奉等人将其诛杀。孙休在位期间,颁布良制,嘉惠百姓,促进了东吴的繁荣。", zhuzhi: "孙坚旧将,朱然嗣父,孙坚阵亡后,孙策附袁术,朱治、吕范为之定计,用玉玺向袁术借兵夺取江东。孙策平定东路后,任命朱治为吴郡太守,收军返回江东。后来赤壁之战,大都督周瑜令朱治、吕范为四方巡警使,催督六郡官军。", quancong: "吴国名将,孙策进兵江东时归顺之,深得孙权赏识,孙权甚至将孙鲁班许配之。", - gongsunyuan: - "辽东太守公孙度之孙,辽东割据首领。趁魏、吴骚乱之际自称燕王,发动叛乱,与魏对抗。败给司马懿率领的讨伐大军,被围困后乞降不被接受,与子修在欲出城逃跑时被斩杀。", - guotufengji: - "两人均是袁绍帐下谋士。曾联手献计,利用公孙瓒攻击韩馥,又劝说韩馥请袁绍抵挡公孙瓒,终替袁绍拿下冀州。官渡之战期间,两人进谗逼反张郃高览,逼死田丰。使得袁绍的实力大损。", - guohuanghou: - "明元郭皇后(并非郭女王),在三国志有正传。曹叡夫人,曹丕的儿媳妇,曹芳,曹髦,曹奂三朝太后,是唯一经历了曹魏全部皇帝时代的贵族女性。曹魏后三帝时期,由于皇帝年少,太后与重臣一同处理政务。史书上对郭皇后有两种截然不同的记载,一种是曹芳被废和曹髦死后郭太后发诏书斥责他们不配人君,另一种却提及曹芳被夺权期间,太后与曹芳相拥而泣,曹髦讨伐司马昭前,曾向太后禀报。", + gongsunyuan: "辽东太守公孙度之孙,辽东割据首领。趁魏、吴骚乱之际自称燕王,发动叛乱,与魏对抗。败给司马懿率领的讨伐大军,被围困后乞降不被接受,与子修在欲出城逃跑时被斩杀。", + guotufengji: "两人均是袁绍帐下谋士。曾联手献计,利用公孙瓒攻击韩馥,又劝说韩馥请袁绍抵挡公孙瓒,终替袁绍拿下冀州。官渡之战期间,两人进谗逼反张郃高览,逼死田丰。使得袁绍的实力大损。", + guohuanghou: "明元郭皇后(并非郭女王),在三国志有正传。曹叡夫人,曹丕的儿媳妇,曹芳,曹髦,曹奂三朝太后,是唯一经历了曹魏全部皇帝时代的贵族女性。曹魏后三帝时期,由于皇帝年少,太后与重臣一同处理政务。史书上对郭皇后有两种截然不同的记载,一种是曹芳被废和曹髦死后郭太后发诏书斥责他们不配人君,另一种却提及曹芳被夺权期间,太后与曹芳相拥而泣,曹髦讨伐司马昭前,曾向太后禀报。", liyan: "字正方,蜀汉重臣。初为刘表部下,曹操入主荆州时,李严西奔入蜀。刘备入川,李严率众投降,深得刘备器重,受命与诸葛亮、法正等人一同编制《蜀科》,又率军平定了蜀中盗贼。白帝城托孤,与诸葛亮共受遗诏同扶幼主。其人性格矜高难近,终因督粮不利且谎报实情而被流放,后在当地去世。", - sundeng: - "字子高,孙权长子。孙权称帝后其被立为太子,受诸葛恪等人辅佐。其人性情温和而能礼贤下士,加之爱民如子,因此深受爱戴。曾劝服孙权在孙虑之死时节哀,并劝谏孙权勿用吕壹苛政。后不幸早逝,临终前上书建言,推荐了多位良臣。其亡故令孙权极为悲伤,也为南鲁党争的祸乱埋下了伏笔。", + sundeng: "字子高,孙权长子。孙权称帝后其被立为太子,受诸葛恪等人辅佐。其人性情温和而能礼贤下士,加之爱民如子,因此深受爱戴。曾劝服孙权在孙虑之死时节哀,并劝谏孙权勿用吕壹苛政。后不幸早逝,临终前上书建言,推荐了多位良臣。其亡故令孙权极为悲伤,也为南鲁党争的祸乱埋下了伏笔。", liuyu: "伯安,幽州牧,汉室宗亲。在幽州两度任职,颇有威望。张纯、张举叛乱,刘虞恩威并施将其平定,又鼓励农商,大大改善了当地经济民生,青徐二州流民纷纷前来避难。后坚拒袁绍等人立其为帝的请求,派兵迎接献帝,却为袁术所扣,并因此事激化了与公孙瓒的矛盾,最终被击败,为其所害。", cenhun: "岑昏为宦官,官列中常侍,孙皓即位后得到宠幸。280年,晋龙骧将军王濬率军伐吴,岑昏建议以铁锁链封锁长江,阻挡晋军进攻。王濬以火船烧锁链破其计,沿途东吴将士或死或降。群臣上奏东吴衰败之因在于岑昏,将他与蜀汉的黄皓并列为误国之奸臣。", - sunziliufang: - "孙资在曹操手下历任县令,参丞相军事;刘放曾有劝王松归顺曹操之举,为曹操所欣赏,遂招为司空府官,又外放历任几处县令。魏国初建之际,孙资与刘放俱任秘书郎。曹丕继位后,二人一同掌握机密。曹睿病危时,二人力荐曹爽,又推荐招回司马懿辅政。最后,曹睿独召曹爽、司马懿、刘放、孙资同受诏命,而免去曹宇、夏侯献、曹肇、秦朗的官职。", - huanghao: - "宦官。为后主刘禅所宠,专秉朝政。黄皓与大将军姜维不睦,维启后主杀之,后主不从。皓阴以心腹阎宇替维。景耀六年,蜀亡,邓艾预欲杀之,皓贿赂左右得免。及后主迁洛阳,皓为司马昭凌迟处死。", - zhangrang: - "汉中常侍。同赵忠、曹节、段珪等为“十常侍”,为灵帝所宠。让等专权乱政、卖官索财,朝野皆痛恨之。郎中张钧上书奏请诛杀十常侍,帝不允,让等阴杀钧。及灵帝崩,大将军何进欲杀让等,让阴结何太后,招进入宫,斩杀之。部将袁绍引兵攻让,让等劫帝走河上。追急,让投水自尽。", + sunziliufang: "孙资在曹操手下历任县令,参丞相军事;刘放曾有劝王松归顺曹操之举,为曹操所欣赏,遂招为司空府官,又外放历任几处县令。魏国初建之际,孙资与刘放俱任秘书郎。曹丕继位后,二人一同掌握机密。曹睿病危时,二人力荐曹爽,又推荐招回司马懿辅政。最后,曹睿独召曹爽、司马懿、刘放、孙资同受诏命,而免去曹宇、夏侯献、曹肇、秦朗的官职。", + huanghao: "宦官。为后主刘禅所宠,专秉朝政。黄皓与大将军姜维不睦,维启后主杀之,后主不从。皓阴以心腹阎宇替维。景耀六年,蜀亡,邓艾预欲杀之,皓贿赂左右得免。及后主迁洛阳,皓为司马昭凌迟处死。", + zhangrang: "汉中常侍。同赵忠、曹节、段珪等为“十常侍”,为灵帝所宠。让等专权乱政、卖官索财,朝野皆痛恨之。郎中张钧上书奏请诛杀十常侍,帝不允,让等阴杀钧。及灵帝崩,大将军何进欲杀让等,让阴结何太后,招进入宫,斩杀之。部将袁绍引兵攻让,让等劫帝走河上。追急,让投水自尽。", jikang: "嵇康(224年-263年,一作223年-262年),字叔夜。谯国铚县(今安徽省濉溪县)人。三国时期曹魏思想家、音乐家、文学家。
    嵇康幼年聪颖,博览群书,广习诸艺,又喜爱老庄学说。身长七尺八寸,容止出众。后娶魏武帝曹操曾孙女长乐亭主为妻,拜郎中,调中散大夫,世称“嵇中散”。后隐居不仕,屡拒为官。因得罪司隶校尉钟会,遭其构陷,而被掌权的大将军司马昭处死,时年四十岁。", - xinxianying: - "辛氏(191年—269年),字宪英,祖籍陇西,颍川阳翟(今河南禹州)人。魏晋时期著名才女,曹魏侍中辛毗之女,卫尉羊耽之妻。辛宪英聪朗有才鉴,曾劝弟辛敞尽忠职守,预言钟会将会叛乱。泰始五年(公元269年),辛宪英逝世,享年七十九岁。", + xinxianying: "辛氏(191年—269年),字宪英,祖籍陇西,颍川阳翟(今河南禹州)人。魏晋时期著名才女,曹魏侍中辛毗之女,卫尉羊耽之妻。辛宪英聪朗有才鉴,曾劝弟辛敞尽忠职守,预言钟会将会叛乱。泰始五年(公元269年),辛宪英逝世,享年七十九岁。", wuxian: "穆皇后吴氏(?—245年),陈留(今河南开封)人,车骑将军吴懿之妹,三国时期蜀汉昭烈帝刘备的皇后。
    吴氏早年丧父,其父生前与刘焉交情深厚,所以全家跟随刘焉来到蜀地。后刘焉听相面者说吴氏有大贵之相,于是为儿子刘瑁迎娶吴氏。刘瑁死后,吴氏成为寡妇。
    建安十九年(214年),刘备平定益州,纳吴氏为夫人。建安二十四年(219年),刘备自称汉中王,立吴氏为汉中王后。章武元年(221年),刘备称帝,建立蜀汉,立吴氏为皇后。章武三年(223年),刘备去世,太子刘禅即位,尊嫡母吴氏为皇太后。延熙八年(245年),吴氏去世,谥号穆皇后,葬入刘备的惠陵。", qinmi: "秦宓(?-226年),字子敕。广汉郡绵竹县(今四川德阳北)人。三国蜀汉时大臣、学者。秦宓善舌辩。早年仕于益州牧刘璋麾下,后降刘备。刘备伐吴时,秦宓劝阻,刘备大怒,欲杀秦宓。因诸葛亮及时求情,才保住性命,仅被下狱,后被释放,拜左中郎将、长水校尉。吴蜀同盟后,孙权派张温至成都回访。酒宴之上,秦宓与张温舌战,说得张温无言以对。后官至大司农。建兴四年(226年),秦宓病逝。", xushi: "徐氏,孙权之弟孙翊的妻子,著名烈女。孙翊的部下妫览、戴员买通家将边鸿将孙翊杀死,并将全部罪责推给边鸿,又谋杀了前来查问的太守孙河。徐夫人一面用美人计色诱妫览、戴员,令其放松警惕;一面对孙翊生前亲信孙高、傅婴说明真相并晓以大义,最终成功地在内室中将杀夫凶手妫览、戴员诛杀。", - xuezong: - "薛综(?―243年),字敬文,沛郡竹邑(今安徽濉溪)人,三国时期吴国名臣。少时避乱至交州,师从刘熙。士燮归附孙权,召其为五官中郎将,出任合浦、交阯太守。后从征至九真,回朝任谒者仆射。232年,升任尚书仆射。240年,改任选曹尚书。242年,担任太子少傅,兼任选部职任。243年,薛综去世。薛综是当时名儒,著有诗赋难论数万言,集为《私载》,并著有《五宗图述》、《二京解》。", - caiyong: - "蔡邕(133年-192年),字伯喈。陈留郡圉县(今河南杞县南)人。东汉时期名臣,文学家、书法家,才女蔡文姬之父。蔡邕早年拒朝廷征召之命,后被征辟为司徒掾属,任河平长、郎中、议郎等职,曾参与续写《东观汉记》及刻印熹平石经。后因罪被流放朔方,几经周折,避难江南十二年。董卓掌权时,强召蔡邕为祭酒。三日之内,历任侍御史、治书侍御史、尚书、侍中、左中郎将等职,封高阳乡侯,世称“蔡中郎”。董卓被诛杀后,蔡邕因在王允座上感叹而被下狱,不久便死于狱中,年六十。", + xuezong: "薛综(?―243年),字敬文,沛郡竹邑(今安徽濉溪)人,三国时期吴国名臣。少时避乱至交州,师从刘熙。士燮归附孙权,召其为五官中郎将,出任合浦、交阯太守。后从征至九真,回朝任谒者仆射。232年,升任尚书仆射。240年,改任选曹尚书。242年,担任太子少傅,兼任选部职任。243年,薛综去世。薛综是当时名儒,著有诗赋难论数万言,集为《私载》,并著有《五宗图述》、《二京解》。", + caiyong: "蔡邕(133年-192年),字伯喈。陈留郡圉县(今河南杞县南)人。东汉时期名臣,文学家、书法家,才女蔡文姬之父。蔡邕早年拒朝廷征召之命,后被征辟为司徒掾属,任河平长、郎中、议郎等职,曾参与续写《东观汉记》及刻印熹平石经。后因罪被流放朔方,几经周折,避难江南十二年。董卓掌权时,强召蔡邕为祭酒。三日之内,历任侍御史、治书侍御史、尚书、侍中、左中郎将等职,封高阳乡侯,世称“蔡中郎”。董卓被诛杀后,蔡邕因在王允座上感叹而被下狱,不久便死于狱中,年六十。", caojie: "曹节(196年―260年),沛国谯县(今安徽亳州)人,汉献帝刘协第二任皇后,魏武帝曹操的女儿。建安十八年(213年),曹操将女儿曹宪、曹节、曹华三姐妹同时入宫中,封为夫人。建安十九年(214年),并封为贵人。曹操废掉汉献帝第一位皇后伏寿,将她囚禁而死。曹操要汉献帝立曹节为皇后,汉献帝只得依从。建安二十五年(220年),曹操去世,曹丕袭封魏王位。曹丕授意华歆去逼汉献帝让位。曹节怒斥华歆,华歆只好退出宫去。第二天又逼汉献帝将帝位禅让给曹丕。并以武力威胁,向曹节索要玺印,曹节无奈,将玺印掷于栏板之下。面对曹丕篡位,她极为愤怒,高喊:“老天有眼,决不让你长久!”汉献帝被废为山阳公,曹节为山阳公夫人。景元元年(260年),曹节病逝,仍以汉朝礼仪合葬于献帝的禅陵,谥号献穆皇后。", }, perfectPair: { @@ -354,6 +226,436 @@ game.import("character", function () { zhonghui: ["jiangwei"], }, skill: { + //一将2024 + //令狐愚 + xvzhi: { + audio: 2, + enable: "phaseUse", + filter(event, player) { + return ( + game.countPlayer(target => { + return lib.skill.xvzhi.filterTarget(null, player, target); + }) > 1 + ); + }, + filterTarget(card, player, target) { + const stat = player.getStat("xvzhi"); + return target.countCards("h") && (!stat || !stat.includes(target)); + }, + usable: 1, + async content(event, trigger, player) { + const targets = event.targets; + if (targets.some(i => !i.countCards("h"))) return; + const result = await player + .chooseCardOL(targets, "h", true, [1, Infinity], "蓄志:选择任意张手牌并与对方交换") + .set("ai", card => { + const player = get.event("player"), + target = get + .event() + .getParent(2) + .targets.find(i => i != player); + const sha = new lib.element.VCard({ name: "sha" }); + const playerEffect = player.hasUseTarget(sha, false) + ? Math.max( + ...game.filterPlayer(current => + player.canUse(sha, current, false).map(current => { + return get.effect(current, sha, player, player); + }) + ) + ) + : 0; + const targetEffect = target.hasUseTarget(sha, false) + ? Math.max( + ...game.filterPlayer(current => + target.canUse(sha, current, false).map(current => { + return get.effect(current, sha, target, target); + }) + ) + ) + : 0; + return 5 + 3 * get.sgn(playerEffect - targetEffect) - get.value(card); + }) + .forResult(); + const list = [result[0].cards, result[1].cards]; + await targets[0].swapHandcards(targets[1], result[0].cards, result[1].cards); + if (result[0].cards.length == result[1].cards.length) { + await player.draw(2); + player.getStat("skill").xvzhi--; + } else { + const aim = targets[result[0].cards.length > result[1].cards.length ? 0 : 1]; + const sha = new lib.element.VCard({ name: "sha" }); + if (aim.hasUseTarget(sha, false)) { + await aim.chooseUseTarget(sha, true, false, "nodistance"); + } + } + }, + ai: { + order: 5, + result: { + target(player, target) { + return get.sgn(get.attitude(player, target)) * target.countCards("h"); + }, + }, + }, + }, + //司马孚 + beiyu: { + audio: 2, + enable: "phaseUse", + filter(event, player) { + return player.countCards("h") < player.maxHp; + }, + usable: 1, + async content(event, trigger, player) { + await player.drawTo(player.maxHp); + if (!player.countCards("h")) return; + const suits = player + .getCards("h") + .reduce((list, card) => list.add(get.suit(card)), []) + .sort((a, b) => lib.suit.indexOf(b) - lib.suit.indexOf(a)); + const result = await player + .chooseControl(suits) + .set("prompt", "备预:将一种花色的手牌牌置于牌堆底") + .set("ai", () => { + const player = get.event("player"); + let suits = get.event("controls").slice(); + suits.sort((a, b) => player.countCards("h", { suit: a }) - player.countCards("h", { suit: b })); + return suits[0]; + }) + .forResult(); + if (result.control) { + const suit = result.control, + cards = player.getCards("h", { suit: suit }); + if (cards.length) { + let resultx; + if (cards.length == 1) { + resultx = { bool: true, moved: [cards] }; + } else { + resultx = await player + .chooseToMove("备预:将牌按顺序置于牌堆底", true) + .set("list", [["牌堆底", cards]]) + .set("processAI", list => { + return [list[0][1].slice(0)]; + }) + .forResult(); + } + if (resultx.bool) { + const moved = result.moved[0]; + if (moved.length) { + await player.lose(cards, ui.cardPile); + for (let i = 0; i < moved.length; i++) { + const card = moved[i]; + card.fix(); + ui.cardPile.appendChild(card); + } + } + } + } + } + }, + }, + duchi: { + audio: 2, + trigger: { target: "useCardToTargeted" }, + filter(event, player) { + return event.player != player; + }, + usable: 1, + logTarget: "player", + check(event, player) { + return get.effect(player, event.card, event.player, player) <= 0; + }, + async content(event, trigger, player) { + await player.draw().set("bottom", true); + if (player.countCards("h")) { + await player.showHandcards(get.translation(player) + "发动了【督持】"); + const colors = player.getCards("h").reduce((list, card) => list.add(get.color(card)), []); + if (colors.length == 1) { + player.chat("洗具"); + trigger.getParent().excluded.add(player); + return; + } + } + player.chat("杯具"); + }, + ai: { threaten: 0.8 }, + }, + //宣公主 + yjqimei: { + audio: 2, + enable: "phaseUse", + filter(event, player) { + const count = player.getStat("skill").yjqimei; + if (count && count > 0 && !player.hasSkill("yjqimei")) return false; + return true; + }, + filterTarget: lib.filter.notMe, + usable: 2, + async content(event, trigger, player) { + const target = event.target; + await player.draw(2, "nodelay"); + await target.draw(2); + const targets = [player, target].filter(current => current.countDiscardableCards(current, "he")); + if (targets.length) { + const result = await player + .chooseCardOL(targets, "he", true, 2, "齐眉:请弃置两张牌", (card, player, target) => { + return lib.filter.cardDiscardable(card, player); + }) + .forResult(); + if (result.length == 1) targets[0].discard(result[0].cards); + else { + await game + .loseAsync({ + lose_list: [ + [targets[0], result[0].cards], + [targets[1], result[1].cards], + ], + }) + .setContent("discardMultiple"); + await game.asyncDelayx(); + } + let cards = result.reduce((list, evt) => { + list.addArray(evt.cards); + return list; + }, []); + const suits = cards.reduce((list, card) => list.add(get.suit(card)), []); + switch (suits.length) { + case 1: + while (cards.length) { + const card = cards.shift(); + if (player.hasUseTarget(card)) { + player.$gain2(card, false); + await game.asyncDelayx(); + await player.chooseUseTarget(true, card, false); + } + } + break; + case 2: + for (const current of [player, target]) { + if (!current.isIn()) continue; + if (current.isLinked()) await current.link(false); + if (current.isTurnedOver()) await current.turnOver(false); + } + break; + case 3: + for (const current of [player, target]) { + if (current.isIn() && !current.isLinked()) await current.link(true); + } + break; + case 4: + await player.draw("nodelay"); + await target.draw(); + player.addTempSkill("yjqimei_rewrite"); + break; + } + } + }, + ai: { + order: 9, + result: { + target(player, target) { + const att = get.sgn(get.attitude(player, target)); + return (2 + att) * att; + }, + }, + }, + subSkill: { rewrite: { charlotte: true } }, + }, + yjzhuiji: { + audio: 2, + trigger: { player: "die" }, + filter(event, player) { + return game.hasPlayer(target => { + return ( + target != player && + Array.from({ length: 5 }) + .map((_, i) => i + 1) + .some(i => target.hasEmptySlot(i)) + ); + }); + }, + forceDie: true, + skillAnimation: true, + animationColor: "water", + async cost(event, trigger, player) { + event.result = await player + .chooseTarget(get.prompt2("yjzhuiji"), (card, player, target) => { + return ( + target != player && + Array.from({ length: 5 }) + .map((_, i) => i + 1) + .some(i => target.hasEmptySlot(i)) + ); + }) + .set("ai", target => { + const player = get.event("player"); + return ( + get.sgn(get.attitude(player, target)) * + Array.from({ length: 5 }) + .map((_, i) => i + 1) + .reduce((sum, i) => sum + target.countEmptySlot(i), 0) + ); + }) + .set("forceDie", true) + .forResult(); + }, + async content(event, trigger, player) { + const target = event.targets[0]; + let num = 1, + cards = []; + while (num <= 5) { + while (target.hasEmptySlot(num)) { + const card = get.cardPile2(card => { + return !cards.includes(card) && get.subtype(card) == "equip" + num && target.canUse(card, target); + }); + if (card) { + cards.push(card); + target.$gain2(card, false); + await game.asyncDelayx(); + await target.chooseUseTarget(card, true, "nopopup"); + } else break; + } + num++; + } + if (cards.length) { + target.addSkill("yjzhuiji_buff"); + target.markAuto("yjzhuiji_buff", cards); + } + }, + subSkill: { + buff: { + charlotte: true, + mod: { + aiValue(player, card, num) { + if (player.getStorage("yjzhuiji_buff").includes(card)) return num + 100; + }, + aiUseful(player, card, num) { + if (player.getStorage("yjzhuiji_buff").includes(card)) return num / 114514; + }, + }, + trigger: { + player: "loseAfter", + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], + }, + filter(event, player) { + const evt = event.getl(player); + return evt && evt.es && evt.es.some(i => player.getStorage("yjzhuiji_buff").includes(i)); + }, + forced: true, + popup: false, + firstDo: true, + content() { + const evt = trigger.getl(player); + const cards = evt.es.filter(i => player.getStorage("yjzhuiji_buff").includes(i)); + player.unmarkAuto("yjzhuiji_buff", cards); + for (const card of cards) player.disableEquip(get.subtype(card)); + }, + intro: { + mark(dialog, storage) { + if (storage && storage.length) dialog.addSmall([storage, "vcard"]); + else return "暂无装备"; + }, + }, + }, + }, + }, + //徐琨 + fazhu: { + audio: 2, + trigger: { player: "phaseZhunbeiBegin" }, + filter(event, player) { + return player.hasCard(card => !get.tag(card, "damage") && player.canRecast(card), "hej"); + }, + async content(event, trigger, player) { + const cardx = player.getCards("hej", card => !get.tag(card, "damage") && player.canRecast(card)); + await player.recast(cardx); + const cards = player + .getHistory("gain", evt => evt.getParent(3) == event) + .reduce((list, evt) => { + list.addArray(evt.cards); + return list; + }, []); + let num = Math.min(cards.length, game.countPlayer()), + list = []; + if (!num) return; + if (_status.connectMode) game.broadcastAll(() => (_status.noclearcountdown = true)); + while (num - list.length > 0 && cards.some(i => get.owner(i) == player && get.position(i) == "h" && !i.hasGaintag("olsujian_given"))) { + const result = await player + .chooseCardTarget({ + prompt: "筏铸:将以此法获得的牌交给任意角色各一张", + position: "he", + animate: false, + filterCard(card, player) { + if (!get.event("cards").includes(card)) return false; + return !get.event("list").some(list => list[1] == card); + }, + filterTarget(card, player, target) { + return !get.event("list").some(list => list[0] == target); + }, + ai1(card) { + if (card.name == "sha") return 2.5; + return 1 + Math.random(); + }, + ai2(target) { + return get.attitude(get.event("player"), target); + }, + }) + .set("forced", !list.length) + .set("list", list) + .set("cards", cards) + .forResult(); + if (result.bool) { + list.push([result.targets[0], result.cards[0]]); + player.addGaintag(result.cards, "olsujian_given"); + } else break; + } + if (_status.connectMode) { + game.broadcastAll(() => { + delete _status.noclearcountdown; + game.stopCountChoose(); + }); + } + if (list.length) { + const targets = list.slice().map(list => list[0]); + await game + .loseAsync({ + gain_list: list, + player: player, + cards: list.slice().map(list => list[1]), + giver: player, + animate: "giveAuto", + }) + .setContent("gaincardMultiple"); + for (const target of targets) { + await target + .chooseToUse(function (card, player, event) { + if (get.name(card) != "sha") return false; + return lib.filter.cardEnabled.apply(this, arguments); + }) + .set("openskilldialog", "筏铸:是否使用一张【杀】(无距离限制)?") + .set("norestore", true) + .set("custom", { + add: {}, + replace: { window: function () {} }, + }) + .set("targetRequired", true) + .set("complexSelect", true) + .set("filterTarget", function (card, player, target) { + return lib.filter.targetEnabled.apply(this, arguments); + }) + .set("addCount", false); + } + } + }, + ai: { + effect: { + target(card, player, target) { + if (!card || get.type(card) != "delay") return; + if (!get.tag(card, "damage") && target.canRecast(card)) return "zeroplayertarget"; + }, + }, + }, + }, //一将2023 //孙礼 kangli: { @@ -367,12 +669,7 @@ game.import("character", function () { content: function () { player.draw(2).gaintag = ["kangli"]; player.when({ source: "damageBegin1" }).then(() => { - var cards = player.getCards( - "h", - (card) => - card.hasGaintag("kangli") && - lib.filter.cardDiscardable(card, player, "kangli") - ); + var cards = player.getCards("h", card => card.hasGaintag("kangli") && lib.filter.cardDiscardable(card, player, "kangli")); if (cards.length) player.discard(cards); }); }, @@ -386,10 +683,7 @@ game.import("character", function () { enable: "phaseUse", usable: 1, filter: function (event, player) { - return ( - player.countCards("he", (card) => lib.skill.tongwei.filterCard(card, player)) > 1 && - game.hasPlayer((i) => i != player) - ); + return player.countCards("he", card => lib.skill.tongwei.filterCard(card, player)) > 1 && game.hasPlayer(i => i != player); }, filterTarget: lib.filter.notMe, filterCard: lib.filter.cardRecastable, @@ -412,7 +706,7 @@ game.import("character", function () { "step 0"; player.recast(cards); "step 1"; - var numbers = cards.map((c) => get.number(c, player)).sort((a, b) => a - b); + var numbers = cards.map(c => get.number(c, player)).sort((a, b) => a - b); target.when("useCard1").then(() => { trigger._tongwei_checked = true; }); @@ -424,12 +718,7 @@ game.import("character", function () { mod: { aiOrder: function (player, card, num) { var number = get.number(card); - if ( - typeof number != "number" || - number <= numbers[0] || - number >= numbers[1] - ) - return num + 10; + if (typeof number != "number" || number <= numbers[0] || number >= numbers[1]) return num + 10; }, }, }) @@ -440,42 +729,25 @@ game.import("character", function () { var number = get.number(trigger.card); var numbers = get.info(event.name).numbers; event.playerx = get.info(event.name).playerx; - if (typeof number != "number" || number <= numbers[0] || number >= numbers[1]) - event.finish(); + if (typeof number != "number" || number <= numbers[0] || number >= numbers[1]) event.finish(); }) .then(() => { var playerx = event.playerx; - var names = ["sha", "guohe"].filter((name) => - playerx.canUse({ name: name, isCard: true }, player, false) - ); + var names = ["sha", "guohe"].filter(name => playerx.canUse({ name: name, isCard: true }, player, false)); if (!names.length) event.finish(); else if (names.length == 1) event._result = { links: [[null, null, names[0]]] }; else playerx - .chooseButton( - [ - `请选择要视为对${get.translation(player)}使用的牌`, - [names, "vcard"], - ], - true - ) - .set("ai", (button) => { + .chooseButton([`请选择要视为对${get.translation(player)}使用的牌`, [names, "vcard"]], true) + .set("ai", button => { return button.link[0][2] == _status.event.choice; }) .set( "choice", (function () { var list = names - .map((name) => { - return [ - name, - get.effect( - player, - { name: name, isCard: true }, - playerx, - playerx - ), - ]; + .map(name => { + return [name, get.effect(player, { name: name, isCard: true }, playerx, playerx)]; }) .sort((a, b) => { return b[1] - a[1]; @@ -519,8 +791,7 @@ game.import("character", function () { ) ) return false; - if (!player.hasCard((card) => lib.filter.cardDiscardable(card, player), "he")) - return false; + if (!player.hasCard(card => lib.filter.cardDiscardable(card, player), "he")) return false; var history = game.getGlobalHistory("everything"); for (var evt of history) { if (evt._neutralized || (evt.responded && (!evt.result || !evt.result.bool))) { @@ -541,31 +812,19 @@ game.import("character", function () { storage: { cuguo: true }, }; event.card = card; - player - .chooseToDiscard( - "蹙国:请弃置一张牌", - `视为你对${get.translation(trigger.target)}使用一张${get.translation( - card.nature || "" - )}【${get.translation(card.name)}】`, - "he", - true - ) - .set("logSkill", ["cuguo", trigger.target]); + player.chooseToDiscard("蹙国:请弃置一张牌", `视为你对${get.translation(trigger.target)}使用一张${get.translation(card.nature || "")}【${get.translation(card.name)}】`, "he", true).set("logSkill", ["cuguo", trigger.target]); "step 1"; if (player.canUse(card, trigger.target, false)) { player.useCard(card, trigger.target); player .when("useCardAfter") - .filter((event) => { + .filter(event => { return event.card.storage && event.card.storage.cuguo; }) .then(() => { if ( - game.hasGlobalHistory("everything", (evt) => { - if ( - evt._neutralized || - (evt.responded && (!evt.result || !evt.result.bool)) - ) { + game.hasGlobalHistory("everything", evt => { + if (evt._neutralized || (evt.responded && (!evt.result || !evt.result.bool))) { if (evt.getParent() == trigger) return true; } return false; @@ -584,19 +843,13 @@ game.import("character", function () { direct: true, content: function () { "step 0"; - var next = player.chooseButton( - [ - '###擎北:是否选择任意种花色?###
    你不能于本轮能使用这些花色,且使用牌后摸等同于选择花色数的牌
    ', - [lib.suit.map((i) => ["", "", "lukai_" + i]), "vcard"], - ], - [1, 4] - ); - next.set("ai", (button) => { + var next = player.chooseButton(['###擎北:是否选择任意种花色?###
    你不能于本轮能使用这些花色,且使用牌后摸等同于选择花色数的牌
    ', [lib.suit.map(i => ["", "", "lukai_" + i]), "vcard"]], [1, 4]); + next.set("ai", button => { var player = _status.event.player; var suit = button.link[2].slice(6); var val = player .getCards("hs", { suit: suit }) - .map((card) => { + .map(card => { return get.value(card) + player.getUseValue(card) / 3; }) .reduce((p, c) => { @@ -609,7 +862,7 @@ game.import("character", function () { }); "step 1"; if (result.bool) { - var suits = result.links.map((i) => i[2].slice(6)); + var suits = result.links.map(i => i[2].slice(6)); player.logSkill("qingbei"); player.addTempSkill("qingbei_effect", "roundStart"); player.setStorage("qingbei_effect", suits); @@ -635,19 +888,14 @@ game.import("character", function () { }, mark: true, intro: { - content: (storage) => - `本轮内不能使用${get.translation( - storage - )}花色的牌,且使用一张有花色的牌后摸${get.cnNumber(storage.length)}张牌`, + content: storage => `本轮内不能使用${get.translation(storage)}花色的牌,且使用一张有花色的牌后摸${get.cnNumber(storage.length)}张牌`, }, mod: { cardEnabled: function (card, player) { - if (player.getStorage("qingbei_effect").includes(get.suit(card))) - return false; + if (player.getStorage("qingbei_effect").includes(get.suit(card))) return false; }, cardSavable: function (card, player) { - if (player.getStorage("qingbei_effect").includes(get.suit(card))) - return false; + if (player.getStorage("qingbei_effect").includes(get.suit(card))) return false; }, }, }, @@ -659,30 +907,19 @@ game.import("character", function () { trigger: { global: "useCard" }, usable: 1, filter: function (event, player) { - return ( - event.player != player && - event.player == _status.currentPhase && - event.player.countCards("h") <= event.player.getHp() - ); + return event.player != player && event.player == _status.currentPhase && event.player.countCards("h") <= event.player.getHp(); }, check: function (event, player) { var type = get.type2(event.card, event.player); - if (type == "equip" && event.player.hasCard((card) => event.player.hasValueTarget(card))) - return false; - if ( - get.attitude(player, event.player) > 0 && - event.player.getHp() + event.player.countCards("hs", ["shan", "caochuan"]) <= 3 - ) - return false; + if (type == "equip" && event.player.hasCard(card => event.player.hasValueTarget(card))) return false; + if (get.attitude(player, event.player) > 0 && event.player.getHp() + event.player.countCards("hs", ["shan", "caochuan"]) <= 3) return false; return true; }, onremove: true, logTarget: "player", content: function () { "step 0"; - var choices = Array.from({ length: trigger.player.countCards("h") + 1 }).map((_, i) => - get.cnNumber(i, true) - ); + var choices = Array.from({ length: trigger.player.countCards("h") + 1 }).map((_, i) => get.cnNumber(i, true)); var type = get.type2(trigger.card, trigger.player); player .chooseControl(choices) @@ -693,11 +930,8 @@ game.import("character", function () { .set( "choice", (function () { - var num = trigger.player.countCards("h", (card) => get.type2(card) == type); - var knownNum = trigger.player.countKnownCards( - _status.event.player, - (card) => get.type2(card) == type - ); + var num = trigger.player.countCards("h", card => get.type2(card) == type); + var knownNum = trigger.player.countKnownCards(_status.event.player, card => get.type2(card) == type); if (trigger.player.isAllCardsKnown(_status.event.player)) { return knownNum; } @@ -721,26 +955,19 @@ game.import("character", function () { "step 1"; var guessedNum = result.index; player.chat("我猜" + get.cnNumber(guessedNum) + "张"); - game.log( - player, - "猜测", - trigger.player, - "有", - get.cnNumber(guessedNum) + "张" + get.translation(type) + "牌" - ); + game.log(player, "猜测", trigger.player, "有", get.cnNumber(guessedNum) + "张" + get.translation(type) + "牌"); event.guessedNum = guessedNum; game.delay(); "step 2"; var type = get.type2(trigger.card, trigger.player); - var count = trigger.player.countCards("h", (card) => get.type2(card) == type); + var count = trigger.player.countCards("h", card => get.type2(card) == type); var guessedNum = event.guessedNum; if (count == guessedNum) { player.popup("洗具"); game.log(player, "猜测", "#g正确"); if (player.countMark("zhenfeng") < 5) player.addMark("zhenfeng", 1, false); player.draw(player.countMark("zhenfeng")); - if (player.canUse("sha", trigger.player, false)) - player.useCard({ name: "sha", isCard: true }, trigger.player); + if (player.canUse("sha", trigger.player, false)) player.useCard({ name: "sha", isCard: true }, trigger.player); } else { player.popup("杯具"); game.log(player, "猜测", "#y错误"); @@ -772,10 +999,7 @@ game.import("character", function () { return Math.random() < 0.5 ? "选项一" : "选项二"; }) .set("prompt", "督粮:请选择一项") - .set("choiceList", [ - "你观看牌堆顶的两张牌,然后令" + name + "获得其中的一或两张基本牌", - "令" + name + "于下回合的摸牌阶段额外摸一张牌", - ]); + .set("choiceList", ["你观看牌堆顶的两张牌,然后令" + name + "获得其中的一或两张基本牌", "令" + name + "于下回合的摸牌阶段额外摸一张牌"]); "step 2"; if (result.control == "选项一") { var cards = get.cards(2), @@ -789,15 +1013,11 @@ game.import("character", function () { } } player - .chooseButton( - ["督粮:选择令" + get.translation(target) + "获得的牌", cards], - [1, 2], - bool - ) - .set("filterButton", (button) => { + .chooseButton(["督粮:选择令" + get.translation(target) + "获得的牌", cards], [1, 2], bool) + .set("filterButton", button => { return get.type(button.link) == "basic"; }) - .set("ai", (button) => { + .set("ai", button => { return _status.event.sgn * get.value(button.link); }) .set("sgn", get.sgnAttitude(player, target) > 0); @@ -865,19 +1085,7 @@ game.import("character", function () { if (event.num == 0) event.finish(); "step 2"; var forced = num != event.num2; - var prompt = - "###" + - get.translation(player) + - "对你发动了【数谏】###视为使用" + - get.cnNumber(num) + - "张【过河拆桥】" + - (forced - ? "" - : "且" + - get.translation(player) + - "此技能本回合失效,或点击“取消”令其摸" + - get.cnNumber(num) + - "张牌"); + var prompt = "###" + get.translation(player) + "对你发动了【数谏】###视为使用" + get.cnNumber(num) + "张【过河拆桥】" + (forced ? "" : "且" + get.translation(player) + "此技能本回合失效,或点击“取消”令其摸" + get.cnNumber(num) + "张牌"); if (!target.hasUseTarget({ name: "guohe" })) event._result = { bool: false }; else target @@ -888,13 +1096,7 @@ game.import("character", function () { if (!evt.goon) return 0; return get.effect_use.apply(this, arguments); }) - .set( - "goon", - target.getUseValue({ name: "guohe" }) > - (get.sgnAttitude(target, player) * - player.getUseValue({ name: "wuzhong" })) / - (2 - num * 0.4) - ); + .set("goon", target.getUseValue({ name: "guohe" }) > (get.sgnAttitude(target, player) * player.getUseValue({ name: "wuzhong" })) / (2 - num * 0.4)); "step 3"; if (!result.bool) { player.draw(num); @@ -929,7 +1131,7 @@ game.import("character", function () { var cards = get.cards(3); player .chooseButton(["识命:是否将其中一张置于牌堆底?", cards.slice(0)]) - .set("ai", (button) => { + .set("ai", button => { var att = _status.event.att, damage = _status.event.damage, val = get.value(button.link, _status.event.player); @@ -937,13 +1139,7 @@ game.import("character", function () { return val - 5.99; }) .set("att", get.attitude(player, trigger.player)) - .set( - "damage", - get.damageEffect(trigger.player, trigger.player, player) > 0 && - trigger.player.hp <= 3 - ? 1 - : -1 - ); + .set("damage", get.damageEffect(trigger.player, trigger.player, player) > 0 && trigger.player.hp <= 3 ? 1 : -1); while (cards.length) ui.cardPile.insertBefore(cards.pop(), ui.cardPile.firstChild); "step 1"; if (result.bool) { @@ -957,10 +1153,7 @@ game.import("character", function () { trigger.player .chooseBool("是否跳过摸牌阶段并对自己造成1点伤害,然后从牌堆底摸三张牌?") .set("ai", () => _status.event.bool) - .set( - "bool", - get.damageEffect(trigger.player, trigger.player) >= -6 || trigger.player.hp > 3 - ); + .set("bool", get.damageEffect(trigger.player, trigger.player) >= -6 || trigger.player.hp > 3); "step 3"; if (result.bool) { trigger.cancel(); @@ -980,24 +1173,24 @@ game.import("character", function () { audio: 2, trigger: { global: "phaseEnd" }, filter: function (event, player) { - var zhu = game.findPlayer((i) => i.getSeatNum() == 1); + var zhu = game.findPlayer(i => i.getSeatNum() == 1); return ( (zhu && player.hasSkill("shiming_round") && - (game.getGlobalHistory("changeHp", (evt) => { + (game.getGlobalHistory("changeHp", evt => { return evt.player == zhu && evt._dyinged; }).length > 0 || zhu.getHistory("damage").length == 0)) || - !game.hasPlayer2((current) => current.getHistory("damage").length > 0) + !game.hasPlayer2(current => current.getHistory("damage").length > 0) ); }, direct: true, content: function () { "step 0"; if (player.hasSkill("shiming_round")) { - var zhu = game.findPlayer((i) => i.getSeatNum() == 1); + var zhu = game.findPlayer(i => i.getSeatNum() == 1); if ( - game.getGlobalHistory("changeHp", (evt) => { + game.getGlobalHistory("changeHp", evt => { return evt.player == zhu && evt._dyinged; }).length > 0 || zhu.getHistory("damage").length == 0 @@ -1013,19 +1206,11 @@ game.import("character", function () { player.draw(); } "step 2"; - if (!game.hasPlayer2((current) => current.getHistory("damage").length > 0)) { + if (!game.hasPlayer2(current => current.getHistory("damage").length > 0)) { player - .chooseBool( - get.prompt("jiangxi"), - "与" + get.translation(trigger.player) + "各摸一张牌" - ) + .chooseBool(get.prompt("jiangxi"), "与" + get.translation(trigger.player) + "各摸一张牌") .set("ai", () => _status.event.bool) - .set( - "bool", - trigger.player.getUseValue({ name: "wuzhong" }) + - player.getUseValue({ name: "wuzhong" }) > - 0 - ); + .set("bool", trigger.player.getUseValue({ name: "wuzhong" }) + player.getUseValue({ name: "wuzhong" }) > 0); } else event.finish(); "step 3"; if (result.bool) { @@ -1064,16 +1249,10 @@ game.import("character", function () { }, mod: { globalFrom: function (from, to, distance) { - return ( - distance + - Math.min(1, from.getExpansions("duwang").filter((i) => i.name != "sha").length) - ); + return distance + Math.min(1, from.getExpansions("duwang").filter(i => i.name != "sha").length); }, globalTo: function (from, to, distance) { - return ( - distance + - Math.min(1, to.getExpansions("duwang").filter((i) => i.name != "sha").length) - ); + return distance + Math.min(1, to.getExpansions("duwang").filter(i => i.name != "sha").length); }, }, }, @@ -1081,7 +1260,7 @@ game.import("character", function () { audio: 2, trigger: { global: "cardsDiscardAfter" }, filter: function (event, player) { - if (!player.getExpansions("duwang").filter((i) => i.name != "sha").length) return false; + if (!player.getExpansions("duwang").filter(i => i.name != "sha").length) return false; var evt = event.getParent(); if (evt.name != "orderingDiscard") return false; var evtx = evt.relatedEvent || evt.getParent(); @@ -1089,8 +1268,8 @@ game.import("character", function () { evtx.name == "useCard" && evtx.card.name == "sha" && event.cards.filterInD("d").length && - game.hasPlayer2((current) => - current.hasHistory("sourceDamage", (evtxx) => { + game.hasPlayer2(current => + current.hasHistory("sourceDamage", evtxx => { return evtxx.card == evtx.card; }) ) @@ -1100,33 +1279,20 @@ game.import("character", function () { group: "cibei_fullyReady", content: function () { "step 0"; - player - .chooseButton([ - "###" + - get.prompt("cibei") + - '###
    将一张“刺”置入弃牌堆,并将' + - get.translation(trigger.cards.filterInD("d")) + - "置入“刺”
    ", - player.getExpansions("duwang"), - ]) - .set("filterButton", (button) => { - return button.link.name != "sha"; - }); + player.chooseButton(["###" + get.prompt("cibei") + '###
    将一张“刺”置入弃牌堆,并将' + get.translation(trigger.cards.filterInD("d")) + "置入“刺”
    ", player.getExpansions("duwang")]).set("filterButton", button => { + return button.link.name != "sha"; + }); "step 1"; if (result.bool) { player.logSkill("cibei"); player.loseToDiscardpile(result.links); player.addToExpansion(trigger.cards.filterInD("d"), "gain2").gaintag.add("duwang"); - if (game.hasPlayer((current) => current.countDiscardableCards(player, "hej") > 0)) + if (game.hasPlayer(current => current.countDiscardableCards(player, "hej") > 0)) player - .chooseTarget( - "刺北:弃置一名角色区域内的一张牌", - true, - (card, player, target) => { - return target.countDiscardableCards(player, "hej") > 0; - } - ) - .set("ai", (target) => { + .chooseTarget("刺北:弃置一名角色区域内的一张牌", true, (card, player, target) => { + return target.countDiscardableCards(player, "hej") > 0; + }) + .set("ai", target => { return get.effect(target, { name: "guohe" }, _status.event.player); }); } else event.finish(); @@ -1148,7 +1314,7 @@ game.import("character", function () { locked: false, filter: function (event, player) { var storage = player.getExpansions("duwang"); - return storage.length > 0 && storage.every((i) => i.name == "sha"); + return storage.length > 0 && storage.every(i => i.name == "sha"); }, content: function () { player.gain(player.getExpansions("duwang"), "gain2").gaintag.add("cibei_mark"); @@ -1162,7 +1328,7 @@ game.import("character", function () { silent: true, firstDo: true, filter: function (event, player) { - return player.hasHistory("lose", (evt) => { + return player.hasHistory("lose", evt => { if (evt.getParent() != event) return false; for (var i in evt.gaintag_map) { if (evt.gaintag_map[i].includes("cibei_mark")) return true; @@ -1227,10 +1393,7 @@ game.import("character", function () { } if (!player.storage.diezhang) { if (user != player || responder == player) return false; - return ( - player.countDiscardableCards(player, "he") > 0 && - player.canUse("sha", responder, false) - ); + return player.countDiscardableCards(player, "he") > 0 && player.canUse("sha", responder, false); } else { if (user == player || responder != player) return false; return player.canUse("sha", user, false); @@ -1254,12 +1417,8 @@ game.import("character", function () { var target = responder; event.target = target; var next = player - .chooseToDiscard( - get.prompt("diezhang", target), - "弃置一张牌,视为对其使用" + get.cnNumber(num) + "张【杀】", - "he" - ) - .set("ai", (card) => { + .chooseToDiscard(get.prompt("diezhang", target), "弃置一张牌,视为对其使用" + get.cnNumber(num) + "张【杀】", "he") + .set("ai", card => { if (_status.event.goon) return 6 - get.value(card); return 0; }) @@ -1267,12 +1426,7 @@ game.import("character", function () { } else { var target = user; event.target = target; - var next = player - .chooseBool( - get.prompt("diezhang", target), - "摸" + get.cnNumber(num) + "张牌,视为对其使用一张【杀】" - ) - .set("ai", () => _status.event.goon); + var next = player.chooseBool(get.prompt("diezhang", target), "摸" + get.cnNumber(num) + "张牌,视为对其使用一张【杀】").set("ai", () => _status.event.goon); } next.set("goon", get.effect(target, { name: "sha" }, player, player) > 0); "step 1"; @@ -1291,17 +1445,8 @@ game.import("character", function () { intro: { content: function (storage, player) { var cnNum = get.cnNumber(player.storage.duanwan ? 2 : 1); - if (storage) - return ( - "当其他角色使用牌被你抵消后,你可以摸" + - cnNum + - "张牌,视为对其使用一张【杀】。" - ); - return ( - "当你使用牌被其他角色抵消后,你可以弃置一张牌,视为对其使用" + - cnNum + - "张【杀】。" - ); + if (storage) return "当其他角色使用牌被你抵消后,你可以摸" + cnNum + "张牌,视为对其使用一张【杀】。"; + return "当你使用牌被其他角色抵消后,你可以弃置一张牌,视为对其使用" + cnNum + "张【杀】。"; }, }, mod: { @@ -1358,10 +1503,7 @@ game.import("character", function () { event.user = user; event.target = target; if (user) { - user.chooseBool( - "是否对" + get.translation(target) + "发动【联对】?", - "令" + get.translation(target) + "摸两张牌" - ) + user.chooseBool("是否对" + get.translation(target) + "发动【联对】?", "令" + get.translation(target) + "摸两张牌") .set("ai", () => _status.event.bool) .set("bool", get.effect(target, { name: "draw" }, user, user) > 0); } @@ -1379,18 +1521,14 @@ game.import("character", function () { filter: function (event, player) { return ( !player.hasSkill("biejun_used") && - player.countCards("h", (card) => { + player.countCards("h", card => { return card.hasGaintag("biejun"); }) == 0 ); }, prompt2: "翻面并防止此伤害", check: function (event, player) { - return ( - player.isTurnedOver() || - event.num >= player.hp || - get.distance(_status.currentPhase, player, "absolute") >= 3 - ); + return player.isTurnedOver() || event.num >= player.hp || get.distance(_status.currentPhase, player, "absolute") >= 3; }, content: function () { player.addTempSkill("biejun_used"); @@ -1402,12 +1540,7 @@ game.import("character", function () { target: function (card, player, target) { if (player.hasSkillTag("jueqing", false, target)) return [1, -2]; if (get.tag(card, "damage")) { - if ( - player.getNext() == target && - lib.skill.biejun.filter(null, target) && - target.isTurnedOver() - ) - return [0, 1]; + if (player.getNext() == target && lib.skill.biejun.filter(null, target) && target.isTurnedOver()) return [0, 1]; } }, }, @@ -1444,11 +1577,7 @@ game.import("character", function () { var targets = game.filterPlayer(function (current) { return current != player && current.hasSkill("biejun"); }); - return ( - "将一张手牌交给" + - get.translation(targets) + - (targets.length > 1 ? "中的一人" : "") - ); + return "将一张手牌交给" + get.translation(targets) + (targets.length > 1 ? "中的一人" : ""); }, position: "h", discard: false, @@ -1458,10 +1587,7 @@ game.import("character", function () { var player = _status.event.player; if ( game.hasPlayer(function (current) { - return ( - lib.skill.biejun_give.filterTarget(null, player, current) && - get.attitude(player, current) > 0 - ); + return lib.skill.biejun_give.filterTarget(null, player, current) && get.attitude(player, current) > 0; }) ) { return 5 - get.value(card); @@ -1504,8 +1630,7 @@ game.import("character", function () { }; if (att < 0) { for (let i of list1) { - if (getv(i, target) <= 0 || getv(i, target) <= 0) - return -att * Math.sqrt(get.threaten(target)) * 2; + if (getv(i, target) <= 0 || getv(i, target) <= 0) return -att * Math.sqrt(get.threaten(target)) * 2; } return 0; } else { @@ -1548,13 +1673,7 @@ game.import("character", function () { player .chooseTarget(get.prompt2("sangu"), lib.filter.notMe) .set("ai", function (target) { - return lib.skill.sangu.getEffect( - _status.event.player, - target, - _status.event.getTrigger(), - _status.event.list1, - _status.event.list2 - ); + return lib.skill.sangu.getEffect(_status.event.player, target, _status.event.getTrigger(), _status.event.list1, _status.event.list2); }) .set("list1", event.list1) .set("list2", event.list2); @@ -1568,11 +1687,11 @@ game.import("character", function () { var dialog = ["为" + get.translation(target) + "选择至多三个牌名"]; if (event.list1.length) { dialog.push('
    本回合已使用过的牌
    '); - dialog.push([event.list1.map((i) => [get.type(i), "", i]), "vcard"]); + dialog.push([event.list1.map(i => [get.type(i), "", i]), "vcard"]); } if (event.list2.length) { dialog.push('
    本回合未使用过的牌
    '); - dialog.push([event.list2.map((i) => [get.type(i), "", i]), "vcard"]); + dialog.push([event.list2.map(i => [get.type(i), "", i]), "vcard"]); } player .chooseButton(dialog, true, [1, 3]) @@ -1605,7 +1724,7 @@ game.import("character", function () { .set("list", event.list1); "step 3"; if (result.bool) { - var names = result.links.map((i) => i[2]); + var names = result.links.map(i => i[2]); if (!target.storage.sangu_effect) target.storage.sangu_effect = []; target.storage.sangu_effect = target.storage.sangu_effect.concat(names); game.log(player, "为", target, "选择了", "#y" + get.translation(names)); @@ -1627,8 +1746,7 @@ game.import("character", function () { ai: { effect: { target: function (card, player, target, current) { - if (get.tag(card, "damage") && card.storage && card.storage.sangu) - return "zeroplayertarget"; + if (get.tag(card, "damage") && card.storage && card.storage.sangu) return "zeroplayertarget"; }, }, }, @@ -1686,12 +1804,7 @@ game.import("character", function () { charlotte: true, onremove: true, filter: function (event, player) { - return ( - event.card && - event.card.storage && - event.card.storage.sangu && - player.getStorage("sangu_prevent").includes(event.player) - ); + return event.card && event.card.storage && event.card.storage.sangu && player.getStorage("sangu_prevent").includes(event.player); }, content: function () { trigger.cancel(); @@ -1705,11 +1818,7 @@ game.import("character", function () { forced: true, usable: 1, filter: function (event, player) { - return ( - player.isDamaged() && - player.hp <= event.player.hp && - (event.card.name == "sha" || event.card.name == "juedou") - ); + return player.isDamaged() && player.hp <= event.player.hp && (event.card.name == "sha" || event.card.name == "juedou"); }, content: function () { player.recover(); @@ -1718,12 +1827,7 @@ game.import("character", function () { effect: { target: function (card, player, target, current) { if (target.isHealthy() || (card.name != "sha" && card.name != "juedou")) return; - if ( - target.storage.counttrigger && - target.storage.counttrigger.yizu && - current < 0 - ) - return 5; + if (target.storage.counttrigger && target.storage.counttrigger.yizu && current < 0) return 5; if (player.hp < target.hp) return; if (current > 0) return 1.2; if (get.attitude(player, target) >= 0) return; @@ -1734,9 +1838,7 @@ game.import("character", function () { Math.min( player.getCardUsable("sha"), player.countCards("hs", function (card) { - return ( - get.name(card) == "sha" && player.canUse(card, target, null, true) - ); + return get.name(card) == "sha" && player.canUse(card, target, null, true); }) ) >= 2 ) @@ -1757,12 +1859,7 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseCard( - "h", - [1, player.countCards("h")], - get.prompt("kousheng"), - "你可以选择任意张手牌,这些手牌于本回合内视为无次数限制的【杀】。但当有角色受到这些【杀】的伤害后,其可以用所有手牌交换剩余的牌。" - ) + .chooseCard("h", [1, player.countCards("h")], get.prompt("kousheng"), "你可以选择任意张手牌,这些手牌于本回合内视为无次数限制的【杀】。但当有角色受到这些【杀】的伤害后,其可以用所有手牌交换剩余的牌。") .set("standard", player.getUseValue({ name: "sha" }, null, true)) .set("ai", function (card) { var player = _status.event.player, @@ -1829,13 +1926,7 @@ game.import("character", function () { trigger: { source: "damageSource" }, forced: true, filter: function (event, player) { - if ( - !event.card || - !event.card.storage || - !event.card.storage.kousheng || - event.getParent().type != "card" - ) - return false; + if (!event.card || !event.card.storage || !event.card.storage.kousheng || event.getParent().type != "card") return false; var target = event.player; return ( target.isIn() && @@ -1855,29 +1946,16 @@ game.import("character", function () { var str = get.translation(player); player.showCards(cards, str + "的【寇旌】牌"); if (target.countCards("h") > 0) - target - .chooseBool( - "是否交换“寇旌”牌?", - "用你的所有手牌交换" + - str + - "的下列“寇旌”牌:" + - get.translation(cards) - ) - .set("ai", function () { - var player = _status.event.player, - target = _status.event.getParent().player; - if ( - player.hasShan() || - player.countCards("hs", { name: ["tao", "jiu"] }) > 0 || - get.attitude(player, target) >= 0 - ) - return false; - var hs1 = player.getCards("h"), - hs2 = _status.event.getParent().cards; - if (hs2.length >= player.hp) return true; - if (get.value(hs1, player) >= get.value(hs2, target)) return false; - return true; - }); + target.chooseBool("是否交换“寇旌”牌?", "用你的所有手牌交换" + str + "的下列“寇旌”牌:" + get.translation(cards)).set("ai", function () { + var player = _status.event.player, + target = _status.event.getParent().player; + if (player.hasShan() || player.countCards("hs", { name: ["tao", "jiu"] }) > 0 || get.attitude(player, target) >= 0) return false; + var hs1 = player.getCards("h"), + hs2 = _status.event.getParent().cards; + if (hs2.length >= player.hp) return true; + if (get.value(hs1, player) >= get.value(hs2, target)) return false; + return true; + }); else event.finish(); "step 1"; if (result.bool) { @@ -1913,17 +1991,7 @@ game.import("character", function () { var list2 = list.map(function (i) { return get.translation(i[2].slice(6)); }); - return ( - "你使用" + - list2[0] + - "牌时无次数限制;使用或打出" + - list2[1] + - "时,摸一张牌;
    成为" + - list2[2] + - "牌目标后可弃一张牌无效;结束阶段获得一张" + - list2[3] + - "牌" - ); + return "你使用" + list2[0] + "牌时无次数限制;使用或打出" + list2[1] + "时,摸一张牌;
    成为" + list2[2] + "牌目标后可弃一张牌无效;结束阶段获得一张" + list2[3] + "牌"; }, ], ]); @@ -1935,23 +2003,17 @@ game.import("character", function () { return player.hasValueTarget(card); }); list.sort(function (a, b) { - return ( - hs.filter((i) => get.suit(i) == b).length - - hs.filter((i) => get.suit(i) == a).length - ); + return hs.filter(i => get.suit(i) == b).length - hs.filter(i => get.suit(i) == a).length; }); list2.push(list.shift()); hs = player.getCards("hs", "sha"); list.sort(function (a, b) { - return ( - hs.filter((i) => get.suit(i) == b).length - - hs.filter((i) => get.suit(i) == a).length - ); + return hs.filter(i => get.suit(i) == b).length - hs.filter(i => get.suit(i) == a).length; }); list2.unshift(list.shift()); list.randomSort(); list2.addArray(list); - return [list2.map((i) => ["", "", "lukai_" + i])]; + return [list2.map(i => ["", "", "lukai_" + i])]; }); "step 1"; if (result.bool) { @@ -1979,18 +2041,8 @@ game.import("character", function () { marktext: "筮", intro: { content: function (storage, player) { - var list = lib.skill.lkbushi.getBushi(player).map((i) => get.translation(i)); - return ( - "①你使用" + - list[0] + - "牌无次数限制。②当你使用或打出" + - list[1] + - "牌后,你摸一张牌。③当你成为" + - list[2] + - "牌的目标后,你可以弃置一张牌,令此牌对你无效。④结束阶段开始时,你从牌堆或弃牌堆获得一张" + - list[3] + - "牌。⑤准备阶段开始时,你可调整此技能中四种花色的对应顺序。" - ); + var list = lib.skill.lkbushi.getBushi(player).map(i => get.translation(i)); + return "①你使用" + list[0] + "牌无次数限制。②当你使用或打出" + list[1] + "牌后,你摸一张牌。③当你成为" + list[2] + "牌的目标后,你可以弃置一张牌,令此牌对你无效。④结束阶段开始时,你从牌堆或弃牌堆获得一张" + list[3] + "牌。⑤准备阶段开始时,你可调整此技能中四种花色的对应顺序。"; }, }, group: ["lkbushi_unlimit", "lkbushi_draw", "lkbushi_defend", "lkbushi_gain"], @@ -2039,28 +2091,17 @@ game.import("character", function () { direct: true, filter: function (event, player) { var list = lib.skill.lkbushi.getBushi(player); - return ( - list[2] == get.suit(event.card) && - !event.excluded.includes(player) && - player.countCards("he") > 0 - ); + return list[2] == get.suit(event.card) && !event.excluded.includes(player) && player.countCards("he") > 0; }, content: function () { "step 0"; player - .chooseToDiscard( - "he", - get.prompt("lkbushi"), - "弃置一张牌,令" + get.translation(trigger.card) + "对你无效" - ) + .chooseToDiscard("he", get.prompt("lkbushi"), "弃置一张牌,令" + get.translation(trigger.card) + "对你无效") .set("ai", function (card) { if (_status.event.eff >= 0) return false; return -_status.event.eff * 1.1 - get.value(card); }) - .set( - "eff", - get.effect(player, trigger.card, trigger.player, player) - ).logSkill = ["lkbushi_defend", trigger.player]; + .set("eff", get.effect(player, trigger.card, trigger.player, player)).logSkill = ["lkbushi_defend", trigger.player]; "step 1"; if (result.bool) { trigger.excluded.add(player); @@ -2087,8 +2128,7 @@ game.import("character", function () { trigger: { source: ["damageBegin1", "damageBegin4"] }, forced: true, filter: function (event, player, name) { - if (!event.card || event.card.name != "sha" || event.getParent().type != "card") - return false; + if (!event.card || event.card.name != "sha" || event.getParent().type != "card") return false; var range = player.getAttackRange(); if (name == "damageBegin1") return range > 3; return range < 3 && event.num > 1; @@ -2104,12 +2144,7 @@ game.import("character", function () { filterDamage: true, skillTagFilter: function (player, tag, arg) { if (arg && arg.card && arg.card.name == "sha") { - if ( - arg.player && - arg.player.hasSkill("lkzhongzhuang") && - arg.player.getAttackRange() < 3 - ) - return true; + if (arg.player && arg.player.hasSkill("lkzhongzhuang") && arg.player.getAttackRange() < 3) return true; } return false; }, @@ -2125,12 +2160,7 @@ game.import("character", function () { global: "loseAsyncAfter", }, filter: function (event, player) { - return ( - event.type == "discard" && - event.getl(player).cards2.length > 0 && - player.countCards("h") > 0 && - !player.hasSkill("olbingyi_blocker", null, null, false) - ); + return event.type == "discard" && event.getl(player).cards2.length > 0 && player.countCards("h") > 0 && !player.hasSkill("olbingyi_blocker", null, null, false); }, prompt2: function (event, player) { var str = "展示所有手牌,然后", @@ -2146,30 +2176,17 @@ game.import("character", function () { }, content: function () { "step 0"; - player.addTempSkill("olbingyi_blocker", [ - "phaseZhunbeiAfter", - "phaseJudgeAfter", - "phaseDrawAfter", - "phaseUseAfter", - "phaseDiscardAfter", - "phaseJieshuAfter", - ]); + player.addTempSkill("olbingyi_blocker", ["phaseZhunbeiAfter", "phaseJudgeAfter", "phaseDrawAfter", "phaseUseAfter", "phaseDiscardAfter", "phaseJieshuAfter"]); player.showHandcards(get.translation(player) + "发动了【秉壹】"); if (get.color(player.getCards("h")) == "none") event.finish(); "step 1"; var num = player.countCards("h"); - player - .chooseTarget( - [1, num], - "令至多" + get.cnNumber(num) + "名角色也各摸一张牌", - lib.filter.notMe - ) - .set("ai", function (target) { - var player = _status.event.player; - var att = get.attitude(player, target) / Math.sqrt(1 + target.countCards("h")); - if (target.hasSkillTag("nogain")) att /= 10; - return att; - }); + player.chooseTarget([1, num], "令至多" + get.cnNumber(num) + "名角色也各摸一张牌", lib.filter.notMe).set("ai", function (target) { + var player = _status.event.player; + var att = get.attitude(player, target) / Math.sqrt(1 + target.countCards("h")); + if (target.hasSkillTag("nogain")) att /= 10; + return att; + }); "step 2"; var targets = [player]; if (result.bool) { @@ -2247,14 +2264,12 @@ game.import("character", function () { }, content: function () { "step 0"; - target - .chooseCard("he", [1, 3], "匡弼:交给" + get.translation(player) + "一至三张牌", true) - .set("ai", function (card) { - if (get.attitude(_status.event.player, _status.event.getParent().player) > 0) { - return 7 - get.value(card); - } - return -get.value(card); - }); + target.chooseCard("he", [1, 3], "匡弼:交给" + get.translation(player) + "一至三张牌", true).set("ai", function (card) { + if (get.attitude(_status.event.player, _status.event.getParent().player) > 0) { + return 7 - get.value(card); + } + return -get.value(card); + }); "step 1"; if (result.bool) { target.give(result.cards, player, "giveAuto").gaintag.add("xinkuangbi_keep"); @@ -2282,8 +2297,7 @@ game.import("character", function () { if (card.hasGaintag("xinkuangbi_keep")) return true; }, cardDiscardable: function (card, player, name) { - if (name == "phaseDiscard" && card.hasGaintag("xinkuangbi_keep")) - return false; + if (name == "phaseDiscard" && card.hasGaintag("xinkuangbi_keep")) return false; }, }, charlotte: true, @@ -2367,13 +2381,7 @@ game.import("character", function () { }, prompt2: function (event, player) { var num = get.cnNumber(2 * event.num, true); - return ( - "令即将对其造成的伤害翻倍至" + - num + - "点,并令自己失去" + - get.cnNumber(event.num) + - "点体力" - ); + return "令即将对其造成的伤害翻倍至" + num + "点,并令自己失去" + get.cnNumber(event.num) + "点体力"; }, check: function (event, player) { return ( @@ -2426,13 +2434,7 @@ game.import("character", function () { audio: 2, trigger: { player: ["loseAfter", "changeHp", "gainMaxHpAfter", "loseMaxHpAfter"], - global: [ - "equipAfter", - "addJudgeAfter", - "gainAfter", - "loseAsyncAfter", - "addToExpansionAfter", - ], + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, frequent: true, prompt: function (event, player) { @@ -2468,16 +2470,8 @@ game.import("character", function () { .set("logSkill", "reshangshi") .set("ai", function (card) { var player = _status.event.player; - if ( - player.countCards("h") > - player.getDamagedHp() + _status.event.getTrigger().num - ) - return 1; - if (player.isPhaseUsing()) - return ( - 0.1 - - player.getUseValue(card, null, true) / Math.max(0.1, get.value(card)) - ); + if (player.countCards("h") > player.getDamagedHp() + _status.event.getTrigger().num) return 1; + if (player.isPhaseUsing()) return 0.1 - player.getUseValue(card, null, true) / Math.max(0.1, get.value(card)); return (get.position(card) == "h" ? 5 : 0.1) - get.value(card); }); }, @@ -2545,11 +2539,7 @@ game.import("character", function () { target: function (card, player, target) { if (get.tag(card, "recover") && target.hp == target.maxHp - 1) return [0, 0]; if (target.hasFriend()) { - if ( - (get.tag(card, "damage") == 1 || get.tag(card, "loseHp")) && - target.hp == target.maxHp - ) - return [0, 1]; + if ((get.tag(card, "damage") == 1 || get.tag(card, "loseHp")) && target.hp == target.maxHp) return [0, 1]; } }, }, @@ -2566,11 +2556,7 @@ game.import("character", function () { check: function (event, player) { var att = get.attitude(player, event.player); if (event.player.hp == event.player.maxHp) return att < 0; - if ( - event.player.hp == event.player.maxHp - 1 && - (event.player.maxHp <= 3 || event.player.hasSkillTag("maixie")) - ) - return att < 0; + if (event.player.hp == event.player.maxHp - 1 && (event.player.maxHp <= 3 || event.player.hasSkillTag("maixie"))) return att < 0; return att > 0; }, filter: function (event, player) { @@ -2620,17 +2606,13 @@ game.import("character", function () { return false; }, filter: function (event, player) { - return ( - event.card && - event.card.name == "sha" && - (get.color(event.card) == "red" || event.getParent(2).jiu == true) - ); + return event.card && event.card.name == "sha" && (get.color(event.card) == "red" || event.getParent(2).jiu == true); }, content: function () { player.loseMaxHp(); }, ai: { - neg: true + neg: true, }, }, xindanshou: { @@ -2641,15 +2623,7 @@ game.import("character", function () { }, direct: true, filter: function (event, player, name) { - return ( - ((name == "phaseJieshuBegin" && - event.player != player && - player.countCards("he") >= event.player.countCards("h")) || - (event.targets && - event.targets.includes(player) && - ["basic", "trick"].includes(get.type(event.card, "trick")))) && - !player.hasSkill("xindanshou_as") - ); + return ((name == "phaseJieshuBegin" && event.player != player && player.countCards("he") >= event.player.countCards("h")) || (event.targets && event.targets.includes(player) && ["basic", "trick"].includes(get.type(event.card, "trick")))) && !player.hasSkill("xindanshou_as"); }, content: function () { "step 0"; @@ -2657,35 +2631,14 @@ game.import("character", function () { var num = trigger.player.countCards("h"); if (num > 0) player - .chooseToDiscard( - get.prompt("xindanshou", trigger.player), - num, - "弃置" + - get.cnNumber(num) + - "张牌并对" + - get.translation(trigger.player) + - "造成1点伤害", - "he" - ) + .chooseToDiscard(get.prompt("xindanshou", trigger.player), num, "弃置" + get.cnNumber(num) + "张牌并对" + get.translation(trigger.player) + "造成1点伤害", "he") .set("logSkill", ["xindanshou", trigger.player]) .set("ai", function (card) { - if ( - get.damageEffect( - _status.event.getTrigger().player, - _status.event.player, - _status.event.player - ) > 0 - ) - return ( - Math.max(5.5, 8 - _status.event.selectTarget) - get.value(card) - ); + if (get.damageEffect(_status.event.getTrigger().player, _status.event.player, _status.event.player) > 0) return Math.max(5.5, 8 - _status.event.selectTarget) - get.value(card); return -1; }); else - player.chooseBool( - get.prompt("xindanshou", trigger.player), - "对" + get.translation(trigger.player) + "造成1点伤害" - ).ai = function () { + player.chooseBool(get.prompt("xindanshou", trigger.player), "对" + get.translation(trigger.player) + "造成1点伤害").ai = function () { return get.damageEffect(trigger.player, player, player) > 0; }; } else { @@ -2693,20 +2646,12 @@ game.import("character", function () { game.countPlayer2(function (current) { var history = current.getHistory("useCard"); for (var j = 0; j < history.length; j++) { - if ( - ["basic", "trick"].includes(get.type(history[j].card, "trick")) && - history[j].targets && - history[j].targets.includes(player) - ) - num++; + if (["basic", "trick"].includes(get.type(history[j].card, "trick")) && history[j].targets && history[j].targets.includes(player)) num++; } }); event.num = num; player - .chooseBool( - get.prompt("xindanshou") + "(可摸" + get.cnNumber(num) + "张牌)", - get.translation("xindanshou_info") - ) + .chooseBool(get.prompt("xindanshou") + "(可摸" + get.cnNumber(num) + "张牌)", get.translation("xindanshou_info")) .set("ai", function () { return _status.event.choice; }) @@ -2716,12 +2661,7 @@ game.import("character", function () { if (player.isPhaseUsing()) { if ( player.countCards("h", function (card) { - return ( - ["basic", "trick"].includes(get.type(card, "trick")) && - player.canUse(card, player, null, true) && - get.effect(player, card, player) > 0 && - player.getUseValue(card, null, true) > 0 - ); + return ["basic", "trick"].includes(get.type(card, "trick")) && player.canUse(card, player, null, true) && get.effect(player, card, player) > 0 && player.getUseValue(card, null, true) > 0; }) ) return false; @@ -2729,13 +2669,7 @@ game.import("character", function () { } if (num > 2) return true; var card = trigger.card; - if ( - get.tag(card, "damage") && - player.hp <= trigger.getParent().baseDamage && - (!get.tag(card, "respondShan") || !player.hasShan()) && - (!get.tag(card, "respondSha") || !player.hasSha()) - ) - return true; + if (get.tag(card, "damage") && player.hp <= trigger.getParent().baseDamage && (!get.tag(card, "respondShan") || !player.hasShan()) && (!get.tag(card, "respondSha") || !player.hasSha())) return true; var source = _status.currentPhase, todis = source.countCards("h") - source.needsToDiscard(); if ( @@ -2744,9 +2678,7 @@ game.import("character", function () { Math.min( 2 + (source.hp <= 1 ? 1 : 0), player.countCards("he", function (card) { - return ( - get.value(card, player) < Math.max(5.5, 8 - todis) - ); + return get.value(card, player) < Math.max(5.5, 8 - todis); }) ), player.countCards("he", function (card) { @@ -2756,8 +2688,7 @@ game.import("character", function () { get.damageEffect(source, player, player) > 0 ) return false; - if (!source.isPhaseUsing() || get.attitude(player, source) > 0) - return true; + if (!source.isPhaseUsing() || get.attitude(player, source) > 0) return true; if (card.name == "sha" && !source.getCardUsable("sha")) return true; return Math.random() < num / 3; })() @@ -2781,22 +2712,12 @@ game.import("character", function () { threaten: 0.6, effect: { target: function (card, player, target, current) { - if ( - typeof card != "object" || - target.hasSkill("xindanshou_as") || - !["basic", "trick"].includes(get.type(card, "trick")) - ) - return; + if (typeof card != "object" || target.hasSkill("xindanshou_as") || !["basic", "trick"].includes(get.type(card, "trick"))) return; var num = 0; game.countPlayer2(function (current) { var history = current.getHistory("useCard"); for (var j = 0; j < history.length; j++) { - if ( - ["basic", "trick"].includes(get.type(history[j].card, "trick")) && - history[j].targets && - history[j].targets.includes(player) - ) - num++; + if (["basic", "trick"].includes(get.type(history[j].card, "trick")) && history[j].targets && history[j].targets.includes(player)) num++; } }); if (player == target && current > 0) return [1.1, num]; @@ -2847,10 +2768,7 @@ game.import("character", function () { if (event.targets && !info.multitarget) { if ( game.hasPlayer(function (current) { - return ( - lib.filter.targetEnabled2(event.card, player, current) && - !event.targets.includes(current) - ); + return lib.filter.targetEnabled2(event.card, player, current) && !event.targets.includes(current); }) ) { return true; @@ -2860,21 +2778,12 @@ game.import("character", function () { }, content: function () { "step 0"; - var list = [ - "为XXX多选择一个目标", - " 令XXX无视防具牌 ", - " 令XXX不可被抵消 ", - "当XXX造成伤害时摸牌", - ], + var list = ["为XXX多选择一个目标", " 令XXX无视防具牌 ", " 令XXX不可被抵消 ", "当XXX造成伤害时摸牌"], card = get.translation(trigger.card); for (var i = 0; i < list.length; i++) { list[i] = [i, list[i].replace(/XXX/g, card)]; } - var next = player.chooseButton([ - "奔袭:请选择一至两项", - [list.slice(0, 2), "tdnodes"], - [list.slice(2, 4), "tdnodes"], - ]); + var next = player.chooseButton(["奔袭:请选择一至两项", [list.slice(0, 2), "tdnodes"], [list.slice(2, 4), "tdnodes"]]); next.set("forced", true); next.set("selectButton", [1, 2]); next.set("filterButton", function (button) { @@ -2891,11 +2800,7 @@ game.import("character", function () { case 0: { if ( game.hasPlayer(function (current) { - return ( - lib.filter.targetEnabled2(event.card, player, current) && - !event.targets.includes(current) && - get.effect(current, event.card, player, player) > 0 - ); + return lib.filter.targetEnabled2(event.card, player, current) && !event.targets.includes(current) && get.effect(current, event.card, player, player) > 0; }) ) return 1.6 + Math.random(); @@ -2923,7 +2828,7 @@ game.import("character", function () { current.mayHaveShan( player, "use", - current.getCards("h", (i) => { + current.getCards("h", i => { return i.hasGaintag("sha_notshan"); }) ) && @@ -2947,15 +2852,11 @@ game.import("character", function () { var map = [ function (trigger, player, event) { player - .chooseTarget( - "请选择" + get.translation(trigger.card) + "的额外目标", - true, - function (card, player, target) { - var player = _status.event.player; - if (_status.event.targets.includes(target)) return false; - return lib.filter.targetEnabled2(_status.event.card, player, target); - } - ) + .chooseTarget("请选择" + get.translation(trigger.card) + "的额外目标", true, function (card, player, target) { + var player = _status.event.player; + if (_status.event.targets.includes(target)) return false; + return lib.filter.targetEnabled2(_status.event.card, player, target); + }) .set("targets", trigger.targets) .set("card", trigger.card) .set("ai", function (target) { @@ -2977,13 +2878,7 @@ game.import("character", function () { }, ]; for (var i = 0; i < result.links.length; i++) { - game.log( - player, - "选择了", - "#g【奔袭】", - "的", - "#y选项" + get.cnNumber(result.links[i] + 1, true) - ); + game.log(player, "选择了", "#g【奔袭】", "的", "#y选项" + get.cnNumber(result.links[i] + 1, true)); map[result.links[i]](trigger, player, event); } if (!result.links.includes(0)) event.finish(); @@ -3010,8 +2905,7 @@ game.import("character", function () { ) return false; if (tag == "directHit_ai") return arg.card.name == "sha"; - if (!arg || !arg.card || (arg.card.name != "sha" && arg.card.name != "chuqibuyi")) - return false; + if (!arg || !arg.card || (arg.card.name != "sha" && arg.card.name != "chuqibuyi")) return false; var card = arg.target.getEquip(2); if (card && card.name.indexOf("bagua") != -1) return true; if (player._xinbenxi_ai) return false; @@ -3082,8 +2976,7 @@ game.import("character", function () { var storage = player.getStorage("xinyaoming_kanon"); if (storage.includes(control)) return false; if (control == "摸牌" && target != player) return true; - if (control == "弃牌" && target != player && target.countCards("h")) - return true; + if (control == "弃牌" && target != player && target.countCards("h")) return true; if (control == "制衡") return true; return false; }), @@ -3105,21 +2998,9 @@ game.import("character", function () { .set("ai", function (target) { var player = _status.event.player; var storage = player.getStorage("xinyaoming_kanon"); - if ( - get.attitude(player, target) > 0 && - !storage.includes("摸牌") && - target != player - ) - return get.effect(target, { name: "draw" }, player, player); - if ( - get.attitude(player, target) < 0 && - !storage.includes("弃牌") && - target != player && - target.countCards("h") - ) - return get.effect(target, { name: "guohe_copy2" }, player, player); - if (get.attitude(player, target) > 0 && !storage.includes("制衡")) - return get.effect(target, { name: "kaihua" }, player, player); + if (get.attitude(player, target) > 0 && !storage.includes("摸牌") && target != player) return get.effect(target, { name: "draw" }, player, player); + if (get.attitude(player, target) < 0 && !storage.includes("弃牌") && target != player && target.countCards("h")) return get.effect(target, { name: "guohe_copy2" }, player, player); + if (get.attitude(player, target) > 0 && !storage.includes("制衡")) return get.effect(target, { name: "kaihua" }, player, player); return 0; }); "step 1"; @@ -3138,11 +3019,7 @@ game.import("character", function () { if (controls.length == 1) event._result = { control: controls[0] }; else { var str = get.translation(target); - var choiceList = [ - "令" + str + "摸一张牌", - "弃置" + str + "一张手牌", - "令" + str + "弃置至多两张牌,然后其摸等量的牌", - ]; + var choiceList = ["令" + str + "摸一张牌", "弃置" + str + "一张手牌", "令" + str + "弃置至多两张牌,然后其摸等量的牌"]; var list = ["摸牌", "弃牌", "制衡"]; for (var i = 0; i < 3; i++) { if (!controls.includes(list[i])) { @@ -3178,9 +3055,7 @@ game.import("character", function () { player.discardPlayerCard(target, "h", true); break; case "制衡": - target - .chooseToDiscard([1, 2], "he", "邀名:弃置至多两张牌,然后摸等量的牌", true) - .set("ai", (card) => lib.skill.zhiheng.check(card)); + target.chooseToDiscard([1, 2], "he", "邀名:弃置至多两张牌,然后摸等量的牌", true).set("ai", card => lib.skill.zhiheng.check(card)); break; } if (result.control != "制衡") event.finish(); @@ -3300,11 +3175,7 @@ game.import("character", function () { return 8 - get.value(card); }) .set("types", types) - .set("dialog", [ - "弃置一张与" + get.translation(player) + "弃置的牌类别均不同的牌,或将武将牌翻面", - "hidden", - cards, - ]); + .set("dialog", ["弃置一张与" + get.translation(player) + "弃置的牌类别均不同的牌,或将武将牌翻面", "hidden", cards]); "step 1"; if (!result.bool) { target.turnOver(); @@ -3331,29 +3202,18 @@ game.import("character", function () { }, content: function () { "step 0"; - targets[0].chooseCard( - "交给" + - get.translation(player) + - "一张【杀】或武器牌,否则视为对" + - get.translation(targets[1]) + - "使用一张【杀】", - "he", - function (card) { - return get.name(card) == "sha" || get.subtype(card) == "equip1"; - } - ).ai = function (card) { + targets[0].chooseCard("交给" + get.translation(player) + "一张【杀】或武器牌,否则视为对" + get.translation(targets[1]) + "使用一张【杀】", "he", function (card) { + return get.name(card) == "sha" || get.subtype(card) == "equip1"; + }).ai = function (card) { var player = _status.event.player; var target = _status.event.getParent("xinzhige").targets[1]; - return get.effect(target, { name: "sha" }, player, player) >= 0 - ? -1 - : 9 - get.value(card); + return get.effect(target, { name: "sha" }, player, player) >= 0 ? -1 : 9 - get.value(card); }; "step 1"; if (result.bool) { targets[0].give(result.cards, player, "give"); } else { - if (targets[0].canUse("sha", targets[1])) - targets[0].useCard({ name: "sha", isCard: true }, targets[1]); + if (targets[0].canUse("sha", targets[1])) targets[0].useCard({ name: "sha", isCard: true }, targets[1]); } }, ai: { @@ -3425,40 +3285,21 @@ game.import("character", function () { }, xintaoluan: { hiddenCard: function (player, name) { - return ( - !player.getStorage("xintaoluan").includes(name) && - player.countCards("hes") > 0 && - !player.hasSkill("xintaoluan3") && - lib.inpile.includes(name) - ); + return !player.getStorage("xintaoluan").includes(name) && player.countCards("hes") > 0 && !player.hasSkill("xintaoluan3") && lib.inpile.includes(name); }, audio: "taoluan", enable: "chooseToUse", filter: function (event, player) { return ( !player.hasSkill("xintaoluan3") && - player.hasCard((card) => - lib.inpile.some((name) => { + player.hasCard(card => + lib.inpile.some(name => { if (player.getStorage("xintaoluan").includes(name)) return false; if (get.type(name) != "basic" && get.type(name) != "trick") return false; - if ( - event.filterCard( - { name: name, isCard: true, cards: [card] }, - player, - event - ) - ) - return true; + if (event.filterCard({ name: name, isCard: true, cards: [card] }, player, event)) return true; if (name == "sha") { for (var nature of lib.inpile_nature) { - if ( - event.filterCard( - { name: name, nature: nature, isCard: true, cards: [card] }, - player, - event - ) - ) - return true; + if (event.filterCard({ name: name, nature: nature, isCard: true, cards: [card] }, player, event)) return true; } } return false; @@ -3482,14 +3323,12 @@ game.import("character", function () { return ui.create.dialog("滔乱", [list, "vcard"]); }, filter: function (button, player) { - return _status.event - .getParent() - .filterCard({ name: button.link[2] }, player, _status.event.getParent()); + return _status.event.getParent().filterCard({ name: button.link[2] }, player, _status.event.getParent()); }, check: function (button) { var player = _status.event.player; var card = { name: button.link[2], nature: button.link[3] }; - if (player.countCards("hes", (cardx) => cardx.name == card.name)) return 0; + if (player.countCards("hes", cardx => cardx.name == card.name)) return 0; return _status.event.getParent().type == "phase" ? player.getUseValue(card) : 1; }, backup: function (links, player) { @@ -3520,12 +3359,7 @@ game.import("character", function () { }; }, prompt: function (links, player) { - return ( - "将一张牌当做" + - (get.translation(links[0][3]) || "") + - get.translation(links[0][2]) + - "使用" - ); + return "将一张牌当做" + (get.translation(links[0][3]) || "") + get.translation(links[0][2]) + "使用"; }, }, ai: { @@ -3537,25 +3371,16 @@ game.import("character", function () { if (!player.countCards("hes") || player.hasSkill("taoluan3")) return false; if (tag == "respondSha" || tag == "respondShan") { if (arg == "respond") return false; - return !player - .getStorage("taoluan") - .includes(tag == "respondSha" ? "sha" : "shan"); + return !player.getStorage("taoluan").includes(tag == "respondSha" ? "sha" : "shan"); } - return ( - !player.getStorage("taoluan").includes("tao") || - (!player.getStorage("taoluan").includes("jiu") && arg == player) - ); + return !player.getStorage("taoluan").includes("tao") || (!player.getStorage("taoluan").includes("jiu") && arg == player); }, result: { player: function (player) { var num = player.countMark("xintaoluan2"); var players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { - if ( - players[i] != player && - players[i].countCards("he") > (num + 1) * 2 && - get.attitude(player, players[i]) > 0 - ) { + if (players[i] != player && players[i].countCards("he") > (num + 1) * 2 && get.attitude(player, players[i]) > 0) { return 1; } } @@ -3572,7 +3397,7 @@ game.import("character", function () { popup: false, charlotte: true, filter: function (event, player) { - if (!game.hasPlayer((current) => current != player)) return false; + if (!game.hasPlayer(current => current != player)) return false; return event.skill == "xintaoluan_backup"; }, content: function () { @@ -3585,11 +3410,7 @@ game.import("character", function () { function (card, player, target) { return target != player; }, - '滔乱

    令一名其他角色选择一项:1.交给你' + - get.cnNumber(event.num) + - "张与你以此法使用的牌类别不同的牌;2.你失去" + - get.cnNumber(event.num) + - "点体力" + '滔乱

    令一名其他角色选择一项:1.交给你' + get.cnNumber(event.num) + "张与你以此法使用的牌类别不同的牌;2.你失去" + get.cnNumber(event.num) + "点体力" ) .set("ai", function (target) { var player = _status.event.player; @@ -3607,21 +3428,9 @@ game.import("character", function () { player.line(target, "green"); var type = get.type(trigger.card, "trick"); target - .chooseCard( - '滔乱

    交给' + - get.translation(player) + - get.cnNumber(num) + - "张不为" + - get.translation(type) + - "牌的牌,或令其失去" + - get.cnNumber(num) + - "点体力且滔乱无效直到回合结束", - "he", - num, - function (card, player, target) { - return get.type(card, "trick") != _status.event.cardType; - } - ) + .chooseCard('滔乱

    交给' + get.translation(player) + get.cnNumber(num) + "张不为" + get.translation(type) + "牌的牌,或令其失去" + get.cnNumber(num) + "点体力且滔乱无效直到回合结束", "he", num, function (card, player, target) { + return get.type(card, "trick") != _status.event.cardType; + }) .set("cardType", type) .set("ai", function (card) { if (_status.event.att) { @@ -3654,9 +3463,7 @@ game.import("character", function () { if (!trigger.numFixed) { choiceList.push("摸牌阶段多摸两张牌,然后本回合内不能发动【忠鉴】"); if (trigger.num > 0) { - choiceList.unshift( - "摸牌阶段少摸一张牌,发动【忠鉴】时可以多展示自己的一张牌直到回合结束" - ); + choiceList.unshift("摸牌阶段少摸一张牌,发动【忠鉴】时可以多展示自己的一张牌直到回合结束"); event.first = true; } } @@ -3729,13 +3536,7 @@ game.import("character", function () { } player.showCards(cards); "step 1"; - player.choosePlayerCard( - target, - "h", - [1, player.hasSkill("xincaishi_1") ? 4 : 3], - "请选择要展示的牌", - true - ).ai = function () { + player.choosePlayerCard(target, "h", [1, player.hasSkill("xincaishi_1") ? 4 : 3], "请选择要展示的牌", true).ai = function () { return Math.random(); }; "step 2"; @@ -3850,12 +3651,9 @@ game.import("character", function () { } "step 1"; player - .chooseTarget( - "【绝响】:是否令一名其他角色获得技能〖残韵〗?", - function (card, player, target) { - return target != player; - } - ) + .chooseTarget("【绝响】:是否令一名其他角色获得技能〖残韵〗?", function (card, player, target) { + return target != player; + }) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); if (target.countCards("ej", { suit: "club" })) att = att * 2; @@ -3869,11 +3667,7 @@ game.import("character", function () { player.line(target, "thunder"); target.addSkills("new_canyun"); target - .discardPlayerCard( - "是否弃置自己区域内的一张梅花牌,获得技能〖绝响〗?", - target, - "hej" - ) + .discardPlayerCard("是否弃置自己区域内的一张梅花牌,获得技能〖绝响〗?", target, "hej") .set("ai", function (card) { if (get.position(card) == "j") return 100 + get.value(card); return 100 - get.value(card); @@ -3898,8 +3692,7 @@ game.import("character", function () { intro: { content: function (storage) { var str = ""; - var str2 = - "
  • 出牌阶段限一次,你可以弃置至多X张牌并选择等量的其他角色(不能选择已经成为过〖残韵〗目标的角色)。这些角色中,装备区内牌数少于你的回复1点体力,等于你的摸一张牌,多于你的失去1点体力。若你以此法指定的角色数等于X,则你摸一张牌。(X为你的体力值)"; + var str2 = "
  • 出牌阶段限一次,你可以弃置至多X张牌并选择等量的其他角色(不能选择已经成为过〖残韵〗目标的角色)。这些角色中,装备区内牌数少于你的回复1点体力,等于你的摸一张牌,多于你的失去1点体力。若你以此法指定的角色数等于X,则你摸一张牌。(X为你的体力值)"; if (storage.length > 0) { for (var i = 0; i < storage.length; i++) { str += "、"; @@ -3987,10 +3780,7 @@ game.import("character", function () { popup: false, silent: false, filter: function (event, player) { - return ( - event.target == event.targets[event.targets.length - 1] && - event.targets.length == player.hp - ); + return event.target == event.targets[event.targets.length - 1] && event.targets.length == player.hp; }, content: function () { player.draw(); @@ -4030,25 +3820,12 @@ game.import("character", function () { event.num = 0; event.num2 = result.cards.length; for (var i = 0; i < result.cards.length; i++) { - if ( - get.type( - result.cards[i], - null, - result.cards[i].original == "h" ? target : false - ) != "equip" - ) { + if (get.type(result.cards[i], null, result.cards[i].original == "h" ? target : false) != "equip") { event.num++; } } if (event.num > 0) { - var prompt = - "弃置" + - get.cnNumber(event.num) + - "张牌,或令" + - get.translation(event.target) + - "摸" + - get.cnNumber(event.num2) + - "张牌"; + var prompt = "弃置" + get.cnNumber(event.num) + "张牌,或令" + get.translation(event.target) + "摸" + get.cnNumber(event.num2) + "张牌"; player.chooseToDiscard(event.num, prompt, "he").ai = function (card) { return 5 - get.value(card); }; @@ -4095,14 +3872,7 @@ game.import("character", function () { } } if (event.num > 0) { - var prompt = - "弃置" + - get.cnNumber(event.num) + - "张牌,或令" + - get.translation(event.target) + - "摸" + - get.cnNumber(event.num) + - "张牌"; + var prompt = "弃置" + get.cnNumber(event.num) + "张牌,或令" + get.translation(event.target) + "摸" + get.cnNumber(event.num) + "张牌"; player.chooseToDiscard(event.num, prompt, "he").ai = function (card) { return 5 - get.value(card); }; @@ -4131,11 +3901,7 @@ game.import("character", function () { check: function (event, player) { if (player.getHistory("skipped").length > 0) return false; return game.hasPlayer(function (current) { - return ( - get.attitude(player, current) < 0 && - current.hp == 1 && - get.damageEffect(current, player, player) > 0 - ); + return get.attitude(player, current) < 0 && current.hp == 1 && get.damageEffect(current, player, player) > 0; }); }, content: function () { @@ -4151,15 +3917,10 @@ game.import("character", function () { return player.isMaxHp(); }, check: function (event, player) { - if (!player.needsToDiscard() || (player.countCards("e") && player.isMaxEquip())) - return true; + if (!player.needsToDiscard() || (player.countCards("e") && player.isMaxEquip())) return true; if (player.getHistory("skipped").length > 0) return false; return game.hasPlayer(function (current) { - return ( - get.attitude(player, current) < 0 && - current.hp == 1 && - get.damageEffect(current, player, player) > 0 - ); + return get.attitude(player, current) < 0 && current.hp == 1 && get.damageEffect(current, player, player) > 0; }); }, content: function () { @@ -4194,13 +3955,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - [1, player.getHistory("skipped").length], - get.prompt2("pingkou"), - function (card, player, target) { - return target != player; - } - ) + .chooseTarget([1, player.getHistory("skipped").length], get.prompt2("pingkou"), function (card, player, target) { + return target != player; + }) .set("ai", function (target) { var player = _status.event.player; return get.damageEffect(target, player, player); @@ -4276,17 +4033,12 @@ game.import("character", function () { result: { player: function (player, target) { if (get.attitude(player, target) <= 0) { - if (target.isMinHandcard() || target.isMinEquip() || target.isMinHp()) - return -1; + if (target.isMinHandcard() || target.isMinEquip() || target.isMinHp()) return -1; } var num = 0; if (player.isMinHandcard() || target.isMinHandcard()) num++; if (player.isMinEquip() || target.isMinEquip()) num++; - if ( - (player.isMinHp() && player.isDamaged()) || - (target.isMinHp() && target.isDamaged()) - ) - num += 2.1; + if ((player.isMinHp() && player.isDamaged()) || (target.isMinHp() && target.isDamaged())) num += 2.1; return num; }, }, @@ -4333,9 +4085,7 @@ game.import("character", function () { player.storage.pindi_type = []; } player.storage.pindi_target.push(target); - player.storage.pindi_type.push( - get.type2(cards[0], cards[0].original == "h" ? player : false) - ); + player.storage.pindi_type.push(get.type2(cards[0], cards[0].original == "h" ? player : false)); event.num = player.getStat("skill").pindi; var evt = _status.event.getParent("phase"); if (evt && evt.name == "phase" && !evt.pindi) { @@ -4350,19 +4100,9 @@ game.import("character", function () { if (target.countCards("he") == 0) event._result = { index: 0 }; else { player - .chooseControlList( - [ - "令" + get.translation(target) + "摸" + get.cnNumber(event.num) + "张牌", - "令" + - get.translation(target) + - "弃置" + - get.cnNumber(event.num) + - "张牌", - ], - function () { - return _status.event.choice; - } - ) + .chooseControlList(["令" + get.translation(target) + "摸" + get.cnNumber(event.num) + "张牌", "令" + get.translation(target) + "弃置" + get.cnNumber(event.num) + "张牌"], function () { + return _status.event.choice; + }) .set("choice", get.attitude(player, target) > 0 ? 0 : 1); } "step 1"; @@ -4457,10 +4197,7 @@ game.import("character", function () { event.num2 = num2; var str = "令目标摸" + get.cnNumber(num1) + "张牌"; if (num2) { - str += - ",然后弃置" + - get.cnNumber(num2) + - "张牌;若目标因此法弃置了所有牌,则你失去“诫训”,然后你发动“复难”时,无须令其获得你使用的牌"; + str += ",然后弃置" + get.cnNumber(num2) + "张牌;若目标因此法弃置了所有牌,则你失去“诫训”,然后你发动“复难”时,无须令其获得你使用的牌"; } player .chooseTarget(get.prompt("jiexun"), function (card, player, target) { @@ -4598,12 +4335,7 @@ game.import("character", function () { if (player._zhuandui_temp || tag !== "directHit_ai") return false; player._zhuandui_temp = true; var bool = (function () { - if ( - arg.card.name != "sha" || - get.attitude(player, arg.target) >= 0 || - !arg.target.countCards("h") - ) - return false; + if (arg.card.name != "sha" || get.attitude(player, arg.target) >= 0 || !arg.target.countCards("h")) return false; if ( arg.target.countCards("h") == 1 && (!arg.target.hasSkillTag( @@ -4629,13 +4361,7 @@ game.import("character", function () { return true; return ( player.countCards("h", function (card) { - return ( - card != arg.card && - (!arg.card.cards || !arg.card.cards.includes(card)) && - get.value(card) <= 4 && - (get.number(card) >= 11 + arg.target.countCards("h") / 2 || - get.suit(card, player) == "heart") - ); + return card != arg.card && (!arg.card.cards || !arg.card.cards.includes(card)) && get.value(card) <= 4 && (get.number(card) >= 11 + arg.target.countCards("h") / 2 || get.suit(card, player) == "heart"); }) > 0 ); })(); @@ -4695,12 +4421,7 @@ game.import("character", function () { trigger: { global: "useCardToPlayer" }, filter: function (event, player) { if (!player.countCards("h")) return false; - return ( - event.player != player && - event.card.name == "sha" && - !event.targets.includes(player) && - event.player.inRange(player) - ); + return event.player != player && event.card.name == "sha" && !event.targets.includes(player) && event.player.inRange(player); }, direct: true, content: function () { @@ -4789,11 +4510,7 @@ game.import("character", function () { audio: "qingxian", trigger: { global: "dyingAfter" }, filter: function (event, player) { - return ( - player.storage.qingxian && - player.storage.qingxian > 0 && - !_status.dying.length - ); + return player.storage.qingxian && player.storage.qingxian > 0 && !_status.dying.length; }, direct: true, content: function () { @@ -4813,10 +4530,7 @@ game.import("character", function () { return Math.sqrt(Math.abs(att)); } }) - .set( - "prompt2", - "当你回复体力后,你可以令一名其他角色执行一项:失去1点体力,随机使用一张装备牌;回复1点体力,弃置一张装备牌。若其以此法使用或弃置的牌为梅花,你回复1点体力" - ); + .set("prompt2", "当你回复体力后,你可以令一名其他角色执行一项:失去1点体力,随机使用一张装备牌;回复1点体力,弃置一张装备牌。若其以此法使用或弃置的牌为梅花,你回复1点体力"); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -4856,10 +4570,7 @@ game.import("character", function () { return Math.sqrt(Math.abs(att)); } }) - .set( - "prompt2", - "当你回复体力后,你可以令一名其他角色执行一项:失去1点体力,随机使用一张装备牌;回复1点体力,弃置一张装备牌。若其以此法使用或弃置的牌为梅花,你回复1点体力" - ); + .set("prompt2", "当你回复体力后,你可以令一名其他角色执行一项:失去1点体力,随机使用一张装备牌;回复1点体力,弃置一张装备牌。若其以此法使用或弃置的牌为梅花,你回复1点体力"); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -4884,8 +4595,7 @@ game.import("character", function () { return true; }, logTarget: "source", - prompt2: - "当你受到伤害后,你可以令伤害来源执行一项:失去1点体力,随机使用一张装备牌;回复1点体力,弃置一张装备牌。若其以此法使用或弃置的牌为梅花,你回复1点体力", + prompt2: "当你受到伤害后,你可以令伤害来源执行一项:失去1点体力,随机使用一张装备牌;回复1点体力,弃置一张装备牌。若其以此法使用或弃置的牌为梅花,你回复1点体力", content: function () { event.insert(lib.skill.qingxian.content_choose, { target: trigger.source, @@ -4906,16 +4616,9 @@ game.import("character", function () { index = 0; } player - .chooseControlList( - [ - "令" + get.translation(target) + "失去1点体力,随机使用一张装备牌", - "令" + get.translation(target) + "回复1点体力,弃置一张装备牌", - ], - true, - function (event, player) { - return _status.event.index; - } - ) + .chooseControlList(["令" + get.translation(target) + "失去1点体力,随机使用一张装备牌", "令" + get.translation(target) + "回复1点体力,弃置一张装备牌"], true, function (event, player) { + return _status.event.index; + }) .set("index", index); } "step 1"; @@ -5004,9 +4707,7 @@ game.import("character", function () { content: function () { trigger.source.loseHp(); var card = get.cardPile(function (card) { - return ( - get.type(card) == "equip" && trigger.source.canUse(card, trigger.source) - ); + return get.type(card) == "equip" && trigger.source.canUse(card, trigger.source); }); if (card) { trigger.source.chooseUseTarget(card, "nothrow", "nopopup", true); @@ -5064,8 +4765,7 @@ game.import("character", function () { target.chooseUseTarget(card, true, "nothrow", "nopopup", true); } } - if (event.triggername == "dyingAfter" && player.storage.juexiang_lie > 0) - event.goto(0); + if (event.triggername == "dyingAfter" && player.storage.juexiang_lie > 0) event.goto(0); }, }, rou: { @@ -5200,11 +4900,7 @@ game.import("character", function () { } } } - var next = player - .chooseToMove("通博:是否交换“书”和手牌?") - .set("four", four) - .set("suits2", suits2) - .set("nofour", nofour); + var next = player.chooseToMove("通博:是否交换“书”和手牌?").set("four", four).set("suits2", suits2).set("nofour", nofour); next.set("list", [ [get.translation(player) + "(你)的“书”", expansions], ["你的牌", player.getCards("he")], @@ -5272,15 +4968,10 @@ game.import("character", function () { "step 3"; event.cards = player.getExpansions("bizhuan").slice(0); if (event.cards.length > 1) { - player - .chooseCardButton("将所有“书”交给任意名其他角色", true, event.cards, [ - 1, - event.cards.length, - ]) - .set("ai", function (button) { - if (ui.selected.buttons.length == 0) return 1; - return 0; - }); + player.chooseCardButton("将所有“书”交给任意名其他角色", true, event.cards, [1, event.cards.length]).set("ai", function (button) { + if (ui.selected.buttons.length == 0) return 1; + return 0; + }); } else if (event.cards.length == 1) { event._result = { links: event.cards.slice(0), bool: true }; } else { @@ -5293,13 +4984,9 @@ game.import("character", function () { } event.togive = result.links.slice(0); player - .chooseTarget( - "将" + get.translation(result.links) + "交给一名其他角色", - true, - function (card, player, target) { - return target != player; - } - ) + .chooseTarget("将" + get.translation(result.links) + "交给一名其他角色", true, function (card, player, target) { + return target != player; + }) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); if (_status.event.enemy) { @@ -5318,11 +5005,7 @@ game.import("character", function () { if (result.targets.length) { result.targets[0].gain(event.togive, "draw").giver = player; player.line(result.targets[0], "green"); - game.log( - result.targets[0], - "获得了" + get.cnNumber(event.togive.length) + "张", - "#g“书”" - ); + game.log(result.targets[0], "获得了" + get.cnNumber(event.togive.length) + "张", "#g“书”"); if (event.cards.length) event.goto(3); } }, @@ -5351,11 +5034,9 @@ game.import("character", function () { for (var i = 0; i < list.length; i++) { list[i] = [get.type(list[i]), "", list[i]]; } - player - .chooseButton([get.prompt("shouxi", trigger.player), [list, "vcard"]]) - .set("ai", function (button) { - return Math.random(); - }); + player.chooseButton([get.prompt("shouxi", trigger.player), [list, "vcard"]]).set("ai", function (button) { + return Math.random(); + }); "step 1"; if (result.bool) { player.logSkill("shouxi"); @@ -5382,14 +5063,7 @@ game.import("character", function () { }) .set("att", get.attitude(trigger.player, player)) .set("cardname", name) - .set("dialog", [ - "守玺:请弃置一张【" + - get.translation(name) + - "】,否则此【杀】对" + - get.translation(player) + - "无效", - [event.vcard, "vcard"], - ]); + .set("dialog", ["守玺:请弃置一张【" + get.translation(name) + "】,否则此【杀】对" + get.translation(player) + "无效", [event.vcard, "vcard"]]); "step 3"; if (result.bool == false) { trigger.excluded.push(player); @@ -5543,10 +5217,7 @@ game.import("character", function () { break; } } - game.addVideo("dialogCapt", null, [ - dialog.videoId, - dialog.content.firstChild.innerHTML, - ]); + game.addVideo("dialogCapt", null, [dialog.videoId, dialog.content.firstChild.innerHTML]); } }, card, @@ -5588,17 +5259,10 @@ game.import("character", function () { audio: 2, trigger: { global: "phaseJieshuBegin" }, filter: function (event, player) { - return ( - event.player != player && - event.player.hasSex("male") && - ui.cardPile.childElementCount <= player.hp * 10 - ); + return event.player != player && event.player.hasSex("male") && ui.cardPile.childElementCount <= player.hp * 10; }, check: function (event, player) { - return ( - get.attitude(player, event.player) < 0 && - get.effect(event.player, { name: "sha" }, player, player) > 0 - ); + return get.attitude(player, event.player) < 0 && get.effect(event.player, { name: "sha" }, player, player) > 0; }, logTarget: "player", skillAnimation: true, @@ -5621,13 +5285,7 @@ game.import("character", function () { player.useCard(card, trigger.player, false); } "step 2"; - if ( - event.total > 0 && - !event.washed && - ui.cardPile.childElementCount <= player.hp * 10 && - trigger.player.isIn() - ) - event.goto(1); + if (event.total > 0 && !event.washed && ui.cardPile.childElementCount <= player.hp * 10 && trigger.player.isIn()) event.goto(1); "step 3"; lib.onwash.remove(lib.skill.fuzhu.onWash); game.washCard(); @@ -5714,16 +5372,10 @@ game.import("character", function () { game.stopCountChoose(); "step 3"; if (event.target.getCards("he").includes(event.card)) { - event.target.chooseControlList( - "问卦", - "将" + get.translation(event.card) + "置于牌堆顶", - "将" + get.translation(event.card) + "置于牌堆底", - event.target == player, - function () { - if (get.attitude(event.target, player) < 0) return 2; - return 1; - } - ); + event.target.chooseControlList("问卦", "将" + get.translation(event.card) + "置于牌堆顶", "将" + get.translation(event.card) + "置于牌堆底", event.target == player, function () { + if (get.attitude(event.target, player) < 0) return 2; + return 1; + }); } else { event.finish(); } @@ -5840,34 +5492,19 @@ game.import("character", function () { content: function () { "step 0"; if (player.storage.fumian_choice == "draw") { - player.chooseControlList( - get.prompt("fumian"), - "摸牌阶段多摸一张牌", - "使用红色牌可以多选择两个目标(限一次)", - function (event, player) { - if (player.hp == 1 || player.countCards("h") <= 1) return 0; - return 1; - } - ); + player.chooseControlList(get.prompt("fumian"), "摸牌阶段多摸一张牌", "使用红色牌可以多选择两个目标(限一次)", function (event, player) { + if (player.hp == 1 || player.countCards("h") <= 1) return 0; + return 1; + }); } else if (player.storage.fumian_choice == "red") { - player.chooseControlList( - get.prompt("fumian"), - "摸牌阶段多摸两张牌", - "使用红色牌可以多选择一个目标(限一次)", - function (event, player) { - return 0; - } - ); + player.chooseControlList(get.prompt("fumian"), "摸牌阶段多摸两张牌", "使用红色牌可以多选择一个目标(限一次)", function (event, player) { + return 0; + }); } else { - player.chooseControlList( - get.prompt("fumian"), - "摸牌阶段多摸一张牌", - "使用红色牌可以多选择一个目标(限一次)", - function (event, player) { - if (player.hp == 1 || player.countCards("h") < player.hp) return 0; - return 1; - } - ); + player.chooseControlList(get.prompt("fumian"), "摸牌阶段多摸一张牌", "使用红色牌可以多选择一个目标(限一次)", function (event, player) { + if (player.hp == 1 || player.countCards("h") < player.hp) return 0; + return 1; + }); } "step 1"; if (player.storage.fumian_choice == "draw") { @@ -5934,10 +5571,7 @@ game.import("character", function () { if (event.targets && !info.multitarget) { if ( game.hasPlayer(function (current) { - return ( - lib.filter.targetEnabled2(event.card, player, current) && - !event.targets.includes(current) - ); + return lib.filter.targetEnabled2(event.card, player, current) && !event.targets.includes(current); }) ) { return true; @@ -5955,15 +5589,11 @@ game.import("character", function () { } prompt2 += "名" + get.translation(trigger.card) + "的目标"; player - .chooseTarget( - [1, player.storage.fumian_red], - get.prompt("fumian"), - function (card, player, target) { - var player = _status.event.player; - if (_status.event.targets.includes(target)) return false; - return lib.filter.targetEnabled2(_status.event.card, player, target); - } - ) + .chooseTarget([1, player.storage.fumian_red], get.prompt("fumian"), function (card, player, target) { + var player = _status.event.player; + if (_status.event.targets.includes(target)) return false; + return lib.filter.targetEnabled2(_status.event.card, player, target); + }) .set("prompt2", prompt2) .set("ai", function (target) { var trigger = _status.event.getTrigger(); @@ -6042,19 +5672,17 @@ game.import("character", function () { ) event._result = { bool: false }; else - player - .chooseTarget(filterTarget, "弃置一名其他角色的一张牌或摸一张牌") - .set("ai", function (target) { - var att = get.attitude(player, target); - if (att >= 0) return 0; - if ( - target.countCards("he", function (card) { - return get.value(card) > 5; - }) - ) - return -att; - return 0; - }); + player.chooseTarget(filterTarget, "弃置一名其他角色的一张牌或摸一张牌").set("ai", function (target) { + var att = get.attitude(player, target); + if (att >= 0) return 0; + if ( + target.countCards("he", function (card) { + return get.value(card) > 5; + }) + ) + return -att; + return 0; + }); } else { event.goto(5); } @@ -6100,14 +5728,9 @@ game.import("character", function () { }); } else { event.type = 1; - player.chooseControlList( - get.prompt("caishi"), - "令自己的手牌上限+1", - "回复1点体力,然后本回合你的牌不能对自己使用", - function () { - return 1; - } - ); + player.chooseControlList(get.prompt("caishi"), "令自己的手牌上限+1", "回复1点体力,然后本回合你的牌不能对自己使用", function () { + return 1; + }); } "step 1"; if (event.type) { @@ -6262,9 +5885,7 @@ game.import("character", function () { "step 1"; if (result.bool) { trigger.player.addSkill("xinsidi2"); - trigger.player.markAuto("xinsidi2", [ - get.color(result.cards[0], result.cards[0].original == "h" ? player : false), - ]); + trigger.player.markAuto("xinsidi2", [get.color(result.cards[0], result.cards[0].original == "h" ? player : false)]); trigger.player.storage.xinsidi4 = player; trigger.player.syncStorage("xinsidi2"); } @@ -6319,40 +5940,21 @@ game.import("character", function () { }, taoluan: { hiddenCard: function (player, name) { - return ( - !player.getStorage("taoluan").includes(name) && - player.countCards("hes") > 0 && - !player.hasSkill("taoluan3") && - lib.inpile.includes(name) - ); + return !player.getStorage("taoluan").includes(name) && player.countCards("hes") > 0 && !player.hasSkill("taoluan3") && lib.inpile.includes(name); }, audio: 2, enable: "chooseToUse", filter: function (event, player) { return ( !player.hasSkill("taoluan3") && - player.hasCard((card) => - lib.inpile.some((name) => { + player.hasCard(card => + lib.inpile.some(name => { if (player.getStorage("taoluan").includes(name)) return false; if (get.type(name) != "basic" && get.type(name) != "trick") return false; - if ( - event.filterCard( - { name: name, isCard: true, cards: [card] }, - player, - event - ) - ) - return true; + if (event.filterCard({ name: name, isCard: true, cards: [card] }, player, event)) return true; if (name == "sha") { for (var nature of lib.inpile_nature) { - if ( - event.filterCard( - { name: name, nature: nature, isCard: true, cards: [card] }, - player, - event - ) - ) - return true; + if (event.filterCard({ name: name, nature: nature, isCard: true, cards: [card] }, player, event)) return true; } } return false; @@ -6376,14 +5978,12 @@ game.import("character", function () { return ui.create.dialog("滔乱", [list, "vcard"]); }, filter: function (button, player) { - return _status.event - .getParent() - .filterCard({ name: button.link[2] }, player, _status.event.getParent()); + return _status.event.getParent().filterCard({ name: button.link[2] }, player, _status.event.getParent()); }, check: function (button) { var player = _status.event.player; var card = { name: button.link[2], nature: button.link[3] }; - if (player.countCards("hes", (cardx) => cardx.name == card.name)) return 0; + if (player.countCards("hes", cardx => cardx.name == card.name)) return 0; return _status.event.getParent().type == "phase" ? player.getUseValue(card) : 1; }, backup: function (links, player) { @@ -6402,12 +6002,7 @@ game.import("character", function () { }; }, prompt: function (links, player) { - return ( - "将一张牌当做" + - (get.translation(links[0][3]) || "") + - get.translation(links[0][2]) + - "使用" - ); + return "将一张牌当做" + (get.translation(links[0][3]) || "") + get.translation(links[0][2]) + "使用"; }, }, ai: { @@ -6418,14 +6013,9 @@ game.import("character", function () { if (!player.countCards("hes") || player.hasSkill("taoluan3")) return false; if (tag == "respondSha" || tag == "respondShan") { if (arg == "respond") return false; - return !player - .getStorage("taoluan") - .includes(tag == "respondSha" ? "sha" : "shan"); + return !player.getStorage("taoluan").includes(tag == "respondSha" ? "sha" : "shan"); } - return ( - !player.getStorage("taoluan").includes("tao") || - (!player.getStorage("taoluan").includes("jiu") && arg == player) - ); + return !player.getStorage("taoluan").includes("tao") || (!player.getStorage("taoluan").includes("jiu") && arg == player); }, order: 4, result: { @@ -6436,11 +6026,7 @@ game.import("character", function () { if (players[i].ai.shown == 0) { allshown = false; } - if ( - players[i] != player && - players[i].countCards("h") && - get.attitude(player, players[i]) > 0 - ) { + if (players[i] != player && players[i].countCards("h") && get.attitude(player, players[i]) > 0) { return 1; } } @@ -6456,7 +6042,7 @@ game.import("character", function () { charlotte: true, trigger: { player: "useCardAfter" }, filter: function (event, player) { - if (!game.hasPlayer((current) => current != player)) return false; + if (!game.hasPlayer(current => current != player)) return false; return event.skill == "taoluan_backup"; }, forced: true, @@ -6487,17 +6073,9 @@ game.import("character", function () { player.line(target, "green"); var type = get.type(trigger.card, "trick"); target - .chooseCard( - '滔乱

    交给' + - get.translation(player) + - "一张不为" + - get.translation(type) + - "牌的牌,或令其失去1点体力且滔乱无效直到回合结束", - "he", - function (card, player, target) { - return get.type(card, "trick") != _status.event.cardType; - } - ) + .chooseCard('滔乱

    交给' + get.translation(player) + "一张不为" + get.translation(type) + "牌的牌,或令其失去1点体力且滔乱无效直到回合结束", "he", function (card, player, target) { + return get.type(card, "trick") != _status.event.cardType; + }) .set("cardType", type) .set("ai", function (card) { if (_status.event.att) { @@ -6571,14 +6149,9 @@ game.import("character", function () { return !current.isLinked(); }); player - .chooseTarget( - get.prompt("jishe"), - "横置至多" + get.cnNumber(Math.min(num, player.hp)) + "名未横置的角色", - [1, Math.min(num, player.hp)], - function (card, player, target) { - return !target.isLinked(); - } - ) + .chooseTarget(get.prompt("jishe"), "横置至多" + get.cnNumber(Math.min(num, player.hp)) + "名未横置的角色", [1, Math.min(num, player.hp)], function (card, player, target) { + return !target.isLinked(); + }) .set("ai", function (target) { return -get.attitude(_status.event.player, target); }); @@ -6612,7 +6185,7 @@ game.import("character", function () { trigger.num++; }, ai: { - halfneg: true + halfneg: true, }, }, huisheng: { @@ -6623,8 +6196,7 @@ game.import("character", function () { filter: function (event, player) { if (!player.countCards("he")) return false; if (!event.source || event.source == player || !event.source.isIn()) return false; - if (player.storage.huisheng && player.storage.huisheng.includes(event.source)) - return false; + if (player.storage.huisheng && player.storage.huisheng.includes(event.source)) return false; return true; }, init: function (player) { @@ -6650,11 +6222,7 @@ game.import("character", function () { } } player - .chooseCard( - "he", - [1, player.countCards("he")], - get.prompt2("huisheng", trigger.source) - ) + .chooseCard("he", [1, player.countCards("he")], get.prompt2("huisheng", trigger.source)) .set("ai", function (card) { if (_status.event.att) { return 10 - get.value(card); @@ -6716,8 +6284,8 @@ game.import("character", function () { if (mode == "versus" && _status.mode != "four") return false; if (mode == "identity" && _status.mode == "purple") return false; }, - getZhu: (player) => { - if (get.mode == "doudizhu") return game.findPlayer((i) => i.identity == "zhu"); + getZhu: player => { + if (get.mode == "doudizhu") return game.findPlayer(i => i.identity == "zhu"); return get.zhu(player); }, trigger: { player: "phaseJieshuBegin" }, @@ -6805,8 +6373,7 @@ game.import("character", function () { return false; }, content: function () { - player.chooseDrawRecover(get.prompt("guizao"), "摸一张牌或回复1点体力").logSkill = - "guizao"; + player.chooseDrawRecover(get.prompt("guizao"), "摸一张牌或回复1点体力").logSkill = "guizao"; }, }, jiyu: { @@ -6824,10 +6391,7 @@ game.import("character", function () { return false; }, filterTarget: function (card, player, target) { - return ( - target.countCards("h") && - (!player.storage.jiyu || !player.storage.jiyu.includes(target)) - ); + return target.countCards("h") && (!player.storage.jiyu || !player.storage.jiyu.includes(target)); }, content: function () { "step 0"; @@ -6861,10 +6425,7 @@ game.import("character", function () { return -10 - get.value(card); } } - if ( - _status.event.getParent().player.storage.jiyu2 && - _status.event.getParent().player.storage.jiyu2.includes(get.suit(card)) - ) { + if (_status.event.getParent().player.storage.jiyu2 && _status.event.getParent().player.storage.jiyu2.includes(get.suit(card))) { return -3 - get.value(card); } return -get.value(card); @@ -6892,12 +6453,10 @@ game.import("character", function () { }, mod: { cardEnabled: function (card, player) { - if (player.storage.jiyu2 && player.storage.jiyu2.includes(get.suit(card))) - return false; + if (player.storage.jiyu2 && player.storage.jiyu2.includes(get.suit(card))) return false; }, cardSavable: function (card, player) { - if (player.storage.jiyu2 && player.storage.jiyu2.includes(get.suit(card))) - return false; + if (player.storage.jiyu2 && player.storage.jiyu2.includes(get.suit(card))) return false; }, }, }, @@ -6912,8 +6471,7 @@ game.import("character", function () { jiaozhao: { mod: { targetEnabled: function (card, player, target) { - if (card.storage && card.storage.jiaozhao && card.storage.jiaozhao == target) - return false; + if (card.storage && card.storage.jiaozhao && card.storage.jiaozhao == target) return false; }, }, enable: "phaseUse", @@ -6940,9 +6498,7 @@ game.import("character", function () { var targets = game.filterPlayer(); targets.remove(player); targets.sort(function (a, b) { - return ( - Math.max(1, get.distance(player, a)) - Math.max(1, get.distance(player, b)) - ); + return Math.max(1, get.distance(player, a)) - Math.max(1, get.distance(player, b)); }); var distance = Math.max(1, get.distance(player, targets[0])); for (var i = 1; i < targets.length; i++) { @@ -6976,8 +6532,7 @@ game.import("character", function () { list.push(["基本", "", "sha"]); for (var j of lib.inpile_nature) list.push(["基本", "", "sha", j]); } else if (get.type(name) == "basic") list.push(["基本", "", name]); - else if (player.countMark("xindanxin") > 0 && get.type(name) == "trick") - list.push(["锦囊", "", name]); + else if (player.countMark("xindanxin") > 0 && get.type(name) == "trick") list.push(["锦囊", "", name]); } event.target .chooseButton(["矫诏", [list, "vcard"]], true) @@ -7037,17 +6592,7 @@ game.import("character", function () { filter: function (event, player) { if (!player.storage.jiaozhao || !lib.skill.jiaozhao2.viewAs) return false; var name = lib.skill.jiaozhao2.viewAs.name; - return ( - player.getCards("h").includes(player.storage.jiaozhao) && - player.storage.jiaozhao.hasGaintag("jiaozhao") && - game.checkMod( - player.storage.jiaozhao, - player, - "unchanged", - "cardEnabled2", - player - ) !== false - ); + return player.getCards("h").includes(player.storage.jiaozhao) && player.storage.jiaozhao.hasGaintag("jiaozhao") && game.checkMod(player.storage.jiaozhao, player, "unchanged", "cardEnabled2", player) !== false; }, filterCard: function (card, player) { return card == player.storage.jiaozhao; @@ -7073,10 +6618,7 @@ game.import("character", function () { audio: "jiaozhao", enable: "phaseUse", filter: function (event, player) { - return ( - (player.getStat("skill").jiaozhao || 0) + (player.getStat("skill").jiaozhao3 || 0) < - player.countMark("xindanxin") - 1 && player.countCards("h") > 0 - ); + return (player.getStat("skill").jiaozhao || 0) + (player.getStat("skill").jiaozhao3 || 0) < player.countMark("xindanxin") - 1 && player.countCards("h") > 0; }, chooseButton: { dialog: function (event, player) { @@ -7094,8 +6636,7 @@ game.import("character", function () { if (i == "sha") { for (var j of lib.inpile_nature) { card.nature = j; - if (event.filterCard(card, player, event)) - list.push([type, "", i, j]); + if (event.filterCard(card, player, event)) list.push([type, "", i, j]); } } } @@ -7133,12 +6674,7 @@ game.import("character", function () { }; }, prompt: function (links, player) { - return ( - "将一张牌当做" + - (get.translation(links[0][3]) || "") + - get.translation(links[0][2]) + - "使用" - ); + return "将一张牌当做" + (get.translation(links[0][3]) || "") + get.translation(links[0][2]) + "使用"; }, }, ai: { @@ -7166,8 +6702,7 @@ game.import("character", function () { effect: { target: (card, player, target) => { if (!get.tag(card, "damage")) return; - if (target.hp + target.hujia < 2 || player.hasSkillTag("jueqing", false, target)) - return 1.8; + if (target.hp + target.hujia < 2 || player.hasSkillTag("jueqing", false, target)) return 1.8; if (target.countMark("xindanxin") > 1) return [1, 1]; return [1, 0.8 * target.hp - 0.5]; }, @@ -7187,11 +6722,9 @@ game.import("character", function () { var list = ["draw_card", "更改描述"]; var prompt; if (player.countMark("xindanxin") == 0) { - prompt = - '摸一张牌或更改矫诏的描述

    更改描述:将“选择距离最近的一名其他角色,该角色”改为“你”'; + prompt = '摸一张牌或更改矫诏的描述

    更改描述:将“选择距离最近的一名其他角色,该角色”改为“你”'; } else { - prompt = - '摸一张牌或更改矫诏的描述

    更改描述:将“基本牌”改为“基本牌或普通锦囊牌”'; + prompt = '摸一张牌或更改矫诏的描述

    更改描述:将“基本牌”改为“基本牌或普通锦囊牌”'; } player .chooseControl(list, function () { @@ -7274,10 +6807,7 @@ game.import("character", function () { }, content: function () { "step 0"; - target.chooseToUse( - { name: "sha" }, - "止戈:使用一张杀,或将其装备区里的一张牌交给" + get.translation(player) - ); + target.chooseToUse({ name: "sha" }, "止戈:使用一张杀,或将其装备区里的一张牌交给" + get.translation(player)); "step 1"; if (!result.bool && target.countCards("e")) { target.chooseCard("e", true, "将其装备区里的一张牌交给" + get.translation(player)); @@ -7313,19 +6843,12 @@ game.import("character", function () { }, content: function () { "step 0"; - target - .chooseCard( - "he", - [1, 3], - "匡弼:将至多三张牌置于" + get.translation(player) + "的武将牌上", - true - ) - .set("ai", function (card) { - if (get.attitude(_status.event.player, _status.event.getParent().player) > 0) { - return 7 - get.value(card); - } - return -get.value(card); - }); + target.chooseCard("he", [1, 3], "匡弼:将至多三张牌置于" + get.translation(player) + "的武将牌上", true).set("ai", function (card) { + if (get.attitude(_status.event.player, _status.event.getParent().player) > 0) { + return 7 - get.value(card); + } + return -get.value(card); + }); "step 1"; if (result.bool) { player.addToExpansion(result.cards, target, "give").gaintag.add("kuangbi"); @@ -7452,10 +6975,7 @@ game.import("character", function () { return Math.random() < 0.5 ? "选项一" : "选项二"; }) .set("prompt", "督粮") - .set("choiceList", [ - "令" + name + "观看牌堆顶的两张牌,然后获得其中的基本牌", - "令" + name + "于下个摸牌阶段额外摸一张牌", - ]); + .set("choiceList", ["令" + name + "观看牌堆顶的两张牌,然后获得其中的基本牌", "令" + name + "于下个摸牌阶段额外摸一张牌"]); "step 2"; if (result.control == "选项一") { var cards = get.cards(2); @@ -7544,11 +7064,7 @@ game.import("character", function () { event.target = target; var res = get.damageEffect(target, player, target, "fire"); target - .chooseToDiscard( - "he", - "弃置至少" + get.cnNumber(event.num) + "张牌或受到2点火焰伤害", - [num, Infinity] - ) + .chooseToDiscard("he", "弃置至少" + get.cnNumber(event.num) + "张牌或受到2点火焰伤害", [num, Infinity]) .set("ai", function (card) { if (ui.selected.cards.length >= _status.event.getParent().num) return -1; if (_status.event.player.hasSkillTag("nofire")) return -1; @@ -7628,13 +7144,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("xinjuece"), - "对一名没有手牌的角色造成1点伤害", - function (card, player, target) { - return target.countCards("h") == 0; - } - ) + .chooseTarget(get.prompt("xinjuece"), "对一名没有手牌的角色造成1点伤害", function (card, player, target) { + return target.countCards("h") == 0; + }) .set("ai", function (target) { var player = _status.event.player; return get.damageEffect(target, player, player); @@ -7671,17 +7183,10 @@ game.import("character", function () { "step 0"; player.showCards(cards); "step 1"; - target - .chooseToDiscard("he", true) - .set("prompt", "请弃置一张锦囊牌,或依次弃置两张非锦囊牌。"); + target.chooseToDiscard("he", true).set("prompt", "请弃置一张锦囊牌,或依次弃置两张非锦囊牌。"); "step 2"; if ( - (!result.cards || - get.type( - result.cards[0], - "trick", - result.cards[0].original == "h" ? target : false - ) != "trick") && + (!result.cards || get.type(result.cards[0], "trick", result.cards[0].original == "h" ? target : false) != "trick") && target.countCards("he", function (card) { return get.type(card, "trick") != "trick"; }) @@ -7735,30 +7240,21 @@ game.import("character", function () { if (trigger.target.countCards("h") < num) { event.directfalse = true; } else { - trigger.target - .chooseToDiscard( - num, - "弃置" + - get.cnNumber(num) + - "张手牌,或令" + - get.translation(trigger.card) + - "的伤害+1" - ) - .set("ai", function (card) { - var player = _status.event.player; - if (player.hp == 1) { - if (get.type(card) == "basic") { - return 8 - get.value(card); - } else { - return 10 - get.value(card); - } - } else { - if (num > 2) { - return 0; - } + trigger.target.chooseToDiscard(num, "弃置" + get.cnNumber(num) + "张手牌,或令" + get.translation(trigger.card) + "的伤害+1").set("ai", function (card) { + var player = _status.event.player; + if (player.hp == 1) { + if (get.type(card) == "basic") { return 8 - get.value(card); + } else { + return 10 - get.value(card); } - }); + } else { + if (num > 2) { + return 0; + } + return 8 - get.value(card); + } + }); } "step 1"; if (!event.directfalse && result.bool) { @@ -7813,11 +7309,7 @@ game.import("character", function () { }, charlotte: true, filter: function (event, player) { - return ( - player.storage.reqingxi2 && - event.card && - player.storage.reqingxi2.includes(event.card) - ); + return player.storage.reqingxi2 && event.card && player.storage.reqingxi2.includes(event.card); }, silent: true, forced: true, @@ -7843,23 +7335,21 @@ game.import("character", function () { if (trigger.player.countCards("h") < num) { event.directfalse = true; } else { - trigger.player - .chooseToDiscard(num, "弃置" + get.cnNumber(num) + "张手牌,或令杀的伤害+1") - .set("ai", function (card) { - var player = _status.event.player; - if (player.hp == 1) { - if (get.type(card) == "basic") { - return 8 - get.value(card); - } else { - return 10 - get.value(card); - } - } else { - if (num > 2) { - return 0; - } + trigger.player.chooseToDiscard(num, "弃置" + get.cnNumber(num) + "张手牌,或令杀的伤害+1").set("ai", function (card) { + var player = _status.event.player; + if (player.hp == 1) { + if (get.type(card) == "basic") { return 8 - get.value(card); + } else { + return 10 - get.value(card); } - }); + } else { + if (num > 2) { + return 0; + } + return 8 - get.value(card); + } + }); } "step 1"; if (!event.directfalse && result.bool) { @@ -7897,26 +7387,21 @@ game.import("character", function () { player.discard(result.cards); var target = result.targets[0]; event.target = target; - target - .chooseCard( - "将一张牌置于" + get.translation(player) + "的武将牌上,或令其弃置你的一张牌", - "he" - ) - .set("ai", function (card) { - if (card.name == "du") return 20; - var player = _status.event.player; - if (get.attitude(player, _status.event.getParent().player) > 0) { - return 8 - get.value(card); - } - var nh = player.countCards("h"); - if (nh <= 2) { - return 6 - get.value(card); - } - if (nh <= 3) { - return 2 - get.value(card); - } - return 0; - }); + target.chooseCard("将一张牌置于" + get.translation(player) + "的武将牌上,或令其弃置你的一张牌", "he").set("ai", function (card) { + if (card.name == "du") return 20; + var player = _status.event.player; + if (get.attitude(player, _status.event.getParent().player) > 0) { + return 8 - get.value(card); + } + var nh = player.countCards("h"); + if (nh <= 2) { + return 6 - get.value(card); + } + if (nh <= 3) { + return 2 - get.value(card); + } + return 0; + }); } else { event.finish(); } @@ -7946,10 +7431,7 @@ game.import("character", function () { return get.color(card) == "black"; }, viewAsFilter: function (player) { - return ( - player.getExpansions("jieyue").length && - player.countCards("hs", { color: "black" }) > 0 - ); + return player.getExpansions("jieyue").length && player.countCards("hs", { color: "black" }) > 0; }, position: "hs", viewAs: { name: "wuxie" }, @@ -7967,21 +7449,14 @@ game.import("character", function () { position: "hs", viewAs: { name: "shan" }, viewAsFilter: function (player) { - return ( - player.getExpansions("jieyue").length && - player.countCards("hs", { color: "red" }) > 0 - ); + return player.getExpansions("jieyue").length && player.countCards("hs", { color: "red" }) > 0; }, prompt: "将一张红色手牌当闪使用或打出", check: () => 1, ai: { respondShan: true, skillTagFilter: function (player) { - if ( - !player.getExpansions("jieyue").length || - !player.countCards("hs", { color: "red" }) - ) - return false; + if (!player.getExpansions("jieyue").length || !player.countCards("hs", { color: "red" })) return false; }, effect: { target: function (card, player, target, current) { @@ -8021,12 +7496,7 @@ game.import("character", function () { firstDo: true, forced: true, filter: function (event, player) { - return ( - event.card.name == "sha" && - !event.skill && - event.cards.length == 1 && - event.cards[0].name == "jiu" - ); + return event.card.name == "sha" && !event.skill && event.cards.length == 1 && event.cards[0].name == "jiu"; }, content: function () {}, }, @@ -8055,10 +7525,7 @@ game.import("character", function () { effect: { player: function (card, player, target, current, isLink) { if (isLink || !player.storage.xinxianzhen) return; - if ( - target != player.storage.xinxianzhen && - ["sha", "guohe", "shunshou", "huogong", "juedou"].includes(card.name) - ) { + if (target != player.storage.xinxianzhen && ["sha", "guohe", "shunshou", "huogong", "juedou"].includes(card.name)) { if (get.effect(player.storage.xinxianzhen, card, player, player) > 0) { return [1, 2]; } @@ -8068,14 +7535,7 @@ game.import("character", function () { }, trigger: { player: "useCard2" }, filter: function (event, player) { - return ( - player.storage.xinxianzhen && - player.storage.xinxianzhen.isIn() && - (event.card.name == "sha" || get.type(event.card) == "trick") && - event.targets && - event.targets.length == 1 && - !event.targets.includes(player.storage.xinxianzhen) - ); + return player.storage.xinxianzhen && player.storage.xinxianzhen.isIn() && (event.card.name == "sha" || get.type(event.card) == "trick") && event.targets && event.targets.length == 1 && !event.targets.includes(player.storage.xinxianzhen); }, check: function (event, player) { return get.effect(player.storage.xinxianzhen, event.card, player, player) > 0; @@ -8083,12 +7543,7 @@ game.import("character", function () { logTarget: function (event, player) { return player.storage.xinxianzhen; }, - prompt2: (event, player) => - "令" + - get.translation(player.storage.decadexianzhen2) + - "也成为" + - get.translation(event.card) + - "的目标", + prompt2: (event, player) => "令" + get.translation(player.storage.decadexianzhen2) + "也成为" + get.translation(event.card) + "的目标", content: function () { var target = player.storage.xinxianzhen; trigger.targets.push(target); @@ -8141,11 +7596,7 @@ game.import("character", function () { return 1; } for (var i = 0; i < cards.length; i++) { - if ( - cards[i].name != "sha" && - get.number(cards[i]) > 11 && - get.value(cards[i]) < 7 - ) { + if (cards[i].name != "sha" && get.number(cards[i]) > 11 && get.value(cards[i]) < 7) { return 9; } } @@ -8239,16 +7690,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("lihuo"), - "为" + get.translation(trigger.card) + "增加一个目标", - function (card, player, target) { - return ( - !_status.event.sourcex.includes(target) && - player.canUse(_status.event.card, target) - ); - } - ) + .chooseTarget(get.prompt("lihuo"), "为" + get.translation(trigger.card) + "增加一个目标", function (card, player, target) { + return !_status.event.sourcex.includes(target) && player.canUse(_status.event.card, target); + }) .set("sourcex", trigger.targets) .set("card", trigger.card) .set("ai", function (target) { @@ -8286,11 +7730,7 @@ game.import("character", function () { audio: 2, audioname: ["xin_chengpu"], filter: function (event, player) { - return ( - player.countCards("h") > 0 && - (_status.connectMode || player.countCards("h", "sha") > 0) && - !player.getExpansions("chunlao").length - ); + return player.countCards("h") > 0 && (_status.connectMode || player.countCards("h", "sha") > 0) && !player.getExpansions("chunlao").length; }, intro: { content: "expansion", @@ -8315,12 +7755,7 @@ game.import("character", function () { effect: { player: function (card, player, target) { if (_status.currentPhase != player) return; - if ( - card.name == "sha" && - !player.needsToDiscard() && - !player.getExpansions("chunlao").length && - target.hp > 1 - ) { + if (card.name == "sha" && !player.needsToDiscard() && !player.getExpansions("chunlao").length && target.hp > 1) { return "zeroplayertarget"; } }, @@ -8332,12 +7767,7 @@ game.import("character", function () { chunlao2: { enable: "chooseToUse", filter: function (event, player) { - return ( - event.type == "dying" && - event.dying && - event.dying.hp <= 0 && - player.getExpansions("chunlao").length > 0 - ); + return event.type == "dying" && event.dying && event.dying.hp <= 0 && player.getExpansions("chunlao").length > 0; }, filterTarget: function (card, player, target) { return target == _status.event.dying; @@ -8348,11 +7778,7 @@ game.import("character", function () { selectTarget: -1, content: function () { "step 0"; - player.chooseCardButton( - get.translation("chunlao"), - player.getExpansions("chunlao"), - true - ); + player.chooseCardButton(get.translation("chunlao"), player.getExpansions("chunlao"), true); "step 1"; if (result.bool) { player.logSkill("chunlao", target); @@ -8418,15 +7844,7 @@ game.import("character", function () { if (event.type != "discard" || event.getlx === false) return; var evt = event.getl(player); for (var i = 0; i < evt.cards2.length; i++) { - if ( - get.color(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false) == - "black" && - get.type(evt.cards2[i]) == "basic" && - get.position( - evt.cards2[i], - evt.hs.includes(evt.cards2[i]) ? evt.player : false - ) == "d" - ) { + if (get.color(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false) == "black" && get.type(evt.cards2[i]) == "basic" && get.position(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false) == "d") { return true; } } @@ -8439,13 +7857,7 @@ game.import("character", function () { var cards = []; var evt = trigger.getl(player); for (var i = 0; i < evt.cards2.length; i++) { - if ( - get.color(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false) == - "black" && - get.type(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false) == - "basic" && - get.position(evt.cards2[i]) == "d" - ) { + if (get.color(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false) == "black" && get.type(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false) == "basic" && get.position(evt.cards2[i]) == "d") { cards.push(evt.cards2[i]); } } @@ -8457,27 +7869,13 @@ game.import("character", function () { "step 1"; if (event.cards.length) { player - .chooseTarget( - get.prompt("shenduan"), - "将" + - get.translation(event.cards) + - (event.cards.length > 1 ? "中的一张牌" : "") + - "当做【兵粮寸断】对一名其他角色使用", - function (card, player, target) { - var cs = _status.event.cards; - for (var i = 0; i < cs.length; i++) { - if ( - player.canUse( - { name: "bingliang", cards: [cs[i]] }, - target, - false - ) - ) - return true; - } - return false; + .chooseTarget(get.prompt("shenduan"), "将" + get.translation(event.cards) + (event.cards.length > 1 ? "中的一张牌" : "") + "当做【兵粮寸断】对一名其他角色使用", function (card, player, target) { + var cs = _status.event.cards; + for (var i = 0; i < cs.length; i++) { + if (player.canUse({ name: "bingliang", cards: [cs[i]] }, target, false)) return true; } - ) + return false; + }) .set("ai", function (target) { var player = _status.event.player; return get.effect(target, { name: "bingliang" }, player, player); @@ -8496,11 +7894,7 @@ game.import("character", function () { player .chooseCardButton("选择一张牌当作兵断寸断使用", event.cards, true) .set("filterButton", function (button) { - return player.canUse( - { name: "bingliang", cards: [button.link] }, - _status.event.target, - false - ); + return player.canUse({ name: "bingliang", cards: [button.link] }, _status.event.target, false); }) .set("target", event.current); } @@ -8517,12 +7911,7 @@ game.import("character", function () { if (card) { event.cards.remove(card); player.line(event.current); - player.useCard( - { name: "bingliang" }, - event.current, - [card], - "shenduan" - ).animate = false; + player.useCard({ name: "bingliang" }, event.current, [card], "shenduan").animate = false; event.goto(1); } }, @@ -8537,13 +7926,7 @@ game.import("character", function () { if (event.type != "discard" || event.getlx === false) return; var evt = event.getl(player); for (var i = 0; i < evt.cards2.length; i++) { - if ( - get.color(evt.cards2[i], player) == "black" && - ["basic", "equip"].includes( - get.type(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false) - ) && - get.position(evt.cards2[i]) == "d" - ) { + if (get.color(evt.cards2[i], player) == "black" && ["basic", "equip"].includes(get.type(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false)) && get.position(evt.cards2[i]) == "d") { return true; } } @@ -8555,13 +7938,7 @@ game.import("character", function () { var cards = []; var evt = trigger.getl(player); for (var i = 0; i < evt.cards2.length; i++) { - if ( - get.color(evt.cards2[i], player) == "black" && - ["basic", "equip"].includes( - get.type(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false) - ) && - get.position(evt.cards2[i]) == "d" - ) { + if (get.color(evt.cards2[i], player) == "black" && ["basic", "equip"].includes(get.type(evt.cards2[i], evt.hs.includes(evt.cards2[i]) ? evt.player : false)) && get.position(evt.cards2[i]) == "d") { cards.push(evt.cards2[i]); } } @@ -8573,27 +7950,13 @@ game.import("character", function () { "step 1"; if (event.cards.length) { player - .chooseTarget( - get.prompt("shenduan"), - "将" + - get.translation(event.cards) + - (event.cards.length > 1 ? "中的一张牌" : "") + - "当做【兵粮寸断】对一名其他角色使用", - function (card, player, target) { - var cs = _status.event.cards; - for (var i = 0; i < cs.length; i++) { - if ( - player.canUse( - { name: "bingliang", cards: [cs[i]] }, - target, - false - ) - ) - return true; - } - return false; + .chooseTarget(get.prompt("shenduan"), "将" + get.translation(event.cards) + (event.cards.length > 1 ? "中的一张牌" : "") + "当做【兵粮寸断】对一名其他角色使用", function (card, player, target) { + var cs = _status.event.cards; + for (var i = 0; i < cs.length; i++) { + if (player.canUse({ name: "bingliang", cards: [cs[i]] }, target, false)) return true; } - ) + return false; + }) .set("ai", function (target) { var player = _status.event.player; return get.effect(target, { name: "bingliang" }, player, player); @@ -8612,11 +7975,7 @@ game.import("character", function () { player .chooseCardButton("选择一张牌当作兵断寸断使用", event.cards, true) .set("filterButton", function (button) { - return player.canUse( - { name: "bingliang", cards: [button.link] }, - _status.event.target, - false - ); + return player.canUse({ name: "bingliang", cards: [button.link] }, _status.event.target, false); }) .set("target", event.current); } @@ -8633,12 +7992,7 @@ game.import("character", function () { if (card) { event.cards.remove(card); player.line(event.current); - player.useCard( - { name: "bingliang" }, - event.current, - [card], - "reshenduan" - ).animate = false; + player.useCard({ name: "bingliang" }, event.current, [card], "reshenduan").animate = false; event.goto(1); } }, @@ -8655,11 +8009,7 @@ game.import("character", function () { var att = get.attitude(player, trigger.player); var nh = trigger.player.countCards("h"); var eff = get.effect(trigger.player, { name: "sha", isCard: true }, player, player); - if ( - player.inRange(trigger.player) || - !player.canUse({ name: "sha", isCard: true }, trigger.player, false) - ) - eff = 0; + if (player.inRange(trigger.player) || !player.canUse({ name: "sha", isCard: true }, trigger.player, false)) eff = 0; player .discardPlayerCard(get.prompt("yonglve", trigger.player), trigger.player, "j") .set("ai", function (button) { @@ -8690,10 +8040,7 @@ game.import("character", function () { .set("logSkill", ["reyonglve", trigger.player]); "step 1"; if (result.bool) { - if ( - !player.inRange(trigger.player) && - player.canUse({ name: "sha", isCard: true }, trigger.player, false) - ) { + if (!player.inRange(trigger.player) && player.canUse({ name: "sha", isCard: true }, trigger.player, false)) { player.useCard({ name: "sha", isCard: true }, trigger.player); } else player.draw(); } @@ -8704,11 +8051,7 @@ game.import("character", function () { direct: true, audio: 2, filter: function (event, player) { - return ( - event.player != player && - event.player.countCards("j") > 0 && - player.inRange(event.player) - ); + return event.player != player && event.player.countCards("j") > 0 && player.inRange(event.player); }, content: function () { "step 0"; @@ -8855,8 +8198,7 @@ game.import("character", function () { if (event.player.hasSkill("paoxiao")) return false; var players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { - if (event.player.canUse("sha", players[i]) && get.attitude(player, players[i]) > 0) - break; + if (event.player.canUse("sha", players[i]) && get.attitude(player, players[i]) > 0) break; } if (i == players.length) return false; var nh = event.player.countCards("h"); @@ -8920,12 +8262,9 @@ game.import("character", function () { var cards = trigger.responded.cards; event.cards = cards; player - .chooseTarget( - "忠勇:将" + get.translation(trigger.responded.cards) + "交给一名角色", - function (card, player, target) { - return target != _status.event.source; - } - ) + .chooseTarget("忠勇:将" + get.translation(trigger.responded.cards) + "交给一名角色", function (card, player, target) { + return target != _status.event.source; + }) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); if (target.countCards("h", "shan") && target.countCards("h") >= 2) { @@ -8945,14 +8284,7 @@ game.import("character", function () { event.finish(); } "step 2"; - player - .chooseToUse( - "是否对" + get.translation(trigger.target) + "再使用一张杀?", - { name: "sha" }, - trigger.target, - -1 - ) - .set("addCount", false); + player.chooseToUse("是否对" + get.translation(trigger.target) + "再使用一张杀?", { name: "sha" }, trigger.target, -1).set("addCount", false); }, }, xinzhongyong: { @@ -8968,8 +8300,7 @@ game.import("character", function () { event.shan = []; game.countPlayer2(function (current) { current.getHistory("useCard", function (evt) { - if (evt.card.name == "shan" && evt.getParent(3) == trigger) - event.shan.addArray(evt.cards); + if (evt.card.name == "shan" && evt.getParent(3) == trigger) event.shan.addArray(evt.cards); }); }); event.shan.filterInD("d"); @@ -8990,10 +8321,7 @@ game.import("character", function () { if (event.sha.length && event.shan.length) { player .chooseControl() - .set("choiceList", [ - "将" + get.translation(event.sha) + "交给" + get.translation(target), - "将" + get.translation(event.shan) + "交给" + get.translation(target), - ]) + .set("choiceList", ["将" + get.translation(event.sha) + "交给" + get.translation(target), "将" + get.translation(event.shan) + "交给" + get.translation(target)]) .set("ai", function () { return _status.event.choice; }) @@ -9023,11 +8351,7 @@ game.import("character", function () { event.target .chooseToUse("是否使用一张杀?", { name: "sha" }) .set("filterTarget", function (card, player, target) { - return ( - target != _status.event.sourcex && - _status.event.sourcex.inRange(target) && - lib.filter.targetEnabled.apply(this, arguments) - ); + return target != _status.event.sourcex && _status.event.sourcex.inRange(target) && lib.filter.targetEnabled.apply(this, arguments); }) .set("sourcex", player) .set("addCount", false); @@ -9046,19 +8370,16 @@ game.import("character", function () { longyin: { audio: 2, shaRelated: true, - init: (player) => { + init: player => { game.addGlobalSkill("longyin_order"); }, - onremove: (player) => { - if (!game.hasPlayer((current) => current.hasSkill("longyin"), true)) - game.removeGlobalSkill("longyin_order"); + onremove: player => { + if (!game.hasPlayer(current => current.hasSkill("longyin"), true)) game.removeGlobalSkill("longyin_order"); }, trigger: { global: "useCard" }, direct: true, filter: function (event, player) { - return ( - event.card.name == "sha" && player.countCards("he") > 0 && event.player.isPhaseUsing() - ); + return event.card.name == "sha" && player.countCards("he") > 0 && event.player.isPhaseUsing(); }, content: function () { "step 0"; @@ -9067,13 +8388,7 @@ game.import("character", function () { if (get.color(trigger.card) == "red") { go = true; } else if (trigger.addCount === false || !trigger.player.isPhaseUsing()) go = false; - else if ( - !trigger.player.hasSkill("paoxiao") && - !trigger.player.hasSkill("tanlin3") && - !trigger.player.hasSkill("zhaxiang2") && - !trigger.player.hasSkill("fengnu") && - !trigger.player.getEquip("zhuge") - ) { + else if (!trigger.player.hasSkill("paoxiao") && !trigger.player.hasSkill("tanlin3") && !trigger.player.hasSkill("zhaxiang2") && !trigger.player.hasSkill("fengnu") && !trigger.player.getEquip("zhuge")) { var nh = trigger.player.countCards("h"); if (player == trigger.player) { go = player.countCards("h", "sha") > 0; @@ -9100,22 +8415,12 @@ game.import("character", function () { !event.isMine() && !event.isOnline() && player.hasCard(function (card) { - return ( - get.value(card) < 6 && lib.filter.cardDiscardable(card, player, event.name) - ); + return get.value(card) < 6 && lib.filter.cardDiscardable(card, player, event.name); }, "he") ) { game.delayx(); } - var next = player.chooseToDiscard( - get.prompt("longyin"), - "弃置一张牌" + - (get.color(trigger.card) == "red" ? "并摸一张牌" : "") + - ",令" + - get.translation(trigger.player) + - "本次使用的【杀】不计入使用次数", - "he" - ); + var next = player.chooseToDiscard(get.prompt("longyin"), "弃置一张牌" + (get.color(trigger.card) == "red" ? "并摸一张牌" : "") + ",令" + get.translation(trigger.player) + "本次使用的【杀】不计入使用次数", "he"); next.logSkill = ["longyin", trigger.player]; next.set("ai", function (card) { if (_status.event.go) { @@ -9144,10 +8449,8 @@ game.import("character", function () { mod: { aiOrder: (player, card, num) => { if (num && card.name === "sha" && get.color(card) === "red") { - let gp = game.findPlayer((current) => { - return ( - current.hasSkill("longyin") && current.hasCard((i) => true, "he") - ); + let gp = game.findPlayer(current => { + return current.hasSkill("longyin") && current.hasCard(i => true, "he"); }); if (gp) return num + 0.15 * Math.sign(get.attitude(player, gp)); } @@ -9155,7 +8458,7 @@ game.import("character", function () { }, trigger: { player: "dieAfter" }, filter: (event, player) => { - return !game.hasPlayer((current) => current.hasSkill("longyin"), true); + return !game.hasPlayer(current => current.hasSkill("longyin"), true); }, silent: true, forceDie: true, @@ -9198,11 +8501,7 @@ game.import("character", function () { filter: function (event, player) { if (!_status.currentPhase || event.shifei) return false; if (!event.filterCard({ name: "shan", isCard: true }, player, event)) return false; - if ( - event.name != "chooseToUse" && - !lib.filter.cardRespondable({ name: "shan", isCard: true }, player, event) - ) - return false; + if (event.name != "chooseToUse" && !lib.filter.cardRespondable({ name: "shan", isCard: true }, player, event)) return false; return true; }, delay: false, @@ -9212,8 +8511,7 @@ game.import("character", function () { var players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { if (players[i].countCards("h") >= nh) { - if (!player.countCards("h", "shan") || get.attitude(player, players[i]) <= 0) - return true; + if (!player.countCards("h", "shan") || get.attitude(player, players[i]) <= 0) return true; } } return false; @@ -9292,9 +8590,7 @@ game.import("character", function () { usable: 1, delay: false, filter: function (event, player) { - return ( - player.countCards("h", { color: "red" }) && player.countCards("h", { color: "black" }) - ); + return player.countCards("h", { color: "red" }) && player.countCards("h", { color: "black" }); }, content: function () { "step 0"; @@ -9302,11 +8598,7 @@ game.import("character", function () { "step 1"; player.chooseControl("红色", "黑色").set("ai", function () { var player = _status.event.player; - if ( - player.countCards("h", { color: "red" }) == 1 && - player.countCards("h", { color: "black" }) > 1 - ) - return "红色"; + if (player.countCards("h", { color: "red" }) == 1 && player.countCards("h", { color: "black" }) > 1) return "红色"; return "黑色"; }); "step 2"; @@ -9321,15 +8613,9 @@ game.import("character", function () { event.num = cards.length; "step 3"; player - .chooseTarget( - "请选择至多" + - get.cnNumber(event.num) + - "名有牌的其他角色,获得这些角色的各一张牌。", - [1, event.num], - function (card, player, target) { - return target != player && target.countCards("he") > 0; - } - ) + .chooseTarget("请选择至多" + get.cnNumber(event.num) + "名有牌的其他角色,获得这些角色的各一张牌。", [1, event.num], function (card, player, target) { + return target != player && target.countCards("he") > 0; + }) .set("ai", function (target) { return -get.attitude(_status.event.player, target) + 0.5; }); @@ -9461,9 +8747,7 @@ game.import("character", function () { filterTarget: lib.filter.notMe, derivation: ["reyanzhu_rewrite", "rexingxue_rewrite"], prompt: function () { - return lib.translate[ - (_status.event.player.storage.reyanzhu ? "reyanzhu_rewrite" : "reyanzhu") + "_info" - ]; + return lib.translate[(_status.event.player.storage.reyanzhu ? "reyanzhu_rewrite" : "reyanzhu") + "_info"]; }, content: function () { "step 0"; @@ -9472,10 +8756,7 @@ game.import("character", function () { target .chooseControl() .set("prompt", get.translation(player) + "发动了【宴诛】,请选择一项") - .set("choiceList", [ - "将装备区内的所有牌交给" + get.translation(player) + "并令其修改技能", - "弃置一张牌,并令下次受到的伤害+1直到下回合开始", - ]) + .set("choiceList", ["将装备区内的所有牌交给" + get.translation(player) + "并令其修改技能", "弃置一张牌,并令下次受到的伤害+1直到下回合开始"]) .set("ai", function () { if (_status.event.player.countCards("e") >= 3) return 1; return 0; @@ -9487,8 +8768,7 @@ game.import("character", function () { } else { target.addTempSkill("reyanzhu2", { player: "phaseBegin" }); target.addMark("reyanzhu2", 1, false); - if (!player.storage.reyanzhu && target.countCards("he") > 0) - target.chooseToDiscard("he", true); + if (!player.storage.reyanzhu && target.countCards("he") > 0) target.chooseToDiscard("he", true); } }, ai: { @@ -9526,17 +8806,11 @@ game.import("character", function () { }, content: function () { "step 0"; - player - .chooseTarget( - [1, player.storage.reyanzhu ? player.maxHp : player.hp], - get.prompt("rexingxue"), - "令所有目标角色依次摸一张牌,然后所有手牌数大于体力值的目标角色依次将一张牌置于牌堆顶" - ) - .set("ai", function (target) { - var att = get.attitude(player, target); - if (target.countCards("h") == target.hp - 1) att *= 2; - return att; - }); + player.chooseTarget([1, player.storage.reyanzhu ? player.maxHp : player.hp], get.prompt("rexingxue"), "令所有目标角色依次摸一张牌,然后所有手牌数大于体力值的目标角色依次将一张牌置于牌堆顶").set("ai", function (target) { + var att = get.attitude(player, target); + if (target.countCards("h") == target.hp - 1) att *= 2; + return att; + }); "step 1"; if (result.bool) { event.targets = result.targets.sortBySeat(); @@ -9551,19 +8825,13 @@ game.import("character", function () { if (event.target.isDead()) event.redo(); } else event.finish(); "step 4"; - if (target.isIn() && target.countCards("h") && target.countCards("h") > target.hp) - target.chooseCard("he", true, "将一张牌置于牌堆顶"); + if (target.isIn() && target.countCards("h") && target.countCards("h") > target.hp) target.chooseCard("he", true, "将一张牌置于牌堆顶"); else event.goto(3); "step 5"; if (result && result.cards) { event.card = result.cards[0]; target.lose(result.cards, ui.cardPile, "insert"); - game.log( - target, - "将", - get.position(event.card) == "h" ? "一张牌" : event.card, - "置于牌堆顶" - ); + game.log(target, "将", get.position(event.card) == "h" ? "一张牌" : event.card, "置于牌堆顶"); game.broadcastAll(function (player) { var cardx = ui.create.card(); cardx.classList.add("infohidden"); @@ -9585,11 +8853,7 @@ game.import("character", function () { if (from.group != "wu") return; var players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { - if ( - from != players[i] && - to != players[i] && - players[i].hasZhuSkill("rezhaofu", from) - ) { + if (from != players[i] && to != players[i] && players[i].hasZhuSkill("rezhaofu", from)) { if (players[i].inRange(to)) return true; } } @@ -9608,11 +8872,7 @@ game.import("character", function () { if (from.group != "wu") return; var players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { - if ( - from != players[i] && - to != players[i] && - players[i].hasZhuSkill("zhaofu", from) - ) { + if (from != players[i] && to != players[i] && players[i].hasZhuSkill("zhaofu", from)) { if (get.distance(players[i], to) <= 1) return true; } } @@ -9630,13 +8890,11 @@ game.import("character", function () { } const { result: { targets, bool }, - } = await player - .chooseTarget([1, num], get.prompt2("xingxue")) - .set("ai", function (target) { - var att = get.attitude(_status.event.player, target); - if (target.countCards("he")) return att; - return att / 10; - }); + } = await player.chooseTarget([1, num], get.prompt2("xingxue")).set("ai", function (target) { + var att = get.attitude(_status.event.player, target); + if (target.countCards("he")) return att; + return att / 10; + }); if (bool) { player.logSkill("xingxue", targets); const chooseToPutCard = async function (target) { @@ -9673,12 +8931,10 @@ game.import("character", function () { content: function () { "step 0"; if (target.countCards("e")) { - target - .chooseBool("是否将装备区内的所有牌交给" + get.translation(player) + "?") - .set("ai", function () { - if (_status.event.player.countCards("e") >= 3) return false; - return true; - }); + target.chooseBool("是否将装备区内的所有牌交给" + get.translation(player) + "?").set("ai", function () { + if (_status.event.player.countCards("e") >= 3) return false; + return true; + }); } else { target.chooseToDiscard(true, "he"); event.finish(); @@ -9716,7 +8972,7 @@ game.import("character", function () { if (player.hp != 1) return false; }, respondSha: true, - halfneg: true + halfneg: true, }, audio: 2, audioname: ["xin_zhangyi"], @@ -9724,12 +8980,7 @@ game.import("character", function () { firstDo: true, forced: true, filter: function (event, player) { - return ( - event.card.name == "sha" && - !event.skill && - event.cards.length == 1 && - event.cards[0].name == "shan" - ); + return event.card.name == "sha" && !event.skill && event.cards.length == 1 && event.cards[0].name == "shan"; }, content: function () {}, }, @@ -9906,8 +9157,7 @@ game.import("character", function () { selectCard: -1, position: "h", filter: function (event, player) { - if (player.getStat().skill.zhanjue_draw && player.getStat().skill.zhanjue_draw >= 2) - return false; + if (player.getStat().skill.zhanjue_draw && player.getStat().skill.zhanjue_draw >= 2) return false; var hs = player.getCards("h"); if (!hs.length) return false; for (var i = 0; i < hs.length; i++) { @@ -9936,8 +9186,7 @@ game.import("character", function () { ) ) return; - if (player.countCards("h") >= 3 || target.countCards("h") >= 3) - return "zeroplayertarget"; + if (player.countCards("h") >= 3 || target.countCards("h") >= 3) return "zeroplayertarget"; if (player.countCards("h", "tao")) return "zeroplayertarget"; if (target.countCards("h", "sha") > 1) return "zeroplayertarget"; } @@ -9945,13 +9194,7 @@ game.import("character", function () { }, nokeep: true, skillTagFilter: function (player, tag, arg) { - if (tag === "nokeep") - return ( - (!arg || (arg.card && get.name(arg.card) === "tao")) && - player.isPhaseUsing() && - player.countSkill("zhanjue_draw") < 2 && - player.hasCard((card) => get.name(card) != "tao", "h") - ); + if (tag === "nokeep") return (!arg || (arg.card && get.name(arg.card) === "tao")) && player.isPhaseUsing() && player.countSkill("zhanjue_draw") < 2 && player.hasCard(card => get.name(card) != "tao", "h"); }, }, }, @@ -10043,13 +9286,7 @@ game.import("character", function () { if (player.hasSkill("qinwang_ai")) return false; for (var i = 0; i < players.length; i++) { var nh = players[i].countCards("h"); - if ( - players[i] != player && - players[i].group == "shu" && - get.attitude(players[i], player) > 2 && - nh >= 3 && - players[i].countCards("h", "sha") - ) { + if (players[i] != player && players[i].group == "shu" && get.attitude(players[i], player) > 2 && nh >= 3 && players[i].countCards("h", "sha")) { return 5 - get.value(card); } } @@ -10096,10 +9333,7 @@ game.import("character", function () { trigger.cancel(); trigger.getParent().goto(0); } else if (event.current.group == "shu") { - var next = event.current.chooseToRespond( - "是否替" + get.translation(player) + "打出一张杀?", - { name: "sha" } - ); + var next = event.current.chooseToRespond("是否替" + get.translation(player) + "打出一张杀?", { name: "sha" }); next.set("ai", function () { var event = _status.event; return get.attitude(event.player, event.source) - 2; @@ -10152,13 +9386,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("zuoding"), - "令一名目标角色摸一张牌", - function (card, player, target) { - return _status.event.targets.includes(target); - } - ) + .chooseTarget(get.prompt("zuoding"), "令一名目标角色摸一张牌", function (card, player, target) { + return _status.event.targets.includes(target); + }) .set("ai", function (target) { return get.attitude(_status.event.player, target); }) @@ -10239,8 +9469,7 @@ game.import("character", function () { if (name == "sha") { for (var nature of lib.inpile_nature) { card.nature = nature; - if (event.filterCard(card, player, event)) - vcards.push(["基本", "", name, nature]); + if (event.filterCard(card, player, event)) vcards.push(["基本", "", name, nature]); } } } @@ -10251,10 +9480,7 @@ game.import("character", function () { var card = { name: button.link[2], nature: button.link[3] }; if ( game.hasPlayer(function (current) { - return ( - player.canUse(card, current) && - get.effect(current, card, player, player) > 0 - ); + return player.canUse(card, current) && get.effect(current, card, player, player) > 0; }) ) { switch (button.link[2]) { @@ -10304,11 +9530,7 @@ game.import("character", function () { }; }, prompt: function (links, player) { - return ( - "将一张黑色非基本牌置于牌堆顶并视为使用一张" + - get.translation(links[0][3] || "") + - get.translation(links[0][2]) - ); + return "将一张黑色非基本牌置于牌堆顶并视为使用一张" + get.translation(links[0][3] || "") + get.translation(links[0][2]); }, }, ai: { @@ -10316,11 +9538,7 @@ game.import("character", function () { var player = _status.event.player; var event = _status.event; var list = lib.skill.huomo.getUsed(player); - if ( - !list.includes("jiu") && - event.filterCard({ name: "jiu" }, player, event) && - get.effect(player, { name: "jiu" }) > 0 - ) { + if (!list.includes("jiu") && event.filterCard({ name: "jiu" }, player, event) && get.effect(player, { name: "jiu" }) > 0) { return 3.1; } return 2.9; @@ -10448,18 +9666,11 @@ game.import("character", function () { check: function (event, player) { if (get.attitude(player, event.target) >= 0) return false; var cards = event.target.getCards("h"); - if (cards.filter((card) => player.hasUseTarget(card)).length >= cards.length / 2) - return true; + if (cards.filter(card => player.hasUseTarget(card)).length >= cards.length / 2) return true; return false; }, filter: function (event, player) { - return ( - player.isPhaseUsing() && - event.targets.length == 1 && - event.target.countCards("h") > 0 && - player != event.target && - !player.hasSkill("taoxi_used") - ); + return player.isPhaseUsing() && event.targets.length == 1 && event.target.countCards("h") > 0 && player != event.target && !player.hasSkill("taoxi_used"); }, logTarget: "target", content: function () { @@ -10468,15 +9679,9 @@ game.import("character", function () { "step 1"; if (result.bool) { var card = result.links[0]; - player.showCards( - card, - get.translation(player) + - "对" + - get.translation(trigger.target) + - "发动了【讨袭】" - ); + player.showCards(card, get.translation(player) + "对" + get.translation(trigger.target) + "发动了【讨袭】"); if (!player.storage.taoxi_list) player.storage.taoxi_list = [[], []]; - if (!player.storage.taoxi_list[1].some((i) => i._cardid == card.cardid)) { + if (!player.storage.taoxi_list[1].some(i => i._cardid == card.cardid)) { var cardx = ui.create.card(); cardx.init(get.cardInfo(card)); cardx._cardid = card.cardid; @@ -10504,7 +9709,7 @@ game.import("character", function () { var list = player.storage.taoxi_list[1]; return ( event.cards && - event.cards.some((card) => { + event.cards.some(card => { return list.includes(card); }) ); @@ -10517,10 +9722,7 @@ game.import("character", function () { for (var i = 0; i < list[0].length; i++) { if (list[1][i] == card) { var cardid = card._cardid; - var cardx = list[0][i].getCards( - "h", - (cardxx) => cardxx.cardid == cardid - )[0]; + var cardx = list[0][i].getCards("h", cardxx => cardxx.cardid == cardid)[0]; if (cardx && get.position(cardx) == "h") { cards.push(cardx); list[0][i].$throw(cardx); @@ -10542,12 +9744,7 @@ game.import("character", function () { if (list[1].includes(card)) return num + 0.5; }, cardEnabled2: function (card) { - if ( - get.itemtype(card) == "card" && - card.hasGaintag("taoxi") && - _status.event.name == "chooseToRespond" - ) - return false; + if (get.itemtype(card) == "card" && card.hasGaintag("taoxi") && _status.event.name == "chooseToRespond") return false; }, }, ai: { @@ -10562,14 +9759,7 @@ game.import("character", function () { }, lose: { trigger: { - global: [ - "loseEnd", - "equipEnd", - "addJudgeEnd", - "gainEnd", - "loseAsyncEnd", - "addToExpansionEnd", - ], + global: ["loseEnd", "equipEnd", "addJudgeEnd", "gainEnd", "loseAsyncEnd", "addToExpansionEnd"], }, charlotte: true, forced: true, @@ -10584,8 +9774,8 @@ game.import("character", function () { if ( evt && evt.hs && - evt.hs.some((card) => { - return list[1].some((i) => i._cardid == card.cardid); + evt.hs.some(card => { + return list[1].some(i => i._cardid == card.cardid); }) ) return true; @@ -10600,8 +9790,8 @@ game.import("character", function () { if ( evt && evt.hs && - evt.hs.some((card) => { - return list[1].some((i) => i._cardid == card.cardid); + evt.hs.some(card => { + return list[1].some(i => i._cardid == card.cardid); }) ) return true; @@ -10610,7 +9800,7 @@ game.import("character", function () { for (var target of targets) { var hs = trigger.getl(target).hs; for (var i = 0; i < list[0].length; i++) { - if (hs.some((j) => j.cardid == list[1][i]._cardid)) { + if (hs.some(j => j.cardid == list[1][i]._cardid)) { if (player.isOnline2()) { player.send( function (list, i) { @@ -10638,7 +9828,7 @@ game.import("character", function () { forced: true, onremove: function (player) { game.broadcastAll(function (player) { - player.storage.taoxi_list[1].forEach((i) => i.delete()); + player.storage.taoxi_list[1].forEach(i => i.delete()); delete player.storage.taoxi_list; }, player); }, @@ -10750,15 +9940,11 @@ game.import("character", function () { player.hp <= 2 && player.countCards("h", "shan") && !game.hasPlayer(function (current) { - return ( - get.attitude(current, player) > 3 && - current.countCards("h", "tao") > 0 - ); + return get.attitude(current, player) > 3 && current.countCards("h", "tao") > 0; }) ) return 0; - if (target.countCards("h") + player.countCards("h") > target.hp + 2) - return basis * 0.8; + if (target.countCards("h") + player.countCards("h") > target.hp + 2) return basis * 0.8; return basis; } return 0; @@ -10846,11 +10032,7 @@ game.import("character", function () { "step 0"; var forced = event.forced === undefined ? false : event.forced; var info = get.skillInfoTranslation("huituo", player); - var str = `###${ - forced ? "恢拓:请选择一名角色" : get.prompt("huituo") - }###令一名角色判定。若结果为红色,其回复1点体力;若结果为黑色,其摸${get.cnNumber( - trigger.num - )}张牌`; + var str = `###${forced ? "恢拓:请选择一名角色" : get.prompt("huituo")}###令一名角色判定。若结果为红色,其回复1点体力;若结果为黑色,其摸${get.cnNumber(trigger.num)}张牌`; player.chooseTarget(str, event.forced).set("ai", function (target) { var player = _status.event.player; if (get.attitude(player, target) > 0) { @@ -10890,9 +10072,7 @@ game.import("character", function () { duodao: { trigger: { player: "damageEnd" }, filter: function (event, player) { - return ( - player.countCards("he") > 0 && event.source && event.card && event.card.name == "sha" - ); + return player.countCards("he") > 0 && event.source && event.card && event.card.name == "sha"; }, direct: true, //priority:5, @@ -10900,12 +10080,7 @@ game.import("character", function () { content: function () { "step 0"; var prompt = "弃置一张牌"; - if (trigger.source.getEquips(1).length) - prompt += - ",然后获得" + - get.translation(trigger.source) + - "装备区中的" + - get.translation(trigger.source.getEquips(1)); + if (trigger.source.getEquips(1).length) prompt += ",然后获得" + get.translation(trigger.source) + "装备区中的" + get.translation(trigger.source.getEquips(1)); var next = player.chooseToDiscard("he", get.prompt("duodao", trigger.source), prompt); next.logSkill = ["duodao", trigger.source]; next.set("ai", function (card) { @@ -10946,8 +10121,7 @@ game.import("character", function () { ai: { unequip_ai: true, skillTagFilter: function (player, tag, arg) { - if (arg && arg.name == "sha" && arg.target && !arg.target.inRange(player)) - return true; + if (arg && arg.name == "sha" && arg.target && !arg.target.inRange(player)) return true; return false; }, }, @@ -10965,11 +10139,7 @@ game.import("character", function () { }, charlotte: true, filter: function (event, player) { - return ( - player.storage.reanjian2 && - event.card && - player.storage.reanjian2.includes(event.card) - ); + return player.storage.reanjian2 && event.card && player.storage.reanjian2.includes(event.card); }, silent: true, forced: true, @@ -11002,41 +10172,26 @@ game.import("character", function () { reduodao: { trigger: { target: "useCardToTargeted" }, filter: function (event, player) { - return ( - event.card.name == "sha" && - (get.color(event.card) == "red" - ? event.player.getEquips(1).length > 0 - : player.countCards("he") > 0) - ); + return event.card.name == "sha" && (get.color(event.card) == "red" ? event.player.getEquips(1).length > 0 : player.countCards("he") > 0); }, direct: true, audio: 2, content: function () { "step 0"; var prompt = "弃置一张牌"; - if (trigger.player.getEquips(1).length) - prompt += - ",然后获得" + - get.translation(trigger.player) + - "装备区中的" + - get.translation(trigger.player.getEquips(1)); + if (trigger.player.getEquips(1).length) prompt += ",然后获得" + get.translation(trigger.player) + "装备区中的" + get.translation(trigger.player.getEquips(1)); var next = player.chooseToDiscard("he", get.prompt("reduodao", trigger.player), prompt); next.logSkill = ["reduodao", trigger.player]; next.set("ai", function (card) { if (!_status.event.getTrigger().player.getEquips(1).length) return 0; - if ( - get.attitude(_status.event.player, _status.event.getTrigger().player) * - get.value(_status.event.getTrigger().player.getEquips(1)) <= - 0 - ) { + if (get.attitude(_status.event.player, _status.event.getTrigger().player) * get.value(_status.event.getTrigger().player.getEquips(1)) <= 0) { return 6 - get.value(card); } return 0; }); "step 1"; if (result.bool && trigger.player.getEquips(1).length) { - if (!result.cards || !result.cards.length) - player.logSkill("reduodao", trigger.player); + if (!result.cards || !result.cards.length) player.logSkill("reduodao", trigger.player); player.gain(trigger.player.getEquips(1), trigger.player, "give", "bySelf"); } }, @@ -11060,24 +10215,12 @@ game.import("character", function () { trigger: { player: "useCardToPlayered" }, direct: true, filter: function (event, player) { - return ( - event.card.name == "sha" && - player.isPhaseUsing() && - event.target.hp > 0 && - event.target.countCards("he") > 0 - ); + return event.card.name == "sha" && player.isPhaseUsing() && event.target.hp > 0 && event.target.countCards("he") > 0; }, audio: 2, content: function () { "step 0"; - player - .choosePlayerCard( - trigger.target, - "he", - [1, Math.min(trigger.target.countCards("he"), trigger.target.hp)], - get.prompt("xinpojun", trigger.target) - ) - .set("forceAuto", true); + player.choosePlayerCard(trigger.target, "he", [1, Math.min(trigger.target.countCards("he"), trigger.target.hp)], get.prompt("xinpojun", trigger.target)).set("forceAuto", true); "step 1"; if (result.bool && result.links.length) { var target = trigger.target; @@ -11091,8 +10234,7 @@ game.import("character", function () { directHit_ai: true, skillTagFilter: function (player, tag, arg) { if (get.attitude(player, arg.target) > 0 || !player.isPhaseUsing()) return false; - if (tag == "directHit_ai") - return arg.target.hp >= Math.max(1, arg.target.countCards("h") - 1); + if (tag == "directHit_ai") return arg.target.hp >= Math.max(1, arg.target.countCards("h") - 1); if (arg && arg.name == "sha" && arg.target.getEquip(2)) return true; return false; }, @@ -11127,11 +10269,7 @@ game.import("character", function () { audio: 2, trigger: { global: "phaseJieshuBegin" }, filter: function (event, player) { - return ( - event.player != player && - event.player.countCards("h") == player.countCards("h") && - event.player.isIn() - ); + return event.player != player && event.player.countCards("h") == player.countCards("h") && event.player.isIn(); }, check: function (event, player) { return get.attitude(player, event.player) >= 0; @@ -11145,7 +10283,7 @@ game.import("character", function () { audio: 2, enable: "phaseUse", filter: function (event, player) { - return player.hasCard((card) => lib.skill.yanyu.filterCard(card, player), "h"); + return player.hasCard(card => lib.skill.yanyu.filterCard(card, player), "h"); }, filterCard: (card, player) => get.name(card) == "sha" && player.canRecast(card), discard: false, @@ -11177,13 +10315,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("yanyu"), - "令一名男性角色摸两张牌", - function (card, player, target) { - return target.hasSex("male") && target != player; - } - ) + .chooseTarget(get.prompt("yanyu"), "令一名男性角色摸两张牌", function (card, player, target) { + return target.hasSex("male") && target != player; + }) .set("ai", function (target) { return get.attitude(_status.event.player, target); }); @@ -11276,12 +10410,7 @@ game.import("character", function () { trigger: { source: "damageSource" }, forced: true, filter: function (event, player) { - if ( - ["new_rewusheng", "olpaoxiao"].every((skill) => - player.hasSkill(skill, null, false, false) - ) - ) - return false; + if (["new_rewusheng", "olpaoxiao"].every(skill => player.hasSkill(skill, null, false, false))) return false; return event.getParent().skill == "fuhun"; }, content: function () { @@ -11340,10 +10469,7 @@ game.import("character", function () { var num = 0, players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { - if ( - player != players[i] && - get.damageEffect(players[i], player, players[i], "fire") < 0 - ) { + if (player != players[i] && get.damageEffect(players[i], player, players[i], "fire") < 0) { var att = get.attitude(player, players[i]); if (att > 0) { num -= Math.max(1, players[i].countCards("e")); @@ -11379,11 +10505,7 @@ game.import("character", function () { if (event.targets && !info.multitarget) { if ( game.hasPlayer(function (current) { - return ( - !event.targets.includes(current) && - lib.filter.targetEnabled2(event.card, player, current) && - lib.filter.targetInRange(event.card, player, current) - ); + return !event.targets.includes(current) && lib.filter.targetEnabled2(event.card, player, current) && lib.filter.targetInRange(event.card, player, current); }) ) { return true; @@ -11395,18 +10517,11 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("mieji"), - "为" + get.translation(trigger.card) + "增加一个额外目标", - function (card, player, target) { - var player = _status.event.player; - if (_status.event.targets.includes(target)) return false; - return ( - lib.filter.targetEnabled2(_status.event.card, player, target) && - lib.filter.targetInRange(_status.event.card, player, target) - ); - } - ) + .chooseTarget(get.prompt("mieji"), "为" + get.translation(trigger.card) + "增加一个额外目标", function (card, player, target) { + var player = _status.event.player; + if (_status.event.targets.includes(target)) return false; + return lib.filter.targetEnabled2(_status.event.card, player, target) && lib.filter.targetInRange(_status.event.card, player, target); + }) .set("autodelay", true) .set("ai", function (target) { var trigger = _status.event.getTrigger(); @@ -11455,11 +10570,7 @@ game.import("character", function () { return 8 - get.value(card); }) .set("types", types) - .set("dialog", [ - "弃置一张与" + get.translation(player) + "弃置的牌类别均不同的牌,或将武将牌翻面", - "hidden", - cards, - ]); + .set("dialog", ["弃置一张与" + get.translation(player) + "弃置的牌类别均不同的牌,或将武将牌翻面", "hidden", cards]); "step 1"; if (!result.bool) { target.turnOver(); @@ -11482,19 +10593,12 @@ game.import("character", function () { juece: { audio: 2, trigger: { - global: [ - "loseAfter", - "equipAfter", - "addJudgeAfter", - "gainAfter", - "loseAsyncAfter", - "addToExpansionAfter", - ], + global: ["loseAfter", "equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, direct: true, filter: function (event, player) { if (_status.currentPhase != player) return false; - return game.hasPlayer((current) => { + return game.hasPlayer(current => { if (current == player || current.countCards("h")) return false; var evt = event.getl(current); return evt && evt.hs && evt.hs.length; @@ -11505,7 +10609,7 @@ game.import("character", function () { }, content: function () { "step 0"; - var targets = game.filterPlayer((current) => { + var targets = game.filterPlayer(current => { if (current == player || current.countCards("h")) return false; var evt = trigger.getl(current); return evt && evt.hs && evt.hs.length; @@ -11515,13 +10619,7 @@ game.import("character", function () { var target = event.targets.shift(); event.target = target; player.chooseBool(get.prompt2("juece", target)).set("ai", () => { - return ( - get.damageEffect( - _status.event.getParent().target, - _status.event.player, - _status.event.player - ) >= 0 - ); + return get.damageEffect(_status.event.getParent().target, _status.event.player, _status.event.player) >= 0; }); "step 2"; if (result.bool) { @@ -11569,14 +10667,9 @@ game.import("character", function () { player.line(event.current, "green"); if (event.current.countCards("he") && target.isIn()) { event.current - .chooseToDiscard( - { subtype: "equip1" }, - "he", - "弃置一张武器牌或让" + get.translation(target) + "摸一张牌" - ) + .chooseToDiscard({ subtype: "equip1" }, "he", "弃置一张武器牌或让" + get.translation(target) + "摸一张牌") .set("ai", function (card) { - if (get.attitude(_status.event.player, _status.event.target) < 0) - return 7 - get.value(card); + if (get.attitude(_status.event.player, _status.event.target) < 0) return 7 - get.value(card); return -1; }) .set("target", target); @@ -11666,10 +10759,7 @@ game.import("character", function () { event.finish(); return; } - event.color = get.color( - result.cards[0], - result.cards[0].original == "h" ? player : false - ); + event.color = get.color(result.cards[0], result.cards[0].original == "h" ? player : false); player .chooseTarget(function (card, player, target) { return player != target && get.distance(player, target) <= 1; @@ -11727,8 +10817,7 @@ game.import("character", function () { }, mod: { cardEnabled2: function (card, player) { - if (get.color(card) == player.storage.qianxi2 && get.position(card) == "h") - return false; + if (get.color(card) == player.storage.qianxi2 && get.position(card) == "h") return false; }, }, intro: { @@ -11803,10 +10892,7 @@ game.import("character", function () { enable: "phaseUse", audio: "sanyao", filter: function (event, player) { - return ( - player.countCards("he") > 0 && - (!player.hasSkill("olsanyao0") || !player.hasSkill("olsanyao1")) - ); + return player.countCards("he") > 0 && (!player.hasSkill("olsanyao0") || !player.hasSkill("olsanyao1")); }, chooseButton: { dialog: function (event, player) { @@ -12126,10 +11212,7 @@ game.import("character", function () { if (trigger.targets && !info.multitarget) { var players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { - if ( - lib.filter.targetEnabled2(trigger.card, player, players[i]) && - !trigger.targets.includes(players[i]) - ) { + if (lib.filter.targetEnabled2(trigger.card, player, players[i]) && !trigger.targets.includes(players[i])) { goon = true; break; } @@ -12137,18 +11220,11 @@ game.import("character", function () { } if (goon) { player - .chooseTarget( - "巧说:是否额外指定一名" + get.translation(trigger.card) + "的目标?", - function (card, player, target) { - var trigger = _status.event; - if (trigger.targets.includes(target)) return false; - return lib.filter.targetEnabled2( - trigger.card, - _status.event.player, - target - ); - } - ) + .chooseTarget("巧说:是否额外指定一名" + get.translation(trigger.card) + "的目标?", function (card, player, target) { + var trigger = _status.event; + if (trigger.targets.includes(target)) return false; + return lib.filter.targetEnabled2(trigger.card, _status.event.player, target); + }) .set("ai", function (target) { var trigger = _status.event.getTrigger(); var player = _status.event.player; @@ -12176,12 +11252,9 @@ game.import("character", function () { event.finish(); "step 3"; player - .chooseTarget( - "巧说:是否减少一名" + get.translation(trigger.card) + "的目标?", - function (card, player, target) { - return _status.event.targets.includes(target); - } - ) + .chooseTarget("巧说:是否减少一名" + get.translation(trigger.card) + "的目标?", function (card, player, target) { + return _status.event.targets.includes(target); + }) .set("ai", function (target) { var trigger = _status.event.getTrigger(); return -get.effect(target, trigger.card, trigger.player, _status.event.player); @@ -12245,11 +11318,7 @@ game.import("character", function () { prompt: "弃置两张牌并摸一张牌", check: function (card) { var player = _status.event.player; - if ( - !player.hasSkill("olbingyi") || - player.hasSkill("olbingyi_blocker", null, null, false) - ) - return 4 - get.value(card); + if (!player.hasSkill("olbingyi") || player.hasSkill("olbingyi_blocker", null, null, false)) return 4 - get.value(card); var red = 0, black = 0, hs = player.getCards("h"); @@ -12262,8 +11331,7 @@ game.import("character", function () { if (red > 2 && black > 2) return 4 - get.value(card); if (red == 0 || black == 0) return 8 - get.value(card); var color = get.color(card); - if (black <= red) - return (color == "black" && get.position(card) == "h" ? 8 : 4) - get.value(card); + if (black <= red) return (color == "black" && get.position(card) == "h" ? 8 : 4) - get.value(card); return (color == "red" && get.position(card) == "h" ? 8 : 4) - get.value(card); }, content: function () { @@ -12274,11 +11342,7 @@ game.import("character", function () { result: { player: function (player, target) { if (!ui.selected.cards.length) return 1; - if ( - !player.hasSkill("olbingyi") || - player.hasSkill("olbingyi_blocker", null, null, false) - ) - return 1; + if (!player.hasSkill("olbingyi") || player.hasSkill("olbingyi_blocker", null, null, false)) return 1; var red = 0, black = 0, hs = player.getCards("h"); @@ -12296,11 +11360,7 @@ game.import("character", function () { Math.min( red + black, game.countPlayer(function (current) { - return ( - current != player && - get.attitude(player, current) > 0 && - !current.hasSkillTag("nogain") - ); + return current != player && get.attitude(player, current) > 0 && !current.hasSkillTag("nogain"); }) ) + 1; if (num * 7 > val) return 1; @@ -12332,16 +11392,9 @@ game.import("character", function () { "step 0"; if (lib.skill.bingyi.filterx(trigger, player)) { player - .chooseTarget( - get.prompt("bingyi"), - "展示所有手牌,并令至多" + - get.cnNumber(player.countCards("h")) + - "名角色各摸一张牌", - [1, player.countCards("h")], - function (card, player, target) { - return true; - } - ) + .chooseTarget(get.prompt("bingyi"), "展示所有手牌,并令至多" + get.cnNumber(player.countCards("h")) + "名角色各摸一张牌", [1, player.countCards("h")], function (card, player, target) { + return true; + }) .set("ai", function (target) { return get.attitude(_status.event.player, target); }); @@ -12392,14 +11445,12 @@ game.import("character", function () { if (get.mode() !== "identity" || player.identity !== "nei") player.addExpose(0.2); player.draw(2); "step 1"; - player - .chooseCard(2, "he", true, "交给" + get.translation(trigger.player) + "两张牌") - .set("ai", function (card) { - if (ui.selected.cards.length && card.name == ui.selected.cards[0].name) return -1; - if (get.tag(card, "damage")) return 1; - if (get.type(card) == "equip") return 1; - return 0; - }); + player.chooseCard(2, "he", true, "交给" + get.translation(trigger.player) + "两张牌").set("ai", function (card) { + if (ui.selected.cards.length && card.name == ui.selected.cards[0].name) return -1; + if (get.tag(card, "damage")) return 1; + if (get.type(card) == "equip") return 1; + return 0; + }); "step 2"; player.give(result.cards, trigger.player); trigger.player.addSkill("xiantu4"); @@ -12591,22 +11642,14 @@ game.import("character", function () { audio: 2, trigger: { player: "damageBegin3" }, filter: function (event, player) { - return ( - player.countCards("he", { type: "equip" }) && - event.source && - event.source.hasSex("male") - ); + return player.countCards("he", { type: "equip" }) && event.source && event.source.hasSex("male"); }, direct: true, content: function () { "step 0"; - var next = player.chooseToDiscard( - "he", - "骄矜:是否弃置一张装备牌令伤害-1?", - function (card, player) { - return get.type(card) == "equip"; - } - ); + var next = player.chooseToDiscard("he", "骄矜:是否弃置一张装备牌令伤害-1?", function (card, player) { + return get.type(card) == "equip"; + }); next.set("ai", function (card) { var player = _status.event.player; if (player.hp == 1 || _status.event.getTrigger().num > 1) { @@ -12644,11 +11687,7 @@ game.import("character", function () { .chooseTarget(get.prompt2("chanhui"), function (card, player, target) { if (player == target) return false; var evt = _status.event.getTrigger(); - return ( - !evt.targets.includes(target) && - lib.filter.targetEnabled2(evt.card, player, target) && - lib.filter.targetInRange(evt.card, player, target) - ); + return !evt.targets.includes(target) && lib.filter.targetEnabled2(evt.card, player, target) && lib.filter.targetInRange(evt.card, player, target); }) .set("ai", function (target) { var trigger = _status.event.getTrigger(); @@ -12664,17 +11703,9 @@ game.import("character", function () { "step 2"; player.addTempSkill("chanhui2"); player.logSkill("chanhui", event.target); - event.target - .chooseCard( - "交给" + - get.translation(player) + - "一张手牌,或成为" + - get.translation(trigger.card) + - "的额外目标" - ) - .set("ai", function (card) { - return 5 - get.value(card); - }); + event.target.chooseCard("交给" + get.translation(player) + "一张手牌,或成为" + get.translation(trigger.card) + "的额外目标").set("ai", function (card) { + return 5 - get.value(card); + }); "step 3"; if (result.bool) { target.give(result.cards, player); @@ -12704,10 +11735,7 @@ game.import("character", function () { .chooseTarget(get.prompt2("rechanhui"), function (card, player, target) { if (player == target) return false; var trigger = _status.event; - return ( - player.canUse(trigger.card, target, false) && - trigger.targets.includes(target) == false - ); + return player.canUse(trigger.card, target, false) && trigger.targets.includes(target) == false; }) .set("ai", function (target) { var trigger = _status.event.getTrigger(); @@ -12725,18 +11753,9 @@ game.import("character", function () { } "step 2"; player.logSkill("rechanhui", event.target); - event.target - .chooseCard( - "交给" + - get.translation(player) + - "一张牌,或成为" + - get.translation(trigger.card) + - "的额外目标", - "he" - ) - .set("ai", function (card) { - return 5 - get.value(card); - }); + event.target.chooseCard("交给" + get.translation(player) + "一张牌,或成为" + get.translation(trigger.card) + "的额外目标", "he").set("ai", function (card) { + return 5 - get.value(card); + }); "step 3"; if (result.bool) { target.give(result.cards, player); @@ -12768,13 +11787,9 @@ game.import("character", function () { direct: true, content: function () { "step 0"; - var next = player.chooseToDiscard( - "he", - "骄矜:是否弃置一张装备牌令" + get.translation(trigger.card) + "对你无效?", - function (card, player) { - return get.type(card) == "equip"; - } - ); + var next = player.chooseToDiscard("he", "骄矜:是否弃置一张装备牌令" + get.translation(trigger.card) + "对你无效?", function (card, player) { + return get.type(card) == "equip"; + }); next.set("ai", function (card) { if (_status.event.goon2) { return 3 + _status.event.val - get.value(card); @@ -12820,11 +11835,7 @@ game.import("character", function () { player.addToExpansion(result.cards, player, "giveAuto").gaintag.add("quanji"); } "step 4"; - if ( - event.count > 0 && - player.hasSkill(event.name) && - !get.is.blocked(event.name, player) - ) { + if (event.count > 0 && player.hasSkill(event.name) && !get.is.blocked(event.name, player)) { player.chooseBool(get.prompt2("quanji")).set("frequentSkill", event.name); } else event.finish(); "step 5"; @@ -12856,8 +11867,7 @@ game.import("character", function () { if (player.hasSkillTag("jueqing", false, target)) return [1, -2]; if (!target.hasFriend()) return; if (target.hp >= 4) return [0.5, get.tag(card, "damage") * 2]; - if (!target.hasSkill("paiyi") && target.hp > 1) - return [0.5, get.tag(card, "damage") * 1.5]; + if (!target.hasSkill("paiyi") && target.hp > 1) return [0.5, get.tag(card, "damage") * 1.5]; if (target.hp == 3) return [0.5, get.tag(card, "damage") * 1.5]; if (target.hp == 2) return [1, get.tag(card, "damage") * 0.5]; } @@ -12922,12 +11932,7 @@ game.import("character", function () { result: { target: function (player, target) { if (player != target) return 0; - if ( - player.hasSkill("requanji") || - player.countCards("h") + 2 <= - player.hp + player.getExpansions("quanji").length - ) - return 1; + if (player.hasSkill("requanji") || player.countCards("h") + 2 <= player.hp + player.getExpansions("quanji").length) return 1; return 0; }, }, @@ -12982,19 +11987,9 @@ game.import("character", function () { game.delay(); "step 1"; target - .chooseTarget( - [1, event.num], - "令" + - get.translation(player) + - "回复" + - event.num + - "点体力,或对攻击范围内的" + - event.num + - "名角色造成1点伤害", - function (card, player, target2) { - return _status.event.player.inRange(target2); - } - ) + .chooseTarget([1, event.num], "令" + get.translation(player) + "回复" + event.num + "点体力,或对攻击范围内的" + event.num + "名角色造成1点伤害", function (card, player, target2) { + return _status.event.player.inRange(target2); + }) .set("ai", function (target2) { var target = _status.event.player; var player = _status.event.getParent().player; @@ -13030,11 +12025,7 @@ game.import("character", function () { var bool = true, players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { - if ( - players[i] != player && - get.attitude(player, players[i]) > 2 && - get.attitude(players[i], player) > 2 - ) { + if (players[i] != player && get.attitude(player, players[i]) > 2 && get.attitude(players[i], player) > 2) { bool = false; break; } @@ -13083,10 +12074,7 @@ game.import("character", function () { if ( att <= 0 && source.countCards("e", function (card) { - return ( - get.value(card, source) > 0 && - get.effect(player, card, player, player) > 0 - ); + return get.value(card, source) > 0 && get.effect(player, card, player, player) > 0; }) ) { return "移动装备"; @@ -13182,12 +12170,7 @@ game.import("character", function () { return ( event.card.name == "sha" && game.hasPlayer(function (current) { - return ( - current != player && - !event.targets.includes(current) && - current.countCards("h") > 0 && - lib.filter.targetEnabled(event.card, event.player, current) - ); + return current != player && !event.targets.includes(current) && current.countCards("h") > 0 && lib.filter.targetEnabled(event.card, event.player, current); }) ); }, @@ -13196,12 +12179,7 @@ game.import("character", function () { player .chooseTarget(get.prompt2("oldqiuyuan"), function (card, player, target) { var evt = _status.event.getTrigger(); - return ( - target != player && - !evt.targets.includes(target) && - lib.filter.targetEnabled(evt.card, evt.player, target) && - target.countCards("h") > 0 - ); + return target != player && !evt.targets.includes(target) && lib.filter.targetEnabled(evt.card, evt.player, target) && target.countCards("h") > 0; }) .set("ai", function (target) { var trigger = _status.event.getTrigger(); @@ -13216,12 +12194,7 @@ game.import("character", function () { player.logSkill("oldqiuyuan", target); event.target = target; target - .chooseCard( - "交给" + - get.translation(player) + - "一张牌,若此牌不为【闪】,则也成为此杀的额外目标", - true - ) + .chooseCard("交给" + get.translation(player) + "一张牌,若此牌不为【闪】,则也成为此杀的额外目标", true) .set("ai", function (card) { return -get.value(card, player, "raw"); }) @@ -13250,11 +12223,7 @@ game.import("character", function () { return ( event.card.name == "sha" && game.hasPlayer(function (current) { - return ( - current != player && - !event.targets.includes(current) && - lib.filter.targetEnabled(event.card, event.player, current) - ); + return current != player && !event.targets.includes(current) && lib.filter.targetEnabled(event.card, event.player, current); }) ); }, @@ -13263,11 +12232,7 @@ game.import("character", function () { player .chooseTarget(get.prompt2("qiuyuan"), function (card, player, target) { var evt = _status.event.getTrigger(); - return ( - target != player && - !evt.targets.includes(target) && - lib.filter.targetEnabled(evt.card, evt.player, target) - ); + return target != player && !evt.targets.includes(target) && lib.filter.targetEnabled(evt.card, evt.player, target); }) .set("ai", function (target) { var trigger = _status.event.getTrigger(); @@ -13282,10 +12247,7 @@ game.import("character", function () { player.logSkill("qiuyuan", target); event.target = target; target - .chooseCard( - { name: "shan" }, - "交给" + get.translation(player) + "一张闪,或成为此杀的额外目标" - ) + .chooseCard({ name: "shan" }, "交给" + get.translation(player) + "一张闪,或成为此杀的额外目标") .set("ai", function (card) { return get.attitude(target, _status.event.sourcex) >= 0 ? 1 : -1; }) @@ -13313,23 +12275,7 @@ game.import("character", function () { if (get.attitude(player, target) <= 0) { for (var i = 0; i < players.length; i++) { var target2 = players[i]; - if ( - player != target2 && - target != target2 && - player.canUse(card, target2, false) && - get.effect( - target2, - { name: "shacopy", nature: card.nature, suit: card.suit }, - player, - target - ) > 0 && - get.effect( - target2, - { name: "shacopy", nature: card.nature, suit: card.suit }, - player, - player - ) < 0 - ) { + if (player != target2 && target != target2 && player.canUse(card, target2, false) && get.effect(target2, { name: "shacopy", nature: card.nature, suit: card.suit }, player, target) > 0 && get.effect(target2, { name: "shacopy", nature: card.nature, suit: card.suit }, player, player) < 0) { if (target.hp == target.maxHp) return 0.3; return 0.6; } @@ -13337,17 +12283,7 @@ game.import("character", function () { } else { for (var i = 0; i < players.length; i++) { var target2 = players[i]; - if ( - player != target2 && - target != target2 && - player.canUse(card, target2, false) && - get.effect( - target2, - { name: "shacopy", nature: card.nature, suit: card.suit }, - player, - player - ) > 0 - ) { + if (player != target2 && target != target2 && player.canUse(card, target2, false) && get.effect(target2, { name: "shacopy", nature: card.nature, suit: card.suit }, player, player) > 0) { if (player.canUse(card, target2)) return; if (target.hp == target.maxHp) return [0, 1]; return [0, 0]; @@ -13594,9 +12530,7 @@ game.import("character", function () { return get.name(card) == "sha" || get.type(card) == "equip"; }, filter: function (event, player) { - return ( - player.countCards("h", "sha") > 0 || player.countCards("he", { type: "equip" }) > 0 - ); + return player.countCards("h", "sha") > 0 || player.countCards("he", { type: "equip" }) > 0; }, check: function (card) { return 8 - get.value(card); @@ -13618,8 +12552,7 @@ game.import("character", function () { "step 0"; player.give(cards, targets[0], "visible"); "step 1"; - if (!lib.filter.filterTarget({ name: "sha", isCard: true }, targets[0], targets[1])) - event._result = { control: "draw_card" }; + if (!lib.filter.filterTarget({ name: "sha", isCard: true }, targets[0], targets[1])) event._result = { control: "draw_card" }; else targets[0] .chooseControl("draw_card", "出杀", function () { @@ -13644,11 +12577,7 @@ game.import("character", function () { player: function (player) { var players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { - if ( - players[i] != player && - get.attitude(player, players[i]) > 1 && - get.attitude(players[i], player) > 1 - ) { + if (players[i] != player && get.attitude(player, players[i]) > 1 && get.attitude(players[i], player) > 1) { return 1; } } @@ -13707,39 +12636,20 @@ game.import("character", function () { return _status.event.target.canUse("sha", target); }) .set("ai", function (target) { - return get.effect( - target, - { name: "sha" }, - _status.event.target, - _status.event.player - ); + return get.effect(target, { name: "sha" }, _status.event.target, _status.event.player); }) .set("target", event.target); "step 3"; if (result.bool && result.targets.length) { game.log(player, "指定的出杀目标为", result.targets); event.target.line(result.targets); - event.target.chooseToUse( - "对" + - get.translation(result.targets) + - "使用一张杀,或令" + - get.translation(player) + - "获得你的两张牌", - { name: "sha" }, - result.targets[0], - -1 - ); + event.target.chooseToUse("对" + get.translation(result.targets) + "使用一张杀,或令" + get.translation(player) + "获得你的两张牌", { name: "sha" }, result.targets[0], -1); } else { event.bool = true; } "step 4"; if (event.bool || result.bool == false) { - player.gainPlayerCard( - "he", - event.target, - Math.min(2, event.target.countCards("he")), - true - ); + player.gainPlayerCard("he", event.target, Math.min(2, event.target.countCards("he")), true); } }, ai: { @@ -13808,10 +12718,7 @@ game.import("character", function () { return false; var evt = trigger.getl(player); for (var i = 0; i < evt.cards2.length; i++) { - if ( - get.position(evt.cards2[i], true) == "d" && - get.type(evt.cards2[i], false) == "equip" - ) { + if (get.position(evt.cards2[i], true) == "d" && get.type(evt.cards2[i], false) == "equip") { return true; } } @@ -13846,8 +12753,7 @@ game.import("character", function () { if (result.bool) { var cards = result.moved[1]; game.log(player, "将", cards, "置于了牌堆顶"); - while (cards.length) - ui.cardPile.insertBefore(cards.pop().fix(), ui.cardPile.firstChild); + while (cards.length) ui.cardPile.insertBefore(cards.pop().fix(), ui.cardPile.firstChild); } }, }, @@ -13858,14 +12764,9 @@ game.import("character", function () { direct: true, content: function () { "step 0"; - player - .chooseTarget( - get.prompt("zhiyan"), - "令一名角色摸一张牌并展示之。若为装备牌,则其回复1点体力" - ) - .set("ai", function (target) { - return get.attitude(_status.event.player, target); - }); + player.chooseTarget(get.prompt("zhiyan"), "令一名角色摸一张牌并展示之。若为装备牌,则其回复1点体力").set("ai", function (target) { + return get.attitude(_status.event.player, target); + }); "step 1"; if (result.bool) { event.target = result.targets[0]; @@ -13898,12 +12799,7 @@ game.import("character", function () { locked: false, mod: { aiOrder: function (player, card, num) { - if ( - num > 0 && - _status.event && - _status.event.type === "phase" && - get.tag(card, "recover") - ) { + if (num > 0 && _status.event && _status.event.type === "phase" && get.tag(card, "recover")) { if (player.needsToDiscard()) return num / 3; return 0; } @@ -13929,13 +12825,13 @@ game.import("character", function () { cards: [], }, cards = player.getCards("he"), - tars = game.filterPlayer((i) => player !== i); - cards.forEach((i) => { + tars = game.filterPlayer(i => player !== i); + cards.forEach(i => { let o = get.value(i, player), max = o, temp, t; - tars.forEach((tar) => { + tars.forEach(tar => { temp = get.value(i, tar); if (temp > max) { max = temp; @@ -14003,8 +12899,7 @@ game.import("character", function () { for (var i in event.given_map) { var source = (_status.connectMode ? lib.playerOL : game.playerMap)[i]; player.line(source, "green"); - if (player !== source && (get.mode() !== "identity" || player.identity !== "nei")) - player.addExpose(0.18); + if (player !== source && (get.mode() !== "identity" || player.identity !== "nei")) player.addExpose(0.18); map.push([source, event.given_map[i]]); cards.addArray(event.given_map[i]); } @@ -14046,52 +12941,31 @@ game.import("character", function () { audio: 2, audioname: ["re_wangyi"], filter: function (event, player) { - return ( - event.player != player && - event.card && - (event.card.name == "sha" || get.type(event.card) == "trick") - ); + return event.player != player && event.card && (event.card.name == "sha" || get.type(event.card) == "trick"); }, logTarget: "player", check: function (event, player) { if (event.getParent().excluded.includes(player)) return false; - if ( - get.attitude(player, event.player) > 0 || - (player.hp < 2 && !get.tag(event.card, "damage")) - ) - return false; + if (get.attitude(player, event.player) > 0 || (player.hp < 2 && !get.tag(event.card, "damage"))) return false; let evt = event.getParent(), - directHit = - (evt.nowuxie && get.type(event.card, "trick") === "trick") || - (evt.directHit && evt.directHit.includes(player)) || - (evt.customArgs && evt.customArgs.default && evt.customArgs.default.directHit2); + directHit = (evt.nowuxie && get.type(event.card, "trick") === "trick") || (evt.directHit && evt.directHit.includes(player)) || (evt.customArgs && evt.customArgs.default && evt.customArgs.default.directHit2); if (get.tag(event.card, "respondSha")) { if (directHit || player.countCards("h", { name: "sha" }) === 0) return true; } else if (get.tag(event.card, "respondShan")) { if (directHit || player.countCards("h", { name: "shan" }) === 0) return true; } else if (get.tag(event.card, "damage")) { - if (event.card.name === "huogong") - return event.player.countCards("h") > 4 - player.hp - player.hujia; + if (event.card.name === "huogong") return event.player.countCards("h") > 4 - player.hp - player.hujia; if (event.card.name === "shuiyanqijunx") return player.countCards("e") === 0; return true; } else if (player.hp > 2) { - if ( - event.card.name === "shunshou" || - (event.card.name === "zhujinqiyuan" && - (event.card.yingbian || get.distance(event.player, player) < 0)) - ) - return true; + if (event.card.name === "shunshou" || (event.card.name === "zhujinqiyuan" && (event.card.yingbian || get.distance(event.player, player) < 0))) return true; } return false; }, trigger: { target: "useCardToTargeted" }, content: function () { "step 0"; - if ( - get.attitude(player, trigger.player) < 0 && - trigger.player.countDiscardableCards(player, "he") - ) - player.addTempSkill("zhenlie_lose"); + if (get.attitude(player, trigger.player) < 0 && trigger.player.countDiscardableCards(player, "he")) player.addTempSkill("zhenlie_lose"); player.loseHp(); "step 1"; player.removeSkill("zhenlie_lose"); @@ -14114,8 +12988,7 @@ game.import("character", function () { }, effect: { target: (card, player, target) => { - if (target.hp <= 0 && target.hasSkill("zhenlie_lose") && get.tag(card, "recover")) - return [1, 1.2]; + if (target.hp <= 0 && target.hasSkill("zhenlie_lose") && get.tag(card, "recover")) return [1, 1.2]; }, }, }, @@ -14290,10 +13163,7 @@ game.import("character", function () { content: function () { target.draw(cards.length); if (cards.length == 3) { - if ( - get.type(cards[0], "trick") == get.type(cards[1], "trick") && - get.type(cards[0], "trick") == get.type(cards[2], "trick") - ) { + if (get.type(cards[0], "trick") == get.type(cards[1], "trick") && get.type(cards[0], "trick") == get.type(cards[2], "trick")) { player.recover(); } } @@ -14349,13 +13219,7 @@ game.import("character", function () { audio: 2, trigger: { player: ["loseAfter", "changeHp", "gainMaxHpAfter", "loseMaxHpAfter"], - global: [ - "equipAfter", - "addJudgeAfter", - "gainAfter", - "loseAsyncAfter", - "addToExpansionAfter", - ], + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, frequent: true, filter: function (event, player) { @@ -14389,11 +13253,7 @@ game.import("character", function () { var evt = event.getl(player); if (evt && evt.cards) cards.removeArray(evt.cards); for (var i = 0; i < cards.length; i++) { - if ( - cards[i].original != "j" && - get.suit(cards[i], event.player) == "club" && - get.position(cards[i], true) == "d" - ) { + if (cards[i].original != "j" && get.suit(cards[i], event.player) == "club" && get.position(cards[i], true) == "d") { return true; } } @@ -14409,20 +13269,14 @@ game.import("character", function () { evt = trigger.getl(player); if (evt && evt.cards) cards2.removeArray(evt.cards); for (var i = 0; i < cards2.length; i++) { - if ( - cards2[i].original != "j" && - get.suit(cards2[i], trigger.player) == "club" && - get.position(cards2[i], true) == "d" - ) { + if (cards2[i].original != "j" && get.suit(cards2[i], trigger.player) == "club" && get.position(cards2[i], true) == "d") { cards.push(cards2[i]); } } if (cards.length) { - player - .chooseButton(["落英:选择要获得的牌", cards], [1, cards.length]) - .set("ai", function (button) { - return get.value(button.link, _status.event.player, "raw"); - }); + player.chooseButton(["落英:选择要获得的牌", cards], [1, cards.length]).set("ai", function (button) { + return get.value(button.link, _status.event.player, "raw"); + }); } "step 2"; if (result.bool) { @@ -14445,14 +13299,9 @@ game.import("character", function () { }, content: function () { "step 0"; - player - .chooseButton( - ["落英:选择要获得的牌", trigger.cards], - [1, trigger.cards.length] - ) - .set("ai", function (button) { - return get.value(button.link, _status.event.player, "raw"); - }); + player.chooseButton(["落英:选择要获得的牌", trigger.cards], [1, trigger.cards.length]).set("ai", function (button) { + return get.value(button.link, _status.event.player, "raw"); + }); "step 1"; if (result.bool) { player.logSkill(event.name); @@ -14520,11 +13369,7 @@ game.import("character", function () { var e2 = target.getEquip(2); if (e2) { if (e2.name == "tengjia") { - if ( - !player.countCards("h", { name: "sha", nature: "fire" }) && - !player.getEquip("zhuque") - ) - return 0; + if (!player.countCards("h", { name: "sha", nature: "fire" }) && !player.getEquip("zhuque")) return 0; } if (e2.name == "renwang") { if (!player.countCards("h", { name: "sha", color: "red" })) return 0; @@ -14593,11 +13438,7 @@ game.import("character", function () { audioname: ["re_liubiao"], trigger: { player: "phaseDrawBegin2" }, check: function (event, player) { - return ( - player.countCards("h") <= - (player.hasSkill("zongshi") ? player.maxHp : player.hp - 2) || - player.skipList.includes("phaseUse") - ); + return player.countCards("h") <= (player.hasSkill("zongshi") ? player.maxHp : player.hp - 2) || player.skipList.includes("phaseUse"); }, filter: function (event, player) { return !event.numFixed; @@ -14727,13 +13568,13 @@ game.import("character", function () { const hs = player.getCards("h"); if (!hs.length) return false; if ( - hs.some((card) => { + hs.some(card => { const mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player); return mod2 === false; }) ) return false; - return lib.inpile.some((name) => { + return lib.inpile.some(name => { if (get.type(name) != "trick") return false; const card = get.autoViewAs({ name }, hs); return event.filterCard(card, player, event); @@ -14764,11 +13605,7 @@ game.import("character", function () { lose = 1, players = game.filterPlayer(); for (var i = 0; i < players.length; i++) { - if ( - players[i].hp == 1 && - get.damageEffect(players[i], player, player) > 0 && - !players[i].hasSha() - ) { + if (players[i].hp == 1 && get.damageEffect(players[i], player, player) > 0 && !players[i].hasSha()) { return button.link[2] == "juedou" ? 2 : -1; } if (!players[i].isOut()) { @@ -14833,13 +13670,7 @@ game.import("character", function () { }, nokeep: true, skillTagFilter: function (player, tag, arg) { - if (tag === "nokeep") - return ( - (!arg || (arg.card && get.name(arg.card) === "tao")) && - player.isPhaseUsing() && - !player.getStat("skill").qice && - player.hasCard((card) => get.name(card) != "tao", "h") - ); + if (tag === "nokeep") return (!arg || (arg.card && get.name(arg.card) === "tao")) && player.isPhaseUsing() && !player.getStat("skill").qice && player.hasCard(card => get.name(card) != "tao", "h"); }, threaten: 1.6, }, @@ -14873,26 +13704,14 @@ game.import("character", function () { audioname: ["boss_lvbu3", "re_heqi"], trigger: { player: ["loseAfter", "phaseDiscardEnd"], - global: [ - "equipAfter", - "addJudgeAfter", - "gainAfter", - "loseAsyncAfter", - "addToExpansionAfter", - ], + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, direct: true, filter: function (event, player) { if (event.name == "phaseDiscard") { var cards = []; player.getHistory("lose", function (evt) { - if ( - evt && - evt.type == "discard" && - evt.getParent("phaseDiscard") == event && - evt.hs - ) - cards.addArray(evt.hs); + if (evt && evt.type == "discard" && evt.getParent("phaseDiscard") == event && evt.hs) cards.addArray(evt.hs); }); return cards.length > 1; } else { @@ -14906,14 +13725,10 @@ game.import("character", function () { event.logged = false; "step 1"; player - .chooseTarget( - get.prompt("xuanfeng"), - "弃置一名其他角色的一张牌", - function (card, player, target) { - if (player == target) return false; - return target.countDiscardableCards(player, "he"); - } - ) + .chooseTarget(get.prompt("xuanfeng"), "弃置一名其他角色的一张牌", function (card, player, target) { + if (player == target) return false; + return target.countDiscardableCards(player, "he"); + }) .set("ai", function (target) { return -get.attitude(_status.event.player, target); }); @@ -15001,11 +13816,9 @@ game.import("character", function () { "step 0"; var cards = get.cards(3); event.cards = cards; - var next = player - .chooseCardButton(cards, "选择获得的红桃牌", [1, Infinity]) - .set("filterButton", function (button) { - return get.suit(button.link) == "heart"; - }); + var next = player.chooseCardButton(cards, "选择获得的红桃牌", [1, Infinity]).set("filterButton", function (button) { + return get.suit(button.link) == "heart"; + }); "step 1"; if (result.bool) { player.gain(result.links, "draw"); @@ -15049,12 +13862,7 @@ game.import("character", function () { audio: true, trigger: { player: "gainEnd" }, filter: function (event, player) { - return ( - event.source && - event.source.isIn() && - event.source != player && - event.cards.length >= 2 - ); + return event.source && event.source.isIn() && event.source != player && event.cards.length >= 2; }, logTarget: "source", check: function (event, player) { @@ -15089,27 +13897,20 @@ game.import("character", function () { "step 0"; event.num = trigger.num; "step 1"; - trigger.source - .chooseCard("选择一张手牌交给" + get.translation(player) + ",或点“取消”失去1点体力") - .set("ai", function (card) { - var player = _status.event.getParent().player, - source = _status.event.player; - if (get.effect(source, { name: "losehp" }, source, source) >= 0) return 0; - if (get.attitude(player, source) > 0) return 11 - get.value(card); - return 7 - get.value(card); - }); + trigger.source.chooseCard("选择一张手牌交给" + get.translation(player) + ",或点“取消”失去1点体力").set("ai", function (card) { + var player = _status.event.getParent().player, + source = _status.event.player; + if (get.effect(source, { name: "losehp" }, source, source) >= 0) return 0; + if (get.attitude(player, source) > 0) return 11 - get.value(card); + return 7 - get.value(card); + }); "step 2"; if (result.bool) { trigger.source.give(result.cards, player); } else { trigger.source.loseHp(); } - if ( - event.num > 1 && - player.hasSkill("xinenyuan") && - trigger.source && - trigger.source.isIn() - ) { + if (event.num > 1 && player.hasSkill("xinenyuan") && trigger.source && trigger.source.isIn()) { player.logSkill("xinenyuan", trigger.source); event.num--; event.goto(1); @@ -15142,12 +13943,9 @@ game.import("character", function () { content: function () { "step 0"; trigger.source - .chooseCard( - "选择一张红桃牌交给" + get.translation(player) + ",或点“取消”失去1点体力", - function (card) { - return get.suit(card) == "heart"; - } - ) + .chooseCard("选择一张红桃牌交给" + get.translation(player) + ",或点“取消”失去1点体力", function (card) { + return get.suit(card) == "heart"; + }) .set("ai", function (card) { var player = _status.event.getParent().player, source = _status.event.player; @@ -15230,12 +14028,9 @@ game.import("character", function () { event.card = result.links[0]; if (player.getCards("h").includes(event.card)) player - .chooseTarget( - "将" + get.translation(event.card) + "交给另一名其他角色", - function (card, player, target) { - return target != _status.event.sourcex && target != player; - } - ) + .chooseTarget("将" + get.translation(event.card) + "交给另一名其他角色", function (card, player, target) { + return target != _status.event.sourcex && target != player; + }) .set("ai", function (target) { return get.attitude(_status.event.player, target); }) @@ -15264,12 +14059,8 @@ game.import("character", function () { filterTarget: function (card, player, target) { if (target.isMin()) return false; if (ui.selected.targets.length == 0) return true; - if (ui.selected.targets[0].countCards("e") == 0 && target.countCards("e") == 0) - return false; - return ( - Math.abs(ui.selected.targets[0].countCards("e") - target.countCards("e")) <= - player.maxHp - player.hp - ); + if (ui.selected.targets[0].countCards("e") == 0 && target.countCards("e") == 0) return false; + return Math.abs(ui.selected.targets[0].countCards("e") - target.countCards("e")) <= player.maxHp - player.hp; }, multitarget: true, content: function () { @@ -15471,13 +14262,7 @@ game.import("character", function () { if (name === "tao") return val + 2 * Math.min(3, 1 + player.getDamagedHp()); if (name === "jiu" && player.hp < 3) return val + 2 * (2.8 - player.hp); if (name === "wuxie" && player.countCards("j") && !player.hasWuxie()) return val + 5; - if ( - player.hp > 1 && - player.hasSkill("renxin") && - player.hasFriend() && - get.type(button.link) === "equip" - ) - return val + 4; + if (player.hp > 1 && player.hasSkill("renxin") && player.hasFriend() && get.type(button.link) === "equip") return val + 4; return val; }); "step 2"; @@ -15544,23 +14329,12 @@ game.import("character", function () { audioname: ["re_caochong"], //priority:6, filter: function (event, player) { - return ( - event.player != player && - event.player.hp == 1 && - player.countCards("he", { type: "equip" }) > 0 - ); + return event.player != player && event.player.hp == 1 && player.countCards("he", { type: "equip" }) > 0; }, direct: true, content: function () { "step 0"; - var next = player.chooseToDiscard( - get.prompt("renxin", trigger.player), - "弃置一张装备牌并将武将牌翻面,然后防止" + - get.translation(trigger.player) + - "受到的伤害", - { type: "equip" }, - "he" - ); + var next = player.chooseToDiscard(get.prompt("renxin", trigger.player), "弃置一张装备牌并将武将牌翻面,然后防止" + get.translation(trigger.player) + "受到的伤害", { type: "equip" }, "he"); next.logSkill = ["renxin", trigger.player]; next.set("ai", function (card) { var player = _status.event.player; @@ -15604,24 +14378,11 @@ game.import("character", function () { var type = get.type(result.cards[0], "trick"); if (trigger.source) { trigger.source - .chooseToDiscard( - "弃置一张不为" + - get.translation(type) + - "牌的牌或令" + - get.translation(player) + - "回复1点体力", - function (card) { - return get.type(card, "trick") != _status.event.type; - } - ) + .chooseToDiscard("弃置一张不为" + get.translation(type) + "牌的牌或令" + get.translation(player) + "回复1点体力", function (card) { + return get.type(card, "trick") != _status.event.type; + }) .set("ai", function (card) { - if ( - get.recoverEffect( - _status.event.getParent().player, - _status.event.player, - _status.event.player - ) < 0 - ) { + if (get.recoverEffect(_status.event.getParent().player, _status.event.player, _status.event.player) < 0) { return 7 - get.value(card); } return 0; @@ -15713,23 +14474,17 @@ game.import("character", function () { viewAs: { name: "sha", isCard: true }, filter: function (event, player) { return game.hasPlayer(function (current) { - return ( - current.hasSkill("xiansix") && - current.getExpansions("xiansi").length > 1 && - event.filterTarget({ name: "sha" }, player, current) - ); + return current.hasSkill("xiansix") && current.getExpansions("xiansi").length > 1 && event.filterTarget({ name: "sha" }, player, current); }); }, filterTarget: function (card, player, target) { var bool = false; var players = ui.selected.targets.slice(0); for (var i = 0; i < players.length; i++) { - if (players[i].hasSkill("xiansix") && players[i].getExpansions("xiansi").length > 1) - bool = true; + if (players[i].hasSkill("xiansix") && players[i].getExpansions("xiansi").length > 1) bool = true; break; } - if (!bool && (!target.hasSkill("xiansix") || target.getExpansions("xiansi").length <= 1)) - return false; + if (!bool && (!target.hasSkill("xiansix") || target.getExpansions("xiansi").length <= 1)) return false; return _status.event._backup.filterTarget.apply(this, arguments); }, complexSelect: true, @@ -15773,12 +14528,7 @@ game.import("character", function () { if (event.target.getExpansions("xiansi").length == 2) { event.directresult = event.target.getExpansions("xiansi").slice(0); } else { - player.chooseCardButton( - "移去两张“逆”", - 2, - event.target.getExpansions("xiansi"), - true - ); + player.chooseCardButton("移去两张“逆”", 2, event.target.getExpansions("xiansi"), true); } } else { event.finish(); @@ -15826,11 +14576,7 @@ game.import("character", function () { if (target.hujia) return; if (player._shibei_tmp) return; if (target.hasSkill("shibei_ai")) return; - if ( - _status.event.getParent("useCard", true) || - _status.event.getParent("_wuxie", true) - ) - return; + if (_status.event.getParent("useCard", true) || _status.event.getParent("_wuxie", true)) return; if (get.tag(card, "damage")) { if (target.getHistory("damage").length > 0) { return [1, -2]; @@ -15838,10 +14584,7 @@ game.import("character", function () { if (get.attitude(player, target) > 0 && target.hp > 1) { return 0; } - if ( - get.attitude(player, target) < 0 && - !player.hasSkillTag("damageBonus") - ) { + if (get.attitude(player, target) < 0 && !player.hasSkillTag("damageBonus")) { if (card.name == "sha") return; var sha = false; player._shibei_tmp = true; @@ -15853,11 +14596,7 @@ game.import("character", function () { sha = true; } } - return ( - get.tag(card, "damage") && - player.canUse(card, target) && - get.effect(target, card, player, player) > 0 - ); + return get.tag(card, "damage") && player.canUse(card, target) && get.effect(target, card, player, player) > 0; }); delete player._shibei_tmp; if (player.hasSkillTag("damage")) { @@ -15865,11 +14604,7 @@ game.import("character", function () { } if (num < 2) { var enemies = player.getEnemies(); - if ( - enemies.length == 1 && - enemies[0] == target && - player.needsToDiscard() - ) { + if (enemies.length == 1 && enemies[0] == target && player.needsToDiscard()) { return; } return 0; @@ -15914,12 +14649,7 @@ game.import("character", function () { aiOrder: function (player, card, num) { if (typeof card == "object" && player.isPhaseUsing()) { var evt = player.getLastUsed(); - if ( - evt && - evt.card && - ((get.suit(evt.card) && get.suit(evt.card) == get.suit(card)) || - (evt.card.number && evt.card.number == get.number(card))) - ) { + if (evt && evt.card && ((get.suit(evt.card) && get.suit(evt.card) == get.suit(card)) || (evt.card.number && evt.card.number == get.number(card)))) { return num + 10; } } @@ -15933,11 +14663,7 @@ game.import("character", function () { if (!player.isPhaseUsing()) return false; var evt2 = evt.getParent("phaseUse"); if (!evt2 || evt2.name != "phaseUse" || evt2.player != player) return false; - return ( - (get.suit(evt.card) != "none" && get.suit(evt.card) == get.suit(event.card)) || - (typeof get.number(evt.card, false) == "number" && - get.number(evt.card, false) == get.number(event.card)) - ); + return (get.suit(evt.card) != "none" && get.suit(evt.card) == get.suit(event.card)) || (typeof get.number(evt.card, false) == "number" && get.number(evt.card, false) == get.number(event.card)); }, content: function () { player.draw(); @@ -15951,18 +14677,12 @@ game.import("character", function () { }); if (history.length) { var trigger = history[history.length - 1]; - if ( - get.suit(trigger.card, player) == "none" || - typeof get.number(trigger.card, player) != "number" - ) - return; + if (get.suit(trigger.card, player) == "none" || typeof get.number(trigger.card, player) != "number") return; player.storage.jianying_mark = trigger.card; player.markSkill("jianying_mark"); game.broadcastAll( function (player, suit) { - if (player.marks.jianying_mark) - player.marks.jianying_mark.firstChild.innerHTML = - get.translation(suit); + if (player.marks.jianying_mark) player.marks.jianying_mark.firstChild.innerHTML = get.translation(suit); }, player, get.suit(trigger.card, player) @@ -15989,19 +14709,13 @@ game.import("character", function () { popup: false, firstDo: true, content: function () { - if ( - get.suit(trigger.card, player) == "none" || - typeof get.number(trigger.card, player) != "number" - ) - player.unmarkSkill("jianying_mark"); + if (get.suit(trigger.card, player) == "none" || typeof get.number(trigger.card, player) != "number") player.unmarkSkill("jianying_mark"); else { player.storage.jianying_mark = trigger.card; player.markSkill("jianying_mark"); game.broadcastAll( function (player, suit) { - if (player.marks.jianying_mark) - player.marks.jianying_mark.firstChild.innerHTML = - get.translation(suit); + if (player.marks.jianying_mark) player.marks.jianying_mark.firstChild.innerHTML = get.translation(suit); }, player, get.suit(trigger.card, player) @@ -16025,8 +14739,7 @@ game.import("character", function () { var str = "
  • 上一张牌的花色:" + get.translation(suit); str += "
  • 上一张牌的点数:"; var list = [1, 11, 12, 13]; - if (list.includes(num)) - str += ["A(1)", "J(11)", "Q(12)", "K(13)"][list.indexOf(num)]; + if (list.includes(num)) str += ["A(1)", "J(11)", "Q(12)", "K(13)"][list.indexOf(num)]; else str += parseFloat(num); return str; }, @@ -16043,9 +14756,7 @@ game.import("character", function () { content: function () { "step 0"; var att = get.attitude(player, trigger.source); - player.gainPlayerCard("e", get.prompt("zzhenggong"), trigger.source).ai = function ( - button - ) { + player.gainPlayerCard("e", get.prompt("zzhenggong"), trigger.source).ai = function (button) { if (att <= 0) { return get.equipValue(button.link); } @@ -16075,12 +14786,7 @@ game.import("character", function () { var nh2 = player.countCards("h"); return nh1 <= 2 && nh2 > nh1 + 1; } - if ( - att > 0 && - event.player.hasJudge("lebu") && - event.player.countCards("h") > event.player.hp + 1 - ) - return true; + if (att > 0 && event.player.hasJudge("lebu") && event.player.countCards("h") > event.player.hp + 1) return true; return false; }, logTarget: "player", @@ -16148,12 +14854,7 @@ game.import("character", function () { "step 0"; player.addToExpansion(cards, "give", player).gaintag.add("zyexin"); "step 1"; - player.chooseCardButton( - player.getExpansions("zyexin"), - "选择" + get.cnNumber(cards.length) + "张牌作为手牌", - cards.length, - true - ).ai = function (button) { + player.chooseCardButton(player.getExpansions("zyexin"), "选择" + get.cnNumber(cards.length) + "张牌作为手牌", cards.length, true).ai = function (button) { return get.value(button.link); }; "step 2"; @@ -16265,61 +14966,41 @@ game.import("character", function () { return "当你对其他角色造成伤害时,你可以令此伤害值+X。若如此做,你失去X点体力,并于此伤害结算完成后修改〖绝情〗(X为伤害值)。"; }, reyanzhu: function (player) { - if (!player.storage.reyanzhu) - return "出牌阶段限一次,你可以令一名其他角色选择一项:将装备区里的所有牌交给你并令你修改〖宴诛〗和〖兴学〗,或弃置一张牌并令下一次受到的伤害+1直到其下回合开始。"; + if (!player.storage.reyanzhu) return "出牌阶段限一次,你可以令一名其他角色选择一项:将装备区里的所有牌交给你并令你修改〖宴诛〗和〖兴学〗,或弃置一张牌并令下一次受到的伤害+1直到其下回合开始。"; return "出牌阶段限一次,你可以选择一名其他角色。该角色下一次受到的伤害+1直到其下回合开始。"; }, rexingxue: function (player) { - if (player.storage.reyanzhu) - return "结束阶段开始时,你可以令至多X名角色各摸一张牌。然后若有手牌数大于体力值的目标角色,则这些角色各将一张牌置于牌堆顶。(X为你的体力上限)。"; + if (player.storage.reyanzhu) return "结束阶段开始时,你可以令至多X名角色各摸一张牌。然后若有手牌数大于体力值的目标角色,则这些角色各将一张牌置于牌堆顶。(X为你的体力上限)。"; return "结束阶段开始时,你可以令至多X名角色各摸一张牌。然后若有手牌数大于体力值的目标角色,则这些角色各将一张牌置于牌堆顶。(X为你的体力值)。"; }, jiaozhao: function (player) { var num = player.countMark("xindanxin"); - if (num > 2) - return "出牌阶段限两次,你可以将一张手牌当做任意基本牌或普通锦囊牌使用(你不能对自己使用此牌)。"; - if (num > 1) - return "出牌阶段限一次,你可以将一张手牌当做任意基本牌或普通锦囊牌使用(你不能对自己使用此牌)。"; - if (num > 0) - return "出牌阶段限一次,你可以展示一张手牌,然后选择距离最近的一名其他角色,该角色声明一张基本牌或普通锦囊牌的牌名。在此出牌阶段内,你可以将此手牌当声明的牌使用(你不能对自己使用此牌,且此牌不可被【无懈可击】响应)。"; + if (num > 2) return "出牌阶段限两次,你可以将一张手牌当做任意基本牌或普通锦囊牌使用(你不能对自己使用此牌)。"; + if (num > 1) return "出牌阶段限一次,你可以将一张手牌当做任意基本牌或普通锦囊牌使用(你不能对自己使用此牌)。"; + if (num > 0) return "出牌阶段限一次,你可以展示一张手牌,然后选择距离最近的一名其他角色,该角色声明一张基本牌或普通锦囊牌的牌名。在此出牌阶段内,你可以将此手牌当声明的牌使用(你不能对自己使用此牌,且此牌不可被【无懈可击】响应)。"; return "出牌阶段限一次,你可以展示一张手牌,然后选择距离最近的一名其他角色,该角色声明一张基本牌的牌名。在此出牌阶段内,你可以将此手牌当声明的牌使用(你不能对自己使用此牌,且此牌不可被【无懈可击】响应)。"; }, funan: function (player) { - if (player.hasSkill("funan_jiexun")) - return "其他角色使用或打出牌响应你使用的牌时,你可获得其使用或打出的牌。"; + if (player.hasSkill("funan_jiexun")) return "其他角色使用或打出牌响应你使用的牌时,你可获得其使用或打出的牌。"; return "其他角色使用或打出牌响应你使用的牌时,你可令其获得你使用的牌(其本回合不能使用或打出这些牌),然后你获得其使用或打出的牌。"; }, lkbushi: function (player) { - var list = lib.skill.lkbushi.getBushi(player).map((i) => get.translation(i)); - return ( - "①你使用" + - list[0] + - "牌无次数限制。②当你使用或打出" + - list[1] + - "牌后,你摸一张牌。③当你成为" + - list[2] + - "牌的目标后,你可以弃置一张牌,令此牌对你无效。④结束阶段开始时,你从牌堆或弃牌堆获得一张" + - list[3] + - "牌。⑤准备阶段开始时,你可调整此技能中四种花色的对应顺序。" - ); + var list = lib.skill.lkbushi.getBushi(player).map(i => get.translation(i)); + return "①你使用" + list[0] + "牌无次数限制。②当你使用或打出" + list[1] + "牌后,你摸一张牌。③当你成为" + list[2] + "牌的目标后,你可以弃置一张牌,令此牌对你无效。④结束阶段开始时,你从牌堆或弃牌堆获得一张" + list[3] + "牌。⑤准备阶段开始时,你可调整此技能中四种花色的对应顺序。"; }, diezhang: function (player) { var str = ""; str += player.storage.duanwan ? "" : "①出牌阶段,你使用杀的次数上限+1。②"; str += "转换技" + (player.storage.duanwan ? ",每回合限一次" : "") + "。"; var cnNum = get.cnNumber(player.storage.duanwan ? 2 : 1); - var yinStr = - "阴:当你使用牌被其他角色抵消后,你可以弃置一张牌,视为对其使用" + cnNum + "张【杀】"; - var yangStr = - "阳:当其他角色使用牌被你抵消后,你可以摸" + cnNum + "张牌,视为对其使用一张【杀】"; + var yinStr = "阴:当你使用牌被其他角色抵消后,你可以弃置一张牌,视为对其使用" + cnNum + "张【杀】"; + var yangStr = "阳:当其他角色使用牌被你抵消后,你可以摸" + cnNum + "张牌,视为对其使用一张【杀】"; if (player.storage.diezhang) { - if (player.storage.duanwan) - yinStr = '' + yinStr + ""; + if (player.storage.duanwan) yinStr = '' + yinStr + ""; yangStr = '' + yangStr + ""; } else { yinStr = '' + yinStr + ""; - if (player.storage.duanwan) - yangStr = '' + yangStr + ""; + if (player.storage.duanwan) yangStr = '' + yangStr + ""; } return str + yinStr + ";" + yangStr + "。"; }, @@ -16394,6 +15075,8 @@ game.import("character", function () { zhongyao: ["zhongyao", "re_zhongyao"], liwan: ["ol_liwan", "liwan"], wuxian: ["wuxian", "clan_wuxian"], + simafu: ["simafu", "yj_simafu"], + xuangongzhu: ["yj_xuangongzhu", "xuangongzhu"], }, translate: { old_huaxiong: "将华雄", @@ -16477,47 +15160,35 @@ game.import("character", function () { caiyong: "蔡邕", new_qingxian: "清弦", - new_qingxian_info: - "出牌阶段限一次,你可以弃置至多X张牌并选择等量的其他角色。这些角色中,装备区内牌数少于你的回复1点体力,等于你的摸一张牌,多于你的失去1点体力。若你以此法指定的角色数等于X,则你摸一张牌。(X为你的体力值)", + new_qingxian_info: "出牌阶段限一次,你可以弃置至多X张牌并选择等量的其他角色。这些角色中,装备区内牌数少于你的回复1点体力,等于你的摸一张牌,多于你的失去1点体力。若你以此法指定的角色数等于X,则你摸一张牌。(X为你的体力值)", new_juexiang: "绝响", - new_juexiang_info: - "锁定技,当你死亡后,杀死你的角色弃置装备区内的所有牌并失去1点体力。然后,你可以令一名其他角色获得技能〖残韵〗。若该角色区域内有梅花牌,则其可以弃置其中的一张,然后其获得技能〖绝响〗。", + new_juexiang_info: "锁定技,当你死亡后,杀死你的角色弃置装备区内的所有牌并失去1点体力。然后,你可以令一名其他角色获得技能〖残韵〗。若该角色区域内有梅花牌,则其可以弃置其中的一张,然后其获得技能〖绝响〗。", new_canyun: "残韵", - new_canyun_info: - "出牌阶段限一次,你可以弃置至多X张牌并选择等量的其他角色(不能选择已经成为过〖残韵〗目标的角色)。这些角色中,装备区内牌数少于你的回复1点体力,等于你的摸一张牌,多于你的失去1点体力。若你以此法指定的角色数等于X,则你摸一张牌。(X为你的体力值)", + new_canyun_info: "出牌阶段限一次,你可以弃置至多X张牌并选择等量的其他角色(不能选择已经成为过〖残韵〗目标的角色)。这些角色中,装备区内牌数少于你的回复1点体力,等于你的摸一张牌,多于你的失去1点体力。若你以此法指定的角色数等于X,则你摸一张牌。(X为你的体力值)", qingxian_draw: "清弦", qingxian_draw_info: "", zhenjun: "镇军", - zhenjun_info: - "准备阶段,你可以弃置一名手牌数多于体力值的角色的X张牌(X为其手牌数和体力值之差),然后选择一项:1.你弃置等同于其中非装备牌数量的牌;2.其摸等量的牌。", + zhenjun_info: "准备阶段,你可以弃置一名手牌数多于体力值的角色的X张牌(X为其手牌数和体力值之差),然后选择一项:1.你弃置等同于其中非装备牌数量的牌;2.其摸等量的牌。", rezhenjun: "镇军", - rezhenjun_info: - "准备阶段,你可以弃置一名角色的X张牌(X为其手牌数和体力值之差且至少为1),然后选择一项:1.你弃置X张牌;2.其摸X张牌。(X为其弃置的牌中非装备牌的数量)", + rezhenjun_info: "准备阶段,你可以弃置一名角色的X张牌(X为其手牌数和体力值之差且至少为1),然后选择一项:1.你弃置X张牌;2.其摸X张牌。(X为其弃置的牌中非装备牌的数量)", fenli: "奋励", - fenli_info: - "若你的手牌数为全场最多,你可以跳过摸牌阶段;若你的体力值为全场最多,你可以跳过出牌阶段;若你的装备区里有牌且数量为全场最多,你可以跳过弃牌阶段。", + fenli_info: "若你的手牌数为全场最多,你可以跳过摸牌阶段;若你的体力值为全场最多,你可以跳过出牌阶段;若你的装备区里有牌且数量为全场最多,你可以跳过弃牌阶段。", pingkou: "平寇", pingkou_info: "回合结束时,你可以对至多X名其他角色各造成1点伤害(X为你本回合跳过的阶段数)。", xinanguo: "安国", - xinanguo_info: - "出牌阶段限一次,你可以选择一名其他角色,若其手牌数为全场最少,其摸一张牌;体力值为全场最低,回复1点体力;装备区内牌数为全场最少,随机使用一张装备牌。然后若该角色有未执行的效果且你满足条件,你执行之。", + xinanguo_info: "出牌阶段限一次,你可以选择一名其他角色,若其手牌数为全场最少,其摸一张牌;体力值为全场最低,回复1点体力;装备区内牌数为全场最少,随机使用一张装备牌。然后若该角色有未执行的效果且你满足条件,你执行之。", pindi: "品第", - pindi_info: - "出牌阶段,你可以弃置一张牌并选择一名其他角色(不能弃置相同类型牌且不能指定相同的角色),然后令其执行一项:摸X张牌;弃置X张牌(X为本回合此技能发动次数)。若其已受伤,你横置。", + pindi_info: "出牌阶段,你可以弃置一张牌并选择一名其他角色(不能弃置相同类型牌且不能指定相同的角色),然后令其执行一项:摸X张牌;弃置X张牌(X为本回合此技能发动次数)。若其已受伤,你横置。", funan_jiexun: "诫训", bizhuan: "辟撰", bizhuan_bg: "书", - bizhuan_info: - "当你使用黑桃牌后,或你成为其他角色使用黑桃牌的目标后,你可以将牌堆顶的一张牌置于武将牌上,称为“书”;你至多拥有四张“书”,你每有一张“书” ,手牌上限+1。", + bizhuan_info: "当你使用黑桃牌后,或你成为其他角色使用黑桃牌的目标后,你可以将牌堆顶的一张牌置于武将牌上,称为“书”;你至多拥有四张“书”,你每有一张“书” ,手牌上限+1。", tongbo: "通博", - tongbo_info: - "摸牌阶段摸牌后,你可以用任意张牌替换等量的“书”,然后若你的“书”包含四种花色,你将所有“书”交给任意名其他角色。", + tongbo_info: "摸牌阶段摸牌后,你可以用任意张牌替换等量的“书”,然后若你的“书”包含四种花色,你将所有“书”交给任意名其他角色。", qingxian: "清弦", - qingxian_info: - "当你受到伤害/回复体力后,你可以令伤害来源/一名其他角色执行一项:失去1点体力,随机使用一张装备牌;回复1点体力,弃置一张装备牌。若其以此法使用或弃置的牌为梅花,你摸一张牌。", + qingxian_info: "当你受到伤害/回复体力后,你可以令伤害来源/一名其他角色执行一项:失去1点体力,随机使用一张装备牌;回复1点体力,弃置一张装备牌。若其以此法使用或弃置的牌为梅花,你摸一张牌。", juexiang: "绝响", - juexiang_info: - "当你死亡后,你可以令一名角色随机获得“清弦残谱”其中一个技能,然后直到其下回合开始,其不能被选择为其他角色使用梅花牌的目标。", + juexiang_info: "当你死亡后,你可以令一名角色随机获得“清弦残谱”其中一个技能,然后直到其下回合开始,其不能被选择为其他角色使用梅花牌的目标。", juexiang_ji: "激弦", juexiang_ji_info: "当你受到伤害后,你可以令伤害来源失去1点体力,随机使用一张装备。", juexiang_lie: "烈弦", @@ -16530,388 +15201,284 @@ game.import("character", function () { juexiang_club_bg: "响", juexiang_club_info: "直到下回合开始,不能被选择为其他角色使用梅花牌的目标。", jianzheng: "谏征", - jianzheng_info: - "当一名其他角色使用【杀】指定目标时,若你在其攻击范围内且你不是目标,则你可以将一张手牌置于牌堆顶,取消所有目标,然后若此【杀】不为黑色,你成为目标。", + jianzheng_info: "当一名其他角色使用【杀】指定目标时,若你在其攻击范围内且你不是目标,则你可以将一张手牌置于牌堆顶,取消所有目标,然后若此【杀】不为黑色,你成为目标。", zhuandui: "专对", - zhuandui_info: - "当你使用【杀】指定目标/成为【杀】的目标后,你可以与目标角色/此【杀】使用者拼点,若你赢,此杀不能被【闪】响应/对你无效。", - zhuandui_use_info: - "当你使用【杀】指定目标后,你可以与目标角色拼点,若你赢,此杀不能被【闪】响应。", - zhuandui_respond_info: - "当你成为【杀】的目标后,你可以与此【杀】使用者拼点,若你赢,此杀对你无效。", + zhuandui_info: "当你使用【杀】指定目标/成为【杀】的目标后,你可以与目标角色/此【杀】使用者拼点,若你赢,此杀不能被【闪】响应/对你无效。", + zhuandui_use_info: "当你使用【杀】指定目标后,你可以与目标角色拼点,若你赢,此杀不能被【闪】响应。", + zhuandui_respond_info: "当你成为【杀】的目标后,你可以与此【杀】使用者拼点,若你赢,此杀对你无效。", tianbian: "天辩", - tianbian_info: - "你拼点时,可以改为用牌堆顶的一张牌进行拼点;当你拼点的牌亮出后,若此牌花色为红桃,则此牌的点数视为K。", + tianbian_info: "你拼点时,可以改为用牌堆顶的一张牌进行拼点;当你拼点的牌亮出后,若此牌花色为红桃,则此牌的点数视为K。", funan: "复难", - funan_info: - "其他角色使用或打出牌响应你使用的牌时,你可令其获得你使用的牌(其本回合不能使用或打出这些牌),然后你获得其使用或打出的牌。", + funan_info: "其他角色使用或打出牌响应你使用的牌时,你可令其获得你使用的牌(其本回合不能使用或打出这些牌),然后你获得其使用或打出的牌。", jiexun: "诫训", - jiexun_info: - "结束阶段,你可令一名其他角色摸等同于场上方块牌数的牌,然后弃置X张牌(X为此前该技能发动过的次数)。若有角色因此法弃置了所有牌,则你失去〖诫训〗,然后你发动〖复难〗时,无须令对方获得你使用的牌。", + jiexun_info: "结束阶段,你可令一名其他角色摸等同于场上方块牌数的牌,然后弃置X张牌(X为此前该技能发动过的次数)。若有角色因此法弃置了所有牌,则你失去〖诫训〗,然后你发动〖复难〗时,无须令对方获得你使用的牌。", xinjiexun: "诫训", - xinjiexun_info: - "结束阶段,你可令一名其他角色摸等同于场上方块牌数的牌,然后弃置X张牌(X为此前该技能发动过的次数)。若有角色因此法弃置了所有牌,则你将X归零,然后你发动〖复难〗时,无须令对方获得你使用的牌。", + xinjiexun_info: "结束阶段,你可令一名其他角色摸等同于场上方块牌数的牌,然后弃置X张牌(X为此前该技能发动过的次数)。若有角色因此法弃置了所有牌,则你将X归零,然后你发动〖复难〗时,无须令对方获得你使用的牌。", shouxi: "守玺", - shouxi_info: - "当你成为【杀】的目标后,你可声明一种未以此法声明过的基本牌或锦囊牌的牌名。若使用者弃置一张你声明的牌,其获得你的一张牌;若否,则此【杀】对你无效。", + shouxi_info: "当你成为【杀】的目标后,你可声明一种未以此法声明过的基本牌或锦囊牌的牌名。若使用者弃置一张你声明的牌,其获得你的一张牌;若否,则此【杀】对你无效。", huimin: "惠民", - huimin_info: - "结束阶段,你可以摸X张牌并展示等量手牌(X为手牌数小于其体力值的角色数),然后从你指定的一名角色开始这些角色依次选择并获得其中一张。", + huimin_info: "结束阶段,你可以摸X张牌并展示等量手牌(X为手牌数小于其体力值的角色数),然后从你指定的一名角色开始这些角色依次选择并获得其中一张。", wengua: "问卦", wengua2: "问卦", - wengua_info: - "其他角色/你的出牌阶段限一次,其可以交给你一张牌,(若当前回合角色为你,则跳过此步骤),你可以将此牌/一张牌置于牌堆顶或牌堆底,然后你与其/你从另一端摸一张牌。", + wengua_info: "其他角色/你的出牌阶段限一次,其可以交给你一张牌,(若当前回合角色为你,则跳过此步骤),你可以将此牌/一张牌置于牌堆顶或牌堆底,然后你与其/你从另一端摸一张牌。", fuzhu: "伏诛", - fuzhu_info: - "一名男性角色的结束阶段,若牌堆剩余牌数不大于你体力值的十倍,则你可以依次对其使用牌堆中所有的【杀】(不能超过游戏人数),然后洗牌。", + fuzhu_info: "一名男性角色的结束阶段,若牌堆剩余牌数不大于你体力值的十倍,则你可以依次对其使用牌堆中所有的【杀】(不能超过游戏人数),然后洗牌。", fumian: "福绵", - fumian_info: - "准备阶段,你可以选择一项:1.摸牌阶段多摸一张牌;2.使用红色牌可以多选择一个目标(限一次)。若与你上回合选择的选项不同,则该选项数值+1并复原此技能。", + fumian_info: "准备阶段,你可以选择一项:1.摸牌阶段多摸一张牌;2.使用红色牌可以多选择一个目标(限一次)。若与你上回合选择的选项不同,则该选项数值+1并复原此技能。", daiyan: "怠宴", - daiyan_info: - "结束阶段,你可以令一名其他角色从牌堆中获得一张红桃基本牌,然后若其于上回合成为过该技能目标,则其失去1点体力。", + daiyan_info: "结束阶段,你可以令一名其他角色从牌堆中获得一张红桃基本牌,然后若其于上回合成为过该技能目标,则其失去1点体力。", xinzhongjian: "忠鉴", - xinzhongjian_info: - "出牌阶段限一次,你可以展示自己的一张手牌,然后展示一名其他角色的至多三张手牌。其展示的牌中:每有一张花色相同,你摸一张牌;点数相同,你对其造成1点伤害;均不同,你弃置一张手牌。", + xinzhongjian_info: "出牌阶段限一次,你可以展示自己的一张手牌,然后展示一名其他角色的至多三张手牌。其展示的牌中:每有一张花色相同,你摸一张牌;点数相同,你对其造成1点伤害;均不同,你弃置一张手牌。", zhongjian: "忠鉴", zhongjian_bg: "鉴", zhongjian3: "忠鉴", zhongjian3_bg: "鉴", - zhongjian_info: - "出牌阶段限一次,你可以展示一张手牌,然后展示一名其他角色的X张手牌(X为其体力值)。若以此法展示的牌与你展示的牌:有颜色相同的,你选择:①摸一张牌。②弃置一名其他角色的一张牌;有点数相同的,本回合此技能改为“出牌阶段限两次”;均不同,你的手牌上限-1。", + zhongjian_info: "出牌阶段限一次,你可以展示一张手牌,然后展示一名其他角色的X张手牌(X为其体力值)。若以此法展示的牌与你展示的牌:有颜色相同的,你选择:①摸一张牌。②弃置一名其他角色的一张牌;有点数相同的,本回合此技能改为“出牌阶段限两次”;均不同,你的手牌上限-1。", caishi: "才识", caishix: "才识/忠鉴", - caishi_info: - "摸牌阶段开始时,你可以选择一项:1.令手牌上限+1;2.回复1点体力,本回合内不能对自己使用牌。", + caishi_info: "摸牌阶段开始时,你可以选择一项:1.令手牌上限+1;2.回复1点体力,本回合内不能对自己使用牌。", xincaishi: "才识", - xincaishi_info: - "摸牌阶段,你可以选择一项:1.少摸一张牌,然后本回合发动〖忠鉴〗时可以多展示自己的一张牌;2.本回合手牌上限-1,然后本回合发动〖忠鉴〗时可以多展示对方的一张牌;3.多摸两张牌,本回合不能发动〖忠鉴〗。", + xincaishi_info: "摸牌阶段,你可以选择一项:1.少摸一张牌,然后本回合发动〖忠鉴〗时可以多展示自己的一张牌;2.本回合手牌上限-1,然后本回合发动〖忠鉴〗时可以多展示对方的一张牌;3.多摸两张牌,本回合不能发动〖忠鉴〗。", guizao: "瑰藻", - guizao_info: - "弃牌阶段结束时,若你于此阶段弃置牌的数量不小于2且它们的花色各不相同,你可以回复1点体力或摸一张牌。", + guizao_info: "弃牌阶段结束时,若你于此阶段弃置牌的数量不小于2且它们的花色各不相同,你可以回复1点体力或摸一张牌。", jiyu: "讥谀", - jiyu_info: - "出牌阶段限一次,你可以令一名角色弃置一张手牌。若如此做,你不能使用与之相同花色的牌,直到回合结束。若其以此法弃置的牌为黑桃,你翻面并令其失去1点体力。若你有未被〖讥谀〗限制的手牌,则你可以继续发动此技能,但不能选择本回合已经选择过的目标。", + jiyu_info: "出牌阶段限一次,你可以令一名角色弃置一张手牌。若如此做,你不能使用与之相同花色的牌,直到回合结束。若其以此法弃置的牌为黑桃,你翻面并令其失去1点体力。若你有未被〖讥谀〗限制的手牌,则你可以继续发动此技能,但不能选择本回合已经选择过的目标。", qinqing: "寝情", - qinqing_info: - "结束阶段,你可以选择任意名攻击范围内含有主公的角色,然后弃置这些角色各一张牌并令其摸一张牌(无牌则不弃),若如此做,你摸X张牌(X为其中手牌比主公多的角色数)。", - qinqing_info_doudizhu: - "结束阶段,你可以选择任意名攻击范围内含有地主的角色,然后弃置这些角色各一张牌并令其摸一张牌(无牌则不弃),若如此做,你摸X张牌(X为其中手牌比地主多的角色数)。", + qinqing_info: "结束阶段,你可以选择任意名攻击范围内含有主公的角色,然后弃置这些角色各一张牌并令其摸一张牌(无牌则不弃),若如此做,你摸X张牌(X为其中手牌比主公多的角色数)。", + qinqing_info_doudizhu: "结束阶段,你可以选择任意名攻击范围内含有地主的角色,然后弃置这些角色各一张牌并令其摸一张牌(无牌则不弃),若如此做,你摸X张牌(X为其中手牌比地主多的角色数)。", huisheng: "贿生", - huisheng_info: - "当你受到其他角色对你造成的伤害时,你可以令其观看你任意数量的牌并令其选择一项:1.获得这些牌中的一张,防止此伤害,然后你不能再对其发动〖贿生〗;2.弃置等量的牌。", + huisheng_info: "当你受到其他角色对你造成的伤害时,你可以令其观看你任意数量的牌并令其选择一项:1.获得这些牌中的一张,防止此伤害,然后你不能再对其发动〖贿生〗;2.弃置等量的牌。", jishe: "极奢", jishe2: "极奢", - jishe_info: - "①出牌阶段限20次,若你的手牌上限大于0,你可以摸一张牌,然后你本回合的手牌上限-1。②结束阶段开始时,若你没有手牌,则你可以横置至多X名角色的武将牌(X为你的体力值)。", + jishe_info: "①出牌阶段限20次,若你的手牌上限大于0,你可以摸一张牌,然后你本回合的手牌上限-1。②结束阶段开始时,若你没有手牌,则你可以横置至多X名角色的武将牌(X为你的体力值)。", lianhuo: "链祸", - lianhuo_info: - "锁定技,当你受到火焰伤害时,若你的武将牌处于横置状态且此伤害不为连环伤害,则此伤害+1。", + lianhuo_info: "锁定技,当你受到火焰伤害时,若你的武将牌处于横置状态且此伤害不为连环伤害,则此伤害+1。", taoluan: "滔乱", taoluan_backup: "滔乱", - taoluan_info: - "你可以将一张牌当做任意一张基本牌或普通锦囊牌使用(此牌不得是本局游戏你以此法使用过的牌),然后你令一名其他角色选择一项:1.交给你一张与你以此法使用的牌类别不同的牌;2.你失去1点体力且〖滔乱〗无效直到回合结束。", + taoluan_info: "你可以将一张牌当做任意一张基本牌或普通锦囊牌使用(此牌不得是本局游戏你以此法使用过的牌),然后你令一名其他角色选择一项:1.交给你一张与你以此法使用的牌类别不同的牌;2.你失去1点体力且〖滔乱〗无效直到回合结束。", xintaoluan: "滔乱", xintaoluan_backup: "滔乱", - xintaoluan_info: - "若场上没有濒死的角色,则你可以将一张牌当做任意一张基本牌或普通锦囊牌使用(此牌不得是本回合内你以此法使用过的牌),然后你令一名其他角色选择一项:1.交给你X张与你以此法使用的牌类别不同的牌;2.你失去X点体力且滔乱无效直到回合结束(X为你本回合内发动过〖滔乱〗的次数且至多为3)。", + xintaoluan_info: "若场上没有濒死的角色,则你可以将一张牌当做任意一张基本牌或普通锦囊牌使用(此牌不得是本回合内你以此法使用过的牌),然后你令一名其他角色选择一项:1.交给你X张与你以此法使用的牌类别不同的牌;2.你失去X点体力且滔乱无效直到回合结束(X为你本回合内发动过〖滔乱〗的次数且至多为3)。", jiaozhao: "矫诏", jiaozhao3: "矫诏", jiaozhao3_backup: "矫诏", jiaozhao2: "矫诏", - jiaozhao_info: - "出牌阶段限一次,你可以展示一张手牌,然后选择距离最近的一名其他角色,该角色声明一张基本牌的牌名。在此出牌阶段内,你可以将此手牌当声明的牌使用(你不能对自己使用此牌)。", + jiaozhao_info: "出牌阶段限一次,你可以展示一张手牌,然后选择距离最近的一名其他角色,该角色声明一张基本牌的牌名。在此出牌阶段内,你可以将此手牌当声明的牌使用(你不能对自己使用此牌)。", danxin: "殚心", - danxin_info: - "当你受到伤害后,你可以摸一张牌,或对“矫诏”的描述依次执行下列一项修改:1.将“基本牌”改为“基本牌或普通锦囊牌”;2.将“选择距离最近的一名其他角色,该角色”改为“你”。", + danxin_info: "当你受到伤害后,你可以摸一张牌,或对“矫诏”的描述依次执行下列一项修改:1.将“基本牌”改为“基本牌或普通锦囊牌”;2.将“选择距离最近的一名其他角色,该角色”改为“你”。", xindanxin: "殚心", - xindanxin_info: - "当你受到伤害后,你可以摸一张牌,并对“矫诏”的描述依次执行下列一项修改:1.将“基本牌”改为“基本牌或普通锦囊牌”;2.将“选择距离最近的一名其他角色,该角色”改为“你”。3.将“出牌阶段限一次”改为“出牌阶段限两次”。", + xindanxin_info: "当你受到伤害后,你可以摸一张牌,并对“矫诏”的描述依次执行下列一项修改:1.将“基本牌”改为“基本牌或普通锦囊牌”;2.将“选择距离最近的一名其他角色,该角色”改为“你”。3.将“出牌阶段限一次”改为“出牌阶段限两次”。", duliang: "督粮", duliang2: "督粮", - duliang_info: - "出牌阶段限一次,你可以获得一名其他角色的一张手牌,然后选择一项:1.令其观看牌堆顶的两张牌,然后获得其中的基本牌;2.令其于下个摸牌阶段额外摸一张牌。", + duliang_info: "出牌阶段限一次,你可以获得一名其他角色的一张手牌,然后选择一项:1.令其观看牌堆顶的两张牌,然后获得其中的基本牌;2.令其于下个摸牌阶段额外摸一张牌。", fulin: "腹鳞", fulin_info: "锁定技,你于回合内得到的牌不计入你本回合的手牌上限。", kuangbi: "匡弼", - kuangbi_info: - "出牌阶段限一次,你可以选择一名有牌的其他角色,该角色将其的一至三张牌置于你的武将牌上。若如此做,你的下个准备阶段,你获得武将牌上的所有牌,然后其摸等量的牌。", + kuangbi_info: "出牌阶段限一次,你可以选择一名有牌的其他角色,该角色将其的一至三张牌置于你的武将牌上。若如此做,你的下个准备阶段,你获得武将牌上的所有牌,然后其摸等量的牌。", xinzhige: "止戈", - xinzhige_info: - "出牌阶段限一次,你可以令一名攻击范围内含有你的其他角色交给你一张【杀】或武器牌,否则其视为对你指定的另一名其攻击范围内的角色使用了一张【杀】。", + xinzhige_info: "出牌阶段限一次,你可以令一名攻击范围内含有你的其他角色交给你一张【杀】或武器牌,否则其视为对你指定的另一名其攻击范围内的角色使用了一张【杀】。", zhige: "止戈", - zhige_info: - "出牌阶段限一次,若你的手牌数大于你的体力值,你可以选择攻击范围内含有你的一名其他角色,其选择一项:1.使用一张【杀】;2.将装备区里的一张牌交给你。", + zhige_info: "出牌阶段限一次,若你的手牌数大于你的体力值,你可以选择攻击范围内含有你的一名其他角色,其选择一项:1.使用一张【杀】;2.将装备区里的一张牌交给你。", xinzongzuo: "宗祚", - xinzongzuo_info: - "锁定技,游戏的第一个回合开始前,你加X点体力上限并回复X点体力(X为全场势力数);当一名角色死亡后,若没有与其势力相同的角色,你减1点体力上限并摸两张牌。", + xinzongzuo_info: "锁定技,游戏的第一个回合开始前,你加X点体力上限并回复X点体力(X为全场势力数);当一名角色死亡后,若没有与其势力相同的角色,你减1点体力上限并摸两张牌。", zongzuo: "宗祚", - zongzuo_info: - "锁定技,游戏的第一个回合开始前,你加X点体力上限并回复X点体力(X为全场势力数);当一名角色死亡后,若没有与其势力相同的角色,你减1点体力上限。", + zongzuo_info: "锁定技,游戏的第一个回合开始前,你加X点体力上限并回复X点体力(X为全场势力数);当一名角色死亡后,若没有与其势力相同的角色,你减1点体力上限。", xinjuece: "绝策", xinjuece_info: "结束阶段,你可以对一名没有手牌的角色造成1点伤害。", xinmieji: "灭计", - xinmieji_info: - "出牌阶段限一次,你可以展示一张黑色锦囊牌并将之置于牌堆顶,然后令有手牌的一名其他角色选择一项:弃置一张锦囊牌;或依次弃置两张非锦囊牌。", + xinmieji_info: "出牌阶段限一次,你可以展示一张黑色锦囊牌并将之置于牌堆顶,然后令有手牌的一名其他角色选择一项:弃置一张锦囊牌;或依次弃置两张非锦囊牌。", xinfencheng: "焚城", - xinfencheng_info: - "限定技。出牌阶段,你可以令所有其他角色各选择一项:弃置至少X张牌(X为该角色的上家以此法弃置牌的数量+1);或受到你对其造成的2点火焰伤害。", + xinfencheng_info: "限定技。出牌阶段,你可以令所有其他角色各选择一项:弃置至少X张牌(X为该角色的上家以此法弃置牌的数量+1);或受到你对其造成的2点火焰伤害。", qianju: "千驹", qianju_info: "锁定技,若你已受伤,你计算与其他角色的距离时-X(X为你已损失的体力值)。", qingxi: "倾袭", - qingxi_info: - "当你使用【杀】对目标角色造成伤害时,若你的装备区里有武器牌,你可以令其选择一项:1、弃置X张手牌(X为此武器牌的攻击范围),若如此做,其弃置你的此武器牌;2、令伤害值+1。", + qingxi_info: "当你使用【杀】对目标角色造成伤害时,若你的装备区里有武器牌,你可以令其选择一项:1、弃置X张手牌(X为此武器牌的攻击范围),若如此做,其弃置你的此武器牌;2、令伤害值+1。", reqianju: "千驹", reqianju_info: "锁定技,若你已受伤,你计算与其他角色的距离时-X(X为你已损失的体力值且至少为1)。", reqingxi: "倾袭", - reqingxi_info: - "当你使用【杀】或【决斗】指定目标后,你可以令其选择一项:1、弃置X张手牌(X为你攻击范围内的角色数,且当你装备区内有武器牌/没有武器牌时至多为4/2),若如此做,其弃置你的此武器牌;2、令此牌的伤害值+1且你进行判定,若结果为红色,则其不能响应此牌。", + reqingxi_info: "当你使用【杀】或【决斗】指定目标后,你可以令其选择一项:1、弃置X张手牌(X为你攻击范围内的角色数,且当你装备区内有武器牌/没有武器牌时至多为4/2),若如此做,其弃置你的此武器牌;2、令此牌的伤害值+1且你进行判定,若结果为红色,则其不能响应此牌。", jieyue: "节钺", - jieyue_info: - "①结束阶段,你可以弃置一张手牌,然后令一名其他角色选择一项:1.将一张牌置于你的武将牌上,称之为“节”;2.令你弃置其一张牌。②若你有“节”,你可以将红色/黑色手牌当作【闪】/【无懈可击】使用或打出。③准备阶段,若你有“节”,则你获得之。", + jieyue_info: "①结束阶段,你可以弃置一张手牌,然后令一名其他角色选择一项:1.将一张牌置于你的武将牌上,称之为“节”;2.令你弃置其一张牌。②若你有“节”,你可以将红色/黑色手牌当作【闪】/【无懈可击】使用或打出。③准备阶段,若你有“节”,则你获得之。", xianzhen: "陷阵", - xianzhen_info: - "出牌阶段限一次,你可以与一名角色拼点。若你赢,你获得以下效果直到回合结束:无视与该角色的距离;无视该角色的防具且对其使用【杀】没有次数限制。若你没赢,你不能使用【杀】直到回合结束。", + xianzhen_info: "出牌阶段限一次,你可以与一名角色拼点。若你赢,你获得以下效果直到回合结束:无视与该角色的距离;无视该角色的防具且对其使用【杀】没有次数限制。若你没赢,你不能使用【杀】直到回合结束。", xinxianzhen: "陷阵", - xinxianzhen_info: - "出牌阶段限一次,你可以与一名角色拼点。若你赢,你获得以下效果直到回合结束:无视该角色的防具且对其使用牌没有次数和距离限制,且当你使用【杀】或普通锦囊牌指定其他角色为唯一目标时可以令该角色也成为此牌的目标。若你没赢,你不能使用【杀】且你的【杀】不计入手牌上限直到回合结束。", + xinxianzhen_info: "出牌阶段限一次,你可以与一名角色拼点。若你赢,你获得以下效果直到回合结束:无视该角色的防具且对其使用牌没有次数和距离限制,且当你使用【杀】或普通锦囊牌指定其他角色为唯一目标时可以令该角色也成为此牌的目标。若你没赢,你不能使用【杀】且你的【杀】不计入手牌上限直到回合结束。", xinxianzhen2: "陷阵", jinjiu: "禁酒", jinjiu_info: "锁定技,你的【酒】均视为【杀】。", chunlao: "醇醪", chunlao2: "醇醪", - chunlao_info: - "结束阶段开始时,若你没有“醇”,你可以将至少一张【杀】置于你的武将牌上,称为“醇”。当一名角色处于濒死状态时,你可以移去一张“醇”,视为该角色使用一张【酒】。", + chunlao_info: "结束阶段开始时,若你没有“醇”,你可以将至少一张【杀】置于你的武将牌上,称为“醇”。当一名角色处于濒死状态时,你可以移去一张“醇”,视为该角色使用一张【酒】。", lihuo: "疠火", - lihuo_info: - "当你声明使用普通【杀】后,你可以将此【杀】改为火【杀】。若以此法使用的【杀】造成了伤害,则此【杀】结算后你失去1点体力;你使用火【杀】选择目标后,可以额外指定一个目标。", + lihuo_info: "当你声明使用普通【杀】后,你可以将此【杀】改为火【杀】。若以此法使用的【杀】造成了伤害,则此【杀】结算后你失去1点体力;你使用火【杀】选择目标后,可以额外指定一个目标。", shenduan: "慎断", - shenduan_info: - "当你的黑色基本牌因弃置而进入弃牌堆后,你可以将其当做【兵粮寸断】使用(无距离限制)。", + shenduan_info: "当你的黑色基本牌因弃置而进入弃牌堆后,你可以将其当做【兵粮寸断】使用(无距离限制)。", yonglve: "勇略", - yonglve_info: - "一名其他角色的判定阶段开始时,若其在你攻击范围内,则你可以弃置其判定区里的一张牌,视为对该角色使用一张【杀】。若此【杀】未造成伤害,你摸一张牌。", + yonglve_info: "一名其他角色的判定阶段开始时,若其在你攻击范围内,则你可以弃置其判定区里的一张牌,视为对该角色使用一张【杀】。若此【杀】未造成伤害,你摸一张牌。", reshenduan: "慎断", - reshenduan_info: - "当你的黑色基本牌或装备牌因弃置而进入弃牌堆后,你可以将其当做【兵粮寸断】使用(无距离限制)。", + reshenduan_info: "当你的黑色基本牌或装备牌因弃置而进入弃牌堆后,你可以将其当做【兵粮寸断】使用(无距离限制)。", reyonglve: "勇略", - reyonglve_info: - "其他角色的判定阶段开始时,你可以弃置其判定区里的一张牌。然后若该角色在你攻击范围内,你摸一张牌。若其在你攻击范围外,视为你对其使用一张【杀】。", + reyonglve_info: "其他角色的判定阶段开始时,你可以弃置其判定区里的一张牌。然后若该角色在你攻击范围内,你摸一张牌。若其在你攻击范围外,视为你对其使用一张【杀】。", benxi: "奔袭", - benxi_info: - "锁定技,你的回合内,你每使用一次牌后,你的进攻距离+1直到回合结束;你的回合内,若你与所有角色的距离均为1,你无视其他角色的防具,且你使用的【杀】可额外指定一个目标。", + benxi_info: "锁定技,你的回合内,你每使用一次牌后,你的进攻距离+1直到回合结束;你的回合内,若你与所有角色的距离均为1,你无视其他角色的防具,且你使用的【杀】可额外指定一个目标。", xinbenxi: "奔袭", - xinbenxi_info: - "锁定技,当你于回合内使用牌时,你本回合计算与其他角色的距离-1。你的回合内,若你至场上所有其他角色的距离均不大于1,则当你使用【杀】或普通锦囊牌选择唯一目标后,你选择至多两项:1.为此牌多指定一个目标;2.令此牌无视防具;3.令此牌不可被抵消;4.此牌造成伤害时摸一张牌。", + xinbenxi_info: "锁定技,当你于回合内使用牌时,你本回合计算与其他角色的距离-1。你的回合内,若你至场上所有其他角色的距离均不大于1,则当你使用【杀】或普通锦囊牌选择唯一目标后,你选择至多两项:1.为此牌多指定一个目标;2.令此牌无视防具;3.令此牌不可被抵消;4.此牌造成伤害时摸一张牌。", sidi: "司敌", sidi2: "司敌", sidi3: "司敌", - sidi_info: - "①当你使用或其他角色在你的回合内使用【闪】时,你可以将牌堆顶的牌置于你的武将牌上,称为“司敌”牌。②其他角色的出牌阶段开始时,你可以移去一张“司敌”牌,令其本阶段使用【杀】的次数上限-1。", + sidi_info: "①当你使用或其他角色在你的回合内使用【闪】时,你可以将牌堆顶的牌置于你的武将牌上,称为“司敌”牌。②其他角色的出牌阶段开始时,你可以移去一张“司敌”牌,令其本阶段使用【杀】的次数上限-1。", xinsidi: "司敌", xinsidi2: "司敌", - xinsidi_info: - "其他角色出牌阶段开始时,你可以弃置一张与你装备区里的牌颜色相同的非基本牌,然后该角色于此阶段内不能使用和打出与此牌颜色相同的牌。此阶段结束时,若其此阶段没有使用【杀】,视为你对其使用了【杀】。", + xinsidi_info: "其他角色出牌阶段开始时,你可以弃置一张与你装备区里的牌颜色相同的非基本牌,然后该角色于此阶段内不能使用和打出与此牌颜色相同的牌。此阶段结束时,若其此阶段没有使用【杀】,视为你对其使用了【杀】。", dangxian: "当先", dangxian_info: "锁定技,回合开始时,你执行一个额外的出牌阶段。", xindangxian: "当先", - xindangxian_info: - "锁定技,回合开始时,你执行一个额外的出牌阶段。此阶段开始时,你失去1点体力并从牌堆/弃牌堆中获得一张【杀】(若你已发动过〖伏枥〗,则可以不发动此效果)。", + xindangxian_info: "锁定技,回合开始时,你执行一个额外的出牌阶段。此阶段开始时,你失去1点体力并从牌堆/弃牌堆中获得一张【杀】(若你已发动过〖伏枥〗,则可以不发动此效果)。", longyin: "龙吟", - longyin_info: - "当一名角色于其出牌阶段内使用【杀】时,你可弃置一张牌令此【杀】不计入出牌阶段使用次数,若此【杀】为红色,你摸一张牌。", + longyin_info: "当一名角色于其出牌阶段内使用【杀】时,你可弃置一张牌令此【杀】不计入出牌阶段使用次数,若此【杀】为红色,你摸一张牌。", zhongyong: "忠勇", - zhongyong_info: - "当你于出牌阶段内使用的【杀】被目标角色使用的【闪】抵消时,你可以将此【闪】交给除该角色外的一名角色。若获得此【闪】的角色不是你,你可以对相同的目标再使用一张【杀】。", + zhongyong_info: "当你于出牌阶段内使用的【杀】被目标角色使用的【闪】抵消时,你可以将此【闪】交给除该角色外的一名角色。若获得此【闪】的角色不是你,你可以对相同的目标再使用一张【杀】。", xinzhongyong: "忠勇", - xinzhongyong_info: - "当你使用的【杀】结算完毕后,你可以将此【杀】或目标角色使用的【闪】交给一名该角色以外的其他角色,以此法得到红色牌的角色可以对你攻击范围内的角色使用一张【杀】。", + xinzhongyong_info: "当你使用的【杀】结算完毕后,你可以将此【杀】或目标角色使用的【闪】交给一名该角色以外的其他角色,以此法得到红色牌的角色可以对你攻击范围内的角色使用一张【杀】。", jigong: "急攻", - jigong_info: - "出牌阶段开始时,你可以摸两张牌。若如此做,你本回合的手牌上限改为X(X为你此阶段造成的伤害点数之和)。", + jigong_info: "出牌阶段开始时,你可以摸两张牌。若如此做,你本回合的手牌上限改为X(X为你此阶段造成的伤害点数之和)。", shifei: "饰非", - shifei_info: - "当你需要使用或打出【闪】时,你可以令当前回合角色摸一张牌。然后若其手牌数不为全场唯一最多,则你弃置全场手牌数最多(或之一)角色的一张牌,视为你使用或打出了一张【闪】。", + shifei_info: "当你需要使用或打出【闪】时,你可以令当前回合角色摸一张牌。然后若其手牌数不为全场唯一最多,则你弃置全场手牌数最多(或之一)角色的一张牌,视为你使用或打出了一张【闪】。", huaiyi: "怀异", - huaiyi_info: - "出牌阶段限一次,你可以展示所有手牌,若这些牌的颜色不全部相同,则你选择一种颜色并弃置该颜色的所有手牌,然后你可以获得至多X名角色的各一张牌(X为你以此法弃置的手牌数)。若你以此法得到的牌不少于两张,则你失去1点体力。", + huaiyi_info: "出牌阶段限一次,你可以展示所有手牌,若这些牌的颜色不全部相同,则你选择一种颜色并弃置该颜色的所有手牌,然后你可以获得至多X名角色的各一张牌(X为你以此法弃置的手牌数)。若你以此法得到的牌不少于两张,则你失去1点体力。", yaoming: "邀名", - yaoming_info: - "每回合限一次,当你造成或受到伤害后,你可以选择一项:1. 弃置手牌数大于你的一名角色的一张手牌;2. 令手牌数小于你的一名角色摸一张牌。", + yaoming_info: "每回合限一次,当你造成或受到伤害后,你可以选择一项:1. 弃置手牌数大于你的一名角色的一张手牌;2. 令手牌数小于你的一名角色摸一张牌。", xinyaoming: "邀名", - xinyaoming_info: - "每回合每个选项限一次,当你造成或受到伤害后,你可以选择一项:1. 弃置一名其他角色的一张手牌;2. 令一名其他角色摸一张牌;3.令一名角色弃置至多两张牌,然后摸等量的牌。", + xinyaoming_info: "每回合每个选项限一次,当你造成或受到伤害后,你可以选择一项:1. 弃置一名其他角色的一张手牌;2. 令一名其他角色摸一张牌;3.令一名角色弃置至多两张牌,然后摸等量的牌。", anguo: "安国", - anguo_info: - "出牌阶段限一次,你可以选择一名其他角色装备区里的一张牌,令其获得此牌。然后若该角色攻击范围内的角色数因此减少,则你摸一张牌。", + anguo_info: "出牌阶段限一次,你可以选择一名其他角色装备区里的一张牌,令其获得此牌。然后若该角色攻击范围内的角色数因此减少,则你摸一张牌。", yanzhu: "宴诛", - yanzhu_info: - "出牌阶段限一次,你可以令一名有牌的其他角色选择一项:令你获得其装备区里所有的牌,然后你失去技能〖宴诛〗;或弃置一张牌。", + yanzhu_info: "出牌阶段限一次,你可以令一名有牌的其他角色选择一项:令你获得其装备区里所有的牌,然后你失去技能〖宴诛〗;或弃置一张牌。", xingxue: "兴学", - xingxue_info: - "结束阶段开始时,你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶(X为你的体力值,若你已失去技能〖宴诛〗,则将X改为你的体力上限)。", + xingxue_info: "结束阶段开始时,你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶(X为你的体力值,若你已失去技能〖宴诛〗,则将X改为你的体力上限)。", zhaofu: "诏缚", zhaofu_info: "主公技,锁定技,你距离为1的角色视为在其他吴势力角色的攻击范围内。", reyanzhu: "宴诛", reyanzhu2: "宴诛", - reyanzhu_info: - "出牌阶段限一次,你可以令一名其他角色选择一项:将装备区里的所有牌交给你并令你修改〖宴诛〗和〖兴学〗,或弃置一张牌并令下一次受到的伤害+1直到其下回合开始。", + reyanzhu_info: "出牌阶段限一次,你可以令一名其他角色选择一项:将装备区里的所有牌交给你并令你修改〖宴诛〗和〖兴学〗,或弃置一张牌并令下一次受到的伤害+1直到其下回合开始。", reyanzhu_rewrite: "宴诛·改", - reyanzhu_rewrite_info: - "出牌阶段限一次,你可以选择一名其他角色。该角色下一次受到的伤害+1直到其下回合开始。", + reyanzhu_rewrite_info: "出牌阶段限一次,你可以选择一名其他角色。该角色下一次受到的伤害+1直到其下回合开始。", rexingxue: "兴学", - rexingxue_info: - "结束阶段开始时,你可以令至多X名角色各摸一张牌。然后若有手牌数大于体力值的目标角色,则这些角色各将一张牌置于牌堆顶。(X为你的体力值)。", + rexingxue_info: "结束阶段开始时,你可以令至多X名角色各摸一张牌。然后若有手牌数大于体力值的目标角色,则这些角色各将一张牌置于牌堆顶。(X为你的体力值)。", rexingxue_rewrite: "兴学·改", - rexingxue_rewrite_info: - "结束阶段开始时,你可以令至多X名角色各摸一张牌。然后若有手牌数大于体力值的目标角色,则这些角色各将一张牌置于牌堆顶。(X为你的体力上限)。", + rexingxue_rewrite_info: "结束阶段开始时,你可以令至多X名角色各摸一张牌。然后若有手牌数大于体力值的目标角色,则这些角色各将一张牌置于牌堆顶。(X为你的体力上限)。", rezhaofu: "诏缚", rezhaofu_info: "主公技,锁定技,你攻击范围内的角色视为在其他吴势力角色的攻击范围内。", wurong: "怃戎", - wurong_info: - "出牌阶段限一次,你可以令一名其他角色与你同时展示一张手牌:若你展示的是【杀】且该角色展示的不是【闪】,则你弃置此【杀】并对其造成1点伤害;若你展示的不是【杀】且该角色展示的是【闪】,则你弃置你展示的牌并获得其一张牌。", + wurong_info: "出牌阶段限一次,你可以令一名其他角色与你同时展示一张手牌:若你展示的是【杀】且该角色展示的不是【闪】,则你弃置此【杀】并对其造成1点伤害;若你展示的不是【杀】且该角色展示的是【闪】,则你弃置你展示的牌并获得其一张牌。", shizhi: "矢志", shizhi_info: "锁定技,当你的体力值为1时,你的【闪】均视为【杀】。", zhanjue: "战绝", - zhanjue_info: - "出牌阶段,你可以将所有手牌当作【决斗】使用。此【决斗】结算后,你与以此法受到伤害的角色各摸一张牌。若你在同一阶段内以此法摸了两张或更多的牌,则此技能失效直到回合结束。", + zhanjue_info: "出牌阶段,你可以将所有手牌当作【决斗】使用。此【决斗】结算后,你与以此法受到伤害的角色各摸一张牌。若你在同一阶段内以此法摸了两张或更多的牌,则此技能失效直到回合结束。", qinwang: "勤王", qinwang1: "勤王", qinwang2: "勤王", - qinwang_info: - "主公技,当你需要使用或打出一张【杀】时,你可以弃置一张牌,然后视为你发动了〖激将①〗。若有角色响应,则该角色打出【杀】时摸一张牌。", + qinwang_info: "主公技,当你需要使用或打出一张【杀】时,你可以弃置一张牌,然后视为你发动了〖激将①〗。若有角色响应,则该角色打出【杀】时摸一张牌。", huomo: "活墨", - huomo_info: - "当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,视为使用此基本牌。", + huomo_info: "当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,视为使用此基本牌。", zuoding: "佐定", - zuoding_info: - "当其他角色于其回合内使用♠牌指定目标后,若本回合内没有角色受到过伤害,则你可以令其中一名目标角色摸一张牌。", + zuoding_info: "当其他角色于其回合内使用♠牌指定目标后,若本回合内没有角色受到过伤害,则你可以令其中一名目标角色摸一张牌。", taoxi: "讨袭", taoxi2: "讨袭", taoxi3: "讨袭", - taoxi_info: - "出牌阶段限一次。当你使用牌指定一名其他角色为唯一目标后,你可以亮出其一张手牌直到回合结束,并且你于此回合内可以将此牌如手牌般使用。回合结束时,若此牌仍在该角色手牌区里,你失去1点体力。", + taoxi_info: "出牌阶段限一次。当你使用牌指定一名其他角色为唯一目标后,你可以亮出其一张手牌直到回合结束,并且你于此回合内可以将此牌如手牌般使用。回合结束时,若此牌仍在该角色手牌区里,你失去1点体力。", huituo: "恢拓", - huituo_info: - "当你受到伤害后,你可以令一名角色进行一次判定,若结果为红色,该角色回复1点体力;若结果为黑色,该角色摸X张牌(X为此次伤害的伤害点数)。", + huituo_info: "当你受到伤害后,你可以令一名角色进行一次判定,若结果为红色,该角色回复1点体力;若结果为黑色,该角色摸X张牌(X为此次伤害的伤害点数)。", mingjian: "明鉴", mingjian2: "明鉴", - mingjian_info: - "出牌阶段限一次。你可以将所有手牌交给一名其他角色,然后该角色于其下个回合的手牌上限+1,且使用【杀】的次数上限+1。", + mingjian_info: "出牌阶段限一次。你可以将所有手牌交给一名其他角色,然后该角色于其下个回合的手牌上限+1,且使用【杀】的次数上限+1。", xingshuai: "兴衰", - xingshuai_info: - "主公技,限定技,当你进入濒死状态时,其他魏势力角色可依次令你回复1点体力,然后这些角色依次受到1点伤害。", + xingshuai_info: "主公技,限定技,当你进入濒死状态时,其他魏势力角色可依次令你回复1点体力,然后这些角色依次受到1点伤害。", reduodao: "夺刀", - reduodao_info: - "当你成为【杀】的目标后,你可以弃置一张牌。然后你获得此【杀】使用者装备区里的武器牌。", + reduodao_info: "当你成为【杀】的目标后,你可以弃置一张牌。然后你获得此【杀】使用者装备区里的武器牌。", reanjian: "暗箭", - reanjian_info: - "锁定技,当你使用【杀】指定目标后,若你不在其攻击范围内,则此杀伤害+1且无视其防具。若其因执行此【杀】的效果受到伤害而进入濒死状态,则其不能使用【桃】直到此濒死事件结算结束。", + reanjian_info: "锁定技,当你使用【杀】指定目标后,若你不在其攻击范围内,则此杀伤害+1且无视其防具。若其因执行此【杀】的效果受到伤害而进入濒死状态,则其不能使用【桃】直到此濒死事件结算结束。", duodao: "夺刀", duodao_info: "当你受到【杀】造成的伤害后,你可以弃置一张牌,然后获得伤害来源装备区里的武器牌。", anjian: "暗箭", anjian_info: "锁定技,当你使用【杀】对目标角色造成伤害时,若你不在其攻击范围内,则此杀伤害+1。", xinpojun: "破军", xinpojun2: "破军", - xinpojun_info: - "当你于出牌阶段内使用【杀】指定一个目标后,你可以将其至多X张牌扣置于该角色的武将牌旁(X为其体力值)。若如此做,当前回合结束后,该角色获得其武将牌旁的所有牌。", + xinpojun_info: "当你于出牌阶段内使用【杀】指定一个目标后,你可以将其至多X张牌扣置于该角色的武将牌旁(X为其体力值)。若如此做,当前回合结束后,该角色获得其武将牌旁的所有牌。", qiaoshi: "樵拾", qiaoshi_info: "其他角色的结束阶段开始时,若你的手牌数与其相等,则你可以与其各摸一张牌。", yanyu: "燕语", yanyu2: "燕语", - yanyu_info: - "出牌阶段,你可以重铸【杀】。出牌阶段结束时,若你于此阶段以此法重铸了至少两张【杀】,则你可以令一名男性角色摸两张牌。", + yanyu_info: "出牌阶段,你可以重铸【杀】。出牌阶段结束时,若你于此阶段以此法重铸了至少两张【杀】,则你可以令一名男性角色摸两张牌。", zzhenggong: "争功", zzhenggong_info: "当你受到伤害后,你可以获得伤害来源装备区里的一张牌并置入你的装备区。", zquanji: "权计", zquanji_info: "其他角色的回合开始时,你可以与该角色拼点。若你赢,该角色跳过准备阶段和判定阶段。", zbaijiang: "拜将", - zbaijiang_info: - "觉醒技。准备阶段,若你装备区里的牌数不少于两张,你加1点体力上限,失去〖权计〗和〖争功〗,获得〖野心〗和〖自立〗。", + zbaijiang_info: "觉醒技。准备阶段,若你装备区里的牌数不少于两张,你加1点体力上限,失去〖权计〗和〖争功〗,获得〖野心〗和〖自立〗。", zyexin: "野心", zyexin2: "野心", - zyexin_info: - "①当你造成或受到伤害后,你可以将牌堆顶的一张牌置于你的武将牌上,称为“权”。②出牌阶段限一次。你可以用任意数量的手牌与等量的“权”交换。", + zyexin_info: "①当你造成或受到伤害后,你可以将牌堆顶的一张牌置于你的武将牌上,称为“权”。②出牌阶段限一次。你可以用任意数量的手牌与等量的“权”交换。", zzili: "自立", zzili_info: "觉醒技。准备阶段,若你的“权”数不小于4,你减1点体力上限并获得〖排异〗。", zpaiyi: "排异", - zpaiyi_info: - "结束阶段,你可以选择一张“权”,若此牌为:装备牌,你将此牌置入一名角色的装备区;延时类锦囊牌,你将此牌置入一名角色的判定区;基本牌或普通锦囊牌,你将此牌交给一名角色。然后若此牌的目标区域对应的角色不为你,你可以摸一张牌。", + zpaiyi_info: "结束阶段,你可以选择一张“权”,若此牌为:装备牌,你将此牌置入一名角色的装备区;延时类锦囊牌,你将此牌置入一名角色的判定区;基本牌或普通锦囊牌,你将此牌交给一名角色。然后若此牌的目标区域对应的角色不为你,你可以摸一张牌。", shibei: "矢北", - shibei_info: - "锁定技,当你受到伤害后:若此伤害是你本回合第一次受到的伤害,则你回复1点体力;否则你失去1点体力。", + shibei_info: "锁定技,当你受到伤害后:若此伤害是你本回合第一次受到的伤害,则你回复1点体力;否则你失去1点体力。", jianying: "渐营", - jianying_info: - "当你于出牌阶段内使用与此阶段你使用的上一张牌点数或花色相同的牌时,你可以摸一张牌。", + jianying_info: "当你于出牌阶段内使用与此阶段你使用的上一张牌点数或花色相同的牌时,你可以摸一张牌。", xinenyuan: "恩怨", xinenyuan1: "恩怨", xinenyuan2: "恩怨", - xinenyuan_info: - "当你获得一名其他角色两张或更多的牌后,你可以令其摸一张牌;当你受到1点伤害后,你可以令伤害来源选择一项:1、将一张手牌交给你;2、失去1点体力。", + xinenyuan_info: "当你获得一名其他角色两张或更多的牌后,你可以令其摸一张牌;当你受到1点伤害后,你可以令伤害来源选择一项:1、将一张手牌交给你;2、失去1点体力。", xinxuanhuo: "眩惑", - xinxuanhuo_info: - "摸牌阶段开始时,你可以改为令一名其他角色摸两张牌,然后该角色需对其攻击范围内你选择的另一名角色使用一张【杀】,否则你获得其两张牌。", + xinxuanhuo_info: "摸牌阶段开始时,你可以改为令一名其他角色摸两张牌,然后该角色需对其攻击范围内你选择的另一名角色使用一张【杀】,否则你获得其两张牌。", fuhun: "父魂", fuhun2: "父魂", - fuhun_info: - "你可以将两张手牌当做【杀】使用或打出;当你于出牌阶段以此法使用的【杀】造成伤害后,你获得〖武圣〗和〖咆哮〗直到回合结束。", + fuhun_info: "你可以将两张手牌当做【杀】使用或打出;当你于出牌阶段以此法使用的【杀】造成伤害后,你获得〖武圣〗和〖咆哮〗直到回合结束。", yuce: "御策", - yuce_info: - "当你受到伤害后,你可以展示一张手牌,并令伤害来源选择一项:弃置一张与此牌类型不同的手牌,或令你回复1点体力。", + yuce_info: "当你受到伤害后,你可以展示一张手牌,并令伤害来源选择一项:弃置一张与此牌类型不同的手牌,或令你回复1点体力。", xiansi: "陷嗣", xiansix: "陷嗣", xiansi_bg: "逆", xiansi2: "陷嗣", - xiansi_info: - "准备阶段开始时,你可以将一至两名角色的各一张牌置于你的武将牌上,称为“逆”;当一名角色需要对你使用【杀】时,其可以移去两张“逆”,然后视为对你使用了一张【杀】。", + xiansi_info: "准备阶段开始时,你可以将一至两名角色的各一张牌置于你的武将牌上,称为“逆”;当一名角色需要对你使用【杀】时,其可以移去两张“逆”,然后视为对你使用了一张【杀】。", chanhui: "谮毁", - chanhui_info: - "出牌阶段限一次,当你使用【杀】或黑色普通锦囊牌指定唯一目标时,你可令可以成为此牌目标的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标。", + chanhui_info: "出牌阶段限一次,当你使用【杀】或黑色普通锦囊牌指定唯一目标时,你可令可以成为此牌目标的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标。", rechanhui: "谮毁", - rechanhui_info: - "当你使用【杀】或普通锦囊牌指定唯一目标时,你可令可以成为此牌目标(无距离限制)的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标且你本回合内不能再次发动〖谮毁〗。", + rechanhui_info: "当你使用【杀】或普通锦囊牌指定唯一目标时,你可令可以成为此牌目标(无距离限制)的另一名其他角色选择一项:交给你一张牌并成为此牌的使用者;或成为此牌的额外目标且你本回合内不能再次发动〖谮毁〗。", jiaojin: "骄矜", jiaojin_info: "当你受到男性角色造成的伤害时,你可以弃置一张装备牌,令此伤害-1。", rejiaojin: "骄矜", - rejiaojin_info: - "当你成为其他角色使用【杀】或普通锦囊牌的目标后,你可以弃置一张装备牌,令此牌对你无效并获得此牌对应的所有实体牌。若此牌的使用者为女性角色,则你令〖骄矜〗失效直到回合结束。", + rejiaojin_info: "当你成为其他角色使用【杀】或普通锦囊牌的目标后,你可以弃置一张装备牌,令此牌对你无效并获得此牌对应的所有实体牌。若此牌的使用者为女性角色,则你令〖骄矜〗失效直到回合结束。", shenxing: "慎行", shenxing_info: "出牌阶段,你可以弃置两张牌,然后摸一张牌。", bingyi: "秉壹", - bingyi_info: - "结束阶段开始时,你可以展示所有手牌,若这些牌颜色均相同,则你令至多X名角色各摸一张牌(X为你的手牌数)。", + bingyi_info: "结束阶段开始时,你可以展示所有手牌,若这些牌颜色均相同,则你令至多X名角色各摸一张牌(X为你的手牌数)。", qiangzhi: "强识", qiangzhi_draw: "强识", - qiangzhi_info: - "出牌阶段开始时,你可以展示一名其他角色的一张手牌。若如此做,当你于此阶段内使用与此牌类别相同的牌时,你可以摸一张牌。", + qiangzhi_info: "出牌阶段开始时,你可以展示一名其他角色的一张手牌。若如此做,当你于此阶段内使用与此牌类别相同的牌时,你可以摸一张牌。", xiantu: "献图", xiantu2: "献图", xiantu3: "献图", - xiantu_info: - "一名其他角色的出牌阶段开始时,你可以摸两张牌,然后交给其两张牌。若如此做,此阶段结束时,若该角色未于此阶段内杀死过角色,则你失去1点体力。", + xiantu_info: "一名其他角色的出牌阶段开始时,你可以摸两张牌,然后交给其两张牌。若如此做,此阶段结束时,若该角色未于此阶段内杀死过角色,则你失去1点体力。", dingpin: "定品", - dingpin_info: - "出牌阶段,你可以弃置一张手牌,然后令一名已受伤的角色判定,若结果为黑色,该角色摸X张牌(X为该角色已损失的体力值),然后你本回合不能再对其发动〖定品〗;若结果为红色,你翻面(你不能弃置本回合已弃置或使用过的类型的牌)。", + dingpin_info: "出牌阶段,你可以弃置一张手牌,然后令一名已受伤的角色判定,若结果为黑色,该角色摸X张牌(X为该角色已损失的体力值),然后你本回合不能再对其发动〖定品〗;若结果为红色,你翻面(你不能弃置本回合已弃置或使用过的类型的牌)。", faen: "法恩", faen_info: "当一名角色翻至正面或横置后,你可以令其摸一张牌。", jyzongshi: "纵适", - jyzongshi_info: - "当你拼点赢时,你可以获得对方此次拼点的牌;当你拼点没赢时,你可以收回你此次拼点的牌。", + jyzongshi_info: "当你拼点赢时,你可以获得对方此次拼点的牌;当你拼点没赢时,你可以收回你此次拼点的牌。", qiaoshui: "巧说", qiaoshui3: "巧说", - qiaoshui_info: - "出牌阶段开始时,你可与一名其他角色拼点。若你赢,你使用的下一张基本牌或普通锦囊牌可以额外指定任意一名其他角色为目标或减少指定一个目标;若你没赢,你不能使用锦囊牌直到回合结束。", + qiaoshui_info: "出牌阶段开始时,你可与一名其他角色拼点。若你赢,你使用的下一张基本牌或普通锦囊牌可以额外指定任意一名其他角色为目标或减少指定一个目标;若你没赢,你不能使用锦囊牌直到回合结束。", reqiaoshui: "巧说", - reqiaoshui_info: - "出牌阶段,你可与一名其他角色拼点。若你赢,你使用的下一张基本牌或普通锦囊牌可以额外指定任意一名其他角色为目标或减少指定一个目标;若你没赢,你结束出牌阶段且本回合内锦囊牌不计入手牌上限。", + reqiaoshui_info: "出牌阶段,你可与一名其他角色拼点。若你赢,你使用的下一张基本牌或普通锦囊牌可以额外指定任意一名其他角色为目标或减少指定一个目标;若你没赢,你结束出牌阶段且本回合内锦囊牌不计入手牌上限。", junxing: "峻刑", - junxing_info: - "出牌阶段限一次,你可以弃置至少一张手牌并选择一名其他角色,该角色需弃置一张与你弃置的牌类别均不同的手牌,否则其先将其武将牌翻面再摸X张牌(X为你以此法弃置的手牌数量)。", + junxing_info: "出牌阶段限一次,你可以弃置至少一张手牌并选择一名其他角色,该角色需弃置一张与你弃置的牌类别均不同的手牌,否则其先将其武将牌翻面再摸X张牌(X为你以此法弃置的手牌数量)。", xinjunxing: "峻刑", - xinjunxing_info: - "出牌阶段限一次,你可以弃置至少一张手牌并选择一名其他角色,该角色需弃置一张与你弃置的牌类别均不同的手牌,否则其先将其武将牌翻面,然后将手牌摸至四张。", + xinjunxing_info: "出牌阶段限一次,你可以弃置至少一张手牌并选择一名其他角色,该角色需弃置一张与你弃置的牌类别均不同的手牌,否则其先将其武将牌翻面,然后将手牌摸至四张。", xswuyan: "无言", xinwuyan: "无言", @@ -16995,153 +15562,101 @@ game.import("character", function () { mieji: "灭计", fencheng: "焚城", youdi: "诱敌", - youdi_info: - "结束阶段开始时,你可以令一名其他角色弃置你的一张牌,若此牌不为【杀】,你获得该角色的一张牌。", - fencheng_info: - "限定技。出牌阶段,你可令所有其他角色依次选择一项:弃置X张牌;或受到1点火焰伤害。(X为该角色装备区里牌的数量且至少为1)", + youdi_info: "结束阶段开始时,你可以令一名其他角色弃置你的一张牌,若此牌不为【杀】,你获得该角色的一张牌。", + fencheng_info: "限定技。出牌阶段,你可令所有其他角色依次选择一项:弃置X张牌;或受到1点火焰伤害。(X为该角色装备区里牌的数量且至少为1)", mieji_info: "当你使用黑色普通锦囊牌选择目标后,若目标数为1,则你可以额外指定一个目标。", juece_info: "当其他角色在你回合内失去最后的手牌后,你可以对其造成1点伤害。", - jiefan_info: - "限定技,出牌阶段,你可以选择一名角色,令攻击范围内含有该角色的所有角色依次选择一项:1.弃置一张武器牌;2.令其摸一张牌。", + jiefan_info: "限定技,出牌阶段,你可以选择一名角色,令攻击范围内含有该角色的所有角色依次选择一项:1.弃置一张武器牌;2.令其摸一张牌。", fuli_info: "限定技,当你处于濒死状态时,你可以将体力回复至与场上势力数相同,然后翻面。", - xinfuli_info: - "限定技,当你处于濒死状态时,可以将体力回复至X点并将手牌摸至X张(X为场上势力数)。若X大于2,你翻面。", - qianxi_info: - "准备阶段,你可以摸一张牌,并弃置一张牌,然后令一名距离为1的角色不能使用或打出与你弃置的牌颜色相同的手牌直到回合结束。", + xinfuli_info: "限定技,当你处于濒死状态时,可以将体力回复至X点并将手牌摸至X张(X为场上势力数)。若X大于2,你翻面。", + qianxi_info: "准备阶段,你可以摸一张牌,并弃置一张牌,然后令一名距离为1的角色不能使用或打出与你弃置的牌颜色相同的手牌直到回合结束。", zhiman_info: "当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其装备区或判定区的一张牌。", - sanyao_info: - "出牌阶段限一次,你可以弃置一张牌并指定一名体力值最多(或之一)的角色,你对其造成1点伤害。", - olsanyao_info: - "出牌阶段每项各限一次,你可以弃置一张牌并指定一名体力值或手牌数最多(或之一)的角色,并对其造成1点伤害。", + sanyao_info: "出牌阶段限一次,你可以弃置一张牌并指定一名体力值最多(或之一)的角色,你对其造成1点伤害。", + olsanyao_info: "出牌阶段每项各限一次,你可以弃置一张牌并指定一名体力值或手牌数最多(或之一)的角色,并对其造成1点伤害。", rezhiman_info: "当你对一名其他角色造成伤害时,你可以防止此伤害,然后获得其区域内的一张牌。", - resanyao_info: - "出牌阶段限一次,你可以弃置任意张牌并指定等量除你外体力值最多(或之一)的其他角色。你对这些角色依次造成1点伤害。", - paiyi_info: - "出牌阶段限一次,你可以移去一张“权”并选择一名角色,令其摸两张牌,然后若其手牌数大于你,你对其造成1点伤害。", - zili_info: - "觉醒技,准备阶段开始时,若“权”的数量不小于3,你减1点体力上限,然后选择一项:1、回复1点体力;2、摸两张牌。然后你获得技能“排异”。", - quanji_info: - "当你受到1点伤害后,你可以摸一张牌,然后将一张手牌置于武将牌上,称为“权”;你的手牌上限+X(X为“权”的数量)。", - xianzhou_info: - "限定技。出牌阶段,你可以将装备区内的所有牌交给一名其他角色,然后该角色选择一项:令你回复X点体力;或对其攻击范围内的X名角色各造成1点伤害(X为你以此法交给该角色的牌的数量)。", - qieting_info: - "其他角色的回合结束时,若其未于此回合内使用过指定其他角色为目标的牌,你可以选择一项:将其装备区里的一张牌移动至你装备区里的相应位置;或摸一张牌。", - zhuikong_info: - "其他角色的准备阶段,若你已受伤,你可以与该角色拼点。若你赢,该角色本回合使用的牌不能指定除该角色外的角色为目标。若你没赢,其本回合至你的距离视为1。", - oldzhuikong_info: - "其他角色的准备阶段,若你已受伤,你可以与该角色拼点。若你赢,该角色跳过本回合的出牌阶段。若你没赢,其本回合至你的距离视为1。", - qiuyuan_info: - "当你成为【杀】的目标时,你可以令一名其他角色选择一项:①、交给你一张【闪】;②、成为此【杀】的额外目标。", - oldqiuyuan_info: - "当你成为【杀】的目标时,你可以令一名有手牌的其他角色正面朝上交给你一张牌。若此牌不为【闪】,则该角色也成为此【杀】的额外目标。", - gongji_info: - "出牌阶段限一次,你可以弃置一张牌,然后你的攻击范围视为无限直到回合结束。若你以此法弃置的牌为装备牌,则你可以弃置一名其他角色的一张牌。", + resanyao_info: "出牌阶段限一次,你可以弃置任意张牌并指定等量除你外体力值最多(或之一)的其他角色。你对这些角色依次造成1点伤害。", + paiyi_info: "出牌阶段限一次,你可以移去一张“权”并选择一名角色,令其摸两张牌,然后若其手牌数大于你,你对其造成1点伤害。", + zili_info: "觉醒技,准备阶段开始时,若“权”的数量不小于3,你减1点体力上限,然后选择一项:1、回复1点体力;2、摸两张牌。然后你获得技能“排异”。", + quanji_info: "当你受到1点伤害后,你可以摸一张牌,然后将一张手牌置于武将牌上,称为“权”;你的手牌上限+X(X为“权”的数量)。", + xianzhou_info: "限定技。出牌阶段,你可以将装备区内的所有牌交给一名其他角色,然后该角色选择一项:令你回复X点体力;或对其攻击范围内的X名角色各造成1点伤害(X为你以此法交给该角色的牌的数量)。", + qieting_info: "其他角色的回合结束时,若其未于此回合内使用过指定其他角色为目标的牌,你可以选择一项:将其装备区里的一张牌移动至你装备区里的相应位置;或摸一张牌。", + zhuikong_info: "其他角色的准备阶段,若你已受伤,你可以与该角色拼点。若你赢,该角色本回合使用的牌不能指定除该角色外的角色为目标。若你没赢,其本回合至你的距离视为1。", + oldzhuikong_info: "其他角色的准备阶段,若你已受伤,你可以与该角色拼点。若你赢,该角色跳过本回合的出牌阶段。若你没赢,其本回合至你的距离视为1。", + qiuyuan_info: "当你成为【杀】的目标时,你可以令一名其他角色选择一项:①、交给你一张【闪】;②、成为此【杀】的额外目标。", + oldqiuyuan_info: "当你成为【杀】的目标时,你可以令一名有手牌的其他角色正面朝上交给你一张牌。若此牌不为【闪】,则该角色也成为此【杀】的额外目标。", + gongji_info: "出牌阶段限一次,你可以弃置一张牌,然后你的攻击范围视为无限直到回合结束。若你以此法弃置的牌为装备牌,则你可以弃置一名其他角色的一张牌。", zhuiyi_info: "当你死亡时,你可以令一名其他角色(杀死你的角色除外)摸三张牌,然后其回复1点体力。", - anxu_info: - "出牌阶段限一次,你可以选择两名手牌数不同的其他角色,令其中手牌多的角色将一张手牌交给手牌少的角色,然后若这两名角色手牌数相等,你摸一张牌或回复1点体力。", - old_anxu_info: - "出牌阶段限一次,你可以选择两名手牌数不同的其他角色,令其中手牌少的角色获得手牌多的角色的一张手牌并展示之。然后若此牌不为黑桃,则你摸一张牌。", + anxu_info: "出牌阶段限一次,你可以选择两名手牌数不同的其他角色,令其中手牌多的角色将一张手牌交给手牌少的角色,然后若这两名角色手牌数相等,你摸一张牌或回复1点体力。", + old_anxu_info: "出牌阶段限一次,你可以选择两名手牌数不同的其他角色,令其中手牌少的角色获得手牌多的角色的一张手牌并展示之。然后若此牌不为黑桃,则你摸一张牌。", zongxuan_info: "当你的牌因弃置而进入弃牌堆后,你可以将其按任意顺序置于牌堆顶。", zhiyan_info: "结束阶段,你可以令一名角色摸一张牌并展示之,若为装备牌,其使用此牌并回复1点体力。", - miji_info: - "结束阶段,若你已受伤,则可以摸X张牌,然后可以将等量的牌交给其他角色(X为你已损失的体力值)。", - zhenlie_info: - "当你成为其他角色使用【杀】或普通锦囊牌的目标后,你可以失去1点体力并令此牌对你无效,然后弃置对方一张牌。", - chengxiang_info: - "当你受到伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于13的牌。", - oldchengxiang_info: - "当你受到伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于12的牌。", - renxin_info: - "当体力值为1的一名其他角色受到伤害时,你可以将武将牌翻面并弃置一张装备牌,然后防止此伤害。", - oldrenxin_info: - "其他角色进入濒死状态时,你可以将所有手牌交给该角色并翻面,然后该角色回复1点体力。", + miji_info: "结束阶段,若你已受伤,则可以摸X张牌,然后可以将等量的牌交给其他角色(X为你已损失的体力值)。", + zhenlie_info: "当你成为其他角色使用【杀】或普通锦囊牌的目标后,你可以失去1点体力并令此牌对你无效,然后弃置对方一张牌。", + chengxiang_info: "当你受到伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于13的牌。", + oldchengxiang_info: "当你受到伤害后,你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和不大于12的牌。", + renxin_info: "当体力值为1的一名其他角色受到伤害时,你可以将武将牌翻面并弃置一张装备牌,然后防止此伤害。", + oldrenxin_info: "其他角色进入濒死状态时,你可以将所有手牌交给该角色并翻面,然后该角色回复1点体力。", jingce_info: "出牌阶段结束时,若你本回合使用的牌数量大于或等于你的当前体力值,你可以摸两张牌。", xinjingce_info: "结束阶段,若你本回合使用的牌数量大于或等于你的当前体力值,你可以摸两张牌。", xswuyan_info: "锁定技,你使用的普通锦囊牌对其他角色无效;其他角色使用的普通锦囊牌对你无效。", - xinwuyan_info: - "锁定技,当你使用锦囊牌造成伤害时,你防止此伤害;锁定技,当你受到锦囊牌对你造成的伤害时,你防止此伤害。", - jujian_info: - "出牌阶段限一次,你可以弃至多三张牌,然后令一名其他角色摸等量的牌。若你以此法弃牌不少于三张且均为同一类别,你回复1点体力。", - xinjujian_info: - "结束阶段开始时,你可以弃置一张非基本牌并选择一名其他角色,令其选择一项:1.摸两张牌;2.回复1点体力;3.将其武将牌翻转至正面朝上并重置之。", + xinwuyan_info: "锁定技,当你使用锦囊牌造成伤害时,你防止此伤害;锁定技,当你受到锦囊牌对你造成的伤害时,你防止此伤害。", + jujian_info: "出牌阶段限一次,你可以弃至多三张牌,然后令一名其他角色摸等量的牌。若你以此法弃牌不少于三张且均为同一类别,你回复1点体力。", + xinjujian_info: "结束阶段开始时,你可以弃置一张非基本牌并选择一名其他角色,令其选择一项:1.摸两张牌;2.回复1点体力;3.将其武将牌翻转至正面朝上并重置之。", luoying_info: "当其他角色的梅花牌因弃置或判定而进入弃牌堆后,你可以获得之。", - jiushi_info: - "当你需要使用一张【酒】时,若你的武将牌正面朝上,则你可以将武将牌翻面并视为使用了一张【酒】;当你受到伤害时,若你的武将牌背面朝上,则你可在此伤害结算后将武将牌翻回正面。", + jiushi_info: "当你需要使用一张【酒】时,若你的武将牌正面朝上,则你可以将武将牌翻面并视为使用了一张【酒】;当你受到伤害时,若你的武将牌背面朝上,则你可在此伤害结算后将武将牌翻回正面。", jueqing_info: "锁定技,你即将造成的伤害均视为失去体力。", shangshi_info: "当你的手牌数小于X时,你可以将手牌摸至X张(X为你已损失的体力值)。", - xuanfeng_info: - "当你失去装备区内的牌时,或于弃牌阶段弃置了两张或更多的手牌后,你可以依次弃置一至两名其他角色的共计两张牌。", - zhiyu_info: - "当你受到伤害后,你可以摸一张牌,然后展示所有手牌。若颜色均相同,你令伤害来源弃置一张手牌。", + xuanfeng_info: "当你失去装备区内的牌时,或于弃牌阶段弃置了两张或更多的手牌后,你可以依次弃置一至两名其他角色的共计两张牌。", + zhiyu_info: "当你受到伤害后,你可以摸一张牌,然后展示所有手牌。若颜色均相同,你令伤害来源弃置一张手牌。", qice_info: "出牌阶段限一次,你可以将所有的手牌(至少一张)当做任意一张普通锦囊牌使用。", - jiangchi_info: - "摸牌阶段摸牌时,你可以选择一项:1、额外摸一张牌,若如此做,你不能使用或打出【杀】直到回合结束。 2、少摸一张牌,若如此做,你使用【杀】无距离限制且可以多使用一张【杀】直到回合结束。", - zishou_info: - "摸牌阶段,你可以额外摸X张牌(X为场上势力数)。然后你于本回合的出牌阶段内使用的牌不能指定其他角色为目标。", + jiangchi_info: "摸牌阶段摸牌时,你可以选择一项:1、额外摸一张牌,若如此做,你不能使用或打出【杀】直到回合结束。 2、少摸一张牌,若如此做,你使用【杀】无距离限制且可以多使用一张【杀】直到回合结束。", + zishou_info: "摸牌阶段,你可以额外摸X张牌(X为场上势力数)。然后你于本回合的出牌阶段内使用的牌不能指定其他角色为目标。", zongshi_info: "锁定技,你的手牌上限+X(X为场上现存势力数)。", - danshou_info: - "出牌阶段,你可以选择你攻击范围内的一名其他角色,然后弃置X张牌(X为此前你于此阶段你发动“胆守”的次数+1)。若X:为1,你弃置该角色的一张牌;为2,令该角色交给你一张牌;为3,你对该角色造成1点伤害;不小于4,你与该角色各摸两张牌。", + danshou_info: "出牌阶段,你可以选择你攻击范围内的一名其他角色,然后弃置X张牌(X为此前你于此阶段你发动“胆守”的次数+1)。若X:为1,你弃置该角色的一张牌;为2,令该角色交给你一张牌;为3,你对该角色造成1点伤害;不小于4,你与该角色各摸两张牌。", olddanshou_info: "当你造成伤害后,你可以摸一张牌。若如此做,终止一切结算,当前回合结束。", - xindanshou_info: - "①每回合限一次,当你成为基本牌或锦囊牌的目标后,你可以摸X张牌(X为你本回合内成为过基本牌或锦囊牌的目标的次数)。②一名其他角色的结束阶段,若你本回合内没有发动过〖胆守①〗,则你可以弃置X张牌并对其造成1点伤害(X为其手牌数,无牌则不弃)。", + xindanshou_info: "①每回合限一次,当你成为基本牌或锦囊牌的目标后,你可以摸X张牌(X为你本回合内成为过基本牌或锦囊牌的目标的次数)。②一名其他角色的结束阶段,若你本回合内没有发动过〖胆守①〗,则你可以弃置X张牌并对其造成1点伤害(X为其手牌数,无牌则不弃)。", yizhong_info: "锁定技,当你的防具栏为空时,黑色的【杀】对你无效。", - xinzhan_info: - "出牌阶段限一次,若你的手牌数大于你的体力上限,你可以观看牌堆顶的三张牌,然后展示其中任意红桃牌并获得之。", + xinzhan_info: "出牌阶段限一次,若你的手牌数大于你的体力上限,你可以观看牌堆顶的三张牌,然后展示其中任意红桃牌并获得之。", huilei_info: "锁定技,当你死亡时,杀死你的角色弃置所有的牌。", - enyuan_info: - "锁定技。①当其他角色令你回复1点体力后,该角色摸一张牌。②当其他角色对你造成伤害后,其须交给你一张♥手牌,否则失去1点体力。", - xuanhuo_info: - "出牌阶段限一次,你可以将一张红桃手牌交给一名其他角色,获得该角色的一张牌,然后交给除该角色外的一名其他角色。", - ganlu_info: - "出牌阶段限一次,你可以选择两名装备区内装备数之差不大于X的角色,令其交换装备区内的牌(X为你已损失的体力值)。", - buyi_info: - "当有角色进入濒死状态时,你可以展示该角色的一张手牌:若此牌不为基本牌,则该角色弃置此牌并回复1点体力。", - mingce_info: - "出牌阶段,你可以交给一名其他角色一张装备牌或【杀】,然后令该角色选择一项:1. 视为对其攻击范围内的另一名由你指定的角色使用一张【杀】。2. 摸一张牌。每回合限一次。", + enyuan_info: "锁定技。①当其他角色令你回复1点体力后,该角色摸一张牌。②当其他角色对你造成伤害后,其须交给你一张♥手牌,否则失去1点体力。", + xuanhuo_info: "出牌阶段限一次,你可以将一张红桃手牌交给一名其他角色,获得该角色的一张牌,然后交给除该角色外的一名其他角色。", + ganlu_info: "出牌阶段限一次,你可以选择两名装备区内装备数之差不大于X的角色,令其交换装备区内的牌(X为你已损失的体力值)。", + buyi_info: "当有角色进入濒死状态时,你可以展示该角色的一张手牌:若此牌不为基本牌,则该角色弃置此牌并回复1点体力。", + mingce_info: "出牌阶段,你可以交给一名其他角色一张装备牌或【杀】,然后令该角色选择一项:1. 视为对其攻击范围内的另一名由你指定的角色使用一张【杀】。2. 摸一张牌。每回合限一次。", zhichi_info: "锁定技,当你于回合外受到伤害后,所有【杀】或普通锦囊牌对你无效直到回合结束。", zhichi2_info: "智迟已发动", - pojun_info: - "当你使用【杀】造成伤害后,你可以令受伤角色摸X张牌,然后其翻面(X为该角色的体力值且至多为5)。", + pojun_info: "当你使用【杀】造成伤害后,你可以令受伤角色摸X张牌,然后其翻面(X为该角色的体力值且至多为5)。", shiyong: "恃勇", shiyong_info: "锁定技,当你受到一次红色【杀】或【酒】【杀】造成的伤害后,须减1点体力上限。", old_guanzhang: "旧关兴张苞", old_guanzhang_prefix: "旧", wangyi: "王异", oldqianxi: "潜袭", - oldqianxi_info: - "当你使用【杀】对距离为1的目标角色造成伤害时,你可以进行一次判定,若判定结果不为红桃,你防止此伤害,令其减1点体力上限。", + oldqianxi_info: "当你使用【杀】对距离为1的目标角色造成伤害时,你可以进行一次判定,若判定结果不为红桃,你防止此伤害,令其减1点体力上限。", oldzhenlie: "贞烈", oldzhenlie_info: "在你的判定牌生效前,你可以亮出牌堆顶的一张牌代替之。", oldmiji: "秘计", - oldmiji_info: - "准备/结束阶段开始时,若你已受伤,你可以判定,若判定结果为黑色,你观看牌堆顶的X张牌(X为你已损失的体力值),然后将这些牌交给一名角色。", + oldmiji_info: "准备/结束阶段开始时,若你已受伤,你可以判定,若判定结果为黑色,你观看牌堆顶的X张牌(X为你已损失的体力值),然后将这些牌交给一名角色。", old_fuhun: "父魂", - old_fuhun_info: - "摸牌阶段开始时,你可以放弃摸牌,改为从牌堆顶亮出两张牌并获得之,若亮出的牌颜色不同,你获得〖武圣〗和〖咆哮〗直到回合结束。", + old_fuhun_info: "摸牌阶段开始时,你可以放弃摸牌,改为从牌堆顶亮出两张牌并获得之,若亮出的牌颜色不同,你获得〖武圣〗和〖咆哮〗直到回合结束。", rejueqing: "绝情", - rejueqing_info: - "当你对其他角色造成伤害时,你可以令此伤害值+X。若如此做,你失去X点体力并修改〖绝情〗(X为伤害值)。", + rejueqing_info: "当你对其他角色造成伤害时,你可以令此伤害值+X。若如此做,你失去X点体力并修改〖绝情〗(X为伤害值)。", rejueqing_1st: "绝情", rejueqing_rewrite: "绝情·改", rejueqing_rewrite_info: "锁定技,你即将造成的伤害均视为失去体力。", reshangshi: "伤逝", reshangshi_2nd: "伤逝", - reshangshi_info: - "当你受到伤害时,你可以弃置一张牌。当你的手牌数小于X时,你可以将手牌摸至X张。(X为你已损失的体力值)", + reshangshi_info: "当你受到伤害时,你可以弃置一张牌。当你的手牌数小于X时,你可以将手牌摸至X张。(X为你已损失的体力值)", rejingce: "精策", rejingce2: "精策", rejingce_add: "精策", - rejingce_info: - "当你于一回合内首次使用某种花色的手牌时,你的手牌上限+1。出牌阶段结束时,你可以摸X张牌(X为你本阶段内使用过的牌的类型数)。", + rejingce_info: "当你于一回合内首次使用某种花色的手牌时,你的手牌上限+1。出牌阶段结束时,你可以摸X张牌(X为你本阶段内使用过的牌的类型数)。", xinkuangbi: "匡弼", - xinkuangbi_info: - "出牌阶段限一次。你可以令一名其他角色交给你至多三张牌(不计入你本回合的手牌上限)。然后其于其的下回合开始时摸等量的牌。", + xinkuangbi_info: "出牌阶段限一次。你可以令一名其他角色交给你至多三张牌(不计入你本回合的手牌上限)。然后其于其的下回合开始时摸等量的牌。", xinzhaofu: "诏缚", - xinzhaofu_info: - "主公技,限定技。出牌阶段,你可选择至多两名其他角色。这两名角色视为在所有其他吴势力角色的攻击范围内。", + xinzhaofu_info: "主公技,限定技。出牌阶段,你可选择至多两名其他角色。这两名角色视为在所有其他吴势力角色的攻击范围内。", olbingyi: "秉壹", - olbingyi_info: - "每阶段限一次。当你因弃置而失去牌后,你可以展示所有手牌。若这些牌的颜色均相同,则你可以与至多X名其他角色各摸一张牌(X为你的手牌数)。", + olbingyi_info: "每阶段限一次。当你因弃置而失去牌后,你可以展示所有手牌。若这些牌的颜色均相同,则你可以与至多X名其他角色各摸一张牌(X为你的手牌数)。", lukai: "陆凯", lukai_spade: "♠", lukai_spade_bg: "♠️", @@ -17152,76 +15667,73 @@ game.import("character", function () { lukai_diamond: "♦", lukai_diamond_bg: "♦️️", lkbushi: "卜筮", - lkbushi_info: - "①你使用♠牌无次数限制。②当你使用或打出♥牌后,你摸一张牌。③当你成为♣牌的目标后,你可以弃置一张牌,令此牌对你无效。④结束阶段开始时,你从牌堆或弃牌堆获得一张♦牌。⑤准备阶段开始时,你可调整此技能中四种花色的对应顺序。", + lkbushi_info: "①你使用♠牌无次数限制。②当你使用或打出♥牌后,你摸一张牌。③当你成为♣牌的目标后,你可以弃置一张牌,令此牌对你无效。④结束阶段开始时,你从牌堆或弃牌堆获得一张♦牌。⑤准备阶段开始时,你可调整此技能中四种花色的对应顺序。", lkzhongzhuang: "忠壮", - lkzhongzhuang_info: - "锁定技。①当你因执行【杀】的效果而造成伤害时,若你的攻击范围大于3,则此伤害+1。②当一名角色受到你因执行【杀】的效果而造成的伤害时,若你的攻击范围小于3,则此伤害改为1。", + lkzhongzhuang_info: "锁定技。①当你因执行【杀】的效果而造成伤害时,若你的攻击范围大于3,则此伤害+1。②当一名角色受到你因执行【杀】的效果而造成的伤害时,若你的攻击范围小于3,则此伤害改为1。", kebineng: "轲比能", kousheng: "寇旌", - kousheng_info: - "①出牌阶段开始时,你可以选择任意张手牌,这些牌称为“寇旌”直到回合结束。②你的“寇旌”均视为【杀】且无次数限制。③当你因执行对应实体牌包含“寇旌”的【杀】的效果而造成伤害后,你展示所有“寇旌”牌,然后目标角色可以用所有手牌交换这些牌。", + kousheng_info: "①出牌阶段开始时,你可以选择任意张手牌,这些牌称为“寇旌”直到回合结束。②你的“寇旌”均视为【杀】且无次数限制。③当你因执行对应实体牌包含“寇旌”的【杀】的效果而造成伤害后,你展示所有“寇旌”牌,然后目标角色可以用所有手牌交换这些牌。", zhugeshang: "诸葛尚", sangu: "三顾", - sangu_info: - "结束阶段,你可以选择至多三个{【杀】或不为notarget或singleCard的普通锦囊牌}中的牌名,然后令一名其他角色记录这些牌名。该角色的下个出牌阶段开始时,其的手牌于其需要使用牌时均视为其记录中的第一张牌直到此阶段结束,且当其使用或打出有对应实体牌的牌时,移除这些牌中的第一张牌。若你以此法选择过的牌名均为你本回合内使用过的牌名,则防止你因其以此法使用牌造成的伤害。", + sangu_info: "结束阶段,你可以选择至多三个{【杀】或不为notarget或singleCard的普通锦囊牌}中的牌名,然后令一名其他角色记录这些牌名。该角色的下个出牌阶段开始时,其的手牌于其需要使用牌时均视为其记录中的第一张牌直到此阶段结束,且当其使用或打出有对应实体牌的牌时,移除这些牌中的第一张牌。若你以此法选择过的牌名均为你本回合内使用过的牌名,则防止你因其以此法使用牌造成的伤害。", yizu: "轶祖", - yizu_info: - "锁定技。每回合限一次,当你成为【杀】或【决斗】的目标后,若你的体力值不大于使用者的体力值,则你回复1点体力。", + yizu_info: "锁定技。每回合限一次,当你成为【杀】或【决斗】的目标后,若你的体力值不大于使用者的体力值,则你回复1点体力。", liwan: "李婉", liandui: "联对", - liandui_info: - "①当你使用牌时,若本局游戏内上一张被使用的牌的使用者不为你,你可以令其摸两张牌。②其他角色使用牌时,若本局游戏内上一张被使用的牌的使用者为你,其可以令你摸两张牌。", + liandui_info: "①当你使用牌时,若本局游戏内上一张被使用的牌的使用者不为你,你可以令其摸两张牌。②其他角色使用牌时,若本局游戏内上一张被使用的牌的使用者为你,其可以令你摸两张牌。", biejun: "别君", - biejun_info: - "①其他角色的出牌阶段限一次。其可以将一张手牌交给你。②每回合限一次。当你受到伤害时,若你手牌中没有本回合因〖别君①〗得到的牌,你可以翻面并防止此伤害。", + biejun_info: "①其他角色的出牌阶段限一次。其可以将一张手牌交给你。②每回合限一次。当你受到伤害时,若你手牌中没有本回合因〖别君①〗得到的牌,你可以翻面并防止此伤害。", yj_sufei: "苏飞", shuojian: "数谏", - shuojian_info: - "出牌阶段限三次。你可以交给一名其他角色一张牌,其选择一项:1.令你摸X张牌并弃置X-1张牌;2.视为使用X张【过河拆桥】,然后此技能本回合失效(X为此技能本阶段剩余发动次数+1)。", + shuojian_info: "出牌阶段限三次。你可以交给一名其他角色一张牌,其选择一项:1.令你摸X张牌并弃置X-1张牌;2.视为使用X张【过河拆桥】,然后此技能本回合失效(X为此技能本阶段剩余发动次数+1)。", yj_qiaozhou: "谯周", shiming: "识命", - shiming_info: - "每轮限一次。一名角色的摸牌阶段,你可以观看牌堆顶的三张牌,并可以将其中一张置于牌堆底。然后该角色可以改为对自己造成1点伤害,然后从牌堆底摸三张牌。", + shiming_info: "每轮限一次。一名角色的摸牌阶段,你可以观看牌堆顶的三张牌,并可以将其中一张置于牌堆底。然后该角色可以改为对自己造成1点伤害,然后从牌堆底摸三张牌。", jiangxi: "将息", - jiangxi_info: - "一名角色的回合结束时,若一号位于此回合内进入过濒死状态或未受到过伤害,你可以重置〖识命〗并摸一张牌;若所有角色均未受到过伤害,你可以与当前回合角色各摸一张牌。", + jiangxi_info: "一名角色的回合结束时,若一号位于此回合内进入过濒死状态或未受到过伤害,你可以重置〖识命〗并摸一张牌;若所有角色均未受到过伤害,你可以与当前回合角色各摸一张牌。", hanlong: "韩龙", duwang: "独往", - duwang_info: - "锁定技。①游戏开始时,你从牌堆顶将五张不为【杀】的牌置于武将牌上,称为“刺”。②若你有牌名不为【杀】“刺”,你至其他角色或其他角色至你的距离+1。", + duwang_info: "锁定技。①游戏开始时,你从牌堆顶将五张不为【杀】的牌置于武将牌上,称为“刺”。②若你有牌名不为【杀】“刺”,你至其他角色或其他角色至你的距离+1。", cibei: "刺北", - cibei_info: - "①当一名角色使用【杀】造成伤害且此牌对应的实体牌进入弃牌堆后,你可以将一张不为【杀】的“刺”置入弃牌堆,并将这些牌置入“刺”,然后弃置一名角色区域里的一张牌。②一名角色的回合结束时,若你的“刺”均为【杀】,你获得所有“刺”,且这些牌不能被弃置,不计入手牌上限,且当你使用对应实体牌包含这些牌的牌时无次数和距离限制。", + cibei_info: "①当一名角色使用【杀】造成伤害且此牌对应的实体牌进入弃牌堆后,你可以将一张不为【杀】的“刺”置入弃牌堆,并将这些牌置入“刺”,然后弃置一名角色区域里的一张牌。②一名角色的回合结束时,若你的“刺”均为【杀】,你获得所有“刺”,且这些牌不能被弃置,不计入手牌上限,且当你使用对应实体牌包含这些牌的牌时无次数和距离限制。", wuanguo: "武安国", diezhang: "叠嶂", - diezhang_info: - "转换技。①出牌阶段,你使用杀的次数上限+1。②阴:当你使用牌被其他角色抵消后,你可以弃置一张牌,视为对其使用X张【杀】;阳:当其他角色使用牌被你抵消后,你可以摸X张牌,视为对其使用一张【杀】(X为1)。", + diezhang_info: "转换技。①出牌阶段,你使用杀的次数上限+1。②阴:当你使用牌被其他角色抵消后,你可以弃置一张牌,视为对其使用X张【杀】;阳:当其他角色使用牌被你抵消后,你可以摸X张牌,视为对其使用一张【杀】(X为1)。", duanwan: "断腕", - duanwan_info: - "限定技。当你处于濒死状态时,你可以将体力回复至2点,然后删除〖叠嶂①〗和当前转换技状态的〖叠嶂②〗分支,并将〖叠嶂〗修改为“每回合限一次”且将X修改为2。", + duanwan_info: "限定技。当你处于濒死状态时,你可以将体力回复至2点,然后删除〖叠嶂①〗和当前转换技状态的〖叠嶂②〗分支,并将〖叠嶂〗修改为“每回合限一次”且将X修改为2。", dcduliang: "督粮", dcduliang2: "督粮", - dcduliang_info: - "出牌阶段限一次。你可以获得一名其他角色的一张牌,然后选择一项:1.你观看牌堆顶的两张牌,然后令其获得其中的一或两张基本牌;2.令其于下回合的摸牌阶段额外摸一张牌。", + dcduliang_info: "出牌阶段限一次。你可以获得一名其他角色的一张牌,然后选择一项:1.你观看牌堆顶的两张牌,然后令其获得其中的一或两张基本牌;2.令其于下回合的摸牌阶段额外摸一张牌。", sunli: "孙礼", kangli: "伉厉", kangli_info: "当你造成或受到伤害后,你摸两张牌。然后你下次造成伤害时弃置这些牌。", xiahoumao: "夏侯楙", tongwei: "统围", - tongwei_info: - "出牌阶段限一次。你可以重铸两张牌并指定一名其他角色,当其使用的下一张牌结算结束后,若此牌点数在你上次以此法重铸的牌的点数之间,你视为对其使用一张【杀】或【过河拆桥】。", + tongwei_info: "出牌阶段限一次。你可以重铸两张牌并指定一名其他角色,当其使用的下一张牌结算结束后,若此牌点数在你上次以此法重铸的牌的点数之间,你视为对其使用一张【杀】或【过河拆桥】。", cuguo: "蹙国", - cuguo_info: - "锁定技。当你于一回合使用牌首次被抵消后,你弃置一张牌,视为对此牌的目标角色使用一张该被抵消的牌。此牌结算结束后,若此牌被抵消,你失去1点体力。", + cuguo_info: "锁定技。当你于一回合使用牌首次被抵消后,你弃置一张牌,视为对此牌的目标角色使用一张该被抵消的牌。此牌结算结束后,若此牌被抵消,你失去1点体力。", chenshi: "陈式", qingbei: "擎北", - qingbei_info: - "一轮游戏开始时,你可以选择任意种花色,你不能于本轮内使用这些花色的牌。然后当你于本轮使用一张有花色的牌结算结束后,你摸等同于你上一次〖擎北〗选择过的花色数的牌。", + qingbei_info: "一轮游戏开始时,你可以选择任意种花色,你不能于本轮内使用这些花色的牌。然后当你于本轮使用一张有花色的牌结算结束后,你摸等同于你上一次〖擎北〗选择过的花色数的牌。", feiyao: "费曜", zhenfeng: "镇锋", - zhenfeng_info: - "每回合限一次。当其他角色于其回合内使用牌时,若其手牌数不大于其体力值,你可以猜测其手牌中与此牌类别相同的牌数。若你猜对,你摸X张牌并视为对其使用一张【杀】(X为你连续猜对的次数且至多为5);若你猜错且差值大于1,其视为对你使用一张【杀】。", + zhenfeng_info: "每回合限一次。当其他角色于其回合内使用牌时,若其手牌数不大于其体力值,你可以猜测其手牌中与此牌类别相同的牌数。若你猜对,你摸X张牌并视为对其使用一张【杀】(X为你连续猜对的次数且至多为5);若你猜错且差值大于1,其视为对你使用一张【杀】。", + linghuyu: "令狐愚", + yj_simafu: "司马孚", + yj_xuangongzhu: "宣公主", + xukun: "徐琨", + xvzhi: "蓄志", + xvzhi_info: "出牌阶段限一次,你可令两名角色各选择任意张手牌并交换这些牌,然后获得牌数较少的角色视为使用无视距离的【杀】;若获得牌数相等,你摸两张牌且可以对此阶段未以此法选择过的角色再发动一次〖蓄志〗。", + beiyu: "备预", + beiyu_info: "出牌阶段限一次,你可将手牌摸至体力上限,然后你将一种花色的所有手牌置于牌堆底。", + duchi: "督持", + duchi_info: "每回合限一次,当你成为其他角色使用牌的目标后,你可从牌堆底摸一张牌并展示所有手牌,若颜色均相同,则此牌对你无效。", + yjqimei: "齐眉", + yjqimei_info: "出牌阶段限一次,你可以选择一名其他角色,你与其各摸两张牌并弃置两张牌,然后你根据你与其弃置牌的花色总数执行以下效果:1、你依次使用这些弃置的牌中可以使用的牌;2、你与其复原武将牌;3、你与其横置武将牌;4、你与其各摸一张牌,然后你修改〖齐眉〗为“出牌阶段限两次”直到回合结束。", + yjzhuiji: "追姬", + yjzhuiji_info: "当你死亡时,你可以令一名角色从牌堆和弃牌堆中的随机使用任意装备牌直至其没有空置的装备栏。若如此做,当其失去以此法使用的装备牌后,其废除对应的装备栏。", + fazhu: "筏铸", + fazhu_info: "准备阶段,你可以重铸你的区域内的所有非伤害牌,然后将以此法获得的牌交给至多等量名角色各一张,这些角色可以依次使用一张无距离限制的【杀】。", yijiang_2011: "一将成名2011", yijiang_2012: "一将成名2012", @@ -17232,6 +15744,7 @@ game.import("character", function () { yijiang_2017: "原创设计2017", yijiang_2022: "原创设计2022", yijiang_2023: "一将成名2023", + yijiang_2024: "一将成名2024", }, }; }); diff --git a/character/yingbian.js b/character/yingbian.js index cfb76baec..92617b8cd 100644 --- a/character/yingbian.js +++ b/character/yingbian.js @@ -20,50 +20,18 @@ game.import("character", function () { jin_yanghuiyu: ["female", "jin", 3, ["huirong", "ciwei", "caiyuan"], ["hiddenSkill"]], shibao: ["male", "jin", 4, ["zhuosheng"]], jin_zhangchunhua: ["female", "jin", 3, ["huishi", "qingleng", "xuanmu"], ["hiddenSkill"]], - jin_simayi: [ - "male", - "jin", - 3, - ["buchen", "smyyingshi", "xiongzhi", "xinquanbian"], - ["hiddenSkill"], - ], + jin_simayi: ["male", "jin", 3, ["buchen", "smyyingshi", "xiongzhi", "xinquanbian"], ["hiddenSkill"]], jin_wangyuanji: ["female", "jin", 3, ["shiren", "yanxi"], ["hiddenSkill"]], - jin_simazhao: [ - "male", - "jin", - 3, - ["tuishi", "xinchoufa", "zhaoran", "chengwu"], - ["zhu", "hiddenSkill"], - ], + jin_simazhao: ["male", "jin", 3, ["tuishi", "xinchoufa", "zhaoran", "chengwu"], ["zhu", "hiddenSkill"]], jin_xiahouhui: ["female", "jin", 3, ["baoqie", "jyishi", "shiduo"], ["hiddenSkill"]], - jin_simashi: [ - "male", - "jin", - "3/4", - ["taoyin", "yimie", "ruilve", "tairan"], - ["hiddenSkill", "zhu"], - ], + jin_simashi: ["male", "jin", "3/4", ["taoyin", "yimie", "ruilve", "tairan"], ["hiddenSkill", "zhu"]], zhanghuyuechen: ["male", "jin", 4, ["xijue"]], duyu: ["male", "jin", 4, ["sanchen", "zhaotao"]], }, characterSort: { yingbian: { - yingbian_pack1: [ - "jin_simayi", - "jin_zhangchunhua", - "ol_lisu", - "simazhou", - "cheliji", - "ol_huaxin", - ], - yingbian_pack2: [ - "jin_simashi", - "jin_xiahouhui", - "zhanghuyuechen", - "shibao", - "jin_yanghuiyu", - "chengjichengcui", - ], + yingbian_pack1: ["jin_simayi", "jin_zhangchunhua", "ol_lisu", "simazhou", "cheliji", "ol_huaxin"], + yingbian_pack2: ["jin_simashi", "jin_xiahouhui", "zhanghuyuechen", "shibao", "jin_yanghuiyu", "chengjichengcui"], yingbian_pack3: ["jin_simazhao", "jin_wangyuanji", "duyu", "weiguan", "xuangongzhu"], yingbian_pack4: ["zhongyan", "xinchang", "jin_jiachong", "wangxiang"], yingbian_pack5: ["yangyan", "yangzhi"], @@ -88,12 +56,7 @@ game.import("character", function () { position: "he", check: function (card) { const player = get.player(); - return ( - 4.5 + - (player.hasSkill("olchuming") ? 1 : 0) - - 1.5 * ui.selected.cards.length - - get.value(card) - ); + return 4.5 + (player.hasSkill("olchuming") ? 1 : 0) - 1.5 * ui.selected.cards.length - get.value(card); }, popname: true, ignoreMod: true, @@ -105,7 +68,7 @@ game.import("character", function () { delete event.result.skill; var cards = event.result.cards; player.loseToDiscardpile(cards, ui.cardPile, false, "blank").log = false; - var shownCards = cards.filter((i) => get.position(i) == "e"), + var shownCards = cards.filter(i => get.position(i) == "e"), handcardsLength = cards.length - shownCards.length; if (shownCards.length) { player.$throw(shownCards, null); @@ -174,8 +137,7 @@ game.import("character", function () { effect: { player: function (card, player, target) { if (!get.tag(card, "damage")) return; - if (!lib.card[card.name] || !card.cards || !card.cards.length) - return [1, 0, 1, -1]; + if (!lib.card[card.name] || !card.cards || !card.cards.length) return [1, 0, 1, -1]; return [1, -1]; }, }, @@ -189,10 +151,8 @@ game.import("character", function () { content: function* (event, map) { var player = map.player; var mapx = {}; - var history = player - .getHistory("damage") - .concat(player.getHistory("sourceDamage")); - history.forEach((evt) => { + var history = player.getHistory("damage").concat(player.getHistory("sourceDamage")); + history.forEach(evt => { if (!evt._olchuming) return; var target = evt[evt.source == player ? "player" : "source"]; if (!target.isIn()) return; @@ -201,11 +161,8 @@ game.import("character", function () { if (!mapx[target.playerid]) mapx[target.playerid] = []; mapx[target.playerid].addArray(cards); }); - var entries = Object.entries(mapx).map((entry) => { - return [ - (_status.connectMode ? lib.playerOL : game.playerMap)[entry[0]], - entry[1], - ]; + var entries = Object.entries(mapx).map(entry => { + return [(_status.connectMode ? lib.playerOL : game.playerMap)[entry[0]], entry[1]]; }); if (!entries.length) { event.finish(); @@ -213,45 +170,27 @@ game.import("character", function () { } player.logSkill( "olchuming_effect", - entries.map((i) => i[0]) + entries.map(i => i[0]) ); entries.sort((a, b) => lib.sort.seat(a[0], b[0])); for (var entry of entries) { var current = entry[0], cards = entry[1]; - var list = ["jiedao", "guohe"].filter((i) => - player.canUse( - new lib.element.VCard({ name: i, cards: cards }), - current, - false - ) - ); + var list = ["jiedao", "guohe"].filter(i => player.canUse(new lib.element.VCard({ name: i, cards: cards }), current, false)); if (!list.length) return; var result = {}; if (list.length == 1) result = { bool: true, links: [["", "", list[0]]] }; else result = yield player - .chooseButton( - [ - `畜鸣:请选择要对${get.translation(current)}使用的牌`, - [list, "vcard"], - ], - true - ) - .set("ai", (button) => { + .chooseButton([`畜鸣:请选择要对${get.translation(current)}使用的牌`, [list, "vcard"]], true) + .set("ai", button => { var player = get.player(); - return get.effect( - get.event("currentTarget"), - { name: button.link[2] }, - player, - player - ); + return get.effect(get.event("currentTarget"), { name: button.link[2] }, player, player); }) .set("currentTarget", current); if (result.bool) { var card = get.autoViewAs({ name: result.links[0][2] }, cards); - if (player.canUse(card, current, false)) - player.useCard(card, cards, current, false); + if (player.canUse(card, current, false)) player.useCard(card, cards, current, false); } } }, @@ -262,12 +201,7 @@ game.import("character", function () { audio: 2, enable: "chooseToUse", hiddenCard: function (player, name) { - if ( - get.type(name) == "basic" && - lib.inpile.includes(name) && - !player.getStorage("bingxin_count").includes(name) - ) - return true; + if (get.type(name) == "basic" && lib.inpile.includes(name) && !player.getStorage("bingxin_count").includes(name)) return true; }, filter: function (event, player) { if (event.type == "wuxie") return false; @@ -388,20 +322,12 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("zhefu"), - "令一名有手牌的其他角色弃置一张【" + - get.translation(trigger.card.name) + - "】,否则受到你造成的1点伤害。", - function (card, player, target) { - return target != player && target.countCards("h") > 0; - } - ) + .chooseTarget(get.prompt("zhefu"), "令一名有手牌的其他角色弃置一张【" + get.translation(trigger.card.name) + "】,否则受到你造成的1点伤害。", function (card, player, target) { + return target != player && target.countCards("h") > 0; + }) .set("ai", function (target) { var player = _status.event.player; - return ( - get.damageEffect(target, player, player) / Math.sqrt(target.countCards("h")) - ); + return get.damageEffect(target, player, player) / Math.sqrt(target.countCards("h")); }); "step 1"; if (result.bool) { @@ -410,18 +336,10 @@ game.import("character", function () { player.logSkill("zhefu", target); var name = trigger.card.name; target - .chooseToDiscard( - "he", - { name: name }, - "弃置一张【" + get.translation(name) + "】或受到1点伤害" - ) + .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; + if (_status.event.take || (get.name(card) == "tao" && !player.hasJudge("lebu"))) return 0; return 8 - get.value(card); }) .set("take", get.damageEffect(target, player, target) >= 0); @@ -435,10 +353,8 @@ game.import("character", function () { trigger: { player: "useCardAfter" }, filter: function (event, player) { return ( - (event.card.name == "sha" || - (get.type(event.card, null, false) == "trick" && - get.tag(event.card, "damage") > 0)) && - event.targets.some((target) => { + (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) { @@ -457,7 +373,7 @@ game.import("character", function () { }) .set( "targets", - trigger.targets.filter((target) => { + trigger.targets.filter(target => { return ( target.countCards("h") > 0 && !target.hasHistory("damage", function (evt) { @@ -466,7 +382,7 @@ game.import("character", function () { ); }) ) - .set("ai", (target) => { + .set("ai", target => { if (target.hasSkillTag("noh")) return 0; return -get.attitude(player, target); }); @@ -476,13 +392,7 @@ game.import("character", function () { event.target = target; player.logSkill("yidu", target); player - .choosePlayerCard( - target, - "遗毒:展示" + get.translation(target) + "的至多三张手牌", - true, - "h", - [1, Math.min(3, target.countCards("h"))] - ) + .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; @@ -491,10 +401,7 @@ game.import("character", function () { } else event.finish(); "step 2"; var cards = result.cards; - player.showCards( - cards, - get.translation(player) + "对" + get.translation(target) + "发动了【遗毒】" - ); + player.showCards(cards, get.translation(player) + "对" + get.translation(target) + "发动了【遗毒】"); var color = get.color(cards[0], target); var bool = true; for (var i = 1; i < cards.length; i++) { @@ -510,12 +417,7 @@ game.import("character", function () { audio: "wanyi", trigger: { player: "useCardToTargeted" }, filter: function (event, player) { - return ( - player != event.target && - event.targets.length == 1 && - (event.card.name == "sha" || get.type(event.card, false) == "trick") && - event.target.countCards("he") > 0 - ); + return player != event.target && event.targets.length == 1 && (event.card.name == "sha" || get.type(event.card, false) == "trick") && event.target.countCards("he") > 0; }, locked: false, logTarget: "target", @@ -596,11 +498,9 @@ game.import("character", function () { }, content: function () { "step 0"; - player - .chooseTarget(true, "婉嫕:令一名角色获得一张“嫕”") - .set("ai", function (target) { - return get.attitude(_status.event.player, target); - }); + player.chooseTarget(true, "婉嫕:令一名角色获得一张“嫕”").set("ai", function (target) { + return get.attitude(_status.event.player, target); + }); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -608,11 +508,7 @@ game.import("character", function () { player.line(target, "green"); var cards = player.getExpansions("xinwanyi"); if (cards.length == 1) event._result = { bool: true, links: cards }; - else - player.chooseButton( - ["令" + get.translation(target) + "获得一张“嫕”", cards], - true - ); + else player.chooseButton(["令" + get.translation(target) + "获得一张“嫕”", cards], true); } else event.finish(); "step 2"; if (result.bool) { @@ -627,9 +523,7 @@ game.import("character", function () { enable: "phaseUse", usable: 1, filter: function (event, player) { - return game.hasPlayer((current) => - lib.skill.xinxuanbei.filterTarget(null, player, current) - ); + return game.hasPlayer(current => lib.skill.xinxuanbei.filterTarget(null, player, current)); }, filterTarget: function (card, player, target) { return target != player && target.countCards("hej") > 0; @@ -641,12 +535,7 @@ game.import("character", function () { if (result.bool) { var card = result.cards[0]; var cardx = get.autoViewAs({ name: "sha" }, [card]); - if ( - (get.position(card) != "j" && - !game.checkMod(card, target, "unchanged", "cardEnabled2", target)) || - !target.canUse(cardx, player, false) - ) - event.finish(); + if ((get.position(card) != "j" && !game.checkMod(card, target, "unchanged", "cardEnabled2", target)) || !target.canUse(cardx, player, false)) event.finish(); else { var next = target.useCard(cardx, [card], player, false); event.card = next.card; @@ -666,10 +555,7 @@ game.import("character", function () { order: 7, result: { player: function (player, target) { - return ( - get.effect(target, { name: "guohe_copy" }, player, player) + - get.effect(player, { name: "sha" }, target, player) - ); + return get.effect(target, { name: "guohe_copy" }, player, player) + get.effect(player, { name: "sha" }, target, player); }, }, }, @@ -679,11 +565,7 @@ game.import("character", function () { trigger: { global: "phaseUseBegin" }, direct: true, filter: function (event, player) { - return ( - player != event.player && - event.player.countCards("h") > 0 && - player.countCards("he") >= player.countMark("xiongshu_count") - ); + return player != event.player && event.player.countCards("h") > 0 && player.countCards("he") >= player.countMark("xiongshu_count"); }, content: function () { "step 0"; @@ -691,12 +573,7 @@ game.import("character", function () { var num = player.countMark("xiongshu_count"); if (num > 0) player - .chooseToDiscard( - "he", - num, - get.prompt("xiongshu", trigger.player), - "弃置" + get.cnNumber(num) + "张牌并展示其一张手牌" - ) + .chooseToDiscard("he", num, get.prompt("xiongshu", trigger.player), "弃置" + get.cnNumber(num) + "张牌并展示其一张手牌") .set("goon", get.attitude(player, event.target) < 0) .set("ai", function (card) { if (!_status.event.goon) return 0; @@ -804,12 +681,7 @@ game.import("character", function () { trigger: { player: "damageEnd" }, forced: true, filter: function (event, player) { - return ( - event.source && - event.source.isIn() && - event.source == lib.skill.jianhui.getLastPlayer(event, player) && - event.source.countCards("he") > 0 - ); + return event.source && event.source.isIn() && event.source == lib.skill.jianhui.getLastPlayer(event, player) && event.source.countCards("he") > 0; }, content: function () { trigger.source.chooseToDiscard("he", true); @@ -833,13 +705,7 @@ game.import("character", function () { audio: 2, trigger: { player: "loseAfter", - global: [ - "equipAfter", - "addJudgeAfter", - "gainAfter", - "loseAsyncAfter", - "addToExpansionAfter", - ], + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, filter: function (event, player) { var evt = event.getl(player); @@ -878,24 +744,14 @@ game.import("character", function () { event.count = num; "step 1"; event.count--; - player - .chooseTarget( - true, - "请选择【怀远】的目标", - "令一名角色执行一项:⒈其的手牌上限+1。⒉其的攻击范围+1。⒊其摸一张牌。" - ) - .set("ai", function (target) { - var player = _status.event.player, - att = get.attitude(player, target); - if (att <= 0) return 0; - if ( - target.hasValueTarget({ name: "sha" }, false) && - !target.hasValueTarget({ name: "sha" }) - ) - att *= 2.2; - if (target.needsToDiscard()) att *= 1.3; - return att * Math.sqrt(Math.max(1, 4 - target.countCards("h"))); - }); + player.chooseTarget(true, "请选择【怀远】的目标", "令一名角色执行一项:⒈其的手牌上限+1。⒉其的攻击范围+1。⒊其摸一张牌。").set("ai", function (target) { + var player = _status.event.player, + att = get.attitude(player, target); + if (att <= 0) return 0; + if (target.hasValueTarget({ name: "sha" }, false) && !target.hasValueTarget({ name: "sha" })) att *= 2.2; + if (target.needsToDiscard()) att *= 1.3; + return att * Math.sqrt(Math.max(1, 4 - target.countCards("h"))); + }); "step 2"; if (result.bool) { var target = result.targets[0]; @@ -904,19 +760,11 @@ game.import("character", function () { var str = get.translation(target); player .chooseControl() - .set("choiceList", [ - "令" + str + "的手牌上限+1", - "令" + str + "的攻击范围+1", - "令" + str + "摸一张牌", - ]) + .set("choiceList", ["令" + str + "的手牌上限+1", "令" + str + "的攻击范围+1", "令" + str + "摸一张牌"]) .set("ai", function () { var player = _status.event.player, target = _status.event.getParent().target; - if ( - target.hasValueTarget({ name: "sha" }, false) && - !target.hasValueTarget({ name: "sha" }) - ) - return 1; + if (target.hasValueTarget({ name: "sha" }, false) && !target.hasValueTarget({ name: "sha" })) return 1; if (target.needsToDiscard()) return 0; return 2; }); @@ -942,9 +790,7 @@ game.import("character", function () { forced: true, locked: false, filter: function (event, player) { - return ( - (event.name != "phase" || game.phaseNumber == 0) && player.countCards("h") > 0 - ); + return (event.name != "phase" || game.phaseNumber == 0) && player.countCards("h") > 0; }, content: function () { var hs = player.getCards("h"); @@ -1090,22 +936,13 @@ game.import("character", function () { trigger: { player: "gainAfter" }, forced: true, filter: function (event, player) { - return ( - event.getParent().name == "draw" && - event.getParent(2).name != "weishu" && - event.getParent("phaseDraw").player != player - ); + return event.getParent().name == "draw" && event.getParent(2).name != "weishu" && event.getParent("phaseDraw").player != player; }, content: function () { "step 0"; - player - .chooseTarget(true, "请选择【卫戍】的目标", "令一名角色摸一张牌") - .set("ai", function (target) { - return ( - get.attitude(_status.event.player, target) * - Math.sqrt(Math.max(1, 4 - target.countCards("h"))) - ); - }); + player.chooseTarget(true, "请选择【卫戍】的目标", "令一名角色摸一张牌").set("ai", function (target) { + return get.attitude(_status.event.player, target) * Math.sqrt(Math.max(1, 4 - target.countCards("h"))); + }); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -1122,30 +959,14 @@ game.import("character", function () { }, forced: true, filter: function (event, player) { - return ( - event.type == "discard" && - event.getParent(3).name != "weishu_discard" && - event.getParent("phaseDiscard").player != player && - event.getl(player).cards2.length > 0 && - game.hasPlayer( - (target) => - target != player && target.countDiscardableCards(player, "he") > 0 - ) - ); + return event.type == "discard" && event.getParent(3).name != "weishu_discard" && event.getParent("phaseDiscard").player != player && event.getl(player).cards2.length > 0 && game.hasPlayer(target => target != player && target.countDiscardableCards(player, "he") > 0); }, content: function () { "step 0"; player - .chooseTarget( - true, - "请选择【卫戍】的目标", - "弃置一名其他角色的一张牌", - function (card, player, target) { - return ( - target != player && target.countDiscardableCards(player, "he") > 0 - ); - } - ) + .chooseTarget(true, "请选择【卫戍】的目标", "弃置一名其他角色的一张牌", function (card, player, target) { + return target != player && target.countDiscardableCards(player, "he") > 0; + }) .set("ai", function (target) { var player = _status.event.player; return get.effect(target, { name: "guohe_copy2" }, player, player); @@ -1177,13 +998,9 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("gaoling"), - "令一名角色回复1点体力", - function (card, player, target) { - return target.isDamaged(); - } - ) + .chooseTarget(get.prompt("gaoling"), "令一名角色回复1点体力", function (card, player, target) { + return target.isDamaged(); + }) .set("ai", function (target) { var player = _status.event.player; return get.recoverEffect(target, player, player); @@ -1204,17 +1021,10 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - get.prompt("qimei"), - "选择一名其他角色并获得“齐眉”效果", - lib.filter.notMe - ) + .chooseTarget(get.prompt("qimei"), "选择一名其他角色并获得“齐眉”效果", lib.filter.notMe) .set("ai", function (target) { var player = _status.event.player; - return ( - get.attitude(player, target) / - (Math.abs(player.countCards("h") + 2 - target.countCards("h")) + 1) - ); + return get.attitude(player, target) / (Math.abs(player.countCards("h") + 2 - target.countCards("h")) + 1); }) .setHiddenSkill("qimei"); "step 1"; @@ -1233,14 +1043,7 @@ game.import("character", function () { forced: true, popup: false, trigger: { - global: [ - "equipAfter", - "addJudgeAfter", - "gainAfter", - "loseAsyncAfter", - "loseAfter", - "addToExpansionAfter", - ], + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "loseAfter", "addToExpansionAfter"], }, usable: 1, filter: function (event, player) { @@ -1320,8 +1123,7 @@ game.import("character", function () { .set("prompt", get.prompt("ybzhuiji")) .set("ai", function () { var player = _status.event.player; - if (player.isDamaged() && player.countCards("h", "tao") < player.getDamagedHp()) - return 1; + if (player.isDamaged() && player.countCards("h", "tao") < player.getDamagedHp()) return 1; return "cancel2"; }) .setHiddenSkill("ybzhuiji"); @@ -1357,21 +1159,13 @@ game.import("character", function () { trigger: { global: "useCardToPlayer" }, direct: true, filter: function (event, player) { - if ( - !event.player.isMaxHandcard(true) || - !event.isFirstTarget || - get.type(event.card, null, false) != "trick" - ) - return false; + if (!event.player.isMaxHandcard(true) || !event.isFirstTarget || get.type(event.card, null, false) != "trick") return false; var info = get.info(event.card); if (info.allowMultiple == false) return false; if (event.targets && !info.multitarget) { if ( game.hasPlayer(function (current) { - return ( - !event.targets.includes(current) && - lib.filter.targetEnabled2(event.card, event.player, current) - ); //&&lib.filter.targetInRange(event.card,event.player,current); + return !event.targets.includes(current) && lib.filter.targetEnabled2(event.card, event.player, current); //&&lib.filter.targetInRange(event.card,event.player,current); }) ) { return true; @@ -1386,10 +1180,7 @@ game.import("character", function () { player .chooseTarget(get.prompt("canmou"), function (card, player, target) { var player = _status.event.source; - return ( - !_status.event.targets.includes(target) && - lib.filter.targetEnabled2(_status.event.card, player, target) - ); //&&lib.filter.targetInRange(_status.event.card,player,target); + return !_status.event.targets.includes(target) && lib.filter.targetEnabled2(_status.event.card, player, target); //&&lib.filter.targetInRange(_status.event.card,player,target); }) .set("prompt2", prompt2) .set("ai", function (target) { @@ -1421,13 +1212,7 @@ game.import("character", function () { trigger: { global: "useCardToTarget" }, logTarget: "target", filter: function (event, player) { - return ( - event.target != player && - event.targets.length == 1 && - get.type(event.card, null, false) == "trick" && - event.target.isMaxHp(true) && - lib.filter.targetEnabled2(event.card, event.player, player) - ); + return event.target != player && event.targets.length == 1 && get.type(event.card, null, false) == "trick" && event.target.isMaxHp(true) && lib.filter.targetEnabled2(event.card, event.player, player); }, check: function (event, player) { return get.effect(player, event.card, event.player, player) > 0; @@ -1468,11 +1253,7 @@ game.import("character", function () { return ui.create.dialog("婉嫕", [list, "vcard"], "hidden"); }, filter: function (button, player) { - return lib.filter.filterCard( - { name: button.link[2] }, - player, - _status.event.getParent() - ); + return lib.filter.filterCard({ name: button.link[2] }, player, _status.event.getParent()); }, check: function (button) { return _status.event.player.getUseValue({ name: button.link[2] }); @@ -1511,15 +1292,7 @@ game.import("character", function () { trigger: { target: "useCardToTargeted" }, logTarget: "player", filter: function (event, player) { - return ( - event.card.name == "sha" && - event.card.isCard && - event.getParent(2).name != "maihuo_effect" && - event.cards.filterInD().length > 0 && - event.targets.length == 1 && - event.player.isIn() && - !event.player.getExpansions("maihuo_effect").length - ); + return event.card.name == "sha" && event.card.isCard && event.getParent(2).name != "maihuo_effect" && event.cards.filterInD().length > 0 && event.targets.length == 1 && event.player.isIn() && !event.player.getExpansions("maihuo_effect").length; }, prompt2: function (event) { return "令" + get.translation(event.card) + "暂时对你无效"; @@ -1579,10 +1352,7 @@ game.import("character", function () { forced: true, locked: false, filter: function (event, player) { - return ( - event.player.hasSkill("maihuo_effect") && - event.player.getExpansions("maihuo_effect").length > 0 - ); + return event.player.hasSkill("maihuo_effect") && event.player.getExpansions("maihuo_effect").length > 0; }, content: function () { trigger.player.removeSkill("maihuo_effect"); @@ -1618,28 +1388,19 @@ game.import("character", function () { trigger: { player: "useCardAfter" }, usable: 1, filter: function (event, player) { - return ( - (event.card.yingbian || get.is.yingbian(event.card)) && - event.cards.filterInD().length > 0 - ); + return (event.card.yingbian || get.is.yingbian(event.card)) && event.cards.filterInD().length > 0; }, direct: true, content: function () { "step 0"; event.cards = trigger.cards.filterInD(); - player - .chooseTarget( - get.prompt("xuanbei"), - "令一名其他角色获得" + get.translation(event.cards), - lib.filter.notMe - ) - .set("ai", function (target) { - var att = get.attitude(_status.event.player, target); - if (att < 3) return 0; - if (target.hasJudge("lebu")) att /= 2; - if (target.hasSkillTag("nogain")) att /= 10; - return att / (1 + get.distance(player, target, "absolute")); - }); + player.chooseTarget(get.prompt("xuanbei"), "令一名其他角色获得" + get.translation(event.cards), lib.filter.notMe).set("ai", function (target) { + var att = get.attitude(_status.event.player, target); + if (att < 3) return 0; + if (target.hasJudge("lebu")) att /= 2; + if (target.hasSkillTag("nogain")) att /= 10; + return att / (1 + get.distance(player, target, "absolute")); + }); "step 1"; if (result.bool) { var target = result.targets[0]; @@ -1706,16 +1467,14 @@ game.import("character", function () { enable: ["chooseToUse", "chooseToRespond"], viewAsFilter: function (player) { var js = player.getCards("h"); - return ( - js.length == 1 && game.checkMod(js[0], player, "unchanged", "cardEnabled2", player) - ); + return js.length == 1 && game.checkMod(js[0], player, "unchanged", "cardEnabled2", player); }, selectCard: -1, filterCard: true, position: "h", prompt: "将全部手牌当做【闪】使用", viewAs: { name: "shan" }, - check: (card) => 10 - get.value(card), + check: card => 10 - get.value(card), ai: { order: 1, respondShan: true, @@ -1729,13 +1488,11 @@ game.import("character", function () { enable: ["chooseToUse", "chooseToRespond"], viewAsFilter: function (player) { var js = player.getCards("e"); - return ( - js.length == 1 && game.checkMod(js[0], player, "unchanged", "cardEnabled2", player) - ); + return js.length == 1 && game.checkMod(js[0], player, "unchanged", "cardEnabled2", player); }, selectCard: -1, filterCard: true, - check: (card) => 9 - get.value(card), + check: card => 9 - get.value(card), position: "e", prompt: "将装备区的牌当做【无懈可击】使用", viewAs: { name: "wuxie" }, @@ -1748,16 +1505,14 @@ game.import("character", function () { enable: ["chooseToUse", "chooseToRespond"], viewAsFilter: function (player) { var js = player.getCards("j"); - return ( - js.length == 1 && game.checkMod(js[0], player, "unchanged", "cardEnabled2", player) - ); + return js.length == 1 && game.checkMod(js[0], player, "unchanged", "cardEnabled2", player); }, selectCard: -1, filterCard: true, position: "j", prompt: "将判定区的牌当做【杀】使用", viewAs: { name: "sha" }, - check: (card) => 1, + check: card => 1, locked: false, ai: { order: 10, @@ -1767,15 +1522,7 @@ game.import("character", function () { }, effect: { target: function (card, player, target, current) { - if ( - card && - (card.name == "shandian" || card.name == "fulei") && - player == target && - !target.countCards("j") && - target.isPhaseUsing() && - target.hasValueTarget({ name: "sha" }, null, true) - ) - return [1, 2]; + if (card && (card.name == "shandian" || card.name == "fulei") && player == target && !target.countCards("j") && target.isPhaseUsing() && target.hasValueTarget({ name: "sha" }, null, true)) return [1, 2]; }, }, }, @@ -1816,11 +1563,7 @@ game.import("character", function () { return ui.create.dialog("草诏", [vcards, "vcard"]); }, check: function (button) { - return _status.event.player.getUseValue( - { name: button.link[2], isCard: true }, - null, - true - ); + return _status.event.player.getUseValue({ name: button.link[2], isCard: true }, null, true); }, backup: function (links, player) { return { @@ -1829,10 +1572,7 @@ game.import("character", function () { filterCard: true, position: "h", check: function (card) { - return ( - player.getUseValue({ name: lib.skill.caozhao_backup.cardname }) - - (player.getUseValue(card, null, true) + 0.1) / (get.value(card) / 6) - ); + return player.getUseValue({ name: lib.skill.caozhao_backup.cardname }) - (player.getUseValue(card, null, true) + 0.1) / (get.value(card) / 6); }, filterTarget: function (card, player, target) { return target != player && target.hp <= player.hp; @@ -1841,31 +1581,17 @@ game.import("character", function () { lose: false, content: function () { "step 0"; - player.showCards( - cards, - get.translation(player) + - "发动【草诏】,声明" + - get.translation(lib.skill.caozhao_backup.cardname) - ); + player.showCards(cards, get.translation(player) + "发动【草诏】,声明" + get.translation(lib.skill.caozhao_backup.cardname)); if (!player.storage.caozhao) player.storage.caozhao = []; player.storage.caozhao.push(lib.skill.caozhao_backup.cardname); "step 1"; target .chooseControl() - .set("choiceList", [ - "令" + - get.translation(player) + - "将" + - get.translation(cards[0]) + - "的牌名改为" + - get.translation(lib.skill.caozhao_backup.cardname), - "失去1点体力", - ]) + .set("choiceList", ["令" + get.translation(player) + "将" + get.translation(cards[0]) + "的牌名改为" + get.translation(lib.skill.caozhao_backup.cardname), "失去1点体力"]) .set("ai", function (event, player) { var target = _status.event.getParent().player; if (get.attitude(player, target) > 0) return 0; - if (player.hp > 3 || (player.hp > 1 && player.hasSkill("zhaxiang"))) - return 1; + if (player.hp > 3 || (player.hp > 1 && player.hasSkill("zhaxiang"))) return 1; if (player.hp > 2) return Math.random() > 0.5 ? 0 : 1; return 0; }); @@ -1875,30 +1601,19 @@ game.import("character", function () { target.loseHp(); event.finish(); } else { - player - .chooseTarget( - "是否将" + - get.translation(lib.skill.caozhao_backup.cardname) + - "(" + - get.translation(cards[0]) + - ")交给一名其他角色?", - lib.filter.notMe - ) - .set("ai", () => -1); + player.chooseTarget("是否将" + get.translation(lib.skill.caozhao_backup.cardname) + "(" + get.translation(cards[0]) + ")交给一名其他角色?", lib.filter.notMe).set("ai", () => -1); } "step 3"; if (result.bool) { var target = result.targets[0]; player.line(target, "green"); if (!target.storage.caozhao_info) target.storage.caozhao_info = {}; - target.storage.caozhao_info[cards[0].cardid] = - lib.skill.caozhao_backup.cardname; + target.storage.caozhao_info[cards[0].cardid] = lib.skill.caozhao_backup.cardname; target.addSkill("caozhao_info"); player.give(cards, target, "give").gaintag.add("caozhao"); } else { if (!player.storage.caozhao_info) player.storage.caozhao_info = {}; - player.storage.caozhao_info[cards[0].cardid] = - lib.skill.caozhao_backup.cardname; + player.storage.caozhao_info[cards[0].cardid] = lib.skill.caozhao_backup.cardname; player.addGaintag(cards, "caozhao"); player.addSkill("caozhao_info"); } @@ -1927,23 +1642,11 @@ game.import("character", function () { mod: { cardname: function (card, player) { var map = player.storage.caozhao_info; - if ( - map && - map[card.cardid] && - get.itemtype(card) == "card" && - card.hasGaintag("caozhao") - ) - return map[card.cardid]; + if (map && map[card.cardid] && get.itemtype(card) == "card" && card.hasGaintag("caozhao")) return map[card.cardid]; }, cardnature: function (card, player) { var map = player.storage.caozhao_info; - if ( - map && - map[card.cardid] && - get.itemtype(card) == "card" && - card.hasGaintag("caozhao") - ) - return false; + if (map && map[card.cardid] && get.itemtype(card) == "card" && card.hasGaintag("caozhao")) return false; }, }, }, @@ -1951,14 +1654,7 @@ game.import("character", function () { audio: 2, trigger: { player: "damageEnd" }, filter: function (event, player) { - return ( - event.player && - event.source && - event.player != event.source && - event.player.isAlive() && - event.source.isAlive() && - (event.player.countCards("he") > 0 || event.source.countCards("he") > 0) - ); + return event.player && event.source && event.player != event.source && event.player.isAlive() && event.source.isAlive() && (event.player.countCards("he") > 0 || event.source.countCards("he") > 0); }, direct: true, content: function () { @@ -1966,16 +1662,10 @@ game.import("character", function () { var target = trigger.source; event.target = target; player - .chooseTarget( - get.prompt("olxibing"), - "弃置自己或" + - get.translation(target) + - "的两张牌,然后手牌数较少的角色摸两张牌且不能对你使用牌直到回合结束", - function (card, player, target) { - if (target != player && target != _status.event.target) return false; - return target.countCards("he") > 0; - } - ) + .chooseTarget(get.prompt("olxibing"), "弃置自己或" + get.translation(target) + "的两张牌,然后手牌数较少的角色摸两张牌且不能对你使用牌直到回合结束", function (card, player, target) { + if (target != player && target != _status.event.target) return false; + return target.countCards("he") > 0; + }) .set("target", target) .set("ai", function (targetx) { var player = _status.event.player, @@ -2081,21 +1771,8 @@ game.import("character", function () { for (var j of lib.character[i][3]) { if (j == "bolan") continue; var skill = lib.skill[j]; - if ( - !skill || - skill.juexingji || - skill.hiddenSkill || - skill.zhuSkill || - skill.dutySkill || - skill.chargeSkill || - lib.skill.bolan.banned.includes(j) - ) - continue; - if ( - skill.init || - (skill.ai && (skill.ai.combo || skill.ai.notemp || skill.ai.neg)) - ) - continue; + if (!skill || skill.juexingji || skill.hiddenSkill || skill.zhuSkill || skill.dutySkill || skill.chargeSkill || lib.skill.bolan.banned.includes(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); } @@ -2122,15 +1799,7 @@ game.import("character", function () { .set( "choiceList", list.map(function (i) { - return ( - '
    【' + - get.translation( - lib.translate[i + "_ab"] || get.translation(i).slice(0, 2) - ) + - "】
    " + - get.skillInfoTranslation(i, player) + - "
    " - ); + return '
    【' + get.translation(lib.translate[i + "_ab"] || get.translation(i).slice(0, 2)) + "】
    " + get.skillInfoTranslation(i, player) + "
    "; }) ) .set("displayIndex", false) @@ -2165,12 +1834,8 @@ game.import("character", function () { }, selectTarget: function () { if ( - game.countPlayer((current) => { - return lib.skill.bolan_g.filterTarget( - null, - _status.event.player, - current - ); + game.countPlayer(current => { + return lib.skill.bolan_g.filterTarget(null, _status.event.player, current); }) == 1 ) return -1; @@ -2192,15 +1857,7 @@ game.import("character", function () { .set( "choiceList", list.map(function (i) { - return ( - '
    【' + - get.translation( - lib.translate[i + "_ab"] || get.translation(i).slice(0, 2) - ) + - "】
    " + - get.skillInfoTranslation(i, player) + - "
    " - ); + return '
    【' + get.translation(lib.translate[i + "_ab"] || get.translation(i).slice(0, 2)) + "】
    " + get.skillInfoTranslation(i, player) + "
    "; }) ) .set("displayIndex", false) @@ -2208,13 +1865,7 @@ game.import("character", function () { .set("ai", () => { var list = _status.event.controls.slice(); return list.sort((a, b) => { - return ( - (get.skillRank(b, "in") - get.skillRank(a, "in")) * - get.attitude( - _status.event.player, - _status.event.getParent().player - ) - ); + return (get.skillRank(b, "in") - get.skillRank(a, "in")) * get.attitude(_status.event.player, _status.event.getParent().player); })[0]; }); } else event.finish(); @@ -2226,9 +1877,7 @@ game.import("character", function () { ai: { order: function (item, player) { if (player.hp >= 5 || player.countCards("h") >= 10) return 10; - var list = game.filterPlayer((current) => - lib.skill.bolan_g.filterTarget(null, player, current) - ); + var list = game.filterPlayer(current => lib.skill.bolan_g.filterTarget(null, player, current)); for (var target of list) { if (get.attitude(target, player) > 0) return 10; } @@ -2236,8 +1885,7 @@ game.import("character", function () { }, result: { player: function (player, target) { - if (player.hasUnknown()) - return player.hp + player.countCards("h") / 4 - 5 > 0 ? 1 : 0; + if (player.hasUnknown()) return player.hp + player.countCards("h") / 4 - 5 > 0 ? 1 : 0; var tao = player.countCards("h", "tao"); if (player.hp + tao > 4) return 4 + get.attitude(player, target); if (player.hp + tao > 3) return get.attitude(player, target) - 2; @@ -2254,11 +1902,7 @@ game.import("character", function () { forced: true, logTarget: "player", filter: function (event, player) { - return ( - player != event.player && - (event.card.name == "sha" || - (get.color(event.card) == "black" && get.type(event.card) == "trick")) - ); + return player != event.player && (event.card.name == "sha" || (get.color(event.card) == "black" && get.type(event.card) == "trick")); }, content: function () { var target = trigger.player; @@ -2283,19 +1927,12 @@ game.import("character", function () { hiddenSkill: true, filter: function (event, player) { var target = _status.currentPhase; - return ( - event.toShow.includes("jin_simayi") && - target && - target != player && - target.countGainableCards(player, "he") > 0 - ); + return event.toShow.includes("jin_simayi") && target && target != player && target.countGainableCards(player, "he") > 0; }, direct: true, content: function () { var target = _status.currentPhase; - player - .gainPlayerCard(target, "he", get.prompt("buchen", target)) - .set("logSkill", ["buchen", target]); + player.gainPlayerCard(target, "he", get.prompt("buchen", target)).set("logSkill", ["buchen", target]); }, }, smyyingshi: { @@ -2394,20 +2031,10 @@ game.import("character", function () { if (!lib.suit.includes(suit) || !lib.skill.quanbian.hasHand(event)) return false; return ( player.getHistory("useCard", function (evt) { - return ( - evt != event && - get.suit(evt.card) == suit && - lib.skill.quanbian.hasHand(evt) && - evt.getParent("phaseUse") == phase - ); + return evt != event && get.suit(evt.card) == suit && lib.skill.quanbian.hasHand(evt) && evt.getParent("phaseUse") == phase; }).length + player.getHistory("respond", function (evt) { - return ( - evt != event && - get.suit(evt.card) == suit && - lib.skill.quanbian.hasHand(evt) && - evt.getParent("phaseUse") == phase - ); + return evt != event && get.suit(evt.card) == suit && lib.skill.quanbian.hasHand(evt) && evt.getParent("phaseUse") == phase; }).length == 0 ); @@ -2418,10 +2045,7 @@ game.import("character", function () { player .chooseControl("cancel2") .set("prompt", get.prompt("quanbian")) - .set("choiceList", [ - "摸一张牌", - "观看牌堆顶的" + get.cnNumber(player.maxHp) + "张牌并将其中一张置于牌堆底", - ]) + .set("choiceList", ["摸一张牌", "观看牌堆顶的" + get.cnNumber(player.maxHp) + "张牌并将其中一张置于牌堆底"]) .set("ai", function () { var player = _status.event.player; var suit = get.suit(_status.event.getTrigger().card); @@ -2465,8 +2089,7 @@ game.import("character", function () { onremove: true, mod: { cardEnabled2: function (card, player) { - if (get.position(card) == "h" && player.storage.quanbian2.includes(get.suit(card))) - return false; + if (get.position(card) == "h" && player.storage.quanbian2.includes(get.suit(card))) return false; }, }, intro: { @@ -2494,19 +2117,12 @@ game.import("character", function () { var filterTarget = function (card, player, target) { return player.inRange(target); }; - if (game.hasPlayer((current) => filterTarget("L∞pers", player, current))) { + if (game.hasPlayer(current => filterTarget("L∞pers", player, current))) { var bool = player.isHealthy(); - player - .chooseTarget( - "忠允:对攻击范围内的一名角色造成1点伤害" + - (bool ? "" : ",或点取消回复1点体力"), - filterTarget, - bool - ) - .set("ai", function (target) { - var player = _status.event.player; - return get.damageEffect(target, player, player); - }); + player.chooseTarget("忠允:对攻击范围内的一名角色造成1点伤害" + (bool ? "" : ",或点取消回复1点体力"), filterTarget, bool).set("ai", function (target) { + var player = _status.event.player; + return get.damageEffect(target, player, player); + }); } else event._result = { bool: false }; "step 1"; if (result.bool) { @@ -2521,13 +2137,7 @@ game.import("character", function () { audio: "zhongyun", trigger: { player: ["loseAfter"], - global: [ - "equipAfter", - "addJudgeAfter", - "gainAfter", - "loseAsyncAfter", - "addToExpansionAfter", - ], + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, forced: true, filter: function (event, player) { @@ -2543,22 +2153,19 @@ game.import("character", function () { var filterTarget = function (card, player, target) { return target != player && target.countDiscardableCards(player, "he") > 0; }; - if (!game.hasPlayer((current) => filterTarget("L∞pers", player, current))) - event._result = { bool: false }; + if (!game.hasPlayer(current => filterTarget("L∞pers", player, current))) event._result = { bool: false }; else - player - .chooseTarget(filterTarget, "忠允:弃置一名其他角色的一张牌,或点取消摸一张牌") - .set("ai", function (target) { - var att = get.attitude(player, target); - if (att >= 0) return 0; - if ( - target.countCards("he", function (card) { - return get.value(card) > 5; - }) - ) - return -att; - return 0; - }); + player.chooseTarget(filterTarget, "忠允:弃置一名其他角色的一张牌,或点取消摸一张牌").set("ai", function (target) { + var att = get.attitude(player, target); + if (att >= 0) return 0; + if ( + target.countCards("he", function (card) { + return get.value(card) > 5; + }) + ) + return -att; + return 0; + }); "step 1"; if (!result.bool) player.draw(); else { @@ -2586,25 +2193,15 @@ game.import("character", function () { "step 0"; var color = get.color(trigger.player.judging[0], trigger.player); player - .chooseCard( - get.translation(trigger.player) + - "的" + - (trigger.judgestr || "") + - "判定为" + - get.translation(trigger.player.judging[0]) + - "," + - get.prompt("shenpin"), - "hes", - function (card) { - if (get.color(card) == _status.event.color) return false; - var player = _status.event.player; - var mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player); - if (mod2 != "unchanged") return mod2; - var mod = game.checkMod(card, player, "unchanged", "cardRespondable", player); - if (mod != "unchanged") return mod; - return true; - } - ) + .chooseCard(get.translation(trigger.player) + "的" + (trigger.judgestr || "") + "判定为" + get.translation(trigger.player.judging[0]) + "," + get.prompt("shenpin"), "hes", function (card) { + if (get.color(card) == _status.event.color) return false; + var player = _status.event.player; + var mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player); + if (mod2 != "unchanged") return mod2; + var mod = game.checkMod(card, player, "unchanged", "cardRespondable", player); + if (mod != "unchanged") return mod; + return true; + }) .set("ai", function (card) { var trigger = _status.event.getTrigger(); var player = _status.event.player; @@ -2636,11 +2233,7 @@ game.import("character", function () { card.clone.classList.remove("thrownhighlight"); } }, trigger.player.judging[0]); - game.addVideo( - "deletenode", - player, - get.cardsInfo([trigger.player.judging[0].clone]) - ); + game.addVideo("deletenode", player, get.cardsInfo([trigger.player.judging[0].clone])); } game.cardsDiscard(trigger.player.judging[0]); trigger.player.judging[0] = result.cards[0]; @@ -2685,11 +2278,7 @@ game.import("character", function () { true ) .set("ai", function (button) { - if ( - button.link[2] == "cheliji_sichengliangyu" && - player.countCards("h") < player.hp - ) - return 1; + if (button.link[2] == "cheliji_sichengliangyu" && player.countCards("h") < player.hp) return 1; return Math.random(); }); "step 1"; @@ -2712,13 +2301,7 @@ game.import("character", function () { audio: "chexuan", trigger: { player: "loseAfter", - global: [ - "equipAfter", - "addJudgeAfter", - "gainAfter", - "loseAsyncAfter", - "addToExpansionAfter", - ], + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, frequent: true, filter: function (event, player) { @@ -2774,12 +2357,7 @@ game.import("character", function () { equipSkill: true, cardcolor: "club", filter: function (event, player) { - return ( - player != event.player && - !event.player.getHistory("sourceDamage").length && - event.player.countCards("he") > 0 && - player.getEquip("cheliji_tiejixuanyu") - ); + return player != event.player && !event.player.getHistory("sourceDamage").length && event.player.countCards("he") > 0 && player.getEquip("cheliji_tiejixuanyu"); }, logTarget: "player", check: function (event, player) { @@ -2827,31 +2405,18 @@ game.import("character", function () { trigger: { global: ["useCard", "respond"] }, preHidden: true, filter: function (event, player) { - if ( - !Array.isArray(event.respondTo) || - event.respondTo[0] == event.player || - ![event.respondTo[0], event.player].includes(player) - ) - return false; + if (!Array.isArray(event.respondTo) || event.respondTo[0] == event.player || ![event.respondTo[0], event.player].includes(player)) return false; var color = get.color(event.card); if (color == "none" || get.color(event.respondTo[1]) != color) return false; var target = lib.skill.caiwang.logTarget(event, player); - return ( - target[ - player.getStorage("naxiang2").includes(target) - ? "countGainableCards" - : "countDiscardableCards" - ](player, "he") > 0 - ); + return target[player.getStorage("naxiang2").includes(target) ? "countGainableCards" : "countDiscardableCards"](player, "he") > 0; }, logTarget: function (event, player) { return player == event.respondTo[0] ? event.player : event.respondTo[0]; }, prompt2: function (event, player) { var target = lib.skill.caiwang.logTarget(event, player); - return ( - (player.getStorage("naxiang2").includes(target) ? "获得" : "弃置") + "该角色的一张牌" - ); + return (player.getStorage("naxiang2").includes(target) ? "获得" : "弃置") + "该角色的一张牌"; }, check: function (event, player) { return get.attitude(player, lib.skill.caiwang.logTarget(event, player)) <= 0; @@ -2863,11 +2428,7 @@ game.import("character", function () { "step 1"; var target = lib.skill.caiwang.logTarget(trigger, player); player.logSkill(event.name, target); - player[ - player.getStorage("naxiang2").includes(target) - ? "gainPlayerCard" - : "discardPlayerCard" - ](target, "he", true); + player[player.getStorage("naxiang2").includes(target) ? "gainPlayerCard" : "discardPlayerCard"](target, "he", true); }, }, naxiang: { @@ -2957,29 +2518,16 @@ game.import("character", function () { async cost(event, trigger, player) { event.cards = player.getExpansions("qiaoyan"); event.result = await player - .chooseTarget( - true, - "请选择【献珠】的目标", - "将" + - get.translation(event.cards) + - "交给一名角色。若该角色不为你自己,则你令其视为对其攻击范围内的另一名角色使用【杀】" - ) + .chooseTarget(true, "请选择【献珠】的目标", "将" + get.translation(event.cards) + "交给一名角色。若该角色不为你自己,则你令其视为对其攻击范围内的另一名角色使用【杀】") .set("ai", function (target) { var player = _status.event.player; - var eff = - get.sgn(get.attitude(player, target)) * - get.value(_status.event.getParent().cards[0], target); + var eff = get.sgn(get.attitude(player, target)) * get.value(_status.event.getParent().cards[0], target); if (player != target) eff += Math.max.apply( null, game .filterPlayer(function (current) { - if ( - current != target && - player.inRange(current) && - target.canUse("sha", current, false) - ) - return true; + if (current != target && player.inRange(current) && target.canUse("sha", current, false)) return true; }) .map(function (current) { return get.effect(current, { name: "sha" }, target, player); @@ -3001,23 +2549,15 @@ game.import("character", function () { target.isIn() && player.isIn() && game.hasPlayer(function (current) { - return ( - current != target && - player.inRange(current) && - target.canUse("sha", current, false) - ); + return current != target && player.inRange(current) && target.canUse("sha", current, false); }) ) { var str = get.translation(target); player - .chooseTarget( - true, - "选择攻击范围内的一名角色,视为" + str + "对其使用【杀】", - function (card, player, target) { - var source = _status.event.target; - return player.inRange(target) && source.canUse("sha", target, false); - } - ) + .chooseTarget(true, "选择攻击范围内的一名角色,视为" + str + "对其使用【杀】", function (card, player, target) { + var source = _status.event.target; + return player.inRange(target) && source.canUse("sha", target, false); + }) .set("target", target) .set("ai", function (target) { var evt = _status.event; @@ -3046,15 +2586,10 @@ game.import("character", function () { content: function () { "step 0"; player - .chooseTarget( - "请选择【慧容】的目标", - "令一名角色将手牌数摸至/弃置至与其体力值相同(至多摸至五张)", - true, - function (card, player, target) { - var num = target.countCards("h"); - return num > target.hp || num < Math.min(5, target.hp); - } - ) + .chooseTarget("请选择【慧容】的目标", "令一名角色将手牌数摸至/弃置至与其体力值相同(至多摸至五张)", true, function (card, player, target) { + var num = target.countCards("h"); + return num > target.hp || num < Math.min(5, target.hp); + }) .set("ai", function (target) { var att = get.attitude(_status.event.player, target); var num = target.countCards("h"); @@ -3075,33 +2610,20 @@ game.import("character", function () { game.addGlobalSkill("ciwei_ai"); }, onremove: () => { - if (!game.hasPlayer((i) => i.hasSkill("ciwei"), true)) game.removeGlobalSkill("ciwei_ai"); + if (!game.hasPlayer(i => i.hasSkill("ciwei"), true)) game.removeGlobalSkill("ciwei_ai"); }, trigger: { global: "useCard" }, direct: true, preHidden: true, filter: function (event, player) { - if ( - event.all_excluded || - event.player == player || - event.player != _status.currentPhase || - !player.countCards("he") - ) - return false; - return ( - event.player.getHistory("useCard").indexOf(event) == 1 && - ["basic", "trick"].includes(get.type(event.card)) - ); + if (event.all_excluded || event.player == player || event.player != _status.currentPhase || !player.countCards("he")) return false; + return event.player.getHistory("useCard").indexOf(event) == 1 && ["basic", "trick"].includes(get.type(event.card)); }, content: function () { "step 0"; if (player != game.me && !player.isOnline()) game.delayx(); player - .chooseToDiscard( - get.prompt("ciwei", trigger.player), - "弃置一张牌,取消" + get.translation(trigger.card) + "的所有目标", - "he" - ) + .chooseToDiscard(get.prompt("ciwei", trigger.player), "弃置一张牌,取消" + get.translation(trigger.card) + "的所有目标", "he") .set("ai", function (card) { return _status.event.goon / 1.4 - get.value(card); }) @@ -3131,12 +2653,7 @@ game.import("character", function () { player != _status.currentPhase || player.getHistory("useCard").length > 1 || !game.hasPlayer(function (current) { - return ( - current != player && - (get.realAttitude || get.attitude)(current, player) < 0 && - current.hasSkill("ciwei") && - current.countCards("he") > 0 - ); + return current != player && (get.realAttitude || get.attitude)(current, player) < 0 && current.hasSkill("ciwei") && current.countCards("he") > 0; }) ) return; @@ -3155,7 +2672,7 @@ game.import("character", function () { }, trigger: { player: "dieAfter" }, filter: () => { - return !game.hasPlayer((i) => i.hasSkill("ciwei"), true); + return !game.hasPlayer(i => i.hasSkill("ciwei"), true); }, silent: true, forceDie: true, @@ -3175,8 +2692,7 @@ game.import("character", function () { let i1 = history1.length - 1 - i, i2 = history2.length - 1 - i; if (i > 0 && history2[i2].isMe) break; - if (history1[i1].changeHp.some((evt) => evt.player == player && evt.num < 0)) - return false; + if (history1[i1].changeHp.some(evt => evt.player == player && evt.num < 0)) return false; } return true; }, @@ -3213,29 +2729,17 @@ game.import("character", function () { targetInRange: function (card, player, target) { if (!card.cards || get.type(card) != "basic") return; for (var i of card.cards) { - if (i.hasGaintag("zhuosheng")) - return game.online ? player == _status.currentPhase : player.isPhaseUsing(); + if (i.hasGaintag("zhuosheng")) return game.online ? player == _status.currentPhase : player.isPhaseUsing(); } }, cardUsable: function (card, player, target) { - if ( - !card.cards || - get.mode() == "guozhan" || - get.type(card) != "basic" || - !(game.online ? player == _status.currentPhase : player.isPhaseUsing()) - ) - return; + if (!card.cards || get.mode() == "guozhan" || get.type(card) != "basic" || !(game.online ? player == _status.currentPhase : player.isPhaseUsing())) return; for (var i of card.cards) { if (i.hasGaintag("zhuosheng")) return Infinity; } }, aiOrder: function (player, card, num) { - if ( - get.itemtype(card) == "card" && - card.hasGaintag("zhuosheng") && - get.type(card) == "basic" - ) - return num - 0.1; + if (get.itemtype(card) == "card" && card.hasGaintag("zhuosheng") && get.type(card) == "basic") return num - 0.1; }, }, trigger: { player: "useCard2" }, @@ -3261,11 +2765,7 @@ game.import("character", function () { if (event.targets && !info.multitarget) { if ( game.hasPlayer(function (current) { - return ( - !event.targets.includes(current) && - lib.filter.targetEnabled2(event.card, player, current) && - lib.filter.targetInRange(event.card, player, current) - ); + return !event.targets.includes(current) && lib.filter.targetEnabled2(event.card, player, current) && lib.filter.targetInRange(event.card, player, current); }) ) { return true; @@ -3280,19 +2780,13 @@ game.import("character", function () { .chooseTarget(get.prompt("zhuosheng"), function (card, player, target) { var player = _status.event.player; if (_status.event.targets.includes(target)) return true; - return ( - lib.filter.targetEnabled2(_status.event.card, player, target) && - lib.filter.targetInRange(_status.event.card, player, target) - ); + return lib.filter.targetEnabled2(_status.event.card, player, target) && lib.filter.targetInRange(_status.event.card, player, target); }) .set("prompt2", prompt2) .set("ai", function (target) { var trigger = _status.event.getTrigger(); var player = _status.event.player; - return ( - get.effect(target, trigger.card, player, player) * - (_status.event.targets.includes(target) ? -1 : 1) - ); + return get.effect(target, trigger.card, player, player) * (_status.event.targets.includes(target) ? -1 : 1); }) .set("targets", trigger.targets) .set("card", trigger.card); @@ -3306,8 +2800,7 @@ game.import("character", function () { "step 2"; if (event.targets) { player.logSkill("zhuosheng", event.targets); - if (trigger.targets.includes(event.targets[0])) - trigger.targets.removeArray(event.targets); + if (trigger.targets.includes(event.targets[0])) trigger.targets.removeArray(event.targets); else trigger.targets.addArray(event.targets); } }, @@ -3318,9 +2811,7 @@ game.import("character", function () { audio: "zhuosheng", trigger: { player: "useCard" }, filter: function (event, player) { - return ( - get.type(event.card) == "equip" && lib.skill.zhuosheng.filterx(event, player) - ); + return get.type(event.card) == "equip" && lib.skill.zhuosheng.filterx(event, player); }, frequent: true, prompt: "是否发动【擢升】摸一张牌?", @@ -3335,18 +2826,12 @@ game.import("character", function () { silent: true, firstDo: true, filter: function (event, player) { - return ( - get.mode() != "guozhan" && - get.type(event.card) == "basic" && - lib.skill.zhuosheng.filterx(event, player) && - event.addCount !== false - ); + return get.mode() != "guozhan" && get.type(event.card) == "basic" && lib.skill.zhuosheng.filterx(event, player) && event.addCount !== false; }, content: function () { trigger.addCount = false; var stat = player.getStat(); - if (stat && stat.card && stat.card[trigger.card.name]) - stat.card[trigger.card.name]--; + if (stat && stat.card && stat.card[trigger.card.name]) stat.card[trigger.card.name]--; }, }, }, @@ -3377,20 +2862,10 @@ game.import("character", function () { if (!lib.suit.includes(suit) || !lib.skill.quanbian.hasHand(event)) return false; return ( player.getHistory("useCard", function (evt) { - return ( - evt != event && - get.suit(evt.card) == suit && - lib.skill.quanbian.hasHand(evt) && - evt.getParent("phaseUse") == phase - ); + return evt != event && get.suit(evt.card) == suit && lib.skill.quanbian.hasHand(evt) && evt.getParent("phaseUse") == phase; }).length + player.getHistory("respond", function (evt) { - return ( - evt != event && - get.suit(evt.card) == suit && - lib.skill.quanbian.hasHand(evt) && - evt.getParent("phaseUse") == phase - ); + return evt != event && get.suit(evt.card) == suit && lib.skill.quanbian.hasHand(evt) && evt.getParent("phaseUse") == phase; }).length == 0 ); @@ -3400,9 +2875,7 @@ game.import("character", function () { var cards = get.cards(Math.min(5, player.maxHp)); game.cardsGotoOrdering(cards); var suit = get.suit(trigger.card); - var next = player.chooseToMove( - "权变:获得一张不为" + get.translation(suit) + "花色的牌并排列其他牌" - ); + var next = player.chooseToMove("权变:获得一张不为" + get.translation(suit) + "花色的牌并排列其他牌"); next.set("suit", suit); next.set("list", [["牌堆顶", cards], ["获得"]]); next.set("filterMove", function (from, to, moved) { @@ -3459,11 +2932,7 @@ game.import("character", function () { charlotte: true, filter: function (event, player) { if (event.name === "phaseUse") return true; - return ( - player.isPhaseUsing() && - lib.skill.quanbian.hasHand(event) && - get.type(event.card) != "equip" - ); + return player.isPhaseUsing() && lib.skill.quanbian.hasHand(event) && get.type(event.card) != "equip"; }, content: function () { var stat = player.getStat("skill"); @@ -3477,13 +2946,7 @@ game.import("character", function () { mod: { cardEnabled2: function (card, player) { var stat = player.getStat("skill"); - if ( - stat.xinquanbian && - stat.xinquanbian >= player.maxHp && - get.position(card) == "h" && - get.type(card, player) != "equip" - ) - return false; + if (stat.xinquanbian && stat.xinquanbian >= player.maxHp && get.position(card) == "h" && get.type(card, player) != "equip") return false; }, }, }, @@ -3535,12 +2998,7 @@ game.import("character", function () { return get.name(card) === "tao" || get.name(card) === "jiu"; }), att = get.attitude(_status.event.player, event.player), - eff = get.damageEffect( - event.player, - player, - _status.event.player, - get.natureList(event) - ), + eff = get.damageEffect(event.player, player, _status.event.player, get.natureList(event)), fd = event.player.hasSkillTag("filterDamage", null, { player: player, card: event.card, @@ -3549,10 +3007,7 @@ game.import("character", function () { if (player.storage.tairan2) hp -= player.storage.tairan2; if (eff <= 0 || fd || att >= -2 || Math.abs(hp) <= 1) return false; if (hp > 2 || (eff > 0 && event.player.isLinked() && event.hasNature())) return true; - return ( - !event.player.countCards("hs") || - (event.player.hp > 2 * event.num && !event.player.hasSkillTag("maixie")) - ); + return !event.player.countCards("hs") || (event.player.hp > 2 * event.num && !event.player.hasSkillTag("maixie")); }, logTarget: "player", content: function () { @@ -3564,13 +3019,7 @@ game.import("character", function () { ai: { damageBonus: true, skillTagFilter: function (player, tag, arg) { - return ( - arg && - arg.target && - arg.target.hp > 1 && - player.hp > 1 && - get.attitude(player, arg.target) < -2 - ); + return arg && arg.target && arg.target.hp > 1 && player.hp > 1 && get.attitude(player, arg.target) < -2; }, }, }, @@ -3615,11 +3064,7 @@ game.import("character", function () { if (player.group != "jin") return false; if (player.countCards("h", lib.skill.ruilve2.filterCard) == 0) return false; return game.hasPlayer(function (target) { - return ( - target != player && - target.hasZhuSkill("ruilve", player) && - !target.hasSkill("ruilve3") - ); + return target != player && target.hasZhuSkill("ruilve", player) && !target.hasSkill("ruilve3"); }); }, filterCard: function (card) { @@ -3629,11 +3074,7 @@ game.import("character", function () { }, visible: true, filterTarget: function (card, player, target) { - return ( - target != player && - target.hasZhuSkill("ruilve", player) && - !target.hasSkill("ruilve3") - ); + return target != player && target.hasZhuSkill("ruilve", player) && !target.hasSkill("ruilve3"); }, content: function () { player.give(cards, target); @@ -3666,10 +3107,7 @@ game.import("character", function () { player.recover(num); } "step 1"; - if (player.countCards("h") < player.maxHp) - player.drawTo(Math.min(player.maxHp, 5 + player.countCards("h"))).gaintag = [ - "tairan", - ]; + if (player.countCards("h") < player.maxHp) player.drawTo(Math.min(player.maxHp, 5 + player.countCards("h"))).gaintag = ["tairan"]; }, }, tairan2: { @@ -3679,11 +3117,7 @@ game.import("character", function () { }, aiValue: function (player, card, num) { if (card.hasGaintag && card.hasGaintag("tairan")) { - if ( - card.name !== "wuxie" && - (get.type(card) === "basic" || get.type(card, "trick") === "trick") - ) - return num / 64; + if (card.name !== "wuxie" && (get.type(card) === "basic" || get.type(card, "trick") === "trick")) return num / 64; return num / 8; } }, @@ -3726,8 +3160,7 @@ game.import("character", function () { event.card = card; player.gain(card, "gain2"); "step 1"; - if (player.getCards("h").includes(card) && get.subtype(card) == "equip5") - player.chooseUseTarget(card).nopopup = true; + if (player.getCards("h").includes(card) && get.subtype(card) == "equip5") player.chooseUseTarget(card).nopopup = true; }, }, jyishi: { @@ -3740,8 +3173,7 @@ game.import("character", function () { preHidden: true, filter: function (event, player) { var target = _status.currentPhase; - if (!target || !target.isIn() || event.type != "discard" || !target.isPhaseUsing()) - return false; + if (!target || !target.isIn() || event.type != "discard" || !target.isPhaseUsing()) return false; if (target == player) return false; var evt = event.getl(target); for (var i of evt.hs) { @@ -3761,8 +3193,7 @@ game.import("character", function () { .set("ai", function (button) { var card = button.link; var source = _status.event.source; - if (get.attitude(player, source) > 0) - return Math.max(1, source.getUseValue(card, null, true)); + if (get.attitude(player, source) > 0) return Math.max(1, source.getUseValue(card, null, true)); var cards = _status.event.getParent().cards.slice(0); if (cards.length == 1) return -get.value(card); cards.remove(card); @@ -3805,13 +3236,7 @@ game.import("character", function () { } else event.finish(); "step 2"; var num = Math.floor(player.countCards("h") / 2); - if (num && target.isAlive()) - player.chooseCard( - "h", - num, - true, - "交给" + get.translation(target) + get.cnNumber(num) + "张牌" - ); + if (num && target.isAlive()) player.chooseCard("h", num, true, "交给" + get.translation(target) + get.cnNumber(num) + "张牌"); else event.finish(); "step 3"; if (result.bool && result.cards && result.cards.length) player.give(result.cards, target); @@ -3835,13 +3260,7 @@ game.import("character", function () { hiddenSkill: true, filter: function (event, player) { var target = _status.currentPhase; - return ( - player != target && - target && - target.isAlive() && - event.toShow && - event.toShow.includes("jin_simazhao") - ); + return player != target && target && target.isAlive() && event.toShow && event.toShow.includes("jin_simazhao"); }, content: function () { player.addTempSkill("tuishi2"); @@ -3888,20 +3307,12 @@ game.import("character", function () { "step 2"; target.chooseToUse({ preTarget: event.target2, - prompt: - "请对" + - get.translation(event.target2) + - "使用一张【杀】,或受到来自" + - get.translation(player) + - "的1点伤害", + prompt: "请对" + get.translation(event.target2) + "使用一张【杀】,或受到来自" + get.translation(player) + "的1点伤害", filterCard: function (card, player) { return get.name(card) == "sha" && lib.filter.filterCard.apply(this, arguments); }, filterTarget: function (card, player, target) { - return ( - target == _status.event.preTarget && - lib.filter.filterTarget.apply(this, arguments) - ); + return target == _status.event.preTarget && lib.filter.filterTarget.apply(this, arguments); }, addCount: false, }); @@ -3916,10 +3327,7 @@ game.import("character", function () { "step 0"; player.choosePlayerCard(target, "h", true); "step 1"; - player.showCards( - result.cards, - get.translation(player) + "对" + get.translation(target) + "发动了【筹伐】" - ); + player.showCards(result.cards, get.translation(player) + "对" + get.translation(target) + "发动了【筹伐】"); var type = get.type2(result.cards[0], target), hs = target.getCards("h", function (card) { return card != result.cards[0] && get.type2(card, target) != type; @@ -4007,13 +3415,7 @@ game.import("character", function () { onremove: true, trigger: { player: "loseAfter", - global: [ - "equipAfter", - "addJudgeAfter", - "gainAfter", - "loseAsyncAfter", - "addToExpansionAfter", - ], + global: ["equipAfter", "addJudgeAfter", "gainAfter", "loseAsyncAfter", "addToExpansionAfter"], }, forced: true, charlotte: true, @@ -4059,19 +3461,17 @@ game.import("character", function () { ) event._result = { bool: false }; else - player - .chooseTarget(filterTarget, "弃置一名其他角色的一张牌或摸一张牌") - .set("ai", function (target) { - var att = get.attitude(player, target); - if (att >= 0) return 0; - if ( - target.countCards("he", function (card) { - return get.value(card) > 5; - }) - ) - return -att; - return 0; - }); + player.chooseTarget(filterTarget, "弃置一名其他角色的一张牌或摸一张牌").set("ai", function (target) { + var att = get.attitude(player, target); + if (att >= 0) return 0; + if ( + target.countCards("he", function (card) { + return get.value(card) > 5; + }) + ) + return -att; + return 0; + }); "step 2"; if (!result.bool) { player.logSkill("zhaoran2"); @@ -4108,13 +3508,7 @@ game.import("character", function () { if (!from.hasZhuSkill("chengwu") || from._chengwu) return; from._chengwu = true; var bool = game.hasPlayer(function (current) { - return ( - current != from && - current != to && - current.group == "jin" && - from.hasZhuSkill("chengwu", current) && - current.inRange(to) - ); + return current != from && current != to && current.group == "jin" && from.hasZhuSkill("chengwu", current) && current.inRange(to); }); delete from._chengwu; if (bool) return true; @@ -4167,11 +3561,7 @@ game.import("character", function () { if (num1 == 0) num2++; else num1--; } - event.cards = [ - event.card, - ui.cardPile.childNodes[num1], - ui.cardPile.childNodes[num2], - ]; + event.cards = [event.card, ui.cardPile.childNodes[num1], ui.cardPile.childNodes[num2]]; } game.updateRoundNumber(); event.cards.randomSort(); @@ -4192,9 +3582,7 @@ game.import("character", function () { "step 1"; var func = function (id, target) { var dialog = get.idDialog(id); - if (dialog) - dialog.content.firstChild.innerHTML = - "猜猜哪张是" + get.translation(target) + "的手牌?"; + if (dialog) dialog.content.firstChild.innerHTML = "猜猜哪张是" + get.translation(target) + "的手牌?"; }; if (player == game.me) func(event.videoId, target); else if (player.isOnline()) player.send(func, event.videoId, target); @@ -4361,12 +3749,7 @@ game.import("character", function () { forced: true, filter: function (event, player) { if (player._xijue) return false; - if (get.mode() == "guozhan") - return ( - event.name == "showCharacter" && - event.toShow && - event.toShow.includes("gz_zhanghuyuechen") - ); + if (get.mode() == "guozhan") return event.name == "showCharacter" && event.toShow && event.toShow.includes("gz_zhanghuyuechen"); return event.name != "showCharacter" && (event.name != "phase" || game.phaseNumber == 0); }, content: function () { @@ -4468,16 +3851,10 @@ game.import("character", function () { if (get.damageEffect(trigger.player, player, player) <= 0) { nono = true; } - var next = player.chooseToDiscard( - `是否弃置一枚“爵”和一张${ - get.mode() == "guozhan" ? "基本" : "手" - }牌,对${get.translation(trigger.player)}发动【骁果】?`, - "h", - function (card, player) { - if (get.mode() != "guozhan") return true; - return get.type(card, player) == "basic"; - } - ); + var next = player.chooseToDiscard(`是否弃置一枚“爵”和一张${get.mode() == "guozhan" ? "基本" : "手"}牌,对${get.translation(trigger.player)}发动【骁果】?`, "h", function (card, player) { + if (get.mode() != "guozhan") return true; + return get.type(card, player) == "basic"; + }); next.set("ai", function (card) { if (_status.event.nono) return 0; return 8 - get.useful(card); @@ -4489,11 +3866,7 @@ game.import("character", function () { player.removeMark("xijue", 1); var nono = get.damageEffect(trigger.player, player, trigger.player) >= 0; trigger.player - .chooseToDiscard( - "he", - "弃置一张装备牌并令" + get.translation(player) + "摸一张牌,或受到1点伤害", - { type: "equip" } - ) + .chooseToDiscard("he", "弃置一张装备牌并令" + get.translation(player) + "摸一张牌,或受到1点伤害", { type: "equip" }) .set("ai", function (card) { if (_status.event.nono) { return 0; @@ -4525,12 +3898,7 @@ game.import("character", function () { }, preHidden: true, prompt: function () { - return ( - get.prompt("huishi") + - "(当前牌堆尾数:" + - (ui.cardPile.childElementCount % 10) + - ")" - ); + return get.prompt("huishi") + "(当前牌堆尾数:" + (ui.cardPile.childElementCount % 10) + ")"; }, check: function (event, player) { return ui.cardPile.childElementCount % 10 > 3; @@ -4540,10 +3908,7 @@ game.import("character", function () { trigger.changeToZero(); var cards = game.cardsGotoOrdering(get.cards(ui.cardPile.childElementCount % 10)).cards; var num = Math.ceil(cards.length / 2); - var next = player.chooseToMove( - "慧识:将" + get.cnNumber(num) + "张牌置于牌堆底并获得其余的牌", - true - ); + var next = player.chooseToMove("慧识:将" + get.cnNumber(num) + "张牌置于牌堆底并获得其余的牌", true); next.set("list", [["牌堆顶的展示牌", cards], ["牌堆底"]]); next.set("filterMove", function (from, to, moved) { if (moved[0].includes(from) && to == 1) return moved[1].length < _status.event.num; @@ -4574,52 +3939,23 @@ game.import("character", function () { preHidden: true, filter: function (event, player) { var target = event.player; - return ( - target != player && - target.isIn() && - !target.storage.nohp && - target.hp + target.countCards("h") >= ui.cardPile.childElementCount % 10 && - player.countCards("he") > 0 && - player.canUse({ name: "sha", nature: "ice" }, target, false) - ); + return target != player && target.isIn() && !target.storage.nohp && target.hp + target.countCards("h") >= ui.cardPile.childElementCount % 10 && player.countCards("he") > 0 && player.canUse({ name: "sha", nature: "ice" }, target, false); }, content: function () { "step 0"; player - .chooseCard( - "he", - get.prompt("qingleng", trigger.player), - "将一张牌当做冰【杀】对其使用", - function (card, player) { - return player.canUse( - get.autoViewAs({ name: "sha", nature: "ice" }, [card]), - _status.event.target, - false - ); - } - ) + .chooseCard("he", get.prompt("qingleng", trigger.player), "将一张牌当做冰【杀】对其使用", function (card, player) { + return player.canUse(get.autoViewAs({ name: "sha", nature: "ice" }, [card]), _status.event.target, false); + }) .set("target", trigger.player) .set("ai", function (card) { - if ( - get.effect( - _status.event.target, - get.autoViewAs({ name: "sha", nature: "ice" }, [card]), - player - ) <= 0 - ) - return false; + if (get.effect(_status.event.target, get.autoViewAs({ name: "sha", nature: "ice" }, [card]), player) <= 0) return false; return 6 - get.value(card); }) .setHiddenSkill(event.name); "step 1"; if (result.bool) { - player.useCard( - get.autoViewAs({ name: "sha", nature: "ice" }, result.cards), - result.cards, - false, - trigger.player, - "qingleng" - ); + player.useCard(get.autoViewAs({ name: "sha", nature: "ice" }, result.cards), result.cards, false, trigger.player, "qingleng"); if (!player.storage.qingleng || !player.storage.qingleng.includes(trigger.player)) { player.draw(); player.markAuto("qingleng", [trigger.player]); @@ -4653,8 +3989,7 @@ game.import("character", function () { ai: { effect: { target: function (card, player, target) { - if (get.tag(card, "damage") && !player.hasSkillTag("jueqing", false, target)) - return "zerotarget"; + if (get.tag(card, "damage") && !player.hasSkillTag("jueqing", false, target)) return "zerotarget"; }, }, }, @@ -4699,35 +4034,22 @@ game.import("character", function () { }, }, characterIntro: { - zhanghuyuechen: - "张虎,生卒年不详,雁门马邑(今山西朔城区大夫庄)人。三国时期曹魏将领。名将张辽之子。官至偏将军,袭封晋阳侯,有一子张统。乐綝(195~257年),字号不详,阳平郡卫国县(今河南省清丰县)人。三国时期曹魏将领,右将军乐进的儿子。果毅坚毅,袭封广昌亭侯,累迁扬州刺史。甘露二年,为叛乱的征东大将军诸葛诞所杀,追赠卫尉。", + zhanghuyuechen: "张虎,生卒年不详,雁门马邑(今山西朔城区大夫庄)人。三国时期曹魏将领。名将张辽之子。官至偏将军,袭封晋阳侯,有一子张统。乐綝(195~257年),字号不详,阳平郡卫国县(今河南省清丰县)人。三国时期曹魏将领,右将军乐进的儿子。果毅坚毅,袭封广昌亭侯,累迁扬州刺史。甘露二年,为叛乱的征东大将军诸葛诞所杀,追赠卫尉。", duyu: "杜预(222年-285年),字元凯,京兆郡杜陵县(今陕西西安)人,中国魏晋时期军事家、经学家、律学家,曹魏散骑常侍杜恕之子。杜预初仕曹魏,任尚书郎,后成为权臣司马昭的幕僚,封丰乐亭侯。西晋建立后,历任河南尹、安西军司、秦州刺史、度支尚书等职。咸宁四年(278年)接替羊祜出任镇南大将军,镇守荆州。他积极备战,支持晋武帝司马炎对孙吴作战,并在咸宁五年(279年)成为晋灭吴之战的统帅之一。战后因功进封当阳县侯,仍镇荆州。太康五年(285年),杜预被征入朝,拜司隶校尉,途中于邓县逝世,终年六十三岁。获赠征南大将军、开府仪同三司,谥号为成。杜预耽思经籍,博学多通,多有建树,时誉为“杜武库”。著有《春秋左氏传集解》及《春秋释例》等。为明朝之前唯一一个同时进入文庙和武庙之人。", - xiahouhui: - "夏侯徽(211年-234年),字媛容,沛国谯县(今安徽亳州)人,司马师第一任妻子。征南大将军夏侯尚之女,母德阳乡主为大司马曹真之妹。夏侯徽与司马师之间,生有五个女儿。夏侯徽很有见识器度,每当司马师有什么想法时,都由她从旁策划协助。当时司马师之父司马懿位居上将重位,而他的儿子们都有雄才大略。夏侯徽深知司马师绝非曹魏忠臣,而司马师对出身曹魏家族的夏侯徽也非常顾忌。青龙二年(234年),正逢“大疫”、“大病”之年,夏侯徽被司马师毒杀,时年二十四岁,死后葬于峻平陵。西晋建国后,追谥夏侯徽为景怀皇后。", + xiahouhui: "夏侯徽(211年-234年),字媛容,沛国谯县(今安徽亳州)人,司马师第一任妻子。征南大将军夏侯尚之女,母德阳乡主为大司马曹真之妹。夏侯徽与司马师之间,生有五个女儿。夏侯徽很有见识器度,每当司马师有什么想法时,都由她从旁策划协助。当时司马师之父司马懿位居上将重位,而他的儿子们都有雄才大略。夏侯徽深知司马师绝非曹魏忠臣,而司马师对出身曹魏家族的夏侯徽也非常顾忌。青龙二年(234年),正逢“大疫”、“大病”之年,夏侯徽被司马师毒杀,时年二十四岁,死后葬于峻平陵。西晋建国后,追谥夏侯徽为景怀皇后。", shibao: "石苞(?~273年),字仲容,渤海南皮(今河北省南皮县)人。三国时曹魏至西晋重要将领,西晋开国功臣。西晋建立后,历任大司马、侍中、司徒等职,封乐陵郡公,卒后谥号为“武”。", - simazhou: - "司马伷(227年~283年6月12日),字子将,河内郡温县(今河南省温县)人。西晋宗室、将领,晋宣帝司马懿第三子,伏太妃所生。晋景帝司马师、文帝司马昭的同父异母弟,晋武帝司马炎的叔父。司马伷少有才气,在曹魏历任宁朔将军、散骑常侍、征虏将军等职,先后受封南安亭侯、东武乡侯,五等爵制建立后,改封南皮伯。西晋建立后,获封东莞郡王,入朝任尚书右仆射、抚军将军,出外拜镇东大将军。后改封琅邪王,加开府仪同三司。西晋伐吴时,率军出涂中,孙皓向他投降并奉上玉玺。战后因功拜大将军,增邑三千户。太康四年(283年),司马伷去世,享年五十七岁。谥号为武,世称“琅邪武王”。著有《周官宁朔新书》八卷,今已亡佚。", - huangzu: - "黄祖(?-208年),东汉末年将领。刘表任荆州牧时,黄祖出任江夏太守。初平二年(191年),黄祖在与长沙太守孙坚交战时,其部下将孙坚射死,因此与孙家结下仇怨。之后,黄祖多次率部与东吴军队交战,射杀凌操、徐琨等人。建安十三年(208年),在与孙权的交战中,兵败被杀。", - cheliji: - "彻里吉是历史小说《三国演义》中的虚构人物,西羌国王。蜀相诸葛亮伐魏,魏都督曹真驰书赴羌,国王彻里吉即命雅丹丞相与越吉元帅起羌兵一十五万、并战车直扣西平关。后军大败,越吉亡,雅丹被俘,亮将所获羌兵及车马器械,尽给还雅丹,俱放回国。彻里吉感蜀恩义,与之结盟。正史中没有关于彻里吉的记载。", - weiguan: - "卫瓘(220年-291年),字伯玉。河东郡安邑县(今山西省夏县)人。三国曹魏后期至西晋初年重臣、书法家,曹魏尚书卫觊之子。卫瓘出身官宦世家,年轻时仕官于曹魏,历任尚书郎、散骑常侍、侍中、廷尉等职。后以镇西军司、监军身份参与伐蜀战争。蜀汉亡后,与钟会一道逮捕邓艾;钟会谋反时,又成功平息叛乱,命田续杀邓艾父子。回师后转任督徐州诸军事、镇东将军,封菑阳侯。西晋建立后,历任青州、幽州刺史、征东大将军等职,成功化解北方边境威胁,因功进爵菑阳公。后入朝为尚书令、侍中,又升任司空,领太子少傅。后逊位,拜太保。晋惠帝即位后,与贾皇后对立,终在政变中满门遇害,享年七十二岁。卫瓘善隶书及章草。不仅兼工各体,还能学古人之长,是颇有创意的书法家。唐朝张怀瓘《书断》中评其章草为“神品”。", - zhongyan: - " 钟琰 (?—?年)颍川人,王浑之妻。生卒年不详,约魏末晋初间前后在世。王浑的妻子钟琰,是颍川人,为魏太傅钟繇的曾孙女,父亲钟徽,为黄门郎。她平时广泛阅读各种书籍,因此几岁的时候就能撰写文章。她聪慧弘雅,善于啸咏,她的礼仪法度,为中表所推崇,她写有文集五卷。", - yangyan: - "杨艳(238年-274年8月25日),字琼芝,弘农郡华阴县(今陕西省华阴市)人,晋武帝司马炎第一任皇后,曹魏通事郎杨炳之女。自幼父母双亡,为舅舅赵俊所养,跟随继母段氏生活。聪明贤慧,善于书法,天生丽质,娴熟女红,嫁给了世子司马炎。泰始元年(265年),晋武帝即位,建立西晋。泰始二年(266年),杨艳受册为皇后,深得晋武帝宠幸,生下三子三女,包括晋惠帝司马衷。泰始十年(274年),去世,时年三十七,陪葬于峻阳陵,谥号武元皇后。", - yangzhi: - "杨芷(259年-292年3月6日),字季兰,小字男胤,弘农郡华阴县(今陕西省华阴市)人,晋武帝司马炎第二任皇后,东汉太尉杨震幼子杨奉后裔,东汉末年东莱太守、蓩亭侯杨众曾孙女,西晋太傅杨骏与嫡妻庞氏之女,武元皇后杨艳堂妹。咸宁二年(276年),立为皇后,史称“婉嫕有妇德, 美映椒房”,得宠于晋武帝。生渤海殇王,早薨,之后再无生育。其父杨骏擅权引起皇后贾南风忌恨,贾南风联络汝南王司马亮、楚王司马玮发动政变,杀死杨骏,并唆使大臣上书状告杨芷谋反,让晋惠帝司马衷将其贬为庶人,押到金墉城居住。元康二年(292年),杨芷冻饿而死,谥号武悼皇后。", + simazhou: "司马伷(227年~283年6月12日),字子将,河内郡温县(今河南省温县)人。西晋宗室、将领,晋宣帝司马懿第三子,伏太妃所生。晋景帝司马师、文帝司马昭的同父异母弟,晋武帝司马炎的叔父。司马伷少有才气,在曹魏历任宁朔将军、散骑常侍、征虏将军等职,先后受封南安亭侯、东武乡侯,五等爵制建立后,改封南皮伯。西晋建立后,获封东莞郡王,入朝任尚书右仆射、抚军将军,出外拜镇东大将军。后改封琅邪王,加开府仪同三司。西晋伐吴时,率军出涂中,孙皓向他投降并奉上玉玺。战后因功拜大将军,增邑三千户。太康四年(283年),司马伷去世,享年五十七岁。谥号为武,世称“琅邪武王”。著有《周官宁朔新书》八卷,今已亡佚。", + huangzu: "黄祖(?-208年),东汉末年将领。刘表任荆州牧时,黄祖出任江夏太守。初平二年(191年),黄祖在与长沙太守孙坚交战时,其部下将孙坚射死,因此与孙家结下仇怨。之后,黄祖多次率部与东吴军队交战,射杀凌操、徐琨等人。建安十三年(208年),在与孙权的交战中,兵败被杀。", + cheliji: "彻里吉是历史小说《三国演义》中的虚构人物,西羌国王。蜀相诸葛亮伐魏,魏都督曹真驰书赴羌,国王彻里吉即命雅丹丞相与越吉元帅起羌兵一十五万、并战车直扣西平关。后军大败,越吉亡,雅丹被俘,亮将所获羌兵及车马器械,尽给还雅丹,俱放回国。彻里吉感蜀恩义,与之结盟。正史中没有关于彻里吉的记载。", + weiguan: "卫瓘(220年-291年),字伯玉。河东郡安邑县(今山西省夏县)人。三国曹魏后期至西晋初年重臣、书法家,曹魏尚书卫觊之子。卫瓘出身官宦世家,年轻时仕官于曹魏,历任尚书郎、散骑常侍、侍中、廷尉等职。后以镇西军司、监军身份参与伐蜀战争。蜀汉亡后,与钟会一道逮捕邓艾;钟会谋反时,又成功平息叛乱,命田续杀邓艾父子。回师后转任督徐州诸军事、镇东将军,封菑阳侯。西晋建立后,历任青州、幽州刺史、征东大将军等职,成功化解北方边境威胁,因功进爵菑阳公。后入朝为尚书令、侍中,又升任司空,领太子少傅。后逊位,拜太保。晋惠帝即位后,与贾皇后对立,终在政变中满门遇害,享年七十二岁。卫瓘善隶书及章草。不仅兼工各体,还能学古人之长,是颇有创意的书法家。唐朝张怀瓘《书断》中评其章草为“神品”。", + zhongyan: " 钟琰 (?—?年)颍川人,王浑之妻。生卒年不详,约魏末晋初间前后在世。王浑的妻子钟琰,是颍川人,为魏太傅钟繇的曾孙女,父亲钟徽,为黄门郎。她平时广泛阅读各种书籍,因此几岁的时候就能撰写文章。她聪慧弘雅,善于啸咏,她的礼仪法度,为中表所推崇,她写有文集五卷。", + yangyan: "杨艳(238年-274年8月25日),字琼芝,弘农郡华阴县(今陕西省华阴市)人,晋武帝司马炎第一任皇后,曹魏通事郎杨炳之女。自幼父母双亡,为舅舅赵俊所养,跟随继母段氏生活。聪明贤慧,善于书法,天生丽质,娴熟女红,嫁给了世子司马炎。泰始元年(265年),晋武帝即位,建立西晋。泰始二年(266年),杨艳受册为皇后,深得晋武帝宠幸,生下三子三女,包括晋惠帝司马衷。泰始十年(274年),去世,时年三十七,陪葬于峻阳陵,谥号武元皇后。", + yangzhi: "杨芷(259年-292年3月6日),字季兰,小字男胤,弘农郡华阴县(今陕西省华阴市)人,晋武帝司马炎第二任皇后,东汉太尉杨震幼子杨奉后裔,东汉末年东莱太守、蓩亭侯杨众曾孙女,西晋太傅杨骏与嫡妻庞氏之女,武元皇后杨艳堂妹。咸宁二年(276年),立为皇后,史称“婉嫕有妇德, 美映椒房”,得宠于晋武帝。生渤海殇王,早薨,之后再无生育。其父杨骏擅权引起皇后贾南风忌恨,贾南风联络汝南王司马亮、楚王司马玮发动政变,杀死杨骏,并唆使大臣上书状告杨芷谋反,让晋惠帝司马衷将其贬为庶人,押到金墉城居住。元康二年(292年),杨芷冻饿而死,谥号武悼皇后。", xinchang: "辛敞(生卒年不详),字泰雍,陇西人氏,是曹魏时代官员。卫尉辛毗之子,辛宪英之弟。", - xuangongzhu: - "高陵宣公主(?—?)司马氏,晋宣帝司马懿第二女。司马氏下嫁杜预。其侄司马炎登基时,司马氏已经去世。泰始年间(265年—274年)追赠高陵公主。", - jin_guohuai: - "郭槐(237年-296年),字媛韶,太原阳曲(今山西太原)人,魏晋权臣贾充的妻子。父亲是曹魏城阳郡太守郭配,伯父是曹魏名将郭淮。出身太原郭氏。二十一岁时,嫁贾充作继室,生二女二子,长女贾南风,次女贾午,一子贾黎民。贾南风是西晋惠帝司马衷皇后,干预国政,专权误国,直接导致“八王之乱”和西晋亡国。", - wangxiang: - "王祥(184年,一作180年-268年4月30日),字休徵。琅邪临沂(今山东省临沂市西孝友村)人。三国曹魏及西晋时大臣。王祥于东汉末隐居二十年,在曹魏,先后任县令、大司农、司空、太尉等职,封爵睢陵侯。西晋建立,拜太保,进封睢陵公。泰始四年四月戊戌日(268年4月30日)去世,年八十五(一作八十九),谥号“元”。有《训子孙遗令》一文传世。王祥侍奉后母朱氏极孝,为传统文化中二十四孝之一“卧冰求鲤”的主人翁。", - chengjichengcui: - "成倅、成济(?~260年6月21日),扬州丹阳(今安徽省宣城市)人。三国时期曹魏将领。依附于司马氏家族,得到司马昭的心腹贾充指使,刺死魏帝曹髦。司马昭为平息众怒,将成倅、成济兄弟二人杀死。据《魏氏春秋》记载,成济兄弟不服罪,光着身子跑到屋顶,大骂司马昭,被军士从下乱箭射杀。", + xuangongzhu: "高陵宣公主(?—?)司马氏,晋宣帝司马懿第二女。司马氏下嫁杜预。其侄司马炎登基时,司马氏已经去世。泰始年间(265年—274年)追赠高陵公主。", + jin_guohuai: "郭槐(237年-296年),字媛韶,太原阳曲(今山西太原)人,魏晋权臣贾充的妻子。父亲是曹魏城阳郡太守郭配,伯父是曹魏名将郭淮。出身太原郭氏。二十一岁时,嫁贾充作继室,生二女二子,长女贾南风,次女贾午,一子贾黎民。贾南风是西晋惠帝司马衷皇后,干预国政,专权误国,直接导致“八王之乱”和西晋亡国。", + wangxiang: "王祥(184年,一作180年-268年4月30日),字休徵。琅邪临沂(今山东省临沂市西孝友村)人。三国曹魏及西晋时大臣。王祥于东汉末隐居二十年,在曹魏,先后任县令、大司农、司空、太尉等职,封爵睢陵侯。西晋建立,拜太保,进封睢陵公。泰始四年四月戊戌日(268年4月30日)去世,年八十五(一作八十九),谥号“元”。有《训子孙遗令》一文传世。王祥侍奉后母朱氏极孝,为传统文化中二十四孝之一“卧冰求鲤”的主人翁。", + chengjichengcui: "成倅、成济(?~260年6月21日),扬州丹阳(今安徽省宣城市)人。三国时期曹魏将领。依附于司马氏家族,得到司马昭的心腹贾充指使,刺死魏帝曹髦。司马昭为平息众怒,将成倅、成济兄弟二人杀死。据《魏氏春秋》记载,成济兄弟不服罪,光着身子跑到屋顶,大骂司马昭,被军士从下乱箭射杀。", }, characterTitle: {}, characterFilter: {}, @@ -4749,11 +4071,9 @@ game.import("character", function () { jin_zhangchunhua: "晋张春华", jin_zhangchunhua_prefix: "晋", huishi: "慧识", - huishi_info: - "摸牌阶段,你可以放弃摸牌,改为观看牌堆顶的X张牌,获得其中的一半(向下取整),然后将其余牌置入牌堆底。(X为牌堆数量的个位数)", + huishi_info: "摸牌阶段,你可以放弃摸牌,改为观看牌堆顶的X张牌,获得其中的一半(向下取整),然后将其余牌置入牌堆底。(X为牌堆数量的个位数)", qingleng: "清冷", - qingleng_info: - "一名角色的回合结束时,若其体力值与手牌数之和不小于X,则你可将一张牌当无距离限制的冰属性【杀】对其使用(X为牌堆数量的个位数)。若这是你本局游戏内首次对其发动此技能,则你摸一张牌。", + qingleng_info: "一名角色的回合结束时,若其体力值与手牌数之和不小于X,则你可将一张牌当无距离限制的冰属性【杀】对其使用(X为牌堆数量的个位数)。若这是你本局游戏内首次对其发动此技能,则你摸一张牌。", xuanmu: "宣穆", xuanmu2: "宣穆", xuanmu_info: "锁定技,隐匿技。你于其他角色的回合登场时,防止你受到的伤害直到回合结束。", @@ -4762,32 +4082,24 @@ game.import("character", function () { zhanghuyuechen: "张虎乐綝", xijue: "袭爵", xijue_gain: "袭爵", - xijue_info: - "锁定技,游戏开始时,你获得4枚“爵”。回合结束时,你获得X枚“爵”(X为你本回合内造成的伤害数)。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。", - xijue_info_guozhan: - "锁定技,当你首次明置此武将牌时,你获得4枚“爵”。回合结束时,你获得X枚“爵”(X为你本回合内造成的伤害数)。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。", + xijue_info: "锁定技,游戏开始时,你获得4枚“爵”。回合结束时,你获得X枚“爵”(X为你本回合内造成的伤害数)。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。", + xijue_info_guozhan: "锁定技,当你首次明置此武将牌时,你获得4枚“爵”。回合结束时,你获得X枚“爵”(X为你本回合内造成的伤害数)。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。", xijue_tuxi: "突袭", xijue_tuxi_info: "摸牌阶段摸牌时,你可以少摸任意张牌,然后获得等量的角色的各一张手牌。", xijue_tuxi_info_guozhan: "摸牌阶段摸牌时,你可以少摸至多两张牌,然后获得等量的角色的各一张手牌。", xijue_xiaoguo: "骁果", - xijue_xiaoguo_info: - "其他角色的结束阶段开始时,你可以弃置一张手牌,令该角色选择一项:1.弃置一张装备牌,然后你摸一张牌;2.受到你对其造成的1点伤害。", - xijue_xiaoguo_info_guozhan: - "其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌;2.受到你对其造成的1点伤害。", + xijue_xiaoguo_info: "其他角色的结束阶段开始时,你可以弃置一张手牌,令该角色选择一项:1.弃置一张装备牌,然后你摸一张牌;2.受到你对其造成的1点伤害。", + xijue_xiaoguo_info_guozhan: "其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌;2.受到你对其造成的1点伤害。", gz_duyu: "杜预", duyu: "晋杜预", duyu_prefix: "晋", sanchen: "三陈", - sanchen_info: - "出牌阶段限一次。你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且〖三陈〗于此阶段内使用次数上限+1。", - sanchen_info_guozhan: - "出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且你获得技能〖破竹〗直到回合结束。否则你本阶段内不能再发动〖三陈〗。", + sanchen_info: "出牌阶段限一次。你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且〖三陈〗于此阶段内使用次数上限+1。", + sanchen_info_guozhan: "出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且你获得技能〖破竹〗直到回合结束。否则你本阶段内不能再发动〖三陈〗。", zhaotao: "诏讨", - zhaotao_info: - "觉醒技,准备阶段,若你本局游戏内发动〖三陈〗的次数大于2,则你减1点体力上限并获得〖破竹〗。", + zhaotao_info: "觉醒技,准备阶段,若你本局游戏内发动〖三陈〗的次数大于2,则你减1点体力上限并获得〖破竹〗。", pozhu: "破竹", - pozhu_info: - "出牌阶段,你可以将一张手牌当做【出其不意】使用。若你未因此牌造成过伤害,则你不能再发动〖破竹〗直到回合结束。", + pozhu_info: "出牌阶段,你可以将一张手牌当做【出其不意】使用。若你未因此牌造成过伤害,则你不能再发动〖破竹〗直到回合结束。", pozhu_info_guozhan: "出牌阶段限一次,你可以将一张手牌当做【出其不意】使用。", jin_wangyuanji: "晋王元姬", jin_wangyuanji_prefix: "晋", @@ -4795,40 +4107,31 @@ game.import("character", function () { shiren_info: "隐匿技。你于其他角色的回合内登场时,若其有手牌,则你可对其发动〖宴戏〗。", yanxi: "宴戏", yanxi2: "宴戏", - yanxi_info: - "出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆顶的两张牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗得到的牌,不计入当前回合的手牌上限。", - yanxi_info_guozhan: - "出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆中的两张随机牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗得到的牌,不计入当前回合的手牌上限。", + yanxi_info: "出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆顶的两张牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗得到的牌,不计入当前回合的手牌上限。", + yanxi_info_guozhan: "出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆中的两张随机牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗得到的牌,不计入当前回合的手牌上限。", jin_simazhao: "晋司马昭", jin_simazhao_prefix: "晋", tuishi: "推弑", - tuishi_info: - "隐匿技,你于其他角色A的回合内登场时,可于此回合结束时选择其攻击范围内的一名角色B。A选择一项:①对B使用一张【杀】。②你对A造成1点伤害。", + tuishi_info: "隐匿技,你于其他角色A的回合内登场时,可于此回合结束时选择其攻击范围内的一名角色B。A选择一项:①对B使用一张【杀】。②你对A造成1点伤害。", choufa: "筹伐", choufa2: "筹伐", - choufa_info: - "出牌阶段限一次,你可展示一名其他角色的一张手牌并记录其类型A。你令其原类型不为A的手牌的牌名均视为【杀】且均视为无属性,直到其回合结束。", + choufa_info: "出牌阶段限一次,你可展示一名其他角色的一张手牌并记录其类型A。你令其原类型不为A的手牌的牌名均视为【杀】且均视为无属性,直到其回合结束。", xinchoufa: "筹伐", - xinchoufa_info: - "出牌阶段限一次,你可展示一名其他角色的一张手牌A。你令其所有类型与A不同的手牌的牌名均视为【杀】且均视为无属性,直到其回合结束。", + xinchoufa_info: "出牌阶段限一次,你可展示一名其他角色的一张手牌A。你令其所有类型与A不同的手牌的牌名均视为【杀】且均视为无属性,直到其回合结束。", zhaoran: "昭然", zhaoran2: "昭然", - zhaoran_info: - "出牌阶段开始时,你可令你的手牌对其他角色可见直到出牌阶段结束。若如此做,当你于此阶段内失去一张手牌后,若你的手牌里没有与此牌花色相同的牌且你本回合内未因该花色的牌触发过此效果,则你选择一项:①摸一张牌。②弃置一名其他角色的一张牌。", + zhaoran_info: "出牌阶段开始时,你可令你的手牌对其他角色可见直到出牌阶段结束。若如此做,当你于此阶段内失去一张手牌后,若你的手牌里没有与此牌花色相同的牌且你本回合内未因该花色的牌触发过此效果,则你选择一项:①摸一张牌。②弃置一名其他角色的一张牌。", visible_zhaoran: "invisible", chengwu: "成务", chengwu_info: "主公技,锁定技,其他晋势力角色攻击范围内的角色视为在你的攻击范围内。", jin_xiahouhui: "晋夏侯徽", jin_xiahouhui_prefix: "晋", baoqie: "宝箧", - baoqie_info: - "隐匿技,锁定技。你登场后,从牌堆或弃牌堆中获得一张不为赠物的宝物牌。若此牌在你的手牌区内为宝物牌,则你可以使用此牌。", + baoqie_info: "隐匿技,锁定技。你登场后,从牌堆或弃牌堆中获得一张不为赠物的宝物牌。若此牌在你的手牌区内为宝物牌,则你可以使用此牌。", jyishi: "宜室", - jyishi_info: - "每回合限一次,当有其他角色于其出牌阶段内因弃置而失去手牌后,你可令其获得这些牌中位于弃牌堆的一张,然后你获得其余位于弃牌堆的牌。", + jyishi_info: "每回合限一次,当有其他角色于其出牌阶段内因弃置而失去手牌后,你可令其获得这些牌中位于弃牌堆的一张,然后你获得其余位于弃牌堆的牌。", shiduo: "识度", - shiduo_info: - "出牌阶段限一次,你可以与一名其他角色拼点。若你赢,你获得其所有手牌。然后你交给其X张手牌(X为你手牌数的一半,向下取整)。", + shiduo_info: "出牌阶段限一次,你可以与一名其他角色拼点。若你赢,你获得其所有手牌。然后你交给其X张手牌(X为你手牌数的一半,向下取整)。", jin_simashi: "晋司马师", jin_simashi_prefix: "晋", taoyin: "韬隐", @@ -4836,16 +4139,13 @@ game.import("character", function () { taoyin_info: "隐匿技,当你登场后,若当前回合角色存在且不是你,则你可令该角色本回合的手牌上限-2。", yimie: "夷灭", yimie2: "夷灭", - yimie_info: - "每回合限一次,当你对其他角色造成伤害时,若伤害值X小于Y,则你可失去1点体力,将伤害值改为Y。此伤害结算结束后,其回复(Y-X)点体力(Y为其体力值)。", + yimie_info: "每回合限一次,当你对其他角色造成伤害时,若伤害值X小于Y,则你可失去1点体力,将伤害值改为Y。此伤害结算结束后,其回复(Y-X)点体力(Y为其体力值)。", ruilve: "睿略", ruilve2: "睿略", - ruilve_info: - "主公技,其他晋势力角色的出牌阶段限一次,该角色可以将一张带有伤害标签的基本牌或锦囊牌交给你。", + ruilve_info: "主公技,其他晋势力角色的出牌阶段限一次,该角色可以将一张带有伤害标签的基本牌或锦囊牌交给你。", tairan: "泰然", tairan2: "泰然", - tairan_info: - "锁定技,回合结束时,你将体力回复至体力上限,并将手牌摸至体力上限(称为“泰然”牌,且至多摸五张)。然后你的下一个出牌阶段开始时,你失去上一次以此法回复的体力值的体力,弃置所有“泰然”牌。", + tairan_info: "锁定技,回合结束时,你将体力回复至体力上限,并将手牌摸至体力上限(称为“泰然”牌,且至多摸五张)。然后你的下一个出牌阶段开始时,你失去上一次以此法回复的体力值的体力,弃置所有“泰然”牌。", gz_jin_simayi: "司马懿", gz_jin_zhangchunhua: "张春华", gz_jin_simazhao: "司马昭", @@ -4853,163 +4153,128 @@ game.import("character", function () { gz_jin_simashi: "司马师", gz_jin_xiahouhui: "夏侯徽", xinquanbian: "权变", - xinquanbian_info: - "出牌阶段,每当你首次使用/打出一种花色的手牌时,你可以从牌堆顶的X张牌中获得一张与此牌花色不同的牌,并将其余牌以任意顺序置于牌堆顶。出牌阶段,你至多可使用X张非装备手牌。(X为你的体力上限)", + xinquanbian_info: "出牌阶段,每当你首次使用/打出一种花色的手牌时,你可以从牌堆顶的X张牌中获得一张与此牌花色不同的牌,并将其余牌以任意顺序置于牌堆顶。出牌阶段,你至多可使用X张非装备手牌。(X为你的体力上限)", shibao: "石苞", zhuosheng: "擢升", - zhuosheng_info: - "出牌阶段,①你使用本轮内得到的基本牌时无次数和距离限制。②你使用本轮内获得的普通锦囊牌选择目标后,可令此牌的目标数+1或-1。③你使用本轮内得到的装备牌时可以摸一张牌(以此法得到的牌不能触发〖擢升〗)。", - zhuosheng_info_guozhan: - "出牌阶段,①你使用本轮内得到的基本牌时无距离限制。②你使用本轮内获得的普通锦囊牌选择目标后,可令此牌的目标数+1或-1。③你使用本轮内得到的装备牌时可以摸一张牌(以此法得到的牌不能触发〖擢升〗)。", + zhuosheng_info: "出牌阶段,①你使用本轮内得到的基本牌时无次数和距离限制。②你使用本轮内获得的普通锦囊牌选择目标后,可令此牌的目标数+1或-1。③你使用本轮内得到的装备牌时可以摸一张牌(以此法得到的牌不能触发〖擢升〗)。", + zhuosheng_info_guozhan: "出牌阶段,①你使用本轮内得到的基本牌时无距离限制。②你使用本轮内获得的普通锦囊牌选择目标后,可令此牌的目标数+1或-1。③你使用本轮内得到的装备牌时可以摸一张牌(以此法得到的牌不能触发〖擢升〗)。", jin_yanghuiyu: "晋羊徽瑜", jin_yanghuiyu_prefix: "晋", gz_jin_yanghuiyu: "羊徽瑜", huirong: "慧容", - huirong_info: - "隐匿技,锁定技。当你登场后,你令一名角色将手牌数摸至/弃至与体力值相同(至多摸至五张)。", + huirong_info: "隐匿技,锁定技。当你登场后,你令一名角色将手牌数摸至/弃至与体力值相同(至多摸至五张)。", ciwei: "慈威", - ciwei_info: - "一名角色于其回合内使用第二张牌时,若此牌为基本牌或普通锦囊牌,则你可以弃置一张牌,取消此牌的所有目标。", + ciwei_info: "一名角色于其回合内使用第二张牌时,若此牌为基本牌或普通锦囊牌,则你可以弃置一张牌,取消此牌的所有目标。", caiyuan: "才媛", caiyuan_info: "锁定技。回合结束时,若你于你的上一个回合结束后未扣减过体力,则你摸两张牌。", simazhou: "司马伷", caiwang: "才望", - caiwang_info: - "当你使用或打出牌响应其他角色使用的牌,或其他角色使用或打出牌响应你使用的牌后,若这两张牌颜色相同,则你可以弃置对方的一张牌。", + caiwang_info: "当你使用或打出牌响应其他角色使用的牌,或其他角色使用或打出牌响应你使用的牌后,若这两张牌颜色相同,则你可以弃置对方的一张牌。", naxiang: "纳降", naxiang2: "纳降", - naxiang_info: - "锁定技,当你受到其他角色造成的伤害后,或你对其他角色造成伤害后,你对其发动〖才望①〗时的“弃置”改为“获得”直到你的下回合开始。", + naxiang_info: "锁定技,当你受到其他角色造成的伤害后,或你对其他角色造成伤害后,你对其发动〖才望①〗时的“弃置”改为“获得”直到你的下回合开始。", cheliji: "彻里吉", chexuan: "车悬", - chexuan_info: - "出牌阶段,若你的装备区里没有宝物牌,你可弃置一张黑色牌,选择一张【舆】置入你的装备区;当你失去装备区里的宝物牌后,你可进行判定,若结果为黑色,将一张随机的【舆】置入你的装备区。", + chexuan_info: "出牌阶段,若你的装备区里没有宝物牌,你可弃置一张黑色牌,选择一张【舆】置入你的装备区;当你失去装备区里的宝物牌后,你可进行判定,若结果为黑色,将一张随机的【舆】置入你的装备区。", qiangshou: "羌首", qiangshou_info: "锁定技,若你的装备区内有宝物牌,你与其他角色的距离-1。", cheliji_sichengliangyu: "四乘粮舆", cheliji_sichengliangyu_bg: "粮", - cheliji_sichengliangyu_info: - "一名角色的回合结束时,若你的手牌数小于体力值,你可以摸两张牌,然后弃置此牌。", + cheliji_sichengliangyu_info: "一名角色的回合结束时,若你的手牌数小于体力值,你可以摸两张牌,然后弃置此牌。", cheliji_tiejixuanyu: "铁蒺玄舆", cheliji_tiejixuanyu_bg: "蒺", - cheliji_tiejixuanyu_info: - "其他角色的回合结束时,若其本回合未造成过伤害,你可以令其弃置两张牌,然后弃置此牌。", + cheliji_tiejixuanyu_info: "其他角色的回合结束时,若其本回合未造成过伤害,你可以令其弃置两张牌,然后弃置此牌。", cheliji_feilunzhanyu: "飞轮战舆", cheliji_feilunzhanyu_bg: "轮", - cheliji_feilunzhanyu_info: - "其他角色的回合结束时,若其本回合使用过非基本牌,你可以令其交给你一张牌,然后弃置此牌。", + cheliji_feilunzhanyu_info: "其他角色的回合结束时,若其本回合使用过非基本牌,你可以令其交给你一张牌,然后弃置此牌。", weiguan: "卫瓘", zhongyun: "忠允", zhongyun2: "忠允", - zhongyun_info: - "锁定技。每名角色的回合限一次,你受伤/回复体力后,若你的体力值与手牌数相等,你回复1点体力或对你攻击范围内的一名角色造成1点伤害;每名角色的回合限一次,你获得手牌或失去手牌后,若你的体力值与手牌数相等,你摸一张牌或弃置一名其他角色一张牌。", + zhongyun_info: "锁定技。每名角色的回合限一次,你受伤/回复体力后,若你的体力值与手牌数相等,你回复1点体力或对你攻击范围内的一名角色造成1点伤害;每名角色的回合限一次,你获得手牌或失去手牌后,若你的体力值与手牌数相等,你摸一张牌或弃置一名其他角色一张牌。", shenpin: "神品", shenpin_info: "当一名角色的判定牌生效前,你可以打出一张与判定牌颜色不同的牌代替之。", zhongyan: "钟琰", bolan: "博览", - bolan_info: - "①出牌阶段开始时,你可从三个描述中带有“出牌阶段限一次”的技能中选择一个,令当前回合角色获得直至此阶段结束。②其他角色出牌阶段限一次,其可以失去1点体力,令你发动一次〖博览①〗。", + bolan_info: "①出牌阶段开始时,你可从三个描述中带有“出牌阶段限一次”的技能中选择一个,令当前回合角色获得直至此阶段结束。②其他角色出牌阶段限一次,其可以失去1点体力,令你发动一次〖博览①〗。", yifa: "仪法", yifa2: "仪法", - yifa_info: - "锁定技,其他角色使用【杀】或黑色普通锦囊牌指定你为目标后,其手牌上限-1直到其回合结束。", + yifa_info: "锁定技,其他角色使用【杀】或黑色普通锦囊牌指定你为目标后,其手牌上限-1直到其回合结束。", ol_huaxin: "OL华歆", ol_huaxin_prefix: "OL", caozhao: "草诏", caozhao_backup: "草诏", - caozhao_info: - "出牌阶段限一次,你可展示一张手牌并声明一种未以此法声明过的基本牌或普通锦囊牌,令一名体力不大于你的其他角色选择一项:令此牌视为你声明的牌,或其失去1点体力。然后若此牌声明成功,然后你可将其交给一名其他角色。", + caozhao_info: "出牌阶段限一次,你可展示一张手牌并声明一种未以此法声明过的基本牌或普通锦囊牌,令一名体力不大于你的其他角色选择一项:令此牌视为你声明的牌,或其失去1点体力。然后若此牌声明成功,然后你可将其交给一名其他角色。", olxibing: "息兵", - olxibing_info: - "当你受到其他角色造成的伤害后,你可弃置你或该角色两张牌,然后你们中手牌少的角色摸两张牌,以此法摸牌的角色不能使用牌指定你为目标直到回合结束。", + olxibing_info: "当你受到其他角色造成的伤害后,你可弃置你或该角色两张牌,然后你们中手牌少的角色摸两张牌,以此法摸牌的角色不能使用牌指定你为目标直到回合结束。", recaiwang: "才望", - recaiwang_info: - "①当你使用或打出牌响应其他角色使用的牌,或其他角色使用或打出牌响应你使用的牌后,若这两张牌颜色相同,则你可以弃置对方的一张牌。②若你的手牌数为1,则你可以将该手牌当做【闪】使用或打出。③若你的装备区牌数为1,则你可以将该装备当做【无懈可击】使用或打出。④若你的判定区牌数为1,则你可以将该延时锦囊牌当做【杀】使用或打出。", + recaiwang_info: "①当你使用或打出牌响应其他角色使用的牌,或其他角色使用或打出牌响应你使用的牌后,若这两张牌颜色相同,则你可以弃置对方的一张牌。②若你的手牌数为1,则你可以将该手牌当做【闪】使用或打出。③若你的装备区牌数为1,则你可以将该装备当做【无懈可击】使用或打出。④若你的判定区牌数为1,则你可以将该延时锦囊牌当做【杀】使用或打出。", recaiwang_hand: "才望", recaiwang_equip: "才望", recaiwang_judge: "才望", yangyan: "杨艳", xuanbei: "选备", - xuanbei_info: - "①游戏开始时,你从牌堆中获得两张具有应变标签的牌。②每回合限一次。当你使用的具有应变标签的牌结算结束后,你可将此牌对应的所有实体牌交给一名其他角色。", + xuanbei_info: "①游戏开始时,你从牌堆中获得两张具有应变标签的牌。②每回合限一次。当你使用的具有应变标签的牌结算结束后,你可将此牌对应的所有实体牌交给一名其他角色。", xianwan: "娴婉", - xianwan_info: - "①当你需要使用【闪】时,若你的武将牌未横置,则你可以横置武将牌并视为使用【闪】。②当你需要使用【杀】时,若你的武将牌横置,则你可以重置武将牌并视为使用【杀】。", + xianwan_info: "①当你需要使用【闪】时,若你的武将牌未横置,则你可以横置武将牌并视为使用【闪】。②当你需要使用【杀】时,若你的武将牌横置,则你可以重置武将牌并视为使用【杀】。", yangzhi: "杨芷", wanyi: "婉嫕", - wanyi_info: - "每回合每项限一次。出牌阶段,你可以将一张具有应变效果的牌当做【逐近弃远】/【出其不意】/【水淹七军】/【洞烛先机】使用。", + wanyi_info: "每回合每项限一次。出牌阶段,你可以将一张具有应变效果的牌当做【逐近弃远】/【出其不意】/【水淹七军】/【洞烛先机】使用。", maihuo: "埋祸", - maihuo_info: - "①当你成为其他角色使用【杀】的目标后,若此【杀】不为转化牌且有对应的实体牌且其武将牌上没有“祸”且你是此牌的唯一目标,则你可以令此牌对你无效,并将此【杀】置于其武将牌上,称为“祸”。②一名其他角色的出牌阶段开始时,若其武将牌上有“祸”,则其对你使用此“祸”(有距离限制且计入次数限制,若你不是此牌的合法目标,则改为将此“祸”置入弃牌堆)。③当你对有“祸”的其他角色造成伤害后,你移去其“祸”。", + maihuo_info: "①当你成为其他角色使用【杀】的目标后,若此【杀】不为转化牌且有对应的实体牌且其武将牌上没有“祸”且你是此牌的唯一目标,则你可以令此牌对你无效,并将此【杀】置于其武将牌上,称为“祸”。②一名其他角色的出牌阶段开始时,若其武将牌上有“祸”,则其对你使用此“祸”(有距离限制且计入次数限制,若你不是此牌的合法目标,则改为将此“祸”置入弃牌堆)。③当你对有“祸”的其他角色造成伤害后,你移去其“祸”。", xinchang: "辛敞", canmou: "参谋", - canmou_info: - "一名角色使用普通锦囊牌指定第一个目标时,若其手牌数为全场唯一最多,则你可以为此牌增加一个额外目标。", + canmou_info: "一名角色使用普通锦囊牌指定第一个目标时,若其手牌数为全场唯一最多,则你可以为此牌增加一个额外目标。", congjian: "从鉴", - congjian_info: - "一名其他角色成为普通锦囊牌的唯一目标时,若其体力值为全场唯一最多,则你也可以成为此牌的目标。此牌结算结束后,若你受到过渠道为此牌的伤害,则你摸两张牌。", - xuangongzhu: "宣公主", + congjian_info: "一名其他角色成为普通锦囊牌的唯一目标时,若其体力值为全场唯一最多,则你也可以成为此牌的目标。此牌结算结束后,若你受到过渠道为此牌的伤害,则你摸两张牌。", + xuangongzhu: "晋宣公主", + gz_xuangongzhu: "宣公主", + xuangongzhu_prefix: "晋", gaoling: "高陵", gaoling_info: "隐匿技。当你于回合外明置此武将牌时,你可以令一名角色回复1点体力。", qimei: "齐眉", - qimei_info: - "准备阶段,你可以选择一名其他角色。你获得如下效果直到下回合开始:①每回合限一次,当你或其获得牌/失去手牌后,若你与其手牌数相等,则另一名角色摸一张牌。②每回合限一次,当你或其的体力值变化后,若你与其体力值相等,则另一名角色摸一张牌。", + qimei_info: "准备阶段,你可以选择一名其他角色。你获得如下效果直到下回合开始:①每回合限一次,当你或其获得牌/失去手牌后,若你与其手牌数相等,则另一名角色摸一张牌。②每回合限一次,当你或其的体力值变化后,若你与其体力值相等,则另一名角色摸一张牌。", ybzhuiji: "追姬", - ybzhuiji_info: - "出牌阶段开始时,你可选择一项:①摸两张牌,并于出牌阶段结束时失去1点体力;②回复1点体力,并于出牌阶段结束时弃置两张牌。", + ybzhuiji_info: "出牌阶段开始时,你可选择一项:①摸两张牌,并于出牌阶段结束时失去1点体力;②回复1点体力,并于出牌阶段结束时弃置两张牌。", jin_yanghu: "晋羊祜", jin_yanghu_prefix: "晋", huaiyuan: "怀远", huaiyuanx: "绥", - huaiyuan_info: - "①游戏开始时,你将你的手牌标记为“绥”。②当你失去一张“绥”后,你令一名角色执行一项:⒈其的手牌上限+1。⒉其的攻击范围+1。⒊其摸一张牌。③当你死亡时,你可令一名其他角色的手牌上限+X,且攻击范围+Y(X和Y为你自己被执行过〖怀远②〗的选项一和选项二的次数)。", + huaiyuan_info: "①游戏开始时,你将你的手牌标记为“绥”。②当你失去一张“绥”后,你令一名角色执行一项:⒈其的手牌上限+1。⒉其的攻击范围+1。⒊其摸一张牌。③当你死亡时,你可令一名其他角色的手牌上限+X,且攻击范围+Y(X和Y为你自己被执行过〖怀远②〗的选项一和选项二的次数)。", chongxin: "崇信", chongxin_info: "出牌阶段限一次,你可重铸一张牌,且令一名有手牌的其他角色也重铸一张牌。", dezhang: "德彰", dezhang_info: "觉醒技。准备阶段,若你没有“绥”,则你减1点体力上限并获得〖卫戍〗。", weishu: "卫戍", - weishu_info: - "锁定技。①当你于摸牌阶段外不因〖卫戍①〗而摸牌后,你令一名角色摸一张牌。②当你于弃牌阶段外不因〖卫戍②〗而弃置牌后,你弃置一名其他角色的一张牌。", + weishu_info: "锁定技。①当你于摸牌阶段外不因〖卫戍①〗而摸牌后,你令一名角色摸一张牌。②当你于弃牌阶段外不因〖卫戍②〗而弃置牌后,你弃置一名其他角色的一张牌。", jin_jiachong: "晋贾充", jin_jiachong_prefix: "晋", xiongshu: "凶竖", - xiongshu_info: - "其他角色的出牌阶段开始时,你可弃置X张牌(X为你本轮内此前已发动过此技能的次数,为0则不弃)并展示其一张手牌,然后你预测“其本阶段内是否会使用与展示牌牌名相同的牌”。此阶段结束时,若你的预测正确,则你对其造成1点伤害;否则你获得展示牌。", + xiongshu_info: "其他角色的出牌阶段开始时,你可弃置X张牌(X为你本轮内此前已发动过此技能的次数,为0则不弃)并展示其一张手牌,然后你预测“其本阶段内是否会使用与展示牌牌名相同的牌”。此阶段结束时,若你的预测正确,则你对其造成1点伤害;否则你获得展示牌。", jianhui: "奸回", - jianhui_info: - "锁定技。当你造成伤害后,若受伤角色为A,则你摸一张牌;当你受到伤害后,若伤害来源为A,则A弃置一张牌。(A为除本次伤害外最近一次对你造成过伤害的角色)", + jianhui_info: "锁定技。当你造成伤害后,若受伤角色为A,则你摸一张牌;当你受到伤害后,若伤害来源为A,则A弃置一张牌。(A为除本次伤害外最近一次对你造成过伤害的角色)", xinxuanbei: "选备", - xinxuanbei_info: - "出牌阶段限一次。你可选择一名其他角色区域内的一张牌。然后其对你使用对应实体牌为此牌的【杀】。然后若此【杀】,未对你造成过伤害,你摸一张牌;对你造成过伤害,你摸两张牌。", + xinxuanbei_info: "出牌阶段限一次。你可选择一名其他角色区域内的一张牌。然后其对你使用对应实体牌为此牌的【杀】。然后若此【杀】,未对你造成过伤害,你摸一张牌;对你造成过伤害,你摸两张牌。", xinwanyi: "婉嫕", - xinwanyi_info: - "①当你使用【杀】或普通锦囊牌指定其他角色为唯一目标后,你可将其的一张牌置于你的武将牌上作为“嫕”。②你不能使用/打出/弃置与“嫕”花色相同的牌。③结束阶段或当你受到伤害后,你令一名角色获得你的一张“嫕”。", + xinwanyi_info: "①当你使用【杀】或普通锦囊牌指定其他角色为唯一目标后,你可将其的一张牌置于你的武将牌上作为“嫕”。②你不能使用/打出/弃置与“嫕”花色相同的牌。③结束阶段或当你受到伤害后,你令一名角色获得你的一张“嫕”。", jin_guohuai: "郭槐", zhefu: "哲妇", - zhefu_info: - "当你于回合外使用或打出牌后,你可令一名有手牌的其他角色选择一项:⒈弃置一张名称相同的牌。⒉受到你造成的1点伤害。", + zhefu_info: "当你于回合外使用或打出牌后,你可令一名有手牌的其他角色选择一项:⒈弃置一张名称相同的牌。⒉受到你造成的1点伤害。", yidu: "遗毒", - yidu_info: - "当你使用的【杀】或伤害性锦囊牌结算结束后,你可以展示一名未受到过渠道为此牌伤害的目标角色的至多三张手牌。若这些牌颜色均相同,则你弃置这些牌。", + yidu_info: "当你使用的【杀】或伤害性锦囊牌结算结束后,你可以展示一名未受到过渠道为此牌伤害的目标角色的至多三张手牌。若这些牌颜色均相同,则你弃置这些牌。", wangxiang: "王祥", bingxin: "冰心", - bingxin_info: - "每种牌名每回合限一次。当你需要使用基本牌时,若你的手牌数等于体力值且这些牌的颜色均相同,则你可以摸一张牌,视为使用一张基本牌。", + bingxin_info: "每种牌名每回合限一次。当你需要使用基本牌时,若你的手牌数等于体力值且这些牌的颜色均相同,则你可以摸一张牌,视为使用一张基本牌。", ol_lisu: "OL李肃", ol_lisu_prefix: "OL", qiaoyan: "巧言", - qiaoyan_info: - "锁定技,当你于回合外受到其他角色造成的伤害时,若你:有“珠”,则你令伤害来源获得“珠”;没有“珠”,则你防止此伤害,然后摸一张牌,并将一张牌正面朝上置于武将牌上,称为“珠”。", + qiaoyan_info: "锁定技,当你于回合外受到其他角色造成的伤害时,若你:有“珠”,则你令伤害来源获得“珠”;没有“珠”,则你防止此伤害,然后摸一张牌,并将一张牌正面朝上置于武将牌上,称为“珠”。", xianzhu: "献珠", - xianzhu_info: - "锁定技,出牌阶段开始时,你令一名角色A获得“珠”。若A不为你自己,则你选择你攻击范围内的一名角色B,视为A对B使用一张【杀】。", + xianzhu_info: "锁定技,出牌阶段开始时,你令一名角色A获得“珠”。若A不为你自己,则你选择你攻击范围内的一名角色B,视为A对B使用一张【杀】。", chengjichengcui: "成济成倅", oltousui: "透髓", oltousui_info: "你可以将任意张牌置于牌堆底,视为使用一张需使用等量张【闪】抵消的【杀】。", olchuming: "畜鸣", - olchuming_info: - "锁定技。当你对其他角色造成伤害时,或当你受到其他角色造成的伤害时,若此伤害的渠道不为牌或没有对应的实体牌,此伤害+1,否则其于本回合结束时将所有以此法造成伤害的牌当【借刀杀人】或【过河拆桥】对你使用。", + olchuming_info: "锁定技。当你对其他角色造成伤害时,或当你受到其他角色造成的伤害时,若此伤害的渠道不为牌或没有对应的实体牌,此伤害+1,否则其于本回合结束时将所有以此法造成伤害的牌当【借刀杀人】或【过河拆桥】对你使用。", yingbian_pack1: "文德武备·理", yingbian_pack2: "文德武备·备", diff --git a/image/character/linghuyu.jpg b/image/character/linghuyu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2c4254794b167820b86c8a226af7ce615793e49e GIT binary patch literal 36764 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

    8#- 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 literal 0 HcmV?d00001 diff --git a/image/character/yj_simafu.jpg b/image/character/yj_simafu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..09071c9df013d6a38fb5bc95ca8c593ae2ca19d1 GIT binary patch literal 35778 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 l+gP*Ov-AkR(bW3Yy^ literal 0 HcmV?d00001 diff --git a/image/character/yj_xuangongzhu.jpg b/image/character/yj_xuangongzhu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29264c3462988eba6babab13129f079563563755 GIT binary patch literal 49443 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