noname/character/mobile.js

8607 lines
296 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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';
game.import('character',function(lib,game,ui,get,ai,_status){
return {
name:'mobile',
//connectBanned:['miheng'],
connect:true,
characterSort:{
mobile:{
mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian"],
mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"],
mobile_shijizhi:["sp_wangcan","sp_chenzhen","sp_sunshao","sp_xunchen","luotong","sp_duyu","sp_bianfuren","feiyi"],
mobile_shijixin:['wujing','sp_mifuren','sp_xinpi'],
mobile_sunben:["re_sunben"],
mobile_standard:["xin_xiahoudun","xin_zhangfei"],
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai"],
mobile_yijiang1:["re_jikang","old_bulianshi","xin_liaohua","xin_caozhang","re_xusheng","xin_chengpu","xin_jianyong","xin_gongsunzan","xin_zhuran","re_lingtong","re_liubiao","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_handang"],
mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan","xin_hansui"],
},
},
character:{
wujing:['male','wu',4,['heji']],
sp_mifuren:['female','shu',3,['spcunsi','spguixiu']],
sp_xinpi:['male','wei',3,['spyinju','spchijie']],
nanhualaoxian:['male','qun',3,['yufeng','tianshu']],
feiyi:['male','shu',3,['reshengxi','fyjianyu']],
sp_bianfuren:['female','wei',3,['spwanwei','spyuejian']],
sp_duyu:['male','qun',4,['spwuku','spsanchen']],
luotong:['male','wu',4,['qinzheng']],
re_handang:['male','wu',4,['regongji','jiefan']],
sp_wangcan:['male','wei',3,['spqiai','spshanxi']],
sp_chenzhen:['male','shu',3,['shameng']],
sp_sunshao:['male','wu',3,['refubi','rezuici']],
sp_xunchen:['male','qun',3,['jianzhan','reduoji']],
re_dengai:['male','wei',4,['retuntian','zaoxian']],
xin_fuhuanghou:['female','qun',3,['xinzhuikong','xinqiuyuan']],
xin_panzhangmazhong:['male','wu',4,['xinduodao','xinanjian']],
xin_guohuai:['male','wei',4,['mobilejingce']],
gongsunkang:['male','qun',4,['juliao','taomie']],
xin_zhangfei:['male','shu',4,['new_repaoxiao','liyong']],
xin_hansui:['male','qun',4,['xinniluan','xiaoxi_hansui']],
hucheer:['male','qun',4,['daoji']],
re_lingtong:['male','wu',4,['rexuanfeng']],
re_liubiao:['male','qun',3,['zishou','rezongshi']],
simashi:['male','wei',4,['baiyi','jinglve','shanli']],
yanghuiyu:['female','wei',3,['hongyi','requanfeng']],
xin_zhuran:['male','wu',4,['mobiledanshou']],
xin_gongsunzan:['male','qun',4,['xinyicong','qiaomeng']],
dingyuan:['male','qun',4,['beizhu']],
xin_jianyong:['male','shu',3,['xinqiaoshui','xinjyzongshi']],
xin_caozhang:['male','wei',4,['rejiangchi']],
xin_liaohua:['male','shu',4,['redangxian','refuli']],
furong:['male','shu',4,['xuewei','liechi']],
re_dongzhuo:['male','qun',8,['rejiuchi','roulin','benghuai','baonue'],['zhu']],
re_xusheng:['male','wu',4,['repojun']],
sp_sufei:['male','qun',4,['zhengjian','gaoyuan']],
yj_zhangliao:['male','qun',4,['weifeng']],
yj_zhanghe:['male','qun',4,['xinzhilve']],
yj_xuhuang:['male','qun',4,['xinxhzhiyan']],
yj_ganning:['male','qun',4,['gnjinfan','gnsheque']],
re_sunjian:['male','wu',4,['gzyinghun','repolu']],
zhengxuan:['male','qun',3,['zhengjing']],
dengzhi:['male','shu',3,['jimeng','shuaiyan']],
xin_chengpu:['male','wu',4,['relihuo','chunlao']],
yangyi:['male','shu',3,['duoduan','gongsun']],
dongcheng:['male','qun',4,['chengzhao']],
re_pangtong:['male','shu',3,['xinlianhuan','niepan'],[]],
re_guanqiujian:['male','wei',4,['rezhengrong','rehongju']],
chendeng:['male','qun',3,['zhouxuan','fengji']],
re_heqi:['male','wu',4,['reqizhou','reshanxi']],
yangbiao:['male','qun',3,['zhaohan','rangjie','yizheng']],
re_sp_zhugeliang:["male","shu",3,["bazhen","rehuoji","rekanpo"],[]],
xin_xiahoudun:['male','wei',4,['reganglie','xinqingjian']],
zhangyì:['male','shu',4,['rezhiyi']],
jiakui:['male','wei',3,['zhongzuo','wanlan']],
re_jikang:["male","wei",3,["new_qingxian","new_juexiang"]],
old_bulianshi:['female','wu',3,['anxu','zhuiyi']],
miheng:['male','qun',3,['kuangcai','shejian']],
taoqian:['male','qun',3,['zhaohuo','yixiang','yirang']],
liuzan:['male','wu',4,['fenyin']],lingcao:['male','wu',4,['dujin']],
sunru:['female','wu',3,['yingjian','shixin']],
lifeng:['male','shu',3,['tunchu','shuliang']],
zhuling:['male','wei',4,['xinzhanyi']],
liuye:['male','wei',3,['polu','choulve']],
zhaotongzhaoguang:["male","shu",4,["yizan_use","xinfu_longyuan"],[]],
majun:["male","wei",3,["xinfu_jingxie1","qiaosi"],[]],
simazhao:["male","wei",3,["xinfu_daigong","xinfu_zhaoxin"],[]],
wangyuanji:["female","wei",3,["xinfu_qianchong","xinfu_shangjian"],[]],
pangdegong:["male","qun",3,["xinfu_pingcai","xinfu_pdgyingshi"],[]],
old_yuanshu:['male','qun',4,['xinyongsi','yjixi']],
shenpei:["male","qun","2/3",["shouye","liezhi"],[]],
re_wangyun:['male','qun',3,['relianji','remoucheng']],
re_baosanniang:['female','shu',3,['meiyong','rexushen','rezhennan']],
hujinding:['female','shu','2/6',['renshi','wuyuan','huaizi']],
re_zhanggong:['male','wei',3,['reqianxin','rezhenxing']],
re_xugong:['male','wu',3,['rebiaozhao','yechou']],
re_weiwenzhugezhi:['male','wu',4,['refuhai']],
xin_yuanshao:['male','qun',4,['reluanji','xueyi'],['zhu']],
re_liushan:['male','shu',3,['xiangle','refangquan','ruoyu'],['zhu']],
re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']],
},
characterIntro:{
dongzhao:'董昭156年236年7月4日字公仁济阴定陶今山东省菏泽市定陶区人。东汉末年曹魏谋士、重臣、开国元勋。董昭年轻时被举为孝廉后担任袁绍帐下参军。多有战功但是袁绍听信谗言董昭不得已离开袁绍投奔张杨。张杨率军迎接汉献帝时董昭随行并拜为议郎。后与曹操在洛阳相见又建议曹操将汉献帝迎接到许昌。董昭自此成为曹操的谋士。建安年间198年历任河南尹、冀州牧、徐州牧、魏郡太守等职多有功劳深受曹操器重。曹操受封魏公、魏王的谋划都是出自董昭之手。曹丕继魏王位后董昭任将作大匠。曹丕称帝后升任大鸿胪。此后先后担任侍中、太常、光禄大夫、太仆等重要职位。魏明帝曹叡即位后转任卫尉。太和六年232年升任司徒。青龙四年236年时年八十一谥曰定。',
wujing:'吴景本吴郡吴县今江苏苏州后迁居吴郡钱塘今浙江杭州孙坚妻子吴夫人武烈皇后之弟孙策和孙权的舅舅东汉末年将领。吴景因追随孙坚征伐有功被任命为骑都尉。袁术上表举荐吴景兼任丹杨太守讨伐前任太守周昕占据丹杨。后遭扬州刺史刘繇逼迫再度依附袁术袁术任用他为督军中郎将与孙贲共同进击樊能等人。又在秣陵攻打笮融、薛礼。袁术与刘备争夺徐州时任吴景为广陵太守。建安二年197年吴景放弃广陵东归孙策孙策任他为丹杨太守。朝廷使者吴景为扬武将军郡守之职照旧。建安八年203年吴景死于任上。',
nanhualaoxian:'南华老仙,是古典小说《三国演义》中的虚拟人物。其原型来自道教典籍中对庄子的封号,又称“南华仙人”、“南华真人”等。在古典小说《三国演义》通行本的第一回中,描述了南华老仙将《太平要术》赠送给张角的情节。',
feiyi:'费祎253年2月字文伟江夏鄳县今河南省罗山县三国时期蜀汉名臣与诸葛亮、蒋琬、董允并称为蜀汉四相。深得诸葛亮器重屡次出使东吴孙权、诸葛恪、羊茞等人以辞锋刁难而费祎据理以答辞义兼备始终不为所屈。孙权非常惊异于他的才能加以礼遇。北伐时为中护军又转为司马。当时魏延与杨仪不和经常争论费祎常为二人谏喻两相匡护以尽其用。诸葛亮死后初为后军师再为尚书令官至大将军封成乡侯。费祎主政时与姜维北伐的主张相左执行休养生息的政策为蜀汉的发展尽心竭力。费祎性格谦恭真诚颇为廉洁家无余财。后为魏降将郭循一作郭脩行刺身死。葬于今广元市昭化古城城西。',
luotong:'骆统193年228年字公绪。会稽郡乌伤县今浙江义乌人。东汉末年至三国时期吴国将领、学者陈国相骆俊之子。骆统二十岁时已任乌程国相任内有政绩使得国中民户过万。又迁为功曹行骑都尉。曾劝孙权尊贤纳士省役息民。后出任为建忠中郎将。将军凌统逝世后统领其部曲。因战功迁偏将军封新阳亭侯任濡须督。黄武七年228年骆统去世年仅三十六岁。有集十卷今已佚。',
chenzhen:'陈震—公元235年字孝起。荆州南阳郡今河南南阳人。三国时期蜀汉官员。刘备领荆州牧时辟陈震为从事。后随刘备入蜀为蜀郡北部都尉、汶山太守、犍为太守。建兴三年225年拜尚书迁尚书令。建兴七年229年孙权称帝。蜀汉以陈震为卫尉前往祝贺与孙权开坛歃盟交分天下。还蜀封城阳亭侯。建兴十三年235年卒。',
nanhualaoxian:'南华老仙,其原型来自道教典籍中对庄子的封号,又称“南华仙人”、“南华真人”等。在古典小说《三国演义》通行本的第一回中,描述了南华老仙将《太平要术》赠送给张角的情节。',
hucheer:'胡车儿(生卒年不详),东汉末年武将,初从张绣,为其心腹猛将,勇冠三军,与贾诩交情甚佳。宛城大战后,张绣投降曹操,曹操爱胡车儿之骁勇,手以黄金与之。后因曹操私纳张绣亡叔张济的遗孀邹氏,张绣深感其辱,欲杀曹操,与贾诩商议后决心反曹。《三国演义》中,作者考虑到典韦的勇猛,便增加了令胡车儿盗走典韦的双戟的情节。最终典韦、曹昂(曹操长子)、曹安民(曹操侄子)皆死于此次战斗。野史说胡车儿跟随曹操征战,被赵云在长坂坡上红枪挑死。',
simashi:'司马师208年255年3月23日字子元河内温县今河南省温县人。三国时期曹魏权臣西晋王朝的奠基人之一晋宣帝司马懿与宣穆皇后张春华的长子晋文帝司马昭的同母兄晋武帝司马炎的伯父。司马师沉着坚强雄才大略早年与夏侯玄、何晏齐名。高平陵政变后以功封长平乡侯旋加卫将军。司马懿死后以抚军大将军辅政独揽朝廷大权次年升为大将军。掌权后他制定选拔官吏的法规命百官推荐贤才整顿纲纪使其各有职掌朝野肃然。司马师也有卓越的军事才能曾用计于新城之战击溃吴国诸葛恪的大军。嘉平六年254年魏帝曹芳与中书令李丰等人密谋除司马师事情泄露司马师杀死参与者迫郭太后废曹芳改立高贵乡公曹髦为帝。次年亲自率兵平定毌丘俭、文钦之乱。回师途中病死时年四十八岁谥号“忠武”。后被追尊为晋景王。西晋建立后被追尊为景皇帝庙号世宗。',
yanghuiyu:'羊徽瑜214年278年泰山南城今山东新泰晋景帝司马师第三任妻子。羊徽瑜出身官宦世家泰山羊氏她是南阳太守羊续的孙女上党太守羊衜之女其母为东汉名士左中郎将蔡邕之女、蔡文姬的姐妹。羊徽瑜聪慧贤德嫁给司马师后未有子女。以司马师之弟司马昭的次子司马攸为继子。司马师死后司马攸侍奉羊徽瑜非常孝顺。泰始元年265年司马昭长子司马炎受禅登基建立西晋追谥伯父司马师为景皇帝。泰始二年266年尊奉羊徽瑜为景皇后因居弘训宫故称弘训太后。咸宁四年278年羊徽瑜去世时年六十五岁谥号景献皇后与司马师合葬峻平陵。',
dingyuan:'丁原—189年字建阳兖州泰山郡南城县山东省平邑县郑城镇人。东汉末年军阀官拜执金吾、并州刺史。任并州刺史期间他亲近、善待主簿吕布又调遣部下张杨、张辽等名将到洛阳任职。汉灵帝驾崩后带兵进入洛阳担任执金吾并与大将军何进谋划诛杀十常侍但不久事情败露何进被宦官杀死。在宦官被诛灭之后丁原与军阀董卓在废帝问题上意见不合产生矛盾于是董卓诱使吕布将其杀害其势力亦被吞并。',
furong:'傅肜róng222年义阳今湖北枣阳三国时蜀汉将领。刘备攻伐吴国时傅肜为别督。后刘备被陆逊击败傅肜率部断后奋战至死。死前怒斥道“吴狗何有汉将军降者”',
zhengxuan:'郑玄127年200年字康成。北海郡高密县今山东省高密市人。东汉末年儒家学者、经学大师。郑玄曾入太学攻《京氏易》、《公羊春秋》及《三统历》、《九章算术》又从张恭祖学《古文尚书》、《周礼》和《左传》等最后从马融学古文经。游学归里之后复客耕东莱聚徒授课弟子达数千人家贫好学终为大儒。党锢之祸起遭禁锢杜门注疏潜心著述。晚年守节不仕却遭逼迫从军最终病逝于元城年七十四。郑玄治学以古文经学为主兼采今文经学。他遍注儒家经典以毕生精力整理古代文化遗产使经学进入了一个“小统一时代”。著有《天文七政论》、《中侯》等书共百万余言世称“郑学”为汉代经学的集大成者。唐贞观年间列郑玄于二十二“先师”之列配享孔庙。宋代时被追封为高密伯。后人建有郑公祠以纪念。',
dengzhi:'邓芝178年251年字伯苗。义阳郡新野县今河南新野人。东汉名将邓禹之后三国时期蜀汉重臣。邓芝早年曾被预言能位至大将后被刘备任为郫令升迁为广汉太守。因任官公廉且有治绩被征入朝为尚书。刘备逝世后奉命出使吴国成功修复两国关系并深为吴大帝孙权所赏识。建兴六年228年丞相诸葛亮策划北伐命邓芝与大将赵云佯攻郿城以吸引魏国曹真军主力。建兴十二年234年迁前军师、前将军领兖州刺史封阳武亭侯不久督领江州。延熙六年243年迁车骑将军后授假节。又率军平定涪陵叛乱。延熙十四年251年邓芝病逝。邓芝性格正直、简单不刻意修饰情绪。他为将二十多年赏罚明断体恤士卒。身上的衣食取自官府从未经营过私产妻儿甚至还有忍饥挨饿之时死时家中也没有多余财物。',
yangyi:'杨仪235年字威公襄阳今湖北襄阳三国时期蜀汉官员。最初为荆州刺史傅群的主簿后投奔关羽任为功曹。关羽遣其至成都大受刘备赞赏擢为尚书。因与尚书令刘巴不和调为弘农太守。建兴三年225年任丞相参军此后一直跟随诸葛亮战斗。亮卒他部署安全退军。诸葛亮在生前定蒋琬继己任杨仪仅拜中军师。建兴十三年235年因多出怨言被削职流放至汉嘉郡。但杨仪仍不自省又上书诽谤言辞激烈最后下狱自杀身亡。',
dongcheng:'董承(?~200年字号不详冀州河间人今河北献县人。东汉末年外戚大臣汉灵帝母亲董太后侄子汉献帝嫔妃董贵人之父。初从西凉军为董卓女婿牛辅部曲。护卫汉献帝刘协从长安东归洛阳拜为卫将军受封列侯。建安四年199年拜车骑将军。自称领受汉献帝衣带诏联合刘备、种辑、吴子兰、王子服、吴硕等人密谋诛杀曹操。五年正月图谋泄露董承诸人及董贵人全部遇害。',
chendeng:'陈登163—201字元龙下邳淮浦今江苏涟水西人。东汉末年将领、官员。沛相陈珪之子。为人爽朗性格沈静智谋过人少年时有扶世济民之志并且博览群书学识渊博。二十五岁时举孝廉任东阳县长。虽然年轻但他能够体察民情抚弱育孤深得百姓敬重。后来徐州牧陶谦提拔他为典农校尉主管一州农业生产。他亲自考察徐州的土壤状况开发水利发展农田灌溉使汉末迭遭破坏的徐州农业得到一定程度的恢复百姓们安居乐业“秔稻丰积”。建安初奉使赴许向曹操献灭吕布之策被授广陵太守。以灭吕布有功加伏波将军。又迁东城太守。年三十九卒。其子陈肃魏文帝时追陈登之功为郎中。',
yangbiao:'杨彪142年225年字文先。弘农郡华阴县今陕西华阴人。东汉末年名臣太尉杨赐之子、名士杨修之父。杨彪少年时受家学熏陶初举孝廉、茂才。其后征拜为议郎参与续写《东观汉记》。任京兆尹时揭发黄门令王甫的贪赃行为使其被定罪诛杀。累任侍中、五官中郎将、卫尉等职。汉献帝时遍历三公司空、司徒、太尉之职。权臣董卓意图迁都时他据理力争。献帝东迁时杨彪尽节护主。曹操挟献帝定都许县后将杨彪下狱获释后又任太常。他见汉室衰微便诈称脚疾不理世事。曹魏建立后拒绝出任太尉改光禄大夫待以客礼。黄初六年225年杨彪去世年八十四。其著作现仅存《答曹公书》一篇。',
zhangyì:'张翼264年字伯恭益州犍为郡武阳县人。三国时期蜀汉将领。历任梓潼、广汉、蜀郡三郡太守出任庲降都督后随诸葛亮和姜维北伐官至左车骑将军领冀州刺史。初封关内侯进爵都亭侯。蜀汉灭亡后魏将钟会密谋造反成都大乱张翼亦为乱兵所杀。张翼是蜀汉第三任庲降都督由于执法严厉不得南夷欢心。在北伐上张翼认为国小民疲不应滥用武力是蜀汉朝廷当时极少敢当朝和姜维争辩北伐问题的大臣。',
jiakui:'贾逵174年—228年本名贾衢字梁道河东襄陵人今山西临汾县。汉末三国时期魏国名臣西晋开国功臣贾充父亲。初为并州郡吏迁渑池县令拜弘农太守历仕曹操、曹丕、曹叡三世是曹魏政权中具有军政才干的人物终其一生为魏国统一事业作出卓越贡献。担任豫州刺史期间兴修水利凿通运河二百余里时称“贾侯渠”便利民生。随同曹丕伐吴进封阳里亭侯加号建威将军。石亭之战率军救出曹休。太和二年去世赠本官谥号为肃《唐会要》将其尊为魏晋八君子之一。',
shenpei:'审配204年字正南魏郡阴安今河北清丰北人。为人正直 袁绍领冀州,审配被委以腹心之任,并总幕府。河北平定,袁绍以审配、逢纪统军事,审配恃其强盛,力主与曹操决战。曾率领弓弩手大破曹军于官渡。官渡战败,审配二子被俘,反因此受谮见疑,幸得逢纪力保。袁绍病死,审配等矫诏立袁尚为嗣,导致兄弟相争,被曹操各个击破。曹操围邺,审配死守数月,终城破被擒,拒不投降,慷慨受死。',
hujinding:'胡金定,女,传说中关羽之妻。关索之母,配偶关羽,出处《花关索传》和元代《三国志评话》民间传说人物。',
},
card:{
pss_paper:{
type:'pss',
fullskin:true,
//derivation:'shenpei',
},
pss_scissor:{
type:'pss',
fullskin:true,
//derivation:'shenpei',
},
pss_stone:{
type:'pss',
fullskin:true,
//derivation:'shenpei',
},
db_atk1:{
type:'db_atk',
fullimage:true,
//derivation:'shenpei',
},
db_atk2:{
type:'db_atk',
fullimage:true,
//derivation:'shenpei',
},
db_def1:{
type:'db_def',
fullimage:true,
//derivation:'shenpei',
},
db_def2:{
type:'db_def',
fullimage:true,
//derivation:'shenpei',
},
ly_piliche:{
fullskin:true,
vanish:true,
derivation:'liuye',
type:'equip',
subtype:'equip1',
distance:{attackFrom:-8},
skills:['ly_piliche'],
destroy:'polu'
},
"wolong_card":{
type:"takaramono",
fullskin:true,
//derivation:"pangdegong",
},
"fengchu_card":{
type:"takaramono",
fullskin:true,
//derivation:"pangdegong",
},
"xuanjian_card":{
fullskin:true,
type:"takaramono",
//derivation:"pangdegong",
},
"shuijing_card":{
fullskin:true,
type:"takaramono",
//derivation:"pangdegong",
},
"rewrite_bagua":{
derivation:"majun",
//cardimage:"bagua",
fullskin:true,
type:"equip",
subtype:"equip2",
ai:{
basic:{
equipValue:7.5,
},
},
skills:["rw_bagua_skill"],
},
"rewrite_baiyin":{
derivation:"majun",
fullskin:true,
//cardimage:"baiyin",
type:"equip",
subtype:"equip2",
filterLose:function(card,player){
if(player.hasSkillTag('unequip2')) return false;
return true;
},
loseDelay:false,
onLose:function(){
var next=game.createEvent('rewrite_baiyin_recover');
event.next.remove(next);
var evt=event.getParent();
if(evt.getlx===false) evt=evt.getParent();
evt.after.push(next);
next.player=player;
next.setContent(function(){
player.logSkill('rw_baiyin_skill');
player.draw(2);
player.recover();
});
},
skills:["rw_baiyin_skill"],
tag:{
recover:1,
},
ai:{
order:9.5,
equipValue:function(card,player){
if(player.hp==player.maxHp) return 5;
if(player.countCards('h','rewrite_baiyin')) return 6;
return 0;
},
basic:{
equipValue:5,
},
},
},
"rewrite_lanyinjia":{
derivation:"majun",
//cardimage:"lanyinjia",
fullskin:true,
type:"equip",
subtype:"equip2",
skills:["rw_lanyinjia","lanyinjia2"],
ai:{
equipValue:6,
basic:{
equipValue:1,
},
},
},
"rewrite_renwang":{
derivation:"majun",
//cardimage:"renwang",
fullskin:true,
type:"equip",
subtype:"equip2",
skills:["rw_renwang_skill"],
ai:{
basic:{
equipValue:7.5,
},
},
},
"rewrite_tengjia":{
derivation:"majun",
//cardimage:"tengjia",
fullskin:true,
type:"equip",
subtype:"equip2",
//cardnature:"fire",
ai:{
equipValue:function(card,player){
if(player.hasSkillTag('maixie')&&player.hp>1) return 0;
if(player.hasSkillTag('noDirectDamage')) return 10;
if(get.damageEffect(player,player,player,'fire')>=0) return 10;
var num=3-game.countPlayer(function(current){
return get.attitude(current,player)<0;
});
if(player.hp==1) num+=4;
if(player.hp==2) num+=1;
if(player.hp==3) num--;
if(player.hp>3) num-=4;
return num;
},
basic:{
equipValue:3,
},
},
skills:["rw_tengjia1","rw_tengjia2","rw_tengjia3","rw_tengjia4"],
},
"rewrite_zhuge":{
derivation:"majun",
//cardimage:"zhuge",
distance:{
attackFrom:-2,
},
fullskin:true,
type:"equip",
subtype:"equip1",
ai:{
equipValue:function(card,player){
if(!game.hasPlayer(function(current){
return player.canUse('sha',current)&&get.effect(current,{name:'sha'},player,player)>0;
})){
return 1;
}
if(player.hasSha()&&_status.currentPhase==player){
if(player.getEquip('zhuge')||player.getCardUsable('sha')==0){
return 10;
}
}
var num=player.countCards('h','sha');
if(num>1) return 6+num;
return 3+num;
},
basic:{
equipValue:5,
},
tag:{
valueswap:1,
},
},
skills:["rw_zhuge_skill"],
},
},
characterFilter:{
simashi:function(mode){
return !['boss','chess','tafang','stone','versus'].contains(mode);
},
},
skill:{
//狗剩
reduoji:{
audio:'duoji',
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('he')>0;
},
filterCard:true,
position:'he',
filterTarget:lib.filter.notMe,
discard:false,
toStorage:true,
delay:false,
check:function(card){
return 3-get.value(card);
},
content:function(){
'step 0'
player.$give(cards[0],target,false);
target.markAuto('reduoji',cards);
game.log(player,'将',cards[0],'放在了',target,'的武将牌上');
'step 1'
game.delay();
},
group:['reduoji_equip','reduoji_gain'],
intro:{
content:'cards',
onunmark:'throw',
},
ai:{
order:1,
result:{target:-1},
},
subSkill:{
equip:{
audio:'duoji',
trigger:{global:'equipAfter'},
forced:true,
filter:function(event,player){
if(player==event.player||!event.player.getStorage('reduoji').length||!event.player.getCards('e').contains(event.card)) return false;
var evt=event.getParent(2);
return evt.name=='useCard'&&evt.player==event.player;
},
logTarget:'player',
content:function(){
'step 0'
player.gain(trigger.card,trigger.player,'give','bySelf');
'step 1'
var target=trigger.player,storage=target.getStorage('reduoji');
if(storage.length){
var card=storage[0];
target.$throw(card,1000);
target.unmarkAuto('reduoji',[card]);
game.log(target,'移去了',card);
game.cardsDiscard(card);
target.draw();
}
},
},
gain:{
audio:'duoji',
trigger:{global:'phaseEnd'},
forced:true,
filter:function(event,player){
return event.player.getStorage('reduoji').length>0;
},
logTarget:'player',
content:function(){
var target=trigger.player,cards=target.storage.reduoji;
target.$give(cards,player);
player.gain(cards,'fromStorage');
cards.length=0;
target.unmarkSkill('reduoji');
game.delay();
},
},
},
},
//SP辛毗
spyinju:{
audio:2,
enable:'phaseUse',
usable:1,
filterTarget:lib.filter.notMe,
content:function(){
"step 0"
target.chooseToUse(function(card,player,event){
if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},'引裾:对'+get.translation(player)+'使用一张杀,或跳过下回合的出牌阶段和弃牌阶段').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
return lib.filter.filterTarget.apply(this,arguments);
}).set('sourcex',player);
"step 1"
if(!result.bool) target.addSkill('spyinju2');
},
ai:{
order:1,
expose:0.2,
result:{
target:-1.5,
player:function(player,target){
if(!target.canUse('sha',player)) return 0;
if(target.countCards('h')==0) return 0;
if(target.countCards('h')==1) return -0.1;
if(player.countCards('h','shan')==0) return -1;
if(player.hp<2) return -2;
return -0.5;
}
},
threaten:1.1
}
},
spyinju2:{
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
charlotte:true,
content:function(){
player.skip('phaseUse');
player.skip('phaseDiscard');
player.removeSkill('spyinju2');
game.log(player,'跳过了出牌阶段');
game.log(player,'跳过了弃牌阶段');
},
mark:true,
intro:{content:'衣襟被拽住了,下个准备阶段开始时跳过出牌阶段和弃牌阶段'},
},
spchijie:{
audio:2,
trigger:{target:'useCardToTarget'},
usable:1,
filter:function(event,player){
return event.player!=player&&event.targets.length==1;
},
check:function(event,player){
return get.effect(player,event.card,event.player,player)<0;
},
content:function(){
'step 0'
player.judge(function(card){
if(get.number(card)>6) return 2;
return 0;
});
'step 1'
if(result.bool){
trigger.targets.length=0;
trigger.getParent().triggeredTargets2.length=0;
trigger.cancel();
}
},
},
//糜夫人
spcunsi:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return !player.isTurnedOver();
},
filterTarget:lib.filter.notMe,
content:function(){
'step 0'
player.turnOver();
'step 1'
var card=get.cardPile(function(card){
return card.name=='sha';
});
if(card) target.gain(card,'gain2');
'step 2'
target.addSkill('spcunsi2');
target.addMark('spcunsi2',1,false);
},
ai:{
order:1,
result:{
target:function(player,target){
var card={name:'sha',isCard:true};
if(!target.hasSkillTag('nogain')&&game.hasPlayer(function(current){
return (get.attitude(target,current)<0&&
!current.hasShan()
&&target.canUse(card,current)&&
!current.hasSkillTag('filterDamage',null,{
player:target,
card:card,
jiu:true,
})&&
get.effect(current,card,target)>0);
})){
return 4;
}
return 0;
},
},
},
},
spcunsi2:{
charlotte:true,
trigger:{player:'useCard1'},
firstDo:true,
forced:true,
popup:false,
onremove:true,
filter:function(event,player){
return event.card.name=='sha';
},
content:function(){
trigger.baseDamage+=player.countMark('spcunsi2');
player.removeSkill('spcunsi2');
},
marktext:'嗣',
intro:{
content:'下一张【杀】的伤害+#',
},
},
spguixiu:{
trigger:{player:'damageEnd'},
forced:true,
filter:function(event,player){
if(typeof event.spguixiu=='boolean'&&!event.spguixiu) return false;
return player.isTurnedOver();
},
content:function(){
player.turnOver();
},
group:['spguixiu_draw','spguixiu_count'],
subSkill:{
count:{
trigger:{player:'damageBegin2'},
lastDo:true,
silent:true,
content:function(){
event.spguixiu=player.isTurnedOver();
},
},
draw:{
trigger:{player:'turnOverAfter'},
forced:true,
filter:function(event,player){
return !player.isTurnedOver();
},
content:function(){
player.draw();
},
},
},
},
//那个男人的舅舅
heji:{
audio:2,
trigger:{global:'useCardAfter'},
direct:true,
locked:false,
filter:function(event,player){
if(event.targets.length!=1||event.targets[0]==player||event.targets[0].isDead()) return false;
if(event.card.name!='juedou'&&(event.card.name!='sha'||get.color(event.card)!='red')) return false;
if(_status.connectMode&&player.countCards('h')>0) return true;
return player.hasSha()||player.hasUsableCard('juedou');
},
content:function(){
player.chooseToUse(function(card,player,event){
var name=get.name(card);
if(name!='sha'&&name!='juedou') return false;
return lib.filter.cardEnabled.apply(this,arguments);
},'合击:是否对'+get.translation(trigger.targets[0])+'使用一张【杀】或【决斗】?').set('logSkill','heji').set('complexSelect',true).set('filterTarget',function(card,player,target){
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
return lib.filter.targetEnabled.apply(this,arguments);
}).set('sourcex',trigger.targets[0]).set('addCount',false);
},
group:'heji_gain',
subSkill:{
gain:{
trigger:{player:'useCard'},
forced:true,
popup:false,
filter:function(event,player){
return event.card.isCard&&event.getParent(2).name=='heji';
},
content:function(){
var card=get.cardPile2(function(card){
return get.color(card,false)=='red';
});
if(card) player.gain(card,'gain2');
},
},
},
mod:{
aiOrder:function(player,card,num){
if(get.name(card,player)=='sha'&&get.color(card,player)=='red') return num+0.6*(_status.event.name=='chooseToUse'?1:-1);
},
},
},
//南华老仙
yufeng:{
audio:2,
enable:'phaseUse',
usable:1,
content:function(){
"step 0"
if(_status.connectMode) event.time=lib.configOL.choose_timeout;
event.videoId=lib.status.videoId++;
if(player.isUnderControl()){
game.swapPlayerAuto(player);
}
var switchToAuto=function(){
game.pause();
game.countChoose();
setTimeout(function(){
_status.imchoosing=false;
var max=1+player.countMark('yufeng');
var score=Math.random()<0.5?max:get.rand(1,max);
event._result={
bool:true,
score:score,
win:score>=max,
};
if(event.dialog) event.dialog.close();
if(event.control) event.control.close();
game.resume();
},5000);
};
var createDialog=function(player,id){
if(_status.connectMode) lib.configOL.choose_timeout='30';
if(player==game.me) return;
var str=get.translation(player)+'正在表演《御风飞行》...<br>';
ui.create.dialog(str).videoId=id;
};
var chooseButton=function(){
var roundmenu=false;
if(ui.roundmenu&&ui.roundmenu.display!='none'){
roundmenu=true;
ui.roundmenu.style.display='none';
}
var event=_status.event;
event.settleed=false;
event.score=0;
event.dialog=ui.create.dialog('forcebutton','hidden');
event.dialog.textPrompt=event.dialog.add('<div class="text center">准备好了吗?准备好了的话就点击屏幕开始吧!</div>');
var max=1+game.me.countMark('yufeng');
event.dialog.textPrompt.style["z-index"]=10;
event.switchToAuto=function(){
event._result={
bool:true,
score:event.score,
win:event.score>=max,
};
event.dialog.close();
game.resume();
_status.imchoosing=false;
if(roundmenu) ui.roundmenu.style.display='';
};
event.dialog.classList.add('fixed');
event.dialog.classList.add('scroll1');
event.dialog.classList.add('scroll2');
event.dialog.classList.add('fullwidth');
event.dialog.classList.add('fullheight');
event.dialog.classList.add('noupdate');
event.dialog.style.overflow='hidden';
event.dialog.open();
var height=event.dialog.offsetHeight;
var width=event.dialog.offsetWidth;
var top=50;
var speed=0;
var start=false;
var bird=ui.create.div('');
bird.style["background-image"]='linear-gradient(rgba(240, 235, 3, 1), rgba(230, 225, 5, 1))';
bird.style["border-radius"]='3px';
var pipes=[];
bird.style.position='absolute';
bird.style.height='40px';
bird.style.width='40px';
bird.style.left=Math.ceil(width/3)+'px';
bird.style.top=(top/100*height)+'px';
bird.updatePosition=function(){
bird.style.transform='translateY('+(top/100*height-bird.offsetTop)+'px)';
};
event.dialog.appendChild(bird);
var isDead=function(){
if(top>100||top<0) return true;
var btop=top;
var bleft=100/3;
var bdown=btop+5;
var bright=bleft+5;
for(var i of pipes){
var left2=i.left;
var right2=left2+10;
var bottom2=i.height1;
var top2=i.height2;
if(left2>bright||right2<bleft) continue;
if(btop<bottom2) return true;
if(bdown>top2) return true;
return false;
}
return false;
};
var fly=function(){
if(!start){
start=true;
event.dialog.textPrompt.innerHTML='<div class="text center">当前分数:'+event.score+'</div>';
speed=-4;
event.fly=setInterval(function(){
top+=speed;
if(top<0) top=0;
bird.updatePosition();
for(var i of pipes){
i.left-=0.5;
i.updateLeft();
}
speed+=0.5;
if(speed>2.5) speed=2.5;
if(isDead()==true){
event.settle();
}
},35);
var addPipe=function(){
var num=get.rand(5,55);
var pipe1=ui.create.div('');
pipe1.style["background-image"]='linear-gradient(rgba(57, 133, 4, 1), rgba(60, 135, 6, 1))';
pipe1.style["border-radius"]='3px';
pipe1.style.position='absolute';
pipe1.height1=num;
pipe1.height2=num+50;
pipe1.left=110;
pipe1.num=1;
pipe1.style.height=Math.ceil(height*num/100)+'px';
pipe1.style.width=(width/10)+'px';
pipe1.style.left=(pipe1.left*width/100)+'px';
pipe1.style.top='0px';
var pipe2=ui.create.div('');
pipe2.style["background-image"]='linear-gradient(rgba(57, 133, 4, 1), rgba(60, 135, 6, 1))';
pipe2.style["border-radius"]='3px';
pipe1.pipe2=pipe2;
pipe2.style.position='absolute';
pipe2.style.height=Math.ceil((100-pipe1.height2)*height/100)+'px';
pipe2.style.width=(width/10)+'px';
pipe2.style.left=(pipe1.left*width/100)+'px';
pipe2.style.top=Math.ceil(pipe1.height2*height/100)+'px';
pipes.add(pipe1);
event.dialog.appendChild(pipe1);
event.dialog.appendChild(pipe2);
pipe1.updateLeft=function(){
this.style.transform='translateX('+((this.left/100*width)-this.offsetLeft)+'px)';
this.pipe2.style.transform='translateX('+((this.left/100*width)-this.pipe2.offsetLeft)+'px)';
if(this.left<25&&!this.score){
this.score=true;
event.score++;
event.dialog.textPrompt.innerHTML='<div class="text center">当前分数:'+event.score+'</div>';
if(event.score>=max){
event.settle();
}
}
if(this.left<-15){
this.remove();
this.pipe2.remove();
pipes.remove(this);
}
}
};
event.addPipe=setInterval(addPipe,2500);
}
else if(speed>0){
speed=-4;
}
};
document.addEventListener(lib.config.touchscreen?'touchend':'click',fly);
event.settle=function(){
clearInterval(event.fly);
clearInterval(event.addPipe);
document.removeEventListener(lib.config.touchscreen?'touchend':'click',fly);
setTimeout(function(){
event.switchToAuto()
},1000);
};
game.pause();
game.countChoose();
};
//event.switchToAuto=switchToAuto;
game.broadcastAll(createDialog,player,event.videoId);
if(event.isMine()){
chooseButton();
}
else if(event.isOnline()){
event.player.send(chooseButton);
event.player.wait();
game.pause();
}
else{
switchToAuto();
}
"step 1"
game.broadcastAll(function(id,time){
if(_status.connectMode) lib.configOL.choose_timeout=time;
var dialog=get.idDialog(id);
if(dialog){
dialog.close();
}
},event.videoId,event.time);
var result=event.result||result;
player.popup(get.cnNumber(result.score)+'分',result.win?'wood':'fire')
game.log(player,'御风飞行',result.win?'#g成功':'#y失败');
game.log(player,'获得了','#g'+result.score+'分');
var max=player.countMark('yufeng');
if(!result.win){
if(result.score) player.draw(result.score);
if(max) player.removeMark('yufeng',max,false);
event.finish();
}
else{
if(max<2) player.addMark('yufeng',1,false);
event.score=result.score;
player.chooseTarget('请选择【御风】的目标',[1,result.score],function(card,player,target){
return target!=player&&!target.hasSkill('yufeng2');
}).set('ai',function(target){
var player=_status.event.player;
var att=-get.attitude(player,target),attx=att*2;
if(att<=0||target.hasSkill('xinfu_pdgyingshi')) return 0;
if(target.hasJudge('lebu')) attx-=att;
if(target.hasJudge('bingliang')) attx-=att;
return attx/Math.max(2.25,Math.sqrt(target.countCards('h')+1));
});
}
"step 2"
if(result.bool){
result.targets.sortBySeat();
player.line(result.targets,'green');
game.log(result.targets,'获得了','#y“御风”','效果');
for(var i of result.targets) i.addSkill('yufeng2');
if(event.score>result.targets.length) player.draw(event.score-result.targets.length);
}
else player.draw(event.score);
},
ai:{
order:10,
result:{player:1},
threaten:3.2,
}
},
yufeng2:{
trigger:{player:'phaseZhunbeiBegin'},
audio:false,
forced:true,
charlotte:true,
content:function(){
'step 0'
player.removeSkill('yufeng2');
player.judge();
'step 1'
if(result.color=='red') player.skip('phaseDraw');
else{
player.skip('phaseUse');
player.skip('phaseDiscard');
}
},
mark:true,
intro:{
content:'准备阶段时进行判定,结果为红则跳过摸牌阶段,为黑则跳过出牌阶段和弃牌阶段',
},
ai:{
order:7,
result:{
player:1,
},
},
},
tianshu:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('he')>0&&!game.hasPlayer(function(current){
return current.countCards('ej','taipingyaoshu');
});
},
position:'he',
filterCard:true,
filterTarget:true,
check:function(card){
return 6-get.value(card);
},
content:function(){
'step 0'
if(!lib.inpile.contains('taipingyaoshu')){
lib.inpile.push('taipingyaoshu');
event.card=game.createCard2('taipingyaoshu','heart',3);
}
else{
event.card=get.cardPile(function(card){
return card.name=='taipingyaoshu';
});
}
if(!event.card) event.finish();
else target.gain(event.card,'gain2');
'step 1'
if(target.getCards('h').contains(card)&&get.name(card,target)=='taipingyaoshu') target.chooseUseTarget(card,'nopopup',true);
},
ai:{
order:3,
result:{
target:function(player,target){
if(lib.inpile.contains('taipingyaoshu')&&!get.cardPile(function(card){
return card.name=='taipingyaoshu';
})) return 0;
return target.getUseValue({name:'taipingyaoshu'});
},
},
},
},
//始计篇·智
refubi:{
audio:'fubi',
trigger:{
global:'gameDrawAfter',
player:'enterGame',
},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('refubi'),lib.filter.notMe).set('ai',function(target){
return 1+get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('refubi',target);
target.addMark('refubi',1);
}
},
intro:{
content:function(info,player){
var str='已获得“辅弼”标记'
if(player.storage.refubi_effect0){
str+=';本回合使用【杀】的次数上限+';
str+=player.storage.refubi_effect0;
}
if(player.storage.refubi_effect1){
str+=';本回合的手牌上限+';
str+=(player.storage.refubi_effect1*3);
}
return str;
},
},
marktext:'弼',
group:'refubi_buff',
subSkill:{
buff:{
trigger:{global:'phaseZhunbeiBegin'},
direct:true,
filter:function(event,player){
return event.player!=player&&event.player.hasMark('refubi');
},
content:function(){
'step 0'
var str=get.translation(trigger.player);
player.chooseControl('cancel2').set('choiceList',[
'令'+str+'本回合使用【杀】的次数上限+1',
'令'+str+'本回合的手牌上限+3',
]).set('ai',function(){
var player=_status.event.player,target=_status.event.getTrigger().player;
if(get.attitude(player,target)<=0) return 'cancel2';
if(!target.hasJudge('lebu')&&target.countCards('h',function(card){
return get.name(card,target)=='sha'&&target.hasValueTarget(card);
})>target.getCardUsable('sha')) return 0;
return 1;
});
'step 1'
if(result.control!='cancel2'){
var target=trigger.player;
player.logSkill('refubi',target);
var str='refubi_effect'+result.index;
target.addTempSkill(str);
target.addMark(str,1,false);
game.log(target,[
'本回合使用【杀】的次数上限+1',
'本回合的手牌上限+3',
][result.index]);
}
},
},
effect0:{
onremove:true,
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+player.countMark('refubi_effect0');
},
},
},
effect1:{
onremove:true,
mod:{
maxHandcard:function(player,num){
return num+3*player.countMark('refubi_effect1');
},
},
},
},
},
rezuici:{
audio:'zuici',
enable:'chooseToUse',
filter:function(event,player){
if(event.type=='phase'||event.type=='dying'&&player==event.dying) return (player.isDamaged()&&player.countCards('e')>0);
return false;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('###罪辞###选择废除一个有牌的装备栏然后回复2点体力并可移动“辅弼”标记。');
},
chooseControl:function(event,player){
var list=[];
for(var i=1;i<6;i++){
if(player.getEquip(i)) list.push('equip'+i);
}
list.push('cancel2');
return list;
},
check:function(event,player){
if(player.hp>1&&player.getDamagedHp()<2) return 'cancel2';
var cards=player.getCards('e').sort(function(a,b){
return get.value(a)-get.value(b);
});
var sub=get.subtype(cards[0],false);
if(player.hp<1) return sub;
var val=get.value(cards[0]);
if(val<0) return sub;
return val<4?sub:'cancel2';
},
backup:function(result){
var next=get.copy(lib.skill.rezuicix);
next.position=result.control;
return next;
},
},
ai:{
order:2.7,
result:{
player:1,
},
save:true,
skillTagFilter:function(player,tag,arg){
return player==arg;
},
},
},
rezuicix:{
audio:'zuici',
content:function(){
'step 0'
player.disableEquip(lib.skill.rezuici_backup.position);
player.recover(2);
'step 1'
var b1=false,b2=false;
for(var i of game.players){
if(i.hasMark('refubi')) b1=true;
else if(i!=player) b2=true;
if(b1&&b2) break;
}
if(b1&&b2){
player.chooseTarget('是否转移“辅弼”标记?',function(card,player,target){
return target!=player&&!target.hasMark('refubi');
}).set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
return Math.min(att,att-_status.event.preatt);
}).set('preatt',get.attitude(player,game.findPlayer(function(current){
return current.hasMark('refubi');
})));
}
else event.finish();
'step 2'
if(result.bool){
var target=result.targets[0];
player.line(target,'group');
game.countPlayer(function(current){
var num=current.countMark('refubi');
if(num) current.removeMark('refubi',1,false);
});
target.addMark('refubi',1);
}
},
ai:{
result:{
player:1,
},
},
},
reshengxi:{
audio:'shengxi',
audioname:['feiyi'],
trigger:{player:'phaseJieshuBegin'},
frequent:true,
filter:function(event,player){
return !player.getHistory('sourceDamage').length;
},
content:function(){
player.draw(2);
},
},
fyjianyu:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return !player.hasSkill('fyjianyu2')&&game.countPlayer(function(current){
return !current.hasMark('fyjianyux');
})>1;
},
filterTarget:function(card,player,target){
return !target.hasMark('fyjianyux');
},
selectTarget:2,
content:function(){
player.addTempSkill('fyjianyux',{player:'phaseBegin'});
target.addMark('fyjianyux',1);
},
ai:{
order:0.1,
result:{
target:function(player,target){
if(!ui.selected.targets.length) return target==player?1:0;
if(get.attitude(player,target)<0) return -1.6*(1+(target.countCards('h',function(card){
return target.hasValueTarget(card)&&get.effect(player,card,target,target)>0;
}))*Math.sqrt(target.countCards('h')));
return 0.3*(1+(target.countCards('h',function(card){
return target.hasValueTarget(card)&&get.effect(player,card,target,target)>0;
}))*Math.sqrt(target.countCards('h')));
},
},
},
},
fyjianyux:{
trigger:{global:'useCardToPlayer'},
forced:true,
charlotte:true,
filter:function(event,player){
return event.player!=event.target&&event.player.hasMark('fyjianyux')&&
event.target.hasMark('fyjianyux')&&event.target.isAlive();
},
logTarget:'target',
content:function(){
trigger.target.draw();
},
onremove:function(){
game.countPlayer(function(current){
var num=current.countMark('fyjianyux');
if(num) current.removeMark('fyjianyux');
});
},
intro:{
content:'mark',
},
},
fyjianyu2:{},
spwanwei:{
audio:2,
enable:'chooseToUse',
filter:function(event,player){
if(player.hasSkill('spwanwei2')||player.hp<1) return false;
if(event.type=='dying') return event.dying!=player;
if(event.type!='phase') return false;
return game.hasPlayer(function(current){
return current!=player&&current.isDamaged();
});
},
filterTarget:function(card,player,target){
if(_status.event.type=='dying') return target==_status.event.dying;
return player!=target&&target.isDamaged();
},
selectTarget:function(){
if(_status.event.type=='dying') return -1;
return 1;
},
content:function(){
player.addTempSkill('spwanwei2','roundStart');
var num=player.hp;
target.recover(Math.max(num+1,1-target.hp));
player.loseHp(num);
},
ai:{
save:true,
skillTagFilter:function(player,tag,target){
return player!=target;
},
expose:0.5,
order:6,
result:{
target:function(player,target){
if(_status.event.type!='dying') return 0;
if(get.attitude(player,target)<4) return 0;
if(player.countCards('he')<2&&target!=get.zhu(player)) return 0;
return 1;
},
},
},
},
spwanwei2:{},
spyuejian:{
mod:{
maxHandcardBase:function(player){
return player.maxHp;
},
},
audio:2,
enable:'chooseToUse',
filter:function(event,player){
return event.type=='dying'&&player==event.dying&&player.countCards('he')>1;
},
selectCard:2,
filterCard:true,
position:'he',
check:function(card){
return 1/Math.max(0.1,get.value(card));
},
content:function(){
player.recover();
},
ai:{
save:true,
skillTagFilter:function(player,tag,target){
return player==target;
},
order:1.4,
result:{
player:1,
},
},
},
spwuku:{
audio:2,
trigger:{global:'useCard'},
forced:true,
filter:function(event,player){
if(get.type(event.card)!='equip') return false;
var gz=get.mode()=='guozhan';
if(gz&&event.player.isFriendOf(player)) return false;
return player.countMark('spwuku')<(gz?2:3);
},
content:function(){
player.addMark('spwuku',1);
},
marktext:'库',
intro:{
content:'mark',
},
},
spsanchen:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
forced:true,
juexingji:true,
skillAnimation:true,
animationColor:'gray',
filter:function(event,player){
return player.countMark('spwuku')>2;
},
content:function(){
player.awakenSkill('spsanchen');
player.gainMaxHp();
player.recover();
player.addSkillLog('spmiewu');
},
derivation:'spmiewu',
},
spmiewu:{
audio:2,
enable:['chooseToUse','chooseToRespond'],
filter:function(event,player){
if(!player.countMark('spwuku')||!player.countCards('hse')||player.hasSkill('spmiewu2')) return false;
for(var i of lib.inpile){
var type=get.type2(i);
if((type=='basic'||type=='trick')&&lib.filter.filterCard({name:i},player,event)) return true;
}
return false;
},
chooseButton:{
dialog:function(event,player){
var list=[];
for(var i=0;i<lib.inpile.length;i++){
var name=lib.inpile[i];
if(name=='sha'){
if(event.filterCard({name:name},player,event)) list.push(['基本','','sha']);
if(event.filterCard({name:name,nature:'fire'},player,event)) list.push(['基本','','sha','fire']);
if(event.filterCard({name:name,nature:'thunder'},player,event)) list.push(['基本','','sha','thunder']);
if((get.mode()!='guozhan'||_status.mode=='yingbian')&&event.filterCard({name:name,nature:'ice'},player,event)) list.push(['基本','','sha','ice']);
}
else if(get.type2(name)=='trick'&&event.filterCard({name:name},player,event)) list.push(['锦囊','',name]);
else if(get.type(name)=='basic'&&event.filterCard({name:name},player,event)) list.push(['基本','',name]);
}
return ui.create.dialog('灭吴',[list,'vcard']);
},
filter:function(button,player){
return _status.event.getParent().filterCard({name:button.link[2]},player,_status.event.getParent());
},
check:function(button){
var player=_status.event.player;
if(player.countCards('hs',button.link[2])>0) return 0;
if(['wugu','zhulu_card'].contains(button.link[2])) return 0;
var effect=player.getUseValue(button.link[2]);
if(effect>0) return effect;
return 0;
},
check:function(button){
if(_status.event.getParent().type!='phase') return 1;
var player=_status.event.player;
if(['wugu','zhulu_card','yiyi','lulitongxin','lianjunshengyan','diaohulishan'].contains(button.link[2])) return 0;
return player.getUseValue({
name:button.link[2],
nature:button.link[3],
});
},
backup:function(links,player){
return {
filterCard:true,
audio:'spmiewu',
popname:true,
check:function(card){
return 8-get.value(card);
},
position:'hse',
viewAs:{name:links[0][2],nature:links[0][3]},
precontent:function(){
player.addTempSkill('spmiewu2');
player.removeMark('spwuku',1);
},
}
},
prompt:function(links,player){
return '将一张牌当做'+(get.translation(links[0][3])||'')+get.translation(links[0][2])+'使用';
}
},
hiddenCard:function(player,name){
var type=get.type2(name);
return (type=='basic'||type=='trick')&&player.countMark('spwuku')>0&&player.countCards('she')>0&&!player.hasSkill('spmiewu2');
},
ai:{
combo:'spwuku',
fireAttack:true,
respondSha:true,
respondShan:true,
skillTagFilter:function(player){
if(!player.countMark('spwuku')||!player.countCards('hse')||player.hasSkill('spmiewu2')) return false;
},
order:1,
result:{
player:function(player){
if(_status.event.dying) return get.attitude(player,_status.event.dying);
return 1;
},
},
},
},
spmiewu2:{
trigger:{player:['useCardAfter','respondAfter']},
forced:true,
charlotte:true,
popup:false,
filter:function(event,player){
return event.skill=='spmiewu_backup';
},
content:function(){
player.draw();
},
},
spmiewu_backup:{audio:'spmiewu'},
qinzheng:{
audio:2,
trigger:{player:['useCard','respond']},
forced:true,
filter:function(event,player){
var num=player.getAllHistory('useCard').length+player.getAllHistory('respond').length;
return num%3==0||num%5==0||num%8==0;
},
content:function(){
var num=player.getAllHistory('useCard').length+player.getAllHistory('respond').length;
var cards=[];
if(num%3==0){
var card=get.cardPile2(function(card){
return card.name=='sha'||card.name=='shan';
});
if(card) cards.push(card);
}
if(num%5==0){
var card=get.cardPile2(function(card){
return card.name=='tao'||card.name=='jiu';
});
if(card) cards.push(card);
}
if(num%8==0){
var card=get.cardPile2(function(card){
return card.name=='juedou'||card.name=='wuzhong';
});
if(card) cards.push(card);
}
if(cards.length) player.gain(cards,'gain2');
},
group:'qinzheng_count',
intro:{
content:function(num){
var str='<li>总次数:';
str+=num;
str+='<br><li>杀/闪:';
str+=num%3;
str+='/3<br><li>桃/酒:';
str+=num%5;
str+='/5<br><li>决斗/无中生有:';
str+=num%8;
str+='/8';
return str;
},
},
},
qinzheng_count:{
trigger:{player:['useCard1','respond']},
silent:true,
firstDo:true,
noHidden:true,
content:function(){
player.storage.qinzheng=player.getAllHistory('useCard').length+player.getAllHistory('respond').length;
player.markSkill('qinzheng');
},
},
spqiai:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('he',function(card){
return get.type(card)!='basic';
})>0;
},
filterCard:function(card){
return get.type(card)!='basic';
},
position:'he',
filterTarget:lib.filter.notMe,
delay:false,
discard:false,
lose:false,
check:function(card){
var player=_status.event.player;
if(get.position(card)=='e'&&card.name=='jinhe') return 10;
if(player.isHealthy()) return 7-get.value(card);
return 9-get.value(card);
},
content:function(){
'step 0'
target.gain(cards,player,'give');
'step 1'
if(!target.isIn()){
event.finish();
return;
}
if(player.isHealthy()) event._result={index:1};
else{
var str=get.translation(player);
target.chooseControl().set('choiceList',[
'令'+str+'回复1点体力',
'令'+str+'摸两张牌',
]);
}
'step 2'
if(result.index==0) player.recover();
else player.draw(2);
},
ai:{
order:8,
result:{
player:1,
target:function(player,target){
if(ui.selected.cards.length){
var card=ui.selected.cards[0];
var val=get.value(card,target);
if(val<0) return -1;
if(target.hasSkillTag('nogain')) return 0;
var useval=target.getUseValue(card);
if(val<1||useval<=0) return 0.1;
return Math.sqrt(useval);
}
return 0;
},
},
},
},
spshanxi:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current!=player&&!current.hasMark('spshanxi');
});
},
content:function(){
'step 0'
var eff=0;
var target=game.findPlayer(function(current){
return current!=player&&!current.hasMark('spshanxi');
});
if(target) eff=(-get.attitude(player,target)/Math.sqrt(Math.max(1,target.hp)));
player.chooseTarget(get.prompt('spshanxi'),'令一名其他角色获得“檄”',function(card,player,target){
return target!=player&&!target.hasMark('spshanxi');
}).set('ai',function(target){
return (-get.attitude(_status.event.player,target)/Math.sqrt(Math.max(1,target.hp)))-_status.event.eff;
}).set('eff',eff);
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('spshanxi',target);
game.countPlayer(function(current){
if(current==target) current.addMark('spshanxi',1);
else{
var num=current.countMark('spshanxi');
if(num>0) current.removeMark('spshanxi',num);
}
});
}
},
marktext:'檄',
intro:{
name2:'檄',
content:'已被设下索命檄文',
},
group:'spshanxi_suoming',
ai:{threaten:3.3},
},
spshanxi_suoming:{
audio:'spshanxi',
trigger:{global:'recoverAfter'},
forced:true,
filter:function(event,player){
return event.player.hasMark('spshanxi')&&event.player.hp>0;
},
logTarget:'player',
content:function(){
'step 0'
if(trigger.player.countCards('he')<2) event._result={bool:false};
else trigger.player.chooseCard('he',2,'交给'+get.translation(player)+'两张牌或失去1点体力').set('ai',function(card){
return 9-get.value(card);
});
'step 1'
if(!result.bool) trigger.player.loseHp();
else player.gain(result.cards,trigger.player,'giveAuto');
},
},
shameng:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
var hs=player.getCards('h');
if(hs.length<2) return false;
var red=0,black=0;
for(var i of hs){
if(get.color(i,player)=='red') red++;
else black++;
if(red>1||black>1) return true;
}
return false;
},
complexCard:true,
selectCard:2,
filterCard:function(card,player){
if(ui.selected.cards.length) return get.color(card,player)==get.color(ui.selected.cards[0],player);
var color=get.color(card,player);
return player.countCards('h',function(cardx){
return cardx!=card&&color==get.color(cardx,player);
})>0;
},
filterTarget:lib.filter.notMe,
check:function(card){return 7-get.value(card)},
position:'h',
content:function(){
target.draw(2);
player.draw(3);
},
ai:{
order:6,
result:{target:2},
},
},
fubi:{
trigger:{
global:'gameDrawAfter',
player:'enterGame',
},
direct:true,
skillAnimation:true,
animationColor:'wood',
content:function(){
'step 0'
player.chooseTarget(get.prompt2('fubi'),lib.filter.notMe).set('ai',function(target){
return get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('fubi',target);
target.addSkill('fubi2');
target.storage.fubi2.push(player);
}
},
},
fubi2:{
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
mod:{
maxHandcard:function(player,num){
var list=player.getStorage('fubi2');
for(var i of list){
if(i.isIn()) num+=3;
}
return num;
},
},
mark:true,
intro:{content:'若$存活,则手牌上限+3'},
},
zuici:{
trigger:{player:'dying'},
direct:true,
filter:function(event,player){
return player.countCards('e')>0;
},
content:function(){
'step 0'
var list=[];
var cards=player.getCards('e');
for(var i of cards) list.push(get.subtype(i));
list.push('cancel2');
player.chooseControl(list).set('prompt',get.prompt2('zuici'));
'step 1'
if(result.control!='cancel2'){
player.disableEquip(result.control);
}
else event.finish();
'step 2'
if(player.hp<1) player.recover(1-player.hp);
},
},
jianzhan:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer(function(current){
return lib.skill.jianzhan.filterTarget(null,player,current);
});
},
filterTarget:function(card,player,target){
if(target==player) return false;
if(ui.selected.targets.length){
var targetx=ui.selected.targets[0];
return targetx!=target&&targetx.countCards('h')>target.countCards('h')&&targetx.inRange(target);
}
var num=target.countCards('h');
return game.hasPlayer(function(current){
return current!=target&&current!=player&&current.countCards('h')<num&&target.inRange(current);
});
},
selectTarget:2,
complexTarget:true,
targetprompt:['出杀','被出杀'],
multitarget:true,
content:function(){
'step 0'
if(!targets[0].canUse('sha',targets[1])) event._result={index:1};
else targets[0].chooseControl().set('choiceList',[
'视为对'+get.translation(targets[1])+'使用一张【杀】',
'令'+get.translation(player)+'摸一张牌',
]).set('ai',function(){
var evt=_status.event.getParent();
var eff=get.effect(evt.targets[1],{name:'sha',isCard:true},evt.targets[0],evt.targets[0]);
if(eff>0) return 0;
if(eff<0||get.attitude(evt.targets[0],evt.player)>1) return 1;
return 0;
});
'step 1'
if(result.index==0) targets[0].useCard({name:'sha',isCard:true},targets[1],false);
else player.draw();
},
ai:{
result:{
target:function(player,target){
if(ui.selected.targets.length){
var from=ui.selected.targets[0];
return get.effect(target,{name:'sha'},from,target);
}
var effs=[0,0];
game.countPlayer(function(current){
if(current!=target&&target.canUse('sha',current)){
var eff=get.effect(current,{name:'sha'},target,target);
if(eff>effs[0]) effs[0]=eff;
if(eff<effs[1]) effs[1]=eff;
}
});
return effs[get.attitude(player,target)>0?0:1];
}
},
order:8.5,
expose:0.2
},
},
duoji:{
audio:2,
enable:'phaseUse',
limited:true,
filter:function(event,player){
return player.countCards('h')>1&&game.hasPlayer(function(current){
return current!=player&&current.countGainableCards(player,'e')>0;
});
},
filterCard:true,
selectCard:2,
filterTarget:function(card,player,target){
return target!=player&&target.countGainableCards(player,'e')>0;
},
check:function(card){
return 8-get.value(card);
},
position:'h',
skillAnimation:true,
animationColor:'metal',
content:function(){
player.awakenSkill('duoji');
var cards=target.getGainableCards(player,'e');
player.gain(cards,target,'give','bySelf');
},
ai:{
order:1,
result:{
target:function(player,target){
var num=0,es=target.getCards('e'),val=0;
for(var i of es){
num+=get.value(i,target);
}
for(var i of ui.selected.cards){
val+=get.value(i,player);
}
if(Math.abs(num)>val) return -num;
return 0;
},
},
},
},
//界伏皇后
xinzhuikong:{
audio:2,
trigger:{global:'phaseZhunbeiBegin'},
check:function(event,player){
if(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=get.useful(cards[i]);
if(useful<5) return true;
if(cards[i].number>7&&useful<7) return true;
}
}
return false;
},
logTarget:'player',
filter:function(event,player){
return !player.hasSkill('xinzhuikong2')&&player.hp<=event.player.hp&&player.canCompare(event.player);
},
content:function(){
"step 0"
player.addTempSkill('xinzhuikong2','roundStart');
player.chooseToCompare(trigger.player).set('small',(player.hp>1&&get.effect(player,{name:'sha'},trigger.player,player)>0&&Math.random()<0.9));
"step 1"
if(result.bool){
trigger.player.addTempSkill('zishou2');
event.finish();
}
else if(result.target&&get.position(result.target)=='d') player.gain(result.target,'gain2','log');
"step 2"
var card={name:'sha',isCard:true};
if(trigger.player.canUse(card,player,false)) trigger.player.useCard(card,player,false);
},
},
xinzhuikong2:{charlotte:true},
xinqiuyuan:{
audio:2,
trigger:{target:'useCardToTarget'},
direct:true,
filter:function(event,player){
return event.card.name=='sha';
},
content:function(){
"step 0"
player.chooseTarget(get.prompt2('xinqiuyuan'),function(card,player,target){
return target!=player&&!_status.event.targets.contains(target)&&_status.event.playerx.canUse('sha',target,false);
}).set('ai',function(target){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
return get.effect(target,trigger.card,trigger.player,player)+0.1;
}).set('targets',trigger.targets).set('playerx',trigger.player);
"step 1"
if(result.bool){
var target=result.targets[0];
player.logSkill('xinqiuyuan',target);
event.target=target;
target.chooseCard(function(card,player){
var name=get.name(card,player);
return name!='sha'&&get.type(name)=='basic';
},'h','交给'+get.translation(player)+
'一张不为【杀】的基本牌,或成为此杀的额外目标').set('ai',function(card){
return get.attitude(target,_status.event.sourcex)>=0?1:-1;
}).set('sourcex',player);
game.delay();
}
else{
event.finish();
}
"step 2"
if(result.bool){
player.gain(result.cards,event.target,'give');
game.delay();
}
else{
trigger.getParent().targets.push(event.target);
trigger.getParent().triggeredTargets2.push(event.target);
game.log(event.target,'成为了',trigger.card,'的额外目标');
}
},
ai:{
expose:0.2,
effect:{
target:function(card,player,target){
if(card.name!='sha') return;
var players=game.filterPlayer();
if(get.attitude(player,target)<=0){
for(var i=0;i<players.length;i++){
var target2=players[i];
if(player!=target2&&target!=target2&&player.canUse(card,target2,false)&&
get.effect(target2,{name:'shacopy',nature:card.nature,suit:card.suit},player,target)>0&&
get.effect(target2,{name:'shacopy',nature:card.nature,suit:card.suit},player,player)<0){
if(target.hp==target.maxHp) return 0.3;
return 0.6;
}
}
}
else{
for(var i=0;i<players.length;i++){
var target2=players[i];
if(player!=target2&&target!=target2&&player.canUse(card,target2,false)&&
get.effect(target2,{name:'shacopy',nature:card.nature,suit:card.suit},player,player)>0){
if(player.canUse(card,target2)) return;
if(target.hp==target.maxHp) return [0,1];
return [0,0];
}
}
}
}
}
}
},
//界潘璋马忠
xinduodao:{
audio:2,
trigger:{player:'damageEnd'},
logTarget:'source',
filter:function(event,player){
var source=event.source;
if(!source) return false;
var card=source.getEquip(1);
return card&&get.itemtype(card)=='card'&&lib.filter.canBeGained(card,player,source);
},
prompt2:function(event){
return '获得其装备区中的'+get.translation(event.source.getEquip(1));
},
check:function(event,player){
return (get.attitude(player,event.source)+0.1)*get.value(event.source.getEquip(1),event.source);
},
content:function(){
player.gain(trigger.source.getEquip(1),trigger.source,'give','bySelf');
},
},
xinanjian:{
audio:2,
trigger:{player:'useCardToPlayered'},
forced:true,
logTarget:'player',
filter:function(event,player){
return event.card.name=='sha'&&!player.inRangeOf(event.target);
},
content:function(){
'step 0'
var card=get.translation(trigger.card);
var target=get.translation(trigger.target);
player.chooseControl().set('prompt','暗箭:请选择一项').set('choiceList',[
'令'+target+'不能响应'+card,
'令'+card+'对'+target+'的伤害值基数+1',
]).set('ai',function(){
var target=_status.event.getTrigger().target;
var player=_status.event.player;
var num=target.mayHaveShan()?0:1;
if(get.attitude(player,target)>0) num=1-num;
return num;
});
'step 1'
if(result.index==0){
game.log(player,'令',trigger.card,'不能被',trigger.target,'响应');
trigger.directHit.push(trigger.target);
}
else{
game.log(player,'令',trigger.card,'对',trigger.target,'的伤害+1');
var id=trigger.target.playerid;
var map=trigger.customArgs;
if(!map[id]) map[id]={};
if(!map[id].extraDamage) map[id].extraDamage=0;
map[id].extraDamage++;
}
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
if(!arg||!arg.card||!arg.target||arg.card.name!='sha'||arg.target.inRange(player)||get.attitude(player,arg.target)>0) return false;
},
},
},
//界郭笨
mobilejingce:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
frequent:true,
filter:function(event,player){
var num=0;
game.getGlobalHistory('cardMove',function(evt){
if(evt.name!='cardsDiscard') return;
var evtx=evt.getParent();
if(evtx.name!='orderingDiscard') return false;
var evt2=(evtx.relatedEvent||evtx.getParent());
if(evt2&&(evt2.name=='useCard'||evt2.name=='respond')) num+=evt.cards.length;
});
return num>=player.hp;
},
content:function(){
player.draw(2);
},
group:'mobilejingce_count',
intro:{
content:function(num,player){
if(num==0) return '一张都没有?就这?';
if(num<player.hp) return '才'+get.cnNumber(num)+'张?就这?';
return '卧槽,牛逼啊,居然'+get.cnNumber(num)+'张了!';
},
},
},
mobilejingce_count:{
trigger:{
global:['cardsDiscardEnd','phaseBefore'],
player:'phaseAfter',
},
silent:true,
firstDo:true,
filter:function(evt,player){
if(evt.name=='phase') return true;
if(player!=_status.currentPhase) return false;
var evtx=evt.getParent();
if(evtx.name!='orderingDiscard') return false;
var evt2=(evtx.relatedEvent||evtx.getParent());
return (evt2&&(evt2.name=='useCard'||evt2.name=='respond'))
},
content:function(){
if(trigger.name=='phase') player.unmarkSkill('mobilejingce');
else{
var num=0;
game.getGlobalHistory('cardMove',function(evt){
if(evt.name!='cardsDiscard') return;
var evtx=evt.getParent();
if(evtx.name!='orderingDiscard') return false;
var evt2=(evtx.relatedEvent||evtx.getParent());
if(evt2&&(evt2.name=='useCard'||evt2.name=='respond')) num+=evt.cards.length;
});
player.storage.mobilejingce=num;
player.markSkill('mobilejingce');
}
},
},
//公孙康
juliao:{
mod:{
globalTo:function(from,to,distance){
return distance+game.countGroup()-1;
},
},
},
taomie:{
audio:3,
group:['taomie1','taomie2','taomie3'],
trigger:{source:'damageBegin1'},
forced:true,
locked:false,
direct:true,
filter:function(event,player){
return event.player.hasMark('taomie');
},
content:function(){
'step 0'
player.logSkill(Math.random()<0.5?'taomie2':'taomie3',trigger.player);
var target=get.translation(trigger.player);
player.chooseControl().set('prompt','讨灭:请选择一项').set('choiceList',[
'令即将对'+target+'造成的伤害+1',
'获得'+target+'的一张牌,并可将其交给另一名其他角色',
'依次执行以上所有选项,并移去'+target+'的“讨灭”标记',
]).set('ai',function(){
var evt=_status.event.getTrigger();
var player=_status.event.player;
var target=evt.player;
var bool1=!target.hasSkillTag('filterDamage',null,{
player:player,
card:evt.card,
});
var bool2=get.effect(target,{name:'shunshou'},player,player)>0;
if(bool1&&bool2&&target.hp<=evt.num+1) return 2;
if(bool1) return 0;
return 1;
});
'step 1'
if(result.index==2){
trigger.taomie_player=trigger.player;
trigger.player.addTempSkill('taomie4');
}
if(result.index!=1){
trigger.num++;
}
if(result.index!=0&&trigger.player.countGainableCards(player,'hej')>0){
player.gainPlayerCard(trigger.player,'hej',true);
}
else event.finish();
'step 2'
var card=result.cards[0];
if(card&&player.getCards('h').contains(card)&&game.hasPlayer(function(current){
return current!=player&&current!=trigger.player;
})){
event.card=card;
player.chooseTarget('是否将'+get.translation(card)+'交给一名其他角色?',function(card,player,target){
return target!=player&&target!=_status.event.getTrigger().player;
}).set('ai',function(target){
var player=_status.event.player;
var card=_status.event.getParent().card;
if(target.hasSkillTag('nogain')||!player.needsToDiscard()||(get.tag(card,'damage')&&player.hasValueTarget(card,null,false)&&get.effect(_status.event.getTrigger().player,card,null,false)>0)) return 0;
return get.attitude(player,target)/(1+target.countCards('h'));
});
}
else event.finish();
'step 3'
if(result.bool){
var target=result.targets[0];
player.line(target);
target.gain(card,player,'giveAuto');
}
},
intro:{
content:'mark',
},
ai:{
effect:{
player:function(card,player,target){
if(target&&get.tag(card,'damage')&&target.hasMark('taomie')){
if(player.hasSkillTag('jueqing',false,target)) return;
if(get.attitude(player,target)>0){
return 0.7;
}
return 1.2;
}
},
},
},
},
taomie1:{
audio:true,
trigger:{
player:'damageEnd',
source:'damageSource',
},
logTarget:function(trigger,player){
if(player==trigger.player) return trigger.source;
return trigger.player;
},
filter:function(event,player){
var target=lib.skill.taomie1.logTarget(event,player);
return target&&target.isAlive()&&!target.hasMark('taomie');
},
check:function(event,player){
var target=lib.skill.taomie1.logTarget(event,player);
if(get.attitude(player,target)>0) return false;
var target0=game.findPlayer(function(current){
return current.hasMark('taomie');
});
if(!target0) return true;
var eff1=0,eff2=0;
player.countCards('h',function(card){
if(!get.tag(card,'damage')) return false;
if(player.hasValueTarget(card,null,true)>0){
if(player.canUse(card,target,null,true)){
var eff=get.effect(target,card,player,player);
if(eff>0) eff1+=eff;
}
if(player.canUse(card,target0,null,true)){
var eff=get.effect(target0,card,player,player);
if(eff>0) eff2+=eff;
}
}
});
return eff1>eff2;
},
prompt2:function(event,player){
var target=lib.skill.taomie1.logTarget(event,player);
var str='令'+get.translation(target)+'获得“讨灭”标记';
if(game.hasPlayer(function(current){
return current.hasMark('taomie');
})) str+=',并移去场上已有的“讨灭”标记';
return str;
},
content:function(){
game.countPlayer(function(current){
var num=current.countMark('taomie');
if(num) current.removeMark('taomie');
});
lib.skill.taomie1.logTarget(trigger,player).addMark('taomie',1);
},
},
taomie2:{audio:true},
taomie3:{audio:true},
taomie4:{
trigger:{
global:['damageAfter','damageCancelled','damageZero'],
player:'dieBegin',
},
forced:true,
popup:false,
charlotte:true,
filter:function(event,player){
return player.hasMark('taomie')&&(event.name=='die'||event.taomie_player==player);
},
content:function(){
player.removeMark('taomie',player.countMark('taomie'));
player.removeSkill('taomie2');
},
},
//铁骑飞
liyong:{
audio:'retishen',
trigger:{player:'shaMiss'},
forced:true,
filter:function(event,player){
return player.isPhaseUsing();
},
content:function(){
trigger.getParent().liyong=true;
player.addTempSkill('liyong2','phaseUseEnd');
},
},
liyong2:{
audio:'retishen',
mark:true,
intro:{
content:'铁骑!强命!加伤!然后掉血嘞…',
},
trigger:{player:'useCardToPlayered'},
forced:true,
filter:function(event,player){
if(!event.card||event.card.name!='sha') return false;
var evt=event.getParent();
if(evt.liyong) return false;
var history=player.getHistory('useCard',function(evt){
return evt.card.name=='sha';
});
var evt2=history[history.indexOf(evt)-1];
return evt2&&evt2.liyong;
},
logTarget:'target',
content:function(){
var target=trigger.target;
target.addTempSkill('fengyin');
trigger.directHit.add(target);
var id=target.playerid;
var map=trigger.customArgs;
if(!map[id]) map[id]={};
if(!map[id].extraDamage) map[id].extraDamage=0;
map[id].extraDamage++;
trigger.getParent().liyong2=true;
},
group:['liyong3','liyong4'],
},
liyong3:{
trigger:{source:'damageSource'},
forced:true,
popup:false,
filter:function(event,player){
return event.card&&event.card.name=='sha'&&
event.player.isAlive()&&event.getParent(2).liyong2==true;
},
content:function(){
player.loseHp();
},
},
liyong4:{
trigger:{player:'useCardAfter'},
forced:true,
silent:true,
filter:function(evt,player){
if(!evt.card||evt.card.name!='sha') return false;
if(evt.liyong) return false;
var history=player.getHistory('useCard',function(evt){
return evt.card.name=='sha';
});
var evt2=history[history.indexOf(evt)-1];
return evt2&&evt2.liyong;
},
content:function(){
player.removeSkill('liyong2');
},
},
//韩遂
xinniluan:{
trigger:{global:'phaseJieshuBegin'},
direct:true,
filter:function(event,player){
return player!=event.player&&event.player.isAlive()&&event.player.getHistory('useCard',function(evt){
if(evt.targets&&evt.targets.length){
var targets=evt.targets.slice(0);
while(targets.contains(event.player)) targets.remove(event.player);
return targets.length>0;
}
return false;
}).length>0&&(_status.connectMode||player.hasSha());
},
content:function(){
'step 0'
player.chooseToUse({
logSkill:'xinniluan',
preTarget:trigger.player,
prompt:'是否发动【逆乱】,对'+get.translation(trigger.player)+'使用一张【杀】?',
filterCard:function(card,player){
return get.name(card)=='sha'&&lib.filter.filterCard.apply(this,arguments);
},
filterTarget:function(card,player,target){
return target==_status.event.preTarget&&lib.filter.targetEnabled.apply(this,arguments);
},
addCount:false,
});
'step 1'
if(result.bool&&player.getHistory('sourceDamage',function(evt){
return evt.getParent(4)==event;
}).length&&trigger.player.countDiscardableCards(player,'he')>0) player.discardPlayerCard(trigger.player,true,'he').boolline=true;
},
},
xiaoxi_hansui:{
audio:2,
enable:['chooseToRespond','chooseToUse'],
filterCard:function(card,player){
return get.color(card)=='black';
},
position:'hse',
viewAs:{name:'sha'},
viewAsFilter:function(player){
if(!player.countCards('hse',{color:'black'})) return false;
},
prompt:'将一张黑色牌当杀使用或打出',
check:function(card){return 4.5-get.value(card)},
ai:{
skillTagFilter:function(player){
if(!player.countCards('hes',{color:'black'})) return false;
},
respondSha:true,
}
},
//胡车儿
daoji:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('he',function(card){
return get.type(card)!='basic';
})&&game.hasPlayer(function(target){
return target!=player&&target.countCards('e')>0;
});
},
filterCard:function(card){
return get.type(card)!='basic';
},
position:'he',
filterTarget:function(card,player,target){
return target!=player&&target.countCards('e')>0;
},
check:function(card){
var player=_status.event.player;
if(game.hasPlayer(function(current){
return current!=player&&get.attitude(player,current)<0&&get.damageEffect(current,player,player)>0&&current.getEquip(1);
})) return 8-get.value(card);
return 5-get.value(card)
},
content:function(){
'step 0'
player.gainPlayerCard(target,'e',true).set('ai',function(button){
var card=button.link;
var player=_status.event.player;
if(get.subtype(card)=='equip1'&&get.damageEffect(_status.event.target,player,player)>0) return 6+get.value(card);
return get.value(card);
});
'step 1'
if(!result||!result.bool||!result.cards||!result.cards.length){
event.finish();
return;
}
var card=result.cards[0];
event.card=card;
if(player.getCards('h').contains(card)&&get.type(card)=='equip') player.chooseUseTarget(card,true).nopopup=true;
'step 2'
if(get.subtype(card,false)=='equip1') target.damage();
},
ai:{
order:6,
result:{
target:function(player,current){
if(get.damageEffect(current,player,player)>0&&current.getEquip(1)) return -1.5;
return -1;
},
},
},
},
//司马师夫妇
//垃圾
baiyi:{
enable:'phaseUse',
usable:1,
filterTarget:lib.filter.notMe,
selectTarget:2,
limited:true,
skillAnimation:false,
//animationColor:'thunder',
filter:function(event,player){
return player.isDamaged()&&game.players.length>2;
},
multitarget:true,
multiline:true,
changeSeat:true,
contentBefore:function(){
player.$fullscreenpop('败移','thunder');
},
content:function(){
player.awakenSkill('baiyi');
game.broadcastAll(function(target1,target2){
game.swapSeat(target1,target2);
},targets[0],targets[1])
},
ai:{
order:1,
result:{
target:function(player,target){
if(player.hasUnknown()&&target!=player.next&&target!=player.previous) return 0;
var distance=Math.pow(get.distance(player,target,'absolute'),2);
if(!ui.selected.targets.length) return distance;
var distance2=Math.pow(get.distance(player,ui.selected.targets[0],'absolute'),2);
return Math.min(0,distance-distance2);
}
},
},
},
jinglve:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
if(player.hasSkill('jinglve2')) return false;
return game.hasPlayer(function(current){
return current!=player&&current.countCards('h')>0;
});
},
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
},
content:function(){
'step 0'
if(!player.storage.jinglve4) player.storage.jinglve4=[];
player.storage.jinglve4.add(target);
player.chooseButton(['选择一张牌作为「死士」',target.getCards('h')],true).set('ai',function(button){
var target=_status.event.getParent().target;
var card=button.link;
var val=target.getUseValue(card);
if(val>0) return val;
return get.value(card);
});
'step 1'
if(result.bool){
player.storage.jinglve2=target;
player.storage.jinglve3=result.links[0];
player.addSkill('jinglve2');
}
},
ai:{
order:12,
result:{
target:-1,
},
},
},
jinglve2:{
mark:true,
intro:{
name:'死士',
mark:function(dialog,content,player){
dialog.addText('记录目标');
dialog.add([content]);
if(player==game.me||player.isUnderControl()){
dialog.addText('死士牌');
dialog.add([player.storage.jinglve3]);
}
},
},
onremove:function(player){
delete player.storage.jinglve2;
delete player.storage.jinglve3;
},
trigger:{global:['dieEnd','loseEnd','gainEnd']},
silent:true,
lastDo:true,
charlotte:true,
filter:function(event,player){
if(event.name!='gain'&&event.player!=player.storage.jinglve2) return false;
return event.name=='die'||(event.cards.contains(player.storage.jinglve3)&&(event.name=='gain'||event.position!=ui.ordering&&event.position!=ui.discardPile));
},
content:function(){
player.removeSkill('jinglve2');
},
group:'jinglve3',
},
jinglve3:{
audio:'jinglve',
trigger:{global:['loseAfter','useCard','phaseAfter','cardsDiscardAfter']},
filter:function(event,player){
if(event.player&&event.player!=player.storage.jinglve2) return false;
if(event.name=='phase') return event.player.getCards('hej').contains(player.storage.jinglve3);
if(!event.cards.contains(player.storage.jinglve3)) return false;
return event.name=='useCard'||get.position(player.storage.jinglve3,true)=='d'||event.position==ui.discardPile;
},
forced:true,
charlotte:true,
logTarget:'player',
content:function(){
if(trigger.name=='useCard'){
trigger.all_excluded=true;
trigger.targets.length=0;
}
else{
if(trigger.name=='phase'){
player.gain(player.storage.jinglve3,trigger.player,'giveAuto');
}
else if(get.position(player.storage.jinglve3,true)=='d') player.gain(player.storage.jinglve3,'gain2');
}
player.removeSkill('jinglve2');
},
},
shanli:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
juexingji:true,
forced:true,
skillAnimation:true,
animationColor:'thunder',
filter:function(event,player){
return player.storage.baiyi&&player.getStorage('jinglve4').length>1;
},
content:function(){
'step 0'
player.awakenSkill('shanli');
player.loseMaxHp();
player.chooseTarget(true,'选择【擅立】的目标').set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(target==game.me||target.isUnderControl()&&target.isOnline()) return 2*att;
return att;
});
'step 1'
var target=result.targets[0];
event.target=target;
player.line(target,'green');
game.log(player,'拥立',target);
var list=[];
if(!_status.characterlist){
if(_status.connectMode) var list=get.charactersOL();
else{
var list=[];
for(var i in lib.character){
if(lib.filter.characterDisabled2(i)||lib.filter.characterDisabled(i)) continue;
list.push(i);
}
}
game.countPlayer2(function(current){
list.remove(current.name);
list.remove(current.name1);
list.remove(current.name2);
if(current.storage.rehuashen&&current.storage.rehuashen.character) list.removeArray(current.storage.rehuashen.character)
});
_status.characterlist=list;
}
_status.characterlist.randomSort();
var chara=[];
var skills=[];
for(var i of _status.characterlist){
if(i=='key_yuri') continue;
var character=lib.character[i];
if(character&&character[3]){
for(var j of character[3]){
if(skills.contains(j)||j=='yuri_wangxi'||target.hasSkill('j')) continue;
var info=get.info(j);
if(info&&info.zhuSkill){
skills.add(j);
chara.add(i);
continue;
}
}
}
if(skills.length>=3) break;
}
if(!skills.length){event.finish();return}
event.chara=chara;
event.skills=skills;
player.chooseControl(skills).set('dialog',['选择令'+get.translation(target)+'获得一个技能',[chara,'character']]);
'step 2'
target.addSkillLog(result.control);
target.storage.zhuSkill_shanli=[result.control];
target.setAvatarQueue(target.name1||target.name,[event.chara[event.skills.indexOf(result.control)]]);
},
},
hongyi:{
audio:2,
enable:'phaseUse',
usable:1,
//filter:function(event,player){
// return player.countCards('he')>=Math.min(2,game.dead.length);
//},
//selectCard:function(){
// return Math.min(2,game.dead.length);
//},
//filterCard:true,
filterTarget:lib.filter.notMe,
check:function(card){
var num=Math.min(2,game.dead.length);
if(!num) return 1;
if(num==1) return 7-get.value(card);
return 5-get.value(card);
},
position:'he',
content:function(){
player.addTempSkill('hongyi2',{player:'phaseBeginStart'});
player.storage.hongyi2.add(target);
player.markSkill('hongyi2');
},
ai:{
order:1,
result:{
target:function(player,target){
if(target.hasJudge('lebu')) return -0.5;
return -1-target.countCards('h');
},
},
},
},
hongyi2:{
audio:'hongyi',
trigger:{global:'damageBegin1'},
charlotte:true,
forced:true,
logTarget:'source',
filter:function(event,player){
return player.storage.hongyi2.contains(event.source);
},
content:function(){
'step 0'
trigger.source.judge();
'step 1'
if(result.color=='black') trigger.num--;
else trigger.player.draw();
},
onremove:true,
intro:{
content:'已选中$为技能目标',
},
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
},
requanfeng:{
audio:'quanfeng',
enable:'chooseToUse',
limited:true,
skillAnimation:true,
animationColor:'thunder',
filter:function(event,player){
return event.type=='dying'&&player==event.dying;
},
content:function(){
player.awakenSkill('requanfeng');
player.gainMaxHp(2);
player.recover(4);
},
ai:{
save:true,
skillTagFilter:function(player,tag,arg){
return player==arg;
},
order:10,
result:{
player:1,
},
},
group:'requanfeng_gain',
},
requanfeng_gain:{
trigger:{global:'die'},
filter:function(event,player){
return player.hasSkill('hongyi')&&event.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
var info=get.info(skill);
return info&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte;
}).length>0;
},
logTarget:'player',
skillAnimation:true,
animationColor:'thunder',
prompt2:'限定技失去技能【劝封】并获得该角色武将牌上的所有技能然后加1点体力上限并回复1点体力',
content:function(){
player.awakenSkill('requanfeng');
player.removeSkill('hongyi');
var skills=trigger.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
var info=get.info(skill);
return info&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte;
});
if(skills.length){
for(var i of skills) player.addSkillLog(i);
game.broadcastAll(function(list){
game.expandSkills(list);
for(var i of list){
var info=lib.skill[i];
if(!info) continue;
if(!info.audioname2) info.audioname2={};
info.audioname2.yanghuiyu='quanfeng';
}
},skills);
}
player.gainMaxHp();
player.recover();
}
},
quanfeng:{
audio:2,
trigger:{global:'die'},
filter:function(event,player){
return event.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
var info=get.info(skill);
return info&&!info.juexingji&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte&&!info.limited;
}).length>0;
},
logTarget:'player',
skillAnimation:true,
limited:true,
forced:true,
animationColor:'thunder',
content:function(){
'step 0'
player.awakenSkill('quanfeng');
var list=trigger.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
var info=get.info(skill);
return info&&!info.juexingji&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte&&!info.limited;
});
if(list.length==1) event._result={control:list[0]};
else player.chooseControl(list).set('prompt','选择获得'+get.translation(trigger.player)+'的一个技能').set('forceDie',true).set('ai',function(){
return list.randomGet();
});
'step 1'
player.addSkillLog(result.control);
game.broadcastAll(function(skill){
var list=[skill];game.expandSkills(list);
for(var i of list){
var info=lib.skill[i];
if(!info) continue;
if(!info.audioname2) info.audioname2={};
info.audioname2.yanghuiyu='quanfeng';
}
},result.control);
player.gainMaxHp();
player.recover();
},
},
//手杀朱然
//设计师你改技能有瘾🐴
mobiledanshou:{
trigger:{global:'phaseJieshuBegin'},
audio:2,
direct:true,
filter:function(event,player){
if(player==event.player) return false;
var num=event.player.getHistory('useCard',function(evt){
return evt.targets.contains(player);
}).length;
return num==0||event.player.isAlive()&&num<=player.countCards('he');
},
content:function(){
'step 0'
var num=trigger.player.getHistory('useCard',function(evt){
return evt.targets.contains(player);
}).length;
event.num=num;
if(num==0){
if(player.hasSkill('mobiledanshou')) event._result={bool:true};
else player.chooseBool('是否发动【胆守】摸一张牌?',lib.translate.mobiledanshou_info);
}
else event.goto(2);
'step 1'
if(result.bool){
player.logSkill('mobiledanshou');
player.draw();
}
event.finish();
'step 2'
player.chooseToDiscard(num,get.prompt('mobiledanshou',trigger.player),'弃置'+get.translation(num)+'张牌并对其造成1点伤害','he').set('ai',function(card){
if(!_status.event.goon) return 0;
var num=_status.event.getParent().num;
if(num==1) return 8-get.value(card);
if(num==2) return 6.5-get.value(card);
return 5-get.value(card);
}).set('goon',get.damageEffect(trigger.player,player,player)>0).logSkill=['mobiledanshou',trigger.player];
'step 3'
if(result.bool){
player.addExpose(0.2);
trigger.player.damage();
}
},
},
//丁原
//程序员和设计师至少有一个脑子有坑
beizhu:{
audio:3,
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
},
content:function(){
'step 0'
player.addTempSkill('beizhu_draw');
player.viewHandcards(target);
'step 1'
var cards=target.getCards('h','sha');
if(cards.length){
event.cards=cards;
event.goto(5);
}
else player.discardPlayerCard('he',target,true);
'step 2'
player.chooseBool('是否令'+get.translation(target)+'获得一张【杀】?').set('ai',function(){
var evt=status.event.getParent();
return get.attitude(evt.player,evt.target)>0;
});
'step 3'
if(result.bool){
var card=get.cardPile2(function(card){
return card.name=='sha';
});
if(card) target.gain(card,'gain2');
}
else event.finish();
'step 4'
game.updateRoundNumber();
event.finish();
'step 5'
var hs=target.getCards('h');
cards=cards.filter(function(card){
return hs.contains(card)&&get.name(card,target)=='sha'&&target.canUse({
name:'sha',
isCard:true,
cards:[card],
},player,false);
});
if(cards.length){
var card=cards.randomRemove(1)[0];
target.useCard(player,false,card).card.beizhu=true;
event.redo();
}
},
},
beizhu_draw:{
trigger:{player:'damageEnd'},
forced:true,
popup:false,
filter:function(event,player){
return event.card&&event.card.beizhu;
},
content:function(){
player.draw(trigger.num);
},
},
//新简雍
xinqiaoshui:{
audio:2,
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player.canCompare(target);
},
filter:function(event,player){
return player.countCards('h')>0;
},
content:function(){
'step 0'
player.chooseToCompare(target);
'step 1'
if(result.bool) player.addTempSkill('qiaoshui3','phaseUseEnd');
else{
player.addTempSkill('qiaoshui2','phaseUseEnd');
}
},
ai:{
order:function(item,player){
if(player.countCards('h',function(card){
return player.hasValueTarget(card);
})) return 10;
return 1;
},
result:{
target:function(player,target){
if(player.countCards('h',function(card){
return player.hasValueTarget(card);
})){
if(player.hasSkill('qiaoshui3')) return 0;
var nd=!player.needsToDiscard();
if(player.hasCard(function(card){
if(get.position(card)!="h") return false;
var val=get.value(card)
if(nd&&val<0) return true;
if(val<=5){
return card.number>=12;
}
if(val<=6){
return card.number>=13;
}
return false;
})) return -1;
return 0;
}
return -1;
},
},
},
},
xinjyzongshi:{
audio:2,
trigger:{
player:['chooseToCompareAfter','compareMultipleAfter'],
target:['chooseToCompareAfter','compareMultipleAfter']
},
filter:function(event,player){
return !event.preserve;
},
frequent:true,
content:function(){
'step 0'
var str='<div class="text center">牌堆顶';
var cards=get.cards();
if(player==trigger.player){
if(trigger.num1>trigger.num2&&get.position(trigger.card2,true)=='o'){
str+='/拼点牌';
cards.push(trigger.card2)
}
else if(trigger.num1<trigger.num2&&get.position(trigger.card1,true)=='o'){
str+='/拼点牌';
cards.push(trigger.card1);
}
}
else{
if(trigger.num1<trigger.num2&&get.position(trigger.card1,true)=='o'){
str+='/拼点牌';
cards.push(trigger.card1);
}
else if(trigger.num1>trigger.num2&&get.position(trigger.card2,true)=='o'){
str+='/拼点牌';
cards.push(trigger.card2);
}
}
str+='</div>';
event.cards=cards;
player.chooseButton(['纵适:选择要获得的牌',str,cards],true).set('ai',get.buttonValue);
'step 1'
if(result.bool){
var draw=result.links[0]==cards[0];
player.gain(result.links,draw?'draw':'gain2').log=false;
game.log(player,'获得了',draw?'牌堆顶的一张牌':result.links);
if(!draw){
cards[0].fix();
ui.cardPile.insertBefore(cards[0],ui.cardPile.firstChild);
game.updateRoundNumber();
}
}
}
},
//通渠张恭
rezhenxing:{
audio:'xinfu_zhenxing',
trigger:{
player:["damageEnd","phaseJieshuBegin"],
},
frequent:true,
content:function(){
'step 0'
event.cards=get.cards(3);
player.chooseButton(['【镇行】:请选择要获得的牌',event.cards]).set('filterButton',function(button){
var cards=_status.event.cards;
for(var i=0;i<cards.length;i++){
if(button.link!=cards[i]&&get.suit(cards[i])==get.suit(button.link)) return false;
}
return true;
}).set('ai',function(button){
return get.value(button.link);
}).set('cards',event.cards);
'step 1'
for(var i=event.cards.length-1;i>=0;i--){
if(result.bool&&result.links.contains(event.cards[i])){
player.gain(event.cards[i],'gain2');
}
else{
event.cards[i].fix();
ui.cardPile.insertBefore(event.cards[i],ui.cardPile.childNodes[0]);
}
}
game.updateRoundNumber();
},
},
//芙蓉,手杀廖化,手杀曹彰
rejiangchi:{
audio:2,
trigger:{
player:"phaseUseBegin",
},
direct:true,
content:function(){
"step 0"
var list=['弃牌','摸牌','取消'];
if(!player.countCards('he')) list.remove('弃牌');
player.chooseControl(list,function(){
var player=_status.event.player;
if(list.contains('弃牌')){
if(player.countCards('h')>3&&player.countCards('h','sha')>1){
return '弃牌';
}
if(player.countCards('h','sha')>2){
return '弃牌';
}
}
if(!player.countCards('h','sha')){
return '摸牌';
}
return 'cancel2';
}).set('prompt',get.prompt2('rejiangchi'));
"step 1"
if(result.control=='弃牌'){
player.chooseToDiscard(true,'he');
player.addTempSkill('jiangchi2','phaseUseEnd');
player.logSkill('rejiangchi');
}
else if(result.control=='摸牌'){
player.draw();
player.addTempSkill('rejiangchi3','phaseUseEnd');
player.logSkill('rejiangchi');
}
},
},
rejiangchi3:{
mod:{
cardEnabled:function(card){
if(card.name=='sha') return false;
},
},
},
refuli:{
skillAnimation:true,
animationColor:'soil',
audio:2,
unique:true,
limited:true,
enable:'chooseToUse',
mark:true,
filter:function(event,player){
if(event.type!='dying') return false;
if(player!=event.dying) return false;
return true;
},
content:function(){
"step 0"
player.awakenSkill('refuli');
event.num=game.countGroup();
if(event.num>player.hp) player.recover(event.num-player.hp);
"step 1"
if(player.isMaxHp(true)) player.turnOver();
},
ai:{
save:true,
skillTagFilter:function(player,arg,target){
return player==target;
},
result:{
player:10
},
threaten:function(player,target){
if(!target.storage.refuli) return 0.9;
}
},
},
redangxian:{
trigger:{player:'phaseBegin'},
forced:true,
audio:'dangxian',
audioname:['guansuo','xin_liaohua'],
content:function(){
'step 0'
var card=get.discardPile(function(card){
return card.name=='sha';
});
if(card) player.gain(card,'gain2');
'step 1'
game.updateRoundNumber();
var next=player.phaseUse();
event.next.remove(next);
trigger.next.push(next);
},
},
xuewei:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('xuewei'),lib.filter.notMe).set('ai',function(target){
var player=_status.event.player;
if(player==get.zhu(player)&&player.hp<=2) return 0;
return get.attitude(player,target)-4;
}).animate=false;
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('xuewei');
player.addTempSkill('xuewei2',{player:'phaseBegin'});
player.storage.xuewei2=target;
}
},
ai:{
threaten:1.05,
},
},
xuewei2:{
audio:'xuewei',
forced:true,
onremove:true,
trigger:{global:'damageBegin4'},
charlotte:true,
filter:function(event,player){
return event.player==player.storage.xuewei2;
},
logTarget:'player',
content:function(){
player.removeSkill('xuewei2');
trigger.cancel();
player.damage(trigger.num,trigger.source||'nosource');
if(trigger.source&&trigger.source.isIn()) trigger.source.damage(trigger.num,trigger.nature,player);
},
},
liechi:{
trigger:{player:'dying'},
forced:true,
filter:function(event,player){
return event.getParent().name=='damage'&&event.source&&event.source.countCards('he');
},
audio:2,
content:function(){
trigger.source.chooseToDiscard('he',true);
},
},
rejiuchi:{
group:['jiuchi'],
audioname:['re_dongzhuo'],
trigger:{source:'damage'},
forced:true,
popup:false,
locked:false,
audio:'jiuchi',
filter:function(event,player){
return event.card&&event.card.name=='sha'&&event.getParent(2).jiu==true&&!player.hasSkill('rejiuchi_air');
},
content:function(){
player.logSkill('jiuchi');
player.addTempSkill('rejiuchi_air');
},
subSkill:{
air:{},
},
},
//苏飞,新贾逵
tongqu:{
audio:2,
trigger:{
global:['gameDrawAfter','dying','phaseDrawBegin2'],
player:['enterGame','phaseZhunbeiBegin'],
},
direct:true,
filter:function(event,player){
if(event.name=='phaseDraw') return event.player.hasMark('tongqu');
if(event.name=='dying') return event.player.hasMark('tongqu');
if(event.name=='phaseZhunbei') return game.hasPlayer(function(current){
return !current.hasMark('tongqu');
});
return !player.hasMark('tongqu');
},
content:function(){
'step 0'
if(trigger.name=='phaseDraw'){
player.logSkill('tongqu',trigger.player);
trigger.player.draw('nodelay');
trigger.player.addTempSkill('tongqu2','phaseDrawAfter');
event.finish();
}
else if(trigger.name=='dying'){
player.logSkill('tongqu',trigger.player);
trigger.player.removeMark('tongqu',1);
event.finish();
}
else if(trigger.name=='phaseZhunbei'){
player.chooseTarget(get.prompt2('tongqu'),function(card,player,target){
return !target.hasMark('tongqu');
}).set('ai',function(target){
if(_status.event.player.hp<3) return 0;
return get.attitude(_status.event.player,target);
});
}
else{
player.logSkill('tongqu');
player.addMark('tongqu',1);
event.finish();
}
'step 1'
if(result.bool){
var target=result.targets[0];
player.loseHp();
player.logSkill('tongqu',target);
target.addMark('tongqu',1);
}
},
marktext:'渠',
intro:{content:'mark',name2:'渠'},
},
tongqu2:{
trigger:{player:'phaseDrawEnd'},
forced:true,
silent:true,
filter:function(event,player){
var bool=game.hasPlayer(function(current){
return current!=player&&current.hasMark('tongqu');
});
return player.countCards('he',function(card){
if(bool) return true;
return lib.filter.cardDiscardable(card,player);
})>0;
},
content:function(){
'step 0'
player.chooseCardTarget({
forced:true,
position:'he',
filterCard:true,
filterTarget:function(card,player,target){
return player!=target&&target.hasMark('tongqu');
},
selectTarget:function(){
if(ui.selected.cards.length&&!lib.filter.cardDiscardable(ui.selected.cards[0],_status.event.player)) return [1,1];
return [0,1];
},
prompt:'弃置一张牌,或将一张牌交给一名有“渠”的其他角色',
ai1:function(card){
var player=_status.event.player;
if(get.name(card)=='du') return 20;
if(get.position(card)=='e'&&get.value(card)<=0) return 14;
if(get.position(card)=='h'&&game.hasPlayer(function(current){
return current!=player&&current.hasMark('tongqu')&&get.attitude(player,current)>0&&current.getUseValue(card)>player.getUseValue(card)&&current.getUseValue(card)>player.getUseValue(card);
})) return 12;
if(game.hasPlayer(function(current){
return current!=player&&current.hasMark('tongqu')&&get.attitude(player,current)>0;
})){
if(card.name=='wuxie') return 11;
if(card.name=='shan'&&player.countCards('h','shan')>1) return 9
}
return 6/Math.max(1,get.value(card));
},
ai2:function(target){
var player=_status.event.player;
var card=ui.selected.cards[0];
var att=get.attitude(player,target);
if(card.name=='du') return -6*att;
if(att>0){
if(get.position(card)=='h'&&target.getUseValue(card)>player.getUseValue(card)) return 4*att;
if(target.hasUseTarget(card)) return 2*att;
return 1.2*att;
}
return 0;
},
});
'step 1'
if(result.bool){
if(result.targets.length){
event.target=result.targets[0];
event.target.gain(result.cards,player,'giveAuto');
event.card=result.cards[0];
}
else{
player.discard(result.cards);
event.finish();
}
}
'step 2'
if(target.getCards('h').contains(card)&&get.type(card)=='equip'){
target.chooseUseTarget(card,true);
}
},
},
xinwanlan:{
audio:'wanlan',
trigger:{global:'damageBegin4'},
filter:function(event,player){
return event.player.hp<=event.num&&player.countCards('e')>=1;
},
logTarget:'player',
check:function(event,player){
if(get.attitude(player,event.player)<4) return false;
if(player.countCards('h',function(card){
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,event.player,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod;
var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,event.player);
return savable;
})>=1+event.num-event.player.hp) return false;
if(event.player==player||event.player==get.zhu(player)) return true;
return !player.hasUnknown();
},
content:function(){
player.discard(player.getCards('e'));
trigger.cancel();
},
},
zhengjian:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
locked:true,
direct:true,
content:function(){
'step 0'
player.chooseTarget('请选择【诤荐】的目标',lib.translate.zhengjian_info).set('ai',function(target){
if(target.hasSkill('zhengjian_mark')) return 0;
if(player==target) return 0.5;
return get.attitude(_status.event.player,target)*(1+target.countCards('h'));
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('zhengjian',target);
target.addSkill('zhengjian_mark');
}
},
group:'zhengjian_draw',
ai:{
notemp:true,
},
},
zhengjian_draw:{
audio:'zhengjian',
trigger:{player:'phaseBegin'},
forced:true,
filter:function(event){
return game.hasPlayer(function(current){
return current.hasSkill('zhengjian_mark');
});
},
logTarget:function(event){
return game.filterPlayer(function(current){
return current.hasSkill('zhengjian_mark');
});
},
content:function(){
'step 0'
var list=game.filterPlayer(function(current){
return current.countMark('zhengjian_mark')>0;
});
if(list.length){
event.delay=true;
game.asyncDraw(list,function(target){
return Math.min(5,target.maxHp,target.countMark('zhengjian_mark'));
});
}
'step 1'
game.countPlayer(function(current){
current.removeSkill('zhengjian_mark');
});
if(event.delay) game.delayx();
},
},
zhengjian_mark:{
trigger:{player:['useCard1','respond']},
silent:true,
firstDo:true,
onremove:true,
charlotte:true,
content:function(){
player.addMark('zhengjian_mark',1,false);
},
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=0;
},
mark:true,
intro:{
content:'已使用/打出过#张牌',
},
},
gaoyuan:{
audio:2,
trigger:{target:'useCardToTarget'},
direct:true,
filter:function(event,player){
if(event.card.name!='sha') return false;
if(player.countCards('he')==0) return false;
return game.hasPlayer(function(current){
return current!=event.player&&current!=player&&
current.hasSkill('zhengjian_mark')&&lib.filter.targetEnabled(event.card,event.player,current);
});
},
content:function(){
"step 0"
var next=player.chooseCardTarget({
position:'he',
filterCard:lib.filter.cardDiscardable,
filterTarget:function(card,player,target){
var trigger=_status.event;
if(target!=player&&target!=trigger.source){
if(target.hasSkill('zhengjian_mark')&&lib.filter.targetEnabled(trigger.card,trigger.source,target)) return true;
}
return false;
},
ai1:function(card){
return get.unuseful(card)+9;
},
ai2:function(target){
if(_status.event.player.countCards('h','shan')){
return -get.attitude(_status.event.player,target);
}
if(get.attitude(_status.event.player,target)<5){
return 6-get.attitude(_status.event.player,target);
}
if(_status.event.player.hp==1&&player.countCards('h','shan')==0){
return 10-get.attitude(_status.event.player,target);
}
if(_status.event.player.hp==2&&player.countCards('h','shan')==0){
return 8-get.attitude(_status.event.player,target);
}
return -1;
},
prompt:get.prompt('gaoyuan'),
prompt2:'弃置一张牌,将此【杀】转移给一名有“诤”的角色',
source:trigger.player,
card:trigger.card,
});
"step 1"
if(result.bool){
var target=result.targets[0];
player.logSkill(event.name,target);
player.discard(result.cards);
var evt=trigger.getParent();
evt.triggeredTargets2.remove(player);
evt.targets.remove(player);
evt.targets.push(target);
}
},
},
//一 将 成 名
zhilve:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
content:function(){
'step 0'
if(!player.canMoveCard()) event._result={index:1};
else player.chooseControl().set('choiceList',[
'移动场上的一张牌',
'本回合的摸牌阶段多摸一张牌且第一张杀无距离次数限制',
]).set('ai',function(){return 1});
'step 1'
if(result.index==1){
player.addTempSkill('zhilve_yingzi');
if(!player.getHistory('useCard',function(card){
return card.card.name=='sha';
}).length) player.addTempSkill('zhilve_xiandeng');
event.finish();
}
else player.moveCard(true);
'step 2'
if(result.position=='e') player.loseHp();
else player.addTempSkill('zhilve_dis');
},
subSkill:{
dis:{
mod:{
maxHandcard:function(player,num){
return num-1;
},
},
},
yingzi:{
trigger:{player:'phaseDrawBegin2'},
popup:false,
forced:true,
filter:function(event,player){
return !event.numFixed;
},
content:function(){trigger.num++},
},
xiandeng:{
mod:{
targetInRange:function(card,player){
if(card.name=='sha') return true;
},
},
trigger:{player:'useCard1'},
forced:true,
popup:false,
firstDo:true,
filter:function(event,player){
return event.card.name=='sha';
},
content:function(){
player.removeSkill(event.name);
if(trigger.addCount!==false){
trigger.addCount=false;
var stat=player.getStat('card');
if(stat&&stat.sha) stat.sha--;
}
},
},
},
},
xhzhiyan:{
enable:'phaseUse',
audio:2,
filter:function(event,player){
return player.countCards('h')!=player.maxHp;
},
filterCard:true,
selectCard:function(){
var player=_status.event.player;
var num=Math.max(0,player.countCards('h')-player.maxHp);
return [num,num];
},
check:function(card){
var player=_status.event.player;
if(player.getUseValue(card)<=0&&game.hasPlayer(function(current){
return current!=player&&get.value(card,current)*get.attitude(player,current)>0;
})) return 1;
return 0;
},
content:function(){
'step 0'
if(!cards.length){
player.draw(player.maxHp-player.countCards('h'));
player.addTempSkill('zishou2');
event.finish();
}
else{
cards=cards.filterInD('d');
if(cards.length) player.chooseButton(['是否将其中的一张牌交给一名其他角色?',cards]).set('',function(button){
var player=_status.event.player;
if(game.hasPlayer(function(current){
return current!=player&&get.value(button.link,current)*get.attitude(player,current)>0;
})) return Math.abs(get.value(button.link));
return 0;
});
else event.finish();
}
'step 1'
if(result.bool){
event.card=result.links[0];
player.chooseTarget(true,lib.filter.notMe,'选择一名其他角色获得'+get.translation(event.card)).set('ai',function(target){
return get.value(_status.event.getParent().card,target)*get.attitude(_status.event.player,target);
});
}
else event.finish();
'step 2'
var target=result.targets[0];
player.line(target,'green');
target.gain(card,'gain2','log');
},
ai:{
order:function(obj,player){
if(player.countCards('h')>player.maxHp) return 10;
return 0.5;
},
result:{
player:1,
},
},
},
//水 果 忍 者
zhengjing_guanju:{audio:true},
zhengjing:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return !player.hasSkill('zhengjing3');
},
content:function(){
"step 0"
//game.trySkillAudio('zhengjing_guanju',player);
if(_status.connectMode) event.time=lib.configOL.choose_timeout;
var cards=[];
var names=[];
while(true){
var card=get.cardPile(function(carde){
return carde.name!='du'&&!names.contains(carde.name);
});
if(card){
cards.push(card);
names.push(card.name);
if(cards.length==3&&!get.isLuckyStar(player)&&Math.random()<0.33) break;
if(cards.length==4&&!get.isLuckyStar(player)&&Math.random()<0.5) break;
if(cards.length==5) break;
if(cards.length>=6) break;
}
else break;
};
event.cards=cards;
if(!cards.length){event.finish();return;};
names.push('du');
var names2=names.slice(0);
for(var i=0;i<4;i++){
names=names.concat(names2);
}
names.randomSort();
event.videoId=lib.status.videoId++;
if(player.isUnderControl()){
game.swapPlayerAuto(player);
}
var switchToAuto=function(){
names.remove('du');
game.pause();
game.countChoose();
setTimeout(function(){
_status.imchoosing=false;
event._result={
bool:true,
links:names.slice(0),
};
if(event.dialog) event.dialog.close();
if(event.control) event.control.close();
game.resume();
},5000);
};
var createDialog=function(player,id){
if(_status.connectMode) lib.configOL.choose_timeout='30';
if(player==game.me) return;
var str=get.translation(player)+'正在整理经书...<br>';
ui.create.dialog(str).videoId=id;
};
var chooseButton=function(list){
var roundmenu=false;
if(ui.roundmenu&&ui.roundmenu.display!='none'){
roundmenu=true;
ui.roundmenu.style.display='none';
}
var event=_status.event;
event.settleed=false;
event.finishedx=[];
event.map={};
event.zhengjing=list;
event.zhengjing_nodes=[];
event.map=[];
event.dialog=ui.create.dialog('forcebutton','hidden');
event.dialog.textPrompt=event.dialog.add('<div class="text center">及时点击卡牌,但不要点到毒了!</div>');
event.switchToAuto=function(){
event._result={
bool:true,
links:event.finishedx.slice(0),
};
event.dialog.close();
game.resume();
_status.imchoosing=false;
if(roundmenu) ui.roundmenu.style.display='';
};
event.dialog.classList.add('fixed');
event.dialog.classList.add('scroll1');
event.dialog.classList.add('scroll2');
event.dialog.classList.add('fullwidth');
event.dialog.classList.add('fullheight');
event.dialog.classList.add('noupdate');
event.dialog.open();
event.settle=function(du){
if(event.settleed) return;
event.settleed=true;
if(du){
if(lib.config.background_speak) game.playAudio('skill','zhengjing_boom');
event.dialog.textPrompt.innerHTML='<div class="text center">叫你别点毒你非得点 这下翻车了吧</div>';
}
else {
if(lib.config.background_speak) game.playAudio('skill','zhengjing_finish');
event.dialog.textPrompt.innerHTML='<div class="text center">整理经典结束!共整理出'+get.cnNumber(event.finishedx.length)+'份经典</div>';
}
while(event.zhengjing_nodes.length){
event.zhengjing_nodes.shift().delete();
}
setTimeout(function(){
event.switchToAuto();
},1000);
};
var click=function(){
var name=this.name;
if(name=='du'){
event.zhengjing.length=0;
event.settle(true);
}
else{
if(lib.config.background_speak) game.playAudio('skill','zhengjing_click');
if(!event.map[name]) event.map[name]=0;
event.map[name]++;
if(event.map[name]>1) event.finishedx.add(name);
}
event.zhengjing_nodes.remove(this);
this.style.transition='all 0.5s';
this.style.transform='scale(1.2)';
this.delete();
};
var addNode=function(){
if(event.zhengjing.length){
var card=ui.create.card(ui.special,'noclick',true);
card.init(['','',event.zhengjing.shift()]);
card.addEventListener(lib.config.touchscreen?'touchend':'click',click);
event.zhengjing_nodes.push(card);
card.style.position='absolute';
var rand1=Math.round(Math.random()*100);
var rand2=Math.round(Math.random()*100);
var rand3=Math.round(Math.random()*40)-20;
card.style.left='calc('+rand1+'% - '+rand1+'px)';
card.style.top='calc('+rand2+'% - '+rand2+'px)';
card.style.transform='scale(0.8) rotate('+rand3+'deg)';
card.style.opacity=0;
event.dialog.appendChild(card);
ui.refresh(card);
card.style.opacity=1;
card.style.transform='scale(1) rotate('+rand3+'deg)';
}
if(event.zhengjing_nodes.length>(event.zhengjing.length>0?2:0)) event.zhengjing_nodes.shift().delete();
if(event.zhengjing.length||event.zhengjing_nodes.length) setTimeout(function(){
addNode();
},800);
else event.settle();
};
game.pause();
game.countChoose();
addNode();
};
//event.switchToAuto=switchToAuto;
game.broadcastAll(createDialog,player,event.videoId);
if(event.isMine()){
chooseButton(names);
}
else if(event.isOnline()){
event.player.send(chooseButton,names);
event.player.wait();
game.pause();
}
else{
switchToAuto();
}
"step 1"
game.broadcastAll(function(id,time){
if(_status.connectMode) lib.configOL.choose_timeout=time;
var dialog=get.idDialog(id);
if(dialog){
dialog.close();
}
},event.videoId,event.time);
var result=event.result||result;
for(var i=0;i<cards.length;i++){
//if(cards.length==1) break;
if(!result.links.contains(cards[i].name)) cards.splice(i--,1);
}
if(cards.length) player.showCards(cards,get.translation(player)+'整理出了以下经典');
else{
game.log(player,'并没有整理出经典');
player.popup('杯具');
event.finish();
}
"step 2"
player.chooseTarget(true,'将整理出的经典置于一名角色的武将牌上').set('ai',function(target){
if(target.hasSkill('xinfu_pdgyingshi')) return 0;
var player=_status.event.player;
var cards=_status.event.getParent().cards;
var att=get.attitude(player,target);
if(cards.length==1) return -att;
if(player==target) att/=2;
if(target.hasSkill('pingkou')) att*=1.4;
att*=(1+target.countCards('j')/2);
return att;
});
"step 3"
if(result.bool){
var target=result.targets[0];
player.line(target,'thunder');
target.addSkill('zhengjing2');
target.markAuto('zhengjing2',cards);
game.cardsGotoSpecial(cards);
game.log(player,'将',cards,'置于了',target,'的武将牌上');
}
"step 4"
game.updateRoundNumber();
},
ai:{
order:10,
result:{player:1},
threaten:3.2,
}
},
//恁就是仲村由理?
zhengjing2:{
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
intro:{content:'cards'},
content:function(){
player.gain(player.storage.zhengjing2,'gain2','log','fromStorage');
delete player.storage.zhengjing2;
player.removeSkill('zhengjing2');
//player.addTempSkill('zhengjing3');
player.skip('phaseJudge');
player.skip('phaseDraw');
},
},
zhengjing3:{},
//邓芝
jimeng:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current.countGainableCards(player,'he')>0;
})
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('jimeng'),function(card,player,target){
return target!=player&&target.countGainableCards(player,'he')>0;
}).set('ai',function(target){
var player=_status.event.player;
if(player.hp>1&&get.attitude(player,target)<2) return 0;
return get.effect(target,{name:'shunshou'},player,player);
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('jimeng',target);
player.gainPlayerCard(target,'he',true);
}
else event.finish();
'step 2'
var hs=player.getCards('he');
if(player.hp>0&&hs.length){
if(hs.length<=player.hp) event._result={bool:true,cards:hs};
else player.chooseCard(player.hp,true,'交给'+get.translation(target)+get.cnNumber(player.hp)+'张牌','he',true);
}
else event.finish();
'step 3'
target.gain(result.cards,player,'giveAuto');
},
},
shuaiyan:{
audio:2,
trigger:{player:'phaseDiscardBegin'},
filter:function(event,player){
return player.countCards('h')>1;
},
check:function(event,player){
return game.hasPlayer(function(current){
return current!=player&&current.countCards('he')&&lib.skill.shuaiyan.check2(current,player);
});
},
check2:function(target,player){
if(get.itemtype(player)!='player') player=_status.event.player;
return -get.attitude(player,target)/target.countCards('he');
},
content:function(){
'step 0'
player.showHandcards(get.translation(player)+'发动了【率言】');
'step 1'
var filter=function(card,player,target){
return player!=target&&target.countCards('he')>0;
};
if(game.hasPlayer(function(current){
return filter('我约等于白板',player,current);
})){
player.chooseTarget(true,filter,'选择一名其他角色,令其交给你一张牌').set('ai',lib.skill.shuaiyan.check2);
}
else event.finish();
'step 2'
var target=result.targets[0];
event.target=target;
player.line(target,'green');
target.chooseCard('he',true,'交给'+get.translation(player)+'一张牌');
'step 3'
player.gain(result.cards,target,'giveAuto')
},
},
relihuo:{
audio:2,
group:['relihuo_baigei','relihuo_damage'],
trigger:{player:'useCard1'},
filter:function(event,player){
if(event.card.name=='sha'&&!event.card.nature) return true;
},
check:function(event,player){
return false;
},
content:function(){
trigger.card.nature='fire';
trigger.relihuo=true;
},
},
relihuo_damage:{
trigger:{source:'damageBegin1'},
forced:true,
audio:'relihuo',
filter:function(event,player){
return event.getParent(2).relihuo==true;
},
content:function(){
trigger.num++;
},
},
relihuo_baigei:{
trigger:{player:'useCardAfter'},
forced:true,
audio:'relihuo',
filter:function(event,player){
if(event.card.name!='sha'||event.card.nature!='fire') return false;
var num=0;
player.getHistory('sourceDamage',function(evt){
if(evt.card==event.card) num+=evt.num;
});
return num>1;
},
content:function(){
var num=0;
player.getHistory('sourceDamage',function(evt){
if(evt.card==trigger.card) num+=evt.num;
});
player.loseHp(Math.floor(num/2));
},
},
gongsun:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
return player.countCards('he')>1;
},
content:function(){
'step 0'
player.chooseCardTarget({
prompt:get.prompt2('gongsun'),
selectCard:2,
filterCard:lib.filter.cardDiscardable,
filterTarget:lib.filter.notMe,
position:'he',
ai1:function(card){
var friend=0,enemy=0,player=_status.event.player;
var num=game.countPlayer(function(target){
var att=get.attitude(player,target);
if(att<0) enemy++;
if(target!=player&&att>0) friend++;
return true;
});
if(num>(friend+enemy+2)) return 0;
if(friend<enemy) return 0;
if(card.name=='sha') return 10-enemy;
return 10-enemy-get.value(card);
},
ai2:function(target){
return -get.attitude(_status.event.player,target)*(1+target.countCards('h'));
},
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('gongsun',target);
player.discard(result.cards);
player.addTempSkill('gongsun_shadow',{player:['phaseBegin','die']});
var list=[];
for(var i=0;i<lib.inpile.length;i++){
var name=lib.inpile[i];
if(get.type(name)=='trick') list.push(['锦囊','',name]);
else if(get.type(name)=='basic') list.push(['基本','',name]);
}
player.chooseButton(['请选择一个牌名',[list,'vcard'],true]).set('ai',function(button){
return button.link[2]=='sha'?1:0;
});
}
else event.finish();
'step 2'
player.storage.gongsun_shadow.push([target,result.links[0][2]]);
player.popup(result.links[0][2],'soil');
game.log(player,'选择了',''+get.translation(result.links[0][2]));
player.markSkill('gongsun_shadow');
},
},
gongsun_shadow:{
global:'gongsun_shadow2',
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
marktext:'损',
onremove:true,
intro:{
content:function(shadow){
var str='';
for(var i=0;i<shadow.length;i++){
if(i>0) str+='<br>'
str+=get.translation(shadow[i][0]);
str+='';
str+=get.translation(shadow[i][1]);
}
return str;
},
},
mod:{
cardEnabled:function(card,player){
var list=player.storage.gongsun_shadow;
for(var i=0;i<list.length;i++){
if(list[i][1]==card.name) return false;
}
},
cardRespondable:function(card,player){
var list=player.storage.gongsun_shadow;
for(var i=0;i<list.length;i++){
if(list[i][1]==card.name) return false;
}
},
cardSavable:function(card,player){
var list=player.storage.gongsun_shadow;
for(var i=0;i<list.length;i++){
if(list[i][1]==card.name) return false;
}
},
cardDiscardable:function(card,player){
var list=player.storage.gongsun_shadow;
for(var i=0;i<list.length;i++){
if(list[i][1]==card.name) return false;
}
},
},
},
gongsun_shadow2:{
mod:{
cardEnabled:function(card,player){
if(game.hasPlayer(function(current){
var list=current.storage.gongsun_shadow;
if(!list) return false;
for(var i=0;i<list.length;i++){
if(list[i][0]==player&&list[i][1]==card.name) return true;
}
return false;
})) return false;
},
cardSavable:function(card,player){
if(game.hasPlayer(function(current){
var list=current.storage.gongsun_shadow;
if(!list) return false;
for(var i=0;i<list.length;i++){
if(list[i][0]==player&&list[i][1]==card.name) return true;
}
return false;
})) return false;
},
cardRespondable:function(card,player){
if(game.hasPlayer(function(current){
var list=current.storage.gongsun_shadow;
if(!list) return false;
for(var i=0;i<list.length;i++){
if(list[i][0]==player&&list[i][1]==card.name) return true;
}
return false;
})) return false;
},
cardDiscardable:function(card,player){
if(game.hasPlayer(function(current){
var list=current.storage.gongsun_shadow;
if(!list) return false;
for(var i=0;i<list.length;i++){
if(list[i][0]==player&&list[i][1]==card.name) return true;
}
return false;
})) return false;
},
},
},
duoduan:{
audio:2,
trigger:{target:'useCardToTargeted'},
direct:true,
filter:function(event,player){
return event.card.name=='sha'&&player.countCards('he')>0&&!player.hasSkill('duoduan_im');
},
content:function(){
'step 0'
player.chooseCard('he',get.prompt2('duoduan')).set('ai',function(card){
if(_status.event.goon) return 8-get.value(card);
return 0;
}).set('goon',function(){
if(get.attitude(trigger.player,player)>0) return true;
if(!trigger.player.countCards('he')) return true;
if(!player.hasShan()) return true;
return event.getRand()<0.5;
}());
'step 1'
if(result.bool){
player.addTempSkill('duoduan_im');
var card=result.cards[0];
player.logSkill('duoduan',trigger.player);
player.lose(card,ui.discardPile,'visible');
player.$throw(card,1000);
game.log(player,'将',card,'置入弃牌堆');
player.draw();
}
else event.finish();
'step 2'
var sha=get.translation(trigger.card);
if(!trigger.player.countCards('he',function(card){
return lib.filter.cardDiscardable(card,trigger.player,'duoduan');
})) event.finish();
else player.chooseControl().set('choiceList',[
'令其摸两张牌,然后令'+sha+'对你无效',
'令其弃置一张牌,然后你不可响应'+sha,
]).set('prompt','度断:令'+get.translation(trigger.player)+'执行一项').set('ai',function(){
var player=_status.event.player;
var source=_status.event.getTrigger().player;
if(get.attitude(player,source)>0) return 0;
if(!player.hasShan()&&player.hp>=2) return 1;
return 0;
});
'step 3'
if(result.index==0) event.goto(5);
else trigger.player.chooseToDiscard('弃置一张牌令'+get.translation(player)+'不能闪避此【杀】','he',true);
'step 4'
if(result.bool){
trigger.directHit.add(player);
}
event.finish();
'step 5'
trigger.player.draw(2);
trigger.excluded.add(player);
},
},
duoduan_im:{
//'im' refers to 'Iwasawa Masami' in 'Angel Beats!'
//Although she disappeared in the Episode 3 of the anime, but her route in the game is really worth to play.
},
chengzhao:{
audio:2,
trigger:{global:'phaseJieshuBegin'},
filter:function(event,player){
var num=0;
player.getHistory('gain',function(evt){
num+=evt.cards.length;
});
if(num<2) return false;
return player.countCards('h')>0&&game.hasPlayer(function(current){
return player!=current&&player.canCompare(current);
});
},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('chengzhao'),function(card,player,target){
return player.canCompare(target);
}).set('ai',function(target){
return -get.attitude(_status.event.player,target)/target.countCards('h');
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('chengzhao',target);
player.chooseToCompare(target);
}
else event.finish();
'step 2'
if(result.bool){
var card={name:'sha',isCard:true};
if(player.canUse(card,target,false)) player.useCard(card,target,false).card.chengzhao=true;
}
},
ai:{
unequip:true,
skillTagFilter:function(player,tag,arg){
if(!arg||!arg.card||arg.card.chengzhao!=true) return false;
},
},
},
rezhengrong:{
trigger:{player:'useCardAfter'},
direct:true,
audio:'drlt_zhenrong',
filter:function(event,player){
if(!event.targets) return false;
if(!event.isPhaseUsing(player)) return false;
var bool=false;
for(var i=0;i<event.targets.length;i++){
if(event.targets[i]!=player){bool=true;break}
}
if(!bool) return false;
return player.getAllHistory('useCard',function(evt){
if(!evt.isPhaseUsing(player)) return false;
for(var i=0;i<evt.targets.length;i++){
if(evt.targets[i]!=player) return true;
}
return false;
}).indexOf(event)%2==1;
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('rezhengrong'),'将一名其他角色的随机一张牌置于你的武将牌上,成为「荣」',function(card,player,target){
return target!=player&&target.countCards('he')>0;
}).set('ai',function(target){
return (1-get.attitude(_status.event.player,target))/target.countCards('he');
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=result.targets[0];
player.logSkill('rezhengrong',target);
var card=target.getCards('he').randomGet();
game.log(player,'选择了',card);
target.$give(card,player,false);
target.lose(card,ui.special,'toStorage');
if(!player.storage.rezhengrong) player.storage.rezhengrong=[];
player.storage.rezhengrong.push(card);
player.markSkill('rezhengrong');
game.delayx();
}
},
marktext:'荣',
intro:{
content:'cards',
onunmark:'throw',
},
},
rehongju:{
trigger:{player:'phaseZhunbeiBegin'},
audio:'drlt_hongju',
forced:true,
unique:true,
juexingji:true,
skillAnimation:true,
animationColor:'thunder',
derivation:'reqingce',
filter:function(event,player){
return player.storage.rezhengrong&&player.storage.rezhengrong.length>=3&&game.dead.length>0;
},
content:function(){
'step 0'
player.awakenSkill('rehongju');
player.draw(player.storage.rezhengrong.length);
'step 1'
if(player.countCards('h')==0) event.goto(3);
else{
var dialog=['请选择要交换的手牌和「荣」,或点「取消」','<div class="text center">「征荣」牌</div>',player.storage.rezhengrong,'<div class="text center">手牌区</div>',player.getCards('h')];
var next=player.chooseButton(dialog);
next.set('filterButton',function(button){
var ss=_status.event.player.storage.rezhengrong;
var hs=_status.event.player.getCards('h');
var sn=0;
var hn=0;
var ub=ui.selected.buttons;
for(var i=0;i<ub.length;i++){
if(ss.contains(ub[i].link)) sn++;
else hn++;
}
return !(sn>=hs.length&&ss.contains(button.link)||hn>=ss.length&&hs.contains(button.link));
});
next.set('selectButton',function(){
if(ui.selected.buttons.length==0) return 2;
var ss=_status.event.player.storage.rezhengrong;
var hs=_status.event.player.getCards('h');
var sn=0;
var hn=0;
var ub=ui.selected.buttons;
for(var i=0;i<ub.length;i++){
if(ss.contains(ub[i].link)) sn++;
else hn++;
}
if(sn!=hn) return 2*Math.max(sn,hn);
else{
if(sn==ss.length||hn==hs.length||sn==hs.length||hn==ss.length) return ub.length;
return [ub.length,ub.length+1];
}
});
next.set('ai',function(){return -1});
}
'step 2'
if(result.bool){
var gains=[];
var pushs=[];
for(var i=0;i<result.links.length;i++){
var card=result.links[i];
if(player.storage.rezhengrong.contains(card)) gains.push(card);
else pushs.push(card);
}
player.lose(pushs,ui.special,'toStorage');
game.log(player,'将',pushs,'放在了武将牌上');
player.gain(gains,'gain2','log','fromStorage');
player.storage.rezhengrong.addArray(pushs);
player.storage.rezhengrong.removeArray(gains);
player.markSkill('rezhengrong');
}
'step 3'
player.addSkill('reqingce');
game.log(player,'获得了技能','#g【清侧】');
player.loseMaxHp();
},
},
reqingce:{
enable:'phaseUse',
audio:'drlt_qingce',
filter:function(event,player){
return player.storage.rezhengrong&&player.storage.rezhengrong.length>0;
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('请选择要移去的「荣」',player.storage.rezhengrong,'hidden');
},
backup:function(links,player){
return {
card:links[0],
filterCard:function(){return false},
selectCard:-1,
filterTarget:function(card,player,target){
return target.countDiscardableCards(player,'ej')>0;
},
delay:false,
audio:'drlt_qingce',
content:lib.skill.reqingce.contentx,
ai:{
result:{
target:function(player,target){
var att=get.attitude(player,target);
if(att>0&&(target.countCards('j')>0||target.countCards('e',function(card){
return get.value(card,target)<0;
}))) return 2;
if(att<0&&target.countCards('e')>0&&!target.hasSkillTag('noe')) return -1;
return 0;
},
},
},
}
},
prompt:function(links,player){
return '弃置一名角色装备区或判定区内的一张牌';
},
},
contentx:function(){
'step 0'
var card=lib.skill.reqingce_backup.card;
player.$throw(card);
game.cardsDiscard(card);
player.storage.rezhengrong.remove(card);
player[player.storage.rezhengrong.length>0?'markSkill':'unmarkSkill']('rezhengrong');
'step 1'
if(target.countDiscardableCards(player,'ej')>0){
player.discardPlayerCard('ej',true,target);
}
},
ai:{
order:8,
result:{
player:function(player){
if(game.hasPlayer(function(current){
var att=get.attitude(player,current);
if((att>0&&current.countCards('j')>0)||(att<0&&current.countCards('e')>0)) return true;
return false;
})) return 1;
return 0;
},
},
},
},
fengji:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return typeof player.storage.fengji=='number'&&player.countCards('h')>=player.storage.fengji;
},
content:function(){
player.draw(2);
player.addTempSkill('fengji3');
},
group:'fengji2',
intro:{
content:'上回合结束时的手牌数:#',
},
},
fengji2:{
trigger:{player:'phaseEnd'},
silent:true,
content:function(){
player.storage.fengji=player.countCards('h');
if(player.hasSkill('fengji')) player.markSkill('fengji');
},
},
fengji3:{
mod:{
maxHandcardBase:function(player,num){
return player.maxHp;
},
},
},
zhouxuan:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('he')>0;
},
filterCard:true,
position:'he',
filterTarget:lib.filter.notMe,
check:function(card){
return 6-get.value(card);
},
content:function(){
'step 0'
player.addSkill('zhouxuan2');
target.addTempSkill('zhouxuan_ai',{player:'phaseUseAfter'});
player.storage.zhouxuan2={};
player.storage.zhouxuan2.player=target;
var list=[];
var basic=[];
for(var i=0;i<lib.inpile.length;i++){
var name=lib.inpile[i];
var type=get.type(name,'trick');
if(type=='basic'){
list.push(name);
basic.push(name);
}
else list.add(type);
}
event.basic=basic;
player.chooseControl(list).set('prompt','请选择一种基本牌的名称或非基本牌的类别').set('ai',function(){
var player=_status.event.player;
var target=player.storage.zhouxuan2.player;
var cards=target.getCards('h',function(card){
return target.hasUseTarget(card);
});
var map={};
for(var i=0;i<cards.length;i++){
var type=get.type(cards[i],'trick');
map[type=='basic'?get.name(cards[i]):type]=true;
}
if(map.equip) return 'equip';
if(map.trick) return 'trick';
if(map.sha) return 'sha';
if(map.tao) return 'tao';
return 0;
});
'step 1'
player.storage.zhouxuan2.card=result.control;
if(event.basic.contains(result.control)) player.storage.zhouxuan2.isbasic=true;
player.markSkill('zhouxuan2');
},
ai:{
order:1,
result:{
player:function(player,target){
if(get.attitude(player,target)>0) return Math.max(1,target.hp)*target.countCards('h',function(card){
return target.getUseValue(card)>0;
});
return 0;
},
},
},
},
zhouxuan_ai:{
mod:{
aiOrder:function(player,card,num){
if(game.hasPlayer(function(current){
return current.storage.zhouxuan2&&current.storage.zhouxuan2.player==player&&get.attitude(player,current)>0&&(current.storage.zhouxuan2.isbasic?card.name:get.type(card,'trick'))==current.storage.zhouxuan2.card;
})) return num+10;
}
},
},
zhouxuan2:{
intro:{
mark:function(player,storage){
return get.translation(storage.player)+'使用或打出下一张牌时,若此牌为'+get.translation(storage.card)+(storage.isbasic?'':'牌')+',你观看牌堆顶的三张牌并分配给任意角色';
},
},
audio:'zhouxuan',
forced:true,
charlotte:true,
trigger:{global:['useCard','respond']},
filter:function(event,player){
if(event.zhouxuanable) return true;
if(player.storage.zhouxuan2){
var map=player.storage.zhouxuan2;
if(map.player!=event.player) return false;
delete player.storage.zhouxuan2;
player.unmarkSkill('zhouxuan2');
if(map.card!=(map.isbasic?event.card.name:get.type(event.card,'trick'))) return false;
event.zhouxuanable=true;
return true;
}
return false;
},
logTarget:'player',
content:function(){
"step 0"
event.cards=game.cardsGotoOrdering(get.cards(3)).cards;
"step 1"
if(event.cards.length>1){
player.chooseCardButton('周旋:请选择要分配的牌',true,event.cards,[1,event.cards.length]).set('ai',function(button){
if(ui.selected.buttons.length==0) return 1;
return 0;
});
}
else if(event.cards.length==1){
event._result={links:event.cards.slice(0),bool:true};
}
else{
event.finish();
}
"step 2"
if(result.bool){
for(var i=0;i<result.links.length;i++){
event.cards.remove(result.links[i]);
}
event.togive=result.links.slice(0);
player.chooseTarget('将'+get.translation(result.links)+'交给一名角色',true).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(_status.event.enemy){
return -att;
}
else if(att>0){
return att/(1+target.countCards('h'));
}
else{
return att/100;
}
}).set('enemy',get.value(event.togive[0],player,'raw')<0);
}
"step 3"
if(result.targets.length){
result.targets[0].gain(event.togive,'draw');
player.line(result.targets[0],'green');
game.log(result.targets[0],'获得了'+get.cnNumber(event.togive.length)+'张牌');
event.goto(1);
}
},
},
reshanxi:{
audio:'shanxi',
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
return player.hp>0&&player.countCards('h',function(card){
if(_status.connectMode) return true;
return get.color(card)=='red'&&get.type(card)=='basic';
})>0;
},
content:function(){
'step 0'
player.chooseCardTarget({
filterCard:function(card){
return get.color(card)=='red'&&get.type(card)=='basic'&&lib.filter.cardDiscardable.apply(this,arguments);
},
filterTarget:function(card,player,target){
return player!=target&&target.countCards('he')>0;
},
prompt:get.prompt('reshanxi'),
prompt2:'弃置一张红色基本牌并选择一名其他角色将其的至多X张牌置于其武将牌上直到回合结束。X为你的体力值',
ai1:function(){return -1},
});
'step 1'
if(result.bool){
event.target=result.targets[0];
player.logSkill('reshanxi',event.target);
player.discard(result.cards);
}
else event.finish();
'step 2'
var max=Math.min(player.hp,target.countCards('he'));
if(max>0){
player.choosePlayerCard('he',target,true,[1,max]).set('forceAuto',true).set('prompt','将'+get.translation(target)+'的至多'+get.cnNumber(max)+'张牌置于其武将牌上');
}
else event.finish();
'step 3'
target.addSkill('reshanxi2');
target.storage.reshanxi2.addArray(result.cards);
target.lose(result.cards,ui.special,'toStorage');
game.log(target,'失去了'+get.cnNumber(result.cards.length)+'张牌');
target.markSkill('reshanxi2');
},
},
reshanxi2:{
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
trigger:{global:'phaseEnd'},
forced:true,
popup:false,
charlotte:true,
filter:function(event,player){
return player.storage.reshanxi2&&player.storage.reshanxi2.length>0;
},
content:function(){
game.log(player,'收回了'+get.cnNumber(player.gain(player.storage.reshanxi2,'draw','fromStorage').cards.length)+'张〖闪袭〗牌');
player.storage.reshanxi2.length=0;
player.removeSkill('reshanxi2');
},
intro:{
onunmark:'throw',
content:'cardCount',
},
},
reqizhou:{
trigger:{player:['equipEnd','loseEnd']},
forced:true,
popup:false,
derivation:['reyingzi','qixi','rexuanfeng'],
filter:function(event,player){
if(player.equiping) return false;
var suits=[];
var es=player.getCards('e');
for(var i=0;i<es.length;i++){
suits.add(get.suit(es[i]));
}
if(suits.length>3) suits.length=3;
if(player.additionalSkills.reqizhou){
return player.additionalSkills.reqizhou.length!=suits.length;
}
else{
return suits.length>0;
}
},
content:function(){
lib.skill.reqizhou.init(player,'reqizhou');
},
init:function(player,skill){
var suits=[];
var es=player.getCards('e');
for(var i=0;i<es.length;i++){
suits.add(get.suit(es[i]));
}
if(suits.length>3) suits.length=3;
player.removeAdditionalSkill(skill);
switch(suits.length){
case 1:player.addAdditionalSkill(skill,['reyingzi']);break;
case 2:player.addAdditionalSkill(skill,['reyingzi','qixi']);break;
case 3:player.addAdditionalSkill(skill,['reyingzi','qixi','rexuanfeng']);break;
}
},
ai:{
threaten:1.2
}
},
zhaohan:{
audio:2,
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return player.phaseNumber<8;
},
check:function(event,player){
return player.phaseNumber<3;
},
content:function(){
if(player.phaseNumber<5){
player.gainMaxHp();
player.recover();
}
else player.loseMaxHp();
},
},
rangjie:{
audio:2,
trigger:{player:'damageEnd'},
direct:true,
content:function(){
'step 0'
event.count=trigger.num;
'step 1'
event.count--;
var choiceList=['获得一张指定类型的牌'];
if(player.canMoveCard()) choiceList.push('移动场上的一张牌');
player.chooseControl('cancel2').set('choiceList',choiceList).set('prompt',get.prompt('rangjie')).set('ai',function(){
var player=_status.event.player;
if(player.canMoveCard(true)) return 1;
return 0;
});
'step 2'
if(result.control=='cancel2') event.finish();
else{
player.logSkill('rangjie');
player.draw();
if(result.index==0){
player.chooseControl('basic','trick','equip').set('prompt','选择获得一种类型的牌').set('ai',function(){
var player=_status.event.player;
if(player.hp<=3&&!player.countCards('h',{name:['shan','tao']})) return 'basic';
if(player.countCards('he',{type:'equip'})<2) return 'equip';
return 'trick';
});
}
else{
player.moveCard(true);
event.goto(4);
}
}
'step 3'
var card=get.cardPile2(function(card){
return get.type(card,'trick')==result.control;
});
if(card) player.gain(card,'gain2','log');
'step 4'
if(event.count>0) event.goto(1);
},
ai:{
maixie:true,
"maixie_hp":true,
effect:{
target:function(card,player,target){
if(get.tag(card,'damage')){
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
if(!target.hasFriend()) return;
var num=1;
if(get.attitude(player,target)>0){
if(player.needsToDiscard()){
num=0.7;
}
else{
num=0.5;
}
}
if(target.hp>=4) return [1,num*2];
if(target.hp==3) return [1,num*1.5];
if(target.hp==2) return [1,num*0.5];
}
},
},
},
},
yizheng:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer(function(current){
return current.hp<=player.hp&&player.canCompare(current);
});
},
filterTarget:function(card,player,current){
return current.hp<=player.hp&&player.canCompare(current);
},
content:function(){
'step 0'
player.chooseToCompare(target);
'step 1'
if(result.bool){
target.skip('phaseDraw');
target.addTempSkill('yizheng2',{player:'phaseDrawSkipped'});
}
else player.loseMaxHp();
},
ai:{
order:1,
result:{
target:function(player,target){
if(target.skipList.contains('phaseDraw')||target.hasSkill('pingkou')) return 0;
var hs=player.getCards('h').sort(function(a,b){
return b.number-a.number;
});
var ts=target.getCards('h').sort(function(a,b){
return b.number-a.number;
});
if(!hs.length||!ts.length) return 0;
if(hs[0].number>ts[0].number) return -1;
return 0;
},
},
},
},
yizheng2:{
mark:true,
intro:{content:'跳过下回合的摸牌阶段'},
},
rw_zhuge_skill:{
equipSkill:true,
audio:true,
firstDo:true,
trigger:{player:'useCard1'},
forced:true,
filter:function(event,player){
return !event.audioed&&event.card.name=='sha'&&player.countUsed('sha',true)>1&&event.getParent().type=='phase';
},
content:function(){
trigger.audioed=true;
},
mod:{
cardUsable:function(card,player,num){
var cardx=player.getEquip('rewrite_zhuge');
if(card.name=='sha'&&(!cardx||player.hasSkill('rw_zhuge_skill',null,false)||(!_status.rw_zhuge_temp&&!ui.selected.cards.contains(cardx)))){
return Infinity;
}
},
cardEnabled2:function(card,player){
if(!_status.event.addCount_extra||player.hasSkill('rw_zhuge_skill',null,false)) return;
if(card&&card==player.getEquip('rewrite_zhuge')){
try{
var cardz=get.card();
}
catch(e){
return;
}
if(!cardz||cardz.name!='sha') return;
_status.rw_zhuge_temp=true;
var bool=lib.filter.cardUsable(get.autoViewAs({name:'sha'},ui.selected.cards.concat([card])),player);
delete _status.rw_zhuge_temp;
if(!bool) return false;
}
},
},
},
xinqingjian:{
audio:'qingjian',
trigger:{player:'gainEnd'},
direct:true,
usable:1,
filter:function(event,player){
return event.getParent('phaseDraw').player!=player&&player.countCards('he')>0;
},
content:function(){
'step 0'
player.chooseCard(get.prompt2('xinqingjian'),'he',[1,player.countCards('he')]).ai=function(){return -1};
'step 1'
if(result.bool){
player.logSkill('xinqingjian');
player.addSkill('xinqingjian2');
player.storage.xinqingjian2.addArray(result.cards);
game.log(player,'将'+get.cnNumber(player.lose(result.cards,ui.special,'toStorage').cards.length)+'张牌置于其武将牌上');
player.markSkill('xinqingjian2');
}
else player.storage.counttrigger.xinqingjian--;
},
},
xinqingjian2:{
audio:'xinqingjian',
charlotte:true,
trigger:{global:'phaseEnd'},
forced:true,
filter:function(event,player){
return player.storage.xinqingjian2&&player.storage.xinqingjian2.length>0;
},
init:function(player){
if(!player.storage.xinqingjian2) player.storage.xinqingjian2=[];
},
content:function(){
'step 0'
player.chooseTarget(true,lib.filter.notMe).set('createDialog',['清俭:选择一名角色获得这些牌'+(player.storage.xinqingjian2.length>1?',然后摸一张牌':''),player.storage.xinqingjian2]);
'step 1'
if(result.bool){
var target=result.targets[0];
player.line(target,'thunder');
if(target.gain(player.storage.xinqingjian2,player,'giveAuto','fromStorage').cards.length>1) player.draw();
player.storage.xinqingjian2.length=0;
player.removeSkill('xinqingjian2');
}
},
intro:{
onunmark:'throw',mark:function(dialog,content,player){
if(content&&content.length){
if(player==game.me||player.isUnderControl()){
dialog.addAuto(content);
}
else{
return '共有'+get.cnNumber(content.length)+'张牌';
}
}
},
content:function(content,player){
if(content&&content.length){
if(player==game.me||player.isUnderControl()){
return get.translation(content);
}
return '共有'+get.cnNumber(content.length)+'张牌';
}
}
},
},
zhongzuo:{
audio:2,
trigger:{global:'phaseJieshuBegin'},
direct:true,
filter:function(event,player){
return player.getHistory('damage').length>0||player.getHistory('sourceDamage').length>0;
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('zhongzuo'),'令一名角色摸两张牌。若其已受伤,则你摸一张牌。').set('ai',function(target){
if(target.hasSkillTag('nogain')&&target!=_status.currentPhase) return target.isDamaged()?0:1;
var att=get.attitude(_status.event.player,target);
if(target.isDamaged()) att=att*1.2;
return att;
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('zhongzuo',target);
target.draw(2);
if(target.isDamaged()) player.draw();
}
},
},
wanlan:{
audio:2,
trigger:{global:'dying'},
check:function(event,player){
if(get.attitude(player,event.player)<4) return false;
if(player.countCards('h',function(card){
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,event.player,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod;
var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,event.player);
return savable;
})>=1-event.player.hp) return false;
if(event.player==player||event.player==get.zhu(player)) return true;
if(_status.currentPhase&&get.damageEffect(_status.currentPhase,player,player)<0) return false;
return !player.hasUnknown();
},
limited:true,
unique:true,
filter:function(event,player){
return event.player.hp<=0;
},
skillAnimation:true,
animationColor:'thunder',
logTarget:'player',
content:function(){
'step 0'
player.awakenSkill('wanlan');
var hs=player.getCards('h')
if(hs.length) player.discard(hs);
'step 1'
var num=1-trigger.player.hp;
if(num) trigger.player.recover(num);
'step 2'
if(_status.currentPhase&&_status.currentPhase.isAlive()){
var next=_status.currentPhase.damage();
event.next.remove(next);
trigger.after.push(next);
}
},
},
rezhiyi:{
audio:'zhiyi',
trigger:{global:'phaseJieshuBegin'},
forced:true,
filter:function(event,player){
return player.getHistory('useCard',function(card){
return get.type(card.card)=='basic';
}).length>0||player.getHistory('respond',function(card){
return get.type(card.card)=='basic';
}).length>0;
},
content:function(){
'step 0'
var list=[];
player.getHistory('useCard',function(evt){
if(get.type(evt.card)!='basic') return;
var name=evt.card.name;
if(name=='sha'){
var nature=evt.card.nature;
switch(nature){
case 'fire':name='huosha';break;
case 'thunder':name='leisha';break;
case 'kami':name='kamisha';break;
case 'ice':name='icesha';break;
}
}
list.add(name);
});
player.getHistory('respond',function(evt){
if(get.type(evt.card)!='basic') return;
var name=evt.card.name;
if(name=='sha'){
var nature=evt.card.nature;
switch(nature){
case 'fire':name='huosha';break;
case 'thunder':name='leisha';break;
case 'kami':name='kamisha';break;
case 'ice':name='icesha';break;
}
}
list.add(name);
});
player.chooseButton(['执义:选择要使用的牌,或点取消摸一张牌',[list.map(function(name){
return ['基本','',name];
}),'vcard']],function(button){
return _status.event.player.getUseValue({name:button.link[2],nature:button.link[3]});
},function(button){
return _status.event.player.hasUseTarget({name:button.link[2],nature:button.link[3]});
});
'step 1'
if(!result.bool) player.draw();
else player.chooseUseTarget({name:result.links[0][2],isCard:true,nature:result.links[0][3]});
},
},
zhiyi:{
audio:2,
trigger:{player:['useCard','respond']},
forced:true,
filter:function(event,player){
if(get.type(event.card)!='basic') return false;
var history=player.getHistory('useCard',function(evt){
return get.type(evt.card)=='basic';
}).concat(player.getHistory('respond',function(evt){
return get.type(evt.card)=='basic';
}));
return history.length==1&&history[0]==event;
},
content:function(){
'step 0'
var info=get.info(trigger.card);
if(!info||!info.enable) event._result={index:0};
else{
var evt=trigger;
if(evt.respondTo&&evt.getParent('useCard').name=='useCard') evt=evt.getParent('useCard');
event.evt=evt;
player.chooseControl().set('prompt','执义:请选择一项').set('choiceList',[
'摸一张牌',
'于'+get.translation(evt.card)+'的使用结算结束之后视为使用一张'+get.translation({name:trigger.card.name,nature:trigger.card.nature,isCard:true}),
]).set('ai',function(){return _status.event.choice}).set('choice',function(){
var card={name:trigger.card.name,nature:trigger.card.nature,isCard:true};
if(card.name=='sha'){
if(player.getUseValue(card)>0) return 1;
}
else if(card.name=='tao'){
var hp=player.maxHp-player.hp;
if(trigger.targets.contains(player)) hp--;
return hp>0?1:0;
}
return 0;
}());
}
'step 1'
if(result.index==0){
player.draw();
}
else{
var next=player.chooseUseTarget({name:trigger.card.name,nature:trigger.card.nature,isCard:true},false,true);
_status.event.next.remove(next);
event.evt.after.push(next);
next.logSkill='zhiyi';
}
},
},
//表演测试
qiaosi_map:{charlotte:true},
qiaosi:{
audio:'xinfu_qiaosi',
derivation:'qiaosi_map',
enable:'phaseUse',
usable:1,
content:function(){
"step 0"
event.videoId=lib.status.videoId++;
if(player.isUnderControl()){
game.swapPlayerAuto(player);
}
var switchToAuto=function(){
game.pause();
game.countChoose();
setTimeout(function(){
_status.imchoosing=false;
event._result={
bool:true,
links:['qiaosi_c1','qiaosi_c6'].concat(['qiaosi_c2','qiaosi_c3','qiaosi_c4','qiaosi_c5'].randomGets(1)),
};
if(event.dialog) event.dialog.close();
if(event.controls){
for(var i of event.controls) i.close();
}
game.resume();
},5000);
};
var createDialog=function(player,id){
if(player==game.me) return;
var str=get.translation(player)+'正在表演...<br>';
for(var i=1;i<7;i++){
str+=get.translation('qiaosi_c'+i);
if(i%3!=0) str+='  ';
if(i==3) str+='<br>';
}
ui.create.dialog(str,'forcebutton').videoId=id;
};
var chooseButton=function(player){
var event=_status.event;
player=player||event.player;
event.status={
qiaosi_c1:0,
qiaosi_c2:0,
qiaosi_c3:0,
qiaosi_c4:0,
qiaosi_c5:0,
qiaosi_c6:0,
}
event.map={
qiaosi_c1:[40,60],
qiaosi_c2:[80,120],
qiaosi_c3:[90,110],
qiaosi_c4:[90,110],
qiaosi_c5:[80,120],
qiaosi_c6:[40,60],
}
event.finishedx=[];
event.str='请开始你的表演<br><img src="'+lib.assetURL+'image/card/qiaosi_card1.png" width="60" height="60">qiaosi_c1% <img src="'+lib.assetURL+'image/card/qiaosi_card2.png" width="60" height="60">qiaosi_c2% <img src="'+lib.assetURL+'image/card/qiaosi_card3.png" width="60" height="60">qiaosi_c3%<br><img src="'+lib.assetURL+'image/card/qiaosi_card4.png" width="60" height="60">qiaosi_c4%<img src="'+lib.assetURL+'image/card/qiaosi_card5.png" width="60" height="60">qiaosi_c5% <img src="'+lib.assetURL+'image/card/qiaosi_card6.png" width="60" height="60">qiaosi_c6%';
event.dialog=ui.create.dialog(event.str,'forcebutton','hidden');
event.dialog.addText('<li>点击下方的按钮可以增加按钮对应的角色的「表演完成度」。对于不同的角色点击时增加的完成度不同最终获得的牌也不同。一次表演最多只能完成3名角色的进度。',false);
event.dialog.open();
for(var i in event.status){
event.dialog.content.childNodes[0].innerHTML=event.dialog.content.childNodes[0].innerHTML.replace(i,event.status[i]);
}
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('pointerdiv');
}
event.switchToAuto=function(){
event._result={
bool:true,
links:event.finishedx.slice(0),
};
event.dialog.close();
for(var i of event.controls) i.close();
game.resume();
_status.imchoosing=false;
},
event.controls=[];
for(var i=1;i<=6;i++) event.controls.push(ui.create.control('qiaosi_c'+i,function(link){
var event=_status.event;
if(event.finishedx.contains(link)) return;
event.status[link]+=get.rand.apply(get,event.map[link]);
if(event.status[link]>=100){
event.status[link]=100;
var str=event.str.slice(0);
for(var i in event.status){
str=str.replace(i,event.status[i]);
}
event.dialog.content.childNodes[0].innerHTML=str;
event.finishedx.push(link);
if(event.finishedx.length>=3){
event._result={
bool:true,
links:event.finishedx.slice(0),
};
event.dialog.close();
for(var i of event.controls) i.close();
game.resume();
_status.imchoosing=false;
}
}
else{
var str=event.str.slice(0);
for(var i in event.status){
str=str.replace(i,event.status[i]);
}
event.dialog.content.childNodes[0].innerHTML=str;
}
}));
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('selectable');
}
game.pause();
game.countChoose();
};
//event.switchToAuto=switchToAuto;
game.broadcastAll(createDialog,player,event.videoId);
if(event.isMine()){
chooseButton();
}
else if(event.isOnline()){
event.player.send(chooseButton,event.player);
event.player.wait();
game.pause();
}
else{
switchToAuto();
}
"step 1"
game.broadcastAll('closeDialog',event.videoId);
var map=event.result||result;
//game.print(map);
if(!map||!map.bool||!map.links){
game.log(player,'表演失败');
event.finish();
return;
}
var list=map.links;
if(!list.length){
game.log(player,'表演失败');
event.finish();
return;
}
var cards=[];
var list2=[];
if(list.contains('qiaosi_c1')){
list2.push('trick');
list2.push('trick');
}
if(list.contains('qiaosi_c2')){
if(list.contains('qiaosi_c1')) list2.push(['sha','jiu']);
else list2.push(Math.random()<0.66?'equip':['sha','jiu']);
}
if(list.contains('qiaosi_c3')){
list2.push([Math.random()<0.66?'sha':'jiu'])
}
if(list.contains('qiaosi_c4')){
list2.push([Math.random()<0.66?'shan':'tao'])
}
if(list.contains('qiaosi_c5')){
if(list.contains('qiaosi_c6')) list2.push(['shan','tao']);
else list2.push(Math.random()<0.66?'trick':['shan','tao']);
}
if(list.contains('qiaosi_c6')){
list2.push('equip');
list2.push('equip');
}
while(list2.length){
var filter=list2.shift();
var card=get.cardPile(function(x){
if(cards.contains(x)) return false;
if(typeof filter=='string'&&get.type(x,'trick')==filter) return true;
if(typeof filter=='object'&&filter.contains(x.name)) return true;
});
if(card) cards.push(card);
else{
var card=get.cardPile(function(x){
return !cards.contains(x);
});
if(card) cards.push(card);
}
}
if(cards.length){
event.cards=cards;
event.num=cards.length;
player.showCards(cards);
}
else event.finish();
"step 2"
player.gain(event.cards,'gain2');
player.chooseControl().set('choiceList',[
'将'+get.cnNumber(event.num)+'张牌交给一名其他角色',
'弃置'+get.cnNumber(event.num)+'张牌',
]).set('ai',function(){
if(game.hasPlayer(function(current){
return current!=player&&get.attitude(player,current)>2;
})) return 0;
return 1;
});
"step 3"
if(result.index==0){
player.chooseCardTarget({
position:'he',
filterCard:true,
selectCard:event.num,
filterTarget:function(card,player,target){
return player!=target;
},
ai1:function(card){
return 1;
},
ai2:function(target){
var att=get.attitude(_status.event.player,target);
if(target.hasSkillTag('nogain')) att/=10;
if(target.hasJudge('lebu')) att/=5;
return att;
},
prompt:'选择'+get.cnNumber(event.num)+'张牌,交给一名其他角色。',
forced:true,
});
}
else{
player.chooseToDiscard(event.num,true,'he');
event.finish();
}
"step 4"
if(result.bool){
var target=result.targets[0];
player.give(result.cards,target);
}
},
ai:{
order:10,
result:{player:1},
threaten:3.2,
}
},
refuhai:{
audio:'xinfu_fuhai',
enable:'phaseUse',
usable:1,
content:function(){
'step 0'
event.current=player.next;
event.upper=[];
event.lower=[];
event.acted=[];
event.num=0;
event.stopped=false;
'step 1'
event.acted.push(event.current);
event.current.chooseControl('潮起','潮落').set('prompt','潮鸣起乎?潮鸣落乎?').ai=function(){
return Math.random()<0.5?0:1;
};
'step 2'
if(!event.chosen) event.chosen=result.control;
if(event.chosen!=result.control) event.stopped=true;
if(!event.stopped) event.num++;
if(result.control=='潮起'){
event.upper.push(event.current)
}
else event.lower.push(event.current);
event.current=event.current.next;
if(event.current!=player&&!event.acted.contains(event.current)) event.goto(1);
'step 3'
for(var i=0;i<event.acted.length;i++){
var bool=event.upper.contains(event.acted[i]);
game.log(event.acted[i],'选择了',bool?'#g潮起':'#y潮落');
event.acted[i].popup(bool?'潮起':'潮落',bool?'wood':'orange');
}
game.delay(1);
'step 4'
if(num>1) player.draw(num);
},
ai:{
order:10,
result:{player:1},
},
},
rebiaozhao:{
audio:'biaozhao',
intro:{
content:"cards",
},
trigger:{
player:"phaseJieshuBegin",
},
direct:true,
filter:function(event,player){
return player.countCards('he')>0&&!player.storage.rebiaozhao;
},
content:function(){
'step 0'
player.chooseCard('he',get.prompt2('rebiaozhao')).ai=function(card){
return 6-get.value(card);
}
'step 1'
if(result.bool){
player.addSkill('rebiaozhao2');
player.addSkill('rebiaozhao3');
player.logSkill('rebiaozhao');
player.$give(result.cards,player,false);
player.lose(result.cards,ui.special,'toStorage','visible');
player.storage.rebiaozhao=result.cards;
player.markSkill('rebiaozhao');
}
},
ai:{notemp:true},
},
"rebiaozhao2":{
trigger:{
global:["loseEnd","cardsDiscardEnd"],
},
charlotte:true,
forced:true,
audio:"biaozhao",
filter:function(event,player){
if(!player.storage.rebiaozhao) return false;
var num=get.number(player.storage.rebiaozhao[0]);
for(var i=0;i<event.cards.length;i++){
if(get.position(event.cards[i],true)=='d'&&get.number(event.cards[i])==num) return true;
}
return false;
},
content:function(){
"step 0"
var card=player.storage.rebiaozhao[0];
delete player.storage.rebiaozhao;
player.$throw(card);
game.cardsDiscard(card);
"step 1"
player.unmarkSkill('rebiaozhao');
player.loseHp();
},
},
"rebiaozhao3":{
trigger:{
player:"phaseZhunbeiBegin",
},
forced:true,
charlotte:true,
audio:"biaozhao",
filter:function(event,player){
return player.storage.rebiaozhao!=undefined;
},
content:function(){
"step 0"
var card=player.storage.rebiaozhao[0];
delete player.storage.rebiaozhao;
player.unmarkSkill('rebiaozhao');
game.cardsDiscard(card);
player.chooseTarget('令一名角色摸三张牌并回复1点体力',true).ai=function(target){
var num=2;
if(target.isDamaged()) num++;
return num*get.attitude(_status.event.player,target);
};
"step 1"
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
target.draw(3);
target.recover();
}
},
},
reqianxin:{
audio:'xinfu_qianxin',
enable:'phaseUse',
usable:1,
filterCard:true,
selectCard:function(){
return [1,Math.min(2,game.players.length-1)];
},
check:function(card){
return 6-get.value(card);
},
discard:false,
lose:false,
delay:0,
content:function(){
var targets=game.filterPlayer(function(current){
return current!=player;
}).randomGets(cards.length);
for(var i=0;i<targets.length;i++){
var target=targets[i];
target.addSkill('reqianxin2');
target.storage.reqianxin2.push([cards[i],player]);
player.$give(1,target);
target.gain(cards[i],player);
}
},
ai:{
order:1,
result:{
player:1,
},
},
},
reqianxin2:{
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
popup:false,
charlotte:true,
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
onremove:true,
filter:function(event,player){
var list=player.storage.reqianxin2;
if(Array.isArray(list)){
var hs=player.getCards('h');
for(var i=0;i<list.length;i++){
if(hs.contains(list[i][0])&&list[i][1].isIn()) return true;
}
}
return false;
},
content:function(){
'step 0'
var current=player.storage.reqianxin2.shift();
event.source=current[1];
if(!event.source.isIn()||!player.getCards('h').contains(current[0])) event.goto(3);
'step 1'
source.logSkill('reqianxin',player);
player.chooseControl().set('choiceList',[
'令'+get.translation(source)+'摸两张牌',
'令自己本回合的手牌上限-2',
]).set('prompt',get.translation(source)+'发动了【遣信】,请选择一项').set('source',source).set('ai',function(){
var player=_status.event.player;
if(get.attitude(player,_status.event.source)>0) return 0;
if(player.maxHp-player.countCards('h')>1) return 1;
return Math.random()>0.5?0:1;
});
'step 2'
if(result.index==0) source.draw(2);
else{
player.addTempSkill('reqianxin3')
player.addMark('reqianxin3',2,false)
}
'step 3'
if(player.storage.reqianxin2.length) event.goto(0);
else player.removeSkill('reqianxin2');
},
},
reqianxin3:{
onremove:true,
mod:{
maxHandcard:function(player,num){
return num-player.countMark('reqianxin3');
},
},
},
renshi:{
audio:2,
trigger:{player:'damageBegin4'},
forced:true,
filter:function(event,player){
return player.isDamaged()&&event.card&&event.card.name=='sha';
},
content:function(){
'step 0'
trigger.cancel();
var cards=trigger.cards.filterInD();
if(cards.length) player.gain(cards,'gain2','log');
'step 1'
player.loseMaxHp();
},
ai:{
filterDamage:true,
skillTagFilter:function(player,tag,arg){
if(arg&&arg.card&&arg.card.name=='sha') return true;
return false;
},
},
},
wuyuan:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('h','sha')>0;
},
filterCard:{name:'sha'},
filterTarget:lib.filter.notMe,
check:function(card){
var player=_status.event.player;
if(get.color(card)=='red'&&game.hasPlayer(function(current){
return current!=player&&current.isDamaged()&&get.attitude(player,current)>2;
})) return 2;
if(get.nature(card)) return 1.5;
return 1;
},
discard:false,
delay:false,
content:function(){
'step 0'
target.gain(cards,player,'giveAuto');
player.recover();
'step 1'
var num=1;
if(get.nature(cards[0])) num++;
target.draw(num);
if(get.color(cards[0])=='red') target.recover();
},
ai:{
order:1,
result:{
player:function(player,target){
if(player.isDamaged()) return 1;
return 0;
},
target:function(player,target){
if(ui.selected.cards.length){
var num=1;
if(get.nature(ui.selected.cards[0])) num++;
if(target.hasSkillTag('nogain')) num=0;
if(get.color(ui.selected.cards[0])=='red') return num+2
else return num+1;
}
return 1;
},
},
},
},
huaizi:{
mod:{
maxHandcardBase:function(player,num){
return player.maxHp;
},
},
//audio:2,
//trigger:{player:'phaseDiscardBegin'},
forced:true,
firstDo:true,
filter:function(event,player){
return player.isDamaged()&&player.countCards('h')>player.hp;
},
content:function(){},
},
rexushen:{
derivation:['new_rewusheng','redangxian'],
audio:'xinfu_xushen',
limited:true,
enable:'phaseUse',
filter:function(event,player){
return game.hasPlayer(function(current){
return current.sex=='male';
})
},
skillAnimation:true,
animationColor:'fire',
content:function(){
player.addSkill('rexushen2');
player.awakenSkill('rexushen');
player.loseHp(game.countPlayer(function(current){
return current.sex=='male';
}));
},
ai:{
order:10,
result:{
player:function(player){
if(player.hp!=game.countPlayer(function(current){
return current.sex=='male';
})) return 0;
return game.hasPlayer(function(current){
return get.attitude(player,current)>4&&current.countCards('h','tao')
})?1:0;
},
},
},
},
rexushen2:{
charlotte:true,
subSkill:{
count:{
trigger:{
player:"recoverBegin",
},
forced:true,
silent:true,
popup:false,
filter:function(event,player){
if(!event.source) return false;
if(!player.isDying()) return false;
var evt=event.getParent('dying').getParent(2);
return evt.name=='rexushen'&&evt.player==player;
},
content:function(){
trigger.rexushen=true;
},
sub:true,
},
},
group:["rexushen2_count"],
trigger:{
player:"recoverAfter",
},
filter:function(event,player){
if(player.isDying()) return false;
return event.rexushen==true;
},
direct:true,
silent:true,
popup:false,
content:function(){
'step 0'
player.removeSkill('rexushen2');
player.chooseBool('是否令'+get.translation(trigger.source)+'获得技能〖武圣〗和〖当先〗').ai=function(){
return get.attitude(player,trigger.source)>0;
};
'step 1'
if(result.bool){
player.line(trigger.source,'fire');
trigger.source.addSkillLog('new_rewusheng');
trigger.source.addSkillLog('redangxian');
}
},
},
rezhennan:{
audio:'xinfu_zhennan',
trigger:{target:'useCardToTargeted'},
filter:function(event,player){
return event.player!=player&&event.targets&&event.targets.length&&event.targets.length>event.player.hp;
},
direct:true,
content:function(){
'step 0'
var next=player.chooseToDiscard(get.prompt('rezhennan',trigger.player),'弃置一张牌并对其造成1点伤害','he');
next.set('logSkill',['rezhennan',trigger.player]);
next.set('ai',function(card){
var player=_status.event.player;
var target=_status.event.getTrigger().player;
if(get.damageEffect(target,player,player)>0) return 7-get.value(card);
return -1;
});
'step 1'
if(result.bool) trigger.player.damage();
},
},
meiyong:{
inherit:'xinfu_wuniang',
audio:'xinfu_wuniang',
content:function(){
'step 0'
player.chooseTarget(get.prompt('meiyong'),'获得一名其他角色的一张牌,然后其摸一张牌。',function(card,player,target){
if(player==target) return false;
return target.countGainableCards(player,'he')>0;
}).set('ai',function(target){
return 10-get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('meiyong',target);
player.gainPlayerCard(target,'he',true);
}
else event.finish();
'step 2'
target.draw();
},
},
relianji:{
audio:'wylianji',
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.players.length>1;
},
filterTarget:lib.filter.notMe,
targetprompt:['打人','被打'],
selectTarget:2,
multitarget:true,
content:function(){
'step 0'
game.delay(0.5);
if(targets[0].isDisabled(1)) event.goto(2);
'step 1'
var target=targets[0];
var equip1=get.cardPile2(function(card){
return get.subtype(card)=='equip1';
});
if(!equip1){
player.popup('连计失败');
game.log('牌堆中无装备');
event.finish();
return;
}
if(equip1.name=='qinggang'&&!lib.inpile.contains('qibaodao')){
equip1.remove();
equip1=game.createCard('qibaodao',equip1.suit,equip1.number);
}
target.$draw(equip1);
target.chooseUseTarget(equip1,'noanimate','nopopup',true);
'step 2'
game.updateRoundNumber();
var list=['nanman','wanjian','huogong','juedou','sha'];
var list2=game.players.slice(0);
list2.remove(player);
for(var i=0;i<list.length;i++){
if(!targets[0].canUse(list[i],targets[1],false)) list.splice(i--,1);
}
if(!list.length) return;
var name=list.randomGet();
if(name=='nanman'||name=='wanjian'){
for(var i=0;i<list2.length;i++){
if(!targets[0].canUse(name,list2[i],false)) list2.splice(i--,1);
}
}
else list2=targets[1];
targets[0].useCard({name:name,isCard:true},list2,'noai');
game.delay(0.5);
},
ai:{
order:8,
result:{
target:function(player,target){
if(ui.selected.targets.length==0){
return 1;
}
else{
return -1;
}
}
},
expose:0.4,
threaten:3,
},
group:'relianji_count',
subSkill:{
count:{
sub:true,
forced:true,
popup:false,
silent:true,
trigger:{global:'damageEnd'},
filter:function(event,player){
var evt=event.getParent(3);
return evt&&evt.name=='relianji'&&evt.player==player;
},
content:function(){
if(!player.storage.relianji) player.storage.relianji=0;
player.storage.relianji++;
if(player.storage.relianji>2){
event.trigger('remoucheng_awaken');
}
},
},
},
},
remoucheng:{
derivation:'jingong',
trigger:{
player:'remoucheng_awaken'
},
forced:true,
audio:'moucheng',
juexingji:true,
skillAnimation:true,
animationColor:'thunder',
content:function(){
player.awakenSkill('remoucheng');
player.removeSkill('relianji');
player.addSkill('jingong');
player.gainMaxHp();
player.recover();
},
},
shouye:{
audio:2,
group:'shouye_after',
trigger:{target:"useCardToTarget"},
filter:function(event,player){
return event.player!=player&&event.targets.length==1;
},
check:function(event,player){
if(event.player==game.me||event.player.isOnline()) return get.attitude(player,event.player)<0;
return get.effect(player,event.card,event.player,player)<0;
},
usable:1,
logTarget:'player',
content:function(){
'step 0'
player.line(trigger.player,'green');
player.chooseToDuiben(trigger.player);
'step 1'
if(result.bool){
trigger.targets.remove(player);
trigger.getParent().triggeredTargets2.remove(player);
trigger.getParent().shouyeer=player;
}
},
subSkill:{
after:{
sub:true,
trigger:{global:'useCardAfter'},
forced:true,
silent:true,
popup:false,
filter:function(event,player){
if(event.shouyeer!=player) return false;
if(event.cards){
for(var i=0;i<event.cards.length;i++){
if(event.cards[i].isInPile()) return true;
}
}
return false;
},
content:function(){
var list=[];
for(var i=0;i<trigger.cards.length;i++){
if(trigger.cards[i].isInPile()){
list.push(trigger.cards[i]);
}
}
player.gain(list,'gain2','log');
},
},
},
},
liezhi:{
audio:2,
group:'liezhi_damage',
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
filter:function(event,player){
return !player.hasSkill('liezhi_disable');
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('liezhi'),'弃置至多两名其他角色区域内的各一张牌',[1,2],function(card,player,target){
return target!=player&&target.countDiscardableCards(player,'hej')>0;
}).ai=function(target){
var player=_status.event.player;
return get.effect(target,{name:'guohe'},player,player);
};
'step 1'
if(result.bool){
result.targets.sortBySeat();
event.targets=result.targets;
player.line(result.targets,'green');
player.logSkill('liezhi',result.targets);
}
else event.finish();
'step 2'
event.current=targets.shift();
player.discardPlayerCard(event.current,'hej',true)
if(targets.length) event.redo();
},
subSkill:{
disable:{
sub:true,
trigger:{player:'phaseAfter'},
forced:true,
silent:true,
popup:false,
charlotte:true,
//filter:function(event){return !event.liezhi},
content:function(){player.removeSkill('liezhi_disable')},
},
damage:{
trigger:{player:'damage'},
forced:true,
silent:true,
popup:false,
content:function(){player.addSkill('liezhi_disable')}
},
},
},
xinzhanyi:{
audio:'zhanyi',
enable:'phaseUse',
usable:1,
filterCard:true,
position:'he',
check:function(card){
var player=_status.event.player;
if(player.hp<3) return 0;
var type=get.type(card,'trick');
if(type=='trick'){
return 6-get.value(card);
}
else if(type=='equip'){
if(player.hasSha()&&game.hasPlayer(function(current){
return (player.canUse('sha',current)&&
get.attitude(player,current)<0&&
get.effect(current,{name:'sha'},player,player)>0)
})){
return 6-get.value(card);
}
}
return 0;
},
content:function(){
player.loseHp();
switch(get.type(cards[0],'trick',cards[0].original=='h'?player:false)){
case 'basic':player.addTempSkill('xinzhanyi_basic');break;
case 'equip':player.addTempSkill('xinzhanyi_equip');break;
case 'trick':player.addTempSkill('xinzhanyi_trick');player.draw(3);break;
}
},
ai:{
order:9.1,
result:{
player:1
}
}
},
xinzhanyi_basic1:{
trigger:{player:"useCard"},
filter:function(event,player){
return event.skill=='xinzhanyi_basic_backup'&&!player.storage.xinzhanyi_basic1;
},
forced:true,
silent:true,
popup:false,
content:function(){
if(!trigger.baseDamage) trigger.baseDamage=1;
trigger.baseDamage++;
player.storage.xinzhanyi_basic1=true;
},
},
xinzhanyi_basic:{
group:['xinzhanyi_basic1'],
onremove:function(p,s){
delete p.storage[s+1];
},
hiddenCard:function(player,name){
return ['sha','tao','jiu'].contains(name)&&player.countCards('h',{type:'basic'})>0;
},
enable:"chooseToUse",
filter:function(event,player){
if(event.filterCard({name:'sha'},player,event)||
event.filterCard({name:'jiu'},player,event)||
event.filterCard({name:'tao'},player,event)){
return player.hasCard(function(card){
return get.type(card)=='basic';
},'hs');
}
return false;
},
chooseButton:{
dialog:function(event,player){
var list=[];
if(event.filterCard({name:'sha'},player,event)){
list.push(['基本','','sha']);
list.push(['基本','','sha','fire']);
list.push(['基本','','sha','thunder']);
list.push(['基本','','sha','ice']);
}
if(event.filterCard({name:'tao'},player,event)){
list.push(['基本','','tao']);
}
if(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)&&get.effect(current,card,player,player)>0;
})){
switch(button.link[2]){
case 'tao':return 5;
case 'jiu':{
if(player.countCards('hs',{type:'basic'})>=2) return 3;
};
case 'sha':
if(button.link[3]=='fire') return 2.95;
else if(button.link[3]=='thunder'||button.link[3]=='ice') return 2.92;
else return 2.9;
}
}
return 0;
},
backup:function(links,player){
return {
audio:'zhanyi',
filterCard:function(card,player,target){
return get.type(card)=='basic';
},
check:function(card,player,target){
return 9-get.value(card);
},
viewAs:{name:links[0][2],nature:links[0][3]},
position:'hs',
popname:true,
}
},
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(event.filterCard({name:'jiu'},player,event)&&get.effect(player,{name:'jiu'})>0&&player.countCards('hs',{type:'basic'})>=2){
return 3.3;
}
return 3.1;
},
respondSha:true,
skillTagFilter:function(player,tag,arg){
if(player.hasCard(function(card){
return get.type(card)=='basic';
},'hs')){
if(tag=='respondSha'){
if(arg!='use') return false;
}
}
else{
return false;
}
},
result:{
player:1,
},
},
},
xinzhanyi_equip:{
audio:'zhanyi',
trigger:{player:'useCardToPlayered'},
forced:true,
filter:function(event,player){
return event.card.name=='sha'&&event.target.countCards('he')>0;
},
check:function(event,player){
return get.attitude(player,event.target)<0;
},
content:function(){
'step 0'
trigger.target.chooseToDiscard('he',true,2);
'step 1'
if(result.bool&&result.cards&&result.cards.length){
if(result.cards.length==1){
event._result={bool:true,links:result.cards.slice(0)};
}
else player.chooseButton(['选择获得其中的一张牌',result.cards.slice(0)],true).ai=function(button){
return get.value(button.link);
};
}
else event.finish();
'step 2'
if(result.links) player.gain(result.links,'gain2');
}
},
xinzhanyi_trick:{
mod:{
wuxieRespondable:function(){
return false;
}
}
},
"xinfu_daigong":{
usable:1,
audio:2,
trigger:{
player:"damageBegin4",
},
filter:function(event,player){
return event.source!=undefined&&player.countCards('h')>0;
},
content:function(){
'step 0'
player.showHandcards();
'step 1'
var cards=player.getCards('h');
var suits=[];
for(var i=0;i<cards.length;i++){
suits.add(get.suit(cards[i]));
}
trigger.source.chooseCard('he','交给'+get.translation(player)+'一张满足条件的牌,否则防止此伤害。',function(card){
return !_status.event.suits.contains(get.suit(card));
}).set('suits',suits).ai=function(card){
var player=_status.event.player;
var target=_status.event.getParent('xinfu_daigong').player;
if(get.damageEffect(target,player,player)>0) return 6.5-get.value(card);
return 0;
};
'step 2'
if(result.bool){
trigger.source.give(result.cards,player,true);
}
else trigger.cancel();
},
},
"xinfu_zhaoxin":{
group:["zhaoxin_give"],
intro:{
content:"cards",
onunmark:function(storage,player){
if(storage&&storage.length){
player.$throw(storage,1000);
game.cardsDiscard(storage);
game.log(storage,'被置入了弃牌堆');
storage.length=0;
}
},
},
enable:"phaseUse",
usable:1,
audio:2,
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
filter:function(event,player){
return player.storage.xinfu_zhaoxin.length<3&&player.countCards('h')>0;
},
visible:true,
filterCard:true,
selectCard:function(){
var player=_status.event.player;
return [1,3-player.storage.xinfu_zhaoxin.length];
},
discard:false,
toStorage:true,
//lose:false,
delay:false,
content:function(){
'step 0'
//player.lose(cards,ui.special,'toStorage')
player.$give(cards,player,false);
player.storage.xinfu_zhaoxin=player.storage.xinfu_zhaoxin.concat(cards);
player.markSkill('xinfu_zhaoxin');
'step 1'
player.draw(cards.length);
},
check:function(card){
return 6-get.value(card);
},
ai:{
order:1,
result:{
player:1,
},
},
},
"zhaoxin_give":{
trigger:{
global:"phaseDrawAfter",
},
filter:function(event,player){
if(!player.storage.xinfu_zhaoxin||!player.storage.xinfu_zhaoxin.length) return false;
return player==event.player||player.inRange(event.player);
},
direct:true,
content:function(){
'step 0'
player.chooseCardButton(get.prompt('xinfu_zhaoxin',trigger.player),player.storage.xinfu_zhaoxin,function(button){
return true;
}).set('ai',function(button){
return 1+Math.random();
});
'step 1'
if(result.bool){
event.card=result.links[0];
player.logSkill('xinfu_zhaoxin',target);
player.line(trigger.player,'thunder');
player.showCards(event.card);
}
else event.finish();
'step 2'
trigger.player.chooseBool('是否获得'+get.translation(event.card)+'?').ai=function(){
return get.attitude(trigger.player,player)>0;
};
'step 3'
if(result.bool){
player.storage.xinfu_zhaoxin.remove(event.card);
player.$give(event.card,trigger.player);
trigger.player.gain(event.card,'fromStorage');
if(player.storage.xinfu_zhaoxin.length) player.markSkill('xinfu_zhaoxin');
else player.unmarkSkill('xinfu_zhaoxin');
player.chooseBool('是否对'+get.translation(trigger.player)+'造成一点伤害?').ai=function(){
return get.damageEffect(trigger.player,player,player)>0
};
}
else{
trigger.player.chat('拒绝');
event.finish();
}
'step 4'
if(result.bool){
trigger.player.damage('nocard');
}
},
},
"xinfu_qianchong":{
audio:3,
mod:{
targetInRange:function(card,player,target){
if(player.storage.xinfu_qianchong.contains(get.type(card,'trick'))){
return true;
}
},
cardUsable:function(card,player,num){
if(player.storage.xinfu_qianchong.contains(get.type(card,'trick'))) return Infinity;
},
},
group:["xinfu_qianchong_clear","qc_weimu","qc_mingzhe"],
subSkill:{
clear:{
sub:true,
forced:true,
silent:true,
popup:false,
trigger:{
player:"phaseAfter",
},
content:function(){
player.storage.xinfu_qianchong=[];
},
},
},
init:function(event,player){
event.storage[player]=[];
},
trigger:{
player:"phaseUseBegin",
},
locked:false,
direct:true,
filter:function(event,player){
var es=player.getCards('e');
if(!es.length) return true;
var col=get.color(es[0]);
for(var i=0;i<es.length;i++){
if(get.color(es[i])!=col) return true;
}
return false;
},
content:function(){
'step 0'
var list=['basic','trick','equip','cancel2'];
for(var i=0;i<player.storage.xinfu_qianchong.length;i++){
list.remove(player.storage.xinfu_qianchong[i]);
}
if(list.length>1){
player.chooseControl(list).set('ai',function(){
return list[0];
}
).set('prompt',get.prompt('xinfu_qianchong')).set('prompt2',get.translation('xinfu_qianchong_info'));
}
else event.finish();
'step 1'
if(result.control&&result.control!='cancel2'){
player.logSkill('xinfu_qianchong');
player.storage.xinfu_qianchong.add(result.control);
var str=get.translation(result.control)+'牌';
game.log(player,'声明了','#y'+str);
player.popup(str,'thunder');
}
},
},
"qc_weimu":{
audio:"xinfu_qianchong",
mod:{
targetEnabled:function(card,player,target){
var bool=true;
var es=target.getCards('e');
if(!es.length) bool=false;
for(var i=0;i<es.length;i++){
if(get.color(es[i])!='black') bool=false;
}
if(bool&&(get.type(card)=='trick'||get.type(card)=='delay')&&
get.color(card)=='black') return false;
},
},
},
"qc_mingzhe":{
audio:"xinfu_qianchong",
trigger:{
player:["useCard","respond","loseAfter"],
},
frequent:true,
filter:function(event,player){
if(player.hasSkill('mingzhe')) return false;
if(player==_status.currentPhase) return false;
var es=player.getCards('e');
if(!es.length) return false;
for(var i=0;i<es.length;i++){
if(get.color(es[i])!='red') return false;
}
if(event.name!='lose') return get.color(event.card)=='red';
if(event.type!='discard') return false;
if(event.cards2){
for(var i=0;i<event.cards2.length;i++){
if(get.color(event.cards2[i])=='red') return true;
}
}
return false;
},
content:function(){
"step 0"
event.count=1;
if(trigger.name=='lose'){
event.count=0;
for(var i=0;i<trigger.cards2.length;i++){
if(get.color(trigger.cards2[i])=='red') event.count++;
}
}
"step 1"
player.draw();
event.count--;
"step 2"
if(event.count){
player.chooseBool(get.prompt2('mingzhe')).set('frequentSkill',event.name);
}
else event.finish();
"step 3"
if(result.bool){
player.logSkill('qc_mingzhe');
event.goto(1);
}
},
ai:{
threaten:0.7,
},
},
"xinfu_shangjian":{
trigger:{
global:"phaseJieshuBegin",
},
audio:2,
filter:function(event,player){
var num=0;
player.getHistory('lose',function(evt){
if(evt.cards2) num+=evt.cards2.length;
});
return num>0&&num<=player.hp
},
frequent:true,
content:function(){
'step 0'
var num=0;
player.getHistory('lose',function(evt){
if(evt.cards2) num+=evt.cards2.length;
});
if(num>0){
player.draw(num);
}
},
},
"rw_bagua_skill":{
inherit:"bagua_skill",
audio:"bagua_skill",
content:function(){
"step 0"
player.judge('rewrite_bagua',function(card){return (get.suit(card)!='spade')?1.5:-0.5});
"step 1"
if(result.judge>0){
trigger.untrigger();
trigger.set('responded',true);
trigger.result={bool:true,card:{name:'shan'}}
}
},
},
"rw_baiyin_skill":{
inherit:"baiyin_skill",
audio:"baiyin_skill",
},
"rw_lanyinjia":{
inherit:"lanyinjia",
audio:"lanyinjia",
},
"rw_minguangkai_cancel":{
inherit:"minguangkai_cancel",
},
"rw_minguangkai_link":{
inherit:"minguangkai_link",
trigger:{
player:"linkBefore",
},
forced:true,
priority:20,
filter:function(event,player){
return !player.isLinked();
},
content:function(){
trigger.cancel();
},
ai:{
effect:{
target:function(card,player,target,current){
if(['tiesuo','lulitongxin'].contains(card.name)){
return 'zerotarget';
}
},
},
},
},
"rw_renwang_skill":{
inherit:"renwang_skill",
audio:"renwang_skill",
filter:function(event,player){
if(player.hasSkillTag('unequip2')) return false;
if(event.player.hasSkillTag('unequip',false,{
name:event.card?event.card.name:null,
target:player,
card:event.card
})) return false;
return (event.card.name=='sha'&&(get.suit(event.card)=='heart'||get.color(event.card)=='black'))
},
ai:{
effect:{
target:function(card,player,target){
if(target.hasSkillTag('unequip2')) return;
if(player.hasSkillTag('unequip',false,{
name:card?card.name:null,
target:player,
card:card
})||player.hasSkillTag('unequip_ai',false,{
name:card?card.name:null,
target:player,
card:card
})) return;
if(card.name=='sha'&&['spade','club','heart'].contains(get.suit(card))) return 'zerotarget';
},
},
},
},
"rw_tengjia1":{
inherit:"tengjia1",
audio:"tengjia1",
},
"rw_tengjia2":{
inherit:"tengjia2",
audio:"tengjia1",
},
"rw_tengjia3":{
audio:"tengjia1",
inherit:"rw_minguangkai_link",
ai:{
effect:{
target:function(card,player,target,current){
if(['tiesuo','lulitongxin'].contains(card.name)){
return 'zeroplayertarget';
}
},
},
},
},
"rw_tengjia4":{
inherit:"tengjia3",
audio:"tengjia1",
},
"xinfu_pingcai":{
"wolong_card":function(){
'step 0'
var ingame=game.hasPlayer(function(current){
return ['sp_zhugeliang','re_sp_zhugeliang','ol_sp_zhugeliang'].contains(current.name)||['sp_zhugeliang','re_sp_zhugeliang','ol_sp_zhugeliang'].contains(current.name2);
})?true:false;
var prompt='请选择';
prompt+=ingame?'至多两名':'一名';
prompt+='角色对其造成1点火焰伤害';
var range=ingame?[1,2]:[1,1]
player.chooseTarget(prompt,range).set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player,'fire');
});
'step 1'
if(result.bool&&result.targets.length){
player.line(result.targets,'fire');
result.targets.sortBySeat();
for(var i=0;i<result.targets.length;i++){
result.targets[i].damage('fire');
}
}
},
"fengchu_card":function(){
'step 0'
var ingame=game.hasPlayer(function(current){
return ['re_pangtong','pangtong','ol_pangtong'].contains(current.name)||['re_pangtong','pangtong','ol_pangtong'].contains(current.name2);
})?true:false;
var prompt='请选择';
prompt+=ingame?'至多四名':'至多三名';
prompt+='要横置的角色';
var range=ingame?[1,4]:[1,3]
player.chooseTarget(prompt,range).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,{name:'tiesuo'},player,player)
});
'step 1'
if(result.bool&&result.targets.length){
player.line(result.targets,'green');
result.targets.sortBySeat();
for(var i=0;i<result.targets.length;i++){
result.targets[i].link();
}
}
},
"xuanjian_card":function(){
'step 0'
event.ingame=game.hasPlayer(function(current){
return ['re_xushu','xin_xushu','xushu'].contains(current.name)||['re_xushu','xin_xushu','xushu'].contains(current.name2);
})?true:false;
var prompt='请选择一名角色,令其回复一点体力并摸一张牌';
prompt+=event.ingame?',然后你摸一张牌。':'。';
player.chooseTarget(prompt).set('ai',function(target){
var player=_status.event.player;
return get.attitude(player,target)*(target.isDamaged()?2:1);
});
'step 1'
if(result.bool&&result.targets.length){
var target=result.targets[0];
player.line(target,'thunder');
target.draw();
target.recover();
if(event.ingame) player.draw();
}
},
"shuijing_card":function(){
'step 0'
event.ingame=game.hasPlayer(function(current){
return current.name=='simahui'||current.name2=='simahui';
})?true:false;
var prompt='将一名角色装备区中的';
prompt+=event.ingame?'一张牌':'防具牌';
prompt+='移动到另一名角色的装备区中';
var next=player.chooseTarget(2,function(card,player,target){
if(ui.selected.targets.length){
if(!_status.event.ingame){
return target.isEmpty(2)?true:false;
}
var from=ui.selected.targets[0];
if(target.isMin()) return false;
var es=from.getCards('e');
for(var i=0;i<es.length;i++){
if(['equip3','equip4'].contains(get.subtype(es[i]))&&target.getEquip('liulongcanjia')) continue;
if(es[i].name=='liulongcanjia'&&target.countCards('e',{subtype:['equip3','equip4']})>1) continue;
if(target.isEmpty(get.subtype(es[i]))) return true;
}
return false;
}
else{
if(!event.ingame){
if(target.getEquip(2)) return true;
return false;
}
return target.countCards('e')>0;
}
});
next.set('ingame',event.ingame)
next.set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
if(ui.selected.targets.length==0){
if(att<0){
if(game.hasPlayer(function(current){
if(get.attitude(player,current)>0){
var es=target.getCards('e');
for(var i=0;i<es.length;i++){
if(['equip3','equip4'].contains(get.subtype(es[i]))&&current.getEquip('liulongcanjia')) continue;
else if(es[i].name=='liulongcanjia'&&target.countCards('e',{subtype:['equip3','equip4']})>1) continue;
else if(current.isEmpty(get.subtype(es[i]))) return true;
}
return false;
}
})) return -att;
}
return 0;
}
if(att>0){
var es=ui.selected.targets[0].getCards('e');
var i;
for(i=0;i<es.length;i++){
if(['equip3','equip4'].contains(get.subtype(es[i]))&&target.getEquip('liulongcanjia')) continue;
if(es[i].name=='liulongcanjia'&&target.countCards('e',{subtype:['equip3','equip4']})>1) continue;
if(target.isEmpty(get.subtype(es[i]))) break;
}
if(i==es.length) return 0;
}
return -att*get.attitude(player,ui.selected.targets[0]);
});
next.set('multitarget',true);
next.set('targetprompt',['被移走','移动目标']);
next.set('prompt',prompt);
'step 1'
if(result.bool){
player.line2(result.targets,'green');
event.targets=result.targets;
}
else event.finish();
'step 2'
game.delay();
'step 3'
if(targets.length==2){
if(!event.ingame){
event._result={
bool:true,
links:[targets[0].getEquip(2)],
};
}
else{
player.choosePlayerCard('e',true,function(button){
return get.equipValue(button.link);
},targets[0]).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
var targets1=_status.event.targets1;
if(['equip3','equip4'].contains(get.subtype(button.link))&&targets1.getEquip('liulongcanjia')) return false;
if(button.link.name=='liulongcanjia'&&targets1.countCards('e',{subtype:['equip3','equip4']})>1) return false;
return !targets1.countCards('e',{subtype:get.subtype(button.link)});
});
}
}
else event.finish();
'step 4'
if(result.bool&&result.links.length){
var link=result.links[0];
if(get.position(link)=='e') event.targets[1].equip(link);
else if(link.viewAs) event.targets[1].addJudge({name:link.viewAs},[link]);
else event.targets[1].addJudge(link);
event.targets[0].$give(link,event.targets[1],false)
game.delay();
}
},
audio:true,
enable:"phaseUse",
usable:1,
content:function(){
"step 0"
var list=["wolong","fengchu","xuanjian","shuijing"];
var list2=[];
for(var i=0;i<list.length;i++){
list2.push(game.createCard(list[i]+'_card','',''))
}
//list2.randomSort();
event.time=get.utc();
player.chooseButton(['请选择要擦拭的宝物',list2],true).set('ai',function(button){
var player=_status.event.player;
if(button.link.name=='xuanjian_card'){
if(game.hasPlayer(function(current){
return current.isDamaged()&&current.hp<3&&get.attitude(player,current)>1;
})) return 1+Math.random();
else return 1;
}
else if(button.link.name=='wolong_card'){
if(game.hasPlayer(function(current){
return get.damageEffect(current,player,player,'fire')>0;
})) return 1.2+Math.random();
else return 0.5;
}
else return 0.6;
});
"step 1"
var delay=8400-(get.utc()-event.time);
if(delay>0){
event.delay2=true;
event.dialog=ui.create.dialog(get.translation(player)+'正在擦拭宝物...'+(_status.connectMode?'':'<br>(点击屏幕可跳过等待)'));
event.videoId=lib.status.videoId++;
game.broadcast('createDialog',event.videoId,get.translation(player)+'正在擦拭宝物...');
game.pause();
event.pingcai_delayed=true;
setTimeout(function(){
if(event.pingcai_delayed==true){
delete event.pingcai_delayed;
game.resume();
}
},delay);
if(!_status.connectMode){
event.forceMine=true;
event.custom.replace.window=function(){
if(event.pingcai_delayed==true){
delete event.forceMine;
delete event.pingcai_delayed;
game.resume();
}
}
}
}
event.card=result.links[0];
"step 2"
if(event.delay2){
delete event.custom.replace.window;
event.dialog.close();
game.addVideo('cardDialog',null,event.videoId);
game.broadcast('closeDialog',event.videoId);
}
player.logSkill('pcaudio_'+event.card.name);
player.$throw(event.card);
event.insert(lib.skill.xinfu_pingcai[event.card.name],{
player:player,
});
},
ai:{
order:7,
fireAttack:true,
threaten:1.7,
result:{
player:1,
},
},
},
"xinfu_pdgyingshi":{
mod:{
targetEnabled:function(card,player,target){
if(get.type(card)=='delay'){
return false;
}
},
},
trigger:{
player:['phaseZhunbeiBefore','phaseJieshuBefore'],
},
forced:true,
audio:2,
group:'xinfu_pdgyingshi2',
content:function(){
trigger.cancel();
game.log(player,'跳过了',event.triggername=='phaseZhunbeiBefore'?'准备阶段':'结束阶段');
},
},
xinfu_pdgyingshi2:{
popup:false,
trigger:{
player:"phaseJudgeBefore",
},
forced:true,
content:function(){
trigger.cancel();
game.log(player,'跳过了判定阶段');
},
},
"pcaudio_wolong_card":{
audio:true,
},
"pcaudio_fengchu_card":{
audio:true,
},
"pcaudio_shuijing_card":{
audio:true,
},
"pcaudio_xuanjian_card":{
audio:true,
},
"yizan_use":{
intro:{
content:"已发动过#次",
},
enable:["chooseToUse","chooseToRespond"],
hiddenCard:function(player,name){
if(!['sha','shan','tao','jiu'].contains(name)) return false;
if(!player.storage.yizan&&player.countCards('hes')<2) return false;
return player.hasCard(function(card){
return get.type(card)=='basic';
},'hs');
},
filter:function(event,player){
if(!player.storage.yizan&&player.countCards('hes')<2) return false;
if(event.filterCard({name:'sha'},player,event)||
event.filterCard({name:'shan'},player,event)||
event.filterCard({name:'jiu'},player,event)||
event.filterCard({name:'tao'},player,event)){
return player.hasCard(function(card){
return get.type(card)=='basic';
},'hs');
}
return false;
},
chooseButton:{
dialog:function(event,player){
var list=[];
if(event.filterCard({name:'sha'},player,event)){
list.push(['基本','','sha']);
list.push(['基本','','sha','fire']);
list.push(['基本','','sha','thunder']);
list.push(['基本','','sha','ice']);
}
if(event.filterCard({name:'shan'},player,event)){
list.push(['基本','','shan']);
}
if(event.filterCard({name:'tao'},player,event)){
list.push(['基本','','tao']);
}
if(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(_status.event.getParent().type!='phase'||game.hasPlayer(function(current){
return player.canUse(card,current)&&get.effect(current,card,player,player)>0;
})){
switch(button.link[2]){
case 'tao':case 'shan':return 5;
case 'jiu':{
if(player.storage.yizan&&player.countCards('hs',{type:'basic'})>2) return 3;
};
case 'sha':
if(button.link[3]=='fire') return 2.95;
else if(button.link[3]=='thunder'||button.link[3]=='ice') return 2.92;
else return 2.9;
}
}
return 0;
},
backup:function(links,player){
return {
audio:'yizan_respond_shan',
filterCard:function(card,player,target){
if(player.storage.yizan) return get.type(card)=='basic';
else if(ui.selected.cards.length){
if(get.type(ui.selected.cards[0])=='basic') return true;
return get.type(card)=='basic';
}
return true;
},
complexCard:true,
selectCard:function(){
var player=_status.event.player;
if(player.storage.yizan) return 1;
return 2;
},
check:function(card,player,target){
if(!ui.selected.cards.length&&get.type(card)=='basic') return 6;
else return 6-get.value(card);
},
viewAs:{name:links[0][2],nature:links[0][3]},
position:'hes',
popname:true,
precontent:function(){
player.addMark('yizan_use',1,false);
},
}
},
prompt:function(links,player){
var str=!player.storage.yizan?'两张牌(其中至少应有一张基本牌)':'一张基本牌';
return '将'+str+'当做'+get.translation(links[0][3]||'')+get.translation(links[0][2])+'使用或打出';
},
},
ai:{
order:function(){
var player=_status.event.player;
var event=_status.event;
if(event.filterCard({name:'jiu'},player,event)&&get.effect(player,{name:'jiu'})>0&&player.storage.yizan&&player.countCards('hs',{type:'basic'})>2){
return 3.3;
}
return 3.1;
},
skillTagFilter:function(player,tag,arg){
if(tag=='fireAttack') return true;
if(!player.storage.yizan&&player.countCards('hes')<2) return false;
if(!player.hasCard(function(card){
return get.type(card)=='basic';
},'hes')){
return false;
}
},
result:{
player:1,
},
respondSha:true,
respondShan:true,
fireAttack:true,
},
},
"yizan_respond_shan":{
audio:2,
},
"xinfu_longyuan":{
audio:2,
forced:true,
unique:true,
juexingji:true,
trigger:{
player:'phaseZhunbeiBegin',
},
skillAnimation:true,
animationColor:'orange',
filter:function(event,player){
return player.countMark('yizan_use')>=3;
},
content:function(){
player.awakenSkill('xinfu_longyuan');
player.storage.yizan=true;
},
derivation:'yizan_rewrite',
},
xinfu_jingxie:{
audio:2,
video:function(player,info){
var l2=player.getCards(info[0]?'e':'h'),l1=info[1];
for(var j=0;j<l2.length;j++){
if(l2[j].suit==l1[0]&&l2[j].number==l1[1]&&l2[j].name==l1[2]){
l2[j].init([l2[j].suit,l2[j].number,'rewrite_'+l2[j].name]);
break;
}
}
},
},
"xinfu_jingxie1":{
group:["xinfu_jingxie2"],
position:"he",
audio:'xinfu_jingxie',
enable:"phaseUse",
filter:function(event,player){
var he=player.getCards('he');
for(var i=0;i<he.length;i++){
if(["bagua","baiyin","lanyinjia","renwang","tengjia","zhuge"].contains(he[i].name)) return true;
}
return false;
},
filterCard:function(card){
return ["bagua","baiyin","lanyinjia","renwang","tengjia","zhuge"].contains(card.name);
},
discard:false,
lose:false,
delay:false,
check:function(){
return 1;
},
content:function(){
"step 0"
player.showCards(cards);
"step 1"
var card=cards[0];
var bool=(get.position(card)=='e');
if(bool) player.removeEquipTrigger(card);
game.addVideo('skill',player,['xinfu_jingxie',[bool,get.cardInfo(card)]])
game.broadcastAll(function(card){
card.init([card.suit,card.number,'rewrite_'+card.name]);
},card);
if(bool){
var info=get.info(card);
if(info.skills){
for(var i=0;i<info.skills.length;i++){
player.addSkillTrigger(info.skills[i]);
}
}
}
},
ai:{
basic:{
order:10,
},
result:{
player:1,
},
},
},
"xinfu_jingxie2":{
prompt:"重铸一张防具牌然后将体力回复至1点。",
audio:'xinfu_jingxie',
enable:"chooseToUse",
filterCard:function(card){
return get.subtype(card)=='equip2';
},
filter:function(event,player){
if(event.type=='dying'){
if(player!=event.dying) return false;
return player.countCards('he',function(card){
return get.subtype(card)=='equip2';
})>0;
}
return false;
},
check:function(){
return 1;
},
position:"he",
discard:false,
loseTo:'discardPile',
prepare:function(cards,player){
player.$throw(cards,1000);
game.log(player,'将',cards,'置入了弃牌堆')
},
content:function(){
'step 0'
player.draw();
'step 1'
var num=1-player.hp;
if(num) player.recover(num);
},
ai:{
order:0.5,
skillTagFilter:function(player,arg,target){
if(player!=target) return false;
return player.countCards('he',function(card){
if(_status.connectMode&&get.position(card)=='h') return true;
return get.subtype(card)=='equip2';
})>0;
},
save:true,
result:{
player:function(player){
return 10;
},
},
},
},
"xinfu_qiaosi":{
enable:"phaseUse",
usable:1,
content:function(){
'step 0'
if(get.isLuckyStar(player)){
event.num=6;
player.throwDice(6);
}
else player.throwDice();
'step 1'
event.cards=get.cards(event.num);
player.showCards(event.cards);
'step 2'
player.gain(event.cards,'gain2');
player.chooseControl().set('choiceList',[
'将'+get.cnNumber(event.num)+'张牌交给一名其他角色',
'弃置'+get.cnNumber(event.num)+'张牌',
]).set('ai',function(){
if(game.hasPlayer(function(current){
return current!=player&&get.attitude(player,current)>2;
})) return 0;
return 1;
});
'step 3'
if(result.index==0){
player.chooseCardTarget({
position:'he',
filterCard:true,
selectCard:event.num,
filterTarget:function(card,player,target){
return player!=target;
},
ai1:function(card){
return 1;
},
ai2:function(target){
var att=get.attitude(_status.event.player,target);
return att;
},
prompt:'请选择要送人的卡牌',
forced:true,
});
}
else{
player.chooseToDiscard(event.num,true,'he');
event.finish();
}
'step 4'
if(result.bool){
var target=result.targets[0];
player.give(result.cards,target);
}
},
ai:{
order:7.5,
result:{
player:1,
},
},
},
zhaohuo:{
audio:2,
audioname:['re_taoqian'],
trigger:{global:'dying'},
forced:true,
//priority:12,
filter:function(event,player){
return event.player!=player&&player.maxHp>1;
},
content:function(){
'step 0'
event.num=player.maxHp-1;
player.loseMaxHp(event.num,true);
'step 1'
player.draw(event.num);
}
},
yixiang:{
audio:2,
audioname:['re_taoqian'],
trigger:{target:'useCardToTargeted'},
frequent:true,
filter:function(event,player){
if(event.player.hp<=player.hp) return false;
//if(event.targets.length>1) return false;
var hs=player.getCards('h');
var names=['sha','shan','tao','jiu','du'];
for(var i=0;i<hs.length;i++){
names.remove(hs[i].name);
}
if(!names.length) return false;
for(var i=0;i<ui.cardPile.childElementCount;i++){
if(names.contains(ui.cardPile.childNodes[i].name)){
return true;
}
}
return false;
},
usable:1,
content:function(){
var hs=player.getCards('h');
var list=[];
var names=['sha','shan','tao','jiu','du'];
for(var i=0;i<hs.length;i++){
names.remove(hs[i].name);
}
for(var i=0;i<ui.cardPile.childElementCount;i++){
if(names.contains(ui.cardPile.childNodes[i].name)){
list.push(ui.cardPile.childNodes[i]);
}
}
if(list.length){
player.gain(list.randomGet(),'draw');
}
}
},
yirang:{
audio:2,
audioname:['re_taoqian'],
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
if(!player.countCards('he',function(card){
return get.type(card)!='basic';
})){
return false;
}
return game.hasPlayer(function(current){
return current.maxHp>player.maxHp;
});
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('yirang'),function(card,player,target){
return target.maxHp>player.maxHp;
}).set('ai',function(target){
return (get.attitude(_status.event.player,target)-2)*target.maxHp;
});
'step 1'
if(result.bool){
var cards=player.getCards('he',function(card){
return get.type(card)!='basic';
});
var target=result.targets[0];
var types=[];
for(var i=0;i<cards.length;i++){
types.add(get.type(cards[i],'trick'));
}
player.logSkill('yirang',target);
target.gain(cards,player,'give');
player.gainMaxHp(target.maxHp-player.maxHp,true);
player.recover(types.length);
game.delay();
}
}
},
kuangcai:{
audio:2,
trigger:{player:'phaseUseBegin'},
filter:function(event,player){
return !event.player.isMad();
},
content:function(){
game.broadcastAll(function(player){
player.forceCountChoose={phaseUse:5};
},player)
player.addSkill('kuangcai_use');
player.addSkill('kuangcai_cancel');
//ui.auto.hide();
},
subSkill:{
use:{
mod:{
cardUsable:function(card){
if(get.info(card)&&get.info(card).forceUsable) return;
return Infinity;
},
targetInRange:function(){
return true;
},
aiOrder:function(player,card,num){
var name=get.name(card);
if(name=='tao') return num+7+Math.pow(player.getDamagedHp(),2);
if(name=='sha') return num+6;
if(get.subtype(card)=='equip2') return num+get.value(card)/3;
},
},
trigger:{player:'useCard'},
forced:true,
charlotte:true,
silent:true,
popup:false,
filter:function(event,player){
if(!player.forceCountChoose||!player.forceCountChoose.phaseUse){
return false;
}
return true;
},
content:function(){
player.draw();
if(player.forceCountChoose.phaseUse==1){
var evt=event.getParent('phaseUse');
if(evt) evt.skipped=true;
}
else game.broadcastAll(function(player){
player.forceCountChoose.phaseUse--;
},player);
},
},
cancel:{
trigger:{player:'phaseUseEnd'},
priority:50,
silent:true,
charlotte:true,
content:function(){
game.broadcastAll(function(player){
delete player.forceCountChoose;
},player);
//ui.auto.show();
player.removeSkill('kuangcai_use');
player.removeSkill('kuangcai_cancel');
}
}
},
ai:{
threaten:4.5,
},
},
shejian:{
audio:2,
trigger:{player:'phaseDiscardEnd'},
direct:true,
filter:function(event,player){
var cards=[];
player.getHistory('lose',function(evt){
if(evt.type=='discard'&&evt.getParent('phaseDiscard')==event) cards.addArray(evt.cards2);
});
if(cards){
if(cards.length<2) return false;
var suits=[];
for(var i=0;i<cards.length;i++){
var suit=get.suit(cards[i]);
if(suits.contains(suit)){
return false;
}
else{
suits.push(suit);
}
}
return true;
}
return false;
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('shejian'),'弃置一名其他角色的一张牌',function(card,player,target){
if(player==target) return false;
return target.countDiscardableCards(player,'he')>0;
}).ai=function(target){
return -get.attitude(player,target);
};
'step 1'
if(result.bool){
player.logSkill('shejian',result.targets);
player.discardPlayerCard(result.targets[0],'he',true);
}
else{
event.finish();
}
},
},
shixin:{
audio:2,
trigger:{player:'damageBegin4'},
filter:function(event){
return event.nature=='fire';
},
forced:true,
content:function(){
trigger.cancel();
},
ai:{
nofire:true,
effect:{
target:function(card,player,target,current){
if(get.tag(card,'fireDamage')) return 'zerotarget';
}
}
}
},
fenyin:{
locked:false,
mod:{
aiOrder:function(player,card,num){
if(typeof card=='object'&&player==_status.currentPhase){
var evt=player.getLastUsed();
if(evt&&evt.card&&get.color(evt.card)!='none'&&get.color(card)!='none'&&get.color(evt.card)!=get.color(card)){
return num+10;
}
}
},
},
audio:2,
trigger:{player:'useCard'},
frequent:true,
//usable:3,
filter:function(event,player){
if(_status.currentPhase!=player) return false;
var evt=player.getLastUsed(1);
if(!evt) return false;
var color1=get.color(evt.card);
var color2=get.color(event.card);
return color1&&color2&&color1!='none'&&color2!='none'&&color1!=color2;
},
content:function(){
player.draw();
},
ai:{
threaten:3,
},
},
dujin:{
audio:2,
trigger:{player:'phaseDrawBegin2'},
frequent:true,
filter:function(event,player){
return !event.numFixed;
},
content:function(){
trigger.num+=1+Math.floor(player.countCards('e')/2);
}
},
yingjian:{
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
audio:'qingyi',
content:function(){
player.chooseUseTarget('###是否发动【影箭】?###视为使用一张没有距离限制的【杀】',{name:'sha'},false,'nodistance').logSkill='yingjian';
},
ai:{
threaten:function(player,target){
return 1.6;
}
}
},
tunchu:{
audio:2,
trigger:{player:'phaseDrawBegin2'},
frequent:true,
filter:function(event,player){
if(event.numFixed||player.storage.tunchu&&player.storage.tunchu.length) return false;
return true;
},
content:function(){
trigger.num+=2;
player.addTempSkill('tunchu_choose','phaseDrawAfter');
},
init:function(player){
if(!player.storage.tunchu) player.storage.tunchu=[];
},
intro:{
content:'cards',
onunmark:function(storage,player){
if(storage&&storage.length){
player.$throw(storage,1000);
game.cardsDiscard(storage);
game.log(storage,'被置入了弃牌堆');
storage.length=0;
}
},
},
group:'tunchu_disable',
subSkill:{
choose:{
trigger:{player:'phaseDrawEnd'},
forced:true,
popup:false,
content:function(){
'step 0'
player.removeSkill('tunchu_choose');
var nh=player.countCards('h');
if(nh){
player.chooseCard('h',[1,nh],'将任意张手牌置于你的武将牌上').set('ai',function(card){
var player=_status.event.player;
var count=game.countPlayer(function(current){
return get.attitude(player,current)>2&&current.hp-current.countCards('h')>1;
});
if(ui.selected.cards.length>=count) return -get.value(card);
return 5-get.value(card);
});
}
else{
event.finish();
}
'step 1'
if(result.bool){
player.lose(result.cards,ui.special,'toStorage');
player.storage.tunchu.addArray(result.cards);
player.markSkill('tunchu');
player.syncStorage('tunchu');
}
}
},
disable:{
mod:{
cardEnabled:function(card,player){
if(player.storage.tunchu&&player.storage.tunchu.length&&card.name=='sha'){
return false;
}
},
cardUsable:function(card,player){
if(player.storage.tunchu&&player.storage.tunchu.length&&card.name=='sha'){
return false;
}
},
}
}
}
},
shuliang:{
audio:2,
trigger:{global:'phaseJieshuBegin'},
direct:true,
filter:function(event,player){
return player.storage.tunchu&&player.storage.tunchu.length>0&&event.player.countCards('h')<event.player.hp&&event.player.isAlive();
},
content:function(){
'step 0'
var goon=(get.attitude(player,trigger.player)>0);
player.chooseCardButton(get.prompt('shuliang',trigger.player),player.storage.tunchu).set('ai',function(){
if(_status.event.goon) return 1;
return 0;
}).set('goon',goon);
'step 1'
if(result.bool){
player.logSkill('shuliang',trigger.player);
player.storage.tunchu.remove(result.links[0]);
player.$throw(result.links);
game.cardsDiscard(result.links);
player.syncStorage('tunchu');
if(player.storage.tunchu.length==0){
player.unmarkSkill('tunchu');
}
trigger.player.draw(2);
}
}
},
choulve:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
filter:function(event,player){
return game.hasPlayer(function(current){
return current!=player&&current.countCards('he');
})
},
content:function(){
'step 0'
var str='令一名其他角色交给你一张牌';
var history=player.getAllHistory('damage',function(evt){
return evt.card&&evt.card.name&&lib.card[evt.card.name];
})
if(history.length) event.cardname=history[history.length-1].card.name;
if(event.cardname){
str+='若其如此做,视为你使用【'+get.translation(event.cardname)+'】';
}
var goon=true;
if(event.cardname){
goon=game.hasPlayer(function(current){
return player.canUse(event.cardname,current)&&get.effect(current,{name:event.cardname},player,player)>0;
});
}
player.chooseTarget(get.prompt('choulve'),str,function(card,player,target){
return target!=player&&target.countCards('he');
}).set('ai',function(target){
if(!_status.event.goon) return 0;
var player=_status.event.player;
if(get.attitude(player,target)>=0&&get.attitude(target,player)>=0){
return Math.sqrt(target.countCards('he'));
}
return 0;
}).set('goon',goon);
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('choulve',target);
target.chooseCard('he','是否交给'+get.translation(player)+'一张牌?',
event.cardname?('若如此做,视为'+get.translation(player)+
'使用【'+get.translation(event.cardname)+'】'):null).set('ai',function(card){
if(_status.event.goon) return 7-get.value(card);
return 0;
}).set('goon',get.attitude(target,player)>1);
event.target=target;
}
else{
event.finish();
}
'step 2'
if(result.bool){
event.target.give(result.cards,player);
if(event.cardname){
player.chooseUseTarget(event.cardname,true,false);
}
}
},
},
polu:{
audio:2,
trigger:{player:['phaseZhunbeiBegin','damageEnd']},
forced:true,
filter:function(event,player){
return !player.getEquip('ly_piliche');
},
content:function(){
if(trigger.name=='phaseZhunbei'){
player.useCard(game.createCard('ly_piliche','diamond',1),player);
}
else{
player.draw(trigger.num);
}
}
},
ly_piliche:{
trigger:{source:'damageSource'},
check:function(event,player){
return get.attitude(player,event.player)<0;
},
filter:function(event,player){
if(event.card&&get.type(event.card)=='delay') return false;
return event.player.isIn()&&(event.player.getEquip(2)||event.player.getEquip(3));
},
logTarget:'player',
content:function(){
var equip2=trigger.player.getEquip(2);
var equip3=trigger.player.getEquip(3);
var cards=[];
if(equip2) cards.push(equip2);
if(equip3) cards.push(equip3);
if(cards.length){
trigger.player.discard(cards);
}
}
},
xinzhilve:{
enable:'phaseUse',
audio:'zhilve',
usable:1,
chooseButton:{
dialog:function(event,player){
var list=[
'移动场上的一张牌',
'摸一张牌并视为使用一张【杀】',
];
var choiceList=ui.create.dialog('知略失去1点体力并...','forcebutton','hidden');
for(var i=0;i<list.length;i++){
var str='<div class="popup text" style="width:calc(100% - 10px);display:inline-block">';
var bool=lib.skill.xinzhilve.chooseButton.filter({link:i},player);
if(!bool) str+='<div style="opacity:0.5">';
str+=list[i];
if(!bool) str+='</div>';
str+='</div>';
var next=choiceList.add(str);
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[i];
}
choiceList.buttons.add(next.firstChild);
}
return choiceList;
},
filter:function(button,player){
if(button.link==0) return player.canMoveCard();
return player.hasUseTarget({name:'sha',isCard:true},false);
},
check:function(button){
return button.link;
},
backup:function(links){
return lib.skill['xinzhilve_'+['move','use'][links[0]]];
},
prompt:function(){return '请选择【杀】的目标'},
},
ai:{
order:function(item,player){
return get.order({name:'sha'})+0.1;
},
result:{
player:function(player){
if(player.hp>2&&player.hasValueTarget({name:'sha'})) return 1;
return 0;
},
},
},
},
xinzhilve_move:{
audio:'zhilve',
filterCard:function(){return false},
selectCard:-1,
delay:false,
content:function(){
'step 0'
event.forceDie=true;
if(!player.canMoveCard(null,event.nojudge)){
event.finish();
return;
}
var next=player.chooseTarget(2,function(card,player,target){
if(ui.selected.targets.length){
var from=ui.selected.targets[0];
var js=from.getCards('j');
for(var i=0;i<js.length;i++){
if(_status.event.nojudge) break;
if(target.canAddJudge(js[i])) return true;
}
if(target.isMin()) return false;
var es=from.getCards('e');
for(var i=0;i<es.length;i++){
if(target.isEmpty(get.subtype(es[i]))) return true;
}
return false;
}
else{
var range='ej';
if(_status.event.nojudge) range='e';
return target.countCards(range)>0;
}
});
next.set('nojudge',event.nojudge||false);
next.set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
var sgnatt=get.sgn(att);
if(ui.selected.targets.length==0){
if(att>0){
if(!_status.event.nojudge&&target.countCards('j',function(card){
return game.hasPlayer(function(current){
return current.canAddJudge(card)&&get.attitude(player,current)<0;
})
})) return 14;
if(target.countCards('e',function(card){
return get.value(card,target)<0&&game.hasPlayer(function(current){
return current!=target&&get.attitude(player,current)<0&&current.isEmpty(get.subtype(card))
});
})>0) return 9;
}
else if(att<0){
if(game.hasPlayer(function(current){
if(current!=target&&get.attitude(player,current)>0){
var es=target.getCards('e');
for(var i=0;i<es.length;i++){
if(get.value(es[i],target)>0&&current.isEmpty(get.subtype(es[i]))&&get.value(es[i],current)>0) return true;
}
}
})){
return -att;
}
}
return 0;
}
var es=ui.selected.targets[0].getCards('e');
var i;
var att2=get.sgn(get.attitude(player,ui.selected.targets[0]));
for(i=0;i<es.length;i++){
if(sgnatt!=0&&att2!=0&&
get.sgn(get.value(es[i],ui.selected.targets[0]))==-att2&&
get.sgn(get.value(es[i],target))==sgnatt&&
target.isEmpty(get.subtype(es[i]))){
return Math.abs(att);
}
}
if(i==es.length&&(_status.event.nojudge||!ui.selected.targets[0].countCards('j',function(card){
return target.canAddJudge(card);
}))){
return 0;
}
return -att*get.attitude(player,ui.selected.targets[0]);
});
next.set('multitarget',true);
next.set('targetprompt',_status.event.targetprompt||['被移走','移动目标']);
next.set('prompt',event.prompt||'移动场上的一张牌');
if(event.prompt2) next.set('prompt2',event.prompt2);
if(event.forced) next.set('forced',true);
'step 1'
event.result=result;
if(result.bool){
player.line2(result.targets,'green');
event.targets=result.targets;
}
else{
event.finish();
}
'step 2'
game.delay();
'step 3'
if(targets.length==2){
player.choosePlayerCard('ej',true,function(button){
var player=_status.event.player;
var targets0=_status.event.targets0;
var targets1=_status.event.targets1;
if(get.attitude(player,targets0)>0&&get.attitude(player,targets1)<0){
if(get.position(button.link)=='j') return 12;
if(get.value(button.link,targets0)<0) return 10;
return 0;
}
else{
if(get.position(button.link)=='j') return -10;
return get.equipValue(button.link);
}
},targets[0]).set('nojudge',event.nojudge||false).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
var targets1=_status.event.targets1;
if(get.position(button.link)=='j'){
if(_status.event.nojudge) return false;
return targets1.canAddJudge(button.link);
}
else{
return targets1.isEmpty(get.subtype(button.link));
}
});
}
else{
event.finish();
}
'step 4'
if(result.bool&&result.links.length){
player.loseHp();
}
'step 5'
if(result.bool&&result.links.length){
var link=result.links[0];
if(get.position(link)=='e'){
event.targets[1].equip(link);
}
else if(link.viewAs){
event.targets[1].addJudge({name:link.viewAs},[link]);
}
else{
event.targets[1].addJudge(link);
}
event.targets[0].$give(link,event.targets[1])
event.result.card=link;
event.result.position=get.position(link);
game.delay();
player.addTempSkill('xinzhilve_mark');
player.addMark('xinzhilve_mark',1,false);
}
},
},
xinzhilve_use:{
audio:'zhilve',
filterCard:function(){return false},
selectCard:-1,
filterTarget:function(card,player,target){
return player.canUse({name:'sha',isCard:true},target,false);
},
content:function(){
player.loseHp();
player.draw();
player.useCard({name:'sha',isCard:true},false,target).forceDie=true;
player.addTempSkill('xinzhilve_mark');
player.addMark('xinzhilve_mark',1,false);
},
ai:{
result:{
target:function(player,target){
return get.effect(target,{name:'sha'},player,target);
},
},
},
},
xinzhilve_mark:{
intro:{content:'本回合手牌上限+#'},
onremove:true,
charlotte:true,
mod:{
maxHandcard:function(player,num){
return num+player.countMark('xinzhilve_mark');
},
},
},
xinxhzhiyan:{
audio:'xhzhiyan',
enable:'phaseUse',
filter:function(event,player){
return (!player.hasSkill('xinxhzhiyan_true')&&player.countCards('h')>player.hp)||(!player.hasSkill('xinxhzhiyan_false')&&player.countCards('h')<player.maxHp)
},
filterCard:true,
selectCard:function(){
var player=_status.event.player;
if(player.hasSkill('xinxhzhiyan_true')) return 0;
var num=Math.max(0,player.countCards('h')-player.hp);
if(ui.selected.cards.length||player.hasSkill('xinxhzhiyan_false')||player.countCards('h')>=player.maxHp) return [num,num];
return [0,num]
},
filterTarget:lib.filter.notMe,
selectTarget:function(){
if(ui.selected.cards.length) return [1,1];
return [0,0];
},
check:function(card){
var player=_status.event.player;
var checkx=function(card){
if(player.getUseValue(card,null,true)<=0&&game.hasPlayer(function(current){
return current!=player&&get.value(card,current)>0&&get.attitude(player,current)>0;
})) return 2;
return 1;
}
if(player.countCards('h',function(card){
return checkx(card)>0;
})<(player.countCards('h')-player.hp)) return 0;
return checkx(card);
},
delay:false,
discard:false,
lose:false,
content:function(){
var bool=(cards&&cards.length>0);
player.addTempSkill('xinxhzhiyan_'+bool,'phaseUseEnd');
if(!bool){
player.draw(player.maxHp-player.countCards('h'));
}
else{
target.gain(cards,player,'giveAuto');
}
},
ai:{
order:function(obj,player){
if(player.countCards('h')>player.hp) return 10;
return 0.5;
},
result:{
player:function(player,target){
if(!ui.selected.cards.length&&player.countCards('h')<player.maxHp) return 1;
return 0;
},
target:1,
},
},
},
xinxhzhiyan_true:{},
xinxhzhiyan_false:{
mod:{
playerEnabled:function(card,player,target){
if(player!=target&&(!get.info(card)||!get.info(card).singleCard||!ui.selected.targets.length)) return false;
},
},
mark:true,
intro:{
content:'不能对其他角色使用牌',
},
},
weifeng:{
audio:2,
trigger:{player:'useCardAfter'},
forced:true,
filter:function(event,player){
if(!event.targets||!event.targets.filter(function(target){
return target!=player&&!target.storage.weifeng2;
}).length) return false;
var evt=event.getParent('phaseUse');
if(!evt||evt.player!=player) return false;
if(!get.tag(event.card,'damage')) return false;
if(!['basic','trick'].contains(get.type(event.card))) return false;
return player.getHistory('useCard',function(ev){
return ev.getParent('phaseUse')==evt&&get.tag(ev.card,'damage')&&['basic','trick'].contains(get.type(ev.card));
}).indexOf(event)==0&&game.hasPlayer(function(current){
return current!=player&&!current.storage.weifeng2&&event.targets.contains(current);
});
},
content:function(){
'step 0'
player.chooseTarget(true,'威风:请选择一个目标,令其获得一个【惧('+get.translation(trigger.card.name)+')】标记',function(card,player,target){
return player!=target&&!target.storage.weifeng2&&_status.event.getTrigger().targets.contains(target);
}).set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
target.storage.weifeng2=trigger.card.name;
player.line(target,'green');
game.log(target,'获得了一个','#g【惧('+get.translation(trigger.card.name)+')】','标记')
target.markSkill('weifeng2');
player.addSkill('weifeng3');
}
},
},
weifeng2:{
intro:{
content:'当前“惧”标记名称:$',
onunmark:function(storage,player){
if(player.storage.weifeng2){
game.log(player,'移去了一个','#g【惧('+get.translation(player.storage.weifeng2)+')】','标记')
delete player.storage.weifeng2;
}
},
},
marktext:'惧',
},
weifeng3:{
trigger:{
global:'damageBegin3',
player:['phaseZhunbeiBegin','dieBegin'],
},
forced:true,
popup:false,
filter:function(event,player){
if(event.name!='damage') return true;
return event.player!=player&&typeof event.player.storage.weifeng2=='string';
},
content:function(){
if(trigger.name=='damage'){
player.logSkill('weifeng',trigger.player);
if(trigger.card&&trigger.card.name==trigger.player.storage.weifeng2) trigger.num++;
else if(trigger.player.countGainableCards(player,'he')>0) player.gainPlayerCard(trigger.player,'he',true);
trigger.player.unmarkSkill('weifeng2');
}
else{
game.countPlayer(function(current){
if(current.storage.weifeng2) current.unmarkSkill('weifeng2');
});
player.removeSkill('weifeng3');
}
},
},
gnjinfan:{
trigger:{player:'phaseDiscardBegin'},
direct:true,
audio:2,
filter:function(event,player){
var list=[];
player.getCards('s',function(card){
if(card.hasGaintag('gnjinfan')) list.add(get.suit(card));
});
if(list.length>=lib.suit.length) return false;
return player.countCards('h',function(card){
return _status.connectMode||!list.contains(get.suit(card));
})>0;
},
content:function(){
'step 0'
player.chooseCard('h',get.prompt('gnjinfan'),'将任意张手牌当做“铃”置于武将牌上',[1,function(){
var list=[];
var list2=[];
player.getCards('s',function(card){
if(card.hasGaintag('gnjinfan')) list.add(get.suit(card));
});
player.getCards('h',function(card){
list2.add(get.suit(card));
});
list2.removeArray(list);
return list2.length;
}()],function(card,player){
return !player.countCards('s',function(cardx){
return cardx.hasGaintag('gnjinfan')&&get.suit(cardx,false)==get.suit(card,player);
})&&!ui.selected.cards.filter(function(cardx){
return get.suit(cardx,player)==get.suit(card,player);
}).length;
}).set('ai',function(card){
var player=_status.event.player;
if(player.hasUseTarget(card)&&!player.hasValueTarget(card)) return 0;
if(['sha','shan','wuxie','caochuan'].contains(card.name)) return 2+Math.random();
return 1+Math.random();
}).set('complexCard',true);
'step 1'
if(result.bool){
player.logSkill('gnjinfan');
game.log(player,'将',result.cards,'放到了武将牌上');
player.loseToSpecial(result.cards,'gnjinfan');
}
else event.finish();
'step 2'
player.markSkill('gnjinfan');
},
group:['gnjinfan_gain'],
marktext:'铃',
intro:{
mark:function(dialog,storage,player){
dialog.addAuto(player.getCards('s',function(card){
return card.hasGaintag('gnjinfan');
}));
},
markcount:function(storage,player){
return player.getCards('s',function(card){
return card.hasGaintag('gnjinfan');
}).length;
},
onunmark:function(storage,player){
var cards=player.getCards('s',function(card){
return card.hasGaintag('gnjinfan');
});
if(cards.length){
player.lose(cards,ui.discardPile);
player.$throw(cards,1000);
game.log(cards,'进入了弃牌堆');
}
},
},
mod:{
aiOrder:function(player,card,num){
if(get.itemtype(card)=='card'&&card.hasGaintag('gnjinfan')) return num+0.5;
},
},
},
gnjinfan_gain:{
trigger:{player:'loseAfter'},
forced:true,
filter:function(event,player){
if(!event.ss||!event.ss.length) return false;
for(var i in event.gaintag_map){
if(event.gaintag_map[i].contains('gnjinfan')) return true;
return false;
}
},
content:function(){
'step 0'
var cards=[];
for(var i of trigger.ss){
if(!trigger.gaintag_map[i.cardid]||!trigger.gaintag_map[i.cardid].contains('gnjinfan')) continue;
var suit=get.suit(i,false);
var card=get.cardPile2(function(card){
return !cards.contains(card)&&get.suit(card,false)==suit;
});
if(card) cards.push(card);
}
if(cards.length) player.gain(cards,'gain2');
var num=player.getCards('s',function(card){
return card.hasGaintag('gnjinfan');
}).length;
if(num) player.markSkill('gnjinfan');
else player.unmarkSkill('gnjinfan');
'step 1'
game.updateRoundNumber();
},
},
gnsheque:{
audio:2,
trigger:{global:'phaseZhunbeiBegin'},
direct:true,
filter:function(event,player){
return event.player.isAlive()&&event.player.countCards('e')>0&&
lib.filter.targetEnabled({name:'sha'},player,event.player)&&(player.hasSha()||_status.connectMode&&player.countCards('h')>0);
},
content:function(){
player.chooseToUse(function(card,player,event){
if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},'射却:是否对'+get.translation(trigger.player)+'使用一张杀?').set('logSkill','gnsheque').set('complexSelect',true).set('filterTarget',function(card,player,target){
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
return lib.filter.targetEnabled.apply(this,arguments);
}).set('sourcex',trigger.player).set('oncard',function(card){
card.gnsheque_tag=true;
});
},
ai:{
unequip:true,
unequip_ai:true,
skillTagFilter:function(player,tag,arg){
if(tag=='unequip_ai'){
if(_status.event.getParent().name!='gnsheque') return false;
}
else if(!arg||!arg.card||!arg.card.gnsheque_tag) return false;
},
},
},
},
dynamicTranslate:{
yizan_use:function(player){
if(player.storage.yizan) return '你可以将一张基本牌当做任意基本牌使用或打出。';
return '你可以将两张牌(其中至少一张为基本牌)当做任意基本牌使用或打出。';
},
},
perfectPair:{
wujing:['sunce','sunben','wuguotai'],
},
characterReplace:{
caochun:['caochun','old_caochun'],
majun:['majun','old_majun'],
zhanggong:['zhanggong','re_zhanggong'],
baosanniang:['xin_baosanniang','re_baosanniang','baosanniang'],
heqi:['re_heqi','heqi'],
weiwenzhugezhi:['weiwenzhugezhi','re_weiwenzhugezhi'],
xugong:['xugong','re_xugong'],
liuzan:['re_liuzan','liuzan'],
sufei:['sp_sufei','xf_sufei'],
jiakui:['jiakui','old_jiakui'],
shenpei:['shenpei','sp_shenpei'],
wangcan:['wangcan','sp_wangcan'],
sunshao:['sp_sunshao','sunshao'],
xunchen:['xunchen','sp_xunchen'],
xinpi:['xinpi','sp_xinpi'],
//duyu:['duyu','sp_duyu'],
//bianfuren:['sp_bianfuren','bianfuren'],
},
translate:{
liuzan:'手杀留赞',
re_sp_zhugeliang:"手杀卧龙",
ly_piliche:'霹雳车',
ly_piliche_info:'当你对其他角色造成伤害后,若造成伤害的牌不为延时锦囊牌,你可以弃置其装备区里的防具牌与+1坐骑牌当你失去此装备时销毁之。',
polu:'破橹',
polu_info:'锁定技回合开始时若你的装备区里没有【霹雳车】你使用之当你受到1点伤害后若你的装备区里没有【霹雳车】你摸一张牌。',
choulve:'筹略',
choulve_info:'出牌阶段开始时,你可以令一名其他角色交给你一张牌,若其如此做,视为你使用上一张对你过造成伤害且不为延时锦囊牌的牌。',
tunchu:'屯储',
tunchu_info:'摸牌阶段,若你没有「粮」,你可以多摸两张牌。若如此做,摸牌阶段结束时,你可以将任意张手牌置于你的武将上,称为「粮」,只要你的武将牌上有「粮」,你便不能使用【杀】',
shuliang:'输粮',
shuliang_info:'一名角色的结束阶段开始时,若其手牌数少于体力值,你可以移去一张「粮」,然后该角色摸两张牌',
fenyin:'奋音',
yingjian:'影箭',
fenyin_info:'你的回合内,当你使用牌时,若此牌与你于此回合内使用的上一张牌的颜色不同,则你可以摸一张牌。',
yingjian_info:'准备阶段开始时,你可以视为使用一张无距离限制的【杀】。',
dujin:'独进',
dujin_info:'摸牌阶段你可以多摸X+1张牌。X为你装备区里牌数的一半且向下取整',
shixin:'释衅',
shixin_info:'锁定技,当你受到火属性伤害时,你防止此伤害。',
zhaohuo:'招祸',
zhaohuo_info:'锁定技当其他角色进入濒死状态时你将体力上限调整为1点。若你的体力上限因此减少则你摸X张牌。X为你以此法减少的体力上限',
yixiang:'义襄',
yixiang_info:'每名角色的回合限一次,当你成为一名角色使用牌的目标后,若该角色的体力值大于你的体力值,你可以随机获得牌堆里的一张你没有的基本牌。',
yirang:'揖让',
yirang_info:'出牌阶段开始时你可以将所有非基本牌交给一名体力上限大于你的其他角色然后调整体力上限至与该角色相同并回复X点体力X为你以此法交给其的牌的类别数。',
kuangcai:'狂才',
kuangcai_info:'出牌阶段开始时你可以令你此阶段内的主动出牌时间变为5秒。若如此做你于此阶段内使用牌没距离和次数限制且每当你于此阶段内使用牌时你摸一张牌且主动出牌时间-1秒。若主动出牌时间减至0则你结束出牌阶段。',
shejian:'舌剑',
shejian_info:'弃牌阶段结束时,若你于此阶段弃置的所有牌花色均不相同,则你可以弃置一名其他角色的一张牌。',
"xinfu_daigong":"怠攻",
"xinfu_daigong_info":"每回合限一次。当你受到伤害时,你可以展示所有手牌,然后令伤害来源选择一项:交给你一张与你所有手牌花色均不相同的一张牌,或防止此伤害。",
"xinfu_zhaoxin":"昭心",
"xinfu_zhaoxin_info":"出牌阶段限一次你可以将任意张手牌置于武将牌上并摸等量的牌称之为「望」你至多拥有三张「望」。你或你攻击范围内的一名其他角色的摸牌阶段结束后其可以获得一张由你选择的「望」然后你可以对其造成1点伤害。",
"zhaoxin_give":"昭心",
"zhaoxin_give_info":"",
"xinfu_qianchong":"谦冲",
"xinfu_qianchong_info":"锁定技,若你的装备区内有牌且:均为红色,则你视为拥有技能〖明哲〗。均为黑色,则你视为拥有技能〖帷幕〗。若均不满足,则出牌阶段开始时,你可以选择一种类别的牌,然后你本回合内使用该类别的牌时没有次数和距离限制。",
"qc_weimu":"帷幕",
"qc_weimu_info":"",
"qc_mingzhe":"明哲",
"qc_mingzhe_info":"",
"xinfu_shangjian":"尚俭",
"xinfu_shangjian_info":"一名角色的结束阶段开始时若你于此回合内失去了X张或更少的牌则你可以摸等量的牌。X为你的体力值",
"rw_bagua_skill":"先天八卦阵",
"rw_bagua_skill_info":"当你需要使用或打出一张【闪】时,你可以进行判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。",
"rw_baiyin_skill":"照月狮子盔",
"rw_baiyin_skill_info":"锁定技当你受到大于1的伤害时你将伤害值改为1当你失去装备区里的【照月狮子盔】时你回复1点体力并摸两张牌。",
"rw_lanyinjia":"精银甲",
"rw_lanyinjia_info":"你可以将一张手牌当做【闪】使用或打出。锁定技,【精银甲】不会无效。",
"rw_minguangkai_cancel":"耀光铠",
"rw_minguangkai_cancel_info":"锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。",
"rw_minguangkai_link":"耀光铠",
"rw_minguangkai_link_info":"锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。",
"rw_renwang_skill":"仁王金刚盾",
"rw_renwang_skill_info":"黑色【杀】和红桃【杀】对你无效。",
"rw_tengjia1":"桐油百韧甲",
"rw_tengjia1_info":"锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时取消之。",
"rw_tengjia2":"桐油百韧甲",
"rw_tengjia2_info":"锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时取消之。",
"rw_tengjia3":"桐油百韧甲",
"rw_tengjia3_info":"锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时取消之。",
"rw_tengjia4":"桐油百韧甲",
"rewrite_bagua":"先天八卦阵",
"rewrite_bagua_info":"当你需要使用或打出一张【闪】时,你可以进行判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。",
"rewrite_baiyin":"照月狮子盔",
"rewrite_baiyin_info":"锁定技当你受到大于1的伤害时你将伤害值改为1当你失去装备区里的【照月狮子盔】时你回复1点体力并摸两张牌。",
"rewrite_lanyinjia":"精银甲",
"rewrite_lanyinjia_info":"你可以将一张手牌当做【闪】使用或打出。锁定技,【精银甲】不会无效。",
"rewrite_minguangkai":"耀光铠",
"rewrite_minguangkai_info":"锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。",
"rewrite_renwang":"仁王金刚盾",
"rewrite_renwang_info":"黑色【杀】和红桃【杀】对你无效。",
"rewrite_tengjia":"桐油百韧甲",
"rewrite_tengjia_info":"锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时取消之。",
"rewrite_zhuge":"元戎精械弩",
"rewrite_zhuge_info":"锁定技,你于出牌阶段内使用【杀】无次数限制。",
rw_zhuge_skill:'诸葛连弩',
rw_zhuge_skill_info:'锁定技,你于出牌阶段内使用【杀】无次数限制。',
takaramono:"宝物",
"wolong_card":"卧龙",
"wolong_card_info":"对一名角色造成1点火焰伤害。若场上有存活的诸葛亮(火)则改为对至多两名角色各造成1点火焰伤害。",
"fengchu_card":"凤雏",
"fengchu_card_info":"横置至多三名角色。若场上有存活的庞统(火),则改为横置至多四名角色。",
"xuanjian_card":"玄剑",
"xuanjian_card_info":"令一名角色摸一张牌并回复1点体力。若场上有存活的徐庶(将/界)则改为令一名角色摸一张牌并回复1点体力然后你摸一张牌。",
"shuijing_card":"水镜",
"shuijing_card_info":"将一名角色装备区内的防具牌移动到另一名角色对应区域。若场上有存活的司马徽则改为将1名角色装备区内的1件装备移动到另1角色对应区域。","xinfu_pingcai":"评才",
"xinfu_pingcai_info":"出牌阶段限一次,你可以挑选一个宝物并擦拭掉其上面的灰尘。然后,你可以根据宝物类型执行对应的效果。",
"xinfu_pdgyingshi":"隐世",
"xinfu_pdgyingshi_info":"锁定技,你始终跳过准备阶段,判定阶段,结束阶段。你不能被选择为延时锦囊牌的目标。",
"pcaudio_wolong_card":"卧龙",
"pcaudio_wolong_card_info":"",
"pcaudio_fengchu_card":"凤雏",
"pcaudio_fengchu_card_info":"",
"pcaudio_shuijing_card":"水镜",
"pcaudio_shuijing_card_info":"",
"pcaudio_xuanjian_card":"玄剑",
"pcaudio_xuanjian_card_info":"",
"yizan_respond_sha":"翊赞",
"yizan_respond_sha_info":"",
"yizan_use":"翊赞",
yizan_use_backup:'翊赞',
"yizan_use_info":"你可以将两张牌(其中至少一张为基本牌)当做任意基本牌使用或打出。",
"yizan_respond_shan":"翊赞",
"yizan_respond_shan_info":"",
"xinfu_longyuan":"龙渊",
"xinfu_longyuan_info":"觉醒技准备阶段若你本局游戏内发动过〖翊赞〗的次数大于等于3则你修改〖翊赞〗。",
yizan_rewrite:'翊赞·改',
yizan_rewrite_info:'你可以将一张基本牌当做任意基本牌使用或打出。',
"yizan_count":"翊赞",
"yizan_count_info":"",
"xinfu_jingxie1":"精械",
"xinfu_jingxie1_info":"出牌阶段,你可以展示一张未强化过的【诸葛连弩】或标准包/军争包/SP包中的防具牌然后对其进行强化。当你处于濒死状态时你可以重铸一张防具牌然后将体力回复至1点。",
"xinfu_jingxie2":"精械",
"xinfu_jingxie2_info":"",
"xinfu_qiaosi":"巧思",
"xinfu_qiaosi_info":"出牌阶段限一次你可以投掷一枚六面骰子展示牌堆顶的X张牌并获得之。然后你选择一项1.交给一名其他角色X张牌。2.弃置X张牌。X为骰子的点数",
xin_xiahoudun:'手杀夏侯惇',
xinqingjian:'清俭',
xinqingjian2:'清俭',
xinqingjian_info:'每回合限一次。当你不因摸牌阶段的额定摸牌而获得牌时你可以将任意张牌扣置于武将牌上。回合结束时你将这些牌交给一名其他角色。若这些牌的数量大于1你摸一张牌。',
zhangyì:'张翼',
jiakui:'贾逵',
zhiyi:'执义',
zhiyi_info:'锁定技当你于一回合内使用或打出第一张基本牌时你选择一项1.摸一张牌。2.于此牌A若此牌是因响应牌B而使用或打出的则改为牌B的使用或打出流程结算完成后视为使用一张与此牌名称和属性相同的卡牌。',
rezhiyi:'执义',
rezhiyi_info:'锁定技一名角色的结束阶段开始时若你本回合内使用或打出过基本牌则你选择一项1.摸一张牌。2.视为使用一张本回合内使用或打出过的基本牌。',
zhongzuo:'忠佐',
zhongzuo_info:'一名角色的结束阶段开始时,若你于此回合内造成或受到过伤害,则你可以令一名角色摸两张牌。若该角色已受伤,则你摸一张牌。',
wanlan:'挽澜',
wanlan_info:'限定技当一名角色进入濒死状态时你可以弃置所有手牌并令其回复体力至1点然后对当前回合角色造成1点伤害。',
re_jikang:"手杀嵇康",
old_bulianshi:'手杀步练师',
old_caochun:'旧曹纯',
shenpei:'审配',
re_wangyun:'手杀王允',
relianji:'连计',
relianji_info:'出牌阶段限一次你可以选择两名其他角色。第一名角色随机使用牌堆中的一张武器牌然后这名角色视为对另一名角色随机使用一张下列的牌名的牌【决斗】、【火攻】、【南蛮入侵】、【万箭齐发】或普【杀】。然后若此牌造成伤害你获得X枚“连计”标记X为此次扣减的体力值点数。',
remoucheng:'谋逞',
remoucheng_info:'觉醒技当一名角色造成伤害后若你拥有的“连计”标记数大于2你加1点体力上限回复1点体力失去“连计”获得“矜功”。',
mobile_default:'常规',
mobile_others:'其他',
pss:'手势',
pss_paper:'布',
pss_scissor:'剪刀',
pss_stone:'石头',
pss_paper_info:'石头剪刀布时的一种手势。克制石头,但被剪刀克制。',
pss_scissor_info:'石头剪刀布时的一种手势。克制布,但被石头克制。',
pss_stone_info:'石头剪刀布时的一种手势。克制剪刀,但被布克制。',
db_atk:'进攻对策',
db_atk1:'全军出击',
db_atk2:'分兵围城',
db_def:'防御对策',
db_def1:'奇袭粮道',
db_def2:'开城诱敌',
shouye:'守邺',
shouye_info:'每回合限一次。当其他角色使用牌指定你为唯一目标时,你可以与其进行【对策】。若你赢,则你取消此牌的目标,且你于此牌结算完成后获得其对应的所有实体牌。',
liezhi:'烈直',
liezhi_info:'准备阶段,你可以依次弃置至多两名其他角色区域内的各一张牌。若你受到过伤害,则〖烈直〗于你的下个回合无效。',
xinzhanyi:'战意',
xinzhanyi_info:'出牌阶段限一次你可以弃置一张牌并失去1点体力然后根据你弃置的牌获得以下效果直到回合结束基本牌你可以将一张基本牌当作杀、酒或桃使用且你本回合第一次以此法使用的牌的回复值/伤害值+1锦囊牌摸三张牌且你使用的牌不能被【无懈可击】响应装备牌你使用【杀】指定目标角色后其弃置两张牌然后你获得其中的一张。',
xinzhanyi_basic_backup:'战意',
xinzhanyi_basic:'战意',
xinzhanyi_equip:'战意',
meiyong:'姝勇',
meiyong_info:'当你使用或打出【杀】时,你可以获得一名其他角色的一张牌,然后其摸一张牌。',
rexushen:'许身',
rexushen_info:'限定技出牌阶段你可以失去X点体力X为场上男性角色的数量。若你以此法进入了濒死状态则当你因一名角色而脱离此濒死状态后你可以令其获得技能〖武圣〗和〖当先〗。',
rezhennan:'镇南',
rezhennan_info:'当你成为其他角色使用的牌的目标后若此牌的目标数大于该角色的体力值则你可以弃置一张牌并对其造成1点伤害。',
hujinding:'胡金定',
huaizi:'怀子',
huaizi_info:'锁定技,你的手牌上限为你的体力上限。',
renshi:'仁释',
renshi_info:'锁定技当你受到【杀】的伤害时若你已受伤则你防止此伤害并获得此【杀】对应的所有实体牌然后减1点体力上限。',
wuyuan:'武缘',
wuyuan_info:'出牌阶段限一次你可将一张【杀】交给一名其他角色然后你回复1点体力其摸一张牌。若此【杀】为红色【杀】其回复1点体力属性【杀】其改为摸两张牌。',
re_weiwenzhugezhi:'手杀卫温诸葛直',
re_xugong:'手杀许贡',
re_zhanggong:'手杀张恭',
reqianxin:'遣信',
reqianxin_info:'出牌阶段限一次,你可将至多两张手牌随机交给等量的其他角色,称为「信」。这些角色的准备阶段开始时,若其手牌中有「信」,则其选择一项:令你摸两张牌,本回合手牌上限-2。',
rebiaozhao:"表召",
"rebiaozhao_info":"结束阶段你可以将一张牌置于武将牌上称为「表」。当有一张与「表」点数相同的牌进入弃牌堆时你将「表」置入弃牌堆并失去1点体力。准备阶段若你的武将牌上有「表」则你移去「表」并选择一名角色该角色回复1点体力并摸三张牌。",
"rebiaozhao2":"表召",
"rebiaozhao2_info":"",
"rebiaozhao3":"表召",
"rebiaozhao3_info":"",
refuhai:'浮海',
refuhai_info:'出牌阶段限一次你可令其他角色同时在「潮起」和「潮落」中选择一项并依次展示这些角色的选项。若从你下家开始选择了相同选项的角色数目大于1则你摸X张牌X为连续相同结果的数量。',
qiaosi:'巧思',
qiaosi_info:'出牌阶段限一次你可以表演「大键角色图」并根据表演结果获得相应的牌。然后你选择一项1.弃置X张牌。2.将X张牌交给一名其他角色。X为你以此法获得的牌数',
qiaosi_map:'大键角色图',
qiaosi_map_info:'<br><li>星野 梦美:锦囊牌*2<br><li>能美 库特莉亚芙卡:装备牌/【杀】/【酒】*1<br><li>友利 奈绪:【杀】/【酒】*1<br><li>神尾 观铃:【闪】/【桃】*1<br><li>伊吹 风子:锦囊牌/【闪】/【桃】*1<br><li>仲村 由理:装备牌*2<br><li>Illustration: うら;Twitter:@ura530',
qiaosi_c1:'<img src="'+lib.assetURL+'image/card/qiaosi_card1.png" width="60" height="60"> ',
//星野 梦美
qiaosi_c2:'<img src="'+lib.assetURL+'image/card/qiaosi_card2.png" width="60" height="60"> ',
//能美 库特莉亚芙卡
qiaosi_c3:'<img src="'+lib.assetURL+'image/card/qiaosi_card3.png" width="60" height="60"> ',
//友利 奈绪
qiaosi_c4:'<img src="'+lib.assetURL+'image/card/qiaosi_card4.png" width="60" height="60"> ',
//神尾 观铃
qiaosi_c5:'<img src="'+lib.assetURL+'image/card/qiaosi_card5.png" width="60" height="60"> ',
//伊吹 风子
qiaosi_c6:'<img src="'+lib.assetURL+'image/card/qiaosi_card6.png" width="60" height="60"> ',
//仲村 由理
mobile_sunben:'那个男人',
//孙笨
yangbiao:'杨彪',
zhaohan:'昭汉',
zhaohan_info:'锁定技你的第1-4个准备阶段开始时你加1点体力上限并回复1点体力你的第5-7个准备阶段开始时你减1点体力上限。',
rangjie:'让节',
rangjie_info:'当你受到1点伤害后你可以选择一项并摸一张牌获得牌堆里你选择的类型的一张牌或移动场上的一张牌。',
yizheng:'义争',
yizheng2:'义争',
yizheng_info:'出牌阶段限一次你可以和一名体力值不大于你的其他角色拼点。若你赢其跳过下个摸牌阶段。若你没赢你减1点体力上限。',
re_heqi:'手杀贺齐',
reqizhou:'绮胄',
reqizhou_info:'锁定技你根据装备区里牌的花色数获得以下技能1种或以上〖英姿〗2种或以上〖奇袭〗3种或以上〖旋风〗。',
reshanxi:'闪袭',
reshanxi2:'闪袭',
reshanxi_info:'出牌阶段开始时你可以弃置一张红色基本牌并选择一名有牌的其他角色将其的至多X张牌置于其的武将牌上X为你的体力值。回合结束时该角色获得这些牌。',
chendeng:'陈登',
zhouxuan:'周旋',
zhouxuan2:'周旋',
zhouxuan_info:'出牌阶段限一次,你可以弃置一张牌并指定一名角色,然后选择一个基本牌的名称或非基本牌的类型。其使用或打出下一张牌时,若此牌的名称或类型和你选择的相同,则你观看牌堆顶的三张牌,然后将这些牌分配给任意角色。',
fengji:'丰积',
fengji_info:'锁定技,回合结束时,你记录你的手牌数。准备阶段开始时,若你的手牌数不小于你记录的手牌数,则你摸两张牌且本回合手牌上限为体力上限。',
re_guanqiujian:'手杀毌丘俭',
rezhengrong:'征荣',
rehongju:'鸿举',
reqingce:'清侧',
reqingce_backup:'清侧',
rezhengrong_info:'当你于出牌阶段使用的指定了其他角色为目标的牌结算完成后,若此牌是你本局游戏内于出牌阶段使用的指定了其他角色为目标的第偶数张牌,则你可以将一名其他角色角色的随机一张牌置于你的武将牌上,称为「荣」。',
rehongju_info:'觉醒技准备阶段若你武将牌上「荣」的数量不小于3且有角色死亡则你摸等同于「荣」数量的牌。然后可以用任意数量的手牌交换等量的「荣」。你减1点体力上限并获得技能〖清侧〗。',
reqingce_info:'出牌阶段,你可以将一张「荣」置入弃牌堆,然后弃置场上的一张牌。',
re_pangtong:"手杀庞统",
dongcheng:'董承',
chengzhao:'承诏',
chengzhao_info:'一名角色的结束阶段,若你于本回合内获得了两张以上的牌,则你可以与一名其他角色拼点。若你赢,你视为对其使用一张无视防具的【杀】。',
yangyi:'杨仪',
duoduan:'度断',
duoduan_info:'每回合限一次,当你成为【杀】的目标后,你可以重铸一张牌。若如此做,你选择一项:①令使用者摸两张牌,且此【杀】无效。②令使用弃置一张牌,且你不能响应此【杀】。',
gongsun:'共损',
gongsun_info:'出牌阶段开始时,你可以弃置两张牌并指定一名其他角色。你选择一个基本牌或普通锦囊牌的牌名。直到你的下回合开始或你死亡,你与其不能使用或打出或弃置此名称的牌。',
gongsun_shadow:'共损',
xin_chengpu:'手杀程普',
relihuo:'疠火',
relihuo_damage:'疠火',
relihuo_baigei:'疠火',
relihuo_info:'当你使用普【杀】时,你可以将此杀改为火属性。若如此做,当你因执行此【杀】的效果而对横置角色造成伤害时,此伤害+1当你使用的火【杀】结算完成后你失去X点体力X为你因此【杀】造成的伤害总点数的一半且向下取整',
dengzhi:'邓芝',
jimeng:'急盟',
jimeng_info:'出牌阶段开始时你可以获得一名其他角色的一张牌然后交给该角色X张牌X为你当前体力值。',
shuaiyan:'率言',
shuaiyan_info:'弃牌阶段开始时若你的手牌数大于1则你可以展示所有手牌然后你令一名其他角色交给你一张牌。',
zhengxuan:'郑玄',
zhengjing:'整经',
zhengjing_info:'出牌阶段,你可以整理卡牌。然后,你将整理出的卡牌置于一名角色的武将牌上。该角色的准备阶段获得这些牌,且跳过此回合的判定和摸牌阶段。',
zhengjing2:'整经',
mobile_yijiang:'武将设计征集大赛',
yj_zhanghe:'☆张郃',
yj_zhangliao:'☆张辽',
yj_xuhuang:'☆徐晃',
yj_ganning:'☆甘宁',
xhzhiyan:'治严',
xhzhiyan_info:'出牌阶段,若你的手牌数不等于体力上限,则你可以将手牌摸至/弃至手牌上限,然后本回合不能对其他角色使用牌/可以将弃置的一张牌交给一名其他角色。',
zhilve:'知略',
zhilve_info:'锁定技准备阶段你选择一项1.移动场上装备区的一张牌并失去1点体力。2.移动场上判定区的一张牌并令本回合手牌上限-1。3.本回合摸牌阶段多摸一张牌且使用的第一张【杀】无距离限制且不计入次数限制。',
xinzhilve:'知略',
xinzhilve_backup:'知略',
xinzhilve_mark:'知略',
xinzhilve_info:'出牌阶段限一次你可以失去1点体力并选择一项1.移动场上的一张牌2.视为使用一张无距离限制且不计入次数限制的【杀】并摸一张牌。然后你本回合的手牌上限+1。',
xinxhzhiyan:'治严',
xinxhzhiyan_false:'治严',
xinxhzhiyan_info:'出牌阶段每项各限一次若你的手牌数大于体力值则你可以将X张手牌交给一名其他角色X为你的手牌数与体力值之差小于体力上限则你可以摸X张牌且本阶段内不能再对其他角色使用牌。X为你的手牌数与体力上限之差',
weifeng:'威风',
weifeng2:'威风',
weifeng3:'威风',
weifeng_info:'锁定技,当你于出牌阶段内使用第一张伤害性基本牌或普通锦囊牌后,你令此牌的一名没有“惧”的其他目标角色获得一枚名称为此牌牌名的“惧”。有“惧”的角色受到伤害时,其移去“惧”,然后若造成伤害的牌名称和“惧”:相同,此伤害+1不同你获得该角色的一张牌。准备阶段开始时或你死亡时你移去场上的所有“惧”。',
gnjinfan:'锦帆',
gnjinfan_gain:'锦帆',
gnjinfan_info:'弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。你可以如手牌般使用或打出“铃”。当有“铃”移动到处理区后,你从牌堆中获得与“铃”花色相同的一张牌。',
gnsheque:'射却',
gnsheque_info:'一名其他角色的准备阶段开始时,若其装备区内有牌,则你可以对其使用一张【杀】(无距离关系的限制且无视防具)。',
sp_sufei:'SP苏飞',
zhengjian:'诤荐',
zhengjian_draw:'诤荐',
zhengjian_mark:'诤荐',
zhengjian_info:'锁定技结束阶段你令一名角色获得一枚“诤”。回合开始时你令有“诤”的角色移去“诤”并摸X张牌X为其最后一次获得“诤”后使用和打出的牌数且至多不能超过其体力上限或5。',
gaoyuan:'告援',
gaoyuan_info:'当你成为【杀】的目标时,你可弃置一张牌将此【杀】转移给一名有“诤”且不是此【杀】使用者的其他角色。',
tongqu:'通渠',
tongqu_info:'游戏开始时你拥有一个“渠”标记。准备阶段你可以失去1点体力令一名没有“渠”标记的角色获得“渠”标记。有“渠”的角色摸牌阶段额外摸一张牌然后将一张牌交给其他有“渠”的角色或弃置。若以此法给出的是装备牌则使用之。当有“渠”的角色进入濒死状态时移除其“渠”标记。',
xinwanlan:'挽澜',
xinwanlan_info:'当一名角色受到会令其进入濒死状态的伤害时,你可以弃置装备区中的所有牌(至少一张) 防止此伤害。',
re_xusheng:'手杀徐盛',
re_dongzhuo:'手杀董卓',
rejiuchi:'酒池',
rejiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。锁定技,当你于回合内使用带有【酒】效果的【杀】造成伤害时,你令你的【崩坏】失效直到回合结束。',
furong:'傅肜',
xuewei:'血卫',
xuewei_info:'准备阶段,你可以选择一名其他角色(仅自己可见)。若如此做,直到你的下回合开始前,当其第一次受到伤害时,你防止此伤害,改为由你受到等量的伤害并对伤害来源造成等量同属性的伤害。',
liechi:'烈斥',
liechi_info:'锁定技,当你进入濒死状态时,伤害来源弃置一张牌。',
xin_liaohua:'手杀廖化',
redangxian:'当先',
redangxian_info:'锁定技,回合开始时,你从弃牌堆中获得一张【杀】并进行一个额外的出牌阶段。',
refuli:'伏枥',
refuli_info:'限定技当你处于濒死状态时你可以将体力值回复至X点X为势力数。然后若你的体力值为全场唯一最多你翻面。',
xin_caozhang:'手杀曹彰',
"rejiangchi":"将驰",
"rejiangchi_info":"出牌阶段开始时你可以选择一项1、摸一张牌若如此做你本阶段内不能使用【杀】。 2、弃置一张牌若如此做此阶段你使用【杀】无距离限制且你可以额外使用一张【杀】。",
rezhenxing:"镇行",
rezhenxing_info:"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的三张牌,然后你获得其中与其余牌花色均不相同的一张牌。",
xin_jianyong:'手杀简雍',
xinqiaoshui:'巧说',
xinqiaoshui_info:'出牌阶段限一次,你可以和一名其他角色拼点。若你赢,则你本阶段内使用的下一张基本牌或普通锦囊牌可以增加减少一个目标。若你没赢,你本阶段内不能使用锦囊牌。',
xinjyzongshi:'纵适',
xinjyzongshi_info:'当你拼点后,你可以观看牌堆顶的一张牌,然后选择一项:获得此牌,或获得两张拼点牌中点数较小的一张。',
dingyuan:'手杀丁原',
beizhu:'备诛',
beizhu_draw:'备诛',
beizhu_info:'出牌阶段限一次你可以观看一名其他角色的手牌。若其中没有【杀】你弃置其一张牌然后你可令其获得牌堆中的一张【杀】有【杀】其依次对你使用这些【杀】当你因此受到1点伤害后你摸一张牌。',
xin_zhuran:'手杀朱然',
mobiledanshou:'胆守',
mobiledanshou_info:'一名其他角色的结束阶段开始时若X为0你摸一张牌不等于0你可弃置X张牌并对其造成1点伤害X为其本回合内使用的目标包含你的牌的数量',
yanghuiyu:'羊徽瑜',
hongyi:'弘仪',
hongyi2:'弘仪',
hongyi_info:'出牌阶段限一次,你可以选择一名其他角色。你的下回合开始前,该角色造成伤害时进行判定,若结果为:黑色,此伤害-1。红色受到伤害的角色摸一张牌。',
requanfeng:'劝封',
requanfeng_gain:'劝封',
requanfeng_info:'限定技。①其他角色死亡时你可失去〖弘仪〗然后获得其武将牌上的所有非主公技非隐匿技和非Charlotte技加1点体力上限并回复1点体力。②当你处于濒死状态时你可以加2点体力上限然后回复4点体力。',
quanfeng:'劝封',
quanfeng_info:'锁定技限定技一名角色死亡时你选择获得其的一个技能主公技限定技觉醒技隐匿技带有Charlotte标签的技能除外然后加1点体力上限并回复1点体力。',
simashi:'司马师',
baiyi:'败移',
baiyi_info:'限定技,出牌阶段,若你已受伤,你可以交换两名其他角色的座次。',
jinglve:'景略',
jinglve2:'景略',
jinglve3:'景略',
jinglve_info:'出牌阶段限一次,若场上没有与你对应的「死士」牌,则你可以观看一名其他角色的手牌,将其中一张牌标记为「死士」。当其使用对应的实体牌中包含「死士」的牌时,你取消此牌的所有目标。当「死士」牌不因使用而进入弃牌堆,或其回合结束后,若「死士」牌仍在其区域内,则你获得此牌。',
shanli:'擅立',
shanli_info:'觉醒技准备阶段若你已发动过〖败移〗且对至少两名角色发动过〖景略〗则你减1点体力上限并选择一名角色。系统随机选择三个不为〖忘隙(仲村由理)〗的主公技,然后你选择其中一个技能,令其获得之。其将交互表情中的【拖鞋】和【酒杯】替换为【枷锁】和【玉玺】。',
re_lingtong:'手杀凌统',
re_liubiao:'手杀刘表',
hucheer:'胡车儿',
daoji:'盗戟',
daoji_info:'出牌阶段限一次你可以弃置一张非基本牌并选择一名装备区里有牌的其他角色你获得其装备区中的一张牌并使用之。若你以此法获得的牌是武器牌则你使用此牌后对其造成1点伤害。',
xin_hansui:'手杀韩遂',
xinniluan:'逆乱',
xinniluan_info:'其他角色的结束阶段,若其本回合对除其以外的角色使用过牌,则你可以对其使用一张【杀】。若以此法使用的【杀】造成伤害,则你弃置其一张牌。',
xiaoxi_hansui:'骁袭',
xiaoxi_hansui_info:'你可以将一张黑色牌当做【杀】使用或打出。',
xin_zhangfei:'手杀张飞',
liyong:'厉勇',
liyong2:'厉勇',
liyong3:'厉勇',
liyong_info:'锁定技,若你于出牌阶段使用的【杀】被【闪】抵消,本阶段你下一张【杀】不可被响应且伤害+1指定的目标本回合非锁定技失效当此【杀】造成伤害后若目标角色未死亡你失去1点体力。',
gongsunkang:'公孙康',
juliao:'据辽',
juliao_info:'锁定技,其他角色计算与你的距离始终+XX为场上势力数-1。',
taomie:'讨灭',
taomie1:'讨灭',
taomie2:'讨灭',
taomie3:'讨灭',
taomie4:'讨灭',
taomie_info:'当你受到伤害后或当你造成伤害后你可以令伤害来源或受伤角色获得“讨灭”标记如场上已有标记则转换给该角色当你对有“讨灭”标记的角色造成伤害时选择一项1. 此伤害+12. 你获得其区域内的一张牌并可将之交给另一名角色3. 依次执行前两项并于伤害结算后弃置其“讨灭”标记。',
xin_guohuai:'手杀郭淮',
mobilejingce:'精策',
mobilejingce_info:'结束阶段,若此回合因使用或打出而置入弃牌堆的牌的数量不小于你的体力值,则你可以摸两张牌。',
xin_panzhangmazhong:'手杀潘璋马忠',
xinduodao:'夺刀',
xinduodao_info:'当你受到伤害后,你可以获得伤害来源装备区里的武器牌。',
xinanjian:'暗箭',
xinanjian_info:'锁定技当你使用【杀】指定目标后若你不在目标角色攻击范围内你选择一项1. 令其无法响应此【杀】2. 其受到此【杀】造成的伤害+1。',
xin_fuhuanghou:'手杀伏皇后',
xinzhuikong:'惴恐',
xinzhuikong_info:'每轮限一次,其他角色的回合开始时,若其体力值不小于你,你可与其拼点。若你赢,其本回合无法使用牌指定除其以外的角色为目标;若你没赢,你获得其拼点的牌,然后其视为对你使用一张【杀】。',
xinqiuyuan:'求援',
xinqiuyuan_info:'当你成为【杀】的目标时,你可以令另一名其他角色交给你一张除【杀】以外的基本牌,否则其也成为此【杀】的目标。',
xin_gongsunzan:'手杀公孙瓒',
re_dengai:'手杀邓艾',
flappybird:'飞鸟',
flappybird_info:'出牌阶段你可游玩一局Flappy Bird。',
sp_wangcan:'SP王粲',
spqiai:'七哀',
spqiai_info:'出牌阶段限一次你可以将一张非基本牌交给一名其他角色。然后其选择一项①你回复1点体力。②你摸两张牌。',
spshanxi:'善檄',
spshanxi_suoming:'善檄',
spshanxi_info:'出牌阶段开始时你可令一名其他角色获得“檄”标记并清除场上已有的其他“檄”标记若有。有“檄”标记的角色回复体力时若其体力值大于0则其需选择一项①交给你两张牌。②失去1点体力。',
sp_chenzhen:'陈震',
shameng:'歃盟',
shameng_info:'出牌阶段限一次,你可弃置两张颜色相同的手牌并选择一名其他角色。其摸两张牌,然后你摸三张牌。',
sp_sunshao:'SP孙邵',
fubi:'辅弼',
fubi2:'辅弼',
fubi_info:'游戏开始时,你可选择一名其他角色。该角色的手牌上限于你死亡前+3。',
zuici:'罪辞',
zuici_info:'当你进入濒死状态时你可废除你的一个不为空的装备栏然后将体力值回复至1点。',
sp_xunchen:'SP荀谌',
jianzhan:'谏战',
jianzhan_info:'出牌阶段限一次你可选择一名其他角色A和其攻击范围内的另一名手牌数小于其的角色B。A选择一项①视为对B使用一张【杀】。②令你摸一张牌。',
duoji:'夺冀',
duoji_info:'限定技,出牌阶段,你可弃置两张手牌并选择一名装备区有牌的其他角色。你获得其装备区里的所有牌。',
re_handang:'手杀韩当',
luotong:'骆统',
qinzheng:'勤政',
qinzheng_info:'锁定技当你使用或打出牌时若你本局游戏内使用或打出过的牌数和为3的倍数你从牌堆中获得一张【杀】或【闪】为5的倍数你从牌堆中获得一张【桃】或【酒】为8的倍数你从牌堆中获得一张【决斗】或【无中生有】。',
sp_duyu:'SP杜预',
spwuku:'武库',
spwuku_info:'锁定技当有角色使用装备牌时若你的“武库”数小于3则你获得一个“武库”。',
spwuku_info_guozhan:'锁定技当有其他势力的角色使用装备牌时若你的“武库”数小于2则你获得一个“武库”。',
spsanchen:'三陈',
spsanchen_info:'觉醒技结束阶段若你的“武库”数大于2则你加1点体力上限并回复1点体力然后获得〖灭吴〗。',
spmiewu:'灭吴',
spmiewu2:'灭吴',
spmiewu_backup:'灭吴',
spmiewu_info:'每回合限一次。你可弃置一枚“武库”并将一张牌当做任意基本牌或锦囊牌使用,然后摸一张牌。',
sp_bianfuren:'卞夫人',
spwanwei:'挽危',
spwanwei_info:'每轮累计限一次。①出牌阶段你可选择一名其他角色。②当有其他角色处于濒死状态时。你可令该角色回复X+1点体力至少回复至1然后你失去X点体力。X为你的体力值',
spyuejian:'约俭',
spyuejian_info:'锁定技你的手牌上限基数等于你的体力上限。当你处于濒死状态时你可弃置两张牌然后回复1点体力。',
feiyi:'费祎',
reshengxi:'生息',
reshengxi_info:'结束阶段,若你于本回合内未造成过伤害,则你可摸两张牌。',
fyjianyu:'谏喻',
fyjianyu_info:'每轮限一次。出牌阶段你可选择两名角色令这些角色获得“喻”直到你的下回合开始。当一名有“喻”的角色A使用牌指定另一名有“喻”的角色B为目标时你令B摸一张牌。',
fyjianyux:'谏喻',
refubi:'辅弼',
refubi_info:'游戏开始时,你可令一名其他角色获得“辅弼”标记。有“辅弼”标记的角色的准备阶段开始时,你可选择一项:①令其本回合使用【杀】的次数上限+1。②令其本回合的手牌上限+3。',
rezuici:'罪辞',
rezuici_backup:'罪辞',
rezuici_info:'出牌阶段或当你处于濒死状态时你可以废除一个有牌的装备栏并回复2点体力然后可以移动“辅弼”标记。',
nanhualaoxian:'南华老仙',
yufeng:'御风',
yufeng2:'御风',
yufeng_info:'出牌阶段限一次你可以表演“御风飞行”。若表演失败则你摸X张牌。若表演成功则你可以选择至多X名其他角色获得“御风”效果然后摸X-Y张牌准备阶段开始时你进行判定。若结果为红色你跳过摸牌阶段黑色你跳过出牌阶段和弃牌阶段。X为你的得分。Y为你选择的角色数。',
tianshu:'天书',
tianshu_info:'出牌阶段限一次,若场上没有【太平要术】,则你可以弃置一张牌并选择一名角色。该角色获得并使用【太平要术】。',
wujing:'吴景',
heji:'合击',
heji_info:'当有角色使用的【决斗】或红色【杀】结算完成后若此牌对应的目标数为1则你可以对相同的目标使用一张【杀】或【决斗】无距离和次数限制。若你以此法使用的牌不为转化牌则你从牌堆中获得一张红色牌。',
sp_mifuren:'糜夫人',
spcunsi:'存嗣',
spcunsi2:'存嗣',
spcunsi_info:'出牌阶段限一次,你可将武将牌翻至背面并选择一名其他角色。其从牌堆或弃牌堆中获得一张【杀】,且下一张杀的伤害值基数+1。',
spguixiu:'闺秀',
spguixiu_info:'锁定技,当你受到伤害后,若你的武将牌背面朝上,则你将武将牌翻至正面。当你的武将牌从背面翻至背面时,你摸一张牌。',
sp_xinpi:'SP辛毗',
spyinju:'引裾',
spyinju2:'引裾',
spyinju_info:'出牌阶段限一次,你可令一名其他角色选择一项:①对你使用一张【杀】。②其下个回合的准备阶段开始时,跳过出牌阶段和弃牌阶段。',
spchijie:'持节',
spchijie_info:'每回合限一次。当你成为其他角色使用牌的唯一目标时你可判定。若结果大于6则你取消此牌的所有目标。',
reduoji:'夺冀',
reduoji_info:'出牌阶段限一次,你可将一张牌置于其他角色的武将牌上,称为“冀”。当有装备牌因使用而进入一名角色的装备区后,若该角色有“冀”且其为使用者,则你获得此装备牌,其移去一个“冀”并摸一张牌。一名其他角色的回合结束后,若其有“冀”,则你获得其的所有“冀”。',
mobile_standard:'手杀异构·标准包',
mobile_shenhua:'手杀异构·神话再临',
mobile_yijiang1:'手杀异构·一将成名',
mobile_sp:'手杀异构·SP',
mobile_shijizhi:'始计篇·智',
mobile_shijixin:'始计篇·信',
}
};
});