noname/character/yijiang.js

7720 lines
234 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use strict';
character.yijiang={
connect:true,
character:{
caozhang:['male','wei',4,['jiangchi']],
guohuai:['male','wei',4,['jingce']],
zhangchunhua:['female','wei',3,['jueqing','shangshi']],
caozhi:['male','wei',3,['luoying','jiushi']],
caochong:['male','wei',3,['renxin','chengxiang']],
xunyou:['male','wei',3,['zhiyu','qice']],
xin_xushu:['male','shu',3,['xinwuyan','xinjujian']],
xin_masu:['male','shu',3,['sanyao','zhiman']],
xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo']],
zhuran:['male','wu',4,['danshou']],
xusheng:['male','wu',4,['xinpojun']],
wuguotai:['female','wu',3,['ganlu','buyi']],
lingtong:['male','wu',4,['xuanfeng']],
liubiao:['male','qun',3,['zongshi','zishou']],
huaxiong:['male','qun',6,['yaowu']],
wangyi:['female','wei',3,['zhenlie','miji']],
yufan:['male','wu',3,['zhiyan','zongxuan']],
chengong:['male','qun',3,['mingce','zhichi']],
bulianshi:['female','wu',3,['anxu','zhuiyi']],
handang:['male','wu',4,['gongji','jiefan']],
fuhuanghou:['female','qun',3,['zhuikong','qiuyuan']],
zhonghui:['male','wei',4,['quanji','zili']],
jianyong:['male','shu',3,['qiaoshui','jyzongshi']],
madai:['male','shu',4,['mashu','qianxi']],
liufeng:['male','shu',4,['xiansi']],
manchong:['male','wei',3,['junxing','yuce']],
guanzhang:['male','shu',4,['fuhun']],
chenqun:['male','wei',3,['dingpin','faen']],
sunluban:['female','wu',3,['chanhui','jiaojin']],
guyong:['male','wu',3,['shenxing','bingyi']],
caifuren:['female','qun',3,['qieting','xianzhou']],
yj_jushou:['male','qun',3,['jianying','shibei']],
zhangsong:['male','shu',3,['qiangzhi','xiantu']],
zhuhuan:['male','wu',4,['youdi']],
xiahoushi:['female','shu',3,['qiaoshi','yanyu']],
panzhangmazhong:['male','wu',4,['anjian','duodao']],
zhoucang:['male','shu',4,['xinzhongyong']],
guanping:['male','shu',4,['longyin']],
liaohua:['male','shu',4,['dangxian','fuli']],
chengpu:['male','wu',4,['lihuo','chunlao']],
gaoshun:['male','qun',4,['xianzhen','jinjiu']],
caozhen:['male','wei',4,['xinsidi']],
wuyi:['male','shu',4,['benxi']],
hanhaoshihuan:['male','wei',4,['shenduan','yonglve']],
caorui:['male','wei',3,['huituo','mingjian','xingshuai'],['zhu']],
caoxiu:['male','wei',4,['qianju','qingxi']],
zhongyao:['male','wei',3,['huomo','zuoding']],
liuchen:['male','shu',4,['zhanjue','qinwang'],['zhu']],
zhangyi:['male','shu',4,['wurong','shizhi']],
sunxiu:['male','wu',3,['yanzhu','xingxue','zhaofu'],['zhu']],
zhuzhi:['male','wu',4,['anguo']],
quancong:['male','wu',4,['yaoming']],
gongsunyuan:['male','qun',4,['huaiyi']],
guotufengji:['male','qun',3,['jigong','shifei']],
xin_yujin:['male','wei',4,['jieyue']],
xin_liru:['male','qun',3,['xinjuece','xinmieji','xinfencheng']],
guohuanghou:['female','wei',3,['jiaozhao','danxin']],
liuyu:['male','qun',2,['zhige','zongzuo']],
liyan:['male','shu',3,['duliang','fulin']],
sundeng:['male','wu',4,['kuangbi']],
cenhun:['male','wu',3,['jishe','lianhuo']],
huanghao:['male','shu',3,['qinqing','huisheng']],
zhangrang:['male','qun',3,['taoluan']],
sunziliufang:['male','wei',3,['guizao','jiyu']],
},
characterIntro:{
huaxiong:'董卓旗下名将,自荐抵抗山东地区反对董卓的诸侯联军于汜水关前,他先后斩杀济北相鲍信之弟鲍忠和孙坚部将祖茂、以及袁术部将俞涉和韩馥手下潘凤等人,最后关东联军派出关羽与之一对一决斗而被杀。',
caozhi:'字子建,沛国谯人,三国曹魏著名文学家,建安文学代表人物。魏武帝曹操之子,魏文帝曹丕之弟,生前曾为陈王,去世后谥号“思”,因此又称陈思王。南朝宋文学家谢灵运更有“天下才有一石,曹子建独占八斗”的评价。王士祯尝论汉魏以来二千年间诗家堪称“仙才”者,曹植、李白、苏轼三人耳。',
gaoshun:'中国东汉末年将领,吕布帐下中郎将。史载高顺为人清白有威严,不好饮酒,所统率的部队精锐非常,号称“陷阵营”。屡进忠言于吕布,吕布虽知其忠而不能用。曹操击破吕布后,高顺被曹操所杀。',
chengong:'字公台东汉末年吕布帐下谋士东郡东武阳人。性情刚直足智多谋年少时与海内知名之士相互结交。192年陈宫等人主张曹操接任兖州牧。但此后陈宫因曹操杀害边让而与曹操反目并游说张邈等人背叛曹操迎吕布入兖州辅助吕布攻打曹操。吕布战败后随吕布等一同被曹操所擒决意赴死。',
lingtong:'字公绩,吴郡馀杭人,三国时期吴国名将。凌操之子,官至偏将军。',
masu:'字幼常,襄阳宜城人,三国时期蜀汉大臣,侍中马良之弟。初以荆州从事跟随刘备取蜀入川,曾任绵竹、成都令、越嶲太守。诸葛亮北伐时因作战失误而失守街亭,因而被诸葛亮所斩。',
wuguotai:'吴国太,小说《三国演义》中的人物,不见于正史记载。在小说中,吴国太被描述为孙坚的次妻,孙坚正妻武烈皇后(小说中写作吴太夫人)的妹妹,孙朗、孙仁(孙尚香)的母亲。',
xusheng:'字文向,琅邪莒县人。三国时期吴将。徐盛最初因讨伐山贼有功而被加为中郎将,后于濡须口之战中表现出色,得到孙权的赞赏。魏文帝曹丕伐吴时,徐盛以疑城之计退去魏军。',
yujin:'字文则,泰山钜平人。三国时期曹魏武将。本为鲍信部将,后属曹操,曹操称赞他可与古代名将相比。然而在建安二十四年的襄樊之战中,于禁在败给关羽后投降,致使一代名将晚节不保。',
zhangchunhua:'西晋宣穆皇后张春华189247河内平皋今河南温县人。她是晋宣帝司马懿之妻晋景帝司马师、晋文帝司马昭的母亲。后被追尊为皇后。',
fazheng:'字孝直,本为刘璋部下,刘备围成都时劝说刘璋投降,而后又与刘备进取汉中,献计将曹操大将夏侯渊斩首。法正善奇谋,深受刘备信任和敬重。',
xushu:'字元直,与司马徽、诸葛亮等人为友。先化名单福仕官于新野的刘备,后因曹操囚禁其母而不得不弃备投操,临行前向刘备推荐诸葛亮之才。入曹营后,一言不发,不曾为曹操进献过一计半策。后人形容徐庶“身在曹营心在汉”。',
caozhang:'字子文,是曹操与武宣卞皇后所生第二子,曹丕之弟,曹植之兄,曹魏任城王。曹彰武艺过人,曹操问诸子志向时自言“好为将”,因此得到曹操的赞赏。其胡须黄色,被曹操称为“黄须儿”。',
xunyou:'字公达,颍川颍阴人。东汉末年曹操的五谋臣之一,荀彧从子,被曹操称为“谋主”。官至尚书令。正始五年被追谥为敬侯。',
liaohua:'本名淳,字元俭,襄阳中卢(今湖北襄樊)人。三国时期蜀国后期将领,以勇敢果断著称。廖化是三国时代中经历了魏、蜀、吴整个兴衰过程极少数人中的一个,与严颜、黄忠共称为蜀汉三老将。',
bulianshi:'步夫人238讳练师临淮淮阴人。东吴丞相步骘同族吴大帝孙权之妃在孙权众夫人中最受孙权的宠爱宠冠后庭生有二女孙鲁班、孙鲁育。赤乌元年卒追封为皇后葬于蒋陵。',
chengpu:'字德谋,右北平土垠人。历仕孙坚、孙策、孙权三任君主。孙策死后,他与张昭等人共同辅佐孙权,并讨伐江东境内的山贼,功勋卓著。被人们尊称为“程公”。',
handang:'字义公,辽西令支(今河北迁安)人,吴国将领。韩当因为长于弓箭、骑术并且膂力过人而被孙坚赏识,追随他四处征伐周旋,数次冒险犯难,攻陷敌人、擒拿俘虏。对江东基业的逐渐稳固和吴国的建立有着重要影响。',
liubiao:'刘表,字景升,山阳郡高平(今山东微山)人。东汉末年名士,汉室宗亲,荆州牧,汉末群雄之一。',
zhonghui:'字士季。魏名将太傅钟繇之子。公元263年他与邓艾带兵攻打蜀国最终导致蜀国灭亡。之后钟会设计害死邓艾联合姜维准备自立最终因部下反叛失败与姜维一同死于兵变。',
wangyi:'益州刺史赵昂之妻,赵英、赵月之母。马超作乱凉州时,王异协助丈夫守城,多有功勋,自马超攻冀城至祁山坚守,赵昂曾出奇计九条,王异皆有参与。',
guanzhang:'关兴,名将关羽之子,继承了父亲汉寿亭侯的爵位。年少时即受诸葛亮器重,在蜀汉担任侍中、中监军之职,后在夷陵之战中报了杀父之仇。张苞,张飞的长子,使用父亲的家传蛇矛为兵器,勇猛剽悍不弱其父。',
madai:'名将马超的从弟。早年他曾经从曹操手中死里逃生,后跟随马超大战曹操。后在诸葛亮病逝后受杨仪派遣斩杀了蜀将魏延。曾率领军队出师北伐,被魏将牛金击败而退还。',
caochong:'字仓舒曹操之子。从小聪明仁爱与众不同深受曹操喜爱。留有“曹冲称象”的典故。曹操几次对群臣夸耀他有让他继嗣之意。可惜曹冲在建安十三病逝年仅13岁。',
guohuai:'魏国名将,夏侯渊战死时郭淮收集残兵,与杜袭共推张郃为主将而得以稳定局势。曹丕称帝后,赐郭淮爵关内侯,又任镇西长史。诸葛亮伐魏时,郭淮料敌准确,多立战功,而后亦曾击退姜维。',
manchong:'初在曹操手下任许县县令,掌管司法,以执法严格著称;转任汝南太守,开始参与军事,曾参与赤壁之战。后关羽围攻樊城,满宠协助曹仁守城,劝阻了弃城而逃的计划,成功坚持到援军到来。曹丕在位期间,满宠驻扎在新野,负责荆州侧的对吴作战。曹叡在位期间,满宠转任到扬州,接替曹休负责东侧对吴作战,屡有功劳。',
guanping:'关平是关羽在战乱中所收之义子。关羽脱离曹军后,与刘备于关定家中重逢,关定欲使年仅十八岁的关平随关羽同行,刘备便主张让关羽与关平结为义父子。自此后关平随侍在关羽身边,一生东征西讨。他武勇过人,不逊乃父,曾跟随刘备出征西川,立下战功,后来又与曹魏猛将庞德大战三十回合,不分胜负。',
jianyong:'简雍为刘备同乡,年少时与刘备相识。黄巾之乱时,刘备加入对抗黄巾军的战争,简雍便跟随他奔走。常作为谈客,往来使命,刘备围成都时简雍作为刘备使臣成功劝说刘璋投降。简雍擅于辩论、议事。性情简单直接、不拘小节。',
liufeng:'刘备义子。性格刚猛,气力过人。随赵云、张飞等扫荡西川,颇有战功,而后又统领孟达攻取上庸,深为刘备信任。但是后来关羽北伐曹魏,多次要求刘封起兵相助,刘封不从。而后又侵凌孟达,迫其降魏。孟达与魏徐晃共袭刘封,并劝刘封投降,刘封不降,又遭部下叛变,败归成都。刘备在诸葛亮的建议下赐死刘封,刘封自裁,刘备深表痛惜。',
panzhangmazhong:'马忠为潘璋部将。于麦城之战中设伏擒获关羽及关平。刘备伐吴时,马忠随潘璋等往拒,突袭射伤蜀将黄忠,导致黄忠阵亡。不久,潘璋为关兴所杀,马忠领兵围击,击退张苞援军。后降将糜、傅发动兵变,刺杀了马忠,将首级献于刘备。',
yufan:'虞翻初在会稽被太守王朗任命为功曹,曾劝谏王朗躲开孙策未果。后孙策占江东仍任命他为功曹。吕蒙袭取荆州时,虞翻提醒其躲过了埋伏,成功占领城池。后因为直言进谏被孙权发配到交州。',
zhuran:'吴国著名将领,吕蒙白衣渡江取荆州,朱然协助潘璋捉住了关羽。黄武元年,刘备兵伐东吴,朱然与孙桓抵抗刘备大军。后又参加夷陵之战,追击刘备,被前来接应的赵云一枪刺死。',
fuhuanghou:'执金吾伏完之女,汉献帝的皇后,后因怨恨曹操诛董承,与父伏完密谋曹操,事情泄漏,曹将伏皇后禁闭冷宫逼其自缢,所生二位皇子亦被鸩杀。',
liru:'董卓的首席谋士,为董卓所亲信,大小事宜皆与其商议。董卓趁乱进京、说降吕布、废立皇帝、迁都长安等举动,均离不开李儒的参谋之功,并奉命毒杀皇帝刘辩。李傕被曹操击败后,李儒从此不知所踪,消失在历史长河中。',
caozhen:'曹操族子官至大将军大司马其父为曹操招募人马时被州郡所杀曹操因怜悯曹真少年丧父而待其如亲子一般因赞赏曹真的勇猛而让他率领虎豹骑曹真在镇守曹魏西北边境时表现突出魏文帝时期督众将大破羌胡联军平定河西魏明帝时期屡次对抗诸葛亮的北伐',
hanhaoshihuan:'韩浩和史涣都以忠勇著称两人皆是曹操心腹将领共同掌管禁兵',
chenqun:'陈群一直位居要职先后受曹操曹丕托孤成为魏国重臣官至司空其子陈泰亦是魏国后期名将最大的贡献为创立了九品中正制为后期的人才选拔和管理打好了基础',
wuyi:'初为益州牧刘璋的部将刘备进攻益州时泠苞在雒城大败吴懿自告奋勇领兵前往救援不料被赵云和张飞生擒吴懿于是归降刘备自称汉中王迎娶吴懿之妹诸葛亮出师北伐吴懿以左将军高阳侯的身份跟随出征屡立战功诸葛亮逝世后吴懿随姜维一并镇守汉中',
zhoucang:'原为张宝部将关羽千里走单骑时周仓投降关羽成为了关羽的贴身护卫建安十六年公元211年刘备攻打成都时周仓跟随关羽镇守荆州关羽水淹七军时周仓曾生擒魏军的立义将军庞德关羽被孙权斩首之后周仓在麦城大哭失声拔剑自刎而死',
zhangsong:'刘璋的部下长相丑陋但有过目不忘的本领张松奉命出使许都被曹操赶出归蜀时为刘备所厚待于是将西川地理图献予刘备劝刘备取益州愿为内应并派好友孟达法正帮助刘备',
sunluban:'孙权之女孙鲁班与孙权二子孙和不睦孙权长子孙登死后孙和被立为太子孙鲁班向孙权进谗言废孙和太子之位孙和被废后忧愤而死',
zhuhuan:'字休穆吴郡吴县今江苏苏州吴国名将官至前将军青州牧假节封为嘉兴侯有一子朱异',
guyong:'为蔡邕之徒其为人少言语不饮酒严厉正大被张纮推荐仕于孙权孙权任命他为会稽郡丞行太守事后不断升迁官至吴国丞相顾雍为官多进良言有功于吴',
jushou:'袁绍帐下谋士史载他少有大志擅于谋略曾为冀州别驾举茂才并当过两次县令后来又当韩馥别驾被韩馥表为骑都尉袁绍占据冀州后任用沮授为从事经常对袁绍提出良策但很多时候袁绍并不听从官渡之战时袁绍大败沮授未及逃走被曹操所获因拒降被曹操处死',
caifuren:'原是刘表的小妾正室死后成为了刘表的后妻因刘琮娶了自己的侄女所以对其偏爱有加刘备客居荆州时险些受其所害刘表死后为了让刘琮即位不惜献州于曹操',
caorui:'魏文帝曹丕长子曹魏第二位皇帝在位期间指挥曹真司马懿等人成功防御了吴蜀的多次攻伐并且平定鲜卑攻灭公孙渊颇有建树',
caoxiu:'曹操族子曹操大宴铜雀台之时射箭夺袍曹休随曹操四处征伐在攻蜀汉中之战伐吴濡须口之战均有登场曾放冷箭射倒凌统的马匹后又协助夏侯惇平息洛阳纵火叛乱总管御林兵马协助曹丕代汉',
zhongyao:'初为长安郡守马超反叛时引军攻打长安钟繇率军防卫后城破钟繇从东门弃城而走退守潼关后奉献帝令繇草拟诏令册立曹操为魏王曹操以钟繇为相国明帝即位时钟繇为太傅诸葛亮北伐钟繇举荐司马懿前往抵御',
liuchen:'刘禅第五子自幼聪明英敏过人魏军兵临城下时刘禅准备投降刘谌劝阻刘禅投降不成后悲愤不已遂自杀于昭烈庙',
xiahoushi:'夏侯渊从女夏侯霸从妹出城拾柴时被张飞所得取其为妻后生有二女其中一人为星彩',
zhangyi:'曾随诸葛亮南征孟获七擒孟获的战斗中立下赫赫战功与祝融夫人单挑诸葛亮病死五丈原告诉姜维张嶷忠贞勇猛经验丰富是可以依靠的武将后于征伐魏国时为掩护姜维撤退阵亡',
sunxiu:'孙权第六子孙綝发动政变罢黜孙亮后迎立孙休为帝后孙綝专权孙休遣使丁奉等人将其诛杀孙休在位期间颁布良制嘉惠百姓促进了东吴的繁荣',
zhuzhi:'孙坚旧将朱然嗣父孙坚阵亡后孙策附袁术朱治吕范为之定计用玉玺向袁术借兵夺取江东孙策平定东路后任命朱治为吴郡太守收军返回江东后来赤壁之战大都督周瑜令朱治吕范为四方巡警使催督六郡官军',
quancong:'吴国名将孙策进兵江东时归顺之深得孙权赏识孙权甚至将孙鲁班许配之',
gongsunyuan:'辽东太守公孙度之孙辽东割据首领趁魏吴骚乱之际自称燕王发动叛乱与魏对抗败给司马懿率领的讨伐大军被围困后乞降不被接受与子修在欲出城逃跑时被斩杀',
guotufengji:'两人均是袁绍帐下谋士曾联手献计利用公孙瓒攻击韩馥又劝说韩馥请袁绍抵挡公孙瓒终替袁绍拿下冀州官渡之战期间两人进谗逼反张郃高览逼死田丰使得袁绍的实力大损',
guohuanghou:'明元郭皇后并非郭女王在三国志有正传曹叡夫人曹丕的儿媳妇曹芳曹髦曹奂三朝太后是唯一经历了曹魏全部皇帝时代的贵族女性曹魏后三帝时期由于皇帝年少太后与重臣一同处理政务史书上对郭皇后有两种截然不同的记载一种是曹芳被废和曹髦死后郭太后发诏书斥责他们不配人君另一种却提及曹芳被夺权期间太后与曹芳相拥而泣曹髦讨伐司马昭前曾向太后禀报',
liyan:'字正方蜀汉重臣初为刘表部下曹操入主荆州时李严西奔入蜀刘备入川李严率众投降深得刘备器重受命与诸葛亮法正等人一同编制蜀科又率军平定了蜀中盗贼白帝城托孤与诸葛亮共受遗诏同扶幼主其人性格矜高难近终因督粮不利且谎报实情而被流放后在当地去世',
sundeng:'字子高孙权长子孙权称帝后其被立为太子受诸葛恪等人辅佐其人性情温和而能礼贤下士加之爱民如子因此深受爱戴曾劝服孙权在孙虑之死时节哀并劝谏孙权勿用吕壹苛政后不幸早逝临终前上书建言推荐了多位良臣其亡故令孙权极为悲伤也为南鲁党争的祸乱埋下了伏笔',
liuyu:'伯安幽州牧汉室宗亲在幽州两度任职颇有威望张纯张举叛乱刘虞恩威并施将其平定又鼓励农商大大改善了当地经济民生青徐二州流民纷纷前来避难后坚拒袁绍等人立其为帝的请求派兵迎接献帝却为袁术所扣并因此事激化了与公孙瓒的矛盾最终被击败为其所害',
cenhun:'岑昏为宦官官列中常侍孙皓即位后得到宠幸280晋龙骧将军王濬率军伐吴岑昏建议以铁锁链封锁长江阻挡晋军进攻王濬以火船烧锁链破其计沿途东吴将士或死或降群臣上奏东吴衰败之因在于岑昏将他与蜀汉的黄皓并列为误国之奸臣',
sunziliufang:'孙资在曹操手下历任县令参丞相军事刘放曾有劝王松归顺曹操之举为曹操所欣赏遂招为司空府官又外放历任几处县令魏国初建之际孙资与刘放俱任秘书郎曹丕继位后二人一同掌握机密曹睿病危时二人力荐曹爽又推荐招回司马懿辅政最后曹睿独召曹爽司马懿刘放孙资同受诏命而免去曹宇夏侯献曹肇秦朗的官职',
huanghao:'宦官为后主刘禅所宠专秉朝政黄皓与大将军姜维不睦维启后主杀之后主不从皓阴以心腹阎宇替维景耀六年蜀亡邓艾预欲杀之皓贿赂左右得免及后主迁洛阳皓为司马昭凌迟处死',
zhangrang:'汉中常侍同赵忠曹节段珪等为十常侍为灵帝所宠让等专权乱政卖官索财朝野皆痛恨之郎中张钧上书奏请诛杀十常侍帝不允让等阴杀钧及灵帝崩大将军何进欲杀让等让阴结何太后招进入宫斩杀之部将袁绍引兵攻让让等劫帝走河上追急让投水自尽',
},
perfectPair:{
wuguotai:['sunjian','sunshangxiang'],
zhangchunhua:['simayi'],
caozhi:['zhenji'],
xunyou:['xunyu'],
xushu:['liubei'],
lingtong:['ganning'],
chengong:['lvbu'],
bulianshi:['sunquan'],
fuhuanghou:['liuxie'],
sunluban:['quancong'],
caifuren:['liubiao'],
xiahoushi:['zhangfei'],
zhoucang:['guanyu'],
guanping:['guanyu'],
sundeng:['sunquan'],
liru:['dongzhuo'],
liuchen:['liushan'],
},
skill:{
jyzongshi:{
audio:2,
trigger:{player:['chooseToCompareAfter','compareMultipleAfter'],target:['chooseToCompareAfter','compareMultipleAfter']},
filter:function(event,player){
if(event.preserve) return false;
if(player==event.player){
if(event.card1.number>event.card2.number){
return !get.owner(event.card2);
}
else{
return !get.owner(event.card1);
}
}
else{
if(event.card1.number<event.card2.number){
return !get.owner(event.card1);
}
else{
return !get.owner(event.card2);
}
}
},
check:function(event,player){
if(player==event.player){
if(event.card1.number>event.card2.number){
return event.card2.name!='du';
}
else{
return event.card1.name!='du';
}
}
else{
if(event.card1.number<event.card2.number){
return event.card1.name!='du';
}
else{
return event.card2.name!='du';
}
}
},
content:function(){
if(player==trigger.player){
if(trigger.card1.number>trigger.card2.number){
player.gain(trigger.card2,'gain2');
}
else{
player.gain(trigger.card1,'gain2');
}
}
else{
if(trigger.card1.number<trigger.card2.number){
player.gain(trigger.card1,'gain2');
}
else{
player.gain(trigger.card2,'gain2');
}
}
}
},
xinsidi:{
trigger:{global:'phaseUseBegin'},
direct:true,
filter:function(event,player){
if(event.player==player) return false;
return player.countCards('e')>0;
},
content:function(){
'step 0'
var goon=true;
if(ai.get.attitude(player,trigger.player)>=-0.8) goon=false;
else if(trigger.player.countCards('h')<=3) goon=false;
else if(player.countCards('h','shan')==0) goon=false;
var es=player.getCards('e');
var color=[];
for(var i=0;i<es.length;i++){
color.add(get.color(es[i]));
}
if(color.length==2) color='all';
else color=color[0];
player.chooseToDiscard(get.prompt('xinsidi',trigger.player),'he',function(card){
if(get.type(card)=='basic') return false;
if(_status.event.color=='all') return true;
return get.color(card)==_status.event.color;
}).set('ai',function(card){
if(_status.event.goon) return 6-ai.get.value(card);
return 0;
}).set('goon',goon).set('color',color).set('logSkill',['xinsidi',trigger.player]);
'step 1'
if(result.bool){
trigger.player.addSkill('xinsidi2');
trigger.player.storage.xinsidi2=get.color(result.cards[0]);
trigger.player.storage.xinsidi4=player;
trigger.player.syncStorage('xinsidi2');
}
},
ai:{
threaten:1.5
},
},
xinsidi2:{
mark:true,
group:['xinsidi2_sha','xinsidi2_end'],
subSkill:{
sha:{
trigger:{player:'shaBegin'},
forced:true,
popup:false,
content:function(){
player.storage.xinsidi3=true;
}
},
end:{
trigger:{player:'phaseUseAfter'},
forced:true,
popup:false,
audio:false,
content:function(){
if(!player.storage.xinsidi3&&player.storage.xinsidi4.isAlive()){
player.storage.xinsidi4.useCard({name:'sha'},player);
}
delete player.storage.xinsidi2;
delete player.storage.xinsidi3;
delete player.storage.xinsidi4;
player.removeSkill('xinsidi2');
}
}
},
mod:{
cardEnabled:function(card,player){
if(get.color(card)==player.storage.xinsidi2) return false;
},
cardUsable:function(card,player){
if(get.color(card)==player.storage.xinsidi2) return false;
},
cardRespondable:function(card,player){
if(get.color(card)==player.storage.xinsidi2) return false;
},
cardSavable:function(card,player){
if(get.color(card)==player.storage.xinsidi2) return false;
}
},
intro:{
content:'不能使用或打出$的牌'
}
},
taoluan:{
enable:'phaseUse',
filter:function(event,player){
return !player.hasSkill('taoluan3');
},
init:function(player){
player.storage.taoluan=[];
},
chooseButton:{
dialog:function(event,player){
var list=['sha','tao','jiu','taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman'];
for(var i=0;i<player.storage.taoluan.length;i++){
list.remove(player.storage.taoluan[i]);
}
for(var i=0;i<list.length;i++){
if(i<3){
list[i]=['基本','',list[i]];
}
else{
list[i]=['锦囊','',list[i]];
}
}
if(list.length==0){
return ui.create.dialog('滔乱已无可用牌');
}
return ui.create.dialog([list,'vcard']);
},
filter:function(button,player){
return lib.filter.filterCard({name:button.link[2]},player,_status.event.getParent());
},
check:function(button){
var player=_status.event.player;
var players=game.filterPlayer();
if(player.countCards('h',button.link)) return 0;
if(button.link=='wuzhong'){
if(player.countCards('h')<player.hp){
return 3+Math.random();
}
return 0;
}
if(button.link=='tao'){
return 3+Math.random();
}
if(button.link=='sha'){
return 2+Math.random();
}
if(button.link=='juedou'){
return 2+Math.random();
}
if(button.link=='guohe'){
return 2+Math.random();
}
if(button.link=='shunshou'){
for(var i=0;i<players.length;i++){
if(player.canUse('shunshou',players[i])&&ai.get.attitude(player,players[i])<0){
return 2+Math.random();
}
}
return 0;
}
if(button.link=='tiesuo'){
return 1+Math.random();
}
if(button.link=='jiu'){
if(ai.get.effect(player,{name:'jiu'})>0){
return 1+Math.random();
}
return 0;
}
if(button.link=='nanman'||button.link=='wanjian'||button.link=='taoyuan'||button.link=='wugu'){
var eff=0;
for(var i=0;i<players.length;i++){
if(players[i]!=player){
eff+=ai.get.effect(players[i],{name:button.link},player,player);
}
}
if(eff>0){
return 1+Math.random();
}
return 0;
}
return Math.random();
},
backup:function(links,player){
return {
filterCard:false,
selectCard:0,
popname:true,
viewAs:{name:links[0][2]},
onuse:function(result,player){
player.storage.taoluan.push(result.card.name);
},
}
},
prompt:function(links,player){
return '选择'+get.translation(links[0][2])+'的目标';
}
},
ai:{
order:4,
result:{
player:function(player){
var allshown=true,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i].ai.shown==0){
allshown=false;
}
if(players[i]!=player&&players[i].countCards('h')&&ai.get.attitude(player,players[i])>0){
return 1;
}
}
if(allshown) return 1;
return 0;
}
},
threaten:1.6,
},
group:['taoluan2']
},
taoluan2:{
trigger:{player:['useCardAfter','respondAfter']},
forced:true,
popup:false,
filter:function(event,player){
return event.skill=='taoluan_backup'||event.skill=='taoluan5';
},
content:function(){
'step 0'
player.chooseTarget(true,function(card,player,target){
return target!=player;
},'滔乱<br><br><div class="text center">令一名其他角色选择一项1.交给你一张与你以此法使用的牌类别相同的牌2.你失去1点体力').set('ai',function(target){
var player=_status.event.player;
if(ai.get.attitude(player,target)>0){
if(ai.get.attitude(target,player)>0){
return target.countCards('h');
}
return target.countCards('h')/2;
}
return 0;
});
'step 1'
var target=result.targets[0];
event.target=target;
player.line(target,'green');
var type=get.type(trigger.card,'trick');
target.chooseCard('滔乱<br><br><div class="text center">交给'+get.translation(player)+'一张'+get.translation(type)+'或令其失去一点体力且滔乱无效直到回合',function(card,player,target){
return get.type(card,'trick')==_status.event.cardType;
}).set('cardType',type).set('ai',function(card){
if(_status.event.att){
return 11-ai.get.value(card);
}
return 0;
}).set('att',ai.get.attitude(target,player)>0);
'step 2'
var target=event.target;
if(result.bool){
player.gain(result.cards,target);
target.$give(result.cards,player);
}
else{
player.addTempSkill('taoluan3','phaseAfter');
player.loseHp();
}
}
},
taoluan3:{},
taoluan4:{
trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){
if(event.responded) return false;
if(!event.filterCard({name:'shan'})) return false;
if(player.storage.taoluan.contains('shan')) return false;
return true;
},
check:function(event,player){
var allshown=true,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i]!=player&&players[i].countCards('h')>1&&ai.get.attitude(player,players[i])>0){
return 1;
}
}
return 0;
},
content:function(){
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:{name:'shan'},skill:'taoluan_backup'};
player.storage.taoluan.push('shan');
},
},
taoluan5:{
enable:'chooseToUse',
filter:function(event,player){
return event.type=='dying'&&!player.storage.taoluan.contains('tao');
},
onuse:function(result,player){
player.storage.taoluan.push('tao');
},
filterCard:function(){
return false;
},
selectCard:-1,
viewAs:{name:'tao'},
ai:{
skillTagFilter:function(player){
return !player.storage.taoluan.contains('tao');
},
threaten:1.5,
save:true,
}
},
taoluan_backup:{},
jishe:{
enable:'phaseUse',
filter:function(event,player){
return player.getHandcardLimit()>0;
},
init:function(player){
player.storage.jishe=0;
},
usable:20,
content:function(){
player.draw();
player.storage.jishe++;
},
ai:{
order:10,
result:{
player:function(player){
if(player.countCards('h')<player.getHandcardLimit()){
return 1;
}
return 0;
}
}
},
mod:{
maxHandcard:function(player,num){
return num-player.storage.jishe;
}
},
group:['jishe2','jishe3']
},
jishe2:{
trigger:{player:'phaseAfter'},
forced:true,
popup:false,
silent:true,
content:function(){
player.storage.jishe=0;
}
},
jishe3:{
trigger:{player:'phaseEnd'},
direct:true,
filter:function(event,player){
if(player.countCards('h')) return false;
return game.hasPlayer(function(current){
return !current.isLinked();
});
},
content:function(){
"step 0"
var num=game.countPlayer(function(current){
return !current.isLinked();
});
player.chooseTarget(get.prompt('jishe'),[1,Math.min(num,player.hp)],function(card,player,target){
return !target.isLinked();
}).set('ai',function(target){
return -ai.get.attitude(_status.event.player,target);
});
"step 1"
if(result.bool){
player.logSkill('jishe',result.targets);
event.targets=result.targets;
event.num=0;
}
else{
event.finish();
}
"step 2"
if(event.num<event.targets.length){
event.targets[event.num].link();
event.num++;
event.redo();
}
},
ai:{
expose:0.3
}
},
lianhuo:{
trigger:{player:'damageBegin'},
forced:true,
filter:function(event,player){
return player.isLinked()&&event.notLink()&&event.nature=='fire';
},
content:function(){
trigger.num++;
}
},
huisheng:{
trigger:{player:'damageBefore'},
direct:true,
filter:function(event,player){
if(!player.countCards('he')) return false;
if(!event.source||event.source.isDead()) return false;
if(event.source.storage.huisheng&&event.source.storage.huisheng.contains(player)) return false;
return true;
},
content:function(){
'step 0'
var att=(ai.get.attitude(player,trigger.source)>0);
var goon=false;
if(player.hp==1){
goon=true;
}
else{
var he=player.getCards('he');
var num=0;
for(var i=0;i<he.length;i++){
if(ai.get.value(he[i])<8){
num++;
if(num>=2){
goon=true;break;
}
}
}
}
player.chooseCard('he',[1,player.countCards('he')],get.prompt('huisheng',trigger.source)).set('ai',function(card){
if(_status.event.att){
return 10-ai.get.value(card);
}
if(_status.event.goon){
return 8-ai.get.value(card);
}
return 0;
}).set('goon',goon).set('att',att);
'step 1'
if(result.bool){
player.logSkill('huisheng');
event.num=result.cards.length;
var goon=false;
if(event.num>2||ai.get.attitude(trigger.source,player)>=0){
goon=true;
}
var forced=false;
var str='获得其中一张牌并防止伤害';
if(trigger.source.countCards('he')<event.num){
forced=true;
}
else{
str+='或取消并弃置'+get.cnNumber(result.cards.length)+'张牌';
}
if(!trigger.source.storage.huisheng){
trigger.source.storage.huisheng=[];
}
trigger.source.storage.huisheng.push(player);
trigger.source.chooseButton([str,result.cards],forced).set('ai',function(button){
if(_status.event.goon){
return ai.get.value(button.link);
}
return ai.get.value(button.link)-8;
}).set('goon',goon);
}
else{
event.finish();
}
'step 2'
if(result.bool){
var card=result.links[0];
trigger.source.gain(card,player);
if(get.position(card)=='e'){
player.$give(card,trigger.source);
}
else{
player.$giveAuto(card,trigger.source);
}
trigger.untrigger();
trigger.finish();
}
else{
trigger.source.chooseToDiscard(event.num,true,'he');
}
}
},
qinqing:{
mode:['identity'],
trigger:{player:'phaseEnd'},
direct:true,
filter:function(event,player){
var zhu=get.zhu(player);
if(!zhu||!zhu.isZhu) return false;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i]==zhu||players[i]==player) continue;
if(get.distance(players[i],zhu,'attack')<=1&&players[i].countCards('he')){
return true;
}
}
return false;
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('qinqing'),function(card,player,target){
if(target==player||target==get.zhu(player)) return false;
return get.distance(target,get.zhu(player),'attack')<=1&&target.countCards('he')>0;
}).set('ai',function(target){
var player=_status.event.player;
var zhu=_status.event.zhu;
if(ai.get.attitude(player,target)>0) return 0;
var nh=target.countCards('h');
var nh2=zhu.countCards('h');
if(nh>nh2) return 2;
if(nh==nh2&&target.countCards('e')) return 1.5;
return 1;
}).set('zhu',get.zhu(player));
'step 1'
if(result.bool){
event.target=result.targets[0];
player.logSkill('qinqing',event.target);
player.discardPlayerCard(event.target,'he',true);
}
else{
event.finish();
}
'step 2'
event.target.draw();
'step 3'
if(event.target.countCards('h')>get.zhu(player).countCards('h')){
player.draw();
}
},
ai:{
threaten:1.2
}
},
guizao:{
trigger:{player:'phaseDiscardEnd'},
direct:true,
filter:function(event,player){
if(event.cards&&event.cards.length>1){
var suits=[];
for(var i=0;i<event.cards.length;i++){
var suit=get.suit(event.cards[i]);
if(suits.contains(suit)){
return false;
}
else{
suits.push(suit);
}
}
return true;
}
return false;
},
content:function(){
player.chooseDrawRecover(get.prompt('guizao')).logSkill='guizao';
},
},
jiyu:{
enable:'phaseUse',
locked:false,
filter:function(event,player){
var hs=player.getCards('h');
for(var i=0;i<hs.length;i++){
if(event.filterCard(hs[i],player)){
return true;
}
}
return false;
},
filterTarget:function(card,player,target){
return target.countCards('h')&&!player.storage.jiyu.contains(target);
},
content:function(){
'step 0'
var spade=true;
if(player.isTurnedOver()||ai.get.attitude(target,player)>0||target.hp<=2){
spade=false;
}
target.chooseToDiscard('h',true).set('ai',function(card){
if(get.suit(card)=='spade'){
if(_status.event.spade){
return 10-ai.get.value(card);
}
else{
return -10-ai.get.value(card);
}
}
if(_status.event.getParent().player.storage.jiyu2.contains(get.suit(card))){
return -3-ai.get.value(card);
}
return -ai.get.value(card);
}).set('spade',spade);
'step 1'
var card=result.cards[0];
if(get.suit(card)=='spade'){
player.turnOver();
target.loseHp();
}
player.storage.jiyu.push(target);
player.storage.jiyu2.add(get.suit(card));
},
ai:{
order:9,
result:{
target:function(player,target){
if(player.isTurnedOver()||target.countCards('h')<=3) return -1;
return 0;
}
}
},
group:'jiyu2',
mod:{
cardEnabled:function(card,player){
if(player.storage.jiyu2&&player.storage.jiyu2.contains(get.suit(card))) return false;
}
}
},
jiyu2:{
trigger:{player:['phaseUseBegin','phaseAfter']},
forced:true,
popup:false,
silent:true,
content:function(){
player.storage.jiyu=[];
player.storage.jiyu2=[];
}
},
jiaozhao:{
enable:'phaseUse',
usable:1,
audio:2,
check:function(card){
return 8-ai.get.value(card);
},
filterCard:true,
discard:false,
lose:false,
content:function(){
'step 0'
player.showCards(cards);
'step 1'
if(player.storage.jiaozhao2){
event.target=player;
}
else{
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));
});
var distance=Math.max(1,get.distance(player,targets[0]));
for(var i=1;i<targets.length;i++){
if(Math.max(1,get.distance(player,targets[i]))>distance){
targets.splice(i);break;
}
}
player.chooseTarget(true,function(card,player,target){
return _status.event.targets.contains(target);
}).set('ai',function(target){
return ai.get.attitude(_status.event.player,target);
}).set('targets',targets);
}
'step 2'
if(!event.target){
event.target=result.targets[0];
player.line(result.targets,'green');
}
if(!event.target){
event.finish();
return;
}
var list=['sha','shan','tao','jiu'];
if(player.storage.jiaozhao1){
list=list.concat(['taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman']);
}
for(var i=0;i<list.length;i++){
if(i<=4){
list[i]=['基本','',list[i]];
}
else{
list[i]=['锦囊','',list[i]];
}
}
var choice;
if(ai.get.attitude(event.target,player)<=0){
choice='shan';
}
else{
if(!player.storage.jiaozhao1){
var nh=player.countCards('h');
if(nh>=5){
choice='jiu';
}
else if(nh<=2){
choice='sha';
}
else{
choice=Math.random()<0.5?'sha':'jiu';
}
}
else{
var recover=0,lose=1,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(!players[i].isOut()&&players[i]!=player){
if(players[i].hp<players[i].maxHp){
if(ai.get.attitude(player,players[i])>0){
if(players[i].hp<2){
lose--;
recover+=0.5;
}
lose--;
recover++;
}
else if(ai.get.attitude(player,players[i])<0){
if(players[i].hp<2){
lose++;
recover-=0.5;
}
lose++;
recover--;
}
}
else{
if(ai.get.attitude(player,players[i])>0){
lose--;
}
else if(ai.get.attitude(player,players[i])<0){
lose++;
}
}
}
}
if(lose>recover&&lose>0){
choice=Math.random()<0.7?'nanman':'wanjian';
}
else if(lose<recover&&recover>0){
choice='taoyuan';
}
else{
choice=Math.random()<0.5?'wuzhong':'shunshou';
}
}
}
event.target.chooseButton(['矫诏',[list,'vcard']],true).set('ai',function(button){
return button.link[2]==_status.event.choice?1:0;
}).set('choice',choice);
'step 3'
var chosen=result.links[0][2];
event.target.showCards(game.createCard({name:chosen,suit:cards[0].suit,number:cards[0].number}),get.translation(event.target)+'声明了'+get.translation(chosen));
player.storage.jiaozhao=cards[0];
player.storage.jiaozhao_card=chosen;
game.broadcastAll(function(name){
lib.skill.jiaozhao2.viewAs={name:name};
},result.links[0][2]);
},
ai:{
order:9,
result:{
player:1
}
},
intro:{
content:function(storage,player){
if(player.storage.jiaozhao2){
return '出牌阶段限一次你可以展示一张手牌然后你声明一张基本牌或普通锦囊牌的牌名在此出牌阶段内你可以将此手牌当声明的牌使用且你不能被选择为目标';
}
else{
return '出牌阶段限一次你可以展示一张手牌然后选择距离最近的一名其他角色该角色声明一张基本牌或普通锦囊牌的牌名在此出牌阶段内你可以将此手牌当声明的牌使用且你不能被选择为目标';
}
}
},
group:['jiaozhao2','jiaozhao3']
},
jiaozhao2:{
enable:'phaseUse',
audio:'jiaozhao',
filter:function(event,player){
if(!player.storage.jiaozhao) return false;
var name=player.storage.jiaozhao_card;
if(name=='tao'||name=='shan'||name=='wuzhong'||name=='jiu') return false;
return player.getCards('h').contains(player.storage.jiaozhao);
},
filterCard:function(card,player){
return card==player.storage.jiaozhao;
},
selectCard:-1,
popname:true,
filterTarget:function(card,player,target){
if(player==target) return false;
return lib.filter.filterTarget({name:player.storage.jiaozhao_card},player,target);
},
check:function(card){
return 8-ai.get.value(card);
},
ai:{
order:6
}
},
jiaozhao3:{
trigger:{player:'phaseEnd'},
forced:true,
popup:false,
content:function(){
delete player.storage.jiaozhao;
delete player.storage.jiaozhao_card;
}
},
danxin:{
trigger:{player:'damageEnd'},
frequent:true,
audio:2,
content:function(){
'step 0'
if(player.storage.jiaozhao1&&player.storage.jiaozhao2){
player.draw();
event.finish();
}
else{
var list=['draw_card','更改描述'];
var prompt;
if(player.storage.jiaozhao1){
prompt='摸一张牌或更改矫诏的描述<br><br><div class="text">更改描述选择距离最近的一名其他角色该角色改为';
}
else{
prompt='摸一张牌或更改矫诏的描述<br><br><div class="text">更改描述基本牌改为基本牌或普通锦囊牌';
}
player.chooseControl(list,function(){
if(!_status.event.player.hasSkill('jiaozhao')) return 'draw_card';
return '更改描述';
}).set('prompt',prompt);
}
'step 1'
if(result.control=='draw_card'){
player.draw();
}
else{
game.log(player,'更改了','矫诏','的描述');
player.popup('更改描述');
player.markSkill('jiaozhao');
if(player.storage.jiaozhao1){
player.storage.jiaozhao2=true;
}
else{
player.storage.jiaozhao1=true;
}
}
}
},
zongzuo:{
trigger:{global:'phaseBefore'},
forced:true,
priority:10,
audio:2,
filter:function(event,player){
return !player.storage.zongzuo;
},
content:function(){
'step 0'
player.storage.zongzuo=true;
var list=['wei','shu','wu','qun'];
var num=game.countPlayer(function(current){
if(list.contains(current.group)){
list.remove(current.group);
return true;
}
});
player.gainMaxHp(num);
event.num=num;
'step 1'
player.hp+=event.num;
player.update();
},
group:'zongzuo_lose',
subSkill:{
lose:{
trigger:{global:'dieAfter'},
forced:true,
audio:'zongzuo',
filter:function(event,player){
var list=['wei','shu','wu','qun'];
if(!list.contains(event.player.group)) return false;
if(game.hasPlayer(function(current){
return current.group==event.player.group;
})){
return false;
}
return true;
},
content:function(){
player.loseMaxHp();
}
}
}
},
zhige:{
enable:'phaseUse',
usable:1,
audio:2,
filter:function(event,player){
return player.countCards('h')>player.hp;
},
filterTarget:function(card,player,target){
return get.distance(target,player,'attack')<=1&&target.countCards('e')>0;
},
content:function(){
'step 0'
target.chooseToUse({name:'sha'},'止戈使用一张杀或将其装备区里的一张牌交给'+get.translation(player));
'step 1'
if(!result.bool&&target.countCards('e')){
target.chooseCard('e',true,'将其装备区里的一张牌交给'+get.translation(player));
}
else{
event.finish();
}
'step 2'
if(result.bool&&result.cards&&result.cards.length){
player.gain(result.cards,target);
target.$give(result.cards,player);
}
},
ai:{
expose:0.2,
order:5,
result:{
target:-1,
player:function(player,target){
if(target.countCards('h')==0) return 0;
if(target.countCards('h')==1) return -0.1;
if(player.hp<=2) return -2;
if(player.countCards('h','shan')==0) return -1;
return -0.5;
}
}
}
},
kuangbi:{
enable:'phaseUse',
usable:1,
audio:2,
filterTarget:function(card,player,target){
return target!=player&&target.countCards('he')>0;
},
content:function(){
'step 0'
target.chooseCard('he',[1,3],'匡弼将1~3张牌置于'+get.translation(player)+'的武将牌上',true).set('ai',function(card){
if(ai.get.attitude(_status.event.player,_status.event.getParent().player)>0){
return 7-ai.get.value(card);
}
return -ai.get.value(card);
});
'step 1'
if(result.bool){
target.$give(result.cards,player);
target.lose(result.cards,ui.special);
player.storage.kuangbi_draw=result.cards;
player.storage.kuangbi_draw_source=target;
player.syncStorage('kuangbi_draw');
player.addSkill('kuangbi_draw');
}
},
ai:{
order:1,
result:{
target:function(player,target){
if(ai.get.attitude(player,target)>0){
return Math.sqrt(target.countCards('he'));
}
return 0;
},
player:1
}
},
subSkill:{
draw:{
trigger:{player:'phaseBegin'},
forced:true,
mark:true,
intro:{
content:'cards'
},
content:function(){
var cards=player.storage.kuangbi_draw;
if(cards){
player.gain(cards,'gain2');
var target=player.storage.kuangbi_draw_source;
if(target&&target.isAlive()){
target.draw(cards.length);
}
}
delete player.storage.kuangbi_draw;
delete player.storage.kuangbi_draw_source;
player.removeSkill('kuangbi_draw');
}
}
}
},
fulin:{
trigger:{player:'phaseDiscardBegin'},
forced:true,
popup:false,
silent:true,
content:function(){
player.addTempSkill('fulin2','phaseDiscardAfter');
},
group:['fulin_count','fulin_reset'],
subSkill:{
reset:{
trigger:{player:['phaseBegin','phaseEnd']},
forced:true,
popup:false,
silent:true,
priority:10,
content:function(){
player.storage.fulin=[];
}
},
count:{
trigger:{player:'gainEnd'},
forced:true,
popup:false,
silent:true,
filter:function(event,player){
return _status.currentPhase==player;
},
content:function(){
if(!player.storage.fulin){
player.storage.fulin=[];
}
for(var i=0;i<trigger.cards.length;i++){
player.storage.fulin.add(trigger.cards[i]);
}
}
}
}
},
fulin2:{
mod:{
maxHandcard:function(player,num){
if(player.storage.fulin&&player.storage.fulin.length){
var hs=player.getCards('h');
for(var i=0;i<player.storage.fulin.length;i++){
if(hs.contains(player.storage.fulin[i])){
num++;
}
}
return num;
}
}
},
},
duliang:{
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player!=target&&target.countCards('h')>0;
},
audio:2,
content:function(){
'step 0'
var card=target.getCards('h').randomGet();
player.gain(card,target);
target.$giveAuto(card,player);
'step 1'
var name=get.translation(target.name);
player.chooseControl(function(){
return Math.random()<0.5?'选项一':'选项二';
}).set('prompt','督粮').set('choiceList',[''+name+'观看牌堆顶的两张牌然后获得其中的基本牌',''+name+'于下个摸牌阶段额外摸一张牌']);
'step 2'
if(result.control=='选项一'){
var cards=get.cards(2);
target.viewCards('督粮',cards);
event.cards2=[];
for(var i=0;i<cards.length;i++){
if(get.type(cards[i])=='basic'){
ui.special.appendChild(cards[i]);
event.cards2.push(cards[i]);
}
else{
ui.discardPile.appendChild(cards[i]);
}
}
}
else{
target.addSkill('duliang2');
event.finish();
}
'step 3'
if(event.cards2&&event.cards2.length){
target.gain(event.cards2,'draw');
game.log(target,'获得了'+get.cnNumber(event.cards2.length)+'张牌');
}
},
ai:{
order:4,
result:{
target:-1,
player:0.1
}
}
},
duliang2:{
trigger:{player:'phaseDrawBegin'},
forced:true,
mark:true,
audio:false,
intro:{
content:'下个摸牌阶段额外摸一张牌'
},
content:function(){
trigger.num++;
player.removeSkill('duliang2');
}
},
xinfencheng:{
skillAnimation:'epic',
animationColor:'fire',
audio:2,
enable:'phaseUse',
filter:function(event,player){
return !player.storage.xinfencheng;
},
filterTarget:function(card,player,target){
return player!=target;
},
unique:true,
selectTarget:-1,
multitarget:true,
multiline:true,
mark:true,
line:'fire',
content:function(){
"step 0"
player.storage.xinfencheng=true;
player.awakenSkill('xinfencheng');
event.num=1;
event.targets=targets.slice(0);
event.targets.sort(lib.sort.seat);
"step 1"
if(event.targets.length){
var target=event.targets.shift();
event.target=target;
var res=ai.get.damageEffect(target,player,target,'fire');
target.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;
if(_status.event.res>=0) return 6-ai.get.value(card);
if(get.type(card)!='basic'){
return 10-ai.get.value(card);
}
return 8-ai.get.value(card);
}).set('res',res);
}
else{
event.finish();
}
"step 2"
if(!result.bool){
event.target.damage(2,'fire');
event.num=1;
}
else{
event.num=result.cards.length+1;
}
event.goto(1);
},
ai:{
order:1,
result:{
player:function(player){
var num=0,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(player!=players[i]&&ai.get.damageEffect(players[i],player,players[i],'fire')<0){
var att=ai.get.attitude(player,players[i]);
if(att>0){
num--;
}
else if(att<0){
num++;
}
}
}
if(game.players.length<5){
return num-1;
}
else{
return num-2;
}
}
}
},
init:function(player){
player.storage.xinfencheng=false;
},
intro:{
content:'limited'
}
},
xinjuece:{
audio:2,
trigger:{player:'phaseEnd'},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(player){
return player.countCards('h')==0;
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('xinjuece'),function(card,player,target){
return target.countCards('h')==0;
}).set('ai',function(target){
var player=_status.event.player;
return ai.get.damageEffect(target,player,player);
});
'step 1'
if(result.bool){
player.logSkill('juece',result.targets);
result.targets[0].damage();
}
}
},
xinmieji:{
audio:2,
enable:'phaseUse',
usable:1,
filterCard:function(card){
return get.color(card)=='black'&&get.type(card,'trick')=='trick';
},
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
},
discard:false,
delay:false,
check:function(card){
return 8-ai.get.value(card);
},
content:function(){
'step 0'
player.showCards(cards);
'step 1'
ui.cardPile.insertBefore(cards[0],ui.cardPile.firstChild);
var n1=target.getCards('he',function(card){
if(!lib.filter.cardDiscardable(card,player)) return false;
return get.type(card,'trick')=='trick';
});
var n2=target.getCards('he',function(card){
if(!lib.filter.cardDiscardable(card,player)) return false;
return get.type(card,'trick')!='trick';
});
if(n1.length>1||n2.length>2||(n1.length==1&&n2.length==2)){
target.chooseToDiscard('弃置一张锦囊牌或两张非锦囊牌',true,'he',function(card,player){
if(!lib.filter.cardDiscardable(card,player)) return false;
if(!_status.event.nontrick){
return get.type(card,'trick')=='trick';
}
if(ui.selected.cards.length){
return get.type(card,'trick')!='trick';
}
return true;
}).set('ai',function(card){
if(get.type(card,'trick')=='trick'){
return 8-ai.get.value(card);
}
return -ai.get.value(card);
}).set('selectCard',function(){
if(ui.selected.cards.length==1&&get.type(ui.selected.cards[0],'trick')=='trick'){
return 1;
}
return 2;
}).set('nontrick',n2.length>=2).set('complexCard',true);
}
else{
if(n1.length){
target.discard(n1);
}
else if(n2.length){
target.discard(n2);
}
}
},
ai:{
order:9,
result:{
target:-1
}
}
},
qianju:{
mod:{
globalFrom:function(from,to,distance){
return distance-(from.maxHp-from.hp);
}
}
},
qingxi:{
trigger:{source:'damageBegin'},
check:function(event,player){
return ai.get.attitude(player,event.player)<0;
},
filter:function(event,player){
return event.card&&event.card.name=='sha'&&player.getEquip(1);
},
content:function(){
'step 0'
var num=1;
var info=get.info(player.getEquip(1));
if(info&&info.distance&&info.distance.attackFrom){
num-=info.distance.attackFrom;
}
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-ai.get.value(card);
}
else{
return 10-ai.get.value(card);
}
}
else{
if(num>2){
return 0;
}
return 8-ai.get.value(card);
}
});
}
'step 1'
if(!event.directfalse&&result.bool){
var e1=player.getEquip(1);
if(e1){
player.discard(e1);
}
}
else{
trigger.num++;
}
}
},
jieyue:{
group:'jieyue1'
},
jieyue1:{
audio:2,
trigger:{player:'phaseEnd'},
direct:true,
content:function(){
'step 0'
player.chooseCardTarget({
filterTarget:function(card,player,target){
return target!=player&&target.countCards('he')>0;
},
filterCard:lib.filter.cardDiscardable,
ai1:function(card){
return 7-ai.get.useful(card);
},
ai2:function(target){
return 1-ai.get.attitude(_status.event.player,target);
},
prompt:get.prompt('jieyue')
});
'step 1'
if(result.bool){
player.logSkill('jieyue1',result.targets);
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(ai.get.attitude(player,_status.event.getParent().player)>0){
return 8-ai.get.value(card);
}
var nh=player.countCards('h');
if(nh<=2){
return 6-ai.get.value(card);
}
if(nh<=3){
return 2-ai.get.value(card);
}
return 0;
});
}
else{
event.finish();
}
'step 2'
if(result.bool&&result.cards&&result.cards.length){
event.target.$give(result.cards,player);
player.storage.jieyue2=result.cards[0];
event.target.lose(result.cards[0],ui.special);
player.syncStorage('jieyue2');
player.addSkill('jieyue2');
}
else if(event.target.countCards('he')){
player.discardPlayerCard(event.target,true);
}
},
ai:{
expose:0.1
}
},
jieyue2:{
mark:'card',
intro:{
content:'card'
},
audio:true,
enable:'chooseToUse',
filterCard:function(card){
return get.color(card)=='black';
},
viewAsFilter:function(player){
return player.countCards('h',{color:'black'})>0;
},
viewAs:{name:'wuxie'},
prompt:'将一张黑色手牌当无懈可击使用',
check:function(card){return 8-ai.get.value(card)},
threaten:1.2,
group:['jieyue3','jieyue4']
},
jieyue3:{
enable:['chooseToRespond'],
filterCard:function(card){
return get.color(card)=='red';
},
viewAs:{name:'shan'},
viewAsFilter:function(player){
if(!player.countCards('h',{color:'red'})) return false;
},
audio:true,
prompt:'将一张红色手牌当闪打出',
check:function(){return 1},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.countCards('h',{color:'red'})) return false;
},
effect:{
target:function(card,player,target,current){
if(get.tag(card,'respondShan')&&current<0) return 0.8
}
}
}
},
jieyue4:{
trigger:{player:'phaseBegin'},
forced:true,
content:function(){
player.gain(player.storage.jieyue2,'gain2');
player.storage.jieyue2=null;
player.removeSkill('jieyue2');
}
},
jinjiu:{
mod:{
cardEnabled:function(card,player){
if(card.name=='jiu'&&_status.event.skill!='jinjiu') return false;
},
cardUsable:function(card,player){
if(card.name=='jiu'&&_status.event.skill!='jinjiu') return false;
},
cardRespondable:function(card,player){
if(card.name=='jiu'&&_status.event.skill!='jinjiu') return false;
},
cardSavable:function(card,player){
if(card.name=='jiu'&&_status.event.skill!='jinjiu') return false;
},
},
enable:['chooseToUse','chooseToRespond'],
filter:function(event,player){
return player.countCards('h','jiu')>0;
},
filterCard:{name:'jiu'},
viewAs:{name:'sha'},
viewAsFilter:function(player){
if(!player.countCards('h','jiu')) return false;
},
check:function(){return 1},
ai:{
skillTagFilter:function(player){
if(!player.countCards('h','jiu')) return false;
},
respondSha:true,
order:4,
useful:-1,
value:-1
}
},
xianzhen:{
audio:2,
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player!=target&&target.countCards('h')>0;
},
filter:function(event,player){
return player.countCards('h')>0;
},
content:function(){
"step 0"
player.chooseToCompare(target);
"step 1"
if(result.bool){
player.storage.xianzhen=target;
player.addTempSkill('xianzhen2','phaseAfter');
}
else{
player.addTempSkill('xianzhen3','phaseAfter');
}
},
ai:{
order:function(name,player){
var cards=player.getCards('h');
if(player.countCards('h','sha')==0){
return 1;
}
for(var i=0;i<cards.length;i++){
if(cards[i].name!='sha'&&cards[i].number>11&&ai.get.value(cards[i])<7){
return 9;
}
}
return ai.get.order({name:'sha'})-1;
},
result:{
player:function(player){
if(player.countCards('h','sha')>0) return 0;
var num=player.countCards('h');
if(num>player.hp) return 0;
if(num==1) return -2;
if(num==2) return -1;
return -0.7;
},
target:function(player,target){
var num=target.countCards('h');
if(num==1) return -1;
if(num==2) return -0.7;
return -0.5
},
},
threaten:1.3
}
},
xianzhen2:{
mod:{
targetInRange:function(card,player,target,now){
if(player.storage.xianzhen==target) return true;
},
cardUsable:function(card,player,num){
if(card.name=='sha') return Infinity;
}
},
ai:{
unequip:true
}
},
xianzhen3:{
mod:{
cardEnabled:function(card){if(card.name=='sha') return false}
}
},
lihuo:{
enable:'phaseUse',
usable:1,
filterCard:function(card){
return card.name=='sha'&&!card.nature;
},
filter:function(event,player){
return player.countCards('h','sha')>0
},
viewAs:{name:'sha',nature:'fire'},
mod:{
selectTarget:function(card,player,range){
if(card.name=='sha'&&card.nature=='fire'&&range[1]!=-1){
range[1]++;
}
},
},
group:'lihuo2'
},
lihuo2:{
trigger:{source:'damageEnd'},
forced:true,
popup:false,
filter:function(event,player){
return event.parent.skill=='lihuo';
},
content:function(){
player.addTempSkill('lihuo3','phaseAfter');
}
},
lihuo3:{
trigger:{player:'useCardAfter'},
filter:function(event,player){
return event.card.name=='sha';
},
forced:true,
silent:true,
audio:false,
content:function(){
player.loseHp();
player.removeSkill('lihuo3');
delete player.tempSkills.lihuo3;
}
},
chunlao:{
trigger:{player:'phaseEnd'},
direct:true,
audio:2,
filter:function(event,player){
return player.countCards('h','sha')>0&&!player.storage.chunlao.length;
},
init:function(player){
player.storage.chunlao=[];
},
intro:{
content:'cards',
},
content:function(){
'step 0'
player.chooseCard([1,player.countCards('h','sha')],get.prompt('chunlao'),{name:'sha'}).set('ai',function(){
return 1;
});
'step 1'
if(result.bool){
player.logSkill('chunlao');
player.storage.chunlao=player.storage.chunlao.concat(result.cards);
player.syncStorage('chunlao');
player.markSkill('chunlao');
player.lose(result.cards,ui.special);
player.$give(result.cards,player);
}
},
ai:{
effect:{
player:function(card,player){
if(_status.currentPhase!=player) return;
if(card.name=='sha'&&player.countCards('h')<=player.hp&&!player.storage.chunlao.length){
return [0,0,0,0];
}
}
},
threaten:1.4
},
group:'chunlao2'
},
chunlao2:{
trigger:{global:'dying'},
priority:6,
filter:function(event,player){
return event.player.hp<=0&&player.storage.chunlao.length>0;
},
direct:true,
content:function(){
"step 0"
var att=ai.get.attitude(player,trigger.player);
player.chooseCardButton(get.prompt('chunlao',trigger.player),player.storage.chunlao).set('ai',function(button){
if(_status.event.att>0) return 1;
return 0;
}).set('att',att);
"step 1"
if(result.bool){
player.logSkill('chunlao',trigger.player);
player.$throw(result.links);
player.storage.chunlao.remove(result.links[0]);
ui.discardPile.appendChild(result.links[0]);
player.syncStorage('chunlao');
trigger.player.useCard({name:'jiu'},trigger.player);
if(!player.storage.chunlao.length){
player.unmarkSkill('chunlao');
}
else{
player.markSkill('chunlao');
}
}
},
ai:{
expose:0.2
}
},
shenduan:{
trigger:{player:'discardAfter'},
filter:function(event,player){
for(var i=0;i<event.cards.length;i++){
if(get.color(event.cards[i])=='black'&&get.type(event.cards[i])=='basic'&&
get.position(event.cards[i])=='d'){
return true;
}
}
return false;
},
direct:true,
content:function(){
'step 0'
var cards=[];
for(var i=0;i<trigger.cards.length;i++){
if(get.color(trigger.cards[i])=='black'&&get.type(trigger.cards[i])=='basic'&&
get.position(trigger.cards[i])=='d'){
cards.push(trigger.cards[i]);
}
}
if(!cards.length){
event.finish();
}
else{
event.cards=cards;
}
'step 1'
if(event.cards.length){
player.chooseTarget(get.prompt('shenduan'),function(card,player,target){
return player.canUse({name:'bingliang'},target,false);
}).set('ai',function(target){
var player=_status.event.player;
return ai.get.effect(target,{name:'bingliang'},player,player);
});
}
else{
event.finish();
}
'step 2'
if(result.bool&&result.targets&&result.targets.length){
event.current=result.targets[0];
if(event.cards.length==1){
event.directCard=event.cards[0];
}
else{
delete event.directCard;
player.chooseCardButton('选择一张牌当作兵断寸断使用',event.cards,true);
}
}
else{
event.finish();
}
'step 3'
var card;
if(event.directCard){
card=event.directCard;
}
else if(result.links&&result.links.length&&
event.cards.contains(result.links[0])){
card=result.links[0]
}
if(card){
event.cards.remove(card);
event.current.addJudge('bingliang',[card]);
event.goto(1);
player.logSkill('shenduan',event.current);
}
}
},
yonglve:{
trigger:{global:'phaseJudgeBegin'},
direct:true,
filter:function(event,player){
return event.player!=player&&event.player.countCards('j')>0&&get.distance(player,event.player,'attack')<=1;
},
content:function(){
'step 0'
var att=ai.get.attitude(player,trigger.player);
var nh=trigger.player.countCards('h');
var eff=ai.get.effect(trigger.player,{name:'sha'},player,player);
player.chooseCardButton(get.prompt('yonglve',trigger.player),trigger.player.getCards('j')).set('ai',function(button){
var name=button.link.viewAs||button.link.name;
var att=_status.event.att;
var nh=_status.event.nh;
var eff=_status.event.eff;
var trigger=_status.event.getTrigger();
if(att>0&&eff>=0) return 1;
if(att>=0&&eff>0) return 1;
if(att>0&&(trigger.player.hp>=3||trigger.player.getEquip('bagua')||trigger.player.countCards('h','shan'))){
if(name=='lebu'&&nh>trigger.player.hp) return 1;
if(name=='bingliang'&&nh<trigger.player.hp) return 1;
}
return 0;
}).set('att',att).set('nh',nh).set('eff',eff);
'step 1'
if(result.bool){
trigger.player.discard(result.links);
player.useCard({name:'sha'},trigger.player,'yonglve');
player.storage.yonglve=false;
}
else{
event.finish();
}
'step 2'
if(player.storage.yonglve){
player.storage.yonglve=false;
}
else{
player.draw();
}
},
group:'yonglve2'
},
yonglve2:{
trigger:{source:'damageAfter'},
forced:true,
popup:false,
filter:function(event){
return event.parent.skill=='yonglve';
},
content:function(){
player.storage.yonglve=true;
}
},
benxi:{
mod:{
globalFrom:function(from,to,distance){
if(_status.currentPhase==from){
return distance-get.cardCount(true,from);
}
},
selectTarget:function(card,player,range){
if(_status.currentPhase==player){
if(card.name=='sha'&&range[1]!=-1){
if(!game.hasPlayer(function(current){
return get.distance(player,current)>1;
})){
range[1]++;
}
}
}
}
},
ai:{
unequip:true,
skillTagFilter:function(player){
if(game.hasPlayer(function(current){
return get.distance(player,current)>1;
})){
return false;
}
}
}
},
sidi:{
trigger:{global:'respondEnd'},
filter:function(event,player){
if(event.parent.parent.name!='sha') return false;
if(event.player==player) return true;
return _status.currentPhase==player;
},
frequent:true,
init:function(player){
player.storage.sidi=[];
},
intro:{
content:'cards'
},
content:function(){
var card=get.cards()[0];
game.log(player,'',card,'置于武将牌上');
player.$gain2(card);
player.storage.sidi.add(card);
player.markSkill('sidi');
player.syncStorage('sidi');
},
group:'sidi2'
},
sidi2:{
trigger:{global:'phaseUseBegin'},
filter:function(event,player){
if(event.player==player) return false;
if(!player.storage.sidi.length) return false;
return true;
},
check:function(event,player){
if(ai.get.attitude(player,event.player)>=0) return false;
if(event.player.getEquip('zhuge')) return false;
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])&&
ai.get.attitude(player,players[i])>0) break;
}
if(i==players.length) return false;
var nh=event.player.countCards('h');
var nsha=event.player.countCards('h','sha');
if(nh<2) return false;
switch(nh){
case 2:
if(nsha) return Math.random()<0.4;
return Math.random()<0.2;
case 3:
if(nsha) return Math.random()<0.8;
return Math.random()<0.3;
case 4:
if(nsha>1) return true;
if(nsha) return Math.random()<0.9;
return Math.random()<0.5;
default:return true;
}
},
content:function(){
'step 0'
if(player.storage.sidi.length==1){
event.directbutton=player.storage.sidi[0];
}
else{
player.chooseCardButton('弃置武将牌上的一张牌',player.storage.sidi,true);
}
'step 1'
var button;
if(event.directbutton){
button=event.directbutton;
}
else if(result.bool&&result.links&&result.links.length){
button=result.links[0];
}
if(button){
player.$throw([button]);
player.line(trigger.player,'green');
game.log(player,'',button,'置于弃牌堆');
ui.discardPile.appendChild(button);
trigger.player.addTempSkill('sidi3','phaseAfter');
player.storage.sidi.remove(button);
player.syncStorage('sidi');
if(player.storage.sidi.length==0){
player.unmarkSkill('sidi');
}
else{
player.markSkill('sidi');
}
game.delayx();
}
}
},
sidi3:{
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num-1;
}
}
},
zhongyong:{
trigger:{player:'shaMiss'},
direct:true,
filter:function(event,player){
return event.responded&&get.itemtype(event.responded.cards)=='cards';
},
content:function(){
"step 0"
var cards=trigger.responded.cards;
event.cards=cards;
player.chooseTarget('忠勇'+get.translation(trigger.responded.cards)+'交给一名角色',function(card,player,target){
return target!=_status.event.getTrigger().target;
}).set('ai',function(target){
var att=ai.get.attitude(_status.event.player,target);
if(target.countCards('h','shan')&&target.countCards('h')>=2){
att/=1.5;
}
return att;
});
"step 1"
if(result.bool){
player.logSkill('zhongyong',result.targets);
result.targets[0].gain(event.cards,'gain2');
if(result.targets[0]==player){
event.finish();
}
}
else{
event.finish();
}
"step 2"
if(player.hasSkill('jiu')){
game.broadcastAll(function(player){
player.removeSkill('jiu');
if(player.node.jiu){
player.node.jiu.delete();
player.node.jiu2.delete();
delete player.node.jiu;
delete player.node.jiu2;
}
},player);
event.jiu=true;
}
player.chooseToUse('是否对'+get.translation(trigger.target)+'再使用一张杀',
{name:'sha'},trigger.target,-1).logSkill='qinglong_skill';
"step 3"
if(result.bool);
else if(event.jiu){
player.addSkill('jiu');
}
}
},
xinzhongyong:{
trigger:{player:'shaMiss'},
direct:true,
filter:function(event,player){
return event.responded&&get.itemtype(event.cards)=='cards'&&get.itemtype(event.responded.cards)=='cards';
},
content:function(){
"step 0"
event.cards1=trigger.cards.slice(0);
event.cards2=trigger.responded.cards.slice(0);
player.chooseTarget('忠勇将杀或闪交给一名其他角色',function(card,player,target){
return target!=_status.event.getTrigger().target&&target!=player;
}).set('ai',function(target){
return ai.get.attitude(_status.event.player,target);
});
"step 1"
if(result.bool){
var sha=false;
if(event.cards1.length==1&&get.color(event.cards1[0])=='red'){
sha=true;
}
player.chooseControl('','',function(event,player){
if(_status.event.choosesha) return '';
return '';
}).set('prompt','选择交给'+get.translation(result.targets)+'的牌').set('choosesha',sha);
event.target=result.targets[0];
}
else{
event.finish();
}
"step 2"
player.logSkill('zhongyong',event.target);
event.sha=false;
if(result.control==''){
event.target.gain(event.cards1,'gain2');
if(event.cards1.length==1&&get.color(event.cards1[0])=='red'){
event.sha=true;
}
}
else{
event.target.gain(event.cards2,'gain2');
if(event.cards2.length==1&&get.color(event.cards2[0])=='red'){
event.sha=true;
}
}
"step 3"
if(event.sha){
event.target.chooseToUse('是否使用一张杀',{name:'sha'}).set('filterTarget',function(card,player,target){
return target!=_status.event.source&&get.distance(_status.event.source,target,'attack')<=1&&player.canUse('sha',target,false);
}).set('source',player);
}
}
},
dangxian:{
trigger:{player:'phaseBegin'},
forced:true,
content:function(){
'step 0'
player.phaseUse();
'step 1'
player.getStat().card={};
}
},
longyin:{
trigger:{global:'shaBegin'},
direct:true,
filter:function(event,player){
return event.target==event.targets[0]&&player.countCards('he')>0&&event.card.name=='sha'&&
_status.currentPhase==event.player&&event.parent.parent.parent.name=='phaseUse';
},
content:function(){
'step 0'
var go=false;
if(ai.get.attitude(player,trigger.player)>0){
if(get.color(trigger.card)=='red'){
go=true;
}
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);
}
else if(nh>=4){
go=true;
}
else if(player.countCards('h','sha')){
if(nh==3){
go=Math.random()<0.8;
}
else if(nh==2){
go=Math.random()<0.5;
}
}
else if(nh>=3){
if(nh==3){
go=Math.random()<0.5;
}
else if(nh==2){
go=Math.random()<0.2;
}
}
}
}
var next=player.chooseToDiscard(get.prompt('longyin'),'he');
next.logSkill=['longyin',trigger.player];
next.set('ai',function(card){
if(_status.event.go){
return 6-ai.get.value(card);
}
return 0;
});
next.set('go',go);
'step 1'
if(result.bool){
trigger.player.getStat().card.sha--;
if(get.color(trigger.card)=='red'){
player.draw();
}
// player.logSkill('longyin',trigger.player);
}
},
ai:{
expose:0.2
}
},
jigong:{
audio:2,
trigger:{player:'phaseUseBegin'},
check:function(event,player){
var nh=player.countCards('h')-player.countCards('h',{type:'equip'});
if(nh<=1) return true;
if(player.countCards('h','tao')) return false;
if(nh<=2) return Math.random()<0.7;
if(nh<=3) return Math.random()<0.4;
return false;
},
content:function(){
player.draw(2);
player.addTempSkill('jigong2','phaseAfter');
}
},
jigong2:{
mod:{
maxHandcard:function(player,num){
var damage=player.getStat().damage;
if(typeof damage=='number') return num-player.hp+damage;
return 0;
}
}
},
shifei:{
audio:2,
trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){
if(event.responded) return false;
if(!event.filterCard({name:'shan'})) return false;
return true;
},
check:function(event,player){
if(ai.get.attitude(player,_status.currentPhase)>0) return true;
var nh=_status.currentPhase.countCards('h')+1;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i].countCards('h')>nh){
if(!player.hasShan()||ai.get.attitude(player,players[i])<=0) return true;
}
}
return false;
},
content:function(){
'step 0'
player.line(_status.currentPhase,'green');
_status.currentPhase.draw();
'step 1'
var nh=_status.currentPhase.countCards('h');
var nmax=nh+1;
var targets=[];
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
var nh2=players[i].countCards('h');
if(nh2>nmax){
nmax=nh2;
targets.length=0;
targets.push(players[i]);
}
else if(nh2==nmax){
targets.push(players[i]);
}
}
if(targets.length==1){
event.onlytarget=targets[0];
}
else if(targets.length){
player.chooseTarget('选择一名角色弃置其一张牌',true,function(card,player,target){
return _status.event.targets.contains(target);
}).set('ai',function(target){
return -ai.get.attitude(_status.event.player,target);
}).set('targets',targets);
}
else{
event.finish();
}
'step 2'
var target;
if(event.onlytarget){
target=event.onlytarget;
}
else if(result.targets&&result.targets.length){
target=result.targets[0];
}
if(target){
player.line(target,'green');
player.discardPlayerCard(target,'he',true);
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:{name:'shan'}}
}
},
ai:{
effect:{
target:function(card,player,target,current){
if(get.tag(card,'respondShan')&&current<0){
var nh=player.countCards('h');
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i].countCards('h')>nh) return 0.4;
}
}
}
}
}
},
huaiyi:{
audio:2,
enable:'phaseUse',
usable:1,
delay:0,
filter:function(event,player){
return player.countCards('h',{color:'red'})&&player.countCards('h',{color:'black'});
},
content:function(){
'step 0'
player.chooseControl('红色','黑色').set('ai',function(){
var player=_status.event.player;
if(player.countCards('h',{color:'red'})==1&&
player.countCards('h',{color:'black'})>1) return '红色';
return '黑色';
});
'step 1'
event.control=result.control;
player.showHandcards();
'step 2'
var cards;
if(event.control=='红色'){
cards=player.getCards('h',{color:'red'});
}
else{
cards=player.getCards('h',{color:'black'});
}
player.discard(cards);
event.num=cards.length;
'step 3'
player.chooseTarget([1,event.num],function(card,player,target){
return target!=player&&target.countCards('he')>0;
}).set('ai',function(target){
return -ai.get.attitude(_status.event.player,target)+0.5;
});
'step 4'
if(result.bool&&result.targets){
player.line(result.targets,'green');
event.targets=result.targets;
event.targets.sort(lib.sort.seat);
event.gained=event.targets.length;
}
else{
event.finish();
}
'step 5'
if(event.targets.length){
player.gainPlayerCard(event.targets.shift(),'he',true);
event.redo();
}
'step 6'
if(event.gained>=2){
player.loseHp();
}
},
ai:{
order:function(item,player){
if(player.countCards('h',{color:'red'})==1) return 10;
if(player.countCards('h',{color:'black'})==1) return 10;
return 1;
},
result:{
player:1
}
}
},
yaoming:{
audio:2,
trigger:{player:'damageEnd',source:'damageEnd'},
direct:true,
filter:function(event,player){
if(player.hasSkill('yaoming2')) return false;
var nh=player.countCards('h');
return game.hasPlayer(function(current){
return current.countCards('h')!=nh;
});
},
content:function(){
'step 0'
var nh=player.countCards('h');
player.chooseTarget(get.prompt('yaoming'),function(card,player,target){
return _status.event.nh!=target.countCards('h');
}).set('ai',function(target){
var att=ai.get.attitude(_status.event.player,target);
if(target.countCards('h')>_status.event.nh) return -att;
return att;
}).set('nh',nh);
'step 1'
if(result.bool){
player.logSkill('yaoming',result.targets);
player.addTempSkill('yaoming2','phaseAfter');
var target=result.targets[0];
if(target.countCards('h')<player.countCards('h')){
target.draw();
}
else{
target.discard(target.getCards('h').randomGet());
}
}
},
ai:{
expose:0.2
}
},
yaoming2:{},
anguo:{
audio:2,
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player!=target&&target.countCards('e')>0;
},
content:function(){
'step 0'
player.choosePlayerCard(target,'e',true);
'step 1'
if(result.links){
var num=0,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(get.distance(target,players[i],'attack')<=1){
num++;
}
}
event.num=num;
target.gain(result.links,'gain2');
}
else{
event.finish();
}
'step 2'
var num2=0,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(get.distance(target,players[i],'attack')<=1){
num2++;
}
}
if(event.num>num2){
player.draw();
}
},
ai:{
order:7,
result:{
target:function(player,target){
if(target.hasSkillTag('noe')) return 1;
if(target.getEquip(1)||target.getEquip(4)) return -1;
if(target.getEquip(2)) return -0.7;
return -0.5;
}
}
}
},
zhaofu:{
unique:true,
global:'zhaofu2',
zhuSkill:true
},
zhaofu2:{
mod:{
attackTo:function(from,to,distance){
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(get.distance(players[i],to)<=1) return distance-100;
}
}
}
}
},
xingxue:{
audio:2,
trigger:{player:'phaseEnd'},
direct:true,
content:function(){
'step 0'
var num=player.hp;
if(!player.hasSkill('yanzhu')){
num=player.maxHp;
}
player.chooseTarget([1,num],get.prompt('xingxue')).set('ai',function(target){
var att=ai.get.attitude(_status.event.player,target);
if(target.countCards('he')) return att;
return att/10;
});
'step 1'
if(result.bool){
player.logSkill('xingxue',result.targets);
event.targets=result.targets;
event.targets.sort(lib.sort.seat);
}
else{
event.finish();
}
'step 2'
if(event.targets.length){
var target=event.targets.shift();
target.draw();
event.current=target;
}
else{
event.finish();
}
'step 3'
if(event.current&&event.current.countCards('he')){
event.current.chooseCard('选择一张牌置于牌堆顶','he',true);
}
else{
event.goto(2);
}
'step 4'
if(result&&result.cards){
event.card=result.cards[0];
event.current.lose(result.cards,ui.special);
game.broadcastAll(function(player){
var cardx=ui.create.card();
cardx.classList.add('infohidden');
cardx.classList.add('infoflip');
player.$throw(cardx,1000,'nobroadcast');
},event.current);
}
else{
event.card=null;
}
'step 5'
if(event.current==game.me) game.delay(0.5);
'step 6'
if(event.card){
event.card.fix();
ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild);
}
event.goto(2);
}
},
yanzhu:{
audio:2,
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return target.countCards('he')>0&&target!=player;
},
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;
});
}
else{
target.chooseToDiscard(true,'he');
event.finish();
}
'step 1'
if(result.bool){
var es=target.getCards('e');
player.gain(es,target);
target.$give(es,player);
player.removeSkill('yanzhu');
}
else{
target.chooseToDiscard(true,'he');
}
},
ai:{
order:6,
result:{
target:function(player,target){
var ne=target.countCards('e');
if(!ne) return -2;
if(ne>=2) return -ne;
return 0;
}
}
}
},
shizhi:{
mod:{
cardRespondable:function(card,player){
if(card.name=='shan'&&player.hp==1&&_status.event.skill!='shizhi') return false;
},
},
enable:['chooseToUse','chooseToRespond'],
filter:function(event,player){
return player.hp==1;
},
filterCard:{name:'shan'},
viewAs:{name:'sha'},
viewAsFilter:function(player){
if(!player.countCards('h','shan')) return false;
if(player.hp!=1) return false;
},
check:function(){return 1},
ai:{
skillTagFilter:function(player){
if(!player.countCards('h','shan')) return false;
if(player.hp!=1) return false;
},
respondSha:true,
order:4,
useful:-1,
value:-1
}
},
wurong:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('h')>0;
},
filterTarget:function(card,player,target){
return target.countCards('h')>0&&target!=player;
},
content:function(){
"step 0"
if(target.countCards('h')==0||player.countCards('h')==0){
event.finish();
return;
}
"step 1"
var sendback=function(){
if(_status.event!=event){
return function(){
event.resultOL=_status.event.resultOL;
};
}
};
if(player.isOnline()){
player.wait(sendback);
event.ol=true;
player.send(function(){
game.me.chooseCard(true).set('glow_result',true).ai=function(){
return Math.random();
};
game.resume();
});
}
else{
event.localPlayer=true;
player.chooseCard(true).set('glow_result',true).ai=function(){
return Math.random();
};
}
if(target.isOnline()){
target.wait(sendback);
event.ol=true;
target.send(function(){
var rand=Math.random()<0.4;
game.me.chooseCard(true).set('glow_result',true).ai=function(card){
if(rand) return card.name=='shan'?1:0;
return card.name=='shan'?0:1;
};
game.resume();
});
}
else{
event.localTarget=true;
}
"step 2"
if(event.localPlayer){
event.card1=result.cards[0];
}
if(event.localTarget){
var rand=Math.random()<0.4;
target.chooseCard(true).set('glow_result',true).ai=function(card){
if(rand) return card.name=='shan'?1:0;
return card.name=='shan'?0:1;
};
}
"step 3"
if(event.localTarget){
event.card2=result.cards[0];
}
if(!event.resultOL&&event.ol){
game.pause();
}
"step 4"
try{
if(!event.card1) event.card1=event.resultOL[player.playerid].cards[0];
if(!event.card2) event.card2=event.resultOL[target.playerid].cards[0];
if(!event.card1||!event.card2){
throw('err');
}
}
catch(e){
console.log(e);
event.finish();
return;
}
if(event.card2.number>=10||event.card2.number<=4){
if(target.countCards('h')>2){
event.addToAI=true;
}
}
game.broadcastAll(function(card1,card2){
card1.classList.remove('glow');
card2.classList.remove('glow');
},event.card1,event.card2);
"step 5"
game.broadcastAll(function(){
ui.arena.classList.add('thrownhighlight');
});
game.addVideo('thrownhighlight1');
player.$compare(event.card1,target,event.card2);
game.delay(4);
"step 6"
game.log(player,'展示了',event.card1);
game.log(target,'展示了',event.card2);
var name1=event.card1.name;
if(player.hp==1&&name1=='shan'){
name1='sha';
}
if(name1=='sha'&&event.card2.name!='shan'){
player.discard(event.card1).set('animate',false);
target.$gain2(event.card2);
var clone=event.card1.clone;
if(clone){
clone.style.transition='all 0.5s';
clone.style.transform='scale(1.2)';
clone.delete();
game.addVideo('deletenode',player,get.cardsInfo([clone]));
}
game.broadcast(function(card){
var clone=card.clone;
if(clone){
clone.style.transition='all 0.5s';
clone.style.transform='scale(1.2)';
clone.delete();
}
},event.card1);
target.damage();
}
else if(name1!='sha'&&event.card2.name=='shan'){
player.discard(event.card1).set('animate',false);
target.$gain2(event.card2);
var clone=event.card1.clone;
if(clone){
clone.style.transition='all 0.5s';
clone.style.transform='scale(1.2)';
clone.delete();
game.addVideo('deletenode',player,get.cardsInfo([clone]));
}
game.broadcast(function(card){
var clone=card.clone;
if(clone){
clone.style.transition='all 0.5s';
clone.style.transform='scale(1.2)';
clone.delete();
}
},event.card1);
player.gainPlayerCard(target,true,'he');
}
else{
player.$gain2(event.card1);
target.$gain2(event.card2);
}
game.broadcastAll(function(){
ui.arena.classList.remove('thrownhighlight');
});
game.addVideo('thrownhighlight2');
},
ai:{
order:6,
result:{
target:-1,
}
}
},
zhanjue:{
audio:2,
enable:'phaseUse',
filterCard:true,
selectCard:-1,
filter:function(event,player){
if(!player.countCards('h')) return false;
if(player.storage.zhanjue>=2) return false;
return true;
},
viewAs:{name:'juedou'},
group:['zhanjue2','zhanjue3','zhanjue4'],
ai:{
order:1,
effect:{
player:function(card,player,target){
if(_status.event.skill=='zhanjue'){
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';
}
}
}
}
},
zhanjue2:{
audio:false,
trigger:{player:'phaseBefore'},
forced:true,
popup:false,
silent:true,
content:function(){
player.storage.zhanjue=0;
}
},
zhanjue3:{
audio:false,
trigger:{player:'damageAfter',source:'damageAfter'},
forced:true,
popup:false,
filter:function(event,player){
return event.parent.skill=='zhanjue';
},
content:function(){
player.storage.zhanjue2=trigger.player;
}
},
zhanjue4:{
audio:false,
trigger:{player:'juedouAfter'},
forced:true,
popup:false,
filter:function(event,player){
return event.skill=='zhanjue';
},
content:function(){
if(player.storage.zhanjue2==player){
player.draw(2);
player.storage.zhanjue+=2;
}
else if(player.storage.zhanjue2){
if(player.storage.zhanjue2.isAlive()){
game.asyncDraw([player,player.storage.zhanjue2]);
}
else{
player.draw();
}
player.storage.zhanjue++;
}
else{
player.draw();
player.storage.zhanjue++;
}
delete player.storage.zhanjue2;
}
},
qinwang:{
unique:true,
group:['qinwang1','qinwang2'],
zhuSkill:true
},
qinwang1:{
audio:2,
trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){
if(event.responded) return false;
if(!player.hasZhuSkill('qinwang')) return false;
if(!player.countCards('he')) return false;
if(event.filterCard({name:'sha'},player,event)==false) return false;
return game.hasPlayer(function(current){
return current!=player&&current.group=='shu';
});
},
direct:true,
content:function(){
"step 0"
var yep=false;
if(!player.storage.jijianging){
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
var nh=players[i].countCards('h');
if(players[i].group=='shu'&&ai.get.attitude(players[i],player)>1&&(nh>=4||(nh>=3&&players[i].countCards('h','sha')))){
yep=true;break;
}
}
}
var next=player.chooseToDiscard(get.prompt('qinwang'),'he');
next.set('ai',function(card){
if(_status.event.yep) return 5-ai.get.value(card);
return 0;
});
next.set('yep',yep);
next.logSkill='qinwang'
"step 1"
if(!result.bool){
event.finish();
}
"step 2"
if(event.current==undefined) event.current=player.next;
if(event.current==player){
event.finish();
}
else if(event.current.group=='shu'){
player.storage.jijianging=true;
var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张杀',{name:'sha'});
next.set('ai',function(){
var event=_status.event;
return (ai.get.attitude(event.player,event.source)-2);
});
next.set('source',player);
next.autochoose=lib.filter.autoRespondSha;
}
else{
event.current=event.current.next;
event.redo();
}
"step 3"
player.storage.jijianging=false;
if(result.bool){
event.finish();
trigger.result=result;
trigger.responded=true;
trigger.animate=false;
event.current.draw();
if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){
event.current.ai.shown+=0.3;
if(event.current.ai.shown>0.95) event.current.ai.shown=0.95;
}
}
else{
event.current=event.current.next;
event.goto(2);
}
}
},
qinwang2:{
audio:2,
enable:'chooseToUse',
filter:function(event,player){
if(event.filterCard&&!event.filterCard({name:'sha'},player,event)) return false;
if(!player.hasZhuSkill('qinwang')) return false;
if(!lib.filter.cardUsable({name:'sha'},player)) return false;
return game.hasPlayer(function(current){
return current!=player&&current.group=='shu';
});
},
filterCard:true,
position:'he',
check:function(card){
var player=_status.event.player,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
var nh=players[i].countCards('h');
if(players[i].group=='shu'&&ai.get.attitude(players[i],player)>1&&(nh>=4||(nh>=3&&players[i].countCards('h','sha')))){
return 5-ai.get.value(card);
}
}
return 0;
},
filterTarget:function(card,player,target){
if(_status.event._backup&&
typeof _status.event._backup.filterTarget=='function'&&
!_status.event._backup.filterTarget({name:'sha'},player,target)){
return false;
}
return player.canUse({name:'sha'},target);
},
content:function(){
"step 0"
if(event.current==undefined) event.current=player.next;
if(event.current==player){
player.addSkill('jijiang3');
event.getParent(2).step=0;
event.finish();
}
else if(event.current.group=='shu'){
var next=event.current.chooseToRespond('是否替'+get.translation(player)+''+get.translation(target)+'使用一张杀',
function(card){
var evt=_status.event.getParent();
return evt.player.canUse(card,evt.target)&&card.name=='sha';
});
next.set('ai',function(card){
var event=_status.event;
return ai.get.effect(event.target,card,event.source,event.player);
});
next.set('source',player);
next.set('target',target);
next.autochoose=lib.filter.autoRespondSha;
}
else{
event.current=event.current.next;
event.redo();
}
"step 1"
if(result.bool){
event.finish();
event.current.draw();
if(result.cards&&result.cards.length==1&&result.cards[0].name=='sha'){
player.useCard(result.cards[0],target).animate=false;
}
else{
player.useCard({name:'sha'},target).animate=false;
}
if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){
event.current.ai.shown+=0.3;
if(event.current.ai.shown>0.95) event.current.ai.shown=0.95;
}
}
else{
event.current=event.current.next;
event.goto(0);
}
},
ai:{
result:{
target:function(player,target){
if(player.hasSkill('jijiang3')) return 0;
return ai.get.effect(target,{name:'sha'},player,target);
}
},
order:function(){
return ai.get.order({name:'sha'})-0.1;
},
}
},
zuoding:{
trigger:{global:'useCard'},
filter:function(event,player){
return !player.hasSkill('zuoding2')&&get.suit(event.card)=='spade'&&
_status.currentPhase==event.player&&event.targets&&event.targets.length&&
event.player!=player;
},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('zuoding'),function(card,player,target){
return _status.event.getTrigger().targets.contains(target);
}).set('ai',function(target){
return ai.get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
player.logSkill('zuoding',result.targets);
result.targets[0].draw();
}
},
ai:{
expose:0.2
},
group:'zuoding3'
},
zuoding2:{},
zuoding3:{
trigger:{global:'damageEnd'},
forced:true,
popup:false,
silent:true,
content:function(){
player.addTempSkill('zuoding2','phaseAfter');
}
},
huomo:{
audio:2,
trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){
if(event.responded) return false;
if(!event.filterCard({name:'shan'})) return false;
if(player.hasSkill('huomo2')) return false;
if(event.parent.name!='sha') return false;
var hs=player.getCards('he',{color:'black'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])!='basic'){
break;
}
}
if(i==hs.length) return false;
return true;
},
direct:true,
content:function(){
"step 0"
player.chooseCard(get.prompt('huomo'),'he',function(card){
return get.type(card)!='basic'&&get.color(card)=='black';
}).set('ai',function(card){
if(!_status.event.player.countCards('h','shan')){
return 8-ai.get.value(card);
}
return 6-ai.get.value(card);
});
"step 1"
if(result.bool){
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:{name:'shan'}}
player.lose(result.cards,ui.special);
player.$throw(result.cards);
event.card=result.cards[0];
player.logSkill('huomo');
player.addTempSkill('huomo2','phaseAfter');
}
else{
event.finish();
}
'step 2'
if(player==game.me&&event.card){
game.delay();
}
'step 3'
if(event.card){
ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild);
}
},
group:['huomo_count','huomo_count2','huomo_use']
},
huomo2:{},
huomo_count:{
init:function(player){
player.storage.huomo={};
},
trigger:{global:'phaseBegin'},
forced:true,
popup:false,
silent:true,
content:function(){
player.storage.huomo={};
}
},
huomo_count2:{
trigger:{player:'useCard'},
forced:true,
popup:false,
silent:true,
content:function(){
if(!player.storage.huomo) player.storage.huomo={};
switch(trigger.card.name){
case 'sha':player.storage.huomo.sha=true;break;
case 'tao':player.storage.huomo.tao=true;break;
case 'jiu':player.storage.huomo.jiu=true;break;
}
}
},
huomo_use:{
enable:'chooseToUse',
filter:function(event,player){
if(!player.storage.huomo) player.storage.huomo={};
if((!player.storage.huomo.sha&&event.filterCard({name:'sha'},player,event))||
(!player.storage.huomo.jiu&&event.filterCard({name:'jiu'},player,event))||
(!player.storage.huomo.tao&&event.filterCard({name:'tao'},player,event))){
return player.hasCard(function(card){
return get.color(card)=='black'&&get.type(card)!='basic';
},'he');
}
return false;
},
chooseButton:{
dialog:function(event,player){
var list=[];
if(!player.storage.huomo.sha&&event.filterCard({name:'sha'},player,event)){
list.push(['基本','','sha']);
list.push(['基本','','sha','fire']);
list.push(['基本','','sha','thunder']);
}
if(!player.storage.huomo.tao&&event.filterCard({name:'tao'},player,event)){
list.push(['基本','','tao']);
}
if(!player.storage.huomo.jiu&&event.filterCard({name:'jiu'},player,event)){
list.push(['基本','','jiu']);
}
return ui.create.dialog('活墨',[list,'vcard'],'hidden');
},
check:function(button){
var player=_status.event.player;
var card={name:button.link[2],nature:button.link[3]};
if(game.hasPlayer(function(current){
return player.canUse(card,current)&&ai.get.effect(current,card,player,player)>0;
})){
switch(button.link[2]){
case 'tao':return 5;
case 'jiu':return 3.01;
case 'sha':
if(button.link[3]=='fire') return 2.95;
else if(button.link[3]=='fire') return 2.92;
else return 2.9;
}
}
return 0;
},
backup:function(links,player){
return {
filterCard:function(card){
return get.type(card)!='basic'&&get.color(card)=='black';
},
viewAs:{name:links[0][2],nature:links[0][3]},
position:'he',
popname:true,
precontent:function(){
'step 0'
var card=event.result.cards[0];
event.card=card;
player.$throw(card,1000);
game.log(player,'',card,'置于牌堆顶');
event.result.cards.length=0;
player.lose(card);
'step 1'
game.delay();
'step 2'
ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild);
},
}
},
prompt:function(links,player){
return '将一张黑色非基本牌置于牌堆顶并视为使用一张'+get.translation(links[0][3]||'')+get.translation(links[0][2]);
}
},
ai:{
order:function(){
var player=_status.event.player;
var event=_status.event;
if(!player.storage.huomo.jiu&&event.filterCard({name:'jiu'},player,event)&&ai.get.effect(player,{name:'jiu'})>0){
return 3.1;
}
return 2.9;
},
save:true,
respondSha:true,
skillTagFilter:function(player,tag,arg){
if(player.hasCard(function(card){
return get.color(card)=='black'&&get.type(card)!='basic';
},'he')){
if(!player.storage.huomo) player.storage.huomo={};
if(tag=='respondSha'){
if(arg!='use') return false;
if(player.storage.huomo.sha) return false;
}
else{
if(player.storage.huomo.tao&&player.storage.huomo.jiu) return false;
}
}
},
result:{
player:1
}
}
},
taoxi:{
audio:2,
trigger:{player:'useCardToBegin'},
filter:function(event,player){
return _status.currentPhase==player&&event.targets.length==1&&
event.target.countCards('h')>0&&!player.hasSkill('taoxi4')&&player!=event.target;
},
check:function(event,player){
return ai.get.attitude(player,event.target)<0;
},
intro:{
content:'card'
},
content:function(){
var card=trigger.target.getCards('h').randomGet();
player.showCards([card]);
player.storage.taoxi=card;
player.storage.taoxi2=trigger.target;
player.syncStorage('taoxi');
player.markSkill('taoxi');
player.addTempSkill('taoxi4','phaseAfter');
},
group:['taoxi2','taoxi3']
},
taoxi2:{
audio:false,
enable:'phaseUse',
filter:function(event,player){
if(player.storage.taoxi&&player.storage.taoxi2&&
get.owner(player.storage.taoxi)==player.storage.taoxi2&&
lib.filter.filterCard(player.storage.taoxi,player,event)){
return true;
}
return false;
},
filterTarget:function(card,player,target){
return player.canUse(player.storage.taoxi,target);
},
selectTarget:function(){
var info=get.info(_status.event.player.storage.taoxi);
if(info.notarget) return -1;
return get.select(info.selectTarget);
},
multitarget:true,
multiline:true,
content:function(){
'step 0'
var card=player.storage.taoxi;
if(!card){
event.finish();
return;
}
var owner=get.owner(card);
if(owner){
owner.lose(card,ui.special);
}
event.card=card;
player.$throw(card);
'step 1'
player.useCard(event.card,targets).animate=false;
delete player.storage.taoxi;
delete player.storage.taoxi2;
player.unmarkSkill('taoxi');
},
ai:{
order:8,
result:{
target:function(player,target){
return ai.get.effect(target,player.storage.taoxi,player,target);
},
player:1
}
}
},
taoxi3:{
trigger:{player:'phaseEnd'},
forced:true,
popup:false,
filter:function(event,player){
return player.storage.taoxi?true:false;
},
content:function(){
if(get.owner(player.storage.taoxi)==player.storage.taoxi2){
player.loseHp();
}
delete player.storage.taoxi;
delete player.storage.taoxi2;
player.unmarkSkill('taoxi');
}
},
taoxi4:{},
xingshuai:{
skillAnimation:true,
audio:2,
trigger:{player:'dying'},
priority:6,
zhuSkill:true,
filter:function(event,player){
if(player.storage.xingshuai) return false;
if(player.hp>0) return false;
if(!player.hasZhuSkill('xingshuai')) return false;
return game.hasPlayer(function(current){
return current!=player&&current.group=='wei';
});
},
init:function(player){
if(player.hasZhuSkill('xingshuai')){
player.markSkill('xingshuai');
player.storage.xingshuai=false;
}
},
intro:{
content:'limited'
},
unique:true,
content:function(){
'step 0'
player.storage.xingshuai=true;
player.awakenSkill('xingshuai');
var targets=game.filterPlayer();
targets.remove(player);
event.targets=targets;
event.damages=[];
'step 1'
if(event.targets.length){
var current=event.targets.shift();
if(current.group=='wei'){
current.chooseBool('是否令'+get.translation(player)+'回复一点体力').set('ai',function(){
return ai.get.attitude(_status.event.player,_status.event.target)>2;
}).set('target',player);
event.current=current;
}
else{
event.redo();
}
}
else{
event.goto(3);
}
'step 2'
if(result.bool){
event.damages.push(event.current);
event.current.line(player,'green');
game.log(event.current,'',player,'回复一点体力');
}
if(event.targets.length){
event.goto(1);
}
'step 3'
if(event.damages.length){
player.recover(event.damages.length);
}
'step 4'
if(event.damages.length){
event.damages.shift().damage('nosource');
event.redo();
}
}
},
mingjian:{
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player!=target;
},
filter:function(event,player){
return player.countCards('h')>0;
},
filterCard:true,
selectCard:-1,
discard:false,
lose:true,
content:function(){
player.$give(cards.length,target);
target.gain(cards,player);
target.addTempSkill('mingjian2',{player:'phaseAfter'});
},
ai:{
order:1,
result:{
target:function(player,target){
if(player.countCards('h')==1&&player.countCards('h','du')) return -1;
if(player.hp<=2&&player.countCards('h','shan')) return 0;
if(target.countCards('h')+player.countCards('h')>target.hp+2) return 0;
if(ai.get.attitude(player,target)>3) return 1;
return 0;
}
}
}
},
mingjian2:{
mark:true,
intro:{
content:'手牌上限+1出杀次数+1'
},
mod:{
maxHandcard:function(player,num){
return num+1;
},
cardUsable:function(card,player,num){
if(card.name=='sha') return num+1;
}
},
},
mingjian_old:{
audio:2,
trigger:{player:'phaseUseBefore'},
direct:true,
filter:function(event,player){
return player.countCards('h')>0;
},
content:function(){
'step 0'
var go=Math.random()<0.5;
player.chooseTarget(get.prompt('mingjian'),function(card,player,target){
return player!=target
}).ai=function(target){
var att=ai.get.attitude(player,target);
if(att>3){
if(player.countCards('h')>player.hp) return att;
if(go) return att;
}
return 0;
}
'step 1'
if(result.bool){
player.logSkill('mingjian',result.targets);
trigger.untrigger();
trigger.finish();
var target=result.targets[0];
target.addSkill('mingjian2');
var hs=player.getCards('h');
target.gain(hs,player);
player.$give(hs.length,target);
}
}
},
mingjian2_old:{
audio:false,
trigger:{global:'phaseAfter'},
forced:true,
popup:false,
content:function(){
if(lib.config.glow_phase){
if(_status.currentPhase){
_status.currentPhase.classList.remove('glow_phase');
}
player.classList.add('glow_phase');
}
game.addVideo('phaseChange',player);
_status.currentPhase=player;
player.ai.tempIgnore=[];
player.stat.push({card:{},skill:{}});
player.phaseUse();
player.removeSkill('mingjian2');
}
},
huituo:{
audio:2,
trigger:{player:'damageEnd'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('huituo')).set('ai',function(target){
var player=_status.event.player;
if(ai.get.attitude(player,target)>0){
return ai.get.recoverEffect(target,player,player)+1;
}
return 0;
});
'step 1'
if(result.bool){
player.logSkill('huituo',result.targets);
var target=result.targets[0];
event.target=target;
target.judge(function(card){
if(target.hp==target.maxHp){
if(get.color(card)=='red') return -1;
}
if(get.color(card)=='red') return 1;
return 0;
});
}
else{
event.finish();
}
'step 2'
if(result.color){
if(result.color=='red'){
if(event.target.hp<event.target.maxHp) event.target.recover();
}
else{
event.target.draw(trigger.num);
}
}
}
},
duodao:{
trigger:{player:'damageEnd'},
filter:function(event,player){
return player.countCards('he')>0&&event.source&&event.source.getEquip(1)!=undefined&&
event.card&&event.card.name=='sha';
},
direct:true,
priority:5,
audio:2,
content:function(){
'step 0'
var next=player.chooseToDiscard('he',get.prompt('duodao'));
next.logSkill=['duodao',trigger.source];
next.set('ai',function(card){
if(ai.get.attitude(_status.event.player,_status.event.getTrigger().source)<=0){
return 6-ai.get.value(card);
}
return 0;
});
'step 1'
if(result.bool){
trigger.source.$give(trigger.source.getEquip(1),player);
player.gain(trigger.source.getEquip(1),trigger.source);
}
},
},
anjian:{
audio:2,
trigger:{source:'damageBegin'},
check:function(event,player){
return ai.get.attitude(player,event.player)<=0;
},
forced:true,
filter:function(event,player){
return event.card&&event.card.name=='sha'&&get.distance(event.player,player,'attack')>1&&
event.parent.name!='_lianhuan'&&event.parent.name!='_lianhuan2';
},
content:function(){
trigger.num++;
}
},
xinpojun:{
trigger:{player:'shaBegin'},
direct:true,
filter:function(event,player){
return event.target.hp>0&&event.target.countCards('he')>0;
},
audio:2,
logTarget:'target',
content:function(){
'step 0'
player.choosePlayerCard(trigger.target,'he',
[1,Math.min(trigger.target.countCards('he'),trigger.target.hp)],get.prompt('pojun',trigger.target));
'step 1'
if(result.bool&&result.links.length){
player.logSkill('xinpojun');
if(trigger.target.storage.xinpojun2){
trigger.target.storage.xinpojun2=trigger.target.storage.xinpojun2.concat(result.links);
}
else{
trigger.target.storage.xinpojun2=result.links;
}
game.addVideo('storage',trigger.target,['xinpojun2',get.cardsInfo(trigger.target.storage.xinpojun2),'cards']);
trigger.target.addSkill('xinpojun2');
trigger.target.lose(result.links,ui.special);
}
},
ai:{
expose:0.2
}
},
xinpojun2:{
trigger:{global:'phaseEnd'},
forced:true,
audio:false,
mark:true,
intro:{
content:'cardCount'
},
content:function(){
if(player.storage.xinpojun2){
player.gain(player.storage.xinpojun2);
delete player.storage.xinpojun2;
}
player.removeSkill('xinpojun2');
},
group:'xinpojun3'
},
xinpojun3:{
trigger:{player:'dieBegin'},
forced:true,
popup:false,
content:function(){
player.$throw(player.storage.xinpojun2,1000);
for(var i=0;i<player.storage.xinpojun2.length;i++){
ui.discardPile.appendChild(player.storage.xinpojun2[i]);
}
game.log(player,'弃置了',player.storage.xinpojun2);
delete player.storage.xinpojun2;
player.removeSkill('xinpojun2');
}
},
qiaoshi:{
audio:2,
trigger:{global:'phaseEnd'},
filter:function(event,player){
return event.player!=player&&event.player.countCards('h')==player.countCards('h')&&event.player.isAlive();
},
check:function(event,player){
return ai.get.attitude(player,event.player)>=0;
},
priority:-5,
logTarget:'player',
content:function(){
game.asyncDraw([trigger.player,player]);
},
ai:{
expose:0.1
}
},
yanyu:{
audio:2,
enable:'phaseUse',
filter:function(event,player){
return player.countCards('h','sha')>0;
},
filterCard:{name:'sha'},
prepare:function(cards,player){
player.$throw(cards,1000);
},
discard:false,
delay:0.5,
content:function(){
"step 0"
player.draw();
"step 1"
for(var i=0;i<cards.length;i++){
ui.discardPile.appendChild(cards[i]);
}
},
ai:{
basic:{
order:1
},
result:{
player:1,
},
},
group:'yanyu2'
},
yanyu2:{
trigger:{player:'phaseUseEnd'},
direct:true,
filter:function(event,player){
return player.getStat().skill.yanyu>=2;
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('yanyu'),function(card,player,target){
return target.sex=='male'&&target!=player;
}).set('ai',function(target){
return ai.get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
player.logSkill('yanyu',result.targets);
result.targets[0].draw(2);
}
}
},
youdi:{
audio:true,
trigger:{player:'phaseEnd'},
direct:true,
filter:function(event,player){
return player.countCards('he')>0;
},
content:function(){
"step 0"
player.chooseTarget(get.prompt('youdi'),function(card,player,target){
return player!=target;
}).set('ai',function(target){
if(!_status.event.goon) return 0;
if(target.countCards('he')==0) return 0;
return -ai.get.attitude(_status.event.player,target);
}).set('goon',player.countCards('h','sha')<=player.countCards('h')/3);
"step 1"
if(result.bool){
game.delay();
player.logSkill('youdi',result.targets);
event.target=result.targets[0];
event.target.discardPlayerCard(player,'he',true);
}
else{
event.finish();
}
"step 2"
if(result.links[0].name!='sha'&&event.target.countCards('he')){
player.gainPlayerCard('he',event.target,true);
}
},
ai:{
expose:0.2,
threaten:1.4
}
},
fuhun:{
enable:['chooseToUse','chooseToRespond'],
filterCard:true,
selectCard:2,
position:'h',
audio:2,
derivation:['wusheng','paoxiao'],
viewAs:{name:'sha'},
prompt:'将两张手牌当杀使用或打出',
check:function(card){
if(_status.event.player.countCards('h')<4) return 6-ai.get.useful(card);
return 7-ai.get.useful(card);
},
ai:{
respondSha:true,
order:function(item,player){
if(player.hasSkill('wusheng')&&player.hasSkill('paoxiao')){
return 1;
}
if(player.countCards('h')<4){
return 1;
}
return 4;
},
},
group:'fuhun2'
},
fuhun2:{
trigger:{source:'damageAfter'},
forced:true,
filter:function(event){
return event.getParent().skill=='fuhun';
},
content:function(){
player.addTempSkill('wusheng','phaseAfter');
player.addTempSkill('paoxiao','phaseAfter');
}
},
fencheng:{
skillAnimation:'epic',
animationColor:'fire',
audio:2,
enable:'phaseUse',
filter:function(event,player){
return !player.storage.fencheng;
},
filterTarget:function(card,player,target){
return player!=target;
},
unique:true,
selectTarget:-1,
mark:true,
line:'fire',
content:function(){
"step 0"
player.storage.fencheng=true;
player.awakenSkill('fencheng');
var res=ai.get.damageEffect(target,player,target,'fire');
var num=Math.max(1,target.countCards('e'));
target.chooseToDiscard(num,'he','弃置'+get.cnNumber(num)+'张牌或受到1点火焰伤害').set('ai',function(card){
var res=_status.event.res;
var num=_status.event.num;
var player=_status.event.player;
if(res>=0) return -1;
if(num>2&&player.hp>1) return -1;
if(num>1&&player.hp>2) return -1;
if(get.position(card)=='e'){
return 10-ai.get.value(card);
}
return 6-ai.get.value(card);
}).set('res',res).set('num',num);
"step 1"
if(!result.bool){
target.damage('fire');
}
},
ai:{
order:1,
result:{
player:function(player){
var num=0,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(player!=players[i]&&ai.get.damageEffect(players[i],player,players[i],'fire')<0){
var att=ai.get.attitude(player,players[i]);
if(att>0){
num-=Math.max(1,players[i].countCards('e'));
}
else if(att<0){
num+=Math.max(1,players[i].countCards('e'));
}
}
}
if(players.length<5){
return num-1;
}
else{
return num-2;
}
}
}
},
init:function(player){
player.storage.fencheng=false;
},
intro:{
content:'limited'
}
},
mieji:{
trigger:{player:'useCardBegin'},
direct:true,
audio:2,
filter:function(event,player){
return event.targets.length==1&&get.type(event.card)=='trick'&&get.color(event.card)=='black';
},
position:'he',
content:function(){
"step 0"
player.chooseTarget(get.prompt('mieji'),function(card,player,target){
var trigger=_status.event.getTrigger();
return lib.filter.filterTarget(trigger.card,player,target)&&target!=trigger.targets[0];
}).set('ai',function(target){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
return ai.get.effect(target,trigger.card,player,player);
});
"step 1"
if(result.bool){
trigger.targets.push(result.targets[0]);
player.logSkill('mieji',result.targets);
}
}
},
junxing:{
enable:'phaseUse',
audio:2,
usable:1,
filterCard:true,
selectCard:[1,Infinity],
filter:function(event,player){
return player.countCards('h')>0;
},
check:function(card){
if(ui.selected.cards.length) return -1;
var val=ai.get.value(card);
if(get.type(card)=='basic') return 8-ai.get.value(card);
return 5-ai.get.value(card);
},
filterTarget:function(card,player,target){
return player!=target;
},
content:function(){
"step 0"
var types=[];
for(var i=0;i<cards.length;i++){
types.add(get.type(cards[i],'trick'));
}
target.chooseToDiscard(function(card){
return !_status.event.types.contains(get.type(card,'trick'));
}).set('ai',function(card){
if(_status.event.player.isTurnedOver()) return -1;
return 8-ai.get.value(card);
}).set('types',types).set('dialog',['弃置一张与'+get.translation(player)+'弃置的牌类别均不同的牌或将武将牌翻面','hidden',cards]);
"step 1"
if(!result.bool){
target.turnOver();
target.draw(cards.length);
}
},
ai:{
order:2,
expose:0.3,
threaten:1.8,
result:{
target:function(player,target){
if(target.isTurnedOver()) return 2;
return -1/(target.countCards('h')+1);
}
}
}
},
juece:{
audio:2,
trigger:{global:'loseEnd'},
check:function(event,player){
return ai.get.damageEffect(event.player,player,player)>0;
},
filter:function(event,player){
if(event.player.countCards('h')) return false;
if(_status.currentPhase!=player) return false;
if(event.player==player) return false;
for(var i=0;i<event.cards.length;i++){
if(event.cards[i].original=='h') return true;
}
return false;
},
content:function(){
player.line(trigger.player,'green');
trigger.player.damage();
},
ai:{
threaten:1.1
}
},
jiefan:{
skillAnimation:true,
audio:2,
unique:true,
mark:true,
init:function(player){
player.storage.jiefan=false;
},
enable:'phaseUse',
filter:function(event,player){
return !player.storage.jiefan;
},
intro:{
content:'limited'
},
filterTarget:true,
content:function(){
"step 0"
player.awakenSkill('jiefan');
player.storage.jiefan=true;
event.players=game.filterPlayer(function(current){
return current!=target&&get.distance(current,target,'attack')<=1;
});
event.players.sortBySeat(target);
"step 1"
if(event.players.length){
event.current=event.players.shift();
event.current.animate('target');
player.line(event.current,'green');
if(event.current.countCards('he')&&target.isAlive()){
event.current.chooseToDiscard({subtype:'equip1'},'he','弃置一张武器牌或让'+
get.translation(target)+'摸一张牌').set('ai',function(card){
if(ai.get.attitude(_status.event.player,_status.event.target)<0) return 7-ai.get.value(card);
return -1;
}).set('target',target);
event.tempbool=false;
}
else{
event.tempbool=true;
}
}
else{
event.finish();
}
"step 2"
if(event.tempbool||result.bool==false){
target.draw();
}
event.goto(1);
},
ai:{
order:5,
result:{
target:function(player,target){
if(player.hp>2){
if(game.phaseNumber<game.players.length*2) return 0;
}
var num=0,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i]!=target&&get.distance(players[i],target,'attack')<=1){
num++;
}
}
return num;
}
}
}
},
fuli:{
skillAnimation:true,
audio:2,
unique:true,
enable:'chooseToUse',
init:function(player){
player.storage.fuli=false;
},
mark:true,
filter:function(event,player){
if(event.type!='dying') return false;
if(player!=event.dying) return false;
if(player.storage.fuli) return false;
return true;
},
content:function(){
"step 0"
player.awakenSkill('fuli');
player.recover(player.maxHp);
"step 1"
player.turnOver();
player.storage.fuli=true;
},
ai:{
save:true,
result:{
player:10
},
threaten:function(player,target){
if(!target.storage.fuli) return 0.9;
}
},
intro:{
content:'limited'
}
},
qianxi:{
audio:2,
trigger:{player:'phaseBegin'},
content:function(){
"step 0"
player.draw();
player.chooseToDiscard('he',true);
"step 1"
if(!result.bool){
event.finish();
return;
}
event.color=get.color(result.cards[0]);
player.chooseTarget(function(card,player,target){
return player!=target&&get.distance(player,target)<=1;
},true).set('ai',function(target){
return -ai.get.attitude(_status.event.player,target);
});
"step 2"
if(result.bool&&result.targets.length){
result.targets[0].storage.qianxi2=event.color;
result.targets[0].addSkill('qianxi2');
player.line(result.targets,'green');
game.addVideo('storage',result.targets[0],['qianxi2',event.color]);
}
},
},
qianxi2:{
trigger:{global:'phaseAfter'},
forced:true,
mark:true,
audio:false,
content:function(){
player.removeSkill('qianxi2');
delete player.storage.qianxi2;
},
mod:{
cardEnabled:function(card,player){
if(get.color(card)==player.storage.qianxi2) return false;
},
cardUsable:function(card,player){
if(get.color(card)==player.storage.qianxi2) return false;
},
cardRespondable:function(card,player){
if(get.color(card)==player.storage.qianxi2) return false;
},
cardSavable:function(card,player){
if(get.color(card)==player.storage.qianxi2) return false;
}
},
intro:{
content:function(color){
return '不能使用或打出'+get.translation(color)+'的牌';
}
}
},
zhiman:{
audio:2,
trigger:{source:'damageBefore'},
check:function(event,player){
if(ai.get.damageEffect(event.player,player,player)<0) return true;
var att=ai.get.attitude(player,event.player);
if(att>0&&event.player.countCards('j')) return true;
if(event.num>1){
if(att<0) return false;
if(att>0) return true;
}
var cards=event.player.getCards('e');
for(var i=0;i<cards.length;i++){
if(ai.get.equipValue(cards[i])>=6) return true;
}
return false;
},
content:function(){
if(trigger.player.countCards('ej')){
player.gainPlayerCard(trigger.player,'ej',true);
}
trigger.untrigger();
trigger.finish();
}
},
sanyao:{
audio:2,
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return target.isHighestHp();
},
check:function(card){return 7-ai.get.value(card);},
position:'he',
filterCard:true,
content:function(){
target.damage();
},
ai:{
result:{
target:function(player,target){
if(target.countCards('j')&&ai.get.attitude(player,target)>0){
return 1;
}
if(target.countCards('e')){
return -1;
}
return ai.get.damageEffect(target,player);
},
},
order:7
}
},
qiaoshui:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
return player.countCards('h')>0;
},
content:function(){
"step 0"
player.chooseTarget(get.prompt('qiaoshui'),function(card,player,target){
return player!=target&&target.countCards('h')>0;
}).set('ai',function(target){
return -ai.get.attitude(_status.event.player,target)/target.countCards('h');
});
"step 1"
if(result.bool){
player.logSkill('qiaoshui',result.targets[0]);
player.chooseToCompare(result.targets[0]);
}
else{
event.finish();
}
"step 2"
if(result.bool){
player.addTempSkill('qiaoshui3','phaseAfter');
}
else{
player.addTempSkill('qiaoshui2','phaseAfter');
}
},
ai:{
expose:0.1
}
},
qiaoshui2:{
mod:{
cardEnabled:function(card){
if(get.type(card,'trick')=='trick') return false;
}
}
},
qiaoshui3:{
trigger:{player:'useCard'},
direct:true,
filter:function(event,player){
var type=get.type(event.card);
return type=='basic'||type=='trick';
},
content:function(){
'step 0'
player.removeSkill('qiaoshui3');
var goon=false;
var info=get.info(trigger.card);
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.contains(players[i])){
goon=true;break;
}
}
}
if(goon){
player.chooseTarget('巧说是否额外指定一名'+get.translation(trigger.card)+'的目标',function(card,player,target){
var trigger=_status.event.getTrigger();
if(trigger.targets.contains(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;
return ai.get.effect(target,trigger.card,player,player);
});
}
else{
if(!info.multitarget&&trigger.targets&&trigger.targets.length>1){
event.goto(3);
}
}
'step 1'
if(result.bool){
game.delay(0.5);
event.target=result.targets[0];
}
else{
event.finish();
}
'step 2'
if(event.target){
player.logSkill('qiaoshui',event.target);
trigger.targets.add(event.target);
}
event.finish();
'step 3'
player.chooseTarget('巧说是否减少一名'+get.translation(trigger.card)+'的目标',function(card,player,target){
return _status.event.getTrigger().targets.contains(target);
}).set('ai',function(target){
var trigger=_status.event.getTrigger();
return -ai.get.effect(target,trigger.card,trigger.player,_status.event.player);
});
'step 4'
if(result.bool){
event.targets=result.targets;
if(event.isMine()){
player.logSkill('qiaoshui',event.targets);
event.finish();
}
for(var i=0;i<result.targets.length;i++){
trigger.targets.remove(result.targets[i]);
}
game.delay();
}
else{
event.finish();
}
'step 5'
player.logSkill('qiaoshui',event.targets);
}
},
jyzongshi_old:{
audio:2,
trigger:{target:'useCardToBegin'},
filter:function(event,player){
if(event.targets&&event.targets.length>1) return false;
return event.card&&get.type(event.card)=='trick'&&event.player!=player;
},
frequent:true,
content:function(){
player.draw();
},
ai:{
effect:function(card,player,target){
if(get.type(card)=='trick') return [1,1];
},
}
},
shenxing:{
audio:2,
enable:'phaseUse',
position:'he',
filterCard:true,
selectCard:2,
prompt:'弃置两张牌并摸一张牌',
check:function(card){return 4-ai.get.useful(card)},
content:function(){
player.draw();
},
ai:{
order:1,
result:{
player:1
},
},
},
bingyi:{
audio:2,
trigger:{player:'phaseDiscardEnd'},
filter:function(event,player){
var cards=player.getCards('h');
if(cards.length<1) return false;
var color=get.color(cards[0]);
for(var i=1;i<cards.length;i++){
if(get.color(cards[i])!=color) return false;
}
return true;
},
direct:true,
content:function(){
"step 0"
player.chooseTarget(get.prompt('bingyi'),[1,player.countCards('h')],function(card,player,target){
return true;
}).set('ai',function(target){
return ai.get.attitude(_status.event.player,target);
});
"step 1"
if(result.bool){
player.logSkill('bingyi');
player.showHandcards(get.translation(player)+'发动了秉壹');
event.targets=result.targets;
}
else{
event.finish();
}
"step 2"
if(targets&&targets.length){
player.line(targets,'green');
game.asyncDraw(targets);
}
},
ai:{
expose:0.1,
}
},
xiantu:{
unique:true,
audio:2,
gainnable:true,
forceunique:true,
trigger:{global:'phaseUseBegin'},
filter:function(event,player){
return event.player!=player;
},
logTarget:'player',
check:function(event,player){
if(ai.get.attitude(player,event.player)<5) return false;
if(player.maxHp-player.hp>=2) return false;
if(player.hp==1) return false;
if(player.hp==2&&player.countCards('h')<2) return false;
if(event.player.countCards('h')>=event.player.hp) return false;
return true;
},
content:function(){
"step 0"
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;
});
"step 2"
trigger.player.gain(result.cards,player);
if(player==game.me||trigger.player==game.me)
player.$give(result.cards,trigger.player);
else
player.$give(2,trigger.player);
game.delay();
trigger.player.addSkill('xiantu2');
trigger.player.storage.xiantu=player;
},
ai:{
threaten:1.1,
expose:0.3
}
},
xiantu2:{
trigger:{player:'phaseUseEnd'},
forced:true,
audio:false,
content:function(){
if(player.storage.xiantu){
player.storage.xiantu.loseHp();
delete player.storage.xiantu;
}
player.removeSkill('xiantu2');
},
group:'xiantu3'
},
xiantu3:{
trigger:{source:'dieAfter'},
forced:true,
audio:false,
content:function(){
delete player.storage.xiantu;
player.removeSkill('xiantu2');
}
},
qiangzhi:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('qiangzhi'),function(card,player,target){
return target!=player&&target.countCards('h')>0;
}).set('ai',function(){
return Math.random();
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('qiangzhi',target);
var card=target.getCards('h').randomGet();
player.showCards(card);
player.storage.qiangzhi=get.type(card,'trick');
game.addVideo('storage',player,['qiangzhi',player.storage.qiangzhi]);
player.markSkill('qiangzhi');
}
},
intro:{
content:function(type){
return get.translation(type)+'';
}
},
group:['qiangzhi2','qiangzhi3'],
ai:{
order:11,
result:{
player:1
}
}
},
qiangzhi2:{
trigger:{player:'useCard'},
frequent:true,
filter:function(event,player){
// return (get.type(event.card,'trick')==player.storage.qiangzhi&&event.cards[0]&&event.cards[0]==event.card);
return get.type(event.card,'trick')==player.storage.qiangzhi;
},
content:function(){
player.draw();
},
ai:{
threaten:1.4
}
},
qiangzhi3:{
trigger:{player:'phaseUseEnd'},
forced:true,
popup:false,
silent:true,
content:function(){
delete player.storage.qiangzhi;
player.unmarkSkill('qiangzhi');
}
},
dingpin:{
enable:'phaseUse',
usable:3,
audio:2,
filter:function(event,player){
return player.countCards('h')>0;
},
filterTarget:function(card,player,target){
return target.hp<target.maxHp&&!target.tempSkills.dingpin2;
},
filterCard:true,
check:function(card){
return 6-ai.get.value(card);
},
content:function(){
"step 0"
target.judge(function(card){
return get.color(card)=='black'?1:-1;
});
"step 1"
if(result.bool){
target.draw(target.maxHp-target.hp);
target.addTempSkill('dingpin2','phaseAfter');
}
else{
player.turnOver();
}
},
ai:{
order:9,
result:{
target:function(player,target){
if(player.isTurnedOver()) return 1;
if(target.hp<target.maxHp-1) return 1;
return 0;
}
}
}
},
dingpin2:{},
faen:{
audio:2,
trigger:{global:['turnOverAfter','linkAfter']},
filter:function(event,player){
if(event.name=='link') return event.player.isLinked();
return true;
},
check:function(event,player){
return ai.get.attitude(player,event.player)>0;
},
logTarget:'player',
content:function(){
trigger.player.draw();
},
ai:{
expose:0.2
}
},
jiaojin:{
audio:2,
trigger:{player:'damageBegin'},
filter:function(event,player){
return player.countCards('he',{type:'equip'})&&event.source&&event.source.sex=='male';
},
direct:true,
content:function(){
"step 0"
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){
return 9-ai.get.value(card);
}
if(player.hp==2){
return 8-ai.get.value(card);
}
return 7-ai.get.value(card);
});
next.logSkill='jiaojin';
"step 1"
if(result.bool){
game.delay(0.5);
trigger.num--;
}
}
},
chanhui:{
audio:2,
trigger:{player:'useCard'},
filter:function(event,player){
if(_status.currentPhase!=player) return false;
if(player.hasSkill('chanhui2')) return false;
if(event.targets.length>1) return false;
var card=event.card;
if(card.name=='sha') return true;
if(get.color(card)=='black'&&get.type(card)=='trick') return true;
return false;
},
direct:true,
content:function(){
"step 0"
player.chooseTarget(get.prompt('chanhui'),function(card,player,target){
if(player==target) return false;
var trigger=_status.event.getTrigger();
return player.canUse(trigger.card,target)&&trigger.targets.contains(target)==false;
}).set('ai',function(target){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
return ai.get.effect(target,trigger.card,player,player)+1;
});
"step 1"
if(result.bool){
game.delay(0,200);
event.target=result.targets[0];
}
else{
event.finish();
}
"step 2"
game.delay();
player.addSkill('chanhui2');
player.logSkill('chanhui',event.target);
event.target.chooseCard('交给'+get.translation(player)+'一张手牌或成为'+
get.translation(trigger.card)+'的额外目标').set('ai',function(card){
return 5-ai.get.value(card);
});
"step 3"
if(result.bool){
player.gain(result.cards,event.target);
event.target.$give(1,player);
game.delay();
trigger.untrigger();
trigger.player=event.target;
trigger.trigger('useCard');
game.log(event.target,'成为了',trigger.card,'的使用者');
}
else{
game.log(event.target,'成为了',trigger.card,'的额外目标');
trigger.targets.push(event.target);
}
}
},
chanhui2:{
trigger:{player:'phaseEnd'},
forced:true,
popup:false,
audio:false,
content:function(){
player.removeSkill('chanhui2');
}
},
quanji:{
audio:2,
trigger:{player:'damageEnd'},
frequent:true,
locked:false,
init:function(player){
player.storage.quanji=[];
},
filter:function(event){
return event.num>0;
},
content:function(){
"step 0"
player.draw(trigger.num);
"step 1"
if(player.countCards('he')){
player.chooseCard(''+get.cnNumber(trigger.num)+'张手牌置于武将牌上作为',trigger.num,true);
}
else{
event.finish();
}
"step 2"
if(result.cards&&result.cards.length){
player.lose(result.cards,ui.special);
player.storage.quanji=player.storage.quanji.concat(result.cards);
player.syncStorage('quanji');
player.markSkill('quanji');
game.log(player,'',result.cards,'置于武将牌上作为');
}
},
intro:{
content:'cards'
},
mod:{
maxHandcard:function(player,num){
return num+player.storage.quanji.length;
}
},
ai:{
maixie:true,
maixie_hp:true,
threaten:0.8,
effect:{
target:function(card,player,target){
if(get.tag(card,'damage')){
if(player.hasSkillTag('jueqing')) 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.hp==3) return [0.5,get.tag(card,'damage')*1.5];
if(target.hp==2) return [1,get.tag(card,'damage')*0.5];
}
}
}
}
},
zili:{
skillAnimation:true,
audio:3,
unique:true,
trigger:{player:'phaseBegin'},
forced:true,
filter:function(event,player){
return !player.hasSkill('paiyi')&&player.storage.quanji&&player.storage.quanji.length>=3;
},
content:function(){
"step 0"
player.chooseDrawRecover(2,true,function(event,player){
if(player.hp==1&&player.isDamaged()) return 'recover_hp';
return 'draw_card';
});
"step 1"
player.loseMaxHp();
player.addSkill('paiyi');
player.awakenSkill('zili');
}
},
paiyi:{
enable:'phaseUse',
usable:1,
audio:2,
filterTarget:true,
filter:function(event,player){
return player.storage.quanji.length>0;
},
content:function(){
"step 0"
player.chooseCardButton(player.storage.quanji,true);
"step 1"
var card=result.links[0];
player.discard(card);
player.storage.quanji.remove(card);
if(!player.storage.quanji.length){
player.unmarkSkill('quanji');
}
else{
player.markSkill('quanji');
}
player.syncStorage('quanji');
"step 2"
target.draw(2);
"step 3"
if(target.countCards('h')>player.countCards('h')){
target.damage();
}
},
ai:{
order:1,
result:{
target:function(player,target){
if(player!=target) return 0;
if(player.countCards('h')+2<=player.hp+player.storage.quanji.length) return 1;
return 0;
}
}
}
},
xianzhou:{
skillAnimation:true,
audio:2,
unique:true,
enable:'phaseUse',
filter:function(event,player){
return !player.storage.xianzhou&&player.countCards('e')>0;
},
init:function(player){
player.storage.xianzhou=false;
},
filterTarget:function(card,player,target){
return player!=target;
},
mark:true,
content:function(){
"step 0"
player.awakenSkill('xianzhou');
var cards=player.getCards('e');
target.gain(cards,player);
event.num=cards.length;
player.$give(cards,target);
player.storage.xianzhou=true;
game.delay();
"step 1"
target.chooseTarget([1,event.num],''+get.translation(player)+'回复'+
event.num+'点体力或对攻击范围内的'+event.num+'名角色造成一点伤害',function(card,player,target2){
return get.distance(_status.event.player,target2,'attack')<=1;
}).set('ai',function(target2){
var target=_status.event.player;
var player=_status.event.getParent().player;
if(ai.get.attitude(target,player)>0){
if(player.hp+event.num<=player.maxHp||player.hp==1) return -1;
}
return ai.get.damageEffect(target2,target,target);
});
"step 2"
if(result.bool){
target.line(result.targets,'green');
event.targets=result.targets;
event.num2=0;
}
else{
player.recover(event.num);
event.finish();
}
"step 3"
if(event.num2<event.targets.length){
event.targets[event.num2].damage(target);
event.num2++;
event.redo();
}
},
intro:{
content:'limited'
},
ai:{
order:1,
result:{
target:1,
player:function(player){
var bool=true,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i]!=player&&ai.get.attitude(player,players[i])>2&&ai.get.attitude(players[i],player)>2){
bool=false;break;
}
}
if(bool) return -10;
if(player.hp==1) return 1;
if(game.phaseNumber<game.players.length) return -10;
if(player.countCards('e')+player.hp<=player.maxHp) return 1;
return -10;
}
},
}
},
qieting:{
audio:2,
global:'qieting2',
globalSilent:true,
trigger:{global:'phaseEnd'},
filter:function(event,player){
return event.player!=player&&!event.player.tempSkills.qieting3&&event.player.isAlive();
},
direct:true,
content:function(){
"step 0"
var next;
if(trigger.player.hasCard(function(card){
return !player.getEquip(card);
},'e')){
next=player.chooseControl('移动装备','draw_card','cancel2',function(event,player){
var source=_status.event.source;
var att=ai.get.attitude(player,source);
if(source.hasSkillTag('noe')){
if(att>0){
return '移动装备';
}
}
else{
if(att<=0){
return '移动装备';
}
}
return 'draw_card';
}).set('source',trigger.player);
}
else{
next=player.chooseControl('draw_card','cancel2',function(){
return 'draw_card';
});
}
next.set('prompt',get.prompt('qieting',trigger.player));
"step 1"
if(result.control=='移动装备'){
player.logSkill('qieting',trigger.player);
player.choosePlayerCard(trigger.player,'e','将一张装备牌移至你的装备区');
}
else{
if(result.control=='draw_card'){
player.logSkill('qieting');
player.draw();
}
event.finish();
}
"step 2"
if(result&&result.links&&result.links.length){
game.delay(2);
trigger.player.$give(result.links[0],player);
player.equip(result.links[0]);
}
},
ai:{
expose:0.1
}
},
qieting2:{
trigger:{player:'useCard'},
filter:function(event,player){
return _status.currentPhase==player&&event.targets&&(event.targets.length>1||event.targets[0]!=player);
},
forced:true,
popup:false,
content:function(){
player.addTempSkill('qieting3','phaseAfter');
}
},
qieting3:{},
zhuikong:{
audio:2,
trigger:{global:'phaseBegin'},
check:function(event,player){
if(ai.get.attitude(player,event.player)<-2){
var cards=player.getCards('h');
if(cards.length>player.hp) return true;
for(var i=0;i<cards.length;i++){
var useful=ai.get.useful(cards[i]);
if(useful<5) return true;
if(cards[i].number>9&&useful<7) return true;
}
}
return false;
},
logTarget:'player',
filter:function(event,player){
return player.hp<player.maxHp&&event.player!=player&&
player.countCards('h')>0&&event.player.countCards('h')>0;
},
content:function(){
"step 0"
player.chooseToCompare(trigger.player);
"step 1"
if(result.bool){
trigger.player.addTempSkill('zishou2','phaseAfter');
}
},
},
qiuyuan:{
audio:2,
trigger:{target:'shaBefore'},
direct:true,
priority:11,
content:function(){
"step 0"
player.chooseTarget(get.prompt('qiuyuan'),function(card,player,target){
return target!=player&&_status.event.getTrigger().player.canUse('sha',target,false);
}).set('ai',function(target){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
return ai.get.effect(target,trigger.card,trigger.player,player)+0.1;
});
"step 1"
if(result.bool){
var target=result.targets[0];
player.logSkill('qiuyuan',target);
event.target=target;
target.chooseCard({name:'shan'},'交给'+get.translation(player)+
'一张闪或成为此杀的额外目标').set('ai',function(card){
return ai.get.attitude(target,_status.event.source)>=0?1:-1;
}).set('source',player);
game.delay();
}
else{
event.finish();
}
"step 2"
if(result.bool){
player.gain(result.cards,event.target);
event.target.$give(result.cards,player);
game.delay();
}
else{
trigger.targets.push(event.target);
game.log(event.target,'成为了额外目标');
}
},
ai:{
expose:0.2,
effect:{
target:function(card,player,target){
if(card.name!='sha') return;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
var target2=players[i];
if(player!=target2&&target!=target2&&player.canUse(card,target2,false)&&
ai.get.effect(target2,{name:'shacopy',nature:card.nature,suit:card.suit},player,target)<0){
if(target.hp==target.maxHp) return [0,1];
return [0,0];
}
}
}
}
}
},
gongji:{
enable:'phaseUse',
usable:1,
audio:2,
position:'he',
filterCard:true,
check:function(card){
if(get.type(card)!='equip') return 0;
var player=_status.currentPhase;
if(player.countCards('he',{subtype:get.subtype(card)})>1){
return 11-ai.get.equipValue(card);
}
return 6-ai.get.equipValue(card);
},
content:function(){
"step 0"
player.addTempSkill('gongji2','phaseAfter');
"step 1"
if(get.type(cards[0])=='equip'){
player.chooseTarget('是否弃置一名角色的一张牌',function(card,player,target){
return player!=target&&target.countCards('he')>0;
}).set('ai',function(target){
var player=_status.event.player;
if(ai.get.attitude(player,target)<0){
return Math.max(0.5,ai.get.effect(target,{name:'sha'},player,player));
}
return 0;
});
}
else{
event.finish();
}
"step 2"
if(result.bool){
player.line(result.targets,'green');
event.target=result.targets[0];
player.discardPlayerCard(event.target,'he',true).ai=ai.get.buttonValue;
}
},
ai:{
order:9,
result:{
player:1
}
}
},
gongji2:{
mod:{
attackFrom:function(){
return -Infinity;
},
},
},
zhuiyi:{
audio:2,
trigger:{player:'dieBegin'},
direct:true,
content:function(){
"step 0"
player.chooseTarget(get.prompt('zhuiyi'),function(card,player,target){
return player!=target&&_status.event.source!=target;
}).set('ai',function(target){
var num=ai.get.attitude(_status.event.player,target);
if(num>0){
if(target.hp==1){
num+=2;
}
if(target.hp<target.maxHp){
num+=2;
}
}
return num;
}).set('source',trigger.source);
"step 1"
if(result.bool){
var target=result.targets[0];
player.logSkill('zhuiyi',target);
target.recover();
target.draw(3);
}
},
ai:{
expose:0.5,
}
},
anxu:{
enable:'phaseUse',
usable:1,
multitarget:true,
audio:2,
filterTarget:function(card,player,target){
if(player==target) return false;
var num=target.countCards('h');
if(ui.selected.targets.length){
return num<ui.selected.targets[0].countCards('h');
}
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(num>players[i].countCards('h')) return true;
}
return false;
},
selectTarget:2,
content:function(){
'step 0'
var gainner,giver;
if(targets[0].countCards('h')<targets[1].countCards('h')){
gainner=targets[0];
giver=targets[1];
}
else{
gainner=targets[1];
giver=targets[0];
}
giver.chooseCard('选择一张手牌交给'+get.translation(gainner),true);
event.gainner=gainner;
event.giver=giver;
'step 1'
var card=result.cards[0];
event.gainner.gain(card,event.giver);
event.giver.$give(1,event.gainner);
'step 2'
if(event.gainner.countCards('h')==event.giver.countCards('h')){
player.chooseDrawRecover(true);
}
},
ai:{
order:10.5,
threaten:2,
result:{
target:function(player,target){
var num=target.countCards('h');
var att=ai.get.attitude(player,target);
if(ui.selected.targets.length==0){
if(att>0) return -1;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
var num2=players[i].countCards('h');
var att2=ai.get.attitude(player,players[i]);
if(att2>=0&&num2<num) return -1;
}
return 0;
}
else{
return 1;
}
},
player:0.1
}
}
},
mingce:{
enable:'phaseUse',
usable:1,
audio:2,
position:'he',
filterCard:function(card){
return card.name=='sha'||get.type(card)=='equip';
},
filter:function(event,player){
return player.countCards('h','sha')>0||player.countCards('he',{type:'equip'})>0;
},
check:function(card){return 8-ai.get.value(card)},
selectTarget:2,
multitarget:true,
discard:false,
targetprompt:['得到牌','出杀目标'],
prepare:'give',
filterTarget:function(card,player,target){
if(ui.selected.targets.length==0){
return player!=target;
}
else{
return lib.filter.filterTarget({name:'sha'},ui.selected.targets[0],target);
}
},
content:function(){
"step 0"
targets[0].gain(cards,player);
"step 1"
targets[0].chooseControl('draw_card','出杀',function(){
var player=_status.event.player;
var target=_status.event.target;
if(ai.get.effect(_status.event.target,{name:'sha'},player,player)>0){
return 1;
}
return 0;
}).set('target',targets[1]).set('prompt',''+get.translation(targets[1])+'使用一张杀或摸一张牌');
"step 2"
if(result.control=='draw_card'){
targets[0].draw();
}
else{
targets[0].useCard({name:'sha'},targets[1]);
}
},
ai:{
result:{
player:function(player){
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i]!=player&&ai.get.attitude(player,players[i])>1&&ai.get.attitude(players[i],player)>1){
return 1;
}
}
return 0;
},
target:function(player,target){
if(ui.selected.targets.length){
return -0.1;
}
return 1;
}
},
order:8.5,
expose:0.2
}
},
xinxuanhuo:{
audio:2,
trigger:{player:'phaseDrawBegin'},
direct:true,
content:function(){
"step 0"
player.chooseTarget(get.prompt('xinxuanhuo'),function(card,player,target){
return player!=target;
}).set('ai',function(target){
var att=ai.get.attitude(_status.event.player,target);
if(att>0){
if(target.countCards('h')<target.hp) att+=2;
return att-target.countCards('h')/3;
}
else{
return -1;
}
});
"step 1"
if(result.bool){
trigger.untrigger();
trigger.finish();
player.logSkill('xinxuanhuo',result.targets);
event.target=result.targets[0];
event.target.draw(2);
player.chooseTarget('选择出杀的目标',true,function(card,player,target){
return _status.event.target.canUse('sha',target)&&player!=target;
}).set('ai',function(target){
return ai.get.effect(target,{name:'sha'},_status.event.target,_status.event.player);
}).set('target',event.target);
}
else{
event.finish();
}
"step 2"
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);
}
else{
event.bool=true;
}
"step 3"
if(event.bool||result.bool==false){
player.gainPlayerCard('he',event.target,Math.min(2,event.target.countCards('he')),true);
}
},
ai:{
expose:0.2
}
},
zhichi:{
audio:2,
trigger:{player:'damageEnd'},
forced:true,
filter:function(event,player){
return _status.currentPhase!=player;
},
content:function(){
player.addTempSkill('zhichi2',['phaseAfter','phaseBefore']);
}
},
zhichi2:{
trigger:{target:'useCardToBefore'},
forced:true,
priority:15,
filter:function(event,player){
return get.type(event.card)=='trick'||event.card.name=='sha';
},
content:function(){
game.log(player,'发动了智迟',trigger.card,'',trigger.target,'失效')
trigger.untrigger();
trigger.finish();
},
mark:true,
intro:{
content:'杀或普通锦囊牌对你无效'
},
ai:{
effect:{
target:function(card,player,target,current){
if(get.type(card)=='trick'||card.name=='sha') return [0,0,0,0];
}
}
}
},
zongxuan:{
audio:2,
trigger:{player:'discardAfter'},
filter:function(event,player){
for(var i=0;i<event.cards.length;i++){
if(get.position(event.cards[i])=='d'){
return true;
}
}
return false;
},
frequent:true,
popup:false,
content:function(){
"step 0"
var cards=[];
for(var i=0;i<trigger.cards.length;i++){
if(get.position(trigger.cards[i])=='d'){
cards.push(trigger.cards[i]);
}
}
player.chooseCardButton(cards,[1,cards.length],'纵玄将弃置的牌按任意顺序置于牌堆顶先选择的在上').set('ai',function(){
return -1;
});
"step 1"
if(result&&result.bool&&result.links&&result.links.length){
var cards=result.links.slice(0);
while(cards.length){
ui.cardPile.insertBefore(cards.pop(),ui.cardPile.firstChild);
}
player.logSkill('zongxuan');
}
},
},
zhiyan:{
audio:2,
trigger:{player:'phaseEnd'},
direct:true,
content:function(){
"step 0"
player.chooseTarget(get.prompt('zhiyan')).set('ai',function(target){
return ai.get.attitude(_status.event.player,target);
});
"step 1"
if(result.bool){
event.target=result.targets[0];
player.logSkill('zhiyan',result.targets);
}
else{
event.finish();
}
"step 2"
var cards=get.cards();
var card=cards[0];
switch(get.type(card,'trick')){
case 'basic':event.effect='';break;
case 'trick':event.effect='';break;
case 'equip':event.effect='recover';break;
}
if(get.type(card)=='equip'){
event.target.equip(card);
event.target.$draw(card);
game.delay();
}
else{
event.target.gain(cards,'gain2','log');
}
"step 3"
switch(event.effect){
case 'recover':event.target.recover();break;
}
},
ai:{
expose:0.2,
threaten:1.2
}
},
miji:{
audio:2,
trigger:{player:'phaseEnd'},
filter:function(event,player){
return player.hp<player.maxHp;
},
content:function(){
"step 0"
event.num=player.maxHp-player.hp;
player.draw(event.num);
"step 1"
var check=player.countCards('h')-event.num;
player.chooseCardTarget({
selectCard:event.num,
filterTarget:function(card,player,target){
return player!=target;
},
ai1:function(card){
var player=_status.event.player;
if(player.maxHp-player.hp==1&&card.name=='du') return 30;
var check=_status.event.check;
if(check<1) return 0;
if(player.hp>1&&check<2) return 0;
return ai.get.unuseful(card)+9;
},
ai2:function(target){
var att=ai.get.attitude(_status.event.player,target);
if(ui.selected.cards.length==1&&ui.selected.cards[0].name=='du') return 1-att;
return att-2;
},
prompt:''+get.cnNumber(event.num)+'张手牌交给一名其他角色',
}).set('check',check);
"step 2"
if(result.bool){
result.targets[0].gain(result.cards,event.player);
event.player.$give(result.cards.length,result.targets[0]);
player.line(result.targets,'green');
}
},
ai:{
threaten:function(player,target){
if(target.hp==1) return 3;
if(target.hp==2) return 1.5;
return 0.5;
},
effect:{
target:function(card,player,target){
if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0];
}
}
}
},
zhenlie:{
audio:2,
filter:function(event,player){
return event.player!=player&&event.card&&(event.card.name=='sha'||get.type(event.card)=='trick');
},
logTarget:'player',
check:function(event,player){
if(ai.get.attitude(player,event.player)>0){
return false;
}
if(get.tag(event.card,'respondSha')){
if(player.countCards('h',{name:'sha'})==0){
return true;
}
}
else if(get.tag(event.card,'respondShan')){
if(player.countCards('h',{name:'shan'})==0){
return true;
}
}
else if(get.tag(event.card,'damage')){
if(player.countCards('h')<2) return true;
}
else if(event.card.name=='shunshou'&&player.hp>2){
return true;
}
return false;
},
priority:10,
trigger:{target:'useCardToBefore'},
content:function(){
"step 0"
player.loseHp();
"step 1"
trigger.untrigger();
trigger.finish();
"step 2"
if(trigger.player.countCards('he')){
player.discardPlayerCard(trigger.player,'he',true);
}
},
ai:{
expose:0.3
}
},
wuyan:{
audio:2,
trigger:{target:'useCardToBefore',player:'useCardToBefore'},
forced:true,
priority:15,
check:function(event,player){
return ai.get.effect(event.target,event.card,event.player,player)<0;
},
filter:function(event,player){
if(!event.target) return false;
if(event.player==player&&event.target==player) return false;
return (get.type(event.card)=='trick');
},
content:function(){
trigger.untrigger();
trigger.finish();
},
ai:{
effect:{
target:function(card,player,target,current){
if(get.type(card)=='trick'&&player!=target) return 'zeroplayertarget';
},
player:function(card,player,target,current){
if(get.type(card)=='trick'&&player!=target) return 'zeroplayertarget';
}
}
}
},
xinwuyan:{
audio:2,
trigger:{source:'damageBefore',player:'damageBefore'},
forced:true,
priority:15,
check:function(event,player){
if(player==event.player) return true;
return false;
},
filter:function(event,player){
return get.type(event.card,'trick')=='trick';
},
content:function(){
trigger.untrigger();
trigger.finish();
},
ai:{
notrick:true,
notricksource:true,
effect:{
target:function(card,player,target,current){
if(get.type(card)=='trick'&&get.tag(card,'damage')){
return 'zeroplayertarget';
}
},
player:function(card,player,target,current){
if(get.type(card)=='trick'&&get.tag(card,'damage')){
return 'zeroplayertarget';
}
}
}
}
},
xinjujian:{
trigger:{player:'phaseEnd'},
direct:true,
audio:2,
filter:function(event,player){
return player.countCards('he')>player.countCards('he',{type:'basic'});
},
content:function(){
"step 0"
player.chooseCardTarget({
filterTarget:function(card,player,target){
return player!=target;
},
filterCard:function(card,player){
return get.type(card)!='basic'&&lib.filter.cardDiscardable(card,player);
},
ai1:function(card){
if(get.tag(card,'damage')&&get.type(card)=='trick'){
return 20;
}
return 9-ai.get.value(card);
},
ai2:function(target){
var att=ai.get.attitude(_status.event.player,target);
if(att>0){
if(target.isTurnedOver()) att+=3;
if(target.hp==1) att+=3;
}
return att;
},
position:'he',
prompt:get.prompt('xinjujian')
});
"step 1"
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('xinjujian',target);
player.discard(result.cards);
if(target.hp==target.maxHp&&
!target.isTurnedOver()&&
!target.isLinked()){
target.draw(2);
event.finish();
}
else{
var controls=['draw_card'];
if(target.hp<target.maxHp){
controls.push('recover_hp');
}
if(target.isLinked()|target.isTurnedOver()){
controls.push('reset_character');
}
target.chooseControl(controls).ai=function(){
if(target.isTurnedOver()){
return 'reset_character';
}
else if(target.hp==1&&target.maxHp>2){
return 'recover_hp';
}
else if(target.hp==2&&target.maxHp>2&&target.countCards('h')>1){
return 'recover_hp';
}
else{
return 'draw_card';
}
}
}
}
else{
event.finish();
}
"step 2"
event.control=result.control;
switch(event.control){
case 'recover_hp':event.target.recover();event.finish();break;
case 'draw_card':event.target.draw(2);event.finish();break;
case 'reset_character':if(event.target.isTurnedOver()) event.target.turnOver();break;
}
"step 3"
if(event.control=='reset_character'&&event.target.isLinked()){
event.target.link();
}
},
ai:{
expose:0.2,
threaten:1.4
}
},
jujian:{
enable:'phaseUse',
usable:1,
audio:2,
filterCard:true,
position:'he',
selectCard:[1,3],
check:function(card){
var player=get.owner(card);
if(get.type(card)=='trick') return 10;
if(player.countCards('h')-player.hp-ui.selected.cards.length>0){
return 8-ai.get.value(card);
}
return 4-ai.get.value(card);
},
filterTarget:function(card,player,target){
return player!=target;
},
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')){
player.recover();
}
}
},
ai:{
expose:0.2,
order:1,
result:{
target:1
}
}
},
yizhong:{
trigger:{target:'shaBefore'},
forced:true,
audio:2,
filter:function(event,player){
if(player.getEquip(2)) return false;
return (event.card.name=='sha'&&get.color(event.card)=='black')
},
content:function(){
trigger.untrigger();
trigger.finish();
},
ai:{
effect:{
target:function(card,player,target){
if(player==target&&get.subtype(card)=='equip2'){
if(ai.get.equipValue(card)<=8) return 0;
}
if(target.getEquip(2)) return;
if(card.name=='sha'&&get.color(card)=='black') return 'zerotarget';
}
}
}
},
jueqing:{
trigger:{source:'damageBefore'},
forced:true,
audio:2,
priority:16,
check:function(){return false;},
content:function(){
trigger.untrigger();
trigger.finish();
var ex=0;
if(trigger.card&&trigger.card.name=='sha'){
if(player.hasSkill('jiu')) ex++;
if(player.hasSkill('luoyi2')) ex++;
if(player.hasSkill('reluoyi2')) ex++;
}
trigger.player.loseHp(trigger.num+ex);
},
ai:{
jueqing:true
}
},
shangshi:{
audio:2,
trigger:{player:['loseEnd','changeHp']},
forced:true,
filter:function(event,player){
return (player.countCards('h')<Math.min(3,player.maxHp-player.hp));
},
content:function(){
player.draw(Math.min(3,player.maxHp-player.hp)-player.countCards('h'));
},
ai:{
noh:true,
skillTagFilter:function(player,tag){
if(tag=='noh'&&player.maxHp-player.hp<player.countCards('h')){
return false;
}
}
}
},
luoying:{
unique:true,
gainable:true,
group:['luoying1','luoying2'],
},
luoying1:{
audio:2,
trigger:{global:'discardAfter'},
filter:function(event,player){
if(event.player==player) return false;
for(var i=0;i<event.cards.length;i++){
if(get.suit(event.cards[i])=='club'&&get.position(event.cards[i])=='d'){
return true;
}
}
return false;
},
frequent:'check',
check:function(event,player){
for(var i=0;i<event.cards.length;i++){
if(get.suit(event.cards[i])=='club'&&get.position(event.cards[i])=='d'){
if(event.cards[i].name=='du') return false;
}
}
return true;
},
content:function(){
"step 0"
if(trigger.delay==false) game.delay();
"step 1"
var cards=[];
for(var i=0;i<trigger.cards.length;i++){
if(get.suit(trigger.cards[i])=='club'&&get.position(trigger.cards[i])=='d'){
cards.push(trigger.cards[i]);
}
}
if(cards.length){
player.gain(cards,'log');
player.$gain2(cards);
}
},
},
luoying2:{
audio:2,
trigger:{global:'judgeAfter'},
frequent:'check',
check:function(event,player){
return event.result.card.name!='du';
},
filter:function(event,player){
if(event.player==player) return false;
if(event.result.card.parentNode.id!='discardPile') return false;
return (get.suit(event.result.card)=='club');
},
content:function(){
player.gain(trigger.result.card,'log');
player.$gain2(trigger.result.card);
}
},
jiushi:{
group:['jiushi1','jiushi2','jiushi3'],
},
jiushi1:{
audio:2,
enable:'chooseToUse',
filter:function(event,player){
if(player.classList.contains('turnedover')) return false;
if(event.parent.name=='phaseUse'){
return lib.filter.filterCard({name:'jiu'},player,event);
}
if(event.type!='dying') return false;
if(player!=event.dying) return false;
return true;
},
content:function(){
if(_status.event.getParent(2).type=='dying'){
event.dying=player;
}
player.turnOver();
player.useCard({name:'jiu'},player);
},
ai:{
save:true,
skillTagFilter:function(player){
return player.hp<=0&&!player.isTurnedOver();
},
order:5,
result:{
player:function(player){
if(_status.event.parent.name=='phaseUse'){
if(player.countCards('h','jiu')>0) return 0;
if(player.getEquip('zhuge')&&player.countCards('h','sha')>1) return 0;
if(!player.countCards('h','sha')) return 0;
var targets=[];
var target;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(ai.get.attitude(player,players[i])<0){
if(player.canUse('sha',players[i],true,true)){
targets.push(players[i]);
}
}
}
if(targets.length){
target=targets[0];
}
else{
return 0;
}
var num=ai.get.effect(target,{name:'sha'},player,player);
for(var i=1;i<targets.length;i++){
var num2=ai.get.effect(targets[i],{name:'sha'},player,player);
if(num2>num){
target=targets[i];
num=num2;
}
}
if(num<=0) return 0;
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(e2.name=='renwang'){
if(!player.countCards('h',{name:'sha',color:'red'})) return 0;
}
if(e2.name=='baiyin') return 0;
}
if(player.getEquip('guanshi')&&player.countCards('he')>2) return 1;
return target.countCards('h')>3?0:1;
}
if(player==_status.event.dying||player.isTurnedOver()) return 3;
}
},
effect:{
target:function(card,player,target){
if(card.name=='guiyoujie') return [0,0.5];
if(target.isTurnedOver()){
if(get.tag(card,'damage')){
if(player.hasSkillTag('jueqing')) return [1,-2];
if(target.hp==1) return;
return [1,target.countCards('h')/2];
}
}
}
}
},
},
jiushi2:{
trigger:{player:'damageBegin'},
forced:true,
popup:false,
silent:true,
filter:function(event,player){
return player.classList.contains('turnedover');
},
content:function(){
player.storage.jiushi=true;
}
},
jiushi3:{
audio:2,
trigger:{player:'damageAfter'},
check:function(event,player){
return player.isTurnedOver();
},
filter:function(event,player){
if(player.storage.jiushi){
return true;
}
return false;
},
content:function(){
player.storage.jiushi=false;
player.turnOver();
}
},
zongshi:{
mod:{
maxHandcard:function(player,num){
var list=['wei','shu','wu','qun'];
var num2=game.countPlayer(function(current){
if(list.contains(current.group)){
list.remove(current.group);
return true;
}
});
return num+num2;
}
}
},
zishou:{
audio:2,
trigger:{player:'phaseDrawBegin'},
check:function(event,player){
return player.countCards('h')<=player.maxHp||player.skipList.contains('phaseUse');
},
content:function(){
var list=['wei','shu','wu','qun'];
var num=game.countPlayer(function(current){
if(list.contains(current.group)){
list.remove(current.group);
return true;
}
});
trigger.num+=num;
player.addTempSkill('zishou2','phaseAfter');
},
ai:{
threaten:1.5
}
},
zishou2:{
mod:{
playerEnabled:function(card,player,target){
if(player!=target) return false;
}
}
},
yaowu:{
trigger:{player:'damageEnd'},
priority:1,
audio:2,
filter:function(event){
if(event.card&&(event.card.name=='sha')){
if(get.color(event.card)=='red') return true;
}
return false;
},
forced:true,
check:function(){
return false;
},
content:function(){
trigger.source.chooseDrawRecover(true);
},
ai:{
effect:{
target:function(card,player,target,current){
if(card.name=='sha'&&(get.color(card)=='red')){
return [1,-2];
}
}
}
}
},
olddanshou:{
trigger:{source:'damageEnd'},
priority:9,
check:function(event,player){
return ai.get.attitude(player,event.player)<=0;
},
content:function(){
"step 0"
player.draw();
"step 1"
while(_status.event.name!='phase'){
_status.event=_status.event.parent;
}
_status.event.finish();
_status.event.untrigger(true);
}
},
danshou:{
enable:'phaseUse',
filterCard:true,
position:'he',
audio:2,
filter:function(event,player){
var num=player.getStat().skill.danshou;
if(num){
num++;
}
else{
num=1;
}
return player.countCards('he')>=num;
},
check:function(card){
return 6-ai.get.value(card);
},
selectCard:function(card){
var num=_status.event.player.getStat().skill.danshou;
if(num) return num+1;
return 1;
},
filterTarget:function(card,player,target){
if(player==target) return false;
var num=player.getStat().skill.danshou;
if(num){
num++;
}
else{
num=1;
}
if(num<=2&&!target.countCards('he')) return false;
return get.distance(player,target,'attack')<=1;
},
content:function(){
'step 0'
var num=player.getStat().skill.danshou;
switch(num){
case 1:player.discardPlayerCard(target,true);break;
case 2:target.chooseCard('选择一张牌交给'+get.translation(player),'he',true);break;
case 3:target.damage();break;
default:game.asyncDraw([player,target],2);
}
if(num!=2) event.finish();
'step 1'
if(result.cards){
player.gain(result.cards,target);
target.$give(result.cards.length,player);
}
},
ai:{
order:8.6,
result:{
target:function(player,target){
var num=player.getStat().skill.danshou;
if(num){
num++;
}
else{
num=1;
}
if(num>3) return 0;
if(num==3) return ai.get.damageEffect(target,player,target);
return -1;
}
}
}
},
qice:{
enable:'phaseUse',
usable:1,
audio:2,
filter:function(event,player){
return player.countCards('h')>0
},
chooseButton:{
dialog:function(){
var list=['taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman'];
for(var i=0;i<list.length;i++){
list[i]=['锦囊','',list[i]];
}
return ui.create.dialog([list,'vcard']);
},
filter:function(button,player){
return lib.filter.filterCard({name:button.link[2]},player,_status.event.getParent());
},
check:function(button){
var player=_status.event.player;
var recover=0,lose=1,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(!players[i].isOut()){
if(players[i].hp<players[i].maxHp){
if(ai.get.attitude(player,players[i])>0){
if(players[i].hp<2){
lose--;
recover+=0.5;
}
lose--;
recover++;
}
else if(ai.get.attitude(player,players[i])<0){
if(players[i].hp<2){
lose++;
recover-=0.5;
}
lose++;
recover--;
}
}
else{
if(ai.get.attitude(player,players[i])>0){
lose--;
}
else if(ai.get.attitude(player,players[i])<0){
lose++;
}
}
}
}
if(lose>recover&&lose>0) return (button.link[2]=='nanman')?1:-1;
if(lose<recover&&recover>0) return (button.link[2]=='taoyuan')?1:-1;
return (button.link[2]=='wuzhong')?1:-1;
},
backup:function(links,player){
return {
filterCard:true,
selectCard:-1,
audio:2,
popname:true,
viewAs:{name:links[0][2]},
}
},
prompt:function(links,player){
return '将全部手牌当作'+get.translation(links[0][2])+'使用';
}
},
ai:{
order:1,
result:{
player:function(player){
var num=0;
var cards=player.getCards('h');
if(cards.length>=3&&player.hp>=3) return 0;
for(var i=0;i<cards.length;i++){
num+=Math.max(0,ai.get.value(cards[i],player,'raw'));
}
num/=cards.length;
num*=Math.min(cards.length,player.hp);
return 12-num;
}
},
threaten:1.6,
}
},
zhiyu:{
audio:2,
trigger:{player:'damageEnd'},
content:function(){
"step 0"
player.draw();
"step 1"
player.showHandcards();
"step 2"
if(!trigger.source) return;
var cards=player.getCards('h');
for(var i=1;i<cards.length;i++){
if(get.color(cards[i])!=get.color(cards[0])) return;
}
trigger.source.chooseToDiscard(true);
},
ai:{
threaten:0.9
}
},
xuanfeng:{
audio:2,
trigger:{player:['loseEnd','phaseDiscardEnd']},
direct:true,
filter:function(event,player){
if(event.name=='phaseDiscard'){
return event.cards&&event.cards.length>1
}
else{
for(var i=0;i<event.cards.length;i++){
if(event.cards[i].original=='e') return true;
}
}
return false;
},
content:function(){
"step 0"
player.chooseTarget([1,2],get.prompt('xuanfeng'),function(card,player,target){
if(player==target) return false;
return target.countCards('he');
}).set('ai',function(target){
return -ai.get.attitude(_status.event.player,target);
});
"step 1"
if(result.bool){
player.logSkill('xuanfeng',result.targets);
event.targets=result.targets
if(result.targets.length==1){
player.discardPlayerCard(event.targets[0],'he',[1,2],true);
}
else{
player.discardPlayerCard(event.targets[0],'he',true);
}
}
else{
event.finish();
}
"step 2"
if(targets.length==2){
player.discardPlayerCard(targets[1],'he',true);
}
},
ai:{
effect:{
target:function(card,player,target,current){
if(get.type(card)=='equip') return [1,3];
}
},
noe:true
}
},
jiangchi:{
audio:2,
trigger:{player:'phaseDrawBegin'},
direct:true,
content:function(){
"step 0"
player.chooseControl('jiangchi_less','jiangchi_more','cancel2',function(){
var player=_status.event.player;
if(player.countCards('h')>3&&player.countCards('h','sha')>1){
return 'jiangchi_less';
}
if(player.countCards('h','sha')>2){
return 'jiangchi_less';
}
if(player.hp-player.countCards('h')>1){
return 'jiangchi_more';
}
return 'cancel2';
});
"step 1"
if(result.control=='jiangchi_less'){
trigger.num--;
player.addTempSkill('jiangchi2','phaseUseEnd');
player.logSkill('jiangchi');
}
else if(result.control=='jiangchi_more'){
trigger.num++;
player.addTempSkill('jiangchi3','phaseUseEnd');
player.logSkill('jiangchi');
}
}
},
jiangchi2:{
mod:{
targetInRange:function(card,player,target,now){
if(card.name=='sha') return true;
},
cardUsable:function(card,player,num){
if(card.name=='sha') return num+1;
}
}
},
jiangchi3:{
mod:{
cardEnabled:function(card){if(card.name=='sha') return false}
}
},
xinzhan:{
audio:2,
enable:'phaseUse',
filter:function(event,player){
return true;//player.countCards('h')>player.maxHp;
},
usable:1,
content: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';
});
"step 1"
if(result.bool){
player.gain(result.links);
player.$draw(result.links);
game.delay(2);
}
for(var i=event.cards.length-1;i>=0;i--){
if(!result.bool||!result.links.contains(event.cards[i])){
ui.cardPile.insertBefore(event.cards[i],ui.cardPile.firstChild);
}
}
},
ai:{
order:11,
result:{
player:1
}
}
},
huilei:{
audio:2,
trigger:{player:'dieBegin'},
forced:true,
filter:function(event){
return event.source!=undefined;
},
content:function(){
trigger.source.discard(trigger.source.getCards('he'));
},
ai:{
threaten:0.7
}
},
xinenyuan:{
audio:true,
trigger:{player:'damageEnd'},
check:function(event,player){
var att=ai.get.attitude(player,event.source);
var num=event.source.countCards('h');
if(att<=0) return true;
if(num>2) return true;
if(num) return att<4;
return false;
},
filter:function(event,player){
return event.source&&event.source!=player&&event.num>0&&event.source.isAlive();
},
content:function(){
"step 0"
event.num=trigger.num;
"step 1"
trigger.source.chooseCard('交给'+get.translation(player)+'一张手牌或流失一点体力').set('ai',function(card){
if(ai.get.attitude(_status.event.player,_status.event.getParent().player)>0){
return 11-ai.get.value(card);
}
else{
return 7-ai.get.value(card);
}
});
"step 2"
if(result.bool){
player.gain(result.cards[0],trigger.source);
trigger.source.$give(1,player);
}
else{
trigger.source.loseHp();
}
if(event.num>1){
event.num--;
event.goto(1);
}
},
ai:{
effect:{
target:function(card,player,target){
if(player.hasSkillTag('jueqing')) return [1,-1.5];
if(!target.hasFriend()) return;
if(get.tag(card,'damage')) return [1,0,0,-0.7];
}
}
},
group:'xinenyuan2'
},
xinenyuan2:{
trigger:{player:'gainEnd'},
filter:function(event,player){
return event.source&&event.source.isAlive()&&event.source!=player&&event.cards.length>=2;
},
logTarget:'source',
check:function(event,player){
return ai.get.attitude(player,event.source)>0;
},
content:function(){
trigger.source.draw();
}
},
enyuan:{
locked:true,
group:['enyuan1','enyuan2'],
ai:{
effect:{
target:function(card,player,target){
if(player.hasSkillTag('jueqing')) return [1,-2];
if(!target.hasFriend()) return;
if(get.tag(card,'damage')) return [1,0,0,-1];
}
}
}
},
enyuan1:{
trigger:{player:'recoverEnd'},
forced:true,
audio:2,
filter:function(event,player){
return event.source&&event.source!=player;
},
content:function(){
trigger.source.draw();
}
},
enyuan2:{
trigger:{player:'damageEnd'},
forced:true,
audio:true,
filter:function(event,player){
return event.source&&event.source!=player;
},
content:function(){
"step 0"
trigger.source.chooseCard('交出一张红桃牌或流失一点体力',function(card){
return get.suit(card)=='heart';
}).set('ai',function(card){
if(ai.get.attitude(_status.event.player,_status.event.getParent().player)>0){
return 11-ai.get.value(card);
}
else{
return 7-ai.get.value(card);
}
});
"step 1"
if(result.bool){
player.gain(result.cards[0],trigger.source);
trigger.source.$give(1,player);
}
else{
trigger.source.loseHp();
}
}
},
xuanhuo:{
audio:2,
enable:'phaseUse',
usable:1,
discard:false,
prepare:'give2',
filter:function(event,player){
return player.countCards('he',{suit:'heart'});
},
filterCard:function(card){
return get.suit(card)=='heart';
},
filterTarget:function(card,player,target){
if(game.countPlayer()==2) return false;
return player!=target;
},
check:function(card){
var player=get.owner(card);
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i]!=player&&ai.get.attitude(player,players[i])>3) break;
}
if(i==players.length) return -1;
return 5-ai.get.value(card);
},
content:function(){
"step 0"
target.gain(cards,player);
// game.delay();
"step 1"
player.gainPlayerCard(target,'he',true);
"step 2"
var source=target;
event.card=result.links[0];
player.chooseTarget('选择一个目标送出'+get.translation(event.card),function(card,player,target){
return target!=_status.event.source&&target!=player;
}).set('ai',function(target){
return ai.get.attitude(_status.event.player,target);
}).set('source',target);
"step 3"
if(result.bool){
result.targets[0].gain(card,player);
player.$give(1,result.targets[0]);
game.delay();
}
},
ai:{
result:{
target:-0.5,
},
basic:{
order:9,
}
}
},
ganlu:{
enable:'phaseUse',
usable:1,
audio:2,
selectTarget:2,
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;
},
multitarget:true,
content:function(){
"step 0"
event.cards=[targets[0].getCards('e'),targets[1].getCards('e')];
targets[0].lose(event.cards[0],ui.special);
targets[1].lose(event.cards[1],ui.special);
if(event.cards[0].length) targets[0].$give(event.cards[0],targets[1]);
if(event.cards[1].length) targets[1].$give(event.cards[1],targets[0]);
"step 1"
for(var i=0;i<event.cards[1].length;i++){
targets[0].equip(event.cards[1][i]);
}
for(var i=0;i<event.cards[0].length;i++){
targets[1].equip(event.cards[0][i]);
}
},
ai:{
order:10,
threaten:function(player,target){
return 0.8*Math.max(1+target.maxHp-target.hp);
},
result:{
target:function(player,target){
var list1=[];
var list2=[];
var num=player.maxHp-player.hp;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(ai.get.attitude(player,players[i])>0) list1.push(players[i]);
else if(ai.get.attitude(player,players[i])<0) list2.push(players[i]);
}
list1.sort(function(a,b){
return a.countCards('e')-b.countCards('e');
});
list2.sort(function(a,b){
return b.countCards('e')-a.countCards('e');
});
var delta;
for(var i=0;i<list1.length;i++){
for(var j=0;j<list2.length;j++){
delta=list2[j].countCards('e')-list1[i].countCards('e');
if(delta<=0) continue;
if(delta<=num){
if(target==list1[i]||target==list2[j]){
return ai.get.attitude(player,target);
}
return 0;
}
}
}
return 0;
}
},
effect:{
target:function(card,player,target){
if(target.hp==target.maxHp&&get.tag(card,'damage')) return 0.2;
}
}
}
},
buyi:{
trigger:{global:'dying'},
priority:6,
audio:2,
filter:function(event,player){
return event.player.hp<=0&&event.player.countCards('h')>0;
},
direct:true,
content:function(){
"step 0"
var check;
if(trigger.player.isUnderControl(true,player)){
check=player.hasCard(function(card){
return get.type(card)!='basic';
});
}
else{
check=(ai.get.attitude(player,trigger.player)>0);
}
player.choosePlayerCard(trigger.player,get.prompt('buyi',trigger.player),'h').set('ai',function(button){
if(!_status.event.check) return 0;
if(_status.event.target.isUnderControl(true,_status.event.player)){
if(get.type(button.link)!='basic'){
return 10-ai.get.value(button.link);
}
return 0;
}
else{
return Math.random();
}
}).set('check',check).set('filterButton',function(button){
if(_status.event.player==_status.event.target){
return lib.filter.cardDiscardable(button.link,_status.event.player);
}
return true;
});
"step 1"
if(result.bool){
player.logSkill('buyi',trigger.player);
event.card=result.links[0];
player.showCards([event.card],get.translation(player)+'展示的手牌');
}
else{
event.finish();
}
"step 2"
if(get.type(event.card)!='basic'){
trigger.player.recover();
trigger.player.discard(event.card);
}
},
ai:{
threaten:1.4
}
},
pojun:{
audio:2,
trigger:{source:'damageEnd'},
check:function(event,player){
if(event.player.isTurnedOver()) return ai.get.attitude(player,event.player)>0;
if(event.player.hp<3){
return ai.get.attitude(player,event.player)<0;
}
return ai.get.attitude(player,event.player)>0;
},
filter:function(event){
return event.card&&event.card.name=='sha'&&event.player.isAlive();
},
logTarget:'player',
content:function(){
"step 0"
trigger.player.draw(Math.min(5,trigger.player.hp));
"step 1"
trigger.player.turnOver();
}
},
jingce:{
trigger:{player:'phaseUseEnd'},
frequent:true,
filter:function(event,player){
return get.cardCount(true,player)>=player.hp;
},
content:function(){
player.draw(2);
},
audio:2,
init:function(player){player.storage.jingce=true},
intro:{
content:function(storage,player){
if(_status.currentPhase==player) return '已使用'+get.cardCount(true,player)+'张牌';
}
}
},
chengxiang:{
trigger:{player:'damageEnd'},
direct:true,
audio:2,
content:function(){
"step 0"
event.cards=get.cards(4);
event.videoId=lib.status.videoId++;
game.broadcastAll(function(player,id,cards){
var str;
if(player==game.me&&!_status.auto){
str='称象选择任意张点数不大于13的牌';
}
else{
str='称象';
}
var dialog=ui.create.dialog(str,cards);
dialog.videoId=id;
},player,event.videoId,event.cards);
event.time=get.utc();
game.addVideo('showCards',player,['称象',get.cardsInfo(event.cards)]);
game.addVideo('delay',null,2);
"step 1"
var next=player.chooseButton([0,4]);
next.set('dialog',event.videoId);
next.set('filterButton',function(button){
var num=0
for(var i=0;i<ui.selected.buttons.length;i++){
num+=get.number(ui.selected.buttons[i].link);
}
return (num+get.number(button.link)<=13);
});
next.set('ai',function(button){
return ai.get.value(button.link,_status.event.player);
});
"step 2"
if(result.bool&&result.links){
player.logSkill('chengxiang');
var cards2=[];
for(var i=0;i<result.links.length;i++){
cards2.push(result.links[i]);
cards.remove(result.links[i]);
}
for(var i=0;i<cards.length;i++){
ui.discardPile.appendChild(cards[i]);
}
event.cards2=cards2;
}
else{
event.finish();
}
var time=1000-(get.utc()-event.time);
if(time>0){
game.delay(0,time);
}
"step 3"
game.broadcastAll('closeDialog',event.videoId);
var cards2=event.cards2;
player.gain(cards2,'log');
player.$draw(cards2);
game.delay();
},
ai:{
maixie:true,
maixie_hp:true,
effect:{
target:function(card,player,target){
if(get.tag(card,'damage')){
if(player.hasSkillTag('jueqing')) return [1,-2];
if(!target.hasFriend()) return;
if(target.hp>=4) return [1,2];
if(target.hp==3) return [1,1.5];
if(target.hp==2) return [1,0.5];
}
}
}
}
},
renxin:{
trigger:{global:'damageBefore'},
audio:3,
priority:6,
filter:function(event,player){
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),{type:'equip'},'he');
next.logSkill=['renxin',trigger.player];
next.set('ai',function(card){
var player=_status.event.player;
if(ai.get.attitude(player,_status.event.getTrigger().player)>3){
return 11-ai.get.value(card);
}
return -1;
});
"step 1"
if(result.bool){
player.turnOver();
}
else{
event.finish();
}
"step 2"
trigger.untrigger();
trigger.finish();
},
ai:{
expose:0.5
}
},
yuce:{
audio:2,
trigger:{player:'damageAfter'},
direct:true,
filter:function(event,player){
return player.countCards('h')>0&&player.isDamaged();
},
content:function(){
"step 0"
var next=player.chooseToDiscard(get.prompt('yuce'));
next.logSkill='yuce';
next.set('ai',function(card){
return 7-ai.get.value(card);
});
"step 1"
if(result.bool){
var type=get.type(result.cards[0],'trick');
if(trigger.source){
trigger.source.chooseToDiscard('弃置一张'+get.translation(type)+'牌或令'+get.translation(player)+'回复一点体力',function(card){
return get.type(card,'trick')==_status.event.type;
}).set('ai',function(card){
if(ai.get.recoverEffect(_status.event.getParent().player,_status.event.player,_status.event.player)<0){
return 7-ai.get.value(card);
}
return 0;
}).set('type',type);
}
else{
event.recover=true;
}
}
else{
event.finish();
}
"step 2"
if(event.recover){
player.recover();
}
else if(result.bool){
player.draw();
}
else{
player.recover();
}
},
ai:{
effect:{
target:function(card,player,target){
if(get.tag(card,'damage'&&target.countCards('h'))){
return 0.8
}
}
}
}
},
xiansi:{
audio:2,
trigger:{player:'phaseBegin'},
direct:true,
init:function(player){
player.storage.xiansi=[];
},
unique:true,
forceunique:true,
content:function(){
"step 0"
player.chooseTarget(get.prompt('xiansi'),[1,2],function(card,player,target){
return target.countCards('he')>0;
},function(target){
return -ai.get.attitude(_status.event.player,target);
});
"step 1"
if(result.bool){
player.logSkill('xiansi',result.targets);
event.targets=result.targets;
}
else{
event.finish();
}
"step 2"
if(event.targets.length){
var target=event.targets.shift();
event.current=target;
player.choosePlayerCard(target,true);
}
else{
event.finish();
}
"step 3"
if(result.bool){
player.storage.xiansi=player.storage.xiansi.concat(result.links);
player.markSkill('xiansi');
player.syncStorage('xiansi');
event.current.lose(result.links,ui.special);
event.current.$give(result.links,player);
event.goto(2);
}
},
intro:{
content:'cards',
onunmark:function(storage,player){
if(storage&&storage.length){
for(var i=0;i<storage.length;i++){
ui.discardPile.appendChild(storage[i]);
}
player.$throw(storage);
player.storage.xiansi.length=0;
}
}
},
ai:{
threaten:2
},
global:'xiansi2'
},
xiansi2:{
enable:'phaseUse',
audio:2,
forceaudio:true,
filter:function(event,player){
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i].storage.xiansi){
return players[i].storage.xiansi.length>1&&player.canUse('sha',players[i],true,true);
}
}
return false;
},
content:function(){
"step 0"
event.target=game.findPlayer(function(current){
return current.storage.xiansi;
});
if(event.target){
player.chooseCardButton(2,event.target.storage.xiansi).set('ai',function(){
return 1;
});
}
else{
event.finish();
}
"step 1"
if(result.bool){
for(var i=0;i<result.links.length;i++){
event.target.storage.xiansi.remove(result.links[i]);
}
event.target.syncStorage('xiansi');
if(!event.target.storage.xiansi.length){
event.target.unmarkSkill('xiansi');
}
else{
event.target.markSkill('xiansi');
}
event.target.$throw(result.links);
for(var i=0;i<result.links.length;i++){
ui.discardPile.appendChild(result.links[i]);
}
player.useCard({name:'sha'},event.target);
}
},
ai:{
order:function(){
return ai.get.order({name:'sha'})+0.05;
},
result:{
player:function(player){
var target=game.findPlayer(function(current){
return current.storage.xiansi;
});
if(target){
return ai.get.effect(target,{name:'sha'},player,player);
}
}
}
}
},
shibei:{
audio:2,
trigger:{player:'damageAfter'},
forced:true,
content:function(){
"step 0"
player.judge(function(card){
if(player.hasSkill('shibei2')){
if(get.color(card)=='black') return -1;
}
else{
if(get.color(card)=='red') return 1;
}
return 0;
})
"step 1"
if(result.judge>0){
player.recover();
}
else if(result.judge<0){
player.loseHp();
}
if(!player.hasSkill('shibei2')){
player.addTempSkill('shibei2','phaseAfter');
}
}
},
shibei2:{},
jianying:{
audio:2,
trigger:{player:'useCard'},
frequent:true,
filter:function(event,player){
if(!event.cards||event.cards.length!=1) return false;
if(_status.currentPhase!=player) return false;
if(!player.storage.jianying) return false;
return get.suit(player.storage.jianying)==get.suit(event.cards[0])||
player.storage.jianying.number==event.cards[0].number;
},
content:function(){
player.draw();
},
intro:{
content:'card'
},
group:['jianying2','jianying3']
},
jianying3:{
trigger:{player:'useCard'},
priority:-1,
forced:true,
popup:false,
silent:true,
filter:function(event,player){
if(!event.cards||event.cards.length!=1) return false;
if(_status.currentPhase!=player) return false;
return true;
},
content:function(){
player.storage.jianying=trigger.cards[0];
}
},
jianying2:{
trigger:{player:'phaseAfter'},
forced:true,
silent:true,
popup:false,
content:function(){
player.storage.jianying=null;
}
},
zzhenggong:{
trigger:{player:'damageEnd'},
direct:true,
filter:function(event,player){
return event.source&&event.source.countCards('e')>0;
},
content:function(){
"step 0"
var att=ai.get.attitude(player,trigger.source);
player.choosePlayerCard('e',get.prompt('zzhenggong'),trigger.source).ai=function(button){
if(att<=0){
return ai.get.equipValue(button.link);
}
return 0;
}
"step 1"
if(result.bool){
player.logSkill('zzhenggong',trigger.source);
player.equip(result.links[0]);
trigger.source.$give(result.links[0],player);
}
}
},
zquanji:{
trigger:{global:'phaseBegin'},
priority:15,
check:function(event,player){
var att=ai.get.attitude(player,event.player);
if(att<0){
var nh1=event.player.countCards('h');
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;
return false;
},
logTarget:'player',
filter:function(event,player){
return event.player!=player&&event.player.countCards('h')>0&&player.countCards('h')>0;
},
content:function(){
"step 0"
player.chooseToCompare(trigger.player);
"step 1"
if(result.bool){
trigger.player.skip('phaseJudge');
trigger.untrigger();
}
},
ai:{
expose:0.2
}
},
zbaijiang:{
skillAnimation:true,
trigger:{player:'phaseBegin'},
forced:true,
unique:true,
derivation:['zyexin','zzili'],
init:function(player){
player.storage.zbaijiang=false;
},
// intro:{
// content:'limited'
// },
filter:function(event,player){
return !player.storage.zbaijiang&&player.countCards('e')>=2;
},
content:function(){
player.storage.zbaijiang=true;
player.removeSkill('zzhenggong');
player.removeSkill('zquanji');
player.removeSkill('zbaijiang');
player.addSkill('zyexin');
player.addSkill('zzili');
player.gainMaxHp();
}
},
zyexin:{
trigger:{player:'damageEnd',source:'damageEnd'},
frequent:true,
init:function(player){
player.storage.zyexin=[];
},
intro:{
content:'cards'
},
content:function(){
var card=get.cards()[0];
player.storage.zyexin.push(card);
player.$draw(card);
player.markSkill('zyexin');
game.addVideo('storage',player,['zyexin',get.cardsInfo(player.storage.zyexin),'cards']);
},
group:'zyexin2'
},
zyexin2:{
enable:'phaseUse',
usable:1,
lose:false,
delay:false,
selectCard:[1,Infinity],
filterCard:true,
filter:function(event,player){
return player.storage.zyexin.length>0;
},
prompt:'用任意数量的手牌与等量的交换',
content:function(){
"step 0"
player.lose(cards,ui.special)._triggered=null;
player.storage.zyexin=player.storage.zyexin.concat(cards);
player.chooseCardButton(player.storage.zyexin,'选择'+cards.length+'张牌作为手牌',cards.length,true).ai=function(button){
return ai.get.value(button.link);
}
if(player==game.me&&_status.auto){
game.delay();
}
"step 1"
player.gain(result.links)._triggered=null;
for(var i=0;i<result.links.length;i++){
player.storage.zyexin.remove(result.links[i]);
}
game.addVideo('storage',player,['zyexin',get.cardsInfo(player.storage.zyexin),'cards']);
},
ai:{
order:5,
result:{
player:1
}
}
},
zzili:{
skillAnimation:true,
unique:true,
init:function(player){
player.storage.zzili=false;
},
derivation:'zpaiyi',
trigger:{player:'phaseBegin'},
filter:function(event,player){
return player.storage.zyexin.length>=4&&!player.storage.zzili;
},
forced:true,
content:function(){
player.storage.zzili=true;
player.loseMaxHp();
player.addSkill('zpaiyi');
player.removeSkill('zzili');
},
// intro:{
// content:'limited'
// }
},
zpaiyi:{
trigger:{player:'phaseEnd'},
filter:function(event,player){
for(var i=0;i<player.storage.zyexin.length;i++){
var type=get.type(player.storage.zyexin[i]);
if(type=='delay'||type=='equip') return true;
}
return false;
},
direct:true,
content:function(){
"step 0"
var next=player.chooseCardButton(get.prompt('zpaiyi'),player.storage.zyexin);
next.filterButton=function(button){
var type=get.type(button.link);
if(type=='delay'||type=='equip') return true;
return false;
};
next.ai=function(button){
return ai.get.value(button.link);
}
"step 1"
if(result.bool){
var card=result.links[0];
event.card=card;
var isjudge=get.type(card)=='delay';
player.chooseTarget(function(cd,player,target){
if(isjudge){
return !target.hasJudge(card.name);
}
else{
return !target.isMin();
}
}).ai=function(target){
return ai.get.effect(target,card,player,player);
}
}
else{
event.finish();
}
"step 2"
if(result.bool){
player.storage.zyexin.remove(event.card);
game.addVideo('storage',player,['zyexin',get.cardsInfo(player.storage.zyexin),'cards']);
game.delay();
if(get.type(event.card)=='equip'){
player.$give(event.card,result.targets[0]);
result.targets[0].equip(event.card);
}
else if(get.type(event.card)=='delay'){
player.$throw(event.card);
result.targets[0].addJudge(event.card);
}
player.logSkill('zpaiyi',result.targets);
if(player!=result.targets[0]){
player.draw();
}
}
}
}
},
translate:{
yufan:'虞翻',
wangyi:'王异',
xushu:'旧徐庶',
caozhi:'曹植',
zhangchunhua:'张春华',
lingtong:'凌统',
xunyou:'荀攸',
caozhang:'曹彰',
liubiao:'刘表',
huaxiong:'华雄',
zhuran:'朱然',
yujin:'旧于禁',
masu:'旧马谡',
xin_masu:'马谡',
fazheng:'旧法正',
xin_fazheng:'法正',
wuguotai:'吴国太',
chengong:'陈宫',
xusheng:'徐盛',
guohuai:'郭淮',
caochong:'曹冲',
bulianshi:'步练师',
handang:'韩当',
fuhuanghou:'伏皇后',
caifuren:'蔡夫人',
zhonghui:'钟会',
old_zhonghui:'旧钟会',
sunluban:'孙鲁班',
chenqun:'陈群',
zhangsong:'张松',
guyong:'顾雍',
jianyong:'简雍',
madai:'马岱',
xin_xushu:'徐庶',
manchong:'满宠',
liufeng:'刘封',
liru:'旧李儒',
guanzhang:'关兴张苞',
yj_jushou:'沮授',
zhuhuan:'朱桓',
xiahoushi:'夏侯氏',
panzhangmazhong:'潘璋马忠',
caorui:'曹叡',
caoxiu:'曹休',
zhongyao:'钟繇',
liuchen:'刘谌',
zhangyi:'张嶷',
sunxiu:'孙休',
zhuzhi:'朱治',
quancong:'全琮',
gongsunyuan:'公孙渊',
guotufengji:'郭图逢纪',
zhoucang:'周仓',
guanping:'关平',
liaohua:'廖化',
caozhen:'曹真',
wuyi:'吴懿',
hanhaoshihuan:'韩浩史涣',
chengpu:'程普',
gaoshun:'高顺',
xin_yujin:'于禁',
xin_liru:'李儒',
guohuanghou:'郭皇后',
liuyu:'刘虞',
sundeng:'孙登',
liyan:'李严',
sunziliufang:'孙资刘放',
huanghao:'黄皓',
zhangrang:'张让',
cenhun:'岑昏',
guizao:'瑰藻',
guizao_info:'弃牌阶段结束时若你于此阶段弃置牌的数量不小于2且它们的花色各不相同你可以回复1点体力或摸一张牌',
jiyu:'讥谀',
jiyu_info:'出牌阶段每名角色限一次若你有可以使用的手牌你可以令一名角色弃置一张手牌若如此做你不能使用与之相同花色的牌直到回合结束若其以此法弃置的牌为黑桃你翻面并令其失去1点体力',
qinqing:'寝情',
qinqing_info:'结束阶段开始时你可以弃置攻击范围内含有主公的一名其他角色的一张牌令其摸一张牌然后若其手牌比主公多你摸一张牌',
huisheng:'贿生',
huisheng_info:'每名角色限一次当你受到其他角色造成的伤害时你可选你的任意数量的牌令该角色观看然后该角色选择1.获得这些牌中的一张然后防止伤害2.弃置等量的牌',
jishe:'极奢',
jishe_info:'出牌阶段若你的手牌上限大于0你可以摸一张牌然后你本回合的手牌上限-1结束阶段开始时若你没有手牌则你可以横置至多X名角色的武将牌X为你的体力值',
lianhuo:'链祸',
lianhuo_info:'锁定技当你受到火焰伤害时若你处于连环状态且你是传导伤害的起点则此伤害+1',
taoluan:'滔乱',
taoluan4:'滔乱',
taoluan5:'滔乱',
taoluan_backup:'滔乱',
taoluan_info:'出牌阶段你可视为使用任意一张基本牌或普通锦囊牌此牌不得是本局游戏你以此法使用过的牌然后你令一名其他角色选择一项1.交给你一张与你以此法使用的牌类别相同的牌2.你失去1点体力且滔乱无效直到回合结束',
jiaozhao:'矫诏',
jiaozhao2:'矫诏',
jiaozhao_info:'出牌阶段限一次你可以展示一张手牌然后选择距离最近的一名其他角色该角色声明一张基本牌的牌名在此出牌阶段内你可以将此手牌当声明的牌使用且你不能被选择为目标',
danxin:'殚心',
danxin_info:'当你受到伤害后你可以摸一张牌或对矫诏的描述依次执行下列一项修改1.基本牌改为基本牌或普通锦囊牌2.选择距离最近的一名其他角色该角色改为',
duliang:'督粮',
duliang2:'督粮',
duliang_info:'出牌阶段限一次你可以获得一名其他角色的一张手牌然后选择一项1.令其观看牌堆顶的两张牌然后获得其中的基本牌2.令其于下个摸牌阶段额外摸一张牌',
fulin:'腹鳞',
fulin_info:'锁定技弃牌阶段内你于此回合内获得的牌不计入你的手牌数',
kuangbi:'匡弼',
kuangbi_info:'出牌阶段限一次你可以选择一名有牌的其他角色该角色将其一至三张牌置于你的武将牌上若如此做你的下准备阶段你获得武将牌上的所有牌然后其摸等量的牌',
zhige:'止戈',
zhige_info:'出牌阶段限一次若你的手牌数大于你的体力值你可以选择攻击范围内含有你的一名其他角色除非该角色使用一张否则其将其装备区里的一张牌交给你',
zongzuo:'宗祚',
zongzuo_info:'锁定技游戏的第一个回合开始前你加X点体力上限和体力X为全场势力数当一名角色死亡后若没有与其势力相同的角色你减1点体力上限',
xinjuece:'绝策',
xinjuece_info:'结束阶段开始时你可以对没有手牌的一名角色造成1点伤害',
xinmieji:'灭计',
xinmieji_info:'出牌阶段限一次你可以展示一张黑色锦囊牌并将之置于牌堆顶然后令有手牌的一名其他角色选择一项弃置一张锦囊牌或弃置两张非锦囊牌',
xinfencheng:'焚城',
xinfencheng_info:'限定技出牌阶段你可以令所有其他角色各选择一项弃置至少X张牌(X为该角色的上家以此法弃置牌的数量+1)或受到你对其造成的2点火焰伤害',
qianju:'千驹',
qianju_info:'锁定技若你已受伤你的进攻距离+XX为你已损失体力值',
qingxi:'倾袭',
qingxi_info:'当你使用对目标角色造成伤害时若你的装备区里有武器牌你可以令其选择一项1弃置X张手牌X为此武器牌的攻击范围若如此做其弃置你的此武器牌2令伤害值+1',
jieyue:'节钺',
jieyue1:'节钺',
jieyue2:'节钺',
jieyue3:'节钺',
jieyue4:'节钺',
jieyue_info:'结束阶段开始时你可以弃置一张手牌然后令一名其他角色选择一项将一张牌置于你的武将牌上或令你弃置其一张牌你武将牌上有牌时你可以将红色手牌当黑色的手牌当无懈可击使用或打出准备阶段开始时你获得你武将牌上的牌',
xianzhen:'陷阵',
xianzhen_info:'出牌阶段你可以与一名角色拼点若你赢你获得以下技能直到回合结束无视与该角色的距离无视防具且可使用任意数量的若你没赢你不能使用直到回合结束每回合限一次',
jinjiu:'禁酒',
jinjiu_info:'锁定技你的均视为',
chunlao:'醇醪',
chunlao_info:'结束阶段开始时若没有你可以将至少一张置于你的武将牌上称为当一名角色处于濒死状态时你可以移去一张视为该角色使用一张',
lihuo:'疠火',
lihuo_info:'你可以将一张普通当火使用若以此法使用的造成了伤害则此结算后你失去1点体力你使用火指定目标后可以额外指定一个目标',
shenduan:'慎断',
shenduan_info:'当你的黑色基本牌因弃置而进入弃牌堆时你可以将之视为 兵粮寸断并置于一名其他角色的判定区里',
yonglve:'勇略',
yonglve_info:'你攻击范围内的一名其他角色的判定阶段开始时你可以弃置其判定区里的一张牌视为对该角色使用一张若此未造成伤害你摸一张牌',
benxi:'奔袭',
benxi_info:'锁定技在你的回合内你每使用一次牌后你的进攻距离+1直到回合结束你的回合内若你与所有角色的距离均为1你无视其他角色的防具且你使用的可额外指定一个目标',
sidi:'司敌',
sidi2:'司敌',
sidi3:'司敌',
sidi_info:'每当你使用或其他角色在你的回合内使用闪时你可以将牌堆顶的一张牌正面向上置于你的武将牌上一名其他角色的出牌阶段开始时你可以移去一张司敌然后该角色本阶段可使用杀的次数上限-1',
xinsidi:'司敌',
xinsidi2:'司敌',
xinsidi_info:'其他角色出牌阶段开始时你可以弃置一张与你装备区里的牌颜色相同的非基本牌然后该角色于此阶段内不能使用和打出与此牌颜色相同的牌此阶段结束时若其此阶段没有使用视为你对其使用了',
dangxian:'当先',
dangxian_info:'锁定技准备阶段你执行一个额外的出牌阶段',
longyin:'龙吟',
longyin_info:'每当一名角色在其出牌阶段使用你可弃置一张牌令此不计入出牌阶段使用次数若此为红色你摸一张牌',
zhongyong:'忠勇',
zhongyong_info:'当你于出牌阶段内使用的被目标角色使用的抵消时你可以将此交给除该角色外的一名角色若获得此的角色不是你你可以对相同的目标再使用一张',
xinzhongyong:'忠勇',
xinzhongyong_info:'当你使用的结算完毕后你可以将此或目标角色使用的交给一名该角色以外的其他角色以此法获得红色牌的角色可以对你攻击范围内的角色使用一张',
jigong:'急攻',
jigong_info:'出牌阶段开始时你可以摸两张牌若如此做此回合你的手牌上限改为X(X为你此阶段造成的伤害数)',
shifei:'饰非',
shifei_info:'当你需要使用或打出你可以令当前回合角色摸一张牌然后若其手牌数不为全场最多则你弃置全场手牌数最多或之一角色的一张牌视为你使用或打出了一张',
huaiyi:'怀异',
huaiyi_info:'出牌阶段限一次你可以展示所有手牌若其中包含不止一种颜色则你选择一种颜色并弃置该颜色的所有手牌然后你可以获得至多X名角色的各一张牌X为你以此法弃置的手牌数若你以此法获得的牌不少于两张则你失去1点体力',
yaoming:'邀名',
yaoming_info:'每回合限一次当你造成或受到伤害后你可以选择一项1. 弃置手牌数大于你的一名角色的一张手牌2. 令手牌数小于你的一名角色摸一张牌',
anguo:'安国',
anguo_info:'出牌阶段限一次你可以选择一名其他角色装备区里的一张牌令其将此牌收回手牌然后若该角色攻击范围内的角色数因此减少则你摸一张牌',
yanzhu:'宴诛',
yanzhu_info:'出牌阶段限一次你可以令一名有牌的其他角色选择一项令你获得其装备区里所有的牌然后你失去技能宴诛直到游戏结束或弃置一张牌',
xingxue:'兴学',
xingxue_info:'结束阶段开始时你可以令至多X名角色依次摸一张牌并将一张牌置于牌堆顶X为你的体力值若你已失去技能宴诛则将X改为你的体力上限',
zhaofu:'诏缚',
zhaofu_info:'主公技锁定技你距离为1的角色视为在其他吴势力角色的攻击范围内',
wurong:'怃戎',
wurong_info:'出牌阶段限一次你可以令一名其他角色与你同时展示一张手牌若你展示的是且该角色展示的不是则你弃置此并对其造成1点伤害若你展示的不是且该角色展示的是则你弃置你展示的牌并获得其一张牌',
shizhi:'矢志',
shizhi_info:'锁定技当你体力为1时你的均视为',
zhanjue:'战绝',
zhanjue_info:'出牌阶段你可以将所有手牌当决斗使用结算后你和以此法受到伤害的角色各摸一张牌若你在同一阶段内以此法摸了两张或更多的牌则此技能失效直到回合结束',
qinwang:'勤王',
qinwang1:'勤王',
qinwang2:'勤王',
qinwang_info:'主公技你可以弃置一张牌然后视为你发动激将若有角色响应则该角色打出时摸一张牌',
huomo:'活墨',
huomo_use:'活墨',
huomo_use_backup:'活墨',
huomo_info:'每当你需要使用一张本回合内未使用过的基本牌时你可以将一张黑色非基本牌置于牌堆顶然后视为你使用了此基本牌',
huomo_use_info:'每当你需要使用一张本回合内未使用过的基本牌时你可以将一张黑色非基本牌置于牌堆顶然后视为你使用了此基本牌',
zuoding:'佐定',
zuoding_info:'每当一名其他角色于其回合内使用牌指定目标后若本回合没有角色受到过伤害则你可以令其中一名目标角色摸一张牌',
taoxi:'讨袭',
taoxi2:'讨袭',
taoxi3:'讨袭',
taoxi_info:'出牌阶段限一次当你使用牌指定一名其他角色为唯一目标后你可以亮出其一张手牌直到回合结束并且你可以于此回合内将此牌如手牌般使用结束阶段若该角色未失去此手牌则你失去1点体力',
huituo:'恢拓',
huituo_info:'每当你受到伤害后你可以令一名角色进行一次判定若结果为红色该角色回复1点体力若结果为黑色该角色摸X张牌X为此次伤害的伤害数',
mingjian:'明鉴',
mingjian2:'明鉴',
mingjian_info:'出牌阶段限一次你可以将所有手牌交给一名其他角色若如此做该角色于其下个回合的手牌上限+1且出杀的次数上限+1',
xingshuai:'兴衰',
xingshuai_info:'主公技限定技当你进入濒死状态时其他魏势力角色可依次令你回复1点体力然后这些角色依次受到1点伤害',
duodao:'夺刀',
duodao_info:'每当你受到杀造成的一次伤害后你可以弃置一张牌然后获得伤害来源装备区里的武器牌',
anjian:'暗箭',
anjian_info:'当你使用的杀对目标角色造成伤害时若你不在其攻击范围内则此杀伤害+1',
xinpojun:'破军',
xinpojun2:'破军',
xinpojun_info:'当你于出牌阶段内使用指定一个目标后你可以将其至多X张牌扣置于该角色的武将牌旁X为其体力值若如此做当前回合结束后该角色获得其武将牌旁的所有牌',
qiaoshi:'樵拾',
qiaoshi_info:'其他角色的结束阶段开始时若你的手牌数与其相等则你可以与其各摸一张牌',
yanyu:'燕语',
yanyu2:'燕语',
yanyu_info:'出牌阶段你可以重铸出牌阶段结束时若你于此阶段以此法重铸了至少两张则你可以令一名男性角色摸两张牌',
zzhenggong:'争功',
zzhenggong_info:'你每受到一次伤害可以获得伤害来源装备区中的一张牌并立即放入你的装备区',
zquanji:'权计',
zquanji_info:'其他角色的回合即将开始时你可以与该角色进行一次拼点若你赢该角色跳过准备阶段及判定阶段',
zbaijiang:'拜将',
zbaijiang_info:'觉醒技准备阶段若你的装备区的装备牌为两张或更多时你必须增加1点体力上限失去技能权计争功并获得技能野心自立',
zyexin:'野心',
zyexin2:'野心',
zyexin_info:'你每造成或受到一次伤害可将牌堆顶的一张牌放置在武将牌上称为出牌阶段你可以用任意数量的手牌与等量的交换每阶段限一次',
zzili:'自立',
zzili_info:'觉醒技准备阶段若你的为四张或更多时你必须减1点体力上限并永久获得技能排异',
zpaiyi:'排异',
zpaiyi_info:'结束阶段将一张移动到任何合理的区域若不是你的区域你可以摸一张牌',
shibei:'矢北',
shibei_info:'锁定技每当你受到一次伤害需进行一次判定若结果为红色且是你回合内受到的第一次伤害你回复一点体力若结果为黑色且你在本回合内受到过不止一次伤害你失去一点体力',
jianying:'渐营',
jianying_info:'每当你于出牌阶段内使用的牌与此阶段你使用的上一张牌点数或花色相同时你可以摸一张牌',
xinenyuan:'恩怨',
xinenyuan2:'恩怨',
xinenyuan_info:'当你获得一名其他角色两张或更多的牌后你可以令其摸一张牌当你受到1点伤害后你可以令伤害来源选择一项1将一张手牌交给你2失去1点体力',
xinxuanhuo:'眩惑',
xinxuanhuo_info:'摸牌阶段开始时你可以改为令一名其他角色摸两张牌然后该角色需对其攻击范围内你选择的另一名角色使用一张否则你获得其两张牌',
fuhun:'父魂',
fuhun2:'父魂',
fuhun_info:'你可以将两张手牌当杀使用或打出出牌阶段若你以此法使用的杀造成了伤害你获得技能武圣咆哮直到回合结束',
yuce:'御策',
yuce_info:'每当你受到一次伤害可以弃置一张手牌并令伤害来源选择一项弃置一张相同类型的手牌并令你摸一张牌或令你回复一点体力',
xiansi:'陷嗣',
xiansi_bg:'',
xiansi2:'陷嗣',
xiansi_info:'准备阶段开始时你可以将一至两名角色的各一张牌置于你的武将牌上称为每当一名角色需要对你使用杀时该角色可以移去两张视为对你使用一张杀',
chanhui:'谮毁',
chanhui_info:'出牌阶段限一次当你使用或黑色普通锦囊牌指定唯一目标时你可令可以成为此牌目标的另一名其他角色选择一项交给你一张牌并成为此牌的使用者;或成为此牌的额外目标',
jiaojin:'骄矜',
jiaojin_info:'每当你受到一名男性角色造成的伤害时你可以弃置一张装备牌令此伤害-1',
shenxing:'慎行',
shenxing_info:'出牌阶段你可以弃置两张牌然后摸一张牌',
bingyi:'秉壹',
bingyi_info:'结束阶段开始时你可以展示所有手牌若均为同一颜色则你令至多X名角色各摸一张牌(X为你的手牌数)',
qiangzhi:'强识',
qiangzhi2:'强识',
qiangzhi_info:'出牌阶段开始时你可以展示一名其他角色的一张手牌若如此做每当你于此阶段内使用与此牌类别相同的牌时你可以摸一张牌',
xiantu:'献图',
xiantu2:'献图',
xiantu3:'献图',
xiantu_info:'一名其他角色的出牌阶段开始时你可以摸两张牌然后交给其两张牌若如此做此阶段结束时若该角色未于此阶段内杀死过一名角色则你失去1点体力',
dingpin:'定品',
dingpin_info:'出牌阶段限三次你可以弃置一张手牌然后令一名已受伤的角色进行一次判定若结果为黑色该角色摸X张牌(X为该角色已损失的体力值)然后你本回合不能再对其发动定品若结果为红色将你的武将牌翻面',
faen:'法恩',
faen_info:'每当一名角色的武将牌翻面或横置时你可以令其摸一张牌',
jyzongshi:'纵适',
jyzongshi_info:'每当你拼点赢你可以获得对方此次拼点的牌每当你拼点没赢你可以收回你此次拼点的牌',
qiaoshui:'巧说',
qiaoshui_info:'出牌阶段开始时你可与一名其他角色拼点若你赢你使用的下一张基本牌或普通锦囊牌可以额外指定任意一名其他角色为目标或减少指定一个目标若你没赢你不能使用锦囊牌直到回合结束',
junxing:'峻刑',
junxing_info:'出牌阶段限一次你可以弃置至少一张手牌并选择一名其他角色该角色需弃置一张与你弃置的牌类别均不同的手牌否则其先将其武将牌翻面再摸X张牌X为你以此法弃置的手牌数量',
wuyan:'无言',
xinwuyan:'无言',
jujian:'举荐',
xinjujian:'举荐',
luoying:'落英',
luoying1:'落英',
luoying2:'落英',
luoying2_noconf:'落英·判定',
jiushi:'酒诗',
jiushi1:'酒诗',
jiushi2:'酒诗',
jiushi3:'酒诗',
jueqing:'绝情',
shangshi:'伤逝',
xuanfeng:'旋风',
zhiyu:'智愚',
qice:'奇策',
qice_backup:'奇策',
jiangchi:'将弛',
jiangchi_less:'少摸一张',
jiangchi_more:'多摸一张',
zishou:'自守',
zongshi:'宗室',
danshou:'胆守',
olddanshou:'胆守',
yizhong:'毅重',
xinzhan:'心战',
xinzhan_gain:'获得',
xinzhan_place:'牌堆顶',
huilei:'挥泪',
enyuan:'恩怨',
enyuan1:'恩怨',
enyuan2:'恩怨',
xuanhuo:'眩惑',
ganlu:'甘露',
buyi:'补益',
mingce:'明策',
zhichi:'智迟',
zhichi2:'智迟',
pojun:'破军',
jingce:'精策',
chengxiang:'称象',
renxin:'仁心',
zhenlie:'贞烈',
miji:'秘计',
zhiyan:'直言',
zongxuan:'纵玄',
anxu:'安恤',
zhuiyi:'追忆',
gongji:'弓骑',
qiuyuan:'求援',
zhuikong:'惴恐',
qieting:'窃听',
xianzhou:'献州',
quanji:'权计',
zili:'自立',
paiyi:'排异',
sanyao:'散谣',
zhiman:'制蛮',
yaowu:'耀武',
qianxi:'潜袭',
qianxi2:'潜袭',
qianxi2_bg:'',
fuli:'伏枥',
jiefan:'解烦',
juece:'绝策',
mieji:'灭计',
fencheng:'焚城',
youdi:'诱敌',
youdi_info:'结束阶段开始时你可以令一名其他角色弃置你的一张牌若此牌不为你获得该角色的一张牌',
fencheng_info:'限定技出牌阶段你可令所有其他角色依次选择一项弃置X张牌或受到1点火焰伤害(X为该角色装备区里牌的数量且至少为1)',
mieji_info:'你使用黑色普通锦囊牌仅指定一个目标后可以额外指定一个目标',
juece_info:'每当一名其他角色在你回合内失去最后一张手牌你可以对其造成一点伤害',
jiefan_info:'限定技出牌阶段你可以选择一名角色令攻击范围内含有该角色的所有角色各选择一项1.弃置一张武器牌2.令其摸一张牌',
fuli_info:'限定技当你处于濒死状态时可以将体力回复至体力上限然后翻面',
qianxi_info:'准备阶段你可以摸一张牌并弃置一张牌然后令一名距离为1的角色不能使用或打出与你弃置的牌颜色相同的手牌直到回合结束',
yaowu_info:'锁定技当任意一名角色使用红色对你造成伤害时该角色回复1点体力或摸一张牌',
zhiman_info:'当你对一名其他角色造成伤害时你可以防止此伤害然后获得其装备区或判定区的一张牌',
sanyao_info:'出牌阶段限一次你可以弃置一张牌并指定一名体力最多(或之一)的角色你对其造成1点伤害',
paiyi_info:'出牌阶段限一次你可以移去一张并选择一名角色令其摸两张牌然后若其手牌多于你你对其造成1伤害',
zili_info:'觉醒技准备阶段开始时的数量不小于3你减1点体力上限选择一项1回复1点体力2摸两张牌然后你获得排异',
quanji_info:'每当你受到1点伤害后你可以可摸一张牌然后将一张手牌置于武将牌上称为你的手牌上限+XX为的数量',
xianzhou_info:'限定技出牌阶段你可以将装备区里的所有牌交给一名其他角色然后该角色选择一项令你回复X点体力;或对其攻击范围内的X名角色各造成1点伤害(X为你以此法交给该角色的牌的数量)',
qieting_info:'一名其他角色的结束阶段若其未于此回合内使用过指定另一名角色为目标的牌你可以选择一项将其装备区里的一张牌移动至你装备区里的相应位置可替换原装备或摸一张牌',
zhuikong_info:'一名其他角色的准备阶段若你已受伤你可以与该角色拼点若你赢该角色本回合使用的牌不能指定除该角色外的角色为目标',
qiuyuan_info:'当你成为的目标时你可以令另一名其他角色选择一项交给你一张成为此的额外目标',
gongji_info:'出牌阶段你可以弃置一张牌令你的攻击范围无限直到回合结束然后若你以此法弃置的牌为装备牌你可以弃置一名其他角色的一张牌每回合限一次',
zhuiyi_info:'你死亡时可以令一名其他角色杀死你的角色除外摸三张牌然后令其回复1点体力',
anxu_info:'出牌阶段限一次你可以选择两名手牌数不同的其他角色令其中手牌多的角色将一张手牌交给手牌少的角色然后若这两名角色手牌数相等你摸一张牌或回复1点体力',
zongxuan_info:'每当你的牌被弃置你可以将其按任意顺序置于牌堆顶',
zhiyan_info:'结束阶段你可以令一名角色摸一张并展示之若是装备牌其立即装备之并回复一点体力',
miji_info:'结束阶段若你已受伤可以摸X张牌然后可以将等量的牌交给一名其他角色X为你已损失的体力值',
zhenlie_info:'每当你成为其他角色的卡牌的目标时你可以流失一点体力取消之然后弃置对方一张牌',
chengxiang_info:'每当你受到一次伤害后你可以亮出牌堆顶的四张牌然后获得其中任意数量点数之和不大于13的牌',
renxin_info:'每当体力值为1的一名其他角色受到伤害时你可以将武将牌翻面并弃置一张装备牌然后防止此伤害',
jingce_info:'出牌阶段结束时若你本回合使用的牌数量大于或等于你当前体力值你可以摸两张牌',
wuyan_info:'锁定技你使用的普通锦囊牌对其他角色无效;其他角色使用的普通锦囊牌对你无效',
xinwuyan_info:'锁定技每当锦囊牌造成伤害时若你为伤害来源你防止此伤害锁定技每当你受到锦囊牌对你造成的伤害时你防止此伤害',
jujian_info:'出牌阶段你可以弃至多三张牌然后让一名其他角色摸等量的牌若你以此法弃牌不少于三张且均为同一类别你回复1点体力每回合限一次',
xinjujian_info:'结束阶段开始时你可以弃置一张非基本牌并选择一名其他角色令其选择一项1.摸两张牌2.回复1点体力3.将其武将牌翻转至正面朝上并重置之',
luoying_info:'当其他角色的梅花牌因弃牌或判定而进入弃牌堆时你可以获得之',
jiushi_info:'若你的武将牌正面朝上你可以(在合理的时机)将你的武将牌翻面来视为使用一张;当你的武将牌背面朝上时你受到伤害你可在伤害结算后将之翻回正面',
jueqing_info:'锁定技你即将造成的伤害均视为失去体力',
shangshi_info:'锁定技当你的手牌数小于X时你立即将手牌补至X张X为你已损失的体力值且最多为3',
xuanfeng_info:'当你失去装备区里的牌时或于弃牌阶段弃置了两张或更多的手牌后你可以依次弃置一至两名其他角色的共计两张牌',
zhiyu_info:'每当你受到一次伤害后你可以摸一张牌然后展示所有手牌若颜色均相同伤害来源弃置一张手牌',
qice_info:'出牌阶段你可以将所有的手牌至少一张当做任意一张通常性锦囊牌使用每阶段限一次',
jiangchi_info:'摸牌阶段摸牌时你可以选择一项1额外摸一张牌若如此做你不能使用或打出直到回合结束 2少摸一张牌若如此做出牌阶段你使用无距离限制且你可以额外使用一张直到回合结束',
zishou_info:'摸牌阶段摸牌时你可以额外摸X张牌X为现存势力数若如此做你于本回合出牌阶段内使用的牌不能指定其他角色为目标',
zongshi_info:'锁定技场上每有一种势力你的手牌上限便1',
danshou_info:'出牌阶段你可以选择你攻击范围内的一名其他角色然后弃置X张牌X为此前你于此阶段你发动胆守的次数+1若X为1你弃置该角色的一张牌为2令该角色交给你一张牌为3你对该角色造成1点伤害不小于4你与该角色各摸两张牌',
olddanshou_info:'每当你造成一次伤害后你可以摸一张牌若如此做终止一切结算当前回合结束',
yizhong_info:'锁定技当你没有防具时黑色的杀对你无效',
xinzhan_info:'出牌阶段限一次你可以观看牌堆顶的3张牌然后展示其中任意数量的牌并获得之',
huilei_info:'锁定技杀死你的角色立即弃置所有的牌',
enyuan_info:'锁定技其他角色每令你回复一点体力该角色摸一张牌;其他角色每对你造成一次伤害须给你一张手牌否则该角色失去1点体力',
xuanhuo_info:'出牌阶段限一次你可以将一张红桃手牌交给一名其他角色获得该角色的一张牌然后交给除该角色外的一名其他角色',
ganlu_info:'出牌阶段你可以选择两名角色交换他们装备区里的所有牌以此法交换的装备数差不能超过X(X为你已损失体力值)每回合限一次',
buyi_info:'当有角色进入濒死状态时你可以展示该角色的一张手牌若此牌不为基本牌则该角色弃掉这张牌并回复1点体力',
mingce_info:'出牌阶段你可以交给任一其他角色一张装备牌或该角色进行二选一1. 视为对其攻击范围内的另一名由你指定的角色使用一张2. 摸一张牌每回合限一次',
zhichi_info:'锁定技你的回合外你每受到一次伤害任何或普通锦囊牌均对你无效直到该回合结束',
zhichi2_info:'智迟已发动',
pojun_info:'你每使用造成一次伤害可令受到该伤害的角色多摸X张牌X为该角色当前的体力值(X最多为5)然后该角色将其武将牌翻面',
},
}