diff --git a/card/standard.js b/card/standard.js index e4741bdd3..86cf56a15 100644 --- a/card/standard.js +++ b/card/standard.js @@ -276,7 +276,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ value:[8,6.5,5,4], }, result:{ - target:function(player,target){ + target:2, + target_use:function(player,target){ // if(player==target&&player.hp<=0) return 2; if(player.hasSkillTag('nokeep',true,null,true)) return 2; var nd=player.needsToDiscard(); diff --git a/character/mobile.js b/character/mobile.js index 4f78ccfad..20ef6a56a 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -1,5673 +1,5698 @@ -'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"], - mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"], - mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi","re_guanqiujian","re_pangtong","old_liuzan","xin_chengpu","re_sunjian","re_xusheng"], - mobile_sunben:["re_sunben"], - }, - }, - character:{ - 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,['zhiyi']], - 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']], - old_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','xinfu_zhenxing']], - 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:{ - 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(){ - player.logSkill('rw_baiyin_skill'); - var next=game.createEvent('rw_baiyin_recover'); - event.next.remove(next); - event.getParent().after.push(next); - next.player=player; - next.setContent(function(){ - 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:{}, - skill:{ - //苏飞,新贾逵 - tongqu:{ - audio:'zhongzuo', - trigger:{ - global:['gameDrawAfter','damageEnd','phaseDrawBegin2'], - player:['enterGame','phaseUseBegin'], - }, - direct:true, - filter:function(event,player){ - if(event.name=='phaseDraw') return !event.numFixed&&event.player.hasMark('tongqu'); - if(event.name=='damage') return event.player.hasMark('tongqu'); - if(event.name=='phaseUse') 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.num++; - trigger.player.addTempSkill('tongqu2','phaseDrawAfter'); - event.finish(); - } - else if(trigger.name=='damage'){ - player.logSkill('tongqu',trigger.player); - trigger.player.removeMark('tongqu',1); - event.finish(); - } - else if(trigger.name=='phaseUse'){ - player.chooseTarget(get.prompt2('tongqu'),function(card,player,target){ - return !target.hasMark('tongqu'); - }).set('ai',function(target){ - 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.logSkill('tongqu',target); - target.addMark('tongqu',1); - } - }, - marktext:'渠', - intro:{content:'mark'}, - }, - tongqu2:{ - trigger:{player:'phaseDrawEnd'}, - forced:true, - silent:true, - filter:function(event,player){ - var bool=game.hasPlayer(function(current){ - return current!=player&¤t.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&¤t.hasMark('tongqu')&&get.attitude(player,current)>0&¤t.getUseValue(card)>player.getUseValue(card)&¤t.getUseValue(card)>player.getUseValue(card); - })) return 12; - if(game.hasPlayer(function(current){ - return current!=player&¤t.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(get.value(card,target)>get.value(card,player)) return 2*att; - return 1.2*att; - } - return 0; - }, - }); - 'step 1' - if(result.bool){ - if(result.targets.length) result.targets[0].gain(result.cards,player,'giveAuto'); - else player.discard(result.cards); - } - }, - }, - xinwanlan:{ - audio:'wanlan', - trigger:{global:'damageBegin4'}, - filter:function(event,player){ - return event.player.hp<=event.num&&player.countCards('he',function(card){ - return lib.filter.cardDiscardable(card,player)&&get.type(card)!='basic'; - })>=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,'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('he',function(card){ - return lib.filter.cardDiscardable(card,player)&&get.type(card)!='basic'; - })); - 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')) 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', - }, - 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&¤t!=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.modeSwapPlayer(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)+'正在整理经书...
'; - ui.create.dialog(str).videoId=id; - }; - var chooseButton=function(list){ - 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.addText('及时点击卡牌,但不要点到毒了!'); - event.switchToAuto=function(){ - event._result={ - bool:true, - links:event.finishedx.slice(0), - }; - event.dialog.close(); - game.resume(); - _status.imchoosing=false; - }; - 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='
叫你别点毒你非得点 这下翻车了吧'; - } - else { - if(lib.config.background_speak) game.playAudio('skill','zhengjing_finish'); - event.dialog.textPrompt.innerHTML='
整理经典结束!共整理出'+get.cnNumber(event.finishedx.length)+'份经典'; - } - 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;i0; - }) - }, - 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&¤t.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(){return -1}, - }); - '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;i0) str+='
' - 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;i0&&!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(!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' - trigger.player.chooseToDiscard('弃置一张牌令'+get.translation(player)+'不能闪避此【杀】,或点「取消」摸两张牌并令此【杀】对其无效').set('ai',function(card){ - if(_status.event.goon) return 6-get.value(card); - return 0; - }).set('goon',get.attitude(trigger.player,player)<0); - 'step 3' - if(result.bool){ - trigger.directHit.add(player); - } - else{ - 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;i0; - }).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=['请选择要交换的手牌和「荣」,或点「取消」','
「征荣」牌
',player.storage.rezhengrong,'
手牌区
',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=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;i0; - }, - 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&¤t.countCards('j')>0)||(att<0&¤t.countCards('e')>0)) return true; - return false; - })) return 1; - return 0; - }, - }, - }, - }, - fengji:{ - audio:2, - trigger:{player:'phaseBegin'}, - 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, - trigger:{player:'phaseJieshuBegin'}, - direct:true, - filter:function(event,player){ - return player.countCards('he')>0; - }, - content:function(){ - 'step 0' - player.chooseCardTarget({ - prompt:get.prompt2('zhouxuan'), - filterCard:lib.filter.cardDiscardable, - filterTarget:lib.filter.notMe, - position:'he', - ai1:function(card){ - return 6-get.value(card); - }, - ai2:function(target){ - var player=_status.event.player; - if(get.attitude(player,target)>0) return Math.max(1,target.hp)*target.countCards('h',function(card){ - return target.getUseValue(card)>0; - }); - return 0; - }, - }); - 'step 1' - if(result.bool){ - player.logSkill('zhouxuan',result.targets[0]); - player.discard(result.cards); - player.addSkill('zhouxuan2'); - result.targets[0].addTempSkill('zhouxuan_ai',{player:'phaseUseAfter'}); - player.storage.zhouxuan2={}; - player.storage.zhouxuan2.player=result.targets[0]; - var list=[]; - var basic=[]; - for(var i=0;i0&&(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;i0){ - 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;i3) 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;i3) 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){ - if(card.name=='sha'){ - return Infinity; - } - } - }, - }, - 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,'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); - } - }, - }, - 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.modeSwapPlayer(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.control) event.control.close(); - game.resume(); - },5000); - }; - var createDialog=function(player,id){ - if(player==game.me) return; - var str=get.translation(player)+'正在表演...
'; - for(var i=1;i<7;i++){ - str+=get.translation('qiaosi_c'+i); - if(i%3!=0) str+='  '; - if(i==3) str+='
'; - } - 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:[10,15], - qiaosi_c2:[20,35], - qiaosi_c3:[40,60], - qiaosi_c4:[40,60], - qiaosi_c5:[20,35], - qiaosi_c6:[10,15], - } - event.finishedx=[]; - event.str='请开始你的表演
qiaosi_c1% qiaosi_c2% qiaosi_c3%
qiaosi_c4%qiaosi_c5% qiaosi_c6%'; - event.dialog=ui.create.dialog(event.str,'forcebutton','hidden'); - event.dialog.addText('
  • 点击下方的按钮,可以增加按钮对应的角色的「表演完成度」。对于不同的角色,点击时增加的完成度不同,最终获得的牌也不同。一次表演最多只能完成3名角色的进度。',false); - event.dialog.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=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(); - event.control.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;i2; - })) 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:'选择'+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;i1) 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'); - } - }, - }, - "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;i0) 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&¤t.isDamaged()&&get.attitude(player,current)>2; - })) return 2; - if(get.nature(card)) return 1.5; - return 1; - }, - discard: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','xindangxian'], - 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&¤t.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('xindangxian'); - trigger.source.storage.xinfuli=true; - } - }, - }, - 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;i2){ - event.trigger('remoucheng_awaken'); - } - }, - }, - }, - }, - remoucheng:{ - derivation:'rejingong', - trigger:{ - player:'remoucheng_awaken' - }, - forced:true, - audio:'moucheng', - juexingji:true, - skillAnimation:true, - animationColor:'thunder', - content:function(){ - player.awakenSkill('remoucheng'); - player.removeSkill('relianji'); - player.addSkill('rejingong'); - player.gainMaxHp(); - player.recover(); - }, - }, - rejingong:{ - audio:'jingong', - enable:'phaseUse', - delay:0, - usable:1, - content:function(){ - 'step 0' - var list=get.inpile('trick').randomGets(2); - if(Math.random()<0.5){ - list.push('wy_meirenji'); - } - else{ - list.push('wy_xiaolicangdao'); - } - for(var i=0;i0; - })){ - if(name=='wy_meirenji'||name=='wy_xiaolicangdao') return Math.random()+0.5; - return Math.random(); - } - return 0; - }); - 'step 1' - if(result.bool){ - player.chooseUseTarget(result.links[0][2],true); - player.addTempSkill('jingong2'); - } - }, - ai:{ - order:2, - result:{ - player:function(player){ - if((player.hp<=2||player.needsToDiscard())&&!player.getStat('damage')) return 0; - return 1; - } - } - } - }, - 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;i0; - }).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]; - }, - 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'; - },'h'); - } - 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']); - } - 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('h',{type:'basic'})>=2) return 3; - }; - case 'sha': - if(button.link[3]=='fire') return 2.95; - else if(button.link[3]=='thunder') 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:'he', - 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('h',{type:'basic'})>=2){ - return 3.3; - } - return 3.1; - }, - save:true, - respondSha:true, - skillTagFilter:function (player,tag,arg){ - if(player.hasCard(function(card){ - return get.type(card)=='basic'; - },'he')){ - 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;i0) 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;i1){ - 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;i0&&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'].contains(current.name)||['sp_zhugeliang','re_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'); - for(var i=0;i1) 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;i1) 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;i1) 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;i1; - })) 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?'':'
    (点击屏幕可跳过等待)')); - 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, - 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', - priority:15, - content:function(){ - trigger.cancel(); - game.log(player,'跳过了',event.triggername=='phaseZhunbeiBefore'?'准备阶段':'结束阶段'); - }, - }, - xinfu_pdgyingshi2:{ - popup:false, - trigger:{ - player:"phaseJudgeBefore", - }, - forced:true, - priority:15, - 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_respond_sha":{ - audio:2, - enable:["chooseToRespond"], - 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; - }, - selectCard:function (){ - var player=_status.event.player; - if(player.storage.yizan) return 1; - return 2; - }, - position:"he", - viewAs:{ - name:"sha", - }, - complexCard:true, - viewAsFilter:function (player){ - if(!player.storage.yizan){ - if(player.countCards('h')<2) return false; - } - return player.hasCard(function(card){ - return get.type(card)=='basic'; - },'h'); - }, - prompt:function (){ - var player=_status.event.player; - var str=!player.storage.yizan?'两张牌(其中至少应有一张基本牌)':'一张基本牌'; - return '将'+str+'当做杀打出'; - }, - check:function (card){ - if(!ui.selected.cards.length&&get.type(card)=='basic') return 6; - return 5-get.value(card); - }, - ai:{ - skillTagFilter:function (player){ - if(!player.storage.yizan){ - if(player.countCards('he')<2) return false; - } - return player.hasCard(function(card){ - return get.type(card)=='basic'; - },'h'); - }, - respondSha:true, - }, - }, - "yizan_use":{ - init:function (player){ - if(!player.storage.yizan_use) player.storage.yizan_use=0; - if(!player.storage.yizan) player.storage.yizan=false; - }, - mark:true, - intro:{ - content:"已发动过#次", - }, - group:["yizan_respond_sha","yizan_respond_shan","yizan_count"], - enable:"chooseToUse", - filter:function (event,player){ - if(!player.storage.yizan&&player.countCards('he')<2) return false; - 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'; - },'h'); - } - 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']); - } - 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.storage.yizan&&player.countCards('h',{type:'basic'})>2) return 3; - }; - case 'sha': - if(button.link[3]=='fire') return 2.95; - else if(button.link[3]=='thunder') return 2.92; - else return 2.9; - } - } - return 0; - }, - backup:function (links,player){ - return { - 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:'he', - popname:true, - precontent:function(){ - player.logSkill('yizan_respond_shan'); - }, - } - }, - 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('h',{type:'basic'})>2){ - return 3.3; - } - return 3.1; - }, - save:true, - respondSha:true, - skillTagFilter:function (player,tag,arg){ - if(!player.storage.yizan&&player.countCards('he')<2) return false; - if(player.hasCard(function(card){ - return get.type(card)=='basic'; - },'he')){ - if(tag=='respondSha'){ - if(arg!='use') return false; - } - } - else{ - return false; - } - }, - result:{ - player:1, - }, - }, - }, - "yizan_respond_shan":{ - complexCard:true, - audio:2, - enable:["chooseToUse","chooseToRespond"], - 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; - }, - selectCard:function (){ - var player=_status.event.player; - if(player.storage.yizan) return 1; - return 2; - }, - position:"he", - viewAs:{ - name:"shan", - }, - viewAsFilter:function (player){ - if(!player.storage.yizan){ - if(player.countCards('he')<2) return false; - } - return player.hasCard(function(card){ - return get.type(card)=='basic'; - },'h'); - }, - prompt:function (){ - var player=_status.event.player; - var str=!player.storage.yizan?'两张牌(其中至少应有一张基本牌)':'一张基本牌'; - return '将'+str+'当做闪使用或打出'; - }, - check:function (card){ - if(!ui.selected.cards.length&&get.type(card)=='basic') return 6; - return 5-get.value(card); - }, - ai:{ - respondShan:true, - skillTagFilter:function (player){ - if(!player.storage.yizan){ - if(player.countCards('he')<2) return false; - } - return player.hasCard(function(card){ - return get.type(card)=='basic'; - },'h'); - }, - effect:{ - target:function (card,player,target,current){ - if(get.tag(card,'respondShan')&¤t<0) return 0.6 - }, - }, - basic:{ - useful:[7,2], - value:[7,2], - }, - }, - }, - "xinfu_longyuan":{ - audio:2, - forced:true, - unique:true, - juexingji:true, - trigger:{ - player:["useCardAfter","respondAfter"], - }, - init:function (player){ - player.storage.xinfu_longyuan=false; - }, - delay:1.2, - skillAnimation:true, - animationColor:'orange', - filter:function (event,player){ - if(player.storage.xinfu_longyuan) return false; - return player.storage.yizan_use>2; - }, - content:function (){ - player.awakenSkill('xinfu_longyuan'); - player.storage.yizan=true; - game.delay(1); - }, - }, - "yizan_count":{ - forced:true, - silent:true, - popup:false, - trigger:{ - player:["respond","useCard1"], - }, - filter:function (event,player){ - if(event.skill!='yizan_respond_sha'&&event.skill!='yizan_respond_shan'&&event.skill!='yizan_use_backup') return false; - return player.storage.yizan_use!=undefined; - }, - content:function (){ - player.storage.yizan_use++; - player.markSkill('yizan_use'); - }, - }, - xinfu_jingxie:{audio:2}, - "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;i0; - } - 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){ - if(player.hp>0) return false; - return player.countCards('he',function(card){ - 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, - 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, - 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;iplayer.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;i0; - }).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'}, - check:function(event,player){ - return player.countCards('h')-player.countCards('h',{type:'equip'})<=player.hp; - }, - 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&¤t.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')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&¤t.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;i2&&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;i0; - } - }); - 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&¤t.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;i0&¤t.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;i0&&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:'本回合手牌上限+#'}, - onunmark: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.countCards('h')!=player.maxHp&&!player.hasSkill('xinxhzhiyan_'+(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]; - }, - 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; - 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; - }, - delay:false, - discard:false, - lose:false, - content:function(){ - var bool=(player.countCards('h')>player.maxHp); - 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.maxHp) return 10; - return 0.5; - }, - result:{ - player:function(player,target){ - if(player.countCards('h')player.maxHp) return 1; - return 0; - }, - }, - }, - }, - 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.getStorage('gnjinfan').filter(function(card){ - 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.getStorage('gnjinfan').filter(function(card){ - list.add(get.suit(card)); - }); - player.getCards('h',function(card){ - list2.add(get.suit(card)); - }); - list2.removeArray(list); - return list2.length; - }()],function(card,player){ - var list=player.getStorage('gnjinfan').concat(ui.selected.cards); - return list.filter(function(cardx){ - return get.suit(card)==get.suit(cardx); - }).length==0; - }).set('ai',function(card){ - var player=_status.event.player; - if(player.hasUseTarget(card)&&!player.hasValueTarget(card)) return 0; - return 1+Math.random(); - }).set('complexCard',true); - 'step 1' - if(result.bool){ - player.logSkill('gnjinfan'); - player.markAuto('gnjinfan',result.cards); - player.lose(result.cards,'toStorage',ui.special,'visible'); - game.log(player,'将',result.cards,'放到了武将牌上'); - } - }, - group:['gnjinfan3','gnjinfan4','gnjinfan6','gnjinfan7'], - marktext:'铃', - intro:{ - content:'cards', - }, - }, - gnjinfan3:{ - trigger:{player:'chooseToRespondBegin'}, - filter:function(event,player){ - if(event.responded) return false; - var gnjinfan=player.getStorage('gnjinfan'); - if(!gnjinfan) return false; - for(var i=0;i0) return get.order(button.link); - return -1; - }, - backup:function(links,player){ - return { - audio:'gnjinfan', - filterCard:function(){return false}, - selectCard:-1, - viewAs:links[0], - onuse:function(result,player){ - var gnjinfan=player.getStorage('gnjinfan'); - if(gnjinfan){ - player.unmarkAuto('gnjinfan',[result.card]); - } - } - } - }, - prompt:function(links){ - return '选择'+get.translation(links)+'的目标'; - }, - }, - ai:{ - order:function(item,player){ - var event=_status.event; - if(event.type!='phase') return 4; - if(!player) return -1; - var gnjinfan=player.getStorage('gnjinfan'); - if(!gnjinfan) return -1; - var order=0; - for(var i=0;i0){ - var order2=get.order(gnjinfan[i]); - if(order2>order) order=order2 - } - } - return order+0.1; - }, - result:{ - player:function(player){ - if(_status.event.dying) return get.attitude(player,_status.event.dying); - return 1; - } - }, - useful:-1, - value:-1 - } - }, - gnjinfan6:{ - trigger:{global:'cardsGotoOrderingAfter'}, - forced:true, - popup:false, - filter:function(event,player){ - var evt=event.getParent(); - return evt&&evt.player==player&&evt.skill&&evt.skill.indexOf('gnjinfan')==0; - }, - content:function(){ - var suit=get.suit(trigger.cards[0]); - var card=get.cardPile2(function(cardx){ - return get.suit(cardx)==suit; - }); - if(card) player.gain(card,'gain2','log'); - }, - }, - gnjinfan7:{ - filter:function(){return false}, - hiddenCard:function(player,name){ - var gnjinfan=player.getStorage('gnjinfan'); - if(!gnjinfan) return false; - for(var i=0;i0&& - 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; - }, - }, - }, - }, - translate:{ - old_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为你以此法减少的体力上限)', - 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点火焰伤害。若场上有存活的诸葛亮(火),则改为对至多两名角色各造成两点火焰伤害。", - "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_info":"你可以将两张牌(其中至少一张为基本牌)当做任意基本牌使用或打出。", - "yizan_respond_shan":"翊赞", - "yizan_respond_shan_info":"", - "xinfu_longyuan":"龙渊", - "xinfu_longyuan_info":"觉醒技,当你使用或打出的基本牌结算完成后,若你本局游戏内发动过〖翊赞〗的次数大于等于3,则你将〖翊赞〗描述中的“两张牌”改为“一张牌”。", - "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)的使用或打出流程结算完成后,视为使用一张与此牌名称和属性相同的卡牌。', - 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点体力,失去“连计”,获得“矜功”。', - rejingong:'矜功', - rejingong_info:'每回合可以用三个随机锦囊中的一个,三个锦囊中有一个是专属锦囊,本回合未造成伤害会失去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:'
  • 星野 梦美:锦囊牌*2
  • 能美 库特莉亚芙卡:装备牌/【杀】/【酒】*1
  • 友利 奈绪:【杀】/【酒】*1
  • 神尾 观铃:【闪】/【桃】*1
  • 伊吹 风子:锦囊牌/【闪】/【桃】*1
  • 仲村 ゆり:装备牌*2
  • Illustration: うら;Twitter:@ura530', - qiaosi_c1:' ', - //星野 梦美 - qiaosi_c2:' ', - //能美 库特莉亚芙卡 - qiaosi_c3:' ', - //友利 奈绪 - qiaosi_c4:' ', - //神尾 观铃 - qiaosi_c5:' ', - //伊吹 风子 - qiaosi_c6:' ', - //仲村 ゆり - 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:'出牌阶段,你可以整理卡牌。然后,你将整理出的卡牌置于一名角色的武将牌上。该角色的准备阶段获得这些牌,w且 跳过此回合的判定和摸牌阶段。', - 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为你的手牌数与体力上限之差的绝对值)', - weifeng:'威风', - weifeng2:'威风', - weifeng3:'威风', - weifeng_info:'锁定技,当你于出牌阶段内使用第一张伤害性基本牌或普通锦囊牌后,你令此牌的一名没有“惧”的其他目标角色获得一枚名称为此牌牌名的“惧”。有“惧”的角色受到伤害时,其移去“惧”,然后若造成伤害的牌名称和“惧”:相同,此伤害+1;不同,你获得该角色的一张牌。准备阶段开始时或你死亡时,你移去场上的所有“惧”。', - gnjinfan:'锦帆', - gnjinfan3:'锦帆', - gnjinfan4:'锦帆', - gnjinfan6:'锦帆', - gnjinfan7:'锦帆', - gnjinfan4_backup:'锦帆', - gnjinfan_info:'弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。当你需要使用或打出一张手牌时,你可以使用或打出一张“铃”。当有“铃”移动到处理区后,你从牌堆中获得与此次移动到第一张“铃”花色相同的一张牌。', - gnsheque:'射却', - gnsheque_info:'一名其他角色的准备阶段开始时,若其装备区内有牌,则你可以对其使用一张【杀】(无距离关系的限制且无视防具)。', - sp_sufei:'SP苏飞', - zhengjian:'诤荐', - zhengjian_draw:'诤荐', - zhengjian_mark:'诤荐', - zhengjian_info:'锁定技,结束阶段,你令一名角色获得一枚“诤”。回合开始时,你令有“诤”的角色移去“诤”并摸X张牌(X为其最后一次获得“诤”后使用和打出的牌数,且至多不能超过其体力上限或5)。', - gaoyuan:'告援', - gaoyuan_info:'当你成为【杀】的目标时,你可弃置一张牌将此【杀】转移给一名有“诤”且不是此【杀】使用者的其他角色。', - tongqu:'通渠', - tongqu_info:'游戏开始时,你获得一个“渠”。出牌阶段开始时,你可令一名没有“渠”的角色获得一个“渠”。有“渠”的角色摸牌阶段,其多摸一张牌,然后其将一张牌交给一名有“渠”的其他角色或弃置一张牌。有“渠”的角色受到伤害后,其弃置“渠”', - xinwanlan:'挽澜', - xinwanlan_info:'当有角色受到伤害时,若伤害点数大于其体力值,则你可以弃置所有非基本牌(至少两张)并防止此伤害。', - re_xusheng:'手杀徐盛', - } - }; -}); +'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"], + mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"], + mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan","xin_xiahoudun","re_sp_zhugeliang","re_heqi","re_guanqiujian","re_pangtong","old_liuzan","xin_chengpu","re_sunjian","re_xusheng","re_dongzhuo"], + mobile_sunben:["re_sunben"], + }, + }, + character:{ + 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,['zhiyi']], + 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']], + old_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','xinfu_zhenxing']], + 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:{ + 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(){ + player.logSkill('rw_baiyin_skill'); + var next=game.createEvent('rw_baiyin_recover'); + event.next.remove(next); + event.getParent().after.push(next); + next.player=player; + next.setContent(function(){ + 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:{}, + skill:{ + 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:'zhongzuo', + trigger:{ + global:['gameDrawAfter','damageEnd','phaseDrawBegin2'], + player:['enterGame','phaseUseBegin'], + }, + direct:true, + filter:function(event,player){ + if(event.name=='phaseDraw') return !event.numFixed&&event.player.hasMark('tongqu'); + if(event.name=='damage') return event.player.hasMark('tongqu'); + if(event.name=='phaseUse') 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.num++; + trigger.player.addTempSkill('tongqu2','phaseDrawAfter'); + event.finish(); + } + else if(trigger.name=='damage'){ + player.logSkill('tongqu',trigger.player); + trigger.player.removeMark('tongqu',1); + event.finish(); + } + else if(trigger.name=='phaseUse'){ + player.chooseTarget(get.prompt2('tongqu'),function(card,player,target){ + return !target.hasMark('tongqu'); + }).set('ai',function(target){ + 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.logSkill('tongqu',target); + target.addMark('tongqu',1); + } + }, + marktext:'渠', + intro:{content:'mark'}, + }, + tongqu2:{ + trigger:{player:'phaseDrawEnd'}, + forced:true, + silent:true, + filter:function(event,player){ + var bool=game.hasPlayer(function(current){ + return current!=player&¤t.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&¤t.hasMark('tongqu')&&get.attitude(player,current)>0&¤t.getUseValue(card)>player.getUseValue(card)&¤t.getUseValue(card)>player.getUseValue(card); + })) return 12; + if(game.hasPlayer(function(current){ + return current!=player&¤t.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(get.value(card,target)>get.value(card,player)) return 2*att; + return 1.2*att; + } + return 0; + }, + }); + 'step 1' + if(result.bool){ + if(result.targets.length) result.targets[0].gain(result.cards,player,'giveAuto'); + else player.discard(result.cards); + } + }, + }, + xinwanlan:{ + audio:'wanlan', + trigger:{global:'damageBegin4'}, + filter:function(event,player){ + return event.player.hp<=event.num&&player.countCards('he',function(card){ + return lib.filter.cardDiscardable(card,player)&&get.type(card)!='basic'; + })>=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,'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('he',function(card){ + return lib.filter.cardDiscardable(card,player)&&get.type(card)!='basic'; + })); + 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')) 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', + }, + 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&¤t!=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.modeSwapPlayer(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)+'正在整理经书...
    '; + ui.create.dialog(str).videoId=id; + }; + var chooseButton=function(list){ + 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.addText('及时点击卡牌,但不要点到毒了!'); + event.switchToAuto=function(){ + event._result={ + bool:true, + links:event.finishedx.slice(0), + }; + event.dialog.close(); + game.resume(); + _status.imchoosing=false; + }; + 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='
    叫你别点毒你非得点 这下翻车了吧'; + } + else { + if(lib.config.background_speak) game.playAudio('skill','zhengjing_finish'); + event.dialog.textPrompt.innerHTML='
    整理经典结束!共整理出'+get.cnNumber(event.finishedx.length)+'份经典'; + } + 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;i0; + }) + }, + 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&¤t.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(){return -1}, + }); + '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;i0) str+='
    ' + 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;i0&&!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(!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' + trigger.player.chooseToDiscard('弃置一张牌令'+get.translation(player)+'不能闪避此【杀】,或点「取消」摸两张牌并令此【杀】对其无效').set('ai',function(card){ + if(_status.event.goon) return 6-get.value(card); + return 0; + }).set('goon',get.attitude(trigger.player,player)<0); + 'step 3' + if(result.bool){ + trigger.directHit.add(player); + } + else{ + 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;i0; + }).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=['请选择要交换的手牌和「荣」,或点「取消」','
    「征荣」牌
    ',player.storage.rezhengrong,'
    手牌区
    ',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=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;i0; + }, + 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&¤t.countCards('j')>0)||(att<0&¤t.countCards('e')>0)) return true; + return false; + })) return 1; + return 0; + }, + }, + }, + }, + fengji:{ + audio:2, + trigger:{player:'phaseBegin'}, + 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, + 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;i0) 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&¤t.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;i0){ + 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;i3) 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;i3) 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){ + if(card.name=='sha'){ + return Infinity; + } + } + }, + }, + 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,'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); + } + }, + }, + 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.modeSwapPlayer(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.control) event.control.close(); + game.resume(); + },5000); + }; + var createDialog=function(player,id){ + if(player==game.me) return; + var str=get.translation(player)+'正在表演...
    '; + for(var i=1;i<7;i++){ + str+=get.translation('qiaosi_c'+i); + if(i%3!=0) str+='  '; + if(i==3) str+='
    '; + } + 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:[10,15], + qiaosi_c2:[20,35], + qiaosi_c3:[40,60], + qiaosi_c4:[40,60], + qiaosi_c5:[20,35], + qiaosi_c6:[10,15], + } + event.finishedx=[]; + event.str='请开始你的表演
    qiaosi_c1% qiaosi_c2% qiaosi_c3%
    qiaosi_c4%qiaosi_c5% qiaosi_c6%'; + event.dialog=ui.create.dialog(event.str,'forcebutton','hidden'); + event.dialog.addText('
  • 点击下方的按钮,可以增加按钮对应的角色的「表演完成度」。对于不同的角色,点击时增加的完成度不同,最终获得的牌也不同。一次表演最多只能完成3名角色的进度。',false); + event.dialog.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=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(); + event.control.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;i2; + })) 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:'选择'+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;i1) 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'); + } + }, + }, + "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;i0) 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&¤t.isDamaged()&&get.attitude(player,current)>2; + })) return 2; + if(get.nature(card)) return 1.5; + return 1; + }, + discard: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','xindangxian'], + 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&¤t.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('xindangxian'); + trigger.source.storage.xinfuli=true; + } + }, + }, + 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;i2){ + event.trigger('remoucheng_awaken'); + } + }, + }, + }, + }, + remoucheng:{ + derivation:'rejingong', + trigger:{ + player:'remoucheng_awaken' + }, + forced:true, + audio:'moucheng', + juexingji:true, + skillAnimation:true, + animationColor:'thunder', + content:function(){ + player.awakenSkill('remoucheng'); + player.removeSkill('relianji'); + player.addSkill('rejingong'); + player.gainMaxHp(); + player.recover(); + }, + }, + rejingong:{ + audio:'jingong', + enable:'phaseUse', + delay:0, + usable:1, + content:function(){ + 'step 0' + var list=get.inpile('trick').randomGets(2); + if(Math.random()<0.5){ + list.push('wy_meirenji'); + } + else{ + list.push('wy_xiaolicangdao'); + } + for(var i=0;i0; + })){ + if(name=='wy_meirenji'||name=='wy_xiaolicangdao') return Math.random()+0.5; + return Math.random(); + } + return 0; + }); + 'step 1' + if(result.bool){ + player.chooseUseTarget(result.links[0][2],true); + player.addTempSkill('jingong2'); + } + }, + ai:{ + order:2, + result:{ + player:function(player){ + if((player.hp<=2||player.needsToDiscard())&&!player.getStat('damage')) return 0; + return 1; + } + } + } + }, + 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;i0; + }).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]; + }, + 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'; + },'h'); + } + 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']); + } + 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('h',{type:'basic'})>=2) return 3; + }; + case 'sha': + if(button.link[3]=='fire') return 2.95; + else if(button.link[3]=='thunder') 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:'he', + 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('h',{type:'basic'})>=2){ + return 3.3; + } + return 3.1; + }, + save:true, + respondSha:true, + skillTagFilter:function (player,tag,arg){ + if(player.hasCard(function(card){ + return get.type(card)=='basic'; + },'he')){ + 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;i0) 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;i1){ + 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;i0&&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'].contains(current.name)||['sp_zhugeliang','re_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'); + for(var i=0;i1) 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;i1) 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;i1) 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;i1; + })) 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?'':'
    (点击屏幕可跳过等待)')); + 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, + 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', + priority:15, + content:function(){ + trigger.cancel(); + game.log(player,'跳过了',event.triggername=='phaseZhunbeiBefore'?'准备阶段':'结束阶段'); + }, + }, + xinfu_pdgyingshi2:{ + popup:false, + trigger:{ + player:"phaseJudgeBefore", + }, + forced:true, + priority:15, + 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_respond_sha":{ + audio:2, + enable:["chooseToRespond"], + 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; + }, + selectCard:function (){ + var player=_status.event.player; + if(player.storage.yizan) return 1; + return 2; + }, + position:"he", + viewAs:{ + name:"sha", + }, + complexCard:true, + viewAsFilter:function (player){ + if(!player.storage.yizan){ + if(player.countCards('h')<2) return false; + } + return player.hasCard(function(card){ + return get.type(card)=='basic'; + },'h'); + }, + prompt:function (){ + var player=_status.event.player; + var str=!player.storage.yizan?'两张牌(其中至少应有一张基本牌)':'一张基本牌'; + return '将'+str+'当做杀打出'; + }, + check:function (card){ + if(!ui.selected.cards.length&&get.type(card)=='basic') return 6; + return 5-get.value(card); + }, + ai:{ + skillTagFilter:function (player){ + if(!player.storage.yizan){ + if(player.countCards('he')<2) return false; + } + return player.hasCard(function(card){ + return get.type(card)=='basic'; + },'h'); + }, + respondSha:true, + }, + }, + "yizan_use":{ + init:function (player){ + if(!player.storage.yizan_use) player.storage.yizan_use=0; + if(!player.storage.yizan) player.storage.yizan=false; + }, + mark:true, + intro:{ + content:"已发动过#次", + }, + group:["yizan_respond_sha","yizan_respond_shan","yizan_count"], + enable:"chooseToUse", + filter:function (event,player){ + if(!player.storage.yizan&&player.countCards('he')<2) return false; + 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'; + },'h'); + } + 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']); + } + 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.storage.yizan&&player.countCards('h',{type:'basic'})>2) return 3; + }; + case 'sha': + if(button.link[3]=='fire') return 2.95; + else if(button.link[3]=='thunder') return 2.92; + else return 2.9; + } + } + return 0; + }, + backup:function (links,player){ + return { + 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:'he', + popname:true, + precontent:function(){ + player.logSkill('yizan_respond_shan'); + }, + } + }, + 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('h',{type:'basic'})>2){ + return 3.3; + } + return 3.1; + }, + save:true, + respondSha:true, + skillTagFilter:function (player,tag,arg){ + if(!player.storage.yizan&&player.countCards('he')<2) return false; + if(player.hasCard(function(card){ + return get.type(card)=='basic'; + },'he')){ + if(tag=='respondSha'){ + if(arg!='use') return false; + } + } + else{ + return false; + } + }, + result:{ + player:1, + }, + }, + }, + "yizan_respond_shan":{ + complexCard:true, + audio:2, + enable:["chooseToUse","chooseToRespond"], + 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; + }, + selectCard:function (){ + var player=_status.event.player; + if(player.storage.yizan) return 1; + return 2; + }, + position:"he", + viewAs:{ + name:"shan", + }, + viewAsFilter:function (player){ + if(!player.storage.yizan){ + if(player.countCards('he')<2) return false; + } + return player.hasCard(function(card){ + return get.type(card)=='basic'; + },'h'); + }, + prompt:function (){ + var player=_status.event.player; + var str=!player.storage.yizan?'两张牌(其中至少应有一张基本牌)':'一张基本牌'; + return '将'+str+'当做闪使用或打出'; + }, + check:function (card){ + if(!ui.selected.cards.length&&get.type(card)=='basic') return 6; + return 5-get.value(card); + }, + ai:{ + respondShan:true, + skillTagFilter:function (player){ + if(!player.storage.yizan){ + if(player.countCards('he')<2) return false; + } + return player.hasCard(function(card){ + return get.type(card)=='basic'; + },'h'); + }, + effect:{ + target:function (card,player,target,current){ + if(get.tag(card,'respondShan')&¤t<0) return 0.6 + }, + }, + basic:{ + useful:[7,2], + value:[7,2], + }, + }, + }, + "xinfu_longyuan":{ + audio:2, + forced:true, + unique:true, + juexingji:true, + trigger:{ + player:["useCardAfter","respondAfter"], + }, + init:function (player){ + player.storage.xinfu_longyuan=false; + }, + delay:1.2, + skillAnimation:true, + animationColor:'orange', + filter:function (event,player){ + if(player.storage.xinfu_longyuan) return false; + return player.storage.yizan_use>2; + }, + content:function (){ + player.awakenSkill('xinfu_longyuan'); + player.storage.yizan=true; + game.delay(1); + }, + }, + "yizan_count":{ + forced:true, + silent:true, + popup:false, + trigger:{ + player:["respond","useCard1"], + }, + filter:function (event,player){ + if(event.skill!='yizan_respond_sha'&&event.skill!='yizan_respond_shan'&&event.skill!='yizan_use_backup') return false; + return player.storage.yizan_use!=undefined; + }, + content:function (){ + player.storage.yizan_use++; + player.markSkill('yizan_use'); + }, + }, + xinfu_jingxie:{audio:2}, + "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;i0; + } + 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){ + if(player.hp>0) return false; + return player.countCards('he',function(card){ + 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, + 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, + 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;iplayer.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;i0; + }).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'}, + check:function(event,player){ + return player.countCards('h')-player.countCards('h',{type:'equip'})<=player.hp; + }, + 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&¤t.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')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&¤t.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;i2&&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;i0; + } + }); + 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&¤t.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;i0&¤t.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;i0&&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:'本回合手牌上限+#'}, + onunmark: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.countCards('h')!=player.maxHp&&!player.hasSkill('xinxhzhiyan_'+(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]; + }, + 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; + 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; + }, + delay:false, + discard:false, + lose:false, + content:function(){ + var bool=(player.countCards('h')>player.maxHp); + 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.maxHp) return 10; + return 0.5; + }, + result:{ + player:function(player,target){ + if(player.countCards('h')player.maxHp) return 1; + return 0; + }, + }, + }, + }, + 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.getStorage('gnjinfan').filter(function(card){ + 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.getStorage('gnjinfan').filter(function(card){ + list.add(get.suit(card)); + }); + player.getCards('h',function(card){ + list2.add(get.suit(card)); + }); + list2.removeArray(list); + return list2.length; + }()],function(card,player){ + var list=player.getStorage('gnjinfan').concat(ui.selected.cards); + return list.filter(function(cardx){ + return get.suit(card)==get.suit(cardx); + }).length==0; + }).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'); + player.markAuto('gnjinfan',result.cards); + player.lose(result.cards,'toStorage',ui.special,'visible'); + game.log(player,'将',result.cards,'放到了武将牌上'); + } + }, + group:['gnjinfan3','gnjinfan4','gnjinfan6','gnjinfan7'], + marktext:'铃', + intro:{ + content:'cards', + }, + }, + gnjinfan3:{ + trigger:{player:'chooseToRespondBegin'}, + filter:function(event,player){ + if(event.responded) return false; + var gnjinfan=player.getStorage('gnjinfan'); + if(!gnjinfan) return false; + for(var i=0;i0) return get.order(button.link); + return -1; + }, + backup:function(links,player){ + return { + audio:'gnjinfan', + filterCard:function(){return false}, + selectCard:-1, + viewAs:links[0], + onuse:function(result,player){ + var gnjinfan=player.getStorage('gnjinfan'); + if(gnjinfan){ + player.unmarkAuto('gnjinfan',[result.card]); + } + } + } + }, + prompt:function(links){ + return '选择'+get.translation(links)+'的目标'; + }, + }, + ai:{ + order:function(item,player){ + var event=_status.event; + if(event.type!='phase') return 4; + if(!player) return -1; + var gnjinfan=player.getStorage('gnjinfan'); + if(!gnjinfan) return -1; + var order=0; + for(var i=0;i0){ + var order2=get.order(gnjinfan[i]); + if(order2>order) order=order2 + } + } + return order+0.1; + }, + result:{ + player:function(player){ + if(_status.event.dying) return get.attitude(player,_status.event.dying); + return 1; + } + }, + useful:-1, + value:-1 + } + }, + gnjinfan6:{ + trigger:{global:'cardsGotoOrderingAfter'}, + forced:true, + popup:false, + filter:function(event,player){ + var evt=event.getParent(); + return evt&&evt.player==player&&player!=_status.currentPhase&&evt.skill&&evt.skill.indexOf('gnjinfan')==0; + }, + content:function(){ + 'step 0' + event.cards=trigger.cards.slice(0); + 'step 1' + var suit=get.suit(cards[0]); + cards.shift(); + var card=get.cardPile2(function(cardx){ + return get.suit(cardx)==suit; + }); + if(card) player.gain(card,'gain2','log'); + if(cards.length) event.redo(); + 'step 2' + game.delayx(); + }, + }, + gnjinfan7:{ + filter:function(){return false}, + hiddenCard:function(player,name){ + var gnjinfan=player.getStorage('gnjinfan'); + if(!gnjinfan) return false; + for(var i=0;i0&& + 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; + }, + }, + }, + }, + translate:{ + old_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为你以此法减少的体力上限)', + 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点火焰伤害。若场上有存活的诸葛亮(火),则改为对至多两名角色各造成两点火焰伤害。", + "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_info":"你可以将两张牌(其中至少一张为基本牌)当做任意基本牌使用或打出。", + "yizan_respond_shan":"翊赞", + "yizan_respond_shan_info":"", + "xinfu_longyuan":"龙渊", + "xinfu_longyuan_info":"觉醒技,当你使用或打出的基本牌结算完成后,若你本局游戏内发动过〖翊赞〗的次数大于等于3,则你将〖翊赞〗描述中的“两张牌”改为“一张牌”。", + "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)的使用或打出流程结算完成后,视为使用一张与此牌名称和属性相同的卡牌。', + 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点体力,失去“连计”,获得“矜功”。', + rejingong:'矜功', + rejingong_info:'每回合可以用三个随机锦囊中的一个,三个锦囊中有一个是专属锦囊,本回合未造成伤害会失去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:'
  • 星野 梦美:锦囊牌*2
  • 能美 库特莉亚芙卡:装备牌/【杀】/【酒】*1
  • 友利 奈绪:【杀】/【酒】*1
  • 神尾 观铃:【闪】/【桃】*1
  • 伊吹 风子:锦囊牌/【闪】/【桃】*1
  • 仲村 ゆり:装备牌*2
  • Illustration: うら;Twitter:@ura530', + qiaosi_c1:' ', + //星野 梦美 + qiaosi_c2:' ', + //能美 库特莉亚芙卡 + qiaosi_c3:' ', + //友利 奈绪 + qiaosi_c4:' ', + //神尾 观铃 + qiaosi_c5:' ', + //伊吹 风子 + qiaosi_c6:' ', + //仲村 ゆり + 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:'出牌阶段,你可以整理卡牌。然后,你将整理出的卡牌置于一名角色的武将牌上。该角色的准备阶段获得这些牌,w且 跳过此回合的判定和摸牌阶段。', + 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为你的手牌数与体力上限之差的绝对值)', + weifeng:'威风', + weifeng2:'威风', + weifeng3:'威风', + weifeng_info:'锁定技,当你于出牌阶段内使用第一张伤害性基本牌或普通锦囊牌后,你令此牌的一名没有“惧”的其他目标角色获得一枚名称为此牌牌名的“惧”。有“惧”的角色受到伤害时,其移去“惧”,然后若造成伤害的牌名称和“惧”:相同,此伤害+1;不同,你获得该角色的一张牌。准备阶段开始时或你死亡时,你移去场上的所有“惧”。', + gnjinfan:'锦帆', + gnjinfan3:'锦帆', + gnjinfan4:'锦帆', + gnjinfan6:'锦帆', + gnjinfan7:'锦帆', + gnjinfan4_backup:'锦帆', + gnjinfan_info:'弃牌阶段开始时,你可将任意张手牌置于武将牌上,称为“铃”(每种花色的“铃”限一张)。当你需要使用或打出一张手牌时,你可以使用或打出一张“铃”。你的回合外,当有“铃”移动到处理区后,你从牌堆中获得与此次移动到第一张“铃”花色相同的一张牌。', + gnsheque:'射却', + gnsheque_info:'一名其他角色的准备阶段开始时,若其装备区内有牌,则你可以对其使用一张【杀】(无距离关系的限制且无视防具)。', + sp_sufei:'SP苏飞', + zhengjian:'诤荐', + zhengjian_draw:'诤荐', + zhengjian_mark:'诤荐', + zhengjian_info:'锁定技,结束阶段,你令一名角色获得一枚“诤”。回合开始时,你令有“诤”的角色移去“诤”并摸X张牌(X为其最后一次获得“诤”后使用和打出的牌数,且至多不能超过其体力上限或5)。', + gaoyuan:'告援', + gaoyuan_info:'当你成为【杀】的目标时,你可弃置一张牌将此【杀】转移给一名有“诤”且不是此【杀】使用者的其他角色。', + tongqu:'通渠', + tongqu_info:'游戏开始时,你获得一个“渠”。出牌阶段开始时,你可令一名没有“渠”的角色获得一个“渠”。有“渠”的角色摸牌阶段,其多摸一张牌,然后其将一张牌交给一名有“渠”的其他角色或弃置一张牌。有“渠”的角色受到伤害后,其弃置“渠”', + xinwanlan:'挽澜', + xinwanlan_info:'当有角色受到伤害时,若伤害点数大于其体力值,则你可以弃置所有非基本牌(至少两张)并防止此伤害。', + re_xusheng:'手杀徐盛', + re_dongzhuo:'手杀董卓', + rejiuchi:'酒池', + rejiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。锁定技,当你于回合内使用带有【酒】效果的【杀】造成伤害时,你令你的【崩坏】失效直到回合结束。', + } + }; +}); diff --git a/character/refresh.js b/character/refresh.js index 1ece5156d..23baa076f 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -1,7087 +1,7232 @@ -'use strict'; -game.import('character',function(lib,game,ui,get,ai,_status){ - return { - name:'refresh', - characterSort:{ - refresh:{ - refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_gongsunzan","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"], - refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'], - refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"], - refresh_lin:['re_zhurong','re_menghuo','re_dongzhuo','ol_sunjian','re_caopi','re_xuhuang'], - refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'], - refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_lingtong','re_masu','xin_xusheng','xin_fazheng'], - refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang'], - refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran'], - refresh_yijiang4:['re_sunluban','re_wuyi'], - refresh_yijiang5:['re_zhangyi','re_quancong'], - }, - }, - connect:true, - character:{ - xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']], - wangyi:['female','wei',3,['zhenlie','miji']], - old_madai:['male','shu',4,['mashu','qianxi']], - guanzhang:['male','shu',4,['fuhun']], - xin_xusheng:['male','wu',4,['decadepojun']], - re_taishici:['male','wu',4,['tianyi','hanzhan']], - re_masu:['male','shu',3,['resanyao','rezhiman']], - re_sunluban:['female','wu',3,['rechanhui','rejiaojin']],re_zhonghui:['male','wei',4,['requanji','zili']], - re_handang:['male','wu',4,['regongji','jiefan']], - re_lingtong:['male','wu',4,['rexuanfeng']], - yujin_yujin:['male','wei',4,['rejieyue']], - re_caozhang:['male','wei',4,['new_jiangchi']], - re_chengpu:['male','wu',4,['lihuo','rechunlao']], - re_quancong:['male','wu',4,['xinyaoming']], - re_liaohua:['male','shu',4,['xindangxian','xinfuli']], - re_guohuai:['male','wei',4,['xinjingce']], - re_wuyi:['male','shu',4,['xinbenxi']], - re_zhuran:['male','wu',4,['xindanshou']], - re_caozhi:['male','wei',3,['reluoying','rejiushi','chengzhang']], - ol_pangtong:['male','shu',3,['xinlianhuan','olniepan'],[]], - re_zhangyi:['male','shu',4,['rewurong','shizhi']], - re_wuguotai:['female','wu',3,['reganlu','buyi']], - re_gaoshun:['male','qun',4,['rexianzhen','rejinjiu']], - re_caocao:['male','wei',4,['new_rejianxiong','hujia'],['zhu']], - re_simayi:['male','wei',3,['refankui','reguicai']], - re_guojia:['male','wei',3,['tiandu','new_reyiji']], - re_lidian:['male','wei',3,['xunxun','wangxi']], - re_zhangliao:['male','wei',4,['new_retuxi']], - re_xuzhu:['male','wei',4,['new_reluoyi']], - re_xiahoudun:['male','wei',4,['reganglie','new_qingjian']], - re_zhangfei:['male','shu',4,['olpaoxiao','oltishen']], - re_zhaoyun:['male','shu',4,['ollongdan','olyajiao']], - re_guanyu:['male','shu',4,['new_rewusheng','new_yijue']], - re_machao:['male','shu',4,['mashu','retieji']], - re_xushu:['male','shu',4,['zhuhai','qianxin']], - re_zhouyu:['male','wu',3,['reyingzi','refanjian']], - re_lvmeng:['male','wu',4,['keji','qinxue','botu']], - re_ganning:['male','wu',4,['qixi','fenwei']], - re_luxun:['male','wu',3,['reqianxun','relianying']], - re_daqiao:['female','wu',3,['reguose','liuli']], - re_huanggai:['male','wu',4,['rekurou','zhaxiang']], - re_lvbu:['male','qun',5,['wushuang','new_liyu']], - re_gongsunzan:['male','qun',4,['qiaomeng','reyicong']], - re_huatuo:['male','qun',3,['jijiu','new_reqingnang']], - re_liubei:['male','shu',4,['rerende','jijiang'],['zhu']], - re_diaochan:['female','qun',3,['lijian','rebiyue']], - re_huangyueying:['female','shu',3,['rejizhi','reqicai']], - re_sunquan:['male','wu',4,['rezhiheng','rejiuyuan'],['zhu']], - re_sunshangxiang:['female','wu',3,['xiaoji','rejieyin']], - re_zhenji:['female','wei',3,['reluoshen','reqingguo']], - re_zhugeliang:['male','shu',3,['reguanxing','kongcheng']], - re_huaxiong:["male","qun",6,["reyaowu"]], - - re_zhangjiao:['male','qun',3,['xinleiji','xinguidao','huangtian'],['zhu']], - xin_yuji:['male','qun',3,['reguhuo']], - re_zuoci:['male','qun',3,['rehuashen','rexinsheng']], - - ol_xiahouyuan:['male','wei',4,['xinshensu','shebian']], - caoren:['male','wei',4,['xinjushou','xinjiewei']], - re_huangzhong:['male','shu',4,['xinliegong']], - ol_weiyan:['male','shu',4,['xinkuanggu','reqimou']], - ol_xiaoqiao:['female','wu',3,['retianxiang','rehongyan']], - zhoutai:['male','wu',4,['buqu','fenji']], - ol_pangde:['male','qun',4,['mashu','rejianchu']], - re_xuhuang:['male','wei',4,['duanliang','jiezi']], - ol_sp_zhugeliang:["male","shu",3,["bazhen","rehuoji","rekanpo","cangzhuo"],[]], - re_xunyu:["male","wei",3,["quhu","rejieming"],[]], - re_dianwei:["male","wei",4,["reqiangxi"],[]], - re_yanwen:["male","qun",4,["reshuangxiong"],[]], - ol_yuanshao:['male','qun',4,['olluanji','olxueyi'],['zhu']], - re_zhurong:['female','shu',4,['juxiang','relieren']], - re_menghuo:['male','shu',4,['huoshou','rezaiqi']], - re_dongzhuo:['male','qun',8,['rejiuchi','roulin','benghuai','baonue'],['zhu']], - ol_sunjian:['male','wu',4,['gzyinghun','wulie']], - re_caopi:['male','wei',3,['rexingshang','refangzhu','songwei'],['zhu']], - re_dengai:['male','wei',4,['retuntian','zaoxian']], - re_jiangwei:['male','shu',4,['retiaoxin','zhiji']], - re_caiwenji:['female','qun',3,['rebeige','duanchang']], - ol_liushan:['male','shu',3,['xiangle','olfangquan','olruoyu'],['zhu']], - re_zhangzhang:['male','wu',3,['rezhijian','guzheng']], - - re_sunce:['male','wu',4,['jiang','olhunzi','olzhiba'],['zhu']], - re_jianyong:['male','shu',3,['reqiaoshui','jyzongshi']], - }, - characterIntro:{ - re_gongsunzan:'群雄之一。出身贵族,因母地位卑贱,只当了郡中小吏。他貌美,声音洪亮,机智善辩。后随卢植于缑氏山中读书,粗通经传。', - re_lidian:'字曼成,曹操麾下将领。李典深明大义,不与人争功,崇尚学习与高贵儒雅,尊重博学之士,在军中被称为长者。李典有长者之风,官至破虏将军,三十六岁去世。魏文帝曹丕继位后追谥号为愍侯。', - sunben:' ', - }, - characterFilter:{ - re_zuoci:function(mode){ - return mode!='guozhan'; - } - }, - perfectPair:{ - sunben:['zhouyu','taishici','daqiao'], - }, - skill:{ - decadepojun:{ - shaRelated:true, - audio:2, - trigger:{player:'useCardToPlayered'}, - direct:true, - filter:function(event,player){ - return event.card.name=='sha'&&event.target.hp>0&&event.target.countCards('he')>0; - }, - content:function(){ - 'step 0' - var next=player.choosePlayerCard(trigger.target,'he',[1,Math.min(trigger.target.hp,trigger.target.countCards('he'))],get.prompt('decadepojun',trigger.target)); - next.set('ai',function(button){ - if(!_status.event.goon) return 0; - var val=get.value(button.link); - if(button.link==_status.event.target.getEquip(2)) return 2*(val+3); - return val; - }); - next.set('goon',get.attitude(player,trigger.target)<=0); - next.set('forceAuto',true); - 'step 1' - if(result.bool){ - event.cards=result.cards; - var target=trigger.target; - player.logSkill('decadepojun',trigger.target); - target.addSkill('decadepojun2'); - target.markAuto('decadepojun2',result.cards); - target.lose(result.cards,ui.special,'toStorage'); - game.log(target,'失去了'+get.cnNumber(result.cards.length)+'张牌');; - } - else event.finish(); - 'step 2' - var discard=false,draw=false; - for(var i of cards){ - var type=get.type2(i); - if(type=='equip') discard=true; - if(type=='trick') draw=true; - } - if(discard){ - event.equip=true; - player.chooseButton(['选择一张牌置入弃牌堆',cards],true).set('ai',function(button){ - return get.value(button.link,_status.event.getTrigger().target); - }); - } - if(draw) event.draw=true; - 'step 3' - if(event.equip&&result.links&&result.links.length){ - trigger.target.unmarkAuto('decadepojun2',result.links); - trigger.target.$throw(result.links,1000); - game.log(player,'将',result.links,'置入了弃牌堆'); - game.cardsDiscard(result.links); - if(!event.draw) game.delayx(); - } - if(event.draw) player.draw(); - }, - ai:{ - unequip_ai:true, - skillTagFilter:function(player,tag,arg){ - if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true; - return false; - } - }, - }, - decadepojun2:{ - 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.decadepojun2&&player.storage.decadepojun2.length>0; - }, - content:function(){ - game.log(player,'收回了'+get.cnNumber(player.gain(player.storage.decadepojun2,'draw','fromStorage').cards.length)+'张〖破军〗牌'); - player.storage.decadepojun2.length=0; - player.removeSkill('decadepojun2'); - }, - intro:{ - onunmark:'throw', - content:'cardCount', - }, - }, - hanzhan:{ - audio:2, - trigger:{ - global:'chooseToCompareBegin', - }, - filter:function(event,player){ - if(player==event.player) return true; - if(event.targets) return event.targets.contains(player); - return player==event.target; - }, - logTarget:function(event,player){ - if(player!=event.player) return event.player; - return event.targets||event.target; - }, - check:function(trigger,player){ - var num=0; - var targets=player==trigger.player?(trigger.targets?trigger.targets.slice(0):[trigger.target]):[trigger.player]; - while(targets.length){ - var target=targets.shift(); - if(target.getCards('h').length>1) num-=get.attitude(player,target); - } - return num>0; - }, - content:function(){ - var targets=player==trigger.player?(trigger.targets?trigger.targets.slice(0):[trigger.target]):[trigger.player]; - if(!trigger.fixedResult) trigger.fixedResult={}; - while(targets.length){ - var target=targets.shift(); - var hs=target.getCards('h'); - if(hs.length) trigger.fixedResult[target.playerid]=hs.randomGet(); - } - }, - }, - rejianchu:{ - shaRelated:true, - audio:2, - audioname:['re_pangde'], - trigger:{player:'useCardToPlayered'}, - filter:function(event,player){ - return event.card.name=='sha'&&event.target.countDiscardableCards(player,'he')>0; - }, - direct:true, - content:function(){ - 'step 0' - player.discardPlayerCard(trigger.target,get.prompt('rejianchu',trigger.target)).set('ai',function(button){ - if(!_status.event.att) return 0; - if(get.position(button.link)=='e'){ - if(get.subtype(button.link)=='equip2') return 2*get.value(button.link); - return get.value(button.link); - } - return 1; - }).set('logSkill',['rejianchu',trigger.target]).set('att',get.attitude(player,trigger.target)<=0); - 'step 1' - if(result.bool&&result.links&&result.links.length){ - if(get.type(result.links[0],null,result.links[0].original=='h'?player:false)!='basic'){ - trigger.getParent().directHit.add(trigger.target); - player.addTempSkill('rejianchu2'); - player.addMark('rejianchu2',1,false); - } - else if(trigger.cards){ - var list=[]; - for(var i=0;i0; - }, - content:function(){ - 'step 0' - player.chooseTarget([1,player.hp],get.prompt2('wulie'),lib.filter.notMe).set('ai',function(){return 0}); - 'step 1' - if(result.bool){ - var targets=result.targets.sortBySeat(); - player.logSkill('wulie',targets); - player.awakenSkill('wulie'); - player.loseHp(targets.length); - while(targets.length){ - targets[0].addSkill('wulie2'); - targets.shift().addMark('wulie2'); - } - } - }, - }, - wulie2:{ - marktext:'烈', - intro:{name2:'烈',content:'mark'}, - trigger:{player:'damageBegin3'}, - forced:true, - content:function(){ - trigger.cancel(); - player.removeMark('wulie2',1); - if(!player.storage.wulie2) player.removeSkill('wulie2'); - }, - }, - regongji:{ - mod:{ - attackFrom:function(player){ - if(player.getEquip(3)||player.getEquip(4)||player.getEquip(6)) return -Infinity - }, - }, - enable:'phaseUse', - usable:1, - position:'he', - filter:function(event,player){ - return player.countCards('he',function(card){ - return lib.skill.regongji.filterCard(card,player); - })>0; - }, - filterCard:function(card,player){ - return get.type(card,player)!='basic'; - }, - filterTarget:function(card,player,target){ - return target!=player&&target.countDiscardableCards(player,'he')>0; - }, - check:function(card){ - return 4.5-get.value(card); - }, - content:function(){ - if(target.countDiscardableCards(player,'he')>0) player.discardPlayerCard(target,'he',true); - }, - ai:{ - order:5, - result:{ - target:function(player,target){ - var att=get.attitude(player,target); - var nh=target.countCards('h'); - if(att>0){ - if(target.getEquip('baiyin')&&target.isDamaged()&& - get.recoverEffect(target,player,player)>0){ - if(target.hp==1&&!target.hujia) return 1.6; - if(target.hp==2) return 0.01; - return 0; - } - } - var es=target.getCards('e'); - var noe=(es.length==0||target.hasSkillTag('noe')); - var noe2=(es.length==1&&es[0].name!='tengjia'&&get.value(es[0])<=0); - var noh=(nh==0||target.hasSkillTag('noh')); - if(noh&&(noe||noe2)) return 0; - if(att<=0&&!target.countCards('he')) return 1.5; - return -1.5; - }, - }, - tag:{ - loseCard:1, - discard:1 - }, - }, - }, - requanji:{ - audio:2, - trigger:{player:['damageEnd','phaseUseEnd']}, - frequent:true, - locked:false, - notemp:true, - init:function(player){ - if(!player.storage.quanji) player.storage.quanji=[]; - }, - filter:function(event,player){ - if(event.name=='phaseUse') return player.countCards('h')>player.hp; - return event.num>0; - }, - content:function(){ - "step 0" - event.count=trigger.num||1; - "step 1" - event.count--; - player.draw(); - "step 2" - if(player.countCards('h')){ - player.chooseCard('将一张手牌置于武将牌上作为“权”',true); - } - else{ - event.goto(4); - } - "step 3" - if(result.cards&&result.cards.length){ - player.lose(result.cards,ui.special,'toStorage'); - player.storage.quanji=player.storage.quanji.concat(result.cards); - player.syncStorage('quanji'); - player.markSkill('quanji'); - game.log(player,'将',result.cards,'置于武将牌上作为“权”'); - } - "step 4" - if(event.count>0){ - player.chooseBool(get.prompt2('requanji')).set('frequentSkill','requanji'); - } - else event.finish(); - "step 5" - if(result.bool){ - player.logSkill('requanji'); - event.goto(1); - } - }, - mod:{ - maxHandcard:function(player,num){ - return num+player.storage.quanji.length; - } - }, - ai:{ - maixie:true, - maixie_hp:true, - threaten:0.8, - effect:{ - target:function(card,player,target){ - if(get.tag(card,'damage')){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; - if(!target.hasFriend()) return; - if(target.hp>=4) return [0.5,get.tag(card,'damage')*2]; - if(!target.hasSkill('paiyi')&&target.hp>1) return [0.5,get.tag(card,'damage')*1.5]; - if(target.hp==3) return [0.5,get.tag(card,'damage')*1.5]; - if(target.hp==2) return [1,get.tag(card,'damage')*0.5]; - } - } - } - } - }, - ollongdan:{ - audio:'longdan_sha', - audioname:['re_zhaoyun'], - enable:['chooseToUse','chooseToRespond'], - prompt:'将杀当做闪,或将闪当做杀,或将桃当做酒,或将酒当做桃使用或打出', - viewAs:function(cards,player){ - var name=false; - switch(get.name(cards[0],player)){ - case 'sha':name='shan';break; - case 'shan':name='sha';break; - case 'tao':name='jiu';break; - case 'jiu':name='tao';break; - } - if(name) return {name:name}; - return null; - }, - check:function(card){ - var player=_status.event.player; - if(_status.event.type=='phase'){ - var max=0; - var name2; - var list=['sha','tao','jiu']; - var map={sha:'shan',tao:'jiu',jiu:'tao'} - for(var i=0;i(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){ - var temp=get.order({name:name}); - if(temp>max){ - max=temp; - name2=map[name]; - } - } - } - if(name2==get.name(card,player)) return 1; - return 0; - } - return 1; - }, - filterCard:function(card,player,event){ - event=event||_status.event; - var filter=event._backup.filterCard; - var name=get.name(card,player); - if(name=='sha'&&filter({name:'shan',cards:[card]},player,event)) return true; - if(name=='shan'&&filter({name:'sha',cards:[card]},player,event)) return true; - if(name=='tao'&&filter({name:'jiu',cards:[card]},player,event)) return true; - if(name=='jiu'&&filter({name:'tao',cards:[card]},player,event)) return true; - return false; - }, - filter:function(event,player){ - var filter=event.filterCard; - if(filter({name:'sha'},player,event)&&player.countCards('h','shan')) return true; - if(filter({name:'shan'},player,event)&&player.countCards('h','sha')) return true; - if(filter({name:'tao'},player,event)&&player.countCards('h','jiu')) return true; - if(filter({name:'jiu'},player,event)&&player.countCards('h','tao')) return true; - return false; - }, - ai:{ - respondSha:true, - respondShan:true, - save:true, - skillTagFilter:function(player,tag){ - var name; - switch(tag){ - case 'respondSha':name='shan';break; - case 'respondShan':name='sha';break; - case 'save':name='jiu';break; - } - if(!player.countCards('h',name)) return false; - }, - order:function(item,player){ - if(player&&_status.event.type=='phase'){ - var max=0; - var list=['sha','tao','jiu']; - var map={sha:'shan',tao:'jiu',jiu:'tao'} - for(var i=0;i(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){ - var temp=get.order({name:name}); - if(temp>max) max=temp; - } - } - if(max>0) max+=0.3; - return max; - } - return 4; - }, - }, - }, - olyajiao:{ - audio:'reyajiao', - trigger:{player:'loseAfter'}, - frequent:true, - filter:function(event,player){ - return player!=_status.currentPhase&&event.hs&&event.hs.length>0&&['useCard','respond'].contains(event.getParent().name); - }, - content:function(){ - "step 0" - event.card=get.cards()[0]; - game.cardsGotoOrdering(event.card); - event.videoId=lib.status.videoId++; - var judgestr=get.translation(player)+'发动了【涯角】'; - game.addVideo('judge1',player,[get.cardInfo(event.card),judgestr,event.videoId]); - game.broadcastAll(function(player,card,str,id,cardid){ - var event; - if(game.online){ - event={}; - } - else{ - event=_status.event; - } - if(game.chess){ - event.node=card.copy('thrown','center',ui.arena).animate('start'); - } - else{ - event.node=player.$throwordered(card.copy(),true); - } - if(lib.cardOL) lib.cardOL[cardid]=event.node; - event.node.cardid=cardid; - event.node.classList.add('thrownhighlight'); - ui.arena.classList.add('thrownhighlight'); - event.dialog=ui.create.dialog(str); - event.dialog.classList.add('center'); - event.dialog.videoId=id; - },player,event.card,judgestr,event.videoId,get.id()); - - game.log(player,'展示了',event.card); - game.delay(2); - if(get.type(event.card,'trick')==get.type(trigger.getParent().card,'trick')){ - player.chooseTarget('选择获得此牌的角色').set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(_status.event.du){ - if(target.hasSkillTag('nodu')) return 0; - return -att; - } - if(att>0){ - return att+Math.max(0,5-target.countCards('h')); - } - return att; - }).set('du',event.card.name=='du'); - } - else{ - event.disbool=true; - player.chooseTarget('是否弃置攻击范围内包含你的一名角色区域内的一张牌?',function(card,player,target){ - return target.inRange(player)&&target.countDiscardableCards(player,'hej')>0; - }).set('ai',function(target){ - var player=_status.event.player; - return get.effect(target,{name:'guohe'},player,player); - }); - } - "step 1" - if(event.disbool){ - if(result.bool){ - player.line(result.targets[0],'green'); - player.discardPlayerCard(result.targets[0],'hej',true); - } - event.dialog.close(); - game.addVideo('judge2',null,event.videoId); - game.addVideo('deletenode',player,[get.cardInfo(event.node)]); - event.node.delete(); - game.broadcast(function(id,card){ - var dialog=get.idDialog(id); - if(dialog){ - dialog.close(); - } - if(card.clone){ - card.clone.delete(); - } - ui.arena.classList.remove('thrownhighlight'); - },event.videoId,event.card); - ui.arena.classList.remove('thrownhighlight'); - } - else if(result.targets){ - event.dialog.close(); - game.addVideo('judge2',null,event.videoId); - player.line(result.targets,'green'); - result.targets[0].gain(event.card,'log'); - event.node.moveDelete(result.targets[0]); - game.addVideo('gain2',result.targets[0],[get.cardInfo(event.node)]); - ui.arena.classList.remove('thrownhighlight'); - game.broadcast(function(card,target,id){ - var dialog=get.idDialog(id); - if(dialog){ - dialog.close(); - } - ui.arena.classList.remove('thrownhighlight'); - if(card.clone){ - card.clone.moveDelete(target); - } - },event.card,result.targets[0],event.videoId); - } - else{ - game.addVideo('deletenode',player,[get.cardInfo(event.node)]); - event.node.delete(); - game.broadcast(function(id){ - var dialog=get.idDialog(id); - if(dialog){ - dialog.close(); - } - if(card.clone){ - card.clone.delete(); - } - ui.arena.classList.remove('thrownhighlight'); - },event.videoId,event.card); - event.dialog.close(); - game.addVideo('judge2',null,event.videoId); - ui.arena.classList.remove('thrownhighlight'); - } - }, - ai:{ - effect:{ - target:function(card,player){ - if(get.tag(card,'respond')&&player.countCards('h')>1) return [1,0.2]; - } - } - } - }, - olpaoxiao:{ - audio:"paoxiao", - audioname:['re_zhangfei','guanzhang','xiahouba'], - trigger:{player:'shaMiss'}, - forced:true, - content:function(){ - player.addTempSkill('olpaoxiao2'); - player.addMark('olpaoxiao2',1,false); - }, - mod:{ - cardUsable:function (card,player,num){ - if(card.name=='sha') return Infinity; - }, - }, - }, - olpaoxiao2:{ - trigger:{source:'damageBegin1'}, - forced:true, - audio:'paoxiao', - audioname:['re_zhangfei','guanzhang','xiahouba'], - filter:function(event,player){ - return event.card&&event.card.name=='sha'&&player.countMark('olpaoxiao2')>0; - }, - onremove:true, - content:function(){ - trigger.num+=player.countMark('olpaoxiao2'); - player.removeSkill('olpaoxiao2'); - }, - intro:{content:'本回合内下一次使用【杀】造成伤害时令伤害值+#'}, - }, - oltishen:{ - audio:'retishen', - unique:true, - mark:true, - skillAnimation:true, - animationColor:'soil', - limited:true, - trigger:{player:'phaseZhunbeiBegin'}, - filter:function(event,player){ - if(player.storage.oltishen) return false; - return player.isDamaged(); - }, - check:function(event,player){ - if(player.hp<=2||player.getDamagedHp()>2) return true; - if(player.getDamagedHp()<=1) return false; - return player.getDamagedHp()0; - })) return false; - if(event.name=='phaseDiscard'){ - var cards=[]; - player.getHistory('lose',function(evt){ - if(evt&&evt.getParent('phaseDiscard')==event&&evt.hs) cards.addArray(evt.hs); - }); - return cards.length>1; - } - else return event.es&&event.es.length>0; - }, - content:function(){ - 'step 0' - var list=['弃置至多两名其他角色的合计两张牌']; - if(lib.skill.rexuanfeng.canMoveCard(player)) list.push('将一名其他角色装备区内的一张牌移动到另一名角色的装备区内'); - player.chooseControl('cancel2').set('choiceList',list).set('prompt',get.prompt('rexuanfeng')).set('ai',function(){ - if(lib.skill.rexuanfeng.canMoveCard(player,true)) return 1; - return 0; - }); - 'step 1' - if(result.control!='cancel2'){ - player.logSkill('rexuanfeng'); - if(result.index==1) event.goto(5); - else event.count=2; - } - else event.finish(); - 'step 2' - player.chooseTarget('弃置一名其他角色的一张牌',function(card,player,target){ - if(player==target) return false; - return target.countDiscardableCards(player,'he'); - }).set('ai',function(target){ - return -get.attitude(_status.event.player,target); - }); - 'step 3' - if(result.bool){ - player.line(result.targets[0],'green'); - player.discardPlayerCard(result.targets[0],'he',true); - event.count--; - } - else event.finish(); - 'step 4' - if(event.count) event.goto(2); - else event.finish(); - 'step 5' - var next=player.chooseTarget(2,function(card,player,target){ - if(player==target) return false; - if(ui.selected.targets.length){ - var from=ui.selected.targets[0]; - if(target.isMin()) return false; - var es=from.getCards('e'); - for(var i=0;i0; - } - }); - 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(target.countCards('e',function(card){ - return get.value(card,target)<0&&game.hasPlayer(function(current){ - return current!=player&¤t!=target&&get.attitude(player,current)<0&¤t.isEmpty(get.subtype(card)) - }); - })>0) return 9; - } - else if(att<0){ - if(game.hasPlayer(function(current){ - if(current!=target&¤t!=player&&get.attitude(player,current)>0){ - var es=target.getCards('e'); - for(var i=0;i0&¤t.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;iget.attitude(player,targets1)){ - if(get.value(button.link,targets0)<0) return 10; - return 0; - } - else{ - return get.equipValue(button.link); - } - },targets[0]).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){ - var targets1=_status.event.targets1; - return targets1.isEmpty(get.subtype(button.link)); - }); - } - else{ - event.finish(); - } - 'step 9' - if(result.bool&&result.links.length){ - var link=result.links[0]; - event.targets[1].equip(link); - event.targets[0].$give(link,event.targets[1]) - game.delay(); - event.result={bool:true}; - } - }, - canMoveCard:function(player,withatt){ - return game.hasPlayer(function(current){ - if(player==current) return false; - var att=get.sgn(get.attitude(player,current)); - if(!withatt||att!=0){ - var es=current.getCards('e'); - for(var i=0;i0; - }, - content:function(){ - 'step 0' - player.chooseCardTarget({ - prompt:get.prompt2('rejieyue'), - filterCard:true, - position:'he', - filterTarget:lib.filter.notMe, - 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&&get.attitude(player,current)>0&¤t.getUseValue(card)>player.getUseValue(card)&¤t.getUseValue(card)>player.getUseValue(card); - })) return 12; - if(game.hasPlayer(function(current){ - return current!=player&&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(get.value(card,target)>get.value(card,player)) return 2*att; - return 1.2*att; - } - return -att*Math.min(4,target.countCards('he'))/4; - }, - }); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - event.target=target; - player.logSkill('rejieyue',target); - target.gain(result.cards,player,'giveAuto'); - } - else event.finish(); - 'step 2' - var num=0; - if(target.countCards('h')) num++; - if(target.countCards('e')) num++; - if(num>0){ - var next=target.chooseCard('he',num,'选择保留每个区域的各一张牌,然后弃置其余的牌。或点取消,令'+get.translation(player)+'摸三张牌',function(card){ - for(var i=0;i=0); - next.set('maxNum',num); - next.set('ai',function(card){ - if(_status.event.goon) return -1; - var num=_status.event.maxNum; - if(ui.selected.cards.length>=num-1){ - var val=get.value(player.getCards('he',function(cardx){ - return cardx!=card&&!ui.selected.cards.contains(cardx); - })); - if(val>=14) return 0; - } - return get.value(card); - }); - } - else event._result={bool:false}; - 'step 3' - if(!result.bool) player.draw(3); - else { - var cards=target.getCards('he'); - cards.removeArray(result.cards); - if(cards.length) target.discard(cards); - } - }, - ai:{ - threaten:1.3, - expose:0.2, - }, - }, - rechunlao:{ - trigger:{player:'phaseJieshuBegin'}, - direct:true, - audio:2, - filter:function(event,player){ - return player.countCards('h')>0&&(_status.connectMode||player.countCards('h','sha')>0)&&!player.storage.rechunlao.length; - }, - init:function(player){ - if(!player.storage.rechunlao) player.storage.rechunlao=[]; - }, - intro:{ - content:'cards', - onunmark:function(storage,player){ - if(storage&&storage.length){ - player.$throw(storage,1000); - game.cardsDiscard(storage); - game.log(storage,'被置入了弃牌堆'); - storage.length=0; - } - }, - }, - content:function(){ - 'step 0' - player.chooseCard([1,Math.max(1,player.countCards('h','sha'))],get.prompt('rechunlao'),{name:'sha'}).set('ai',function(){ - return 1; - }); - 'step 1' - if(result.bool){ - player.logSkill('rechunlao'); - player.storage.rechunlao=player.storage.rechunlao.concat(result.cards); - player.syncStorage('rechunlao'); - player.markSkill('rechunlao'); - player.lose(result.cards,ui.special,'toStorage'); - player.$give(result.cards,player,false); - } - }, - ai:{ - effect:{ - player:function(card,player,target){ - if(_status.currentPhase!=player) return; - if(card.name=='sha'&&!player.needsToDiscard()&& - !player.storage.rechunlao.length&&target.hp>1){ - return 'zeroplayertarget'; - } - } - }, - threaten:1.4 - }, - group:'rechunlao2' - }, - rechunlao2:{ - enable:'chooseToUse', - filter:function(event,player){ - return event.type=='dying'&&event.dying&&event.dying.hp<=0&&player.storage.rechunlao.length>0; - }, - filterTarget:function(card,player,target){ - return target==_status.event.dying; - }, - direct:true, - delay:false, - selectTarget:-1, - content:function(){ - "step 0" - player.chooseCardButton(get.translation('rechunlao'),player.storage.rechunlao,true); - "step 1" - if(result.bool){ - player.logSkill('rechunlao'); - player.$throw(result.links); - player.storage.rechunlao.remove(result.links[0]); - game.cardsDiscard(result.links[0]); - player.syncStorage('rechunlao') - event.type='dying'; - target.useCard({name:'jiu',isCard:true},target); - if(!player.storage.rechunlao.length){ - player.unmarkSkill('rechunlao'); - } - else{ - player.markSkill('rechunlao'); - } - var nature=get.nature(result.links[0]); - if(nature=='fire') player.recover(); - if(nature=='thunder') player.draw(2); - } - }, - ai:{ - order:6, - skillTagFilter:function(player){ - return player.storage.rechunlao.length>0; - }, - save:true, - result:{ - target:3 - }, - threaten:1.6 - }, - }, - reluoying:{ - audio:2, - group:['reluoying_discard','reluoying_judge'], - subfrequent:['judge'], - subSkill:{ - discard:{ - audio:'reluoying', - trigger:{global:'loseAfter'}, - filter:function(event,player){ - if(event.type!='discard') return false; - if(event.player==player) return false; - for(var i=0;i=7) return true; - player.getAllHistory('damage',function(evt){ - num+=evt.num; - }); - return num>7; - }, - content:function(){ - player.markSkill('rejiushi_mark'); - player.awakenSkill('chengzhang'); - player.storage.chengzhang=true; - player.recover(); - player.draw(); - }, - }, - rejiushi:{ - audio:2, - group:['rejiushi1','rejiushi2','rejiushi3','rejiushi_gain'], - subfrequent:['gain'], - subSkill:{ - gain:{ - audio:'rejiushi', - trigger:{player:'turnOverAfter'}, - frequent:true, - filter:function(event,player){ - return player.storage.chengzhang==true; - }, - prompt:'是否发动【酒诗】,获得牌堆中的一张锦囊牌?', - content:function(){ - var card=get.cardPile2(function(card){ - return get.type2(card)=='trick'; - }); - if(card) player.gain(card,'gain2','log'); - }, - }, - }, - }, - rejiushi1:{ - audio:'rejiushi', - enable:'chooseToUse', - filter:function(event,player){ - if(player.classList.contains('turnedover')) return false; - return event.filterCard({name:'jiu',isCard:true},player,event); - }, - content:function(){ - if(_status.event.getParent(2).type=='dying'){ - event.dying=player; - event.type='dying'; - } - player.turnOver(); - player.useCard({name:'jiu',isCard:true},player); - }, - ai:{ - save:true, - skillTagFilter:function(player){ - return player.hp<=0&&!player.isTurnedOver(); - }, - order:5, - result:{ - player:function(player){ - if(_status.event.parent.name=='phaseUse'){ - if(player.countCards('h','jiu')>0) return 0; - if(player.getEquip('zhuge')&&player.countCards('h','sha')>1) return 0; - if(!player.countCards('h','sha')) return 0; - var targets=[]; - var target; - var players=game.filterPlayer(); - for(var i=0;inum){ - target=targets[i]; - num=num2; - } - } - if(num<=0) return 0; - var e2=target.getEquip(2); - if(e2){ - if(e2.name=='tengjia'){ - if(!player.countCards('h',{name:'sha',nature:'fire'})&&!player.getEquip('zhuque')) return 0; - } - if(e2.name=='renwang'){ - if(!player.countCards('h',{name:'sha',color:'red'})) return 0; - } - if(e2.name=='baiyin') return 0; - } - if(player.getEquip('guanshi')&&player.countCards('he')>2) return 1; - return target.countCards('h')>3?0:1; - } - if(player==_status.event.dying||player.isTurnedOver()) return 3; - } - }, - effect:{ - target:function(card,player,target){ - if(card.name=='guiyoujie') return [0,0.5]; - if(target.isTurnedOver()){ - if(get.tag(card,'damage')){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; - if(target.hp==1) return; - return [1,target.countCards('h')/2]; - } - } - } - } - }, - }, - rejiushi2:{ - trigger:{player:'damageBegin3'}, - silent:true, - firstDo:true, - filter:function(event,player){ - return player.classList.contains('turnedover'); - }, - content:function(){ - trigger.rejiushi=true; - } - }, - rejiushi3:{ - audio:'rejiushi', - trigger:{player:'damageEnd'}, - check:function(event,player){ - return player.isTurnedOver(); - }, - filter:function(event,player){ - if(event.rejiushi){ - return true; - } - return false; - }, - prompt:function(event,player){ - var str='是否发动【酒诗】,将武将牌翻面'; - if(!player.storage.chengzhang) str+=',并获得牌堆中的一张锦囊牌'; - str+='?' - return str; - }, - content:function(){ - delete trigger.rejiushi; - player.turnOver(); - if(!player.storage.chengzhang){ - var card=get.cardPile2(function(card){ - return get.type2(card)=='trick'; - }); - if(card) player.gain(card,'gain2','log'); - } - } - }, - rejiushi_mark:{ - mark:true, - marktext:'改', - intro:{ - content:'当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。当你受到伤害后,若你的武将牌背面向上,你可以翻面。当你翻面时,你获得牌堆中的一张随机锦囊。', - }, - }, - rehongyan:{ - audio:2, - mod:{ - suit:function(card,suit){ - if(suit=='spade') return 'heart'; - } - }, - trigger:{player:'loseEnd'}, - filter:function(event,player){ - if(player==_status.currentPhase||!event.visible||player.hp<=player.countCards('h')) return false; - for(var i=0;i=4&&shas.length>=3){ - num=3; - } - else if(player.hp>=3&&shas.length>=2){ - num=2; - } - else{ - num=1 - } - var map={}; - var list=[]; - for(var i=1;i<=player.hp;i++){ - var cn=get.cnNumber(i,true); - map[cn]=i; - list.push(cn); - } - event.map=map; - player.awakenSkill('reqimou'); - player.storage.reqimou=true; - player.chooseControl(list,function(){ - return get.cnNumber(_status.event.goon,true); - }).set('prompt','失去任意点体力').set('goon',num); - 'step 1' - var num=event.map[result.control]||1; - player.storage.reqimou2=num; - player.loseHp(num); - player.draw(num); - player.addTempSkill('reqimou2'); - }, - ai:{ - order:2, - result:{ - player:function(player){ - if(player.hp==1) return 0; - var shas=player.getCards('h','sha'); - if(!shas.length) return 0; - var card=shas[0]; - if(!lib.filter.cardEnabled(card,player)) return 0; - if(lib.filter.cardUsable(card,player)) return 0; - var mindist; - if(player.hp>=4&&shas.length>=3){ - mindist=4; - } - else if(player.hp>=3&&shas.length>=2){ - mindist=3; - } - else{ - mindist=2; - } - if(game.hasPlayer(function(current){ - return (current.hp<=mindist-1&& - get.distance(player,current,'attack')<=mindist&& - player.canUse(card,current,false)&& - get.effect(current,card,player,player)>0); - })){ - return 1; - } - return 0; - } - } - } - }, - reqimou2:{ - onremove:true, - mod:{ - cardUsable:function(card,player,num){ - if(typeof player.storage.reqimou2=='number'&&card.name=='sha'){ - return num+player.storage.reqimou2; - } - }, - globalFrom:function(from,to,distance){ - if(typeof from.storage.reqimou2=='number'){ - return distance-from.storage.reqimou2; - } - } - } - }, - olniepan:{ - audio:2, - unique:true, - enable:'chooseToUse', - mark:true, - skillAnimation:true, - animationStr:'涅盘', - limited:true, - animationColor:'orange', - init:function(player){ - player.storage.olniepan=false; - }, - filter:function(event,player){ - if(player.storage.olniepan) return false; - if(event.type=='dying'){ - if(player!=event.dying) return false; - return true; - } - return false; - }, - content:function(){ - 'step 0' - player.awakenSkill('olniepan'); - player.storage.olniepan=true; - player.discard(player.getCards('hej')); - 'step 1' - player.link(false); - 'step 2' - player.turnOver(false); - 'step 3' - player.draw(3); - 'step 4' - if(player.hp<3){ - player.recover(3-player.hp); - } - 'step 5' - player.chooseControl('bazhen','rehuoji','rekanpo').set('prompt','选择获得一个技能').ai=function(){ - return ['rehuoji','bazhen'].randomGet(); - }; - 'step 6' - player.addSkillLog(result.control); - }, - ai:{ - order:1, - skillTagFilter:function(player){ - if(player.storage.olniepan) return false; - if(player.hp>0) return false; - }, - save:true, - result:{ - player:function(player){ - if(player.hp<=0) return 10; - if(player.hp<=2&&player.countCards('he')<=1) return 10; - return 0; - } - }, - threaten:function(player,target){ - if(!target.storage.olniepan) return 0.6; - } - }, - intro:{ - content:'limited' - } - }, - rewurong:{ - enable:'phaseUse', - usable:1, - filter:function(event,player){ - return player.countCards('h')>0; - }, - filterTarget:function(card,player,target){ - return target!=player&&target.countCards('h')>0; - }, - content:function(){ - "step 0" - if(target.countCards('h')==0||player.countCards('h')==0){ - event.finish(); - return; - } - "step 1" - var sendback=function(){ - if(_status.event!=event){ - return function(){ - event.resultOL=_status.event.resultOL; - }; - } - }; - if(player.isOnline()){ - player.wait(sendback); - event.ol=true; - player.send(function(){ - game.me.chooseCard(true).set('glow_result',true).ai=function(){ - return Math.random(); - }; - game.resume(); - }); - } - else{ - event.localPlayer=true; - player.chooseCard(true).set('glow_result',true).ai=function(){ - return Math.random(); - }; - } - if(target.isOnline()){ - target.wait(sendback); - event.ol=true; - target.send(function(){ - var rand=Math.random()<0.4; - game.me.chooseCard(true).set('glow_result',true).ai=function(card){ - if(rand) return card.name=='shan'?1:0; - return card.name=='shan'?0:1; - }; - game.resume(); - }); - } - else{ - event.localTarget=true; - } - "step 2" - if(event.localPlayer){ - event.card1=result.cards[0]; - } - if(event.localTarget){ - var rand=Math.random()<0.4; - target.chooseCard(true).set('glow_result',true).ai=function(card){ - if(rand) return card.name=='shan'?1:0; - return card.name=='shan'?0:1; - }; - } - "step 3" - if(event.localTarget){ - event.card2=result.cards[0]; - } - if(!event.resultOL&&event.ol){ - game.pause(); - } - "step 4" - try{ - if(!event.card1) event.card1=event.resultOL[player.playerid].cards[0]; - if(!event.card2) event.card2=event.resultOL[target.playerid].cards[0]; - if(!event.card1||!event.card2){ - throw('err'); - } - } - catch(e){ - console.log(e); - event.finish(); - return; - } - if(event.card2.number>=10||event.card2.number<=4){ - if(target.countCards('h')>2){ - event.addToAI=true; - } - } - game.broadcastAll(function(card1,card2){ - card1.classList.remove('glow'); - card2.classList.remove('glow'); - },event.card1,event.card2); - "step 5" - game.broadcastAll(function(){ - ui.arena.classList.add('thrownhighlight'); - }); - game.addVideo('thrownhighlight1'); - player.$compare(event.card1,target,event.card2); - game.delay(4); - "step 6" - game.log(player,'展示了',event.card1); - game.log(target,'展示了',event.card2); - var name1=get.name(event.card1); - var name2=get.name(event.card2); - if(name1=='sha'&&name2!='shan'){ - //player.discard(event.card1).set('animate',false); - target.$gain2(event.card2); - var clone=event.card1.clone; - if(clone){ - clone.style.transition='all 0.5s'; - clone.style.transform='scale(1.2)'; - clone.delete(); - game.addVideo('deletenode',player,get.cardsInfo([clone])); - } - game.broadcast(function(card){ - var clone=card.clone; - if(clone){ - clone.style.transition='all 0.5s'; - clone.style.transform='scale(1.2)'; - clone.delete(); - } - },event.card1); - target.damage('nocard'); - } - else if(name1!='sha'&&name2=='shan'){ - //player.discard(event.card1).set('animate',false); - target.$gain2(event.card2); - var clone=event.card1.clone; - if(clone){ - clone.style.transition='all 0.5s'; - clone.style.transform='scale(1.2)'; - clone.delete(); - game.addVideo('deletenode',player,get.cardsInfo([clone])); - } - game.broadcast(function(card){ - var clone=card.clone; - if(clone){ - clone.style.transition='all 0.5s'; - clone.style.transform='scale(1.2)'; - clone.delete(); - } - },event.card1); - player.gainPlayerCard(target,true,'he'); - } - else{ - player.$gain2(event.card1); - target.$gain2(event.card2); - } - game.broadcastAll(function(){ - ui.arena.classList.remove('thrownhighlight'); - }); - game.addVideo('thrownhighlight2'); - }, - ai:{ - order:6, - result:{ - target:-1, - } - } - }, - cangzhuo:{ - trigger:{player:'phaseDiscardBegin'}, - frequent:true, - audio:2, - filter:function(event,player){ - return player.getHistory('useCard',function(card){ - return get.type(card.card,'trick')=='trick'; - }).length==0; - }, - content:function(){ - player.addTempSkill('cangzhuo2'); - }, - }, - cangzhuo2:{ - mod:{ - ignoredHandcard:function(card,player){ - if(get.type(card,'trick')=='trick'){ - return true; - } - }, - cardDiscardable:function(card,player,name){ - if(name=='phaseDiscard'&&get.type(card,'trick')=='trick') return false; - } - }, - }, - shebian:{ - trigger:{player:'turnOverEnd'}, - check:function(event,player){ - return player.canMoveCard(true,true); - }, - filter:function(event,player){ - return player.canMoveCard(null,true); - }, - content:function(){ - player.moveCard().nojudge=true; - }, - }, - rexianzhen:{ - 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.player&&get.name(result.player.name,player)=='sha') player.addTempSkill('rexianzhen4'); - if(result.bool){ - player.storage[event.name]=target; - player.addTempSkill(event.name+2); - } - else{ - player.addTempSkill(event.name+3); - } - }, - ai:{ - order:function(name,player){ - var cards=player.getCards('h'); - if(player.countCards('h','sha')==0){ - return 1; - } - for(var i=0;i11&&get.value(cards[i])<7){ - return 9; - } - } - return get.order({name:'sha'})-1; - }, - result:{ - player:function(player){ - if(player.countCards('h','sha')>0) return 0; - var num=player.countCards('h'); - if(num>player.hp) return 0; - if(num==1) return -2; - if(num==2) return -1; - return -0.7; - }, - target:function(player,target){ - var num=target.countCards('h'); - if(num==1) return -1; - if(num==2) return -0.7; - return -0.5 - }, - }, - threaten:1.3 - } - }, - rexianzhen2:{ - charlotte:true, - mod:{ - targetInRange:function(card,player,target){ - if(target==player.storage.rexianzhen) return true; - }, - cardUsable:function(card,player,num){ - if(card.name=='sha'&&typeof num=='number') return num+100; - }, - playerEnabled:function(card,player,target){ - if(card.name=='sha'&&player.storage.rexianzhen!=target&&!ui.selected.targets.contains(player.storage.rexianzhen)){ - var num=player.getCardUsable(card)-100; - if(num<=0) return false; - } - } - }, - ai:{ - unequip:true, - skillTagFilter:function(player,tag,arg){ - if(arg.target!=player.storage.rexianzhen) return false; - }, - } - }, - rexianzhen3:{ - charlotte:true, - mod:{ - cardEnabled:function(card){if(card.name=='sha') return false} - } - }, - rexianzhen4:{ - mod:{ - ignoredHandcard:function(card,player){ - if(get.name(card)=='sha'){ - return true; - } - }, - cardDiscardable:function(card,player,name){ - if(name=='phaseDiscard'&&get.name(card)=='sha'){ - return false; - } - }, - }, - }, - rejinjiu:{ - mod:{ - cardname:function(card,player){ - if(card.name=='jiu') return 'sha'; - }, - }, - ai:{ - skillTagFilter:function(player){ - if(!player.countCards('h','jiu')) return false; - }, - respondSha:true, - }, - audio:2, - trigger:{player:['useCard1','respond']}, - firstDo:true, - forced:true, - filter:function(event,player){ - return event.card.name=='sha'&&!event.skill&& - event.cards.length==1&&event.cards[0].name=='jiu'; - }, - content:function(){}, - group:'rejinjiu2', - global:'rejinjiu3', - }, - rejinjiu3:{ - mod:{ - cardEnabled:function(card,player){ - if(card.name=='jiu'&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.hasSkill('rejinjiu')) return false; - }, - cardSavable:function(card,player){ - if(card.name=='jiu'&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.hasSkill('rejinjiu')) return false; - }, - }, - }, - rejinjiu2:{ - audio:'rejinjiu', - forced:true, - trigger:{player:'damageBegin3'}, - filter:function(event,player){ - return event.getParent(2).jiu==true; - }, - content:function(){ - trigger.num-=trigger.getParent(2).jiu_add; - }, - ai:{ - filterDamage:true, - skillTagFilter:function(player,tag,arg){ - return arg&&arg.jiu==true; - }, - }, - }, - repojun:{ - shaRelated:true, - audio:2, - trigger:{player:'useCardToPlayered'}, - direct:true, - filter:function(event,player){ - return event.card.name=='sha'&&event.target.hp>0&&event.target.countCards('he')>0; - }, - content:function(){ - 'step 0' - var next=player.choosePlayerCard(trigger.target,'he',[1,Math.min(trigger.target.hp,trigger.target.countCards('he'))],get.prompt('repojun',trigger.target)); - next.set('ai',function(button){ - if(!_status.event.goon) return 0; - var val=get.value(button.link); - if(button.link==_status.event.target.getEquip(2)) return 2*(val+3); - return val; - }); - next.set('goon',get.attitude(player,trigger.target)<=0); - next.set('forceAuto',true); - 'step 1' - if(result.bool){ - var target=trigger.target; - player.logSkill('repojun',trigger.target); - target.addSkill('repojun2'); - target.storage.repojun2.addArray(result.cards); - target.lose(result.cards,ui.special,'toStorage'); - game.log(target,'失去了'+get.cnNumber(result.cards.length)+'张牌'); - target.markSkill('repojun2'); - } - }, - ai:{ - unequip_ai:true, - skillTagFilter:function(player,tag,arg){ - if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true; - return false; - } - }, - group:'repojun3', - }, - repojun3:{ - audio:'repojun', - trigger:{source:'damageBegin1'}, - forced:true, - locked:false, - logTarget:'player', - filter:function(event,player){ - var target=event.player; - return event.getParent().name=='sha'&&player.countCards('h')>=target.countCards('h')&&player.countCards('e')>=target.countCards('e'); - }, - content:function(){ - trigger.num++; - }, - }, - repojun2:{ - 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.repojun2&&player.storage.repojun2.length>0; - }, - content:function(){ - game.log(player,'收回了'+get.cnNumber(player.gain(player.storage.repojun2,'draw','fromStorage').cards.length)+'张〖破军〗牌'); - player.storage.repojun2.length=0; - player.removeSkill('repojun2'); - }, - intro:{ - onunmark:'throw', - content:'cardCount', - }, - }, - reganlu:{ - enable:'phaseUse', - usable:1, - audio:2, - selectTarget:2, - delay:0, - filterTarget:function(card,player,target){ - if(target.isMin()) return false; - if(ui.selected.targets.length==0) return true; - if(ui.selected.targets[0].countCards('e')==0&&target.countCards('e')==0) return false; - return target==player||ui.selected.targets[0]==player||Math.abs(ui.selected.targets[0].countCards('e')-target.countCards('e'))<=player.maxHp-player.hp; - }, - multitarget:true, - multiline:true, - content:function(){ - targets[0].swapEquip(targets[1]); - }, - ai:{ - order:10, - threaten:function(player,target){ - return 0.8*Math.max(1+target.maxHp-target.hp); - }, - result:{ - target:function(player,target){ - var list1=[]; - var list2=[]; - var num=player.maxHp-player.hp; - var players=game.filterPlayer(); - for(var i=0;i0) list1.push(players[i]); - else if(get.attitude(player,players[i])<0) list2.push(players[i]); - } - list1.sort(function(a,b){ - return a.countCards('e')-b.countCards('e'); - }); - list2.sort(function(a,b){ - return b.countCards('e')-a.countCards('e'); - }); - var delta; - for(var i=0;i0&&!player.hasSkill('olfangquan3'); - }, - direct:true, - content:function(){ - "step 0" - var fang=player.countMark('olfangquan2')==0&&player.hp>=2&&player.countCards('h')<=player.hp+1; - player.chooseBool(get.prompt2('olfangquan')).set('ai',function(){ - if(!_status.event.fang) return false; - return game.hasPlayer(function(target){ - if(target.hasJudge('lebu')||target==player) return false; - if(get.attitude(player,target)>4){ - return (get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1)>0); - } - return false; - }); - }).set('fang',fang); - "step 1" - if(result.bool){ - player.logSkill('olfangquan'); - trigger.cancel(); - player.addTempSkill('olfangquan2'); - player.addMark('olfangquan2',1,false); - } - } - }, - olfangquan2:{ - trigger:{player:'phaseDiscardBegin'}, - forced:true, - popup:false, - audio:false, - onremove:true, - content:function(){ - "step 0" - event.count=player.countMark(event.name); - player.removeMark(event.name,event.count,false); - "step 1" - event.count--; - player.chooseToDiscard('是否弃置一张牌并令一名其他角色进行一个额外回合?').set('logSkill','olfangquan').ai=function(card){ - return 20-get.value(card); - }; - "step 2" - if(result.bool){ - player.chooseTarget(true,'请选择进行额外回合的目标角色',lib.filter.notMe).ai=function(target){ - if(target.hasJudge('lebu')) return -1; - if(get.attitude(player,target)>4){ - return get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1); - } - return -1; - }; - } - else event.finish(); - "step 3" - var target=result.targets[0]; - player.line(target,'fire'); - target.markSkillCharacter('olfangquan',player,'放权','进行一个额外回合'); - target.insertPhase(); - target.addSkill('olfangquan3'); - if(event.count>0) event.goto(1); - } - }, - olfangquan3:{ - trigger:{player:['phaseAfter','phaseCancelled']}, - forced:true, - popup:false, - audio:false, - content:function(){ - player.unmarkSkill('olfangquan'); - player.removeSkill('olfangquan3'); - } - }, - olluanji:{ - inherit:'luanji', - audioname:['shen_caopi'], - audio:2, - line:false, - group:'olluanji_remove', - check:function(card){ - return 7-get.value(card); - }, - }, - olluanji_remove:{ - trigger:{player:'useCard2'}, - direct:true, - filter:function(event,player){ - return event.card.name=='wanjian'&&event.targets.length>0; - }, - line:false, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt('olluanji'),'为'+get.translation(trigger.card)+'减少一个目标',function(card,player,target){ - return _status.event.targets.contains(target) - }).set('targets',trigger.targets).set('ai',function(target){ - var player=_status.event.player; - return -get.effect(target,_status.event.getTrigger().card,player,player) - }); - 'step 1' - if(result.bool){ - player.logSkill('olluanji',result.targets); - trigger.targets.remove(result.targets[0]); - } - }, - }, - olxueyi:{ - audio:2, - trigger:{global:'phaseBefore'}, - forced:true, - zhuSkill:true, - unique:true, - filter:function(event,player){ - return !player.storage.olxueyi_inited&&player.hasZhuSkill('olxueyi'); - }, - content:function(){ - player.storage.olxueyi_inited=true; - var num=game.countPlayer(function(current){ - return current.group=='qun'; - }) - if(num) player.addMark('olxueyi',num) - }, - marktext:'裔', - intro:{ - name2:'裔', - content:'mark', - }, - mod:{ - maxHandcard:function(player,num){ - if(player.hasZhuSkill('olxueyi')) return num+2*player.countMark('olxueyi'); - }, - }, - group:'olxueyi_draw', - }, - olxueyi_draw:{ - audio:'olxueyi', - trigger:{player:'phaseBegin'}, - prompt2:'弃置一枚「裔」标记,然后摸一张牌', - check:function(event,player){ - return !player.hasJudge('lebu')&&player.getUseValue('wanjian')>0; - }, - filter:function(event,player){ - return player.hasZhuSkill('olxueyi')&&player.hasMark('olxueyi'); - }, - content:function(){ - player.removeMark('olxueyi',1); - player.draw(); - }, - }, - olhunzi:{ - audio:2, - inherit:'hunzi', - content:function(){ - player.loseMaxHp(); - player.recover(); - player.addSkill('reyingzi'); - player.addSkill('gzyinghun'); - game.log(player,'获得了技能','#g【英姿】','和','#g【英魂】'); - player.awakenSkill(event.name); - player.storage[event.name]=true; - } - }, - olzhiba:{ - audio:2, - unique:true, - zhuSkill:true, - global:'olzhiba2', - }, - olzhiba2:{ - ai:{ - order:1, - result:{ - target:function(player,target){ - if(player.hasZhuSkill('olzhiba')&&!player.hasSkill('olzhiba3')&&target.group=='wu'){ - if(player.countCards('h',function(card){ - var val=get.value(card); - if(val<0) return true; - if(val<=5){ - return card.number>=12; - } - if(val<=6){ - return card.number>=13; - } - return false; - })>0) return -1; - return 0; - } - else{ - if(player.countCards('h','du')&&get.attitude(player,target)<0) return -1; - if(player.countCards('h')<=player.hp) return 0; - var maxnum=0; - var cards2=target.getCards('h'); - for(var i=0;imaxnum){ - maxnum=cards2[i].number; - } - } - if(maxnum>10) maxnum=10; - if(maxnum<5&&cards2.length>1) maxnum=5; - var cards=player.getCards('h'); - for(var i=0;i0||target.countCards('h',function(card){ - var val=get.value(card); - if(val<0) return true; - if(val<=5){ - return card.number>=12; - } - if(val<=6){ - return card.number>=13; - } - return false; - })>0)).set('ai',function(){return _status.event.choice}); - } - else event._result={bool:true}; - 'step 3' - if(result.bool) event.getParent().zhiba_target=target; - else{ - game.log(target,'拒绝了',player,'的拼点请求'); - target.chat('拒绝'); - } - }, - content:function(){ - 'step 0' - event.source=event.getParent().zhiba_target; - if(!event.source){ - event.finish(); - } - 'step 1' - player.chooseToCompare(target).set('small',target==source&&get.attitude(player,target)>0); - 'step 2' - if(player==source&&result.bool||target==source&&!result.bool){ - event.cards=[result.player,result.target].filterInD('d'); - if(!event.cards.length) event.finish(); - else source.chooseControl('ok','cancel2').set('dialog',['是否获得拼点牌?',event.cards]).set('ai',function(){ - if(get.value(event.cards,source,'raw')<=0) return false; - return true; - }); - } - else event.finish(); - 'step 3' - if(result.control!='cancel2') source.gain(event.cards,'gain2','log'); - }, - }, - olzhiba3:{}, - rehuashen:{ - //mode:['identity','single','doudizhu'], - audio:2, - unique:true, - direct:true, - content:function(){ - "step 0" - _status.noclearcountdown=true; - event.videoId=lib.status.videoId++; - var cards=player.storage.rehuashen.character.slice(0); - if(player.isOnline2()){ - player.send(function(cards,id){ - var dialog=ui.create.dialog('是否发动【化身】?',[cards,'character']); - dialog.videoId=id; - },cards,event.videoId); - } - event.dialog=ui.create.dialog(get.prompt('rehuashen'),[cards,'character']); - event.dialog.videoId=event.videoId; - if(!event.isMine()){ - event.dialog.style.display='none'; - } - if(event.triggername=='rehuashen') event._result={control:'更换技能'}; - else player.chooseControl('弃置化身','更换技能','cancel2'); - "step 1" - event.control=result.control; - if(event.control=='cancel2'){ - if(player.isOnline2()){ - player.send('closeDialog',event.videoId); - } - delete _status.noclearcountdown; - if(!_status.noclearcountdown){ - game.stopCountChoose(); - } - event.dialog.close(); - event.finish();return; - } - if(!event.logged){player.logSkill('rehuashen');event.logged=true} - var next=player.chooseButton(true).set('dialog',event.videoId); - if(event.control=='弃置化身'){ - next.set('selectButton',[1,2]); - next.set('filterButton',function(button){ - return button.link!=_status.event.current; - }); - next.set('current',player.storage.rehuashen.current); - } - var prompt=event.control=='弃置化身'?'选择弃置至多两张化身':'选择要切换的化身'; - var func=function(id,prompt){ - var dialog=get.idDialog(id); - if(dialog){ - dialog.content.childNodes[0].innerHTML=prompt; - } - } - if(player.isOnline2()){ - player.send(func,event.videoId,prompt); - } - else if(event.isMine()){ - func(event.videoId,prompt); - } - "step 2" - if(result.bool&&event.control!='弃置化身'){ - event.card=result.links[0]; - var func=function(card,id){ - var dialog=get.idDialog(id); - if(dialog){ - for(var i=0;i0; - }, - banned:['lisu','sp_xiahoudun','xushao'], - addHuashen:function(player){ - if(!player.storage.rehuashen) return; - 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&¤t.storage.rehuashen.character) list.removeArray(current.storage.rehuashen.character) - }); - _status.characterlist=list; - } - _status.characterlist.randomSort(); - var bool=false; - for(var i=0;i<_status.characterlist.length;i++){ - var name=_status.characterlist[i]; - if(name.indexOf('zuoci')!=-1||name.indexOf('key')==0||lib.skill.rehuashen.banned.contains(name)||player.storage.rehuashen.character.contains(name)) continue; - var skills=lib.character[name][3]; - for(var j=0;j0) return '不质疑'; - return Math.random()<0.5?'不质疑':'质疑'; - }); - } - 'step 2' - if(!result.control) result.control='不质疑'; - //event.guessers[0].chat(result.control); - //game.delay(); - if(result.control=='不质疑'){ - //game.log(event.guessers[0],'#g不质疑'); - event.ally.push(event.guessers[0]); - }else{ - //game.log(event.guessers[0],'#y质疑'); - event.betray.push(event.guessers[0]); - } - event.guessers.remove(event.guessers[0]); - if(event.guessers.length) event.goto(1); - 'step 3' - for(var i=0;i0) return '不质疑'; - return Math.random()<0.5?'不质疑':'质疑'; - }); - } - 'step 3' - if(!result.control) result.control='不质疑'; - //event.guessers[0].chat(result.control); - //game.delay(); - if(result.control=='不质疑'){ - //game.log(event.guessers[0],'#g不质疑'); - event.ally.push(event.guessers[0]); - }else{ - //game.log(event.guessers[0],'#y质疑'); - event.betray.push(event.guessers[0]); - } - event.guessers.remove(event.guessers[0]); - if(event.guessers.length) event.goto(2); - 'step 4' - for(var i=0;i0; - }, - viewAs:{ - name:"wuxie", - }, - check:function(card){ - if(card.name=='wuxie') return 1000; - return 0; - }, - prompt:"将一张手牌当无懈可击使用", - threaten:1.2, - }, - reguhuo_phase:{}, - rechanyuan:{ - //charlotte:true, - firstDo:true, - trigger:{ - player:["phaseBefore","changeHp"], - }, - priority:99, - forced:true, - popup:false, - unique:true, - content:function (){ - if(player.hp<=1){ - var skills=player.getSkills(true,false); - for(var i=0;i1&&card.number<10) return 5; - return 4; - } - if(suit=='club') return 2; - return 0; - }, - content:function(){ - player.judge(lib.skill.xinleiji.judgeCheck); - }, - ai:{ - useShan:true, - effect:{ - target:function(card,player,target,current){ - if(get.tag(card,'respondShan')){ - var hastarget=game.hasPlayer(function(current){ - return get.attitude(target,current)<0; - }); - var be=target.countCards('e',{color:'black'}); - if(target.countCards('h','shan')&&be){ - if(!target.hasSkill('xinguidao')) return 0; - return [0,hastarget?target.countCards('he')/2:0]; - } - if(target.countCards('h','shan')&&target.countCards('h')>2){ - if(!target.hasSkill('xinguidao')) return 0; - return [0,hastarget?target.countCards('h')/4:0]; - } - if(target.countCards('h')>3||(be&&target.countCards('h')>=2)){ - return [0,0]; - } - if(target.countCards('h')==0){ - return [1.5,0]; - } - if(target.countCards('h')==1&&!be){ - return [1.2,0]; - } - if(!target.hasSkill('xinguidao')) return [1,0.05]; - return [1,Math.min(0.5,(target.countCards('h')+be)/4)]; - } - } - } - } - }, - xinleiji_misa:{ - audio:'xinleiji', - trigger:{player:'judgeAfter'}, - direct:true, - filter:function(event,player){ - return event.judgestr!='暴虐'&&event.judgestr!='助祭'&&['spade','club'].contains(event.result.suit); - }, - content:function(){ - 'step 0' - event.num=1+['club','spade'].indexOf(trigger.result.suit); - event.logged=false; - if(event.num==1&&player.isDamaged()){ - event.logged=true; - player.logSkill('xinleiji'); - player.recover(); - } - player.chooseTarget('雷击:是否对一名角色造成'+event.num+'点雷电伤害?',lib.filter.notMe).ai=function(target){ - var player=_status.event.player; - return get.damageEffect(target,player,player,'thunder'); - }; - 'step 1' - if(result.bool&&result.targets&&result.targets.length){ - if(!event.logged) player.logSkill('xinleiji',result.targets); - else player.line(result.targets,'thunder'); - result.targets[0].damage(event.num,'thunder'); - } - }, - }, - xinguidao:{ - audio:2, - trigger:{global:'judge'}, - filter:function(event,player){ - return player.countCards('he',{color:'black'})>0; - }, - direct:true, - content:function(){ - "step 0" - player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ - get.translation(trigger.player.judging[0])+','+get.prompt('xinguidao'),'he',function(card){ - if(get.color(card)!='black') return false; - var player=_status.event.player; - var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); - if(mod2!='unchanged') return mod2; - var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); - if(mod!='unchanged') return mod; - return true; - }).set('ai',function(card){ - var trigger=_status.event.getTrigger(); - var player=_status.event.player; - var judging=_status.event.judging; - var result=trigger.judge(card)-trigger.judge(judging); - var attitude=get.attitude(player,trigger.player); - if(attitude==0||result==0){ - if(trigger.player!=player) return 0; - if(game.hasPlayer(function(current){ - return get.attitude(player,current)<0; - })){ - var checkx=lib.skill.xinleiji.judgeCheck(card,true)-lib.skill.xinleiji.judgeCheck(judging); - if(checkx>0) return checkx; - } - return 0; - }; - if(attitude>0){ - return result; - } - else{ - return -result; - } - }).set('judging',trigger.player.judging[0]); - "step 1" - if(result.bool){ - player.respond(result.cards,'highlight','xinguidao','noOrdering'); - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - player.$gain2(trigger.player.judging[0]); - player.gain(trigger.player.judging[0]); - var card=result.cards[0]; - if(get.suit(card)=='spade'&&card.number>1&&card.number<10) player.draw('nodelay'); - trigger.player.judging[0]=result.cards[0]; - trigger.orderingCards.addArray(result.cards); - game.log(trigger.player,'的判定牌改为',result.cards[0]); - } - "step 3" - game.delay(2); - }, - ai:{ - rejudge:true, - tag:{ - rejudge:1 - } - } - }, - reqingguo:{ - audio:2, - enable:['chooseToRespond','chooseToUse'], - filterCard:function(card){ - return get.color(card)=='black'; - }, - position:'he', - viewAs:{name:'shan'}, - viewAsFilter:function(player){ - if(!player.countCards('he',{color:'black'})) return false; - }, - prompt:'将一张黑色牌当闪打出', - check:function(){return 1}, - ai:{ - respondShan:true, - skillTagFilter:function(player){ - if(!player.countCards('he',{color:'black'})) return false; - }, - effect:{ - target:function(card,player,target,current){ - if(get.tag(card,'respondShan')&¤t<0) return 0.6 - } - } - } - }, - reqiangxi:{ - subSkill:{ - off:{ - sub:true, - }, - }, - audio:2, - enable:"phaseUse", - filterCard:function (card){ - return get.subtype(card)=='equip1'; - }, - selectCard:function (){ - return [0,1]; - }, - filterTarget:function (card,player,target){ - if(player==target) return false; - if(target.hasSkill('reqiangxi_off')) return false; - return player.inRange(target); - }, - content:function (){ - "step 0" - if(cards.length==0){ - player.loseHp(); - } - "step 1" - target.addTempSkill('reqiangxi_off'); - target.damage('nocard'); - }, - check:function (card){ - return 10-get.value(card); - }, - position:"he", - ai:{ - order:8.5, - result:{ - target:function (player,target){ - if(!player.countCards('he',{type:'equip'})){ - if(player.hp<2) return 0; - if(target.hp>=player.hp) return 0; - } - return get.damageEffect(target,player); - }, - }, - }, - threaten:1.5, - }, - rehuoji:{ - position:"he", - audio:2, - audioname:['ol_sp_zhugeliang','ol_pangtong'], - enable:"chooseToUse", - filterCard:function (card){ - return get.color(card)=='red'; - }, - viewAs:{ - name:"huogong", - nature:"fire", - }, - viewAsFilter:function (player){ - if(!player.countCards('he',{color:'red'})) return false; - }, - prompt:"将一张红色牌当火攻使用", - check:function (card){ - var player=_status.currentPhase; - if(player.countCards('h')>player.hp){ - return 6-get.value(card); - } - return 4-get.value(card) - }, - }, - rekanpo:{ - audio:2, - audioname:['ol_sp_zhugeliang','ol_pangtong'], - position:"he", - enable:"chooseToUse", - filterCard:function (card){ - return get.color(card)=='black'; - }, - viewAsFilter:function (player){ - return player.countCards('he',{color:'black'})>0; - }, - viewAs:{ - name:"wuxie", - }, - prompt:"将一张黑色手牌当无懈可击使用", - check:function (card){return 8-get.value(card)}, - }, - rejieming:{ - audio:2, - trigger:{ - player:"damageEnd", - }, - direct:true, - content:function (){ - "step 0" - event.count=trigger.num; - "step 1" - player.chooseTarget(get.prompt('rejieming'),'令一名角色摸两张牌。然后若其手牌数少于体力上限,你摸一张牌').set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(att>2){ - if((target.maxHp-target.countCards('h'))>2) return 2*att; - return att; - } - return att/3; - }); - "step 2" - if(result.bool){ - event.current=result.targets[0]; - player.logSkill('rejieming',event.current); - player.line(event.current,'thunder'); - event.current.draw(2); - event.count--; - } - else event.finish(); - "step 3" - if(event.current.countCards('h')0) event.goto(1); - }, - ai:{ - maixie:true, - "maixie_hp":true, - effect:{ - target:function (card,player,target,current){ - if(get.tag(card,'damage')&&target.hp>1){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; - var max=0; - var players=game.filterPlayer(); - for(var i=0;i0){ - max=Math.max(Math.min(5,players[i].hp)-players[i].countCards('h'),max); - } - } - switch(max){ - case 0:return 2; - case 1:return 1.5; - case 2:return [1,2]; - default:return [0,max]; - } - } - if((card.name=='tao'||card.name=='caoyao')&& - target.hp>1&&target.countCards('h')<=target.hp) return [0,0]; - }, - }, - }, - }, - reshuangxiong:{ - trigger:{ - player:"phaseDrawBegin1", - }, - group:"reshuangxiong2", - audio:"shuangxiong", - audioname:['re_yanwen'], - check:function (event,player){ - if(player.countCards('h')>player.hp) return true; - if(player.countCards('h')>3) return true; - return false; - }, - filter:function(event,player){ - return !event.numFixed; - }, - content:function (){ - "step 0" - trigger.changeToZero(); - event.cards=get.cards(2); - event.videoId=lib.status.videoId++; - game.broadcastAll(function(player,id,cards){ - var str; - if(player==game.me&&!_status.auto){ - str='【双雄】选择获得其中一张牌'; - } - else{ - str='双雄'; - } - var dialog=ui.create.dialog(str,cards); - dialog.videoId=id; - },player,event.videoId,event.cards); - event.time=get.utc(); - game.addVideo('showCards',player,['双雄',get.cardsInfo(event.cards)]); - game.addVideo('delay',null,2); - "step 1" - var next=player.chooseButton([1,1],true); - next.set('dialog',event.videoId); - next.set('ai',function(button){ - var player=_status.event.player; - var color=get.color(button.link); - var value=get.value(button.link,player); - if(player.countCards('h',{color:color})>player.countCards('h',['red','black'].remove(color)[0])) value+=5; - return value; - }); - "step 2" - if(result.bool&&result.links){ - var cards2=[]; - for(var i=0;i0){ - game.delay(0,time); - } - "step 3" - game.broadcastAll('closeDialog',event.videoId); - var card2=event.card2; - player.gain(card2,'gain2'); - player.addTempSkill('shuangxiong2'); - player.storage.shuangxiong=get.color(card2); - }, - }, - "reshuangxiong2":{ - trigger:{ - player:"damageEnd", - }, - direct:true, - filter:function (event,player){ - var evt=event.getParent(); - return (evt&&evt.name=='juedou'&&evt[player==evt.player?'targetCards':'playerCards'].length)>0; - }, - content:function (){ - "step 0" - var evt=trigger.getParent(); - var cards=evt[player==evt.player?'targetCards':'playerCards'].slice(0); - for(var i=0;i0&&['useCard','respond'].contains(event.getParent().name); - }, - content:function (){ - "step 0" - event.card=get.cards(); - player.showCards(event.card); - event.same=false; - if(get.type(event.card[0],'trick')==get.type(trigger.getParent().card,'trick')) event.same=true; - player.chooseTarget('选择获得此牌的角色',true).set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(_status.event.du){ - if(target.hasSkillTag('nodu')) return 0; - return -att; - } - if(!_status.event.same) att+=target==_status.event.player?1:0; - if(att>0){ - return att+Math.max(0,5-target.countCards('h')); - } - return att; - }).set('du',event.card.name=='du').set('same',event.same); - "step 1" - if(result.targets){ - player.line(result.targets,'green'); - result.targets[0].gain(event.card,'gain2'); - if(!event.same) player.chooseToDiscard(true,'he'); - } - }, - ai:{ - effect:{ - target:function (card,player){ - if(get.tag(card,'respond')&&player.countCards('h')>1) return [1,0.2]; - }, - }, - }, - }, - "new_liyu":{ - audio:"liyu", - trigger:{ - source:"damageSource", - }, - filter:function (event,player){ - if(event._notrigger.contains(event.player)) return false; - return event.card&&event.card.name=='sha'&&event.player!=player&&event.player.isAlive()&&event.player.countGainableCards(player,'hej')>0; - }, - direct:true, - content:function (){ - 'step 0' - player.gainPlayerCard(get.prompt('new_liyu',trigger.player),trigger.player,'hej','visibleMove').set('ai',function(card){ - var player=_status.event.player; - var evt=_status.event.target; - if(get.attitude(player,evt)>0&&get.position(card)=='j') return 4+get.value(card); - if(get.type(card)=='equip'){ - if(get.attitude(player,evt)>0&&game.hasPlayer(function(current){ - return (player.canUse({name:'juedou'},current)&¤t!=evt.target&&get.effect(current,{name:'juedou'},player,player)>2); - })){ - return 5; - } - else if(game.hasPlayer(function(current){ - return (player.canUse({name:'juedou'},current)&¤t!=evt&¤t!=player&&get.effect(current,{name:'juedou'},player,player)<0); - })){ - return 1; - } - else return 4; - }; - return 3; - }).set('logSkill',['new_liyu',trigger.player]); - 'step 1' - if(result.bool){ - if(get.type(result.cards[0])!='equip'){ - trigger.player.draw(); - event.finish(); - } - else{ - if(!game.hasPlayer(function(current){ - return current!=player&¤t!=trigger.player&&player.canUse('juedou',current); - })){ - event.finish(); - return; - } - trigger.player.chooseTarget(true,function(card,player,target){ - var evt=_status.event.getParent(); - return evt.player.canUse({name:'juedou'},target)&&target!=_status.event.player; - },'请选择一名角色,视为'+get.translation(player)+'对其使用【决斗】').set('ai',function(target){ - var evt=_status.event.getParent(); - return get.effect(target,{name:'juedou'},evt.player,_status.event.player)-2; - }); - } - } - else event.finish(); - 'step 2' - if(result.targets){ - player.useCard({name:'juedou',isCard:true},result.targets[0],'noai'); - } - }, - ai:{ - halfneg:true, - }, - }, - "new_retuxi":{ - audio:"retuxi", - trigger:{ - player:"phaseDrawBegin2", - }, - direct:true, - //priority:-10, - filter:function (event){ - return event.num>0&&!event.numFixed; - }, - content:function (){ - "step 0" - var num=get.copy(trigger.num); - if(get.mode()=='guozhan'&&num>2) num=2; - player.chooseTarget(get.prompt('new_retuxi'),'获得至多'+get.translation(num)+'名角色的各一张手牌,然后少摸等量的牌',[1,num],function(card,player,target){ - return target.countCards('h')>0&&player!=target; - },function(target){ - var att=get.attitude(_status.event.player,target); - if(target.hasSkill('tuntian')) return att/10; - return 1-att; - }); - "step 1" - if(result.bool){ - result.targets.sortBySeat(); - player.logSkill('new_retuxi',result.targets); - player.gainMultiple(result.targets); - trigger.num-=result.targets.length; - } - else{ - event.finish(); - } - "step 2" - if(trigger.num<=0) game.delay(); - }, - ai:{ - threaten:1.6, - expose:0.2, - }, - }, - "new_reyiji":{ - audio:"reyiji", - trigger:{ - player:"damageEnd", - }, - frequent:true, - filter:function (event){ - return (event.num>0) - }, - content:function (){ - "step 0" - event.count=1; - "step 1" - player.draw(2); - event.given=0; - "step 2" - player.chooseCardTarget({ - filterCard:true, - selectCard:[1,2-event.given], - filterTarget:function(card,player,target){ - return player!=target&&target!=event.temp; - }, - ai1:function(card){ - if(ui.selected.cards.length>0) return -1; - if(card.name=='du') return 20; - return (_status.event.player.countCards('h')-_status.event.player.hp); - }, - ai2:function(target){ - var att=get.attitude(_status.event.player,target); - if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ - if(target.hasSkillTag('nodu')) return 0; - return 1-att; - } - return att-4; - }, - prompt:'请选择要送人的卡牌' - }); - "step 3" - if(result.bool){ - player.line(result.targets,'green'); - result.targets[0].gain(result.cards,player,'giveAuto'); - event.given+=result.cards.length; - if(event.given<2){ - event.temp=result.targets[0]; - event.goto(2); - } - else if(event.count0){ - if(player.needsToDiscard()){ - num=0.7; - } - else{ - num=0.5; - } - } - if(player.hp>=4) return [1,num*2]; - if(target.hp==3) return [1,num*1.5]; - if(target.hp==2) return [1,num*0.5]; - } - }, - }, - threaten:0.6, - }, - }, - "new_rejianxiong":{ - audio:"rejianxiong", - audioname:['shen_caopi'], - trigger:{ - player:"damageEnd", - }, - content:function (){ - "step 0" - if(get.itemtype(trigger.cards)=='cards'&&get.position(trigger.cards[0],true)=='o'){ - player.gain(trigger.cards,"gain2"); - } - player.draw('nodelay'); - }, - ai:{ - maixie:true, - "maixie_hp":true, - effect:{ - target:function (card,player,target){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; - if(get.tag(card,'damage')&&player!=target) return [1,0.6]; - }, - }, - }, - }, - "new_reluoyi":{ - audio:"reluoyi", - trigger:{ - player:"phaseDrawBegin1", - }, - forced:true, - locked:false, - filter:function(event,player){ - return !event.numFixed; - }, - content:function (){ - "step 0" - var cards=get.cards(3); - game.cardsGotoOrdering(cards); - player.showCards(cards,'裸衣'); - var cardsx=[]; - for(var i=0;i=trigger.num; - }; - "step 1" - if(result.bool){ - if(cards.length) player.gain(cards,'gain2'); - //game.cardsDiscard(cards2); - player.addTempSkill('reluoyi2',{player:'phaseBefore'}); - trigger.changeToZero(); - } - //else game.cardsDiscard(cards); - }, - }, - "new_rewusheng":{ - mod:{ - targetInRange:function (card){ - if(get.suit(card)=='diamond'&&(_status.event.skill=='new_rewusheng'||card.name=='sha')) return true; - }, - }, - audio:"wusheng", - audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo'], - enable:["chooseToRespond","chooseToUse"], - filterCard:function (card,player){ - if(get.zhu(player,'shouyue')) return true; - return get.color(card)=='red'; - }, - position:"he", - viewAs:{ - name:"sha", - }, - viewAsFilter:function (player){ - if(get.zhu(player,'shouyue')){ - if(!player.countCards('he')) return false; - } - else{ - if(!player.countCards('he',{color:'red'})) return false; - } - }, - prompt:"将一张红色牌当杀使用或打出", - check:function (card){return 4-get.value(card)}, - ai:{ - skillTagFilter:function (player){ - if(get.zhu(player,'shouyue')){ - if(!player.countCards('he')) return false; - } - else{ - if(!player.countCards('he',{color:'red'})) return false; - } - }, - respondSha:true, - basic:{ - useful:[5,1], - value:[5,1], - }, - order:function (){ - if(_status.event.player.hasSkillTag('presha',true,null,true)) return 10; - return 3; - }, - result:{ - target:function (player,target){ - if(player.hasSkill('jiu')&&!target.getEquip('baiyin')){ - if(get.attitude(player,target)>0){ - return -6; - } - else{ - return -3; - } - } - return -1.5; - }, - }, - tag:{ - respond:1, - respondShan:1, - damage:function (card){ - if(card.nature=='poison') return; - return 1; - }, - natureDamage:function (card){ - if(card.nature) return 1; - }, - fireDamage:function (card,nature){ - if(card.nature=='fire') return 1; - }, - thunderDamage:function (card,nature){ - if(card.nature=='thunder') return 1; - }, - poisonDamage:function (card,nature){ - if(card.nature=='poison') return 1; - }, - }, - }, - }, - "new_yijue":{ - audio:"yijue", - enable:"phaseUse", - usable:1, - position:"he", - filterTarget:function (card,player,target){ - return player!=target&&target.countCards('h'); - }, - filterCard:true, - check:function (card){ - return 8-get.value(card); - }, - content:function (){ - "step 0" - target.chooseCard(true).ai=function(card){ - var player=_status.event.player; - if((player.hasShan()||player.hp<3)&&get.color(card)=='black') return 0.5; - return Math.max(1,20-get.value(card)); - }; - "step 1" - target.showCards(result.cards); - event.card2=result.cards[0]; - if(get.color(event.card2)=='black'){ - if(!target.hasSkill('fengyin')){ - target.addTempSkill('fengyin'); - } - target.addTempSkill('new_yijue2'); - event.finish(); - } - else{ - player.gain(event.card2,target,'give','bySelf'); - if(target.hp0; - }; - } - } - "step 2" - if(result.bool){ - target.recover(); - } - }, - ai:{ - result:{ - target:function (player,target){ - var hs=player.getCards('h'); - if(hs.length<3) return 0; - if(target.countCards('h')>target.hp+1&&get.recoverEffect(target)>0){ - return 1; - } - if(player.canUse('sha',target)&&(player.countCards('h','sha')||player.countCards('he',{color:'red'}))){ - return -2; - } - return -0.5; - }, - }, - order:9, - }, - }, - "new_yijue2":{ - trigger:{ - player:"damageBegin1", - }, - filter:function (event){ - return event.source&&event.source.hasSkill('new_yijue')&&event.card&&event.card.name=='sha'&&get.suit(event.card)=='heart'&&event.notLink(); - }, - silent:true, - popup:false, - forced:true, - content:function (){ - trigger.num++; - }, - mark:true, - mod:{ - cardEnabled2:function (card){ - if(get.position(card)=='h') return false; - }, - }, - intro:{ - content:"不能使用或打出手牌", - }, - }, - "new_repaoxiao":{ - audio:"paoxiao", - inherit:"paoxiao", - mod:{ - targetInRange:function (card,player){ - if(card.name=='sha'&&get.cardCount({name:'sha'},player)>0) return true; - }, - cardUsable:function (card,player,num){ - if(card.name=='sha') return Infinity; - }, - }, - ai:{ - unequip:true, - skillTagFilter:function (player,tag,arg){ - if(!get.zhu(player,'shouyue')) return false; - if(arg&&arg.name=='sha') return true; - return false; - }, - }, - }, - "new_tishen":{ - trigger:{ - player:"phaseUseEnd", - }, - check:function (event,player){ - var num=0; - var he=player.getCards('he'); - for(var i=0;i0 - }, - content:function (){ - "step 0" - player.chooseCardTarget({ - position:'he', - filterCard:true, - selectCard:[1,Infinity], - filterTarget:function(card,player,target){ - return player!=target; - }, - ai1:function(card){ - if(get.attitude(_status.event.player,_status.currentPhase)<0&&_status.currentPhase.needsToDiscard()&&card.name!='du') return -1; - for(var i=0;i_status.event.player.countCards('h')) return 0; - return att-4; - }, - prompt:get.prompt2('new_qingjian'), - }); - "step 1" - if(result.bool){ - var target=result.targets[0]; - var cards=result.cards; - var type=[]; - for(var i=0;i0&&get.attitude(player,current)>2); - })>1&&get.color(card)=='black'&&player.countCards('h',{color:'red'})>0) return 3-get.value(card); - return 9-get.value(card); - }, - filter:function (event,player){ - return !player.hasSkill('new_reqingnang_off2'); - }, - filterTarget:function (card,player,target){ - if(target.hp>=target.maxHp||target.hasSkill('new_reqingnang_off')) return false; - return true; - }, - content:function (){ - target.addTempSkill('new_reqingnang_off'); - if(get.color(cards[0])=='black') player.addTempSkill('new_reqingnang_off2'); - target.recover(); - }, - ai:{ - order:9, - result:{ - target:function (player,target){ - if(target.hp==1) return 5; - if(player==target&&player.countCards('h')>player.hp) return 5; - return 2; - }, - }, - threaten:2, - }, - }, - reyaowu:{ - trigger:{player:'damageBegin3'}, - audio:'new_reyaowu', - forced:true, - filter:function(event){ - return event.card&&(get.color(event.card)!='red'||event.source&&event.source.isAlive()); - }, - content:function(){ - trigger[get.color(trigger.card)!='red'?'player':'source'].draw(); - }, - }, - "new_reyaowu":{ - trigger:{ - player:"damageBegin3", - }, - //priority:1, - audio:2, - filter:function (event){ - return event.card&&event.card.name=='sha'&&(get.color(event.card)!='red'||event.source&&event.source.isAlive()); - }, - forced:true, - check:function (event){ - if(event.card&&(event.card.name=='sha')){ - return get.color(event.card)=='black'; - } - }, - content:function (){ - if(get.color(trigger.card)!='red') player.draw(); - else trigger.source.chooseDrawRecover(true); - }, - ai:{ - effect:{ - target:function (card,player,target,current){ - if(card.name=='sha'&&(get.color(card)=='red')&&get.attitude(player,target)<=0){ - return [1,0.8,1,0]; - } - if(card.name=='sha'&&(get.color(card)=='black')){ - return [1,0.4]; - } - }, - }, - }, - }, - - reguanxing:{ - audio:'guanxing', - audioname:['jiangwei','re_jiangwei','re_zhugeliang','gexuan'], - trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']}, - frequent:true, - filter:function(event,player,name){ - if(name=='phaseJieshuBegin'){ - return player.hasSkill('reguanxing_on'); - } - return true; - }, - content:function(){ - "step 0" - if(player.isUnderControl()){ - game.modeSwapPlayer(player); - } - var num=game.countPlayer()<4?3:5; - var cards=get.cards(num); - event.cards=cards; - var switchToAuto=function(){ - _status.imchoosing=false; - if(event.dialog) event.dialog.close(); - if(event.control) event.control.close(); - var top=[]; - var judges=player.getCards('j'); - var stopped=false; - if(!player.hasWuxie()){ - for(var i=0;i0){ - event.cards.push(result.card); - player.chooseBool('是否再次发动【洛神】?').set('frequentSkill','reluoshen'); - } - else{ - for(var i=0;i0; - }, - check:function(card){ - var player=_status.event.player; - if(get.position(card)=='e'){ - var subtype=get.subtype(card); - if(!game.hasPlayer(function(current){ - return current!=player&¤t.hp!=player.hp&&get.attitude(player,current)>0&&!current.countCards('e',{subtype:subtype}); - })){ - return 0; - } - if(player.countCards('h',{subtype:subtype})) return 20-get.value(card); - return 10-get.value(card); - } - else{ - if(player.countCards('e')) return 0; - if(player.countCards('h',{type:'equip'})) return 0; - return 8-get.value(card); - } - }, - filterTarget:function(card,player,target){ - if(target.sex!='male') return false; - var card=ui.selected.cards[0]; - if(!card) return false; - if(get.position(card)=='e'&&!target.isEmpty(get.subtype(card))) return false; - return true; - }, - discard:false, - delay:false, - lose:false, - content:function(){ - 'step 0' - if(get.position(cards[0])=='e') event._result={index:0}; - else if(get.type(cards[0])!='equip'||!target.isEmpty(get.subtype(cards[0]))) event._result={index:1}; - else player.chooseControl().set('choiceList',[ - '将'+get.translation(cards[0])+'置入'+get.translation(target)+'的装备区', - '弃置'+get.translation(cards[0]), - ]).ai=function(){return 1}; - 'step 1' - if(result.index==0){ - player.$give(cards,target,false); - target.equip(cards[0]); - } - else{ - player.discard(cards); - } - 'step 2' - if(player.hp>target.hp){ - player.draw(); - if(target.isDamaged()) target.recover(); - } - else if(player.hptarget.hp){ - if(target.isHealthy()){ - if(!player.needsToDiscard(1)||goon()) return 0.1; - return 0; - } - return 1; - } - return 0; - } - } - } - }, - rejiuyuan:{ - global:'rejiuyuan2', - audio:2, - zhuSkill:true, - }, - rejiuyuan2:{ - audio:'jiuyuan', - forceaudio:true, - trigger:{player:'useCardToPlayer'}, - filter:function(event,player){ - if(event.card.name!='tao') return false; - if(player.group!='wu') return false; - if(event.target!=player) return false; - return game.hasPlayer(function(target){ - return player!=target&&!event.targets.contains(target)&&target.isDamaged()&&target.hp2||!player.countCards('h',function(card){ - return get.value(card)>=8; - }))){ - return 1; - } - return 6-get.value(card) - }, - content:function(){ - 'step 0' - player.discard(cards); - event.num=1; - var hs=player.getCards('h'); - if(!hs.length) event.num=0; - for(var i=0;i=Math.max(2,player.countCards('h')-player.hp)) return 0; - if(player.hp==player.maxHp||player.storage.rerende<0||player.countCards('h')<=1){ - var players=game.filterPlayer(); - for(var i=0;i=3&& - get.attitude(players[i],player)>=3){ - return 11-get.value(card); - } - } - if(player.countCards('h')>player.hp) return 10-get.value(card); - if(player.countCards('h')>2) return 6-get.value(card); - return -1; - } - return 10-get.value(card); - }, - content:function(){ - 'step 0' - var evt=_status.event.getParent('phaseUse'); - if(evt&&evt.name=='phaseUse'&&!evt.rerende){ - var next=game.createEvent('rerende_clear'); - _status.event.next.remove(next); - evt.after.push(next); - evt.rerende=true; - next.player=player; - next.setContent(lib.skill.rerende1.content); - } - if(!Array.isArray(player.storage.rerende2)){ - player.storage.rerende2=[]; - } - player.storage.rerende2.push(target); - target.gain(cards,player,'giveAuto'); - if(typeof player.storage.rerende!='number'){ - player.storage.rerende=0; - } - if(player.storage.rerende>=0){ - player.storage.rerende+=cards.length; - if(player.storage.rerende>=2){ - var list=[]; - if(lib.filter.cardUsable({name:'sha'},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){ - return player.canUse('sha',current); - })){ - list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - } - if(lib.filter.cardUsable({name:'tao'},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){ - return player.canUse('tao',current); - })){ - list.push(['基本','','tao']); - } - if(lib.filter.cardUsable({name:'jiu'},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){ - return player.canUse('jiu',current); - })){ - list.push(['基本','','jiu']); - } - if(list.length){ - player.chooseButton(['是否视为使用一张基本牌?',[list,'vcard']]).set('ai',function(button){ - var player=_status.event.player; - var card={name:button.link[2],nature:button.link[3]}; - if(card.name=='tao'){ - if(player.hp==1||(player.hp==2&&!player.hasShan())||player.needsToDiscard()){ - return 5; - } - return 1; - } - if(card.name=='sha'){ - if(game.hasPlayer(function(current){ - return player.canUse(card,current)&&get.effect(current,card,player,player)>0 - })){ - if(card.nature=='fire') return 2.95; - if(card.nature=='thunder') return 2.92; - return 2.9; - } - return 0; - } - if(card.name=='jiu'){ - return 0.5; - } - return 0; - }); - } - else{ - event.finish(); - } - player.storage.rerende=-1; - } - else{ - event.finish(); - } - } - else{ - event.finish(); - } - 'step 1' - if(result&&result.bool&&result.links[0]){ - var card={name:result.links[0][2],nature:result.links[0][3]}; - player.chooseUseTarget(card,true); - } - }, - ai:{ - order:function(skill,player){ - if(player.hp1){ - return 10; - } - return 4; - }, - result:{ - target:function(player,target){ - if(target.hasSkillTag('nogain')) return 0; - if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ - if(target.hasSkillTag('nodu')) return 0; - return -10; - } - if(target.hasJudge('lebu')) return 0; - var nh=target.countCards('h'); - var np=player.countCards('h'); - if(player.hp==player.maxHp||player.storage.rerende<0||player.countCards('h')<=1){ - if(nh>=np-1&&np<=player.hp&&!target.hasSkill('haoshi')) return 0; - } - return Math.max(1,5-nh); - } - }, - effect:{ - target:function(card,player,target){ - if(player==target&&get.type(card)=='equip'){ - if(player.countCards('e',{subtype:get.subtype(card)})){ - if(game.hasPlayer(function(current){ - return current!=player&&get.attitude(player,current)>0; - })){ - return 0; - } - } - } - } - }, - threaten:0.8 - } - }, - rerende1:{ - trigger:{player:'phaseUseBegin'}, - silent:true, - content:function(){ - player.storage.rerende=0; - player.storage.rerende2=[]; - } - }, - liyu:{ - audio:2, - trigger:{source:'damageSource'}, - forced:true, - filter:function(event,player){ - if(event._notrigger.contains(event.player)) return false; - return event.card&&event.card.name=='sha'&&event.player.isAlive()&&event.player.countGainableCards(player,'he')>0; - }, - check:function(){ - return false; - }, - content:function(){ - 'step 0' - trigger.player.chooseTarget(function(card,player,target){ - var evt=_status.event.getParent(); - return evt.player.canUse({name:'juedou'},target)&&target!=_status.event.player; - },get.prompt('liyu')).set('ai',function(target){ - var evt=_status.event.getParent(); - return get.effect(target,{name:'juedou'},evt.player,_status.event.player)-2; - }); - 'step 1' - if(result.bool){ - player.gainPlayerCard(trigger.player,'he',true); - event.target=result.targets[0]; - trigger.player.line(player,'green'); - } - else{ - event.finish(); - } - 'step 2' - if(event.target){ - player.useCard({name:'juedou',isCard:true},event.target,'noai'); - } - }, - ai:{ - halfneg:true - } - }, - /*reqicai:{ - trigger:{player:'equipEnd'}, - frequent:true, - content:function(){ - player.draw(); - }, - mod:{ - targetInRange:function(card,player,target,now){ - var type=get.type(card); - if(type=='trick'||type=='delay') return true; - } - }, - },*/ - retuxi:{ - audio:2, - trigger:{player:'phaseDrawBegin2'}, - direct:true, - filter:function(event){ - return event.num>0; - }, - content:function(){ - "step 0" - player.chooseTarget(get.prompt('retuxi'),[1,trigger.num],function(card,player,target){ - return target.countCards('h')>0&&player!=target&&target.countCards('h')>=player.countCards('h'); - },function(target){ - var att=get.attitude(_status.event.player,target); - if(target.hasSkill('tuntian')) return att/10; - return 1-att; - }); - "step 1" - if(result.bool){ - player.logSkill('retuxi',result.targets); - player.gainMultiple(result.targets); - trigger.num-=result.targets.length; - } - else{ - event.finish(); - } - "step 2" - if(trigger.num<=0) game.delay(); - }, - ai:{ - threaten:1.6, - expose:0.2 - } - }, - reguicai:{ - audio:2, - trigger:{global:'judge'}, - direct:true, - filter:function(event,player){ - return player.countCards('he')>0; - }, - content:function(){ - "step 0" - player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ - get.translation(trigger.player.judging[0])+','+get.prompt('reguicai'),'he',function(card){ - var player=_status.event.player; - var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); - if(mod2!='unchanged') return mod2; - var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); - if(mod!='unchanged') return mod; - return true; - }).set('ai',function(card){ - var trigger=_status.event.getTrigger(); - var player=_status.event.player; - var judging=_status.event.judging; - var result=trigger.judge(card)-trigger.judge(judging); - var attitude=get.attitude(player,trigger.player); - if(attitude==0||result==0) return 0; - if(attitude>0){ - return result-get.value(card)/2; - } - else{ - return -result-get.value(card)/2; - } - }).set('judging',trigger.player.judging[0]); - "step 1" - if(result.bool){ - player.respond(result.cards,'reguicai','highlight','noOrdering'); - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - if(trigger.player.judging[0].clone){ - trigger.player.judging[0].clone.classList.remove('thrownhighlight'); - game.broadcast(function(card){ - if(card.clone){ - card.clone.classList.remove('thrownhighlight'); - } - },trigger.player.judging[0]); - game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); - } - game.cardsDiscard(trigger.player.judging[0]); - trigger.player.judging[0]=result.cards[0]; - trigger.orderingCards.addArray(result.cards); - game.log(trigger.player,'的判定牌改为',result.cards[0]); - game.delay(2); - } - }, - ai:{ - rejudge:true, - tag:{ - rejudge:1, - } - } - }, - refankui:{ - audio:2, - trigger:{player:'damageEnd'}, - direct:true, - filter:function(event,player){ - return (event.source&&event.source.countGainableCards(player,'he')&&event.num>0&&event.source!=player); - }, - content:function(){ - "step 0" - event.count=trigger.num; - "step 1" - event.count--; - player.gainPlayerCard(get.prompt('refankui',trigger.source),trigger.source,get.buttonValue,'he').set('logSkill',['refankui',trigger.source]); - "step 2" - if(result.bool&&event.count>0&&trigger.source.countGainableCards(player,'he')>0) event.goto(1); - }, - ai:{ - maixie_defend:true, - effect:{ - target:function(card,player,target){ - if(player.countCards('he')>1&&get.tag(card,'damage')){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-1.5]; - if(get.attitude(target,player)<0) return [1,1]; - } - } - } - } - }, - reluoyi:{ - audio:2, - trigger:{player:'phaseDrawBegin1'}, - check:function(event,player){ - if(player.countCards('h','sha')) return true; - return Math.random()<0.5; - }, - content:function(){ - "step 0" - player.addTempSkill('reluoyi2',{player:'phaseBefore'}); - trigger.cancel(null,null,'notrigger'); - "step 1" - event.cards=get.cards(3); - player.showCards(event.cards,'裸衣'); - "step 2" - for(var i=0;i0); - }, - check:function(event,player){ - return (get.attitude(player,event.source)<=0); - }, - logTarget:'source', - content:function(){ - "step 0" - event.num=trigger.num; - "step 1" - player.judge(function(card){ - if(get.color(card)=='red') return 1; - return 0; - }); - "step 2" - if(result.color=='black'){ - if(trigger.source.countCards('he')){ - player.discardPlayerCard(trigger.source,'he',true); - } - } - else if(trigger.source.isIn()){ - trigger.source.damage(); - } - event.num--; - if(event.num>0){ - player.chooseBool(get.prompt2('reganglie')); - } - else{ - event.finish(); - } - "step 3" - if(result.bool){ - player.logSkill('reganglie',trigger.source); - event.goto(1); - } - }, - ai:{ - maixie_defend:true, - expose:0.4 - } - }, - qinxue:{ - skillAnimation:true, - animationColor:'wood', - audio:2, - unique:true, - juexingji:true, - derivation:'gongxin', - trigger:{player:'phaseZhunbeiBegin'}, - forced:true, - filter:function(event,player){ - if(player.storage.qinxue) return false; - if(player.countCards('h')>=player.hp+3) return true; - if(player.countCards('h')>=player.hp+2&&game.players.length+game.dead.length>=7) return true; - return false; - }, - content:function(){ - player.storage.qinxue=true; - player.loseMaxHp(); - player.addSkill('gongxin'); - player.awakenSkill('qinxue'); - } - }, - qingjian:{ - audio:2, - unique:true, - trigger:{player:'gainAfter'}, - direct:true, - usable:4, - filter:function(event,player){ - if(event.parent.parent.name=='phaseDraw') return false; - return event.cards&&event.cards.length>0 - }, - content:function(){ - "step 0" - event.cards=trigger.cards.slice(0); - "step 1" - player.chooseCardTarget({ - filterCard:function(card){ - return _status.event.getParent().cards.contains(card); - }, - selectCard:[1,event.cards.length], - filterTarget:function(card,player,target){ - return player!=target; - }, - ai1:function(card){ - if(ui.selected.cards.length>0) return -1; - if(card.name=='du') return 20; - return (_status.event.player.countCards('h')-_status.event.player.hp); - }, - ai2:function(target){ - var att=get.attitude(_status.event.player,target); - if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ - if(target.hasSkillTag('nodu')) return 0; - return 1-att; - } - if(target.countCards('h')>_status.event.player.countCards('h')) return 0; - return att-4; - }, - prompt:'请选择要送人的卡牌' - }); - "step 2" - if(result.bool){ - player.storage.qingjian++; - player.logSkill('qingjian',result.targets); - result.targets[0].gain(result.cards,player,'give'); - for(var i=0;i0; - }, - filterTarget:function(card,player,target){ - return player!=target; - }, - filterCard:true, - check:function(card){ - return 8-get.value(card); - }, - discard:false, - lose:false, - delay:false, - content:function(){ - "step 0" - target.storage.refanjian=cards[0]; - target.gain(cards[0],player,'give'); - "step 1" - target.chooseControl('refanjian_card','refanjian_hp').ai=function(event,player){ - var cards=player.getCards('he',{suit:get.suit(player.storage.refanjian)}); - if(cards.length==1) return 0; - if(cards.length>=2){ - for(var i=0;i=8) return 1; - } - if(cards.length>2&&player.hp>2) return 1; - if(cards.length>3) return 1; - return 0; - } - "step 2" - if(result.control=='refanjian_card'){ - target.showHandcards(); - } - else{ - target.loseHp(); - event.finish(); - } - "step 3" - target.discard(target.getCards('he',{suit:get.suit(target.storage.refanjian)})) - delete target.storage.refanjian; - }, - ai:{ - order:9, - result:{ - target:function(player,target){ - return -target.countCards('he')-(player.countCards('h','du')?1:0); - } - }, - threaten:2, - } - }, - reqianxun:{ - init:function(player){ - if(!player.storage.reqianxun2) player.storage.reqianxun2=[]; - }, - audio:2, - trigger:{target:'useCardToBegin',player:'judgeBefore'}, - filter:function(event,player){ - if(player.countCards('h')==0) return false; - if(event.parent.name=='phaseJudge'){ - if(lib.skill.reqianxun.trigger.player=='judgeBefore'){ - return true; - } - return event.result&&event.result.judge!=0; - } - if(event.name=='judge') return false; - if(event.targets&&event.targets.length>1) return false; - if(event.card&&get.type(event.card)=='trick'&&event.player!=player) return true; - }, - content:function(){ - player.storage.reqianxun2=player.storage.reqianxun2.concat(player.getCards('h')); - game.addVideo('storage',player,['reqianxun2',get.cardsInfo(player.storage.reqianxun2),'cards']); - player.lose(player.getCards('h'),ui.special,'toStorage'); - player.addSkill('reqianxun2'); - }, - ai:{ - effect:function(card,player,target){ - if(!target.hasFriend()) return; - if(player==target) return; - var type=get.type(card); - var nh=target.countCards(); - if(type=='trick'){ - if(!get.tag(card,'multitarget')||get.info(card).singleCard){ - if(get.tag(card,'damage')){ - if(nh<3||target.hp<=2) return 0.8; - } - return [1,nh]; - } - } - else if(type=='delay'){ - return [0.5,0.5]; - } - }, - } - }, - reqianxun2:{ - trigger:{global:'phaseEnd'}, - forced:true, - audio:false, - content:function(){ - player.gain(player.storage.reqianxun2,'fromStorage','draw'); - player.storage.reqianxun2.length=0; - player.removeSkill('reqianxun2'); - game.addVideo('storage',player,['reqianxun2',get.cardsInfo(player.storage.reqianxun2),'cards']); - }, - mark:true, - intro:{ - content:'cardCount', - onunmark:function(storage,player){ - if(storage&&storage.length){ - player.$throw(storage,1000); - game.cardsDiscard(storage); - game.log(storage,'被置入了弃牌堆'); - player.storage.reqianxun2.length=0; - } - }, - } - }, - relianying:{ - audio:2, - trigger:{player:'loseAfter'}, - direct:true, - filter:function(event,player){ - if(player.countCards('h')) return false; - return event.hs&&event.hs.length; - }, - content:function(){ - "step 0" - var num=trigger.hs.length; - player.chooseTarget('选择发动连营的目标',[1,num]).ai=function(target){ - var player=_status.event.player; - if(player==target) return get.attitude(player,target)+10; - return get.attitude(player,target); - } - "step 1" - if(result.bool){ - player.logSkill('relianying',result.targets); - game.asyncDraw(result.targets); - } - else event.finish(); - "step 2" - game.delay(); - }, - ai:{ - threaten:0.8, - effect:{ - target:function(card){ - if(card.name=='guohe'||card.name=='liuxinghuoyu') return 0.5; - } - }, - noh:true, - } - }, - retishen:{ - audio:2, - unique:true, - mark:true, - skillAnimation:true, - animationColor:'soil', - limited:true, - trigger:{player:'phaseZhunbeiBegin'}, - init:function(player){ - player.storage.retishen=false; - }, - filter:function(event,player){ - if(player.storage.retishen) return false; - if(typeof player.storage.retishen2=='number'){ - return player.hp0){ - return att+Math.max(0,5-target.countCards('h')); - } - return att; - }).set('du',event.card.name=='du'); - } - else{ - player.chooseBool('是否弃置'+get.translation(event.card)+'?'); - event.disbool=true; - } - game.delay(2); - "step 1" - if(event.disbool){ - if(!result.bool){ - game.log(player,'展示了',event.card); - ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild); - } - else{ - game.log(player,'展示并弃掉了',event.card); - event.card.discard(); - } - game.addVideo('deletenode',player,[get.cardInfo(event.node)]); - event.node.delete(); - game.broadcast(function(card){ - ui.arena.classList.remove('thrownhighlight'); - if(card.clone){ - card.clone.delete(); - } - },event.card); - } - else if(result.targets){ - player.line(result.targets,'green'); - result.targets[0].gain(event.card,'log'); - event.node.moveDelete(result.targets[0]); - game.addVideo('gain2',result.targets[0],[get.cardInfo(event.node)]); - game.broadcast(function(card,target){ - ui.arena.classList.remove('thrownhighlight'); - if(card.clone){ - card.clone.moveDelete(target); - } - },event.card,result.targets[0]); - } - else{ - game.log(player,'展示并弃掉了',event.card); - event.card.discard(); - game.addVideo('deletenode',player,[get.cardInfo(event.node)]); - event.node.delete(); - game.broadcast(function(card){ - ui.arena.classList.remove('thrownhighlight'); - if(card.clone){ - card.clone.delete(); - } - },event.card); - } - game.addVideo('thrownhighlight2'); - ui.arena.classList.remove('thrownhighlight'); - }, - ai:{ - effect:{ - target:function(card,player){ - if(get.tag(card,'respond')&&player.countCards('h')>1) return [1,0.2]; - } - } - } - }, - rejianxiong:{ - audio:2, - audioname:['shen_caopi'], - trigger:{player:'damageEnd'}, - filter:function(event,player){ - return get.itemtype(event.cards)=='cards'&&get.position(event.cards[0],true)=='o'; - }, - content:function(){ - player.gain(trigger.cards); - player.$gain2(trigger.cards); - player.draw(); - }, - ai:{ - maixie:true, - maixie_hp:true, - effect:{ - target:function(card,player,target){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; - if(get.tag(card,'damage')) return [1,0.55]; - } - } - } - }, - rejianxiong_old:{ - audio:2, - trigger:{player:'damageEnd'}, - direct:true, - content:function(){ - "step 0" - if(get.itemtype(trigger.cards)=='cards'&&get.position(trigger.cards[0],true)=='o'){ - player.chooseControl('rejianxiong_mopai','rejianxiong_napai','cancel2').set('prompt',get.prompt('rejianxiong')).ai=function(){ - var trigger=_status.event.getTrigger(); - if(trigger.cards.length==1&&trigger.cards[0].name=='sha') return 0; - return 1; - }; - } - else{ - player.chooseControl('rejianxiong_mopai','cancel2').set('prompt',get.prompt('rejianxiong')); - } - "step 1" - if(result.control=='rejianxiong_napai'){ - player.logSkill('rejianxiong'); - player.gain(trigger.cards); - player.$gain2(trigger.cards); - } - else if(result.control=='rejianxiong_mopai'){ - player.logSkill('rejianxiong'); - player.draw(); - } - }, - ai:{ - maixie:true, - maixie_hp:true, - effect:{ - target:function(card,player,target){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; - if(get.tag(card,'damage')&&player!=target) return [1,0.6]; - } - } - } - }, - reyiji:{ - audio:2, - trigger:{player:'damageEnd'}, - frequent:true, - filter:function(event){ - return (event.num>0) - }, - content:function(){ - "step 0" - event.num=1; - event.count=1; - "step 1" - player.gain(get.cards(2)); - player.$draw(2); - "step 2" - player.chooseCardTarget({ - filterCard:true, - selectCard:[1,2], - filterTarget:function(card,player,target){ - return player!=target&&target!=event.temp; - }, - ai1:function(card){ - if(ui.selected.cards.length>0) return -1; - if(card.name=='du') return 20; - return (_status.event.player.countCards('h')-_status.event.player.hp); - }, - ai2:function(target){ - var att=get.attitude(_status.event.player,target); - if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ - if(target.hasSkillTag('nodu')) return 0; - return 1-att; - } - return att-4; - }, - prompt:'请选择要送人的卡牌' - }); - "step 3" - if(result.bool){ - player.lose(result.cards,ui.special,'toStorage'); - if(result.targets[0].hasSkill('reyiji2')){ - result.targets[0].storage.reyiji2=result.targets[0].storage.reyiji2.concat(result.cards); - } - else{ - result.targets[0].addSkill('reyiji2'); - result.targets[0].storage.reyiji2=result.cards; - } - player.$give(result.cards.length,result.targets[0],false); - player.line(result.targets,'green'); - game.addVideo('storage',result.targets[0],['reyiji2',get.cardsInfo(result.targets[0].storage.reyiji2),'cards']); - if(num==1){ - event.temp=result.targets[0]; - event.num++; - event.goto(2); - } - else if(event.count0){ - if(player.needsToDiscard()){ - num=0.7; - } - else{ - num=0.5; - } - } - if(player.hp>=4) return [1,num*2]; - if(target.hp==3) return [1,num*1.5]; - if(target.hp==2) return [1,num*0.5]; - } - } - }, - threaten:0.6 - } - }, - reyiji2:{ - trigger:{player:'phaseDrawBegin'}, - forced:true, - mark:true, - popup:'遗计拿牌', - audio:false, - content:function(){ - player.$draw(player.storage.reyiji2.length); - player.gain(player.storage.reyiji2,'fromStorage'); - delete player.storage.reyiji2; - player.removeSkill('reyiji2'); - game.delay(); - }, - intro:{ - content:'cardCount' - } - }, - yijue:{ - audio:2, - enable:'phaseUse', - usable:1, - filterTarget:function(card,player,target){ - return player!=target&&target.countCards('h'); - }, - filter:function(event,player){ - return player.countCards('h')>0; - }, - content:function(){ - "step 0" - player.chooseToCompare(target).set('small',true); - "step 1" - if(result.bool){ - if(!target.hasSkill('fengyin')){ - target.addTempSkill('fengyin'); - } - target.addTempSkill('yijue2'); - event.finish(); - } - else if(target.hp0; - }; - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - target.recover(); - } - }, - ai:{ - result:{ - target:function(player,target){ - var hs=player.getCards('h'); - if(hs.length<3) return 0; - var bool=false; - for(var i=0;i=9&&get.value(hs[i])<7){ - bool=true; - break; - } - } - if(!bool) return 0; - if(target.countCards('h')>target.hp+1&&get.recoverEffect(target)>0){ - return 1; - } - if(player.canUse('sha',target)&&(player.countCards('h','sha')||player.countCards('he',{color:'red'}))){ - return -2; - } - return -0.5; - } - }, - order:9, - } - }, - yijue2:{ - mark:true, - mod:{ - cardEnabled:function(){ - return false; - }, - cardUsable:function(){ - return false; - }, - cardRespondable:function(){ - return false; - }, - cardSavable:function(){ - return false; - } - }, - intro:{ - content:'不能使用或打出卡牌' - } - }, - retieji:{ - shaRelated:true, - audio:2, - audioname:['boss_lvbu3'], - trigger:{player:'useCardToPlayered'}, - check:function(event,player){ - return get.attitude(player,event.target)<0; - }, - filter:function(event,player){ - return event.card.name=='sha'; - }, - logTarget:'target', - content:function(){ - "step 0" - player.judge(function(){return 0}); - if(!trigger.target.hasSkill('fengyin')){ - trigger.target.addTempSkill('fengyin'); - } - "step 1" - var suit=get.suit(result.card); - var target=trigger.target; - var num=target.countCards('h','shan'); - target.chooseToDiscard('请弃置一张'+get.translation(suit)+'牌,否则不能使用闪抵消此杀','he',function(card){ - return get.suit(card)==_status.event.suit; - }).set('ai',function(card){ - var num=_status.event.num; - if(num==0) return 0; - if(card.name=='shan') return num>1?2:0; - return 8-get.value(card); - }).set('num',num).set('suit',suit); - "step 2" - if(!result.bool){ - trigger.getParent().directHit.add(trigger.target); - } - } - }, - reyicong:{ - trigger:{ - player:["changeHp"], - }, - audio:2, - forced:true, - filter:function(event,player){ - return get.sgn(player.hp-2.5)!=get.sgn(player.hp-2.5-event.num); - }, - content:function (){}, - mod:{ - globalFrom:function(from,to,current){ - if(from.hp>2) return current-1; - }, - globalTo:function(from,to,current){ - if(to.hp<=2) return current+1; - }, - }, - ai:{ - threaten:0.8 - } - }, - qiaomeng:{ - audio:2, - trigger:{source:'damageSource'}, - direct:true, - filter:function(event){ - if(event._notrigger.contains(event.player)) return false; - return event.card&&event.card.name=='sha'&&event.cards&& - get.color(event.cards)=='black'&&event.player.countCards('e'); - }, - content:function(){ - "step 0" - player.choosePlayerCard('e',trigger.player); - "step 1" - if(result.bool){ - player.logSkill('qiaomeng'); - trigger.player.discard(result.links[0]); - event.card=result.links[0]; - } - else{ - event.finish(); - } - "step 2" - if(get.position(card)=='d'){ - if(get.subtype(card)=='equip3'||get.subtype(card)=='equip4'){ - player.gain(card,trigger.player); - player.$gain2(card); - } - } - } - }, - rekurou:{ - audio:2, - enable:'phaseUse', - usable:1, - filterCard:true, - check:function(card){ - return 8-get.value(card); - }, - position:'he', - content:function(){ - player.loseHp(); - }, - ai:{ - order:8, - result:{ - player:function(player){ - if(player.hp<=2) return player.countCards('h')==0?1:0; - if(player.countCards('h',{name:'sha',color:'red'})) return 1; - return player.countCards('h')<=player.hp?1:0; - } - }, - effect:function(card,player,target){ - if(get.tag(card,'damage')){ - if(player.hasSkillTag('jueqing',false,target)) return [1,1]; - return 1.2; - } - if(get.tag(card,'loseHp')){ - if(player.hp<=1) return; - return [0,0]; - } - } - } - }, - zhaxiang:{ - trigger:{player:'loseHpEnd'}, - forced:true, - audio:2, - content:function(){ - var num=trigger.num; - player.draw(3*num); - if(_status.currentPhase==player){ - if(!player.storage.zhaxiang2) player.storage.zhaxiang2=0; - player.storage.zhaxiang2+=num; - player.addTempSkill('zhaxiang2',{player:'phaseAfter'}); - } - else{ - game.trySkillAudio('zhaxiang',player); - } - }, - ai:{ - maihp:true - } - }, - zhaxiang2:{ - mod:{ - targetInRange:function(card,player,target,now){ - if(card.name=='sha'&&get.color(card)=='red') return true; - }, - cardUsable:function(card,player,num){ - if(card.name=='sha') return num+player.storage.zhaxiang2; - } - }, - onremove:true, - trigger:{player:'useCard'}, - forced:true, - filter:function(event,player){ - return event.card&&event.card.name=='sha'&&get.color(event.card)=='red'; - }, - content:function(){ - trigger.directHit.addArray(game.players); - } - }, - zhuhai:{ - trigger:{global:'phaseJieshuBegin'}, - direct:true, - filter:function(event,player){ - return event.player.isAlive()&&event.player.getStat('damage')&& - 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','zhuhai').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); - } - }, - qianxin:{ - skillAnimation:true, - animationColor:'orange', - audio:2, - unique:true, - juexingji:true, - trigger:{source:'damageSource'}, - forced:true, - derivation:'jianyan', - filter:function(event,player){ - return player.hp2) return 'trick'; - return 'red'; - }); - "step 1" - event.card=get.cardPile(function(card){ - if(get.color(card)==result.control) return true; - if(get.type(card,'trick')==result.control) return true; - return false; - },'cardPile'); - if(!event.card){ - event.finish(); - return; - } - player.showCards([event.card]); - "step 2" - player.chooseTarget(true,'选择一名男性角色送出'+get.translation(event.card),function(card,player,target){ - return target.sex=='male'; - }).set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(_status.event.neg) return -att; - return att; - }).set('neg',get.value(event.card,player,'raw')<0); - "step 3" - player.line(result.targets,'green'); - result.targets[0].gain(event.card,'gain2'); - - }, - ai:{ - order:9, - result:{ - player:function(player){ - if(game.hasPlayer(function(current){ - return current.sex=='male'&&get.attitude(player,current)>0; - })) return 2; - return 0; - }, - }, - threaten:1.2 - } - }, - reguose:{ - audio:2, - enable:'phaseUse', - usable:1, - discard:false, - filter:function(event,player){ - return player.countCards('he',{suit:'diamond'})>0; - }, - prepare:'throw', - position:'he', - filterCard:{suit:'diamond'}, - filterTarget:function(card,player,target){ - if(player==target) return false; - if(target.hasJudge('lebu')) return true; - return lib.filter.targetEnabled({name:'lebu'},player,target); - }, - check:function(card){ - return 7-get.value(card); - }, - content:function(){ - if(target.hasJudge('lebu')){ - target.discard(target.getJudge('lebu')); - } - else{ - var next=player.useCard({name:'lebu'},target,cards); - next.animate=false; - next.audio=false; - } - player.draw(); - }, - ai:{ - result:{ - target:function(player,target){ - if(target.hasJudge('lebu')) return -get.effect(target,{name:'lebu'},player,target); - return get.effect(target,{name:'lebu'},player,target); - } - }, - order:9, - } - }, - fenwei:{ - skillAnimation:true, - animationColor:'wood', - audio:2, - audioname:['heqi'], - unique:true, - mark:true, - limited:true, - trigger:{global:'useCardToPlayered'}, - //priority:5, - filter:function(event,player){ - if(event.getParent().triggeredTargets3.length>1) return false; - if(get.type(event.card)!='trick') return false; - if(get.info(event.card).multitarget) return false; - if(event.targets.length<2) return false; - if(player.storage.fenwei) return false; - return true; - }, - init:function(player){ - player.storage.fenwei=false; - }, - direct:true, - content:function(){ - "step 0" - player.chooseTarget(get.prompt('fenwei'), - [1,trigger.targets.length],function(card,player,target){ - return _status.event.targets.contains(target); - }).set('ai',function(target){ - var trigger=_status.event.getTrigger(); - if(game.phaseNumber>game.players.length*2&&trigger.targets.length>=game.players.length-1&&!trigger.excluded.contains(target)){ - return -get.effect(target,trigger.card,trigger.player,_status.event.player); - } - return -1; - }).set('targets',trigger.targets); - "step 1" - if(result.bool){ - player.awakenSkill('fenwei'); - player.logSkill('fenwei',result.targets); - player.storage.fenwei=true; - trigger.getParent().excluded.addArray(result.targets); - game.delay(); - } - }, - intro:{ - content:'limited' - } - }, - chulao:{ - audio:2, - enable:'phaseUse', - usable:1, - filterTarget:function(card,player,target){ - if(player==target) return false; - if(target.group=='unknown') return false; - for(var i=0;i0; - }, - filter:function(event,player){ - return player.countCards('he')>0; - }, - filterCard:true, - position:'he', - selectTarget:[1,Infinity], - check:function(card){ - if(get.suit(card)=='spade') return 8-get.value(card); - return 5-get.value(card); - }, - content:function(){ - "step 0" - if(num==0&&get.suit(cards[0])=='spade') player.draw(); - player.choosePlayerCard(targets[num],'he',true); - "step 1" - if(result.bool){ - if(result.links.length) targets[num].discard(result.links[0]); - if(get.suit(result.links[0])=='spade') targets[num].draw(); - } - }, - ai:{ - result:{ - target:-1 - }, - threaten:1.2, - order:3 - } - }, - xunxun:{ - audio:2, - trigger:{player:'phaseDrawBegin1'}, - //check:function(event,player){ - // return !player.hasSkill('reyiji2'); - //}, - content:function(){ - "step 0" - event.cards=get.cards(4); - player.chooseCardButton(event.cards,2,'选择两张牌置于牌堆顶',true).set('ai',ai.get.buttonValue); - "step 1" - if(result.bool){ - var choice=[]; - for(var i=0;i-3; - return get.attitude(player,event.player)>-3; - }, - logTarget:function(event,player){ - if(event.player==player) return event.source; - return event.player; - }, - content:function(){ - "step 0" - event.count=trigger.num; - "step 1" - game.asyncDraw([trigger.player,trigger.source]); - event.count--; - "step 2" - game.delay(); - "step 3" - if(event.count){ - player.chooseBool(get.prompt2('wangxi',lib.skill.wangxi.logTarget(trigger,player))) - } - else event.finish(); - "step 4" - if(result.bool){ - player.logSkill('wangxi',lib.skill.wangxi.logTarget(trigger,player)); - event.goto(1); - } - }, - ai:{ - maixie:true, - maixie_hp:true - } - }, - refangquan:{ - audio:2, - trigger:{player:'phaseUseBefore'}, - filter:function(event,player){ - return player.countCards('h')>0&&!player.hasSkill('fangquan3'); - }, - direct:true, - content:function(){ - "step 0" - var fang=player.countMark('fangquan2')==0&&player.hp>=2&&player.countCards('h')<=player.hp+1; - player.chooseBool(get.prompt2('refangquan')).set('ai',function(){ - if(!_status.event.fang) return false; - return game.hasPlayer(function(target){ - if(target.hasJudge('lebu')||target==player) return false; - if(get.attitude(player,target)>4){ - return (get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1)>0); - } - return false; - }); - }).set('fang',fang); - "step 1" - if(result.bool){ - player.logSkill('refangquan'); - trigger.cancel(); - player.addTempSkill('fangquan2','phaseAfter'); - player.addMark('fangquan2',1,false); - player.addTempSkill('refangquan2'); - //player.storage.fangquan=result.targets[0]; - } - } - }, - refangquan2:{ - mod:{ - maxHandcardBase:function(player,num){ - return player.maxHp; - }, - }, - }, - rehunzi:{ - inherit:'hunzi', - filter:function(event,player){ - return player.hp<=2&&!player.storage.rehunzi; - }, - ai:{ - threaten:function(player,target){ - if(target.hp<=2) return 2; - return 0.5; - }, - maixie:true, - effect:{ - target:function(card,player,target){ - if(!target.hasFriend()) return; - if(get.tag(card,'damage')==1&&target.hp==3&&!target.isTurnedOver()&& - _status.currentPhase!=target&&get.distance(_status.currentPhase,target,'absolute')<=3) return [0.5,1]; - } - } - } - }, - rezhijian:{ - inherit:'zhijian', - group:['rezhijian_use'], - subfrequent:['use'], - subSkill:{ - use:{ - audio:'rezhijian', - trigger:{player:'useCard'}, - frequent:true, - filter:function(event,player){ - return get.type(event.card)=='equip'; - }, - prompt:'是否发动【直谏】摸一张牌?', - content:function(){ - player.draw('nodelay'); - }, - }, - }, - }, - retuntian:{ - audio:2, - trigger:{player:'loseEnd'}, - frequent:true, - filter:function(event,player){ - if(player==_status.currentPhase) return false; - for(var i=0;i0){ - player.discardPlayerCard(target,'he',true); - } - else{ - event.finish(); - } - }, - ai:{ - order:4, - expose:0.2, - result:{ - target:-1, - 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.hp<=2) return -2; - if(player.countCards('h','shan')==0) return -1; - return -0.5; - } - }, - threaten:1.1 - } - }, - rebeige:{ - audio:'beige', - audioname:['re_caiwenji'], - trigger:{global:'damageEnd'}, - filter:function(event,player){ - return (event.card&&event.card.name=='sha'&&event.source&& - event.player.classList.contains('dead')==false&&player.countCards('he')); - }, - direct:true, - checkx:function(event,player){ - var att1=get.attitude(player,event.player); - var att2=get.attitude(player,event.source); - return att1>0&&att2<=0; - }, - content:function(){ - "step 0" - var next=player.chooseToDiscard('he',get.prompt2('rebeige',trigger.player)); - var check=lib.skill.beige.checkx(trigger,player); - next.set('ai',function(card){ - if(_status.event.goon) return 8-get.value(card); - return 0; - }); - next.set('logSkill','beige'); - next.set('goon',check); - "step 1" - if(result.bool){ - trigger.player.judge(); - } - else{ - event.finish(); - } - "step 2" - switch(result.suit){ - case 'heart':trigger.player.recover(trigger.num);break; - case 'diamond':trigger.player.draw(3);break; - case 'club':trigger.source.chooseToDiscard('he',2,true);break; - case 'spade':trigger.source.turnOver();break; - } - }, - ai:{ - expose:0.3 - } - }, - rexingshang:{ - audio:2, - trigger:{global:'die'}, - filter:function(event,player){ - return player.isDamaged()||event.player.countCards('he')>0; - }, - direct:true, - content:function(){ - "step 0" - var choice=[]; - if(player.isDamaged()) choice.push('回复体力'); - if(trigger.player.countCards('he')) choice.push('获得牌'); - choice.push('cancel2'); - player.chooseControl(choice).set('prompt',get.prompt2('rexingshang')).set('ai',function(){ - if(choice.length==2) return 0; - if(get.value(trigger.player.getCards('he'))>8) return 1; - return 0; - }); - "step 1" - if(result.control!='cancel2'){ - player.logSkill(event.name,trigger.player); - if(result.control=='获得牌'){ - event.togain=trigger.player.getCards('he'); - player.gain(event.togain,trigger.player,'giveAuto'); - } - else player.recover(); - } - }, - }, - refangzhu:{ - audio:2, - trigger:{ - player:"damageEnd", - }, - direct:true, - content:function (){ - "step 0" - player.chooseTarget(get.prompt2('refangzhu'),function(card,player,target){ - return player!=target - }).ai=function(target){ - if(target.hasSkillTag('noturn')) return 0; - var player=_status.event.player; - if(get.attitude(_status.event.player,target)==0) return 0; - if(get.attitude(_status.event.player,target)>0){ - if(target.classList.contains('turnedover')) return 1000-target.countCards('h'); - if(player.getDamagedHp()<3) return -1; - return 100-target.countCards('h'); - } - else{ - if(target.classList.contains('turnedover')) return -1; - if(player.getDamagedHp()>=3) return -1; - return 1+target.countCards('h'); - } - } - "step 1" - if(result.bool){ - player.logSkill('refangzhu',result.targets); - event.target=result.targets[0]; - if(player.isHealthy()) event._result={bool:false}; - else event.target.chooseToDiscard('he',player.getDamagedHp()).set('ai',function(card){ - var player=_status.event.player; - if(player.isTurnedOver()||_status.event.getTrigger().player.getDamagedHp()>2) return -1; - return (player.hp*player.hp)-get.value(card); - }).set('prompt','弃置'+get.cnNumber(player.getDamagedHp())+'张牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+get.cnNumber(player.getDamagedHp())+'张牌。'); - } - else event.finish(); - "step 2" - if(result.bool){ - event.target.loseHp(); - } - else{ - if(player.isDamaged()) event.target.draw(player.getDamagedHp()); - event.target.turnOver(); - } - }, - 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.hp<=1) return; - if(!target.hasFriend()) return; - var hastarget=false; - var turnfriend=false; - var players=game.filterPlayer(); - for(var i=0;i0&&players[i].isTurnedOver()){ - hastarget=true; - turnfriend=true; - } - } - if(get.attitude(player,target)>0&&!hastarget) return; - if(turnfriend||target.hp==target.maxHp) return [0.5,1]; - if(target.hp>1) return [1,0.5]; - } - }, - }, - }, - }, - repolu:{ - audio:1, - trigger:{ - source:'dieAfter', - player:'die', - }, - forceDie:true, - filter:function(event,player,name){ - return name=='die'||player.isAlive(); - }, - direct:true, - content:function(){ - 'step 0' - if(!player.storage.repolu) player.storage.repolu=0; - event.num=player.storage.repolu+1; - player.chooseTarget([1,Infinity],get.prompt('repolu'),'令任意名角色摸'+get.cnNumber(event.num)+'张牌').set('forceDie',true).ai=function(target){ - return get.attitude(_status.event.player,target); - }; - 'step 1' - if(result.bool){ - player.storage.repolu++; - result.targets.sortBySeat(); - player.logSkill('repolu',result.targets); - game.asyncDraw(result.targets,num); - } - else event.finish(); - 'step 2' - game.delay(); - }, - }, - 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:{ - sub:true, - init:function(player,skill){ - player.disableSkill(skill,'benghuai'); - }, - onremove:function(player,skill){ - player.enableSkill(skill); - }, - }, - }, - }, - relieren:{ - shaRelated:true, - audio:2, - audioname:['boss_lvbu3'], - trigger:{player:'useCardToPlayered'}, - filter:function(event,player){ - return event.card.name=='sha'&&player.canCompare(event.target); - }, - check:function(event,player){ - return get.attitude(player,event.target)<0; - }, - //priority:5, - content:function(){ - "step 0" - player.chooseToCompare(trigger.target); - "step 1" - if(result.bool){ - if(trigger.target.countGainableCards(player,'he')) player.gainPlayerCard(trigger.target,true,'he'); - } - else{ - var card1=result.player; - var card2=result.target; - if(get.position(card1)=='d') trigger.target.gain(card1,'gain2'); - if(get.position(card2)=='d') player.gain(card2,'gain2'); - } - } - }, - rezaiqi:{ - count:function(){ - var num=0; - game.countPlayer2(function(current){ - current.getHistory('lose',function(evt){ - if(evt.position==ui.discardPile){ - for(var i=0;i0; - }, - trigger:{ - player:'phaseDiscardEnd' - }, - content:function(){ - 'step 0' - player.chooseTarget([1,lib.skill.rezaiqi.count()],get.prompt2('rezaiqi')).ai=function(target){ - return get.attitude(_status.event.player,target); - }; - 'step 1' - if(result.bool){ - var targets=result.targets; - targets.sortBySeat(); - player.line(targets,'fire'); - player.logSkill('rezaiqi',targets); - event.targets=targets; - } - else event.finish(); - 'step 2' - event.current=targets.shift(); - if(player.isHealthy()) event._result={index:0}; - else event.current.chooseControl().set('choiceList',[ - '摸一张牌', - '令'+get.translation(player)+'回复一点体力', - ]).set('ai',function(){ - if(get.attitude(event.current,player)>0) return 1; - return 0; - }); - 'step 3' - if(result.index==1){ - event.current.line(player); - player.recover(); - } - else event.current.draw(); - game.delay(); - if(targets.length) event.goto(2); - }, - group:'rezaiqi_count', - }, - rezaiqi_count:{ - trigger:{ - global:["loseEnd","cardsDiscardEnd"], - player:'phaseAfter', - }, - silent:true, - forced:true, - popup:false, - filter:function (event,player,name){ - if(name=='phaseAfter') return true; - if(_status.currentPhase!=player) return false; - var evt=event.getParent(); - if(evt&&evt.name=='useCard'&&evt.card&&['equip','delay'].contains(get.type(evt.card))) return false; - var cards=event.cards; - for(var i=0;i②当你不因〖暴虐〗或〖助祭〗而进行的判定的判定牌生效后,若结果为:黑桃,你可对一名其他角色造成2点雷电伤害;梅花:你回复1点体力并可对一名其他其他角色造成1点雷电伤害。', - xinguidao_info:'一名角色的判定牌生效前,你可以打出一张黑色牌作为判定牌并获得原判定牌。若你以此法打出的牌为黑桃2-9,则你摸一张牌。', - reqiangxi:"强袭", - "reqiangxi_info":"出牌阶段对每名其他角色限一次,你可以选择一项:1. 失去一点体力并对你攻击范围内的一名其他角色造成一点伤害;2. 弃置一张武器牌并对你攻击范围内的一名其他角色造成一点伤害。", - rehuoji:"火计", - "rehuoji_info":"出牌阶段,你可一张红色牌当作【火攻】使用。", - rekanpo:"看破", - "rekanpo_info":"你可以将一张黑色牌当作【无懈可击】使用。", - rejieming:"节命", - "rejieming_info":"当你受到1点伤害后,你可以令一名角色摸两张牌。然后若其手牌数小于体力上限,则你摸一张牌。", - reshuangxiong:"双雄", - "reshuangxiong_info":"摸牌阶段,你可以放弃摸牌。若如此做,你展示牌堆顶的两张牌并选择获得其中的一张。然后,你本回合内可以将与此牌颜色不同的一张手牌当做【决斗】使用。当你受到【决斗】造成的伤害时,你可以获得对方于此决斗中打出的所有【杀】", - "reshuangxiong2":"双雄", - "reshuangxiong2_info":"", - - reguanxing:'观星', - reguanxing_info:'准备阶段,你可以观看牌堆顶的5张牌(存活角色小于4时改为3张),并将其以任意顺序置于牌堆项或牌堆底,若你将〖观星〗的牌都放在了牌堆底,则你可以在结束阶段再次发动〖观星〗。', - reluoshen:'洛神', - reluoshen_info:'准备阶段,你可以进行判定,若结果为黑色则获得此判定牌,且可重复此流程直到出现红色的判定结果。你通过〖洛神〗获得的牌,不计入当前回合的手牌上限', - reluoshen_info_guozhan:'准备阶段,你可以进行判定,若为黑色则可以继续判定,直到出现红色。然后你获得所有黑色的判定牌。你通过〖洛神〗获得的牌,不计入当前回合的手牌上限。(结果为黑色的判定牌于此过程中不会进入弃牌堆)', - rejieyin:'结姻', - rejieyin_info:'出牌阶段限一次,你可以选择一名男性角色并弃置一张手牌或将装备区内的一张装备牌置于其装备区,你与其体力较高的角色摸一张牌,体力值较低的角色回复1点体力。', - rebiyue:'闭月', - rebiyue_info:'结束阶段,你可以摸一张牌,若你没有手牌,则改为摸两张牌。', - rejizhi:'集智', - rejizhi_info:'当你使用锦囊牌时,你可以摸一张牌。若此牌为基本牌,则你可以弃置之,然后令本回合手牌上限+1。', - reqicai:'奇才', - reqicai_info:'锁定技,你使用锦囊牌无距离限制,你装备区内的防具牌和宝物牌不能被其他角色弃置。', - rezhiheng:'制衡', - rezhiheng_info:'出牌阶段限一次,你可以弃置任意张牌并摸等量的牌,若你在发动〖制衡〗时弃置了所有手牌,则你多摸一张牌。', - rejiuyuan:'救援', - rejiuyuan_info:'主公技,其他吴势力角色对自己使用【桃】时,若其体力值大于你,则其可以选择令你回复1点体力,然后其摸1张牌。', - - "new_yajiao":"涯角", - "new_yajiao_info":"每当你于回合外使用或打出牌时,你可以亮出牌堆顶的一张牌,并将其交给一名角色。若此牌与你此次使用或打出的牌类别不同,则你弃置一张牌。", - "new_liyu":"利驭", - "new_liyu_info":"当你使用【杀】对一名其他角色造成伤害后,你可以获得其一张牌。若此牌不为装备牌,则其摸一张牌。若此牌为装备牌,则视为你对其选择的另一名角色使用一张【决斗】。", - "new_retuxi":"突袭", - "new_retuxi_info":"摸牌阶段摸牌时,你可以少摸任意张牌,然后获得等量的角色的各一张手牌。", - "new_retuxi_info_guozhan":"摸牌阶段摸牌时,你可以少摸至多两张牌,然后获得等量的角色的各一张手牌。", - "new_reyiji":"遗计", - "new_reyiji_info":"当你受到1点伤害后,你可以摸两张牌,然后可以将至多两张手牌交给其他角色。", - "new_rejianxiong":"奸雄", - "new_rejianxiong_info":"当你受到伤害后,你可以获得对你造成伤害的牌并摸一张牌。", - "new_reluoyi":"裸衣", - "new_reluoyi_info":"摸牌阶段开始时,你展示牌堆顶的三张牌。然后,你可以放弃摸牌。若如此做,你获得其中的基本牌、武器牌和【决斗】,且直到你的下回合开始,你使用的【杀】或【决斗】造成伤害时,此伤害+1。否则,你将这些牌置入弃牌堆。", - "new_rewusheng":"武圣", - "new_rewusheng_info":"你可以将一张红色牌当做【杀】使用或打出。你使用的方片杀没有距离限制。", - "new_yijue":"义绝", - "new_yijue_info":"出牌阶段限一次,你可以弃置一张牌并令一名有手牌的其他角色展示一张手牌。若此牌为黑色,则该角色不能使用或打出牌,非锁定技失效且受到来自你的红桃【杀】的伤害+1直到回合结束。若此牌为红色,则你可以获得此牌,并可以令其回复一点体力。", - "new_yijue2":"义绝", - "new_yijue2_info":"", - "new_repaoxiao":"咆哮", - "new_repaoxiao_info":"锁定技,出牌阶段,你使用【杀】没有数量限制。若你于此出牌阶段内使用过【杀】,则你本回合内使用【杀】没有距离限制。", - "new_tishen":"替身", - "new_tishen_info":"出牌阶段结束时,你可以弃置你所有的锦囊牌与坐骑牌。若如此做,直到你的下个回合开始,你获得所有以你为目标且未对你造成伤害的【杀】。", - "new_tishen2":"替身", - "new_tishen2_info":"", - "new_qingjian":"清俭", - "new_qingjian_info":"当你于摸牌阶段外获得牌时,你可以展示任意张牌并交给一名其他角色。然后,当前回合角色本回合的手牌上限+X(X为你给出的牌中包含的类别数)。每回合限一次。", - "qingjian_add":"清俭", - "qingjian_add_info":"", - "new_reqingnang":"青囊", - "new_reqingnang_info":"出牌阶段,你可以弃置一张手牌,令一名本回合内未成为过〖青囊〗的目标的角色回复一点体力。若你弃置的是黑色牌,则你本回合内不能再发动〖青囊〗。", - "new_reyaowu":"耀武", - "new_reyaowu_info":"锁定技,当一名角色使用【杀】对你造成伤害时,若此杀为红色,该角色回复1点体力或摸一张牌。否则则你摸一张牌。", - reyaowu:'耀武', - reyaowu_info:'锁定技,当你受到牌造成的伤害时,若此牌为红色,则伤害来源摸一张牌;否则你摸一张牌。', - reqingguo:'倾国', - reqingguo_info:'你可以将一张黑色牌当做【闪】使用或打出。', - - qinxue:'勤学', - retuxi:'突袭', - reluoyi:'裸衣', - reluoyi2:'裸衣', - reganglie:'刚烈', - qingjian:'清俭', - reyingzi:'英姿', - refanjian:'反间', - refanjian_card:'弃牌', - refanjian_hp:'流失体力', - reqianxun:'谦逊', - reqianxun2:'谦逊', - relianying:'连营', - retishen:'替身', - retishen2:'替身', - reyajiao:'涯角', - rejianxiong:'奸雄', - rejianxiong_mopai:'摸牌', - rejianxiong_napai:'拿牌', - reyiji:'遗计', - reyiji2:'遗计', - yijue:'义绝', - yijue2:'义绝', - retieji:'铁骑', - refankui:'反馈', - reyicong:'义从', - qiaomeng:'趫猛', - rekurou:'苦肉', - zhaxiang:'诈降', - zhaxiang2:'诈降', - zhuhai:'诛害', - qianxin:'潜心', - jianyan:'荐言', - reguicai:'鬼才', - xunxun:'恂恂', - wangxi:'忘隙', - reguose:'国色', - fenwei:'奋威', - chulao:'除疠', - liyu:'利驭', - rerende:'仁德', - rerende_info:'出牌阶段,你可以将至少一张手牌交给其他角色,然后你于此阶段内不能再以此法交给该角色牌;若你于此阶段内给出的牌首次达到两张,你可以视为使用一张基本牌', - liyu_info:'当你使用【杀】对一名其他角色造成伤害后,该角色可令你获得其一张牌,若如此做,则视为你对其选择的另一名角色使用一张【决斗】', - xunxun_info:'摸牌阶段,你可以观看牌堆顶的四张牌,然后将其中的两张牌置于牌堆顶,并将其余的牌以任意顺序置于牌堆底。', - wangxi_info:'每当你对其他角色造成1点伤害后,或受到其他角色造成的1点伤害后,你可与该角色各摸一张牌。', - reguose_info:'出牌阶段限一次,你可以选择一项:将一张方片花色牌当做【乐不思蜀】使用;或弃置一张方片花色牌并弃置场上的一张【乐不思蜀】。选择完成后,你摸一张牌。', - fenwei_info:'限定技,当一名角色使用的锦囊牌指定了至少两名角色为目标时,你可以令此牌对其中任意名角色无效。', - chulao_info:'出牌阶段限一次,若你有牌,你可以选择任意名势力各不相同的其他角色,你弃置你和这些角色的各一张牌。然后以此法弃置黑桃牌的角色各摸一张牌。', - reguicai_info:'在任意角色的判定牌生效前,你可以打出一张牌代替之', - zhuhai_info:'一名其他角色的结束阶段开始时,若该角色本回合造成过伤害,你可以对其使用一张【杀】。', - qianxin_info:'觉醒技,当你造成一次伤害后,若你已受伤,你须减1点体力上限,并获得技能“荐言”。', - jianyan_info:'出牌阶段限一次,你可以声明一种牌的类别或颜色,并亮出牌库中第一张符合你声明的牌,然后你令一名男性角色获得此牌', - rekurou_info:'出牌阶段限一次,你可以弃置一张牌,然后失去1点体力。', - zhaxiang_info:'锁定技 每当你失去1点体力后,你摸三张牌。然后若此时是你的出牌阶段,则直到回合结束,你使用红色【杀】无距离限制且不能被【闪】响应,你可以额外使用一张【杀】。', - qiaomeng_info:'每当你使用黑色【杀】对一名角色造成伤害后,你可以弃置该角色装备区里的一张牌,若此牌是坐骑牌,你于此牌置入弃牌堆时获得之。', - reyicong_info:'锁定技,只要你的体力值大于2点,你的进攻距离+1;只要你的体力值为2点或更低,你的防御距离+1', - refankui_info:'每当你受到1点伤害后,你可以获得伤害来源的一张牌。', - retieji_info:'当你使用【杀】指定一名角色为目标后,你可以进行一次判定并令该角色的非锁定技失效直到回合结束,除非该角色弃置一张与判定结果花色相同的牌,否则不能使用【闪】抵消此【杀】。', - yijue_info:'出牌阶段限一次,你可以与一名其他角色拼点,若你赢,则直到回合结束,该角色不能使用或打出手牌且其非锁定技失效,若你没赢,你可令该角色回复一点体力。', - reyiji_info:'每当你受到1点伤害后,你可以摸两张牌。然后你可以在至多两名角色的武将牌旁边分别扣置至多两张手牌,这些角色的下个摸牌阶段开始时,该角色获得其武将牌旁的这些牌。', - rejianxiong_info:'每当你受到伤害后,你可以获得对你造成伤害的牌,然后摸一张牌。', - reyajiao_info:'每当你于回合外使用或打出一张手牌时,你可以亮出牌堆顶的一张牌,若此牌与你此次使用或打出的牌类别相同,你可以将之交给任意一名角色;若不同则你可以将之置入弃牌堆。', - retishen_info:'限定技,准备阶段开始时,你可以将体力回复至等同于你上回合结束时的体力值,然后你每以此法回复1点体力,便摸一张牌。', - reqianxun_info:'每当一张延时类锦囊牌或其他角色使用的普通锦囊牌生效时,若你是此牌的唯一目标,你可以将所有手牌置于你的武将牌上,若如此做,此回合结束时,你获得你武将牌上的所有牌。', - relianying_info:'当你失去最后的手牌时,你可以令至多X名角色各摸一张牌(X为你此次失去的手牌数)。', - reyingzi_info:'锁定技,摸牌阶段摸牌时,你额外摸一张牌;你的手牌上限为你的体力上限。', - refanjian_info:'出牌阶段限一次,你可以展示一张手牌并将此牌交给一名其他角色。然后该角色选择一项:展示其手牌并弃置所有与此牌花色相同的牌,或失去一点体力。', - qingjian_info:'每当你于摸牌阶段外获得牌时,你可以将其中任意牌以任意顺序交给其他角色,每回合最多发动四次', - qinxue_info:'觉醒技,准备阶段开始时,若你的手牌数比体力值多3(人数不少于7时改为2)或更多,你须减一点体力上限并获得技能【攻心】', - retuxi_info:'摸牌阶段摸牌时,你可以少摸任意张牌,然后选择等量的手牌数大于或等于你的其他角色,获得这些角色的各一张手牌。', - reluoyi_info:'你可以跳过摸牌阶段,然后展示牌堆顶的三张牌,获得其中的基本牌、武器牌和【决斗】,若如此做,直到你的下回合开始,你为伤害来源的【杀】或【决斗】造成的伤害+1。', - reganglie_info:'每当你受到1点伤害后,可进行一次判定,若结果为红色,你对伤害来源造成1点伤害,若结果为黑色,你弃置其一张牌。', - botu:'博图', - botu_info:'回合结束时,若你本回合出牌阶段内使用的牌包含四种花色,则你可以进行一个额外回合。', - - xin_yuji:'界于吉', - re_zuoci:'界左慈', - "reguhuo":"蛊惑", - "reguhuo_info":"每名角色的回合限一次,你可以扣置一张手牌当一张基本牌或普通锦囊牌使用或打出。其他角色依次选择是否质疑。然后,你展示此牌。若有质疑的角色:若此牌为假,则此牌作废,且所有质疑者各摸一张牌;为真,则所有质疑角色须弃置一张牌或失去1点体力,并获得技能〖缠怨〗。", - "reguhuo_guess":"蛊惑", - "reguhuo_guess_info":"", - rechanyuan:"缠怨", - "rechanyuan_info":"锁定技,你不能质疑于吉,只要你的体力值不大于1,你失去你的武将技能。", - "reguhuo_respond":"蛊惑", - "reguhuo_respond_info":"", - "reguhuo_wuxie":"蛊惑", - "reguhuo_wuxie_info":"", - "reguhuo_phase":"蛊惑", - "reguhuo_phase_info":"", - rehuashen:'化身', - rehuashen_info:'游戏开始后,你随机获得三张未加入游戏的武将牌,选一张置于你面前并声明该武将牌的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。你的每个准备阶段和结束后,你可以选择一项:①弃置至多两张未展示的化身牌并重新获得等量化身牌;②更换所展示的化身牌或技能。(你不可声明限定技、觉醒技或主公技)。', - rexinsheng:'新生', - rexinsheng_info:'当你受到1点伤害后,你可以获得一张新的化身牌。', - re_zhurong:'界祝融', - re_menghuo:'界孟获', - re_dongzhuo:'界董卓', - re_sunjian:'手杀孙坚', - re_caopi:'界曹丕', - rejiuchi:'酒池', - rejiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。锁定技,当你于回合内使用带有【酒】效果的【杀】造成伤害时,你令你的【崩坏】失效直到回合结束。', - repolu:'破虏', - repolu_info:'当你杀死一名角色/死亡时,你可以令任意名角色摸X+1张牌。(X为你此前发动过【破虏】的次数)', - rexingshang:'行殇', - rexingshang_info:'当其他角色死亡后,你可以选择一项:回复1点体力,或获得其所有牌。', - refangzhu:'放逐', - refangzhu_info:'当你受到伤害后,你可以令一名其他角色选择一项:摸X张牌并将武将牌翻面,或弃置X张牌并失去1点体力。(X为你已损失的体力值)', - relieren:'烈刃', - relieren_info:'当你使用【杀】指定目标后,你可以和目标角色进行拼点。若你赢,你获得其一张牌。若你没赢,你获得对方的拼点牌,其获得你的拼点牌。', - rezaiqi:'再起', - rezaiqi_info:'弃牌阶段结束时,你可以令至多X名角色选择一项:1.摸一张牌,2.令你回复1点体力(X为本回合进入弃牌堆的红色牌数)', - re_dengai:'界邓艾', - re_jiangwei:'界姜维', - re_caiwenji:'界蔡文姬', - re_baosanniang:'手杀鲍三娘', - retuntian:'屯田', - retiaoxin:'挑衅', - rebeige:'悲歌', - retuntian_info:'当你于回合外失去牌时,你可以进行一次判定。若判定结果为♥,你获得此判定牌。否则你将此牌置于你的武将牌上,称之为【田】。锁定技,你计算与其他角色的距离时-X(X为你武将牌上【田】的数目)', - retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。', - rebeige_info:'当有角色受到【杀】造成的伤害后,你可以弃一张牌,并令其进行一次判定,若判定结果为:♥该角色回复X点体力(X为伤害点数);♦︎该角色摸三张牌;♣伤害来源弃两张牌;♠伤害来源将其武将牌翻面', - re_liushan:'手杀刘禅', - re_sunben:'界孙笨', - re_zhangzhang:'界张昭张纮', - rehunzi:'魂姿', - rehunzi_info:'觉醒技,准备阶段,若你的体力值不大于2,你减1点体力上限,并获得技能〖英姿〗和〖英魂〗。', - rezhijian_info:'出牌阶段,你可以将手牌中的一张装备牌置于一名其他角色装备区里(不得替换原装备),然后摸一张牌。当你使用装备牌时,你可以摸一张牌。', - refangquan:'放权', - refangquan_info:'你可跳过你的出牌阶段,若如此做,你本回合的手牌上限为你的体力上限,且回合结束时,你可以弃置一张手牌并令一名其他角色进行一个额外的回合。', - re_wuguotai:'界吴国太', - re_gaoshun:'界高顺', - reganlu:'甘露', - reganlu_info:'出牌阶段限一次,你可以选择装备区牌数之差的绝对值不小于X的两名角色或包含你在内的两名角色,然后交换这两名角色装备区内的牌。(X为你已损失的体力值)', - repojun:'破军', - repojun2:'破军', - repojun3:'破军', - repojun_info:'当你使用【杀】指定目标后,你可以将其的至多X张牌置于其武将牌上(X为其体力值),然后其于当前回合结束时获得这些牌。当你因执行【杀】的效果而对一名角色造成伤害时,若该角色的手牌数和装备区内的牌数均不大于你,则此伤害+1。', - rexianzhen:'陷阵', - rexianzhen_info:'出牌阶段限一次,你可以和一名其他角色拼点。若你赢,你本回合内对其使用牌没有次数和距离限制。若你没赢,你本回合内不能使用【杀】。若你以此法失去的拼点牌为【杀】,则你的【杀】不计入本回合的手牌上限。', - rejinjiu:'禁酒', - rejinjiu_info:'锁定技,你的【酒】均视为【杀】。其他角色不能于你的回合内使用【酒】。当你受到酒【杀】的伤害时,你令此伤害-X(X为影响过此【杀】的伤害值的【酒】的数量)', - rejinjiu2:'禁酒', - rejinjiu3:'禁酒', - ol_xiahouyuan:'界夏侯渊', - shebian:'设变', - shebian_info:'当你的武将牌翻面后,你可以移动场上的一张装备牌。', - cangzhuo:'藏拙', - cangzhuo_info:'弃牌阶段开始时,若你本回合内没有使用过锦囊牌,则你的锦囊牌不计入手牌上限。', - re_zhangyi:'界张嶷', - rewurong:'怃戎', - rewurong_info:'出牌阶段限一次,你可以令一名其他角色与你同时展示一张手牌:若你展示的是【杀】且该角色展示的不是【闪】,则你对其造成1点伤害;若你展示的不是【杀】且该角色展示的是【闪】,则你获得其一张牌', - ol_pangtong:'界庞统', - olniepan:'涅槃', - olniepan_info:'限定技,当你处于濒死状态时,你可以弃置你区域内的所有牌并复原你的武将牌,然后摸三张牌并将体力回复至3点。然后你选择获得以下技能中的一个:〖八阵〗/〖火计〗/〖看破〗', - ol_weiyan:'界魏延', - reqimou:'奇谋', - reqimou_info:'限定技,出牌阶段,你可以失去任意点体力并摸等量的牌,然后直到回合结束,你计算与其他角色的距离时-X,且你可以多使用X张【杀】(X为你失去的体力值)', - ol_xiaoqiao:'界小乔', - rehongyan:'红颜', - rehongyan_info:'锁定技,你区域内的黑桃牌和黑桃判定牌均视为红桃。当你于回合外正面朝上失去红桃牌后,若你的手牌数小于体力值,你摸一张牌。', - re_caozhi:'界曹植', - reluoying:'落英', - reluoying_discard:'落英', - reluoying_judge:'落英', - reluoying_info:'当其他角色的梅花牌因弃置或判定而进入弃牌堆时,你可以获得之。', - rejiushi:'酒诗', - rejiushi_info:'当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。当你受到伤害后,若你的武将牌背面向上,你可以翻面并获得牌堆中的一张随机锦囊。', - rejiushi1:'酒诗', - rejiushi3:'酒诗', - rejiushi_mark:'酒诗·改', - rejiushi_mark_info:'当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。当你受到伤害后,若你的武将牌背面向上,你可以翻面。当你翻面时,你获得牌堆中的一张随机锦囊。', - chengzhang:'成章', - chengzhang_info:'觉醒技,准备阶段开始时,若你造成伤害与受到伤害值之和累计7点或以上,则你回复1点体力并摸1张牌,然后改写〖酒诗〗。', - re_wuyi:'界吴懿', - re_zhuran:'界朱然', - re_quancong:'界全琮', - re_liaohua:'界廖化', - re_guohuai:'界郭淮', - re_chengpu:'界程普', - rechunlao:'醇醪', - rechunlao2:'醇醪', - rechunlao_info:'结束阶段开始时,若你没有“醇”,你可以将至少一张【杀】置于你的武将牌上,称为“醇”。当一名角色处于濒死状态时,你可以移去一张“醇”,视为该角色使用一张【酒】,然后若此“醇”的属性为:火,你回复1点体力、雷,你摸两张牌。', - re_caozhang:'界曹彰', - yujin_yujin:'界于禁', - rejieyue:'节钺', - rejieyue_info:'结束阶段开始时,你可以将一张牌交给一名其他角色。然后其选择一项:令你摸三张牌:或其保留一张手牌和装备区的牌,然后弃置其余的牌。', - re_lingtong:'界凌统', - rexuanfeng:'旋风', - rexuanfeng_info:'当你失去装备区内的牌时,或于弃牌阶段弃置了两张或更多的手牌后,你可以依次弃置一至两名其他角色的共计两张牌,或将一名其他角色装备区内的一张牌移动到另一名其他角色的装备区内。', - olpaoxiao:'咆哮', - olpaoxiao2:'咆哮', - olpaoxiao_info:'①锁定技,你使用【杀】无次数限制。②锁定技,当你使用的【杀】被【闪】抵消时,你获得一枚“咆”(→)当你因【杀】造成伤害时,你弃置所有“咆”并令伤害值+X(X为“咆”数)。回合结束后,你弃置所有“咆”。', - oltishen:'替身', - oltishen_info:'限定技,准备阶段,你可以将体力回复至上限,然后摸X张牌(X为你回复的体力值)。', - ollongdan:'龙胆', - ollongdan_info:'你可以将一张【杀】当做【闪】、【闪】当做【杀】、【酒】当做【桃】、【桃】当做【酒】使用或打出。', - olyajiao:'涯角', - olyajiao_info:'当你于回合外因使用或打出而失去手牌后,你可以展示牌堆顶的一张牌。若这两张牌的类别相同,你可以将展示的牌交给一名角色;若类别不同,你可弃置攻击范围内包含你的角色区域里的一张牌。', - re_zhonghui:'界钟会', - re_handang:'界韩当', - requanji:'权计', - requanji_info:'出牌阶段结束时,若你的手牌数大于体力值,或当你受到1点伤害后,你可以摸一张牌,然后将一张手牌置于武将牌上,称为“权”;你的手牌上限+X(X为“权”的数量)。', - regongji:'弓骑', - regongji_info:'出牌阶段限一次,你可以弃置一张非基本牌,然后弃置一名其他角色的一张牌。锁定技,当你的装备区内有坐骑牌时,你的攻击范围无限。', - ol_sunjian:'界孙坚', - wulie:'武烈', - wulie2:'武烈', - wulie_info:'限定技,结束阶段,你可以失去任意点体力并指定等量的角色。这些角色各获得一枚「烈」。有「烈」的角色受到伤害时,其移去一枚「烈」,然后防止此伤害。', - re_sunluban:'界孙鲁班', - re_masu:'界马谡', - ol_pangde:'界庞德', - rejianchu:'鞬出', - rejianchu_info:'当你使用【杀】指定一名角色为目标后,你可以弃置其一张牌,若以此法弃置的牌不为基本牌,此【杀】不可被【闪】响应且你本回合使用【杀】的次数上限+1,为基本牌,该角色获得此【杀】', - re_taishici:'界太史慈', - hanzhan:'酣战', - hanzhan_info:'当你发起拼点时,或成为拼点的目标时,你可以令对方选择拼点牌的方式改为随机选择一张手牌。', - re_jianyong:'界简雍', - xin_xusheng:'界徐盛', - decadepojun:'破军', - decadepojun2:'破军', - decadepojun_info:'当你使用【杀】指定目标后,你可以将其的至多X张牌置于其武将牌上(X为其体力值)。若这些牌中:有装备牌,你将这些牌中的一张置于弃牌堆;有锦囊牌,你摸一张牌。其于回合结束时获得其武将牌上的这些牌。', - old_madai:'界马岱', - wangyi:'界王异', - guanzhang:'界关兴张苞', - xin_fazheng:'界法正', - - refresh_standard:'界限突破·标', - refresh_feng:'界限突破·风', - refresh_huo:'界限突破·火', - refresh_lin:'界限突破·林', - refresh_shan:'界限突破·山', - refresh_yijiang1:'界限突破·将1', - refresh_yijiang2:'界限突破·将2', - refresh_yijiang3:'界限突破·将3', - refresh_yijiang4:'界限突破·将4', - refresh_yijiang5:'界限突破·将5', - }, - }; -}); +'use strict'; +game.import('character',function(lib,game,ui,get,ai,_status){ + return { + name:'refresh', + characterSort:{ + refresh:{ + refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_gongsunzan","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"], + refresh_feng:['caoren','ol_xiahouyuan','re_huangzhong','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'], + refresh_huo:["ol_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"], + refresh_lin:['re_zhurong','re_menghuo','ol_sunjian','re_caopi','re_xuhuang','ol_dongzhuo'], + refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'], + refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_lingtong','re_masu','xin_xusheng','xin_fazheng'], + refresh_yijiang2:['old_madai','wangyi','guanzhang','re_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_liubiao'], + refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran'], + refresh_yijiang4:['re_sunluban','re_wuyi'], + refresh_yijiang5:['re_zhangyi','re_quancong'], + }, + }, + connect:true, + character:{ + re_liubiao:['male','qun',3,['rezishou','zongshi'],['unseen']], + xin_fazheng:['male','shu',3,['xinenyuan','xinxuanhuo'],['die_audio']], + wangyi:['female','wei',3,['zhenlie','miji']], + old_madai:['male','shu',4,['mashu','qianxi']], + guanzhang:['male','shu',4,['fuhun']], + xin_xusheng:['male','wu',4,['decadepojun']], + re_taishici:['male','wu',4,['tianyi','hanzhan']], + re_masu:['male','shu',3,['resanyao','rezhiman']], + re_sunluban:['female','wu',3,['rechanhui','rejiaojin']],re_zhonghui:['male','wei',4,['requanji','zili']], + re_handang:['male','wu',4,['regongji','jiefan']], + re_lingtong:['male','wu',4,['rexuanfeng']], + yujin_yujin:['male','wei',4,['rejieyue']], + re_caozhang:['male','wei',4,['new_jiangchi']], + re_chengpu:['male','wu',4,['lihuo','rechunlao']], + re_quancong:['male','wu',4,['xinyaoming']], + re_liaohua:['male','shu',4,['xindangxian','xinfuli']], + re_guohuai:['male','wei',4,['xinjingce']], + re_wuyi:['male','shu',4,['xinbenxi']], + re_zhuran:['male','wu',4,['xindanshou']], + re_caozhi:['male','wei',3,['reluoying','rejiushi','chengzhang']], + ol_pangtong:['male','shu',3,['xinlianhuan','olniepan'],[]], + re_zhangyi:['male','shu',4,['rewurong','shizhi']], + re_wuguotai:['female','wu',3,['reganlu','buyi']], + re_gaoshun:['male','qun',4,['rexianzhen','rejinjiu']], + re_caocao:['male','wei',4,['new_rejianxiong','hujia'],['zhu']], + re_simayi:['male','wei',3,['refankui','reguicai']], + re_guojia:['male','wei',3,['tiandu','new_reyiji']], + re_lidian:['male','wei',3,['xunxun','wangxi']], + re_zhangliao:['male','wei',4,['new_retuxi']], + re_xuzhu:['male','wei',4,['new_reluoyi']], + re_xiahoudun:['male','wei',4,['reganglie','new_qingjian']], + re_zhangfei:['male','shu',4,['olpaoxiao','oltishen']], + re_zhaoyun:['male','shu',4,['ollongdan','olyajiao']], + re_guanyu:['male','shu',4,['new_rewusheng','new_yijue']], + re_machao:['male','shu',4,['mashu','retieji']], + re_xushu:['male','shu',4,['zhuhai','qianxin']], + re_zhouyu:['male','wu',3,['reyingzi','refanjian']], + re_lvmeng:['male','wu',4,['keji','qinxue','botu']], + re_ganning:['male','wu',4,['qixi','fenwei']], + re_luxun:['male','wu',3,['reqianxun','relianying']], + re_daqiao:['female','wu',3,['reguose','liuli']], + re_huanggai:['male','wu',4,['rekurou','zhaxiang']], + re_lvbu:['male','qun',5,['wushuang','new_liyu']], + re_gongsunzan:['male','qun',4,['qiaomeng','reyicong']], + re_huatuo:['male','qun',3,['jijiu','new_reqingnang']], + re_liubei:['male','shu',4,['rerende','jijiang'],['zhu']], + re_diaochan:['female','qun',3,['lijian','rebiyue']], + re_huangyueying:['female','shu',3,['rejizhi','reqicai']], + re_sunquan:['male','wu',4,['rezhiheng','rejiuyuan'],['zhu']], + re_sunshangxiang:['female','wu',3,['xiaoji','rejieyin']], + re_zhenji:['female','wei',3,['reluoshen','reqingguo']], + re_zhugeliang:['male','shu',3,['reguanxing','kongcheng']], + re_huaxiong:["male","qun",6,["reyaowu"]], + + re_zhangjiao:['male','qun',3,['xinleiji','xinguidao','huangtian'],['zhu']], + xin_yuji:['male','qun',3,['reguhuo']], + re_zuoci:['male','qun',3,['rehuashen','rexinsheng']], + + ol_xiahouyuan:['male','wei',4,['xinshensu','shebian']], + caoren:['male','wei',4,['xinjushou','xinjiewei']], + re_huangzhong:['male','shu',4,['xinliegong']], + ol_weiyan:['male','shu',4,['xinkuanggu','reqimou']], + ol_xiaoqiao:['female','wu',3,['retianxiang','rehongyan']], + zhoutai:['male','wu',4,['buqu','fenji']], + ol_pangde:['male','qun',4,['mashu','rejianchu']], + re_xuhuang:['male','wei',4,['duanliang','jiezi']], + ol_sp_zhugeliang:["male","shu",3,["bazhen","rehuoji","rekanpo","cangzhuo"],[]], + re_xunyu:["male","wei",3,["quhu","rejieming"],[]], + re_dianwei:["male","wei",4,["reqiangxi"],[]], + re_yanwen:["male","qun",4,["reshuangxiong"],[]], + ol_yuanshao:['male','qun',4,['olluanji','olxueyi'],['zhu']], + re_zhurong:['female','shu',4,['juxiang','relieren']], + re_menghuo:['male','shu',4,['huoshou','rezaiqi']], + ol_dongzhuo:['male','qun',8,['oljiuchi','roulin','benghuai','olbaonue'],['zhu']], + ol_sunjian:['male','wu',4,['gzyinghun','wulie']], + re_caopi:['male','wei',3,['rexingshang','refangzhu','songwei'],['zhu']], + re_dengai:['male','wei',4,['retuntian','zaoxian']], + re_jiangwei:['male','shu',4,['retiaoxin','zhiji']], + re_caiwenji:['female','qun',3,['rebeige','duanchang']], + ol_liushan:['male','shu',3,['xiangle','olfangquan','olruoyu'],['zhu']], + re_zhangzhang:['male','wu',3,['rezhijian','guzheng']], + + re_sunce:['male','wu',4,['jiang','olhunzi','olzhiba'],['zhu']], + re_jianyong:['male','shu',3,['reqiaoshui','jyzongshi']], + }, + characterIntro:{ + re_gongsunzan:'群雄之一。出身贵族,因母地位卑贱,只当了郡中小吏。他貌美,声音洪亮,机智善辩。后随卢植于缑氏山中读书,粗通经传。', + re_lidian:'字曼成,曹操麾下将领。李典深明大义,不与人争功,崇尚学习与高贵儒雅,尊重博学之士,在军中被称为长者。李典有长者之风,官至破虏将军,三十六岁去世。魏文帝曹丕继位后追谥号为愍侯。', + sunben:' ', + }, + characterFilter:{ + re_zuoci:function(mode){ + return mode!='guozhan'; + } + }, + perfectPair:{ + sunben:['zhouyu','taishici','daqiao'], + }, + skill:{ + olbaonue:{ + audio:2, + unique:true, + zhuSkill:true, + trigger:{global:'damageSource'}, + filter:function(event,player){ + if(player==event.source||!event.source||event.source.group!='qun') return false; + return player.hasZhuSkill('olbaonue',event.source); + }, + direct:true, + content:function(){ + 'step 0' + event.count=trigger.num; + 'step 1' + event.count--; + trigger.source.chooseBool('是否对'+get.translation(player)+'发动【暴虐】?').set('choice',get.attitude(trigger.source,player)>0); + 'step 2' + if(result.bool){ + player.logSkill('olbaonue'); + trigger.source.line(player,'green') + player.judge(function(card){ + if(get.suit(card)=='spade') return 4; + return 0; + }); + } + else{ + event.finish(); + } + 'step 3' + if(result.suit=='spade'){ + player.recover(); + if(get.position(result.card)=='d') player.gain(result.card,'gain2','log') + } + if(event.count) event.goto(1); + } + }, + rezishou:{ + audio:'zishou', + trigger:{player:'phaseDrawBegin2'}, + check:function(event,player){ + return player.countCards('h')<=(player.hasSkill('zongshi')?player.maxHp:(player.hp-2))||player.skipList.contains('phaseUse'); + }, + filter:function(event,player){ + return !event.numFixed; + }, + content:function(){ + trigger.num+=game.countGroup(); + player.addTempSkill('rezishou2'); + }, + ai:{ + threaten:1.5 + } + }, + rezishou2:{ + audio:'rezishou', + trigger:{ + source:'damageBegin2', + player:'phaseJieshuBegin', + }, + forced:true, + filter:function(event,player){ + if(event.name=='damage') return event.player!=player; + if(player.getHistory('skipped').contains('phaseUse')) return false; + return player.getHistory('useCard',function(evt){ + if(evt.targets&&evt.targets.length&&evt.isPhaseUsing()){ + var targets=evt.targets.slice(0); + while(targets.contains(player)) targets.remove(player); + return targets.length>0; + } + return false; + }).length==0; + }, + popup:false, + content:function(){ + 'step 0' + if(trigger.name=='damage'){ + player.logSkill('rezishou',trigger.player); + trigger.cancel(); + event.finish(); + return; + } + else{ + var filterTarget=function(card,player,target){ + return target!=player&&target.countCards('e',function(card){ + return player.isEmpty(get.subtype(card)); + }); + } + if(game.hasPlayer(function(current){ + return filterTarget(null,player,current) + })) player.chooseTarget(filterTarget,'是否将一名其他角色装备区内的一张牌移动到自己的装备区?'); + else event.finish(); + } + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('rezishou',target); + player.choosePlayerCard(target,'e','将一张装备牌移至你的装备区').set('filterButton',function(button){ + return _status.event.player.isEmpty(get.subtype(button.link)); + }); + } + else event.finish(); + "step 2" + if(result&&result.links&&result.links.length){ + game.delay(2); + target.$give(result.links[0],player,false); + player.equip(result.links[0]); + player.addExpose(0.2); + } + }, + ai:{ + effect:{ + player:function(card,player,target){ + if(get.tag(card,'damage')) return 'zeroplayertarget'; + }, + }, + }, + }, + decadepojun:{ + shaRelated:true, + audio:2, + trigger:{player:'useCardToPlayered'}, + direct:true, + filter:function(event,player){ + return event.card.name=='sha'&&event.target.hp>0&&event.target.countCards('he')>0; + }, + content:function(){ + 'step 0' + var next=player.choosePlayerCard(trigger.target,'he',[1,Math.min(trigger.target.hp,trigger.target.countCards('he'))],get.prompt('decadepojun',trigger.target)); + next.set('ai',function(button){ + if(!_status.event.goon) return 0; + var val=get.value(button.link); + if(button.link==_status.event.target.getEquip(2)) return 2*(val+3); + return val; + }); + next.set('goon',get.attitude(player,trigger.target)<=0); + next.set('forceAuto',true); + 'step 1' + if(result.bool){ + event.cards=result.cards; + var target=trigger.target; + player.logSkill('decadepojun',trigger.target); + target.addSkill('decadepojun2'); + target.markAuto('decadepojun2',result.cards); + target.lose(result.cards,ui.special,'toStorage'); + game.log(target,'失去了'+get.cnNumber(result.cards.length)+'张牌');; + } + else event.finish(); + 'step 2' + var discard=false,draw=false; + for(var i of cards){ + var type=get.type2(i); + if(type=='equip') discard=true; + if(type=='trick') draw=true; + } + if(discard){ + event.equip=true; + player.chooseButton(['选择一张牌置入弃牌堆',cards.filter(function(card){ + return get.type(card)=='equip'; + })],true).set('ai',function(button){ + return get.value(button.link,_status.event.getTrigger().target); + }); + } + if(draw) event.draw=true; + 'step 3' + if(event.equip&&result.links&&result.links.length){ + trigger.target.unmarkAuto('decadepojun2',result.links); + trigger.target.$throw(result.links,1000); + game.log(player,'将',result.links,'置入了弃牌堆'); + game.cardsDiscard(result.links); + if(!event.draw) game.delayx(); + } + if(event.draw) player.draw(); + }, + ai:{ + unequip_ai:true, + skillTagFilter:function(player,tag,arg){ + if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true; + return false; + } + }, + }, + decadepojun2:{ + 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.decadepojun2&&player.storage.decadepojun2.length>0; + }, + content:function(){ + game.log(player,'收回了'+get.cnNumber(player.gain(player.storage.decadepojun2,'draw','fromStorage').cards.length)+'张〖破军〗牌'); + player.storage.decadepojun2.length=0; + player.removeSkill('decadepojun2'); + }, + intro:{ + onunmark:'throw', + content:'cardCount', + }, + }, + hanzhan:{ + audio:2, + trigger:{ + global:'chooseToCompareBegin', + }, + filter:function(event,player){ + if(player==event.player) return true; + if(event.targets) return event.targets.contains(player); + return player==event.target; + }, + logTarget:function(event,player){ + if(player!=event.player) return event.player; + return event.targets||event.target; + }, + check:function(trigger,player){ + var num=0; + var targets=player==trigger.player?(trigger.targets?trigger.targets.slice(0):[trigger.target]):[trigger.player]; + while(targets.length){ + var target=targets.shift(); + if(target.getCards('h').length>1) num-=get.attitude(player,target); + } + return num>0; + }, + content:function(){ + var targets=player==trigger.player?(trigger.targets?trigger.targets.slice(0):[trigger.target]):[trigger.player]; + if(!trigger.fixedResult) trigger.fixedResult={}; + while(targets.length){ + var target=targets.shift(); + var hs=target.getCards('h'); + if(hs.length) trigger.fixedResult[target.playerid]=hs.randomGet(); + } + }, + }, + rejianchu:{ + shaRelated:true, + audio:2, + audioname:['re_pangde'], + trigger:{player:'useCardToPlayered'}, + filter:function(event,player){ + return event.card.name=='sha'&&event.target.countDiscardableCards(player,'he')>0; + }, + direct:true, + content:function(){ + 'step 0' + player.discardPlayerCard(trigger.target,get.prompt('rejianchu',trigger.target)).set('ai',function(button){ + if(!_status.event.att) return 0; + if(get.position(button.link)=='e'){ + if(get.subtype(button.link)=='equip2') return 2*get.value(button.link); + return get.value(button.link); + } + return 1; + }).set('logSkill',['rejianchu',trigger.target]).set('att',get.attitude(player,trigger.target)<=0); + 'step 1' + if(result.bool&&result.links&&result.links.length){ + if(get.type(result.links[0],null,result.links[0].original=='h'?player:false)!='basic'){ + trigger.getParent().directHit.add(trigger.target); + player.addTempSkill('rejianchu2'); + player.addMark('rejianchu2',1,false); + } + else if(trigger.cards){ + var list=[]; + for(var i=0;i0; + }, + content:function(){ + 'step 0' + player.chooseTarget([1,player.hp],get.prompt2('wulie'),lib.filter.notMe).set('ai',function(){return 0}); + 'step 1' + if(result.bool){ + var targets=result.targets.sortBySeat(); + player.logSkill('wulie',targets); + player.awakenSkill('wulie'); + player.loseHp(targets.length); + while(targets.length){ + targets[0].addSkill('wulie2'); + targets.shift().addMark('wulie2'); + } + } + }, + }, + wulie2:{ + marktext:'烈', + intro:{name2:'烈',content:'mark'}, + trigger:{player:'damageBegin3'}, + forced:true, + content:function(){ + trigger.cancel(); + player.removeMark('wulie2',1); + if(!player.storage.wulie2) player.removeSkill('wulie2'); + }, + }, + regongji:{ + mod:{ + attackFrom:function(player){ + if(player.getEquip(3)||player.getEquip(4)||player.getEquip(6)) return -Infinity + }, + }, + enable:'phaseUse', + usable:1, + position:'he', + filter:function(event,player){ + return player.countCards('he',function(card){ + return lib.skill.regongji.filterCard(card,player); + })>0; + }, + filterCard:function(card,player){ + return get.type(card,player)!='basic'; + }, + filterTarget:function(card,player,target){ + return target!=player&&target.countDiscardableCards(player,'he')>0; + }, + check:function(card){ + return 4.5-get.value(card); + }, + content:function(){ + if(target.countDiscardableCards(player,'he')>0) player.discardPlayerCard(target,'he',true); + }, + ai:{ + order:5, + result:{ + target:function(player,target){ + var att=get.attitude(player,target); + var nh=target.countCards('h'); + if(att>0){ + if(target.getEquip('baiyin')&&target.isDamaged()&& + get.recoverEffect(target,player,player)>0){ + if(target.hp==1&&!target.hujia) return 1.6; + if(target.hp==2) return 0.01; + return 0; + } + } + var es=target.getCards('e'); + var noe=(es.length==0||target.hasSkillTag('noe')); + var noe2=(es.length==1&&es[0].name!='tengjia'&&get.value(es[0])<=0); + var noh=(nh==0||target.hasSkillTag('noh')); + if(noh&&(noe||noe2)) return 0; + if(att<=0&&!target.countCards('he')) return 1.5; + return -1.5; + }, + }, + tag:{ + loseCard:1, + discard:1 + }, + }, + }, + requanji:{ + audio:2, + trigger:{player:['damageEnd','phaseUseEnd']}, + frequent:true, + locked:false, + notemp:true, + init:function(player){ + if(!player.storage.quanji) player.storage.quanji=[]; + }, + filter:function(event,player){ + if(event.name=='phaseUse') return player.countCards('h')>player.hp; + return event.num>0; + }, + content:function(){ + "step 0" + event.count=trigger.num||1; + "step 1" + event.count--; + player.draw(); + "step 2" + if(player.countCards('h')){ + player.chooseCard('将一张手牌置于武将牌上作为“权”',true); + } + else{ + event.goto(4); + } + "step 3" + if(result.cards&&result.cards.length){ + player.lose(result.cards,ui.special,'toStorage'); + player.storage.quanji=player.storage.quanji.concat(result.cards); + player.syncStorage('quanji'); + player.markSkill('quanji'); + game.log(player,'将',result.cards,'置于武将牌上作为“权”'); + } + "step 4" + if(event.count>0){ + player.chooseBool(get.prompt2('requanji')).set('frequentSkill','requanji'); + } + else event.finish(); + "step 5" + if(result.bool){ + player.logSkill('requanji'); + event.goto(1); + } + }, + mod:{ + maxHandcard:function(player,num){ + return num+player.storage.quanji.length; + } + }, + ai:{ + maixie:true, + maixie_hp:true, + threaten:0.8, + effect:{ + target:function(card,player,target){ + if(get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + if(!target.hasFriend()) return; + if(target.hp>=4) return [0.5,get.tag(card,'damage')*2]; + if(!target.hasSkill('paiyi')&&target.hp>1) return [0.5,get.tag(card,'damage')*1.5]; + if(target.hp==3) return [0.5,get.tag(card,'damage')*1.5]; + if(target.hp==2) return [1,get.tag(card,'damage')*0.5]; + } + } + } + } + }, + ollongdan:{ + audio:'longdan_sha', + audioname:['re_zhaoyun'], + enable:['chooseToUse','chooseToRespond'], + prompt:'将杀当做闪,或将闪当做杀,或将桃当做酒,或将酒当做桃使用或打出', + viewAs:function(cards,player){ + var name=false; + switch(get.name(cards[0],player)){ + case 'sha':name='shan';break; + case 'shan':name='sha';break; + case 'tao':name='jiu';break; + case 'jiu':name='tao';break; + } + if(name) return {name:name}; + return null; + }, + check:function(card){ + var player=_status.event.player; + if(_status.event.type=='phase'){ + var max=0; + var name2; + var list=['sha','tao','jiu']; + var map={sha:'shan',tao:'jiu',jiu:'tao'} + for(var i=0;i(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){ + var temp=get.order({name:name}); + if(temp>max){ + max=temp; + name2=map[name]; + } + } + } + if(name2==get.name(card,player)) return 1; + return 0; + } + return 1; + }, + filterCard:function(card,player,event){ + event=event||_status.event; + var filter=event._backup.filterCard; + var name=get.name(card,player); + if(name=='sha'&&filter({name:'shan',cards:[card]},player,event)) return true; + if(name=='shan'&&filter({name:'sha',cards:[card]},player,event)) return true; + if(name=='tao'&&filter({name:'jiu',cards:[card]},player,event)) return true; + if(name=='jiu'&&filter({name:'tao',cards:[card]},player,event)) return true; + return false; + }, + filter:function(event,player){ + var filter=event.filterCard; + if(filter({name:'sha'},player,event)&&player.countCards('h','shan')) return true; + if(filter({name:'shan'},player,event)&&player.countCards('h','sha')) return true; + if(filter({name:'tao'},player,event)&&player.countCards('h','jiu')) return true; + if(filter({name:'jiu'},player,event)&&player.countCards('h','tao')) return true; + return false; + }, + ai:{ + respondSha:true, + respondShan:true, + save:true, + skillTagFilter:function(player,tag){ + var name; + switch(tag){ + case 'respondSha':name='shan';break; + case 'respondShan':name='sha';break; + case 'save':name='jiu';break; + } + if(!player.countCards('h',name)) return false; + }, + order:function(item,player){ + if(player&&_status.event.type=='phase'){ + var max=0; + var list=['sha','tao','jiu']; + var map={sha:'shan',tao:'jiu',jiu:'tao'} + for(var i=0;i(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){ + var temp=get.order({name:name}); + if(temp>max) max=temp; + } + } + if(max>0) max+=0.3; + return max; + } + return 4; + }, + }, + }, + olyajiao:{ + audio:'reyajiao', + trigger:{player:'loseAfter'}, + frequent:true, + filter:function(event,player){ + return player!=_status.currentPhase&&event.hs&&event.hs.length>0&&['useCard','respond'].contains(event.getParent().name); + }, + content:function(){ + "step 0" + event.card=get.cards()[0]; + game.cardsGotoOrdering(event.card); + event.videoId=lib.status.videoId++; + var judgestr=get.translation(player)+'发动了【涯角】'; + game.addVideo('judge1',player,[get.cardInfo(event.card),judgestr,event.videoId]); + game.broadcastAll(function(player,card,str,id,cardid){ + var event; + if(game.online){ + event={}; + } + else{ + event=_status.event; + } + if(game.chess){ + event.node=card.copy('thrown','center',ui.arena).animate('start'); + } + else{ + event.node=player.$throwordered(card.copy(),true); + } + if(lib.cardOL) lib.cardOL[cardid]=event.node; + event.node.cardid=cardid; + event.node.classList.add('thrownhighlight'); + ui.arena.classList.add('thrownhighlight'); + event.dialog=ui.create.dialog(str); + event.dialog.classList.add('center'); + event.dialog.videoId=id; + },player,event.card,judgestr,event.videoId,get.id()); + + game.log(player,'展示了',event.card); + game.delay(2); + if(get.type(event.card,'trick')==get.type(trigger.getParent().card,'trick')){ + player.chooseTarget('选择获得此牌的角色').set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(_status.event.du){ + if(target.hasSkillTag('nodu')) return 0; + return -att; + } + if(att>0){ + return att+Math.max(0,5-target.countCards('h')); + } + return att; + }).set('du',event.card.name=='du'); + } + else{ + event.disbool=true; + player.chooseTarget('是否弃置攻击范围内包含你的一名角色区域内的一张牌?',function(card,player,target){ + return target.inRange(player)&&target.countDiscardableCards(player,'hej')>0; + }).set('ai',function(target){ + var player=_status.event.player; + return get.effect(target,{name:'guohe'},player,player); + }); + } + "step 1" + if(event.disbool){ + if(result.bool){ + player.line(result.targets[0],'green'); + player.discardPlayerCard(result.targets[0],'hej',true); + } + event.dialog.close(); + game.addVideo('judge2',null,event.videoId); + game.addVideo('deletenode',player,[get.cardInfo(event.node)]); + event.node.delete(); + game.broadcast(function(id,card){ + var dialog=get.idDialog(id); + if(dialog){ + dialog.close(); + } + if(card.clone){ + card.clone.delete(); + } + ui.arena.classList.remove('thrownhighlight'); + },event.videoId,event.card); + ui.arena.classList.remove('thrownhighlight'); + } + else if(result.targets){ + event.dialog.close(); + game.addVideo('judge2',null,event.videoId); + player.line(result.targets,'green'); + result.targets[0].gain(event.card,'log'); + event.node.moveDelete(result.targets[0]); + game.addVideo('gain2',result.targets[0],[get.cardInfo(event.node)]); + ui.arena.classList.remove('thrownhighlight'); + game.broadcast(function(card,target,id){ + var dialog=get.idDialog(id); + if(dialog){ + dialog.close(); + } + ui.arena.classList.remove('thrownhighlight'); + if(card.clone){ + card.clone.moveDelete(target); + } + },event.card,result.targets[0],event.videoId); + } + else{ + game.addVideo('deletenode',player,[get.cardInfo(event.node)]); + event.node.delete(); + game.broadcast(function(id){ + var dialog=get.idDialog(id); + if(dialog){ + dialog.close(); + } + if(card.clone){ + card.clone.delete(); + } + ui.arena.classList.remove('thrownhighlight'); + },event.videoId,event.card); + event.dialog.close(); + game.addVideo('judge2',null,event.videoId); + ui.arena.classList.remove('thrownhighlight'); + } + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(get.tag(card,'respond')&&target.countCards('h')>1) return [1,0.2]; + } + } + } + }, + olpaoxiao:{ + audio:"paoxiao", + audioname:['re_zhangfei','guanzhang','xiahouba'], + trigger:{player:'shaMiss'}, + forced:true, + content:function(){ + player.addTempSkill('olpaoxiao2'); + player.addMark('olpaoxiao2',1,false); + }, + mod:{ + cardUsable:function (card,player,num){ + if(card.name=='sha') return Infinity; + }, + }, + }, + olpaoxiao2:{ + trigger:{source:'damageBegin1'}, + forced:true, + audio:'paoxiao', + audioname:['re_zhangfei','guanzhang','xiahouba'], + filter:function(event,player){ + return event.card&&event.card.name=='sha'&&player.countMark('olpaoxiao2')>0; + }, + onremove:true, + content:function(){ + trigger.num+=player.countMark('olpaoxiao2'); + player.removeSkill('olpaoxiao2'); + }, + intro:{content:'本回合内下一次使用【杀】造成伤害时令伤害值+#'}, + }, + oltishen:{ + audio:'retishen', + unique:true, + mark:true, + skillAnimation:true, + animationColor:'soil', + limited:true, + trigger:{player:'phaseZhunbeiBegin'}, + filter:function(event,player){ + if(player.storage.oltishen) return false; + return player.isDamaged(); + }, + check:function(event,player){ + if(player.hp<=2||player.getDamagedHp()>2) return true; + if(player.getDamagedHp()<=1) return false; + return player.getDamagedHp()0; + })) return false; + if(event.name=='phaseDiscard'){ + var cards=[]; + player.getHistory('lose',function(evt){ + if(evt&&evt.getParent('phaseDiscard')==event&&evt.hs) cards.addArray(evt.hs); + }); + return cards.length>1; + } + else return event.es&&event.es.length>0; + }, + content:function(){ + 'step 0' + var list=['弃置至多两名其他角色的合计两张牌']; + if(lib.skill.rexuanfeng.canMoveCard(player)) list.push('将一名其他角色装备区内的一张牌移动到另一名角色的装备区内'); + player.chooseControl('cancel2').set('choiceList',list).set('prompt',get.prompt('rexuanfeng')).set('ai',function(){ + if(lib.skill.rexuanfeng.canMoveCard(player,true)) return 1; + return 0; + }); + 'step 1' + if(result.control!='cancel2'){ + player.logSkill('rexuanfeng'); + if(result.index==1) event.goto(5); + else event.count=2; + } + else event.finish(); + 'step 2' + player.chooseTarget('弃置一名其他角色的一张牌',function(card,player,target){ + if(player==target) return false; + return target.countDiscardableCards(player,'he'); + }).set('ai',function(target){ + return -get.attitude(_status.event.player,target); + }); + 'step 3' + if(result.bool){ + player.line(result.targets[0],'green'); + player.discardPlayerCard(result.targets[0],'he',true); + event.count--; + } + else event.finish(); + 'step 4' + if(event.count) event.goto(2); + else event.finish(); + 'step 5' + var next=player.chooseTarget(2,function(card,player,target){ + if(player==target) return false; + if(ui.selected.targets.length){ + var from=ui.selected.targets[0]; + if(target.isMin()) return false; + var es=from.getCards('e'); + for(var i=0;i0; + } + }); + 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(target.countCards('e',function(card){ + return get.value(card,target)<0&&game.hasPlayer(function(current){ + return current!=player&¤t!=target&&get.attitude(player,current)<0&¤t.isEmpty(get.subtype(card)) + }); + })>0) return 9; + } + else if(att<0){ + if(game.hasPlayer(function(current){ + if(current!=target&¤t!=player&&get.attitude(player,current)>0){ + var es=target.getCards('e'); + for(var i=0;i0&¤t.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;iget.attitude(player,targets1)){ + if(get.value(button.link,targets0)<0) return 10; + return 0; + } + else{ + return get.equipValue(button.link); + } + },targets[0]).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){ + var targets1=_status.event.targets1; + return targets1.isEmpty(get.subtype(button.link)); + }); + } + else{ + event.finish(); + } + 'step 9' + if(result.bool&&result.links.length){ + var link=result.links[0]; + event.targets[1].equip(link); + event.targets[0].$give(link,event.targets[1]) + game.delay(); + event.result={bool:true}; + } + }, + canMoveCard:function(player,withatt){ + return game.hasPlayer(function(current){ + if(player==current) return false; + var att=get.sgn(get.attitude(player,current)); + if(!withatt||att!=0){ + var es=current.getCards('e'); + for(var i=0;i0; + }, + content:function(){ + 'step 0' + player.chooseCardTarget({ + prompt:get.prompt2('rejieyue'), + filterCard:true, + position:'he', + filterTarget:lib.filter.notMe, + 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&&get.attitude(player,current)>0&¤t.getUseValue(card)>player.getUseValue(card)&¤t.getUseValue(card)>player.getUseValue(card); + })) return 12; + if(game.hasPlayer(function(current){ + return current!=player&&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(get.value(card,target)>get.value(card,player)) return 2*att; + return 1.2*att; + } + return -att*Math.min(4,target.countCards('he'))/4; + }, + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('rejieyue',target); + target.gain(result.cards,player,'giveAuto'); + } + else event.finish(); + 'step 2' + var num=0; + if(target.countCards('h')) num++; + if(target.countCards('e')) num++; + if(num>0){ + var next=target.chooseCard('he',num,'选择保留每个区域的各一张牌,然后弃置其余的牌。或点取消,令'+get.translation(player)+'摸三张牌',function(card){ + for(var i=0;i=0); + next.set('maxNum',num); + next.set('ai',function(card){ + if(_status.event.goon) return -1; + var num=_status.event.maxNum; + if(ui.selected.cards.length>=num-1){ + var val=get.value(player.getCards('he',function(cardx){ + return cardx!=card&&!ui.selected.cards.contains(cardx); + })); + if(val>=14) return 0; + } + return get.value(card); + }); + } + else event._result={bool:false}; + 'step 3' + if(!result.bool) player.draw(3); + else { + var cards=target.getCards('he'); + cards.removeArray(result.cards); + if(cards.length) target.discard(cards); + } + }, + ai:{ + threaten:1.3, + expose:0.2, + }, + }, + rechunlao:{ + trigger:{player:'phaseJieshuBegin'}, + direct:true, + audio:2, + filter:function(event,player){ + return player.countCards('h')>0&&(_status.connectMode||player.countCards('h','sha')>0)&&!player.storage.rechunlao.length; + }, + init:function(player){ + if(!player.storage.rechunlao) player.storage.rechunlao=[]; + }, + intro:{ + content:'cards', + onunmark:function(storage,player){ + if(storage&&storage.length){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + storage.length=0; + } + }, + }, + content:function(){ + 'step 0' + player.chooseCard([1,Math.max(1,player.countCards('h','sha'))],get.prompt('rechunlao'),{name:'sha'}).set('ai',function(){ + return 1; + }); + 'step 1' + if(result.bool){ + player.logSkill('rechunlao'); + player.storage.rechunlao=player.storage.rechunlao.concat(result.cards); + player.syncStorage('rechunlao'); + player.markSkill('rechunlao'); + player.lose(result.cards,ui.special,'toStorage'); + player.$give(result.cards,player,false); + } + }, + ai:{ + effect:{ + player:function(card,player,target){ + if(_status.currentPhase!=player) return; + if(card.name=='sha'&&!player.needsToDiscard()&& + !player.storage.rechunlao.length&&target.hp>1){ + return 'zeroplayertarget'; + } + } + }, + threaten:1.4 + }, + group:'rechunlao2' + }, + rechunlao2:{ + enable:'chooseToUse', + filter:function(event,player){ + return event.type=='dying'&&event.dying&&event.dying.hp<=0&&player.storage.rechunlao.length>0; + }, + filterTarget:function(card,player,target){ + return target==_status.event.dying; + }, + direct:true, + delay:false, + selectTarget:-1, + content:function(){ + "step 0" + player.chooseCardButton(get.translation('rechunlao'),player.storage.rechunlao,true); + "step 1" + if(result.bool){ + player.logSkill('rechunlao'); + player.$throw(result.links); + player.storage.rechunlao.remove(result.links[0]); + game.cardsDiscard(result.links[0]); + player.syncStorage('rechunlao') + event.type='dying'; + target.useCard({name:'jiu',isCard:true},target); + if(!player.storage.rechunlao.length){ + player.unmarkSkill('rechunlao'); + } + else{ + player.markSkill('rechunlao'); + } + var nature=get.nature(result.links[0]); + if(nature=='fire') player.recover(); + if(nature=='thunder') player.draw(2); + } + }, + ai:{ + order:6, + skillTagFilter:function(player){ + return player.storage.rechunlao.length>0; + }, + save:true, + result:{ + target:3 + }, + threaten:1.6 + }, + }, + reluoying:{ + audio:2, + group:['reluoying_discard','reluoying_judge'], + subfrequent:['judge'], + subSkill:{ + discard:{ + audio:'reluoying', + trigger:{global:'loseAfter'}, + filter:function(event,player){ + if(event.type!='discard') return false; + if(event.player==player) return false; + for(var i=0;i=7) return true; + player.getAllHistory('damage',function(evt){ + num+=evt.num; + }); + return num>7; + }, + content:function(){ + player.markSkill('rejiushi_mark'); + player.awakenSkill('chengzhang'); + player.storage.chengzhang=true; + player.recover(); + player.draw(); + }, + }, + rejiushi:{ + audio:2, + group:['rejiushi1','rejiushi2','rejiushi3','rejiushi_gain'], + subfrequent:['gain'], + subSkill:{ + gain:{ + audio:'rejiushi', + trigger:{player:'turnOverAfter'}, + frequent:true, + filter:function(event,player){ + return player.storage.chengzhang==true; + }, + prompt:'是否发动【酒诗】,获得牌堆中的一张锦囊牌?', + content:function(){ + var card=get.cardPile2(function(card){ + return get.type2(card)=='trick'; + }); + if(card) player.gain(card,'gain2','log'); + }, + }, + }, + }, + rejiushi1:{ + audio:'rejiushi', + enable:'chooseToUse', + filter:function(event,player){ + if(player.classList.contains('turnedover')) return false; + return event.filterCard({name:'jiu',isCard:true},player,event); + }, + content:function(){ + if(_status.event.getParent(2).type=='dying'){ + event.dying=player; + event.type='dying'; + } + player.turnOver(); + player.useCard({name:'jiu',isCard:true},player); + }, + ai:{ + save:true, + skillTagFilter:function(player){ + return player.hp<=0&&!player.isTurnedOver(); + }, + order:5, + result:{ + player:function(player){ + if(_status.event.parent.name=='phaseUse'){ + if(player.countCards('h','jiu')>0) return 0; + if(player.getEquip('zhuge')&&player.countCards('h','sha')>1) return 0; + if(!player.countCards('h','sha')) return 0; + var targets=[]; + var target; + var players=game.filterPlayer(); + for(var i=0;inum){ + target=targets[i]; + num=num2; + } + } + if(num<=0) return 0; + var e2=target.getEquip(2); + if(e2){ + if(e2.name=='tengjia'){ + if(!player.countCards('h',{name:'sha',nature:'fire'})&&!player.getEquip('zhuque')) return 0; + } + if(e2.name=='renwang'){ + if(!player.countCards('h',{name:'sha',color:'red'})) return 0; + } + if(e2.name=='baiyin') return 0; + } + if(player.getEquip('guanshi')&&player.countCards('he')>2) return 1; + return target.countCards('h')>3?0:1; + } + if(player==_status.event.dying||player.isTurnedOver()) return 3; + } + }, + effect:{ + target:function(card,player,target){ + if(card.name=='guiyoujie') return [0,0.5]; + if(target.isTurnedOver()){ + if(get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + if(target.hp==1) return; + return [1,target.countCards('h')/2]; + } + } + } + } + }, + }, + rejiushi2:{ + trigger:{player:'damageBegin3'}, + silent:true, + firstDo:true, + filter:function(event,player){ + return player.classList.contains('turnedover'); + }, + content:function(){ + trigger.rejiushi=true; + } + }, + rejiushi3:{ + audio:'rejiushi', + trigger:{player:'damageEnd'}, + check:function(event,player){ + return player.isTurnedOver(); + }, + filter:function(event,player){ + if(event.rejiushi){ + return true; + } + return false; + }, + prompt:function(event,player){ + var str='是否发动【酒诗】,将武将牌翻面'; + if(!player.storage.chengzhang) str+=',并获得牌堆中的一张锦囊牌'; + str+='?' + return str; + }, + content:function(){ + delete trigger.rejiushi; + player.turnOver(); + if(!player.storage.chengzhang){ + var card=get.cardPile2(function(card){ + return get.type2(card)=='trick'; + }); + if(card) player.gain(card,'gain2','log'); + } + } + }, + rejiushi_mark:{ + mark:true, + marktext:'改', + intro:{ + content:'当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。当你受到伤害后,若你的武将牌背面向上,你可以翻面。当你翻面时,你获得牌堆中的一张随机锦囊。', + }, + }, + rehongyan:{ + audio:2, + mod:{ + suit:function(card,suit){ + if(suit=='spade') return 'heart'; + } + }, + trigger:{player:'loseEnd'}, + filter:function(event,player){ + if(player==_status.currentPhase||!event.visible||player.hp<=player.countCards('h')) return false; + for(var i=0;i=4&&shas.length>=3){ + num=3; + } + else if(player.hp>=3&&shas.length>=2){ + num=2; + } + else{ + num=1 + } + var map={}; + var list=[]; + for(var i=1;i<=player.hp;i++){ + var cn=get.cnNumber(i,true); + map[cn]=i; + list.push(cn); + } + event.map=map; + player.awakenSkill('reqimou'); + player.storage.reqimou=true; + player.chooseControl(list,function(){ + return get.cnNumber(_status.event.goon,true); + }).set('prompt','失去任意点体力').set('goon',num); + 'step 1' + var num=event.map[result.control]||1; + player.storage.reqimou2=num; + player.loseHp(num); + player.draw(num); + player.addTempSkill('reqimou2'); + }, + ai:{ + order:2, + result:{ + player:function(player){ + if(player.hp==1) return 0; + var shas=player.getCards('h','sha'); + if(!shas.length) return 0; + var card=shas[0]; + if(!lib.filter.cardEnabled(card,player)) return 0; + if(lib.filter.cardUsable(card,player)) return 0; + var mindist; + if(player.hp>=4&&shas.length>=3){ + mindist=4; + } + else if(player.hp>=3&&shas.length>=2){ + mindist=3; + } + else{ + mindist=2; + } + if(game.hasPlayer(function(current){ + return (current.hp<=mindist-1&& + get.distance(player,current,'attack')<=mindist&& + player.canUse(card,current,false)&& + get.effect(current,card,player,player)>0); + })){ + return 1; + } + return 0; + } + } + } + }, + reqimou2:{ + onremove:true, + mod:{ + cardUsable:function(card,player,num){ + if(typeof player.storage.reqimou2=='number'&&card.name=='sha'){ + return num+player.storage.reqimou2; + } + }, + globalFrom:function(from,to,distance){ + if(typeof from.storage.reqimou2=='number'){ + return distance-from.storage.reqimou2; + } + } + } + }, + olniepan:{ + audio:2, + unique:true, + enable:'chooseToUse', + mark:true, + skillAnimation:true, + animationStr:'涅盘', + limited:true, + animationColor:'orange', + init:function(player){ + player.storage.olniepan=false; + }, + filter:function(event,player){ + if(player.storage.olniepan) return false; + if(event.type=='dying'){ + if(player!=event.dying) return false; + return true; + } + return false; + }, + content:function(){ + 'step 0' + player.awakenSkill('olniepan'); + player.storage.olniepan=true; + player.discard(player.getCards('hej')); + 'step 1' + player.link(false); + 'step 2' + player.turnOver(false); + 'step 3' + player.draw(3); + 'step 4' + if(player.hp<3){ + player.recover(3-player.hp); + } + 'step 5' + player.chooseControl('bazhen','rehuoji','rekanpo').set('prompt','选择获得一个技能').ai=function(){ + return ['rehuoji','bazhen'].randomGet(); + }; + 'step 6' + player.addSkillLog(result.control); + }, + ai:{ + order:1, + skillTagFilter:function(player){ + if(player.storage.olniepan) return false; + if(player.hp>0) return false; + }, + save:true, + result:{ + player:function(player){ + if(player.hp<=0) return 10; + if(player.hp<=2&&player.countCards('he')<=1) return 10; + return 0; + } + }, + threaten:function(player,target){ + if(!target.storage.olniepan) return 0.6; + } + }, + intro:{ + content:'limited' + } + }, + rewurong:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('h')>0; + }, + filterTarget:function(card,player,target){ + return target!=player&&target.countCards('h')>0; + }, + content:function(){ + "step 0" + if(target.countCards('h')==0||player.countCards('h')==0){ + event.finish(); + return; + } + "step 1" + var sendback=function(){ + if(_status.event!=event){ + return function(){ + event.resultOL=_status.event.resultOL; + }; + } + }; + if(player.isOnline()){ + player.wait(sendback); + event.ol=true; + player.send(function(){ + game.me.chooseCard(true).set('glow_result',true).ai=function(){ + return Math.random(); + }; + game.resume(); + }); + } + else{ + event.localPlayer=true; + player.chooseCard(true).set('glow_result',true).ai=function(){ + return Math.random(); + }; + } + if(target.isOnline()){ + target.wait(sendback); + event.ol=true; + target.send(function(){ + var rand=Math.random()<0.4; + game.me.chooseCard(true).set('glow_result',true).ai=function(card){ + if(rand) return card.name=='shan'?1:0; + return card.name=='shan'?0:1; + }; + game.resume(); + }); + } + else{ + event.localTarget=true; + } + "step 2" + if(event.localPlayer){ + event.card1=result.cards[0]; + } + if(event.localTarget){ + var rand=Math.random()<0.4; + target.chooseCard(true).set('glow_result',true).ai=function(card){ + if(rand) return card.name=='shan'?1:0; + return card.name=='shan'?0:1; + }; + } + "step 3" + if(event.localTarget){ + event.card2=result.cards[0]; + } + if(!event.resultOL&&event.ol){ + game.pause(); + } + "step 4" + try{ + if(!event.card1) event.card1=event.resultOL[player.playerid].cards[0]; + if(!event.card2) event.card2=event.resultOL[target.playerid].cards[0]; + if(!event.card1||!event.card2){ + throw('err'); + } + } + catch(e){ + console.log(e); + event.finish(); + return; + } + if(event.card2.number>=10||event.card2.number<=4){ + if(target.countCards('h')>2){ + event.addToAI=true; + } + } + game.broadcastAll(function(card1,card2){ + card1.classList.remove('glow'); + card2.classList.remove('glow'); + },event.card1,event.card2); + "step 5" + game.broadcastAll(function(){ + ui.arena.classList.add('thrownhighlight'); + }); + game.addVideo('thrownhighlight1'); + player.$compare(event.card1,target,event.card2); + game.delay(4); + "step 6" + game.log(player,'展示了',event.card1); + game.log(target,'展示了',event.card2); + var name1=get.name(event.card1); + var name2=get.name(event.card2); + if(name1=='sha'&&name2!='shan'){ + //player.discard(event.card1).set('animate',false); + target.$gain2(event.card2); + var clone=event.card1.clone; + if(clone){ + clone.style.transition='all 0.5s'; + clone.style.transform='scale(1.2)'; + clone.delete(); + game.addVideo('deletenode',player,get.cardsInfo([clone])); + } + game.broadcast(function(card){ + var clone=card.clone; + if(clone){ + clone.style.transition='all 0.5s'; + clone.style.transform='scale(1.2)'; + clone.delete(); + } + },event.card1); + target.damage('nocard'); + } + else if(name1!='sha'&&name2=='shan'){ + //player.discard(event.card1).set('animate',false); + target.$gain2(event.card2); + var clone=event.card1.clone; + if(clone){ + clone.style.transition='all 0.5s'; + clone.style.transform='scale(1.2)'; + clone.delete(); + game.addVideo('deletenode',player,get.cardsInfo([clone])); + } + game.broadcast(function(card){ + var clone=card.clone; + if(clone){ + clone.style.transition='all 0.5s'; + clone.style.transform='scale(1.2)'; + clone.delete(); + } + },event.card1); + player.gainPlayerCard(target,true,'he'); + } + else{ + player.$gain2(event.card1); + target.$gain2(event.card2); + } + game.broadcastAll(function(){ + ui.arena.classList.remove('thrownhighlight'); + }); + game.addVideo('thrownhighlight2'); + }, + ai:{ + order:6, + result:{ + target:-1, + } + } + }, + cangzhuo:{ + trigger:{player:'phaseDiscardBegin'}, + frequent:true, + audio:2, + filter:function(event,player){ + return player.getHistory('useCard',function(card){ + return get.type(card.card,'trick')=='trick'; + }).length==0; + }, + content:function(){ + player.addTempSkill('cangzhuo2'); + }, + }, + cangzhuo2:{ + mod:{ + ignoredHandcard:function(card,player){ + if(get.type(card,'trick')=='trick'){ + return true; + } + }, + cardDiscardable:function(card,player,name){ + if(name=='phaseDiscard'&&get.type(card,'trick')=='trick') return false; + } + }, + }, + shebian:{ + trigger:{player:'turnOverEnd'}, + check:function(event,player){ + return player.canMoveCard(true,true); + }, + filter:function(event,player){ + return player.canMoveCard(null,true); + }, + content:function(){ + player.moveCard().nojudge=true; + }, + }, + rexianzhen:{ + 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.player&&get.name(result.player.name,player)=='sha') player.addTempSkill('rexianzhen4'); + if(result.bool){ + player.storage[event.name]=target; + player.addTempSkill(event.name+2); + } + else{ + player.addTempSkill(event.name+3); + } + }, + ai:{ + order:function(name,player){ + var cards=player.getCards('h'); + if(player.countCards('h','sha')==0){ + return 1; + } + for(var i=0;i11&&get.value(cards[i])<7){ + return 9; + } + } + return get.order({name:'sha'})-1; + }, + result:{ + player:function(player){ + if(player.countCards('h','sha')>0) return 0; + var num=player.countCards('h'); + if(num>player.hp) return 0; + if(num==1) return -2; + if(num==2) return -1; + return -0.7; + }, + target:function(player,target){ + var num=target.countCards('h'); + if(num==1) return -1; + if(num==2) return -0.7; + return -0.5 + }, + }, + threaten:1.3 + } + }, + rexianzhen2:{ + charlotte:true, + mod:{ + targetInRange:function(card,player,target){ + if(target==player.storage.rexianzhen) return true; + }, + cardUsable:function(card,player,num){ + if(card.name=='sha'&&typeof num=='number') return num+100; + }, + playerEnabled:function(card,player,target){ + if(card.name=='sha'&&player.storage.rexianzhen!=target&&!ui.selected.targets.contains(player.storage.rexianzhen)){ + var num=player.getCardUsable(card)-100; + if(num<=0) return false; + } + } + }, + ai:{ + unequip:true, + skillTagFilter:function(player,tag,arg){ + if(arg.target!=player.storage.rexianzhen) return false; + }, + } + }, + rexianzhen3:{ + charlotte:true, + mod:{ + cardEnabled:function(card){if(card.name=='sha') return false} + } + }, + rexianzhen4:{ + mod:{ + ignoredHandcard:function(card,player){ + if(get.name(card)=='sha'){ + return true; + } + }, + cardDiscardable:function(card,player,name){ + if(name=='phaseDiscard'&&get.name(card)=='sha'){ + return false; + } + }, + }, + }, + rejinjiu:{ + mod:{ + cardname:function(card,player){ + if(card.name=='jiu') return 'sha'; + }, + }, + ai:{ + skillTagFilter:function(player){ + if(!player.countCards('h','jiu')) return false; + }, + respondSha:true, + }, + audio:2, + trigger:{player:['useCard1','respond']}, + firstDo:true, + forced:true, + filter:function(event,player){ + return event.card.name=='sha'&&!event.skill&& + event.cards.length==1&&event.cards[0].name=='jiu'; + }, + content:function(){}, + group:'rejinjiu2', + global:'rejinjiu3', + }, + rejinjiu3:{ + mod:{ + cardEnabled:function(card,player){ + if(card.name=='jiu'&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.hasSkill('rejinjiu')) return false; + }, + cardSavable:function(card,player){ + if(card.name=='jiu'&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.hasSkill('rejinjiu')) return false; + }, + }, + }, + rejinjiu2:{ + audio:'rejinjiu', + forced:true, + trigger:{player:'damageBegin3'}, + filter:function(event,player){ + return event.getParent(2).jiu==true; + }, + content:function(){ + trigger.num-=trigger.getParent(2).jiu_add; + }, + ai:{ + filterDamage:true, + skillTagFilter:function(player,tag,arg){ + return arg&&arg.jiu==true; + }, + }, + }, + repojun:{ + shaRelated:true, + audio:2, + trigger:{player:'useCardToPlayered'}, + direct:true, + filter:function(event,player){ + return event.card.name=='sha'&&event.target.hp>0&&event.target.countCards('he')>0; + }, + content:function(){ + 'step 0' + var next=player.choosePlayerCard(trigger.target,'he',[1,Math.min(trigger.target.hp,trigger.target.countCards('he'))],get.prompt('repojun',trigger.target)); + next.set('ai',function(button){ + if(!_status.event.goon) return 0; + var val=get.value(button.link); + if(button.link==_status.event.target.getEquip(2)) return 2*(val+3); + return val; + }); + next.set('goon',get.attitude(player,trigger.target)<=0); + next.set('forceAuto',true); + 'step 1' + if(result.bool){ + var target=trigger.target; + player.logSkill('repojun',trigger.target); + target.addSkill('repojun2'); + target.storage.repojun2.addArray(result.cards); + target.lose(result.cards,ui.special,'toStorage'); + game.log(target,'失去了'+get.cnNumber(result.cards.length)+'张牌'); + target.markSkill('repojun2'); + } + }, + ai:{ + unequip_ai:true, + skillTagFilter:function(player,tag,arg){ + if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true; + return false; + } + }, + group:'repojun3', + }, + repojun3:{ + audio:'repojun', + trigger:{source:'damageBegin1'}, + forced:true, + locked:false, + logTarget:'player', + filter:function(event,player){ + var target=event.player; + return event.getParent().name=='sha'&&player.countCards('h')>=target.countCards('h')&&player.countCards('e')>=target.countCards('e'); + }, + content:function(){ + trigger.num++; + }, + }, + repojun2:{ + 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.repojun2&&player.storage.repojun2.length>0; + }, + content:function(){ + game.log(player,'收回了'+get.cnNumber(player.gain(player.storage.repojun2,'draw','fromStorage').cards.length)+'张〖破军〗牌'); + player.storage.repojun2.length=0; + player.removeSkill('repojun2'); + }, + intro:{ + onunmark:'throw', + content:'cardCount', + }, + }, + reganlu:{ + enable:'phaseUse', + usable:1, + audio:2, + selectTarget:2, + delay:0, + filterTarget:function(card,player,target){ + if(target.isMin()) return false; + if(ui.selected.targets.length==0) return true; + if(ui.selected.targets[0].countCards('e')==0&&target.countCards('e')==0) return false; + return target==player||ui.selected.targets[0]==player||Math.abs(ui.selected.targets[0].countCards('e')-target.countCards('e'))<=player.maxHp-player.hp; + }, + multitarget:true, + multiline:true, + content:function(){ + targets[0].swapEquip(targets[1]); + }, + ai:{ + order:10, + threaten:function(player,target){ + return 0.8*Math.max(1+target.maxHp-target.hp); + }, + result:{ + target:function(player,target){ + var list1=[]; + var list2=[]; + var num=player.maxHp-player.hp; + var players=game.filterPlayer(); + for(var i=0;i0) list1.push(players[i]); + else if(get.attitude(player,players[i])<0) list2.push(players[i]); + } + list1.sort(function(a,b){ + return a.countCards('e')-b.countCards('e'); + }); + list2.sort(function(a,b){ + return b.countCards('e')-a.countCards('e'); + }); + var delta; + for(var i=0;i0&&!player.hasSkill('olfangquan3'); + }, + direct:true, + content:function(){ + "step 0" + var fang=player.countMark('olfangquan2')==0&&player.hp>=2&&player.countCards('h')<=player.hp+1; + player.chooseBool(get.prompt2('olfangquan')).set('ai',function(){ + if(!_status.event.fang) return false; + return game.hasPlayer(function(target){ + if(target.hasJudge('lebu')||target==player) return false; + if(get.attitude(player,target)>4){ + return (get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1)>0); + } + return false; + }); + }).set('fang',fang); + "step 1" + if(result.bool){ + player.logSkill('olfangquan'); + trigger.cancel(); + player.addTempSkill('olfangquan2'); + player.addMark('olfangquan2',1,false); + } + } + }, + olfangquan2:{ + trigger:{player:'phaseDiscardBegin'}, + forced:true, + popup:false, + audio:false, + onremove:true, + content:function(){ + "step 0" + event.count=player.countMark(event.name); + player.removeMark(event.name,event.count,false); + "step 1" + event.count--; + player.chooseToDiscard('是否弃置一张牌并令一名其他角色进行一个额外回合?').set('logSkill','olfangquan').ai=function(card){ + return 20-get.value(card); + }; + "step 2" + if(result.bool){ + player.chooseTarget(true,'请选择进行额外回合的目标角色',lib.filter.notMe).ai=function(target){ + if(target.hasJudge('lebu')) return -1; + if(get.attitude(player,target)>4){ + return get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1); + } + return -1; + }; + } + else event.finish(); + "step 3" + var target=result.targets[0]; + player.line(target,'fire'); + target.markSkillCharacter('olfangquan',player,'放权','进行一个额外回合'); + target.insertPhase(); + target.addSkill('olfangquan3'); + if(event.count>0) event.goto(1); + } + }, + olfangquan3:{ + trigger:{player:['phaseAfter','phaseCancelled']}, + forced:true, + popup:false, + audio:false, + content:function(){ + player.unmarkSkill('olfangquan'); + player.removeSkill('olfangquan3'); + } + }, + olluanji:{ + inherit:'luanji', + audioname:['shen_caopi'], + audio:2, + line:false, + group:'olluanji_remove', + check:function(card){ + return 7-get.value(card); + }, + }, + olluanji_remove:{ + trigger:{player:'useCard2'}, + direct:true, + filter:function(event,player){ + return event.card.name=='wanjian'&&event.targets.length>0; + }, + line:false, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('olluanji'),'为'+get.translation(trigger.card)+'减少一个目标',function(card,player,target){ + return _status.event.targets.contains(target) + }).set('targets',trigger.targets).set('ai',function(target){ + var player=_status.event.player; + return -get.effect(target,_status.event.getTrigger().card,player,player) + }); + 'step 1' + if(result.bool){ + player.logSkill('olluanji',result.targets); + trigger.targets.remove(result.targets[0]); + } + }, + }, + olxueyi:{ + audio:2, + trigger:{global:'phaseBefore'}, + forced:true, + zhuSkill:true, + unique:true, + filter:function(event,player){ + return !player.storage.olxueyi_inited&&player.hasZhuSkill('olxueyi'); + }, + content:function(){ + player.storage.olxueyi_inited=true; + var num=game.countPlayer(function(current){ + return current.group=='qun'; + }) + if(num) player.addMark('olxueyi',num) + }, + marktext:'裔', + intro:{ + name2:'裔', + content:'mark', + }, + mod:{ + maxHandcard:function(player,num){ + if(player.hasZhuSkill('olxueyi')) return num+2*player.countMark('olxueyi'); + }, + }, + group:'olxueyi_draw', + }, + olxueyi_draw:{ + audio:'olxueyi', + trigger:{player:'phaseBegin'}, + prompt2:'弃置一枚「裔」标记,然后摸一张牌', + check:function(event,player){ + return !player.hasJudge('lebu')&&player.getUseValue('wanjian')>0; + }, + filter:function(event,player){ + return player.hasZhuSkill('olxueyi')&&player.hasMark('olxueyi'); + }, + content:function(){ + player.removeMark('olxueyi',1); + player.draw(); + }, + }, + olhunzi:{ + audio:2, + inherit:'hunzi', + content:function(){ + player.loseMaxHp(); + player.recover(); + player.addSkill('reyingzi'); + player.addSkill('gzyinghun'); + game.log(player,'获得了技能','#g【英姿】','和','#g【英魂】'); + player.awakenSkill(event.name); + player.storage[event.name]=true; + } + }, + olzhiba:{ + audio:2, + unique:true, + zhuSkill:true, + global:'olzhiba2', + }, + olzhiba2:{ + ai:{ + order:1, + result:{ + target:function(player,target){ + if(player.hasZhuSkill('olzhiba')&&!player.hasSkill('olzhiba3')&&target.group=='wu'){ + if(player.countCards('h',function(card){ + var val=get.value(card); + if(val<0) return true; + if(val<=5){ + return card.number>=12; + } + if(val<=6){ + return card.number>=13; + } + return false; + })>0) return -1; + return 0; + } + else{ + if(player.countCards('h','du')&&get.attitude(player,target)<0) return -1; + if(player.countCards('h')<=player.hp) return 0; + var maxnum=0; + var cards2=target.getCards('h'); + for(var i=0;imaxnum){ + maxnum=cards2[i].number; + } + } + if(maxnum>10) maxnum=10; + if(maxnum<5&&cards2.length>1) maxnum=5; + var cards=player.getCards('h'); + for(var i=0;i0||target.countCards('h',function(card){ + var val=get.value(card); + if(val<0) return true; + if(val<=5){ + return card.number>=12; + } + if(val<=6){ + return card.number>=13; + } + return false; + })>0)).set('ai',function(){return _status.event.choice}); + } + else event._result={bool:true}; + 'step 3' + if(result.bool) event.getParent().zhiba_target=target; + else{ + game.log(target,'拒绝了',player,'的拼点请求'); + target.chat('拒绝'); + } + }, + content:function(){ + 'step 0' + event.source=event.getParent().zhiba_target; + if(!event.source){ + event.finish(); + } + 'step 1' + player.chooseToCompare(target).set('small',target==source&&get.attitude(player,target)>0); + 'step 2' + if(player==source&&result.bool||target==source&&!result.bool){ + event.cards=[result.player,result.target].filterInD('d'); + if(!event.cards.length) event.finish(); + else source.chooseControl('ok','cancel2').set('dialog',['是否获得拼点牌?',event.cards]).set('ai',function(){ + if(get.value(event.cards,source,'raw')<=0) return false; + return true; + }); + } + else event.finish(); + 'step 3' + if(result.control!='cancel2') source.gain(event.cards,'gain2','log'); + }, + }, + olzhiba3:{}, + rehuashen:{ + //mode:['identity','single','doudizhu'], + audio:2, + unique:true, + direct:true, + content:function(){ + "step 0" + _status.noclearcountdown=true; + event.videoId=lib.status.videoId++; + var cards=player.storage.rehuashen.character.slice(0); + if(player.isOnline2()){ + player.send(function(cards,id){ + var dialog=ui.create.dialog('是否发动【化身】?',[cards,'character']); + dialog.videoId=id; + },cards,event.videoId); + } + event.dialog=ui.create.dialog(get.prompt('rehuashen'),[cards,'character']); + event.dialog.videoId=event.videoId; + if(!event.isMine()){ + event.dialog.style.display='none'; + } + if(event.triggername=='rehuashen') event._result={control:'更换技能'}; + else player.chooseControl('弃置化身','更换技能','cancel2'); + "step 1" + event.control=result.control; + if(event.control=='cancel2'){ + if(player.isOnline2()){ + player.send('closeDialog',event.videoId); + } + delete _status.noclearcountdown; + if(!_status.noclearcountdown){ + game.stopCountChoose(); + } + event.dialog.close(); + event.finish();return; + } + if(!event.logged){player.logSkill('rehuashen');event.logged=true} + var next=player.chooseButton(true).set('dialog',event.videoId); + if(event.control=='弃置化身'){ + next.set('selectButton',[1,2]); + next.set('filterButton',function(button){ + return button.link!=_status.event.current; + }); + next.set('current',player.storage.rehuashen.current); + } + var prompt=event.control=='弃置化身'?'选择弃置至多两张化身':'选择要切换的化身'; + var func=function(id,prompt){ + var dialog=get.idDialog(id); + if(dialog){ + dialog.content.childNodes[0].innerHTML=prompt; + } + } + if(player.isOnline2()){ + player.send(func,event.videoId,prompt); + } + else if(event.isMine()){ + func(event.videoId,prompt); + } + "step 2" + if(result.bool&&event.control!='弃置化身'){ + event.card=result.links[0]; + var func=function(card,id){ + var dialog=get.idDialog(id); + if(dialog){ + for(var i=0;i0; + }, + banned:['lisu','sp_xiahoudun','xushao'], + addHuashen:function(player){ + if(!player.storage.rehuashen) return; + 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&¤t.storage.rehuashen.character) list.removeArray(current.storage.rehuashen.character) + }); + _status.characterlist=list; + } + _status.characterlist.randomSort(); + var bool=false; + for(var i=0;i<_status.characterlist.length;i++){ + var name=_status.characterlist[i]; + if(name.indexOf('zuoci')!=-1||name.indexOf('key')==0||lib.skill.rehuashen.banned.contains(name)||player.storage.rehuashen.character.contains(name)) continue; + var skills=lib.character[name][3]; + for(var j=0;j0) return '不质疑'; + return Math.random()<0.5?'不质疑':'质疑'; + }); + } + 'step 2' + if(!result.control) result.control='不质疑'; + //event.guessers[0].chat(result.control); + //game.delay(); + if(result.control=='不质疑'){ + //game.log(event.guessers[0],'#g不质疑'); + event.ally.push(event.guessers[0]); + }else{ + //game.log(event.guessers[0],'#y质疑'); + event.betray.push(event.guessers[0]); + } + event.guessers.remove(event.guessers[0]); + if(event.guessers.length) event.goto(1); + 'step 3' + for(var i=0;i0) return '不质疑'; + return Math.random()<0.5?'不质疑':'质疑'; + }); + } + 'step 3' + if(!result.control) result.control='不质疑'; + //event.guessers[0].chat(result.control); + //game.delay(); + if(result.control=='不质疑'){ + //game.log(event.guessers[0],'#g不质疑'); + event.ally.push(event.guessers[0]); + }else{ + //game.log(event.guessers[0],'#y质疑'); + event.betray.push(event.guessers[0]); + } + event.guessers.remove(event.guessers[0]); + if(event.guessers.length) event.goto(2); + 'step 4' + for(var i=0;i0; + }, + viewAs:{ + name:"wuxie", + }, + check:function(card){ + if(card.name=='wuxie') return 1000; + return 0; + }, + prompt:"将一张手牌当无懈可击使用", + threaten:1.2, + }, + reguhuo_phase:{}, + rechanyuan:{ + //charlotte:true, + firstDo:true, + trigger:{ + player:["phaseBefore","changeHp"], + }, + priority:99, + forced:true, + popup:false, + unique:true, + content:function (){ + if(player.hp<=1){ + var skills=player.getSkills(true,false); + for(var i=0;i1&&card.number<10) return 5; + return 4; + } + if(suit=='club') return 2; + return 0; + }, + content:function(){ + player.judge(lib.skill.xinleiji.judgeCheck); + }, + ai:{ + useShan:true, + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'respondShan')){ + var hastarget=game.hasPlayer(function(current){ + return get.attitude(target,current)<0; + }); + var be=target.countCards('e',{color:'black'}); + if(target.countCards('h','shan')&&be){ + if(!target.hasSkill('xinguidao')) return 0; + return [0,hastarget?target.countCards('he')/2:0]; + } + if(target.countCards('h','shan')&&target.countCards('h')>2){ + if(!target.hasSkill('xinguidao')) return 0; + return [0,hastarget?target.countCards('h')/4:0]; + } + if(target.countCards('h')>3||(be&&target.countCards('h')>=2)){ + return [0,0]; + } + if(target.countCards('h')==0){ + return [1.5,0]; + } + if(target.countCards('h')==1&&!be){ + return [1.2,0]; + } + if(!target.hasSkill('xinguidao')) return [1,0.05]; + return [1,Math.min(0.5,(target.countCards('h')+be)/4)]; + } + } + } + } + }, + xinleiji_misa:{ + audio:'xinleiji', + trigger:{player:'judgeAfter'}, + direct:true, + filter:function(event,player){ + return event.judgestr!='暴虐'&&event.judgestr!='助祭'&&['spade','club'].contains(event.result.suit); + }, + content:function(){ + 'step 0' + event.num=1+['club','spade'].indexOf(trigger.result.suit); + event.logged=false; + if(event.num==1&&player.isDamaged()){ + event.logged=true; + player.logSkill('xinleiji'); + player.recover(); + } + player.chooseTarget('雷击:是否对一名角色造成'+event.num+'点雷电伤害?',lib.filter.notMe).ai=function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player,'thunder'); + }; + 'step 1' + if(result.bool&&result.targets&&result.targets.length){ + if(!event.logged) player.logSkill('xinleiji',result.targets); + else player.line(result.targets,'thunder'); + result.targets[0].damage(event.num,'thunder'); + } + }, + }, + xinguidao:{ + audio:2, + trigger:{global:'judge'}, + filter:function(event,player){ + return player.countCards('he',{color:'black'})>0; + }, + direct:true, + content:function(){ + "step 0" + player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ + get.translation(trigger.player.judging[0])+','+get.prompt('xinguidao'),'he',function(card){ + if(get.color(card)!='black') return false; + var player=_status.event.player; + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + if(mod!='unchanged') return mod; + return true; + }).set('ai',function(card){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + var judging=_status.event.judging; + var result=trigger.judge(card)-trigger.judge(judging); + var attitude=get.attitude(player,trigger.player); + if(attitude==0||result==0){ + if(trigger.player!=player) return 0; + if(game.hasPlayer(function(current){ + return get.attitude(player,current)<0; + })){ + var checkx=lib.skill.xinleiji.judgeCheck(card,true)-lib.skill.xinleiji.judgeCheck(judging); + if(checkx>0) return checkx; + } + return 0; + }; + if(attitude>0){ + return result; + } + else{ + return -result; + } + }).set('judging',trigger.player.judging[0]); + "step 1" + if(result.bool){ + player.respond(result.cards,'highlight','xinguidao','noOrdering'); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + player.$gain2(trigger.player.judging[0]); + player.gain(trigger.player.judging[0]); + var card=result.cards[0]; + if(get.suit(card)=='spade'&&card.number>1&&card.number<10) player.draw('nodelay'); + trigger.player.judging[0]=result.cards[0]; + trigger.orderingCards.addArray(result.cards); + game.log(trigger.player,'的判定牌改为',result.cards[0]); + } + "step 3" + game.delay(2); + }, + ai:{ + rejudge:true, + tag:{ + rejudge:1 + } + } + }, + reqingguo:{ + audio:2, + enable:['chooseToRespond','chooseToUse'], + filterCard:function(card){ + return get.color(card)=='black'; + }, + position:'he', + viewAs:{name:'shan'}, + viewAsFilter:function(player){ + if(!player.countCards('he',{color:'black'})) return false; + }, + prompt:'将一张黑色牌当闪打出', + check:function(){return 1}, + ai:{ + respondShan:true, + skillTagFilter:function(player){ + if(!player.countCards('he',{color:'black'})) return false; + }, + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'respondShan')&¤t<0) return 0.6 + } + } + } + }, + reqiangxi:{ + subSkill:{ + off:{ + sub:true, + }, + }, + audio:2, + enable:"phaseUse", + filterCard:function (card){ + return get.subtype(card)=='equip1'; + }, + selectCard:function (){ + return [0,1]; + }, + filterTarget:function (card,player,target){ + if(player==target) return false; + if(target.hasSkill('reqiangxi_off')) return false; + return player.inRange(target); + }, + content:function (){ + "step 0" + if(cards.length==0){ + player.loseHp(); + } + "step 1" + target.addTempSkill('reqiangxi_off'); + target.damage('nocard'); + }, + check:function (card){ + return 10-get.value(card); + }, + position:"he", + ai:{ + order:8.5, + result:{ + target:function (player,target){ + if(!player.countCards('he',{type:'equip'})){ + if(player.hp<2) return 0; + if(target.hp>=player.hp) return 0; + } + return get.damageEffect(target,player); + }, + }, + }, + threaten:1.5, + }, + rehuoji:{ + position:"he", + audio:2, + audioname:['ol_sp_zhugeliang','ol_pangtong'], + enable:"chooseToUse", + filterCard:function (card){ + return get.color(card)=='red'; + }, + viewAs:{ + name:"huogong", + nature:"fire", + }, + viewAsFilter:function (player){ + if(!player.countCards('he',{color:'red'})) return false; + }, + prompt:"将一张红色牌当火攻使用", + check:function (card){ + var player=_status.currentPhase; + if(player.countCards('h')>player.hp){ + return 6-get.value(card); + } + return 4-get.value(card) + }, + }, + rekanpo:{ + audio:2, + audioname:['ol_sp_zhugeliang','ol_pangtong'], + position:"he", + enable:"chooseToUse", + filterCard:function (card){ + return get.color(card)=='black'; + }, + viewAsFilter:function (player){ + return player.countCards('he',{color:'black'})>0; + }, + viewAs:{ + name:"wuxie", + }, + prompt:"将一张黑色手牌当无懈可击使用", + check:function (card){return 8-get.value(card)}, + }, + rejieming:{ + audio:2, + trigger:{ + player:"damageEnd", + }, + direct:true, + content:function (){ + "step 0" + event.count=trigger.num; + "step 1" + player.chooseTarget(get.prompt('rejieming'),'令一名角色摸两张牌。然后若其手牌数少于体力上限,你摸一张牌').set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(att>2){ + if((target.maxHp-target.countCards('h'))>2) return 2*att; + return att; + } + return att/3; + }); + "step 2" + if(result.bool){ + event.current=result.targets[0]; + player.logSkill('rejieming',event.current); + player.line(event.current,'thunder'); + event.current.draw(2); + event.count--; + } + else event.finish(); + "step 3" + if(event.current.countCards('h')0) event.goto(1); + }, + ai:{ + maixie:true, + "maixie_hp":true, + effect:{ + target:function (card,player,target,current){ + if(get.tag(card,'damage')&&target.hp>1){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + var max=0; + var players=game.filterPlayer(); + for(var i=0;i0){ + max=Math.max(Math.min(5,players[i].hp)-players[i].countCards('h'),max); + } + } + switch(max){ + case 0:return 2; + case 1:return 1.5; + case 2:return [1,2]; + default:return [0,max]; + } + } + if((card.name=='tao'||card.name=='caoyao')&& + target.hp>1&&target.countCards('h')<=target.hp) return [0,0]; + }, + }, + }, + }, + reshuangxiong:{ + trigger:{ + player:"phaseDrawBegin1", + }, + group:"reshuangxiong2", + audio:"shuangxiong", + audioname:['re_yanwen'], + check:function (event,player){ + if(player.countCards('h')>player.hp) return true; + if(player.countCards('h')>3) return true; + return false; + }, + filter:function(event,player){ + return !event.numFixed; + }, + content:function (){ + "step 0" + trigger.changeToZero(); + event.cards=get.cards(2); + event.videoId=lib.status.videoId++; + game.broadcastAll(function(player,id,cards){ + var str; + if(player==game.me&&!_status.auto){ + str='【双雄】选择获得其中一张牌'; + } + else{ + str='双雄'; + } + var dialog=ui.create.dialog(str,cards); + dialog.videoId=id; + },player,event.videoId,event.cards); + event.time=get.utc(); + game.addVideo('showCards',player,['双雄',get.cardsInfo(event.cards)]); + game.addVideo('delay',null,2); + "step 1" + var next=player.chooseButton([1,1],true); + next.set('dialog',event.videoId); + next.set('ai',function(button){ + var player=_status.event.player; + var color=get.color(button.link); + var value=get.value(button.link,player); + if(player.countCards('h',{color:color})>player.countCards('h',['red','black'].remove(color)[0])) value+=5; + return value; + }); + "step 2" + if(result.bool&&result.links){ + var cards2=[]; + for(var i=0;i0){ + game.delay(0,time); + } + "step 3" + game.broadcastAll('closeDialog',event.videoId); + var card2=event.card2; + player.gain(card2,'gain2'); + player.addTempSkill('shuangxiong2'); + player.storage.shuangxiong=get.color(card2); + }, + }, + "reshuangxiong2":{ + trigger:{ + player:"damageEnd", + }, + direct:true, + filter:function (event,player){ + var evt=event.getParent(); + return (evt&&evt.name=='juedou'&&evt[player==evt.player?'targetCards':'playerCards'].length)>0; + }, + content:function (){ + "step 0" + var evt=trigger.getParent(); + var cards=evt[player==evt.player?'targetCards':'playerCards'].slice(0); + for(var i=0;i0&&['useCard','respond'].contains(event.getParent().name); + }, + content:function (){ + "step 0" + event.card=get.cards(); + player.showCards(event.card); + event.same=false; + if(get.type(event.card[0],'trick')==get.type(trigger.getParent().card,'trick')) event.same=true; + player.chooseTarget('选择获得此牌的角色',true).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(_status.event.du){ + if(target.hasSkillTag('nodu')) return 0; + return -att; + } + if(!_status.event.same) att+=target==_status.event.player?1:0; + if(att>0){ + return att+Math.max(0,5-target.countCards('h')); + } + return att; + }).set('du',event.card.name=='du').set('same',event.same); + "step 1" + if(result.targets){ + player.line(result.targets,'green'); + result.targets[0].gain(event.card,'gain2'); + if(!event.same) player.chooseToDiscard(true,'he'); + } + }, + ai:{ + effect:{ + target:function (card,player,target){ + if(get.tag(card,'respond')&&target.countCards('h')>1) return [1,0.2]; + }, + }, + }, + }, + "new_liyu":{ + audio:"liyu", + trigger:{ + source:"damageSource", + }, + filter:function (event,player){ + if(event._notrigger.contains(event.player)) return false; + return event.card&&event.card.name=='sha'&&event.player!=player&&event.player.isAlive()&&event.player.countGainableCards(player,'hej')>0; + }, + direct:true, + content:function (){ + 'step 0' + player.gainPlayerCard(get.prompt('new_liyu',trigger.player),trigger.player,'hej','visibleMove').set('ai',function(card){ + var player=_status.event.player; + var evt=_status.event.target; + if(get.attitude(player,evt)>0&&get.position(card)=='j') return 4+get.value(card); + if(get.type(card)=='equip'){ + if(get.attitude(player,evt)>0&&game.hasPlayer(function(current){ + return (player.canUse({name:'juedou'},current)&¤t!=evt.target&&get.effect(current,{name:'juedou'},player,player)>2); + })){ + return 5; + } + else if(game.hasPlayer(function(current){ + return (player.canUse({name:'juedou'},current)&¤t!=evt&¤t!=player&&get.effect(current,{name:'juedou'},player,player)<0); + })){ + return 1; + } + else return 4; + }; + return 3; + }).set('logSkill',['new_liyu',trigger.player]); + 'step 1' + if(result.bool){ + if(get.type(result.cards[0])!='equip'){ + trigger.player.draw(); + event.finish(); + } + else{ + if(!game.hasPlayer(function(current){ + return current!=player&¤t!=trigger.player&&player.canUse('juedou',current); + })){ + event.finish(); + return; + } + trigger.player.chooseTarget(true,function(card,player,target){ + var evt=_status.event.getParent(); + return evt.player.canUse({name:'juedou'},target)&&target!=_status.event.player; + },'请选择一名角色,视为'+get.translation(player)+'对其使用【决斗】').set('ai',function(target){ + var evt=_status.event.getParent(); + return get.effect(target,{name:'juedou'},evt.player,_status.event.player)-2; + }); + } + } + else event.finish(); + 'step 2' + if(result.targets){ + player.useCard({name:'juedou',isCard:true},result.targets[0],'noai'); + } + }, + ai:{ + halfneg:true, + }, + }, + "new_retuxi":{ + audio:"retuxi", + trigger:{ + player:"phaseDrawBegin2", + }, + direct:true, + //priority:-10, + filter:function (event){ + return event.num>0&&!event.numFixed; + }, + content:function (){ + "step 0" + var num=get.copy(trigger.num); + if(get.mode()=='guozhan'&&num>2) num=2; + player.chooseTarget(get.prompt('new_retuxi'),'获得至多'+get.translation(num)+'名角色的各一张手牌,然后少摸等量的牌',[1,num],function(card,player,target){ + return target.countCards('h')>0&&player!=target; + },function(target){ + var att=get.attitude(_status.event.player,target); + if(target.hasSkill('tuntian')) return att/10; + return 1-att; + }); + "step 1" + if(result.bool){ + result.targets.sortBySeat(); + player.logSkill('new_retuxi',result.targets); + player.gainMultiple(result.targets); + trigger.num-=result.targets.length; + } + else{ + event.finish(); + } + "step 2" + if(trigger.num<=0) game.delay(); + }, + ai:{ + threaten:1.6, + expose:0.2, + }, + }, + "new_reyiji":{ + audio:"reyiji", + trigger:{ + player:"damageEnd", + }, + frequent:true, + filter:function (event){ + return (event.num>0) + }, + content:function (){ + "step 0" + event.count=1; + "step 1" + player.draw(2); + event.given=0; + "step 2" + player.chooseCardTarget({ + filterCard:true, + selectCard:[1,2-event.given], + filterTarget:function(card,player,target){ + return player!=target&&target!=event.temp; + }, + ai1:function(card){ + if(ui.selected.cards.length>0) return -1; + if(card.name=='du') return 20; + return (_status.event.player.countCards('h')-_status.event.player.hp); + }, + ai2:function(target){ + var att=get.attitude(_status.event.player,target); + if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ + if(target.hasSkillTag('nodu')) return 0; + return 1-att; + } + return att-4; + }, + prompt:'请选择要送人的卡牌' + }); + "step 3" + if(result.bool){ + player.line(result.targets,'green'); + result.targets[0].gain(result.cards,player,'giveAuto'); + event.given+=result.cards.length; + if(event.given<2){ + event.temp=result.targets[0]; + event.goto(2); + } + else if(event.count0){ + if(player.needsToDiscard()){ + num=0.7; + } + else{ + num=0.5; + } + } + if(player.hp>=4) return [1,num*2]; + if(target.hp==3) return [1,num*1.5]; + if(target.hp==2) return [1,num*0.5]; + } + }, + }, + threaten:0.6, + }, + }, + "new_rejianxiong":{ + audio:"rejianxiong", + audioname:['shen_caopi'], + trigger:{ + player:"damageEnd", + }, + content:function (){ + "step 0" + if(get.itemtype(trigger.cards)=='cards'&&get.position(trigger.cards[0],true)=='o'){ + player.gain(trigger.cards,"gain2"); + } + player.draw('nodelay'); + }, + ai:{ + maixie:true, + "maixie_hp":true, + effect:{ + target:function (card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; + if(get.tag(card,'damage')&&player!=target) return [1,0.6]; + }, + }, + }, + }, + "new_reluoyi":{ + audio:"reluoyi", + trigger:{ + player:"phaseDrawBegin1", + }, + forced:true, + locked:false, + filter:function(event,player){ + return !event.numFixed; + }, + content:function (){ + "step 0" + var cards=get.cards(3); + game.cardsGotoOrdering(cards); + player.showCards(cards,'裸衣'); + var cardsx=[]; + for(var i=0;i=trigger.num; + }; + "step 1" + if(result.bool){ + if(cards.length) player.gain(cards,'gain2'); + //game.cardsDiscard(cards2); + player.addTempSkill('reluoyi2',{player:'phaseBefore'}); + trigger.changeToZero(); + } + //else game.cardsDiscard(cards); + }, + }, + "new_rewusheng":{ + mod:{ + targetInRange:function (card){ + if(get.suit(card)=='diamond'&&(_status.event.skill=='new_rewusheng'||card.name=='sha')) return true; + }, + }, + audio:"wusheng", + audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo'], + enable:["chooseToRespond","chooseToUse"], + filterCard:function (card,player){ + if(get.zhu(player,'shouyue')) return true; + return get.color(card)=='red'; + }, + position:"he", + viewAs:{ + name:"sha", + }, + viewAsFilter:function (player){ + if(get.zhu(player,'shouyue')){ + if(!player.countCards('he')) return false; + } + else{ + if(!player.countCards('he',{color:'red'})) return false; + } + }, + prompt:"将一张红色牌当杀使用或打出", + check:function (card){return 4-get.value(card)}, + ai:{ + skillTagFilter:function (player){ + if(get.zhu(player,'shouyue')){ + if(!player.countCards('he')) return false; + } + else{ + if(!player.countCards('he',{color:'red'})) return false; + } + }, + respondSha:true, + basic:{ + useful:[5,1], + value:[5,1], + }, + order:function (){ + if(_status.event.player.hasSkillTag('presha',true,null,true)) return 10; + return 3; + }, + result:{ + target:function (player,target){ + if(player.hasSkill('jiu')&&!target.getEquip('baiyin')){ + if(get.attitude(player,target)>0){ + return -6; + } + else{ + return -3; + } + } + return -1.5; + }, + }, + tag:{ + respond:1, + respondShan:1, + damage:function (card){ + if(card.nature=='poison') return; + return 1; + }, + natureDamage:function (card){ + if(card.nature) return 1; + }, + fireDamage:function (card,nature){ + if(card.nature=='fire') return 1; + }, + thunderDamage:function (card,nature){ + if(card.nature=='thunder') return 1; + }, + poisonDamage:function (card,nature){ + if(card.nature=='poison') return 1; + }, + }, + }, + }, + "new_yijue":{ + audio:"yijue", + enable:"phaseUse", + usable:1, + position:"he", + filterTarget:function (card,player,target){ + return player!=target&&target.countCards('h'); + }, + filterCard:true, + check:function (card){ + return 8-get.value(card); + }, + content:function (){ + "step 0" + target.chooseCard(true).ai=function(card){ + var player=_status.event.player; + if((player.hasShan()||player.hp<3)&&get.color(card)=='black') return 0.5; + return Math.max(1,20-get.value(card)); + }; + "step 1" + target.showCards(result.cards); + event.card2=result.cards[0]; + if(get.color(event.card2)=='black'){ + if(!target.hasSkill('fengyin')){ + target.addTempSkill('fengyin'); + } + target.addTempSkill('new_yijue2'); + event.finish(); + } + else{ + player.gain(event.card2,target,'give','bySelf'); + if(target.hp0; + }; + } + } + "step 2" + if(result.bool){ + target.recover(); + } + }, + ai:{ + result:{ + target:function (player,target){ + var hs=player.getCards('h'); + if(hs.length<3) return 0; + if(target.countCards('h')>target.hp+1&&get.recoverEffect(target)>0){ + return 1; + } + if(player.canUse('sha',target)&&(player.countCards('h','sha')||player.countCards('he',{color:'red'}))){ + return -2; + } + return -0.5; + }, + }, + order:9, + }, + }, + "new_yijue2":{ + trigger:{ + player:"damageBegin1", + }, + filter:function (event){ + return event.source&&event.source.hasSkill('new_yijue')&&event.card&&event.card.name=='sha'&&get.suit(event.card)=='heart'&&event.notLink(); + }, + silent:true, + popup:false, + forced:true, + content:function (){ + trigger.num++; + }, + mark:true, + mod:{ + cardEnabled2:function (card){ + if(get.position(card)=='h') return false; + }, + }, + intro:{ + content:"不能使用或打出手牌", + }, + }, + "new_repaoxiao":{ + audio:"paoxiao", + inherit:"paoxiao", + mod:{ + targetInRange:function (card,player){ + if(card.name=='sha'&&get.cardCount({name:'sha'},player)>0) return true; + }, + cardUsable:function (card,player,num){ + if(card.name=='sha') return Infinity; + }, + }, + ai:{ + unequip:true, + skillTagFilter:function (player,tag,arg){ + if(!get.zhu(player,'shouyue')) return false; + if(arg&&arg.name=='sha') return true; + return false; + }, + }, + }, + "new_tishen":{ + trigger:{ + player:"phaseUseEnd", + }, + check:function (event,player){ + var num=0; + var he=player.getCards('he'); + for(var i=0;i0 + }, + content:function (){ + "step 0" + player.chooseCardTarget({ + position:'he', + filterCard:true, + selectCard:[1,Infinity], + filterTarget:function(card,player,target){ + return player!=target; + }, + ai1:function(card){ + if(get.attitude(_status.event.player,_status.currentPhase)<0&&_status.currentPhase.needsToDiscard()&&card.name!='du') return -1; + for(var i=0;i_status.event.player.countCards('h')) return 0; + return att-4; + }, + prompt:get.prompt2('new_qingjian'), + }); + "step 1" + if(result.bool){ + var target=result.targets[0]; + var cards=result.cards; + var type=[]; + for(var i=0;i0&&get.attitude(player,current)>2); + })>1&&get.color(card)=='black'&&player.countCards('h',{color:'red'})>0) return 3-get.value(card); + return 9-get.value(card); + }, + filter:function (event,player){ + return !player.hasSkill('new_reqingnang_off2'); + }, + filterTarget:function (card,player,target){ + if(target.hp>=target.maxHp||target.hasSkill('new_reqingnang_off')) return false; + return true; + }, + content:function (){ + target.addTempSkill('new_reqingnang_off'); + if(get.color(cards[0])=='black') player.addTempSkill('new_reqingnang_off2'); + target.recover(); + }, + ai:{ + order:9, + result:{ + target:function (player,target){ + if(target.hp==1) return 5; + if(player==target&&player.countCards('h')>player.hp) return 5; + return 2; + }, + }, + threaten:2, + }, + }, + reyaowu:{ + trigger:{player:'damageBegin3'}, + audio:'new_reyaowu', + forced:true, + filter:function(event){ + return event.card&&(get.color(event.card)!='red'||event.source&&event.source.isAlive()); + }, + content:function(){ + trigger[get.color(trigger.card)!='red'?'player':'source'].draw(); + }, + }, + "new_reyaowu":{ + trigger:{ + player:"damageBegin3", + }, + //priority:1, + audio:2, + filter:function (event){ + return event.card&&event.card.name=='sha'&&(get.color(event.card)!='red'||event.source&&event.source.isAlive()); + }, + forced:true, + check:function (event){ + if(event.card&&(event.card.name=='sha')){ + return get.color(event.card)=='black'; + } + }, + content:function (){ + if(get.color(trigger.card)!='red') player.draw(); + else trigger.source.chooseDrawRecover(true); + }, + ai:{ + effect:{ + target:function (card,player,target,current){ + if(card.name=='sha'&&(get.color(card)=='red')&&get.attitude(player,target)<=0){ + return [1,0.8,1,0]; + } + if(card.name=='sha'&&(get.color(card)=='black')){ + return [1,0.4]; + } + }, + }, + }, + }, + + reguanxing:{ + audio:'guanxing', + audioname:['jiangwei','re_jiangwei','re_zhugeliang','gexuan'], + trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']}, + frequent:true, + filter:function(event,player,name){ + if(name=='phaseJieshuBegin'){ + return player.hasSkill('reguanxing_on'); + } + return true; + }, + content:function(){ + "step 0" + if(player.isUnderControl()){ + game.modeSwapPlayer(player); + } + var num=game.countPlayer()<4?3:5; + var cards=get.cards(num); + event.cards=cards; + var switchToAuto=function(){ + _status.imchoosing=false; + if(event.dialog) event.dialog.close(); + if(event.control) event.control.close(); + var top=[]; + var judges=player.getCards('j'); + var stopped=false; + if(!player.hasWuxie()){ + for(var i=0;i0){ + event.cards.push(result.card); + player.chooseBool('是否再次发动【洛神】?').set('frequentSkill','reluoshen'); + } + else{ + for(var i=0;i0; + }, + check:function(card){ + var player=_status.event.player; + if(get.position(card)=='e'){ + var subtype=get.subtype(card); + if(!game.hasPlayer(function(current){ + return current!=player&¤t.hp!=player.hp&&get.attitude(player,current)>0&&!current.countCards('e',{subtype:subtype}); + })){ + return 0; + } + if(player.countCards('h',{subtype:subtype})) return 20-get.value(card); + return 10-get.value(card); + } + else{ + if(player.countCards('e')) return 0; + if(player.countCards('h',{type:'equip'})) return 0; + return 8-get.value(card); + } + }, + filterTarget:function(card,player,target){ + if(target.sex!='male') return false; + var card=ui.selected.cards[0]; + if(!card) return false; + if(get.position(card)=='e'&&!target.isEmpty(get.subtype(card))) return false; + return true; + }, + discard:false, + delay:false, + lose:false, + content:function(){ + 'step 0' + if(get.position(cards[0])=='e') event._result={index:0}; + else if(get.type(cards[0])!='equip'||!target.isEmpty(get.subtype(cards[0]))) event._result={index:1}; + else player.chooseControl().set('choiceList',[ + '将'+get.translation(cards[0])+'置入'+get.translation(target)+'的装备区', + '弃置'+get.translation(cards[0]), + ]).ai=function(){return 1}; + 'step 1' + if(result.index==0){ + player.$give(cards,target,false); + target.equip(cards[0]); + } + else{ + player.discard(cards); + } + 'step 2' + if(player.hp>target.hp){ + player.draw(); + if(target.isDamaged()) target.recover(); + } + else if(player.hptarget.hp){ + if(target.isHealthy()){ + if(!player.needsToDiscard(1)||goon()) return 0.1; + return 0; + } + return 1; + } + return 0; + } + } + } + }, + rejiuyuan:{ + global:'rejiuyuan2', + audio:2, + zhuSkill:true, + }, + rejiuyuan2:{ + audio:'jiuyuan', + forceaudio:true, + trigger:{player:'useCardToPlayer'}, + filter:function(event,player){ + if(event.card.name!='tao') return false; + if(player.group!='wu') return false; + if(event.target!=player) return false; + return game.hasPlayer(function(target){ + return player!=target&&!event.targets.contains(target)&&target.isDamaged()&&target.hp2||!player.countCards('h',function(card){ + return get.value(card)>=8; + }))){ + return 1; + } + return 6-get.value(card) + }, + content:function(){ + 'step 0' + player.discard(cards); + event.num=1; + var hs=player.getCards('h'); + if(!hs.length) event.num=0; + for(var i=0;i=Math.max(2,player.countCards('h')-player.hp)) return 0; + if(player.hp==player.maxHp||player.storage.rerende<0||player.countCards('h')<=1){ + var players=game.filterPlayer(); + for(var i=0;i=3&& + get.attitude(players[i],player)>=3){ + return 11-get.value(card); + } + } + if(player.countCards('h')>player.hp) return 10-get.value(card); + if(player.countCards('h')>2) return 6-get.value(card); + return -1; + } + return 10-get.value(card); + }, + content:function(){ + 'step 0' + var evt=_status.event.getParent('phaseUse'); + if(evt&&evt.name=='phaseUse'&&!evt.rerende){ + var next=game.createEvent('rerende_clear'); + _status.event.next.remove(next); + evt.after.push(next); + evt.rerende=true; + next.player=player; + next.setContent(lib.skill.rerende1.content); + } + if(!Array.isArray(player.storage.rerende2)){ + player.storage.rerende2=[]; + } + player.storage.rerende2.push(target); + target.gain(cards,player,'giveAuto'); + if(typeof player.storage.rerende!='number'){ + player.storage.rerende=0; + } + if(player.storage.rerende>=0){ + player.storage.rerende+=cards.length; + if(player.storage.rerende>=2){ + var list=[]; + if(lib.filter.cardUsable({name:'sha'},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){ + return player.canUse('sha',current); + })){ + list.push(['基本','','sha']); + list.push(['基本','','sha','fire']); + list.push(['基本','','sha','thunder']); + } + if(lib.filter.cardUsable({name:'tao'},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){ + return player.canUse('tao',current); + })){ + list.push(['基本','','tao']); + } + if(lib.filter.cardUsable({name:'jiu'},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){ + return player.canUse('jiu',current); + })){ + list.push(['基本','','jiu']); + } + if(list.length){ + player.chooseButton(['是否视为使用一张基本牌?',[list,'vcard']]).set('ai',function(button){ + var player=_status.event.player; + var card={name:button.link[2],nature:button.link[3]}; + if(card.name=='tao'){ + if(player.hp==1||(player.hp==2&&!player.hasShan())||player.needsToDiscard()){ + return 5; + } + return 1; + } + if(card.name=='sha'){ + if(game.hasPlayer(function(current){ + return player.canUse(card,current)&&get.effect(current,card,player,player)>0 + })){ + if(card.nature=='fire') return 2.95; + if(card.nature=='thunder') return 2.92; + return 2.9; + } + return 0; + } + if(card.name=='jiu'){ + return 0.5; + } + return 0; + }); + } + else{ + event.finish(); + } + player.storage.rerende=-1; + } + else{ + event.finish(); + } + } + else{ + event.finish(); + } + 'step 1' + if(result&&result.bool&&result.links[0]){ + var card={name:result.links[0][2],nature:result.links[0][3]}; + player.chooseUseTarget(card,true); + } + }, + ai:{ + order:function(skill,player){ + if(player.hp1){ + return 10; + } + return 4; + }, + result:{ + target:function(player,target){ + if(target.hasSkillTag('nogain')) return 0; + if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ + if(target.hasSkillTag('nodu')) return 0; + return -10; + } + if(target.hasJudge('lebu')) return 0; + var nh=target.countCards('h'); + var np=player.countCards('h'); + if(player.hp==player.maxHp||player.storage.rerende<0||player.countCards('h')<=1){ + if(nh>=np-1&&np<=player.hp&&!target.hasSkill('haoshi')) return 0; + } + return Math.max(1,5-nh); + } + }, + effect:{ + target:function(card,player,target){ + if(player==target&&get.type(card)=='equip'){ + if(player.countCards('e',{subtype:get.subtype(card)})){ + if(game.hasPlayer(function(current){ + return current!=player&&get.attitude(player,current)>0; + })){ + return 0; + } + } + } + } + }, + threaten:0.8 + } + }, + rerende1:{ + trigger:{player:'phaseUseBegin'}, + silent:true, + content:function(){ + player.storage.rerende=0; + player.storage.rerende2=[]; + } + }, + liyu:{ + audio:2, + trigger:{source:'damageSource'}, + forced:true, + filter:function(event,player){ + if(event._notrigger.contains(event.player)) return false; + return event.card&&event.card.name=='sha'&&event.player.isAlive()&&event.player.countGainableCards(player,'he')>0; + }, + check:function(){ + return false; + }, + content:function(){ + 'step 0' + trigger.player.chooseTarget(function(card,player,target){ + var evt=_status.event.getParent(); + return evt.player.canUse({name:'juedou'},target)&&target!=_status.event.player; + },get.prompt('liyu')).set('ai',function(target){ + var evt=_status.event.getParent(); + return get.effect(target,{name:'juedou'},evt.player,_status.event.player)-2; + }); + 'step 1' + if(result.bool){ + player.gainPlayerCard(trigger.player,'he',true); + event.target=result.targets[0]; + trigger.player.line(player,'green'); + } + else{ + event.finish(); + } + 'step 2' + if(event.target){ + player.useCard({name:'juedou',isCard:true},event.target,'noai'); + } + }, + ai:{ + halfneg:true + } + }, + /*reqicai:{ + trigger:{player:'equipEnd'}, + frequent:true, + content:function(){ + player.draw(); + }, + mod:{ + targetInRange:function(card,player,target,now){ + var type=get.type(card); + if(type=='trick'||type=='delay') return true; + } + }, + },*/ + retuxi:{ + audio:2, + trigger:{player:'phaseDrawBegin2'}, + direct:true, + filter:function(event){ + return event.num>0; + }, + content:function(){ + "step 0" + player.chooseTarget(get.prompt('retuxi'),[1,trigger.num],function(card,player,target){ + return target.countCards('h')>0&&player!=target&&target.countCards('h')>=player.countCards('h'); + },function(target){ + var att=get.attitude(_status.event.player,target); + if(target.hasSkill('tuntian')) return att/10; + return 1-att; + }); + "step 1" + if(result.bool){ + player.logSkill('retuxi',result.targets); + player.gainMultiple(result.targets); + trigger.num-=result.targets.length; + } + else{ + event.finish(); + } + "step 2" + if(trigger.num<=0) game.delay(); + }, + ai:{ + threaten:1.6, + expose:0.2 + } + }, + reguicai:{ + audio:2, + trigger:{global:'judge'}, + direct:true, + filter:function(event,player){ + return player.countCards('he')>0; + }, + content:function(){ + "step 0" + player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ + get.translation(trigger.player.judging[0])+','+get.prompt('reguicai'),'he',function(card){ + var player=_status.event.player; + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + if(mod!='unchanged') return mod; + return true; + }).set('ai',function(card){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + var judging=_status.event.judging; + var result=trigger.judge(card)-trigger.judge(judging); + var attitude=get.attitude(player,trigger.player); + if(attitude==0||result==0) return 0; + if(attitude>0){ + return result-get.value(card)/2; + } + else{ + return -result-get.value(card)/2; + } + }).set('judging',trigger.player.judging[0]); + "step 1" + if(result.bool){ + player.respond(result.cards,'reguicai','highlight','noOrdering'); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + if(trigger.player.judging[0].clone){ + trigger.player.judging[0].clone.classList.remove('thrownhighlight'); + game.broadcast(function(card){ + if(card.clone){ + card.clone.classList.remove('thrownhighlight'); + } + },trigger.player.judging[0]); + game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); + } + game.cardsDiscard(trigger.player.judging[0]); + trigger.player.judging[0]=result.cards[0]; + trigger.orderingCards.addArray(result.cards); + game.log(trigger.player,'的判定牌改为',result.cards[0]); + game.delay(2); + } + }, + ai:{ + rejudge:true, + tag:{ + rejudge:1, + } + } + }, + refankui:{ + audio:2, + trigger:{player:'damageEnd'}, + direct:true, + filter:function(event,player){ + return (event.source&&event.source.countGainableCards(player,'he')&&event.num>0&&event.source!=player); + }, + content:function(){ + "step 0" + event.count=trigger.num; + "step 1" + event.count--; + player.gainPlayerCard(get.prompt('refankui',trigger.source),trigger.source,get.buttonValue,'he').set('logSkill',['refankui',trigger.source]); + "step 2" + if(result.bool&&event.count>0&&trigger.source.countGainableCards(player,'he')>0) event.goto(1); + }, + ai:{ + maixie_defend:true, + effect:{ + target:function(card,player,target){ + if(player.countCards('he')>1&&get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-1.5]; + if(get.attitude(target,player)<0) return [1,1]; + } + } + } + } + }, + reluoyi:{ + audio:2, + trigger:{player:'phaseDrawBegin1'}, + check:function(event,player){ + if(player.countCards('h','sha')) return true; + return Math.random()<0.5; + }, + content:function(){ + "step 0" + player.addTempSkill('reluoyi2',{player:'phaseBefore'}); + trigger.cancel(null,null,'notrigger'); + "step 1" + event.cards=get.cards(3); + player.showCards(event.cards,'裸衣'); + "step 2" + for(var i=0;i0); + }, + check:function(event,player){ + return (get.attitude(player,event.source)<=0); + }, + logTarget:'source', + content:function(){ + "step 0" + event.num=trigger.num; + "step 1" + player.judge(function(card){ + if(get.color(card)=='red') return 1; + return 0; + }); + "step 2" + if(result.color=='black'){ + if(trigger.source.countCards('he')){ + player.discardPlayerCard(trigger.source,'he',true); + } + } + else if(trigger.source.isIn()){ + trigger.source.damage(); + } + event.num--; + if(event.num>0){ + player.chooseBool(get.prompt2('reganglie')); + } + else{ + event.finish(); + } + "step 3" + if(result.bool){ + player.logSkill('reganglie',trigger.source); + event.goto(1); + } + }, + ai:{ + maixie_defend:true, + expose:0.4 + } + }, + qinxue:{ + skillAnimation:true, + animationColor:'wood', + audio:2, + unique:true, + juexingji:true, + derivation:'gongxin', + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + filter:function(event,player){ + if(player.storage.qinxue) return false; + if(player.countCards('h')>=player.hp+3) return true; + if(player.countCards('h')>=player.hp+2&&game.players.length+game.dead.length>=7) return true; + return false; + }, + content:function(){ + player.storage.qinxue=true; + player.loseMaxHp(); + player.addSkill('gongxin'); + player.awakenSkill('qinxue'); + } + }, + qingjian:{ + audio:2, + unique:true, + trigger:{player:'gainAfter'}, + direct:true, + usable:4, + filter:function(event,player){ + if(event.parent.parent.name=='phaseDraw') return false; + return event.cards&&event.cards.length>0 + }, + content:function(){ + "step 0" + event.cards=trigger.cards.slice(0); + "step 1" + player.chooseCardTarget({ + filterCard:function(card){ + return _status.event.getParent().cards.contains(card); + }, + selectCard:[1,event.cards.length], + filterTarget:function(card,player,target){ + return player!=target; + }, + ai1:function(card){ + if(ui.selected.cards.length>0) return -1; + if(card.name=='du') return 20; + return (_status.event.player.countCards('h')-_status.event.player.hp); + }, + ai2:function(target){ + var att=get.attitude(_status.event.player,target); + if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ + if(target.hasSkillTag('nodu')) return 0; + return 1-att; + } + if(target.countCards('h')>_status.event.player.countCards('h')) return 0; + return att-4; + }, + prompt:'请选择要送人的卡牌' + }); + "step 2" + if(result.bool){ + player.storage.qingjian++; + player.logSkill('qingjian',result.targets); + result.targets[0].gain(result.cards,player,'give'); + for(var i=0;i0; + }, + filterTarget:function(card,player,target){ + return player!=target; + }, + filterCard:true, + check:function(card){ + return 8-get.value(card); + }, + discard:false, + lose:false, + delay:false, + content:function(){ + "step 0" + target.storage.refanjian=cards[0]; + target.gain(cards[0],player,'give'); + "step 1" + target.chooseControl('refanjian_card','refanjian_hp').ai=function(event,player){ + var cards=player.getCards('he',{suit:get.suit(player.storage.refanjian)}); + if(cards.length==1) return 0; + if(cards.length>=2){ + for(var i=0;i=8) return 1; + } + if(cards.length>2&&player.hp>2) return 1; + if(cards.length>3) return 1; + return 0; + } + "step 2" + if(result.control=='refanjian_card'){ + target.showHandcards(); + } + else{ + target.loseHp(); + event.finish(); + } + "step 3" + target.discard(target.getCards('he',{suit:get.suit(target.storage.refanjian)})) + delete target.storage.refanjian; + }, + ai:{ + order:9, + result:{ + target:function(player,target){ + return -target.countCards('he')-(player.countCards('h','du')?1:0); + } + }, + threaten:2, + } + }, + reqianxun:{ + init:function(player){ + if(!player.storage.reqianxun2) player.storage.reqianxun2=[]; + }, + audio:2, + trigger:{target:'useCardToBegin',player:'judgeBefore'}, + filter:function(event,player){ + if(player.countCards('h')==0) return false; + if(event.parent.name=='phaseJudge'){ + if(lib.skill.reqianxun.trigger.player=='judgeBefore'){ + return true; + } + return event.result&&event.result.judge!=0; + } + if(event.name=='judge') return false; + if(event.targets&&event.targets.length>1) return false; + if(event.card&&get.type(event.card)=='trick'&&event.player!=player) return true; + }, + content:function(){ + player.storage.reqianxun2=player.storage.reqianxun2.concat(player.getCards('h')); + game.addVideo('storage',player,['reqianxun2',get.cardsInfo(player.storage.reqianxun2),'cards']); + player.lose(player.getCards('h'),ui.special,'toStorage'); + player.addSkill('reqianxun2'); + }, + ai:{ + effect:function(card,player,target){ + if(!target.hasFriend()) return; + if(player==target) return; + var type=get.type(card); + var nh=target.countCards(); + if(type=='trick'){ + if(!get.tag(card,'multitarget')||get.info(card).singleCard){ + if(get.tag(card,'damage')){ + if(nh<3||target.hp<=2) return 0.8; + } + return [1,nh]; + } + } + else if(type=='delay'){ + return [0.5,0.5]; + } + }, + } + }, + reqianxun2:{ + trigger:{global:'phaseEnd'}, + forced:true, + audio:false, + content:function(){ + player.gain(player.storage.reqianxun2,'fromStorage','draw'); + player.storage.reqianxun2.length=0; + player.removeSkill('reqianxun2'); + game.addVideo('storage',player,['reqianxun2',get.cardsInfo(player.storage.reqianxun2),'cards']); + }, + mark:true, + intro:{ + content:'cardCount', + onunmark:function(storage,player){ + if(storage&&storage.length){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + player.storage.reqianxun2.length=0; + } + }, + } + }, + relianying:{ + audio:2, + trigger:{player:'loseAfter'}, + direct:true, + filter:function(event,player){ + if(player.countCards('h')) return false; + return event.hs&&event.hs.length; + }, + content:function(){ + "step 0" + var num=trigger.hs.length; + player.chooseTarget('选择发动连营的目标',[1,num]).ai=function(target){ + var player=_status.event.player; + if(player==target) return get.attitude(player,target)+10; + return get.attitude(player,target); + } + "step 1" + if(result.bool){ + player.logSkill('relianying',result.targets); + game.asyncDraw(result.targets); + } + else event.finish(); + "step 2" + game.delay(); + }, + ai:{ + threaten:0.8, + effect:{ + target:function(card){ + if(card.name=='guohe'||card.name=='liuxinghuoyu') return 0.5; + } + }, + noh:true, + } + }, + retishen:{ + audio:2, + unique:true, + mark:true, + skillAnimation:true, + animationColor:'soil', + limited:true, + trigger:{player:'phaseZhunbeiBegin'}, + init:function(player){ + player.storage.retishen=false; + }, + filter:function(event,player){ + if(player.storage.retishen) return false; + if(typeof player.storage.retishen2=='number'){ + return player.hp0){ + return att+Math.max(0,5-target.countCards('h')); + } + return att; + }).set('du',event.card.name=='du'); + } + else{ + player.chooseBool('是否弃置'+get.translation(event.card)+'?'); + event.disbool=true; + } + game.delay(2); + "step 1" + if(event.disbool){ + if(!result.bool){ + game.log(player,'展示了',event.card); + ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild); + } + else{ + game.log(player,'展示并弃掉了',event.card); + event.card.discard(); + } + game.addVideo('deletenode',player,[get.cardInfo(event.node)]); + event.node.delete(); + game.broadcast(function(card){ + ui.arena.classList.remove('thrownhighlight'); + if(card.clone){ + card.clone.delete(); + } + },event.card); + } + else if(result.targets){ + player.line(result.targets,'green'); + result.targets[0].gain(event.card,'log'); + event.node.moveDelete(result.targets[0]); + game.addVideo('gain2',result.targets[0],[get.cardInfo(event.node)]); + game.broadcast(function(card,target){ + ui.arena.classList.remove('thrownhighlight'); + if(card.clone){ + card.clone.moveDelete(target); + } + },event.card,result.targets[0]); + } + else{ + game.log(player,'展示并弃掉了',event.card); + event.card.discard(); + game.addVideo('deletenode',player,[get.cardInfo(event.node)]); + event.node.delete(); + game.broadcast(function(card){ + ui.arena.classList.remove('thrownhighlight'); + if(card.clone){ + card.clone.delete(); + } + },event.card); + } + game.addVideo('thrownhighlight2'); + ui.arena.classList.remove('thrownhighlight'); + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(get.tag(card,'respond')&&target.countCards('h')>1) return [1,0.2]; + } + } + } + }, + rejianxiong:{ + audio:2, + audioname:['shen_caopi'], + trigger:{player:'damageEnd'}, + filter:function(event,player){ + return get.itemtype(event.cards)=='cards'&&get.position(event.cards[0],true)=='o'; + }, + content:function(){ + player.gain(trigger.cards); + player.$gain2(trigger.cards); + player.draw(); + }, + ai:{ + maixie:true, + maixie_hp:true, + effect:{ + target:function(card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; + if(get.tag(card,'damage')) return [1,0.55]; + } + } + } + }, + rejianxiong_old:{ + audio:2, + trigger:{player:'damageEnd'}, + direct:true, + content:function(){ + "step 0" + if(get.itemtype(trigger.cards)=='cards'&&get.position(trigger.cards[0],true)=='o'){ + player.chooseControl('rejianxiong_mopai','rejianxiong_napai','cancel2').set('prompt',get.prompt('rejianxiong')).ai=function(){ + var trigger=_status.event.getTrigger(); + if(trigger.cards.length==1&&trigger.cards[0].name=='sha') return 0; + return 1; + }; + } + else{ + player.chooseControl('rejianxiong_mopai','cancel2').set('prompt',get.prompt('rejianxiong')); + } + "step 1" + if(result.control=='rejianxiong_napai'){ + player.logSkill('rejianxiong'); + player.gain(trigger.cards); + player.$gain2(trigger.cards); + } + else if(result.control=='rejianxiong_mopai'){ + player.logSkill('rejianxiong'); + player.draw(); + } + }, + ai:{ + maixie:true, + maixie_hp:true, + effect:{ + target:function(card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; + if(get.tag(card,'damage')&&player!=target) return [1,0.6]; + } + } + } + }, + reyiji:{ + audio:2, + trigger:{player:'damageEnd'}, + frequent:true, + filter:function(event){ + return (event.num>0) + }, + content:function(){ + "step 0" + event.num=1; + event.count=1; + "step 1" + player.gain(get.cards(2)); + player.$draw(2); + "step 2" + player.chooseCardTarget({ + filterCard:true, + selectCard:[1,2], + filterTarget:function(card,player,target){ + return player!=target&&target!=event.temp; + }, + ai1:function(card){ + if(ui.selected.cards.length>0) return -1; + if(card.name=='du') return 20; + return (_status.event.player.countCards('h')-_status.event.player.hp); + }, + ai2:function(target){ + var att=get.attitude(_status.event.player,target); + if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ + if(target.hasSkillTag('nodu')) return 0; + return 1-att; + } + return att-4; + }, + prompt:'请选择要送人的卡牌' + }); + "step 3" + if(result.bool){ + player.lose(result.cards,ui.special,'toStorage'); + if(result.targets[0].hasSkill('reyiji2')){ + result.targets[0].storage.reyiji2=result.targets[0].storage.reyiji2.concat(result.cards); + } + else{ + result.targets[0].addSkill('reyiji2'); + result.targets[0].storage.reyiji2=result.cards; + } + player.$give(result.cards.length,result.targets[0],false); + player.line(result.targets,'green'); + game.addVideo('storage',result.targets[0],['reyiji2',get.cardsInfo(result.targets[0].storage.reyiji2),'cards']); + if(num==1){ + event.temp=result.targets[0]; + event.num++; + event.goto(2); + } + else if(event.count0){ + if(player.needsToDiscard()){ + num=0.7; + } + else{ + num=0.5; + } + } + if(player.hp>=4) return [1,num*2]; + if(target.hp==3) return [1,num*1.5]; + if(target.hp==2) return [1,num*0.5]; + } + } + }, + threaten:0.6 + } + }, + reyiji2:{ + trigger:{player:'phaseDrawBegin'}, + forced:true, + mark:true, + popup:'遗计拿牌', + audio:false, + content:function(){ + player.$draw(player.storage.reyiji2.length); + player.gain(player.storage.reyiji2,'fromStorage'); + delete player.storage.reyiji2; + player.removeSkill('reyiji2'); + game.delay(); + }, + intro:{ + content:'cardCount' + } + }, + yijue:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return player!=target&&target.countCards('h'); + }, + filter:function(event,player){ + return player.countCards('h')>0; + }, + content:function(){ + "step 0" + player.chooseToCompare(target).set('small',true); + "step 1" + if(result.bool){ + if(!target.hasSkill('fengyin')){ + target.addTempSkill('fengyin'); + } + target.addTempSkill('yijue2'); + event.finish(); + } + else if(target.hp0; + }; + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + target.recover(); + } + }, + ai:{ + result:{ + target:function(player,target){ + var hs=player.getCards('h'); + if(hs.length<3) return 0; + var bool=false; + for(var i=0;i=9&&get.value(hs[i])<7){ + bool=true; + break; + } + } + if(!bool) return 0; + if(target.countCards('h')>target.hp+1&&get.recoverEffect(target)>0){ + return 1; + } + if(player.canUse('sha',target)&&(player.countCards('h','sha')||player.countCards('he',{color:'red'}))){ + return -2; + } + return -0.5; + } + }, + order:9, + } + }, + yijue2:{ + mark:true, + mod:{ + cardEnabled:function(){ + return false; + }, + cardUsable:function(){ + return false; + }, + cardRespondable:function(){ + return false; + }, + cardSavable:function(){ + return false; + } + }, + intro:{ + content:'不能使用或打出卡牌' + } + }, + retieji:{ + shaRelated:true, + audio:2, + audioname:['boss_lvbu3'], + trigger:{player:'useCardToPlayered'}, + check:function(event,player){ + return get.attitude(player,event.target)<0; + }, + filter:function(event,player){ + return event.card.name=='sha'; + }, + logTarget:'target', + content:function(){ + "step 0" + player.judge(function(){return 0}); + if(!trigger.target.hasSkill('fengyin')){ + trigger.target.addTempSkill('fengyin'); + } + "step 1" + var suit=get.suit(result.card); + var target=trigger.target; + var num=target.countCards('h','shan'); + target.chooseToDiscard('请弃置一张'+get.translation(suit)+'牌,否则不能使用闪抵消此杀','he',function(card){ + return get.suit(card)==_status.event.suit; + }).set('ai',function(card){ + var num=_status.event.num; + if(num==0) return 0; + if(card.name=='shan') return num>1?2:0; + return 8-get.value(card); + }).set('num',num).set('suit',suit); + "step 2" + if(!result.bool){ + trigger.getParent().directHit.add(trigger.target); + } + }, + ai:{ + ignoreSkill:true, + skillTagFilter:function(player,tag,arg){ + if(!arg||arg.isLink||!arg.card||arg.card.name!='sha') return false; + if(!arg.target||get.attitude(player,arg.target)>=0) return false; + if(!arg.skill||!lib.skill[arg.skill]||lib.skill[arg.skill].charlotte||get.is.locked(arg.skill)||!arg.target.getSkills(true,false).contains(arg.skill)) return false; + }, + } + }, + reyicong:{ + trigger:{ + player:["changeHp"], + }, + audio:2, + forced:true, + filter:function(event,player){ + return get.sgn(player.hp-2.5)!=get.sgn(player.hp-2.5-event.num); + }, + content:function (){}, + mod:{ + globalFrom:function(from,to,current){ + if(from.hp>2) return current-1; + }, + globalTo:function(from,to,current){ + if(to.hp<=2) return current+1; + }, + }, + ai:{ + threaten:0.8 + } + }, + qiaomeng:{ + audio:2, + trigger:{source:'damageSource'}, + direct:true, + filter:function(event){ + if(event._notrigger.contains(event.player)) return false; + return event.card&&event.card.name=='sha'&&event.cards&& + get.color(event.cards)=='black'&&event.player.countCards('e'); + }, + content:function(){ + "step 0" + player.choosePlayerCard('e',trigger.player); + "step 1" + if(result.bool){ + player.logSkill('qiaomeng'); + trigger.player.discard(result.links[0]); + event.card=result.links[0]; + } + else{ + event.finish(); + } + "step 2" + if(get.position(card)=='d'){ + if(get.subtype(card)=='equip3'||get.subtype(card)=='equip4'){ + player.gain(card,trigger.player); + player.$gain2(card); + } + } + } + }, + rekurou:{ + audio:2, + enable:'phaseUse', + usable:1, + filterCard:true, + check:function(card){ + return 8-get.value(card); + }, + position:'he', + content:function(){ + player.loseHp(); + }, + ai:{ + order:8, + result:{ + player:function(player){ + if(player.hp<=2) return player.countCards('h')==0?1:0; + if(player.countCards('h',{name:'sha',color:'red'})) return 1; + return player.countCards('h')<=player.hp?1:0; + } + }, + effect:function(card,player,target){ + if(get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,1]; + return 1.2; + } + if(get.tag(card,'loseHp')){ + if(player.hp<=1) return; + return [0,0]; + } + } + } + }, + zhaxiang:{ + trigger:{player:'loseHpEnd'}, + forced:true, + audio:2, + content:function(){ + var num=trigger.num; + player.draw(3*num); + if(_status.currentPhase==player){ + if(!player.storage.zhaxiang2) player.storage.zhaxiang2=0; + player.storage.zhaxiang2+=num; + player.addTempSkill('zhaxiang2',{player:'phaseAfter'}); + } + else{ + game.trySkillAudio('zhaxiang',player); + } + }, + ai:{ + maihp:true + } + }, + zhaxiang2:{ + mod:{ + targetInRange:function(card,player,target,now){ + if(card.name=='sha'&&get.color(card)=='red') return true; + }, + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+player.storage.zhaxiang2; + } + }, + onremove:true, + trigger:{player:'useCard'}, + forced:true, + filter:function(event,player){ + return event.card&&event.card.name=='sha'&&get.color(event.card)=='red'; + }, + content:function(){ + trigger.directHit.addArray(game.players); + } + }, + zhuhai:{ + trigger:{global:'phaseJieshuBegin'}, + direct:true, + filter:function(event,player){ + return event.player.isAlive()&&event.player.getStat('damage')&& + 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','zhuhai').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); + } + }, + qianxin:{ + skillAnimation:true, + animationColor:'orange', + audio:2, + unique:true, + juexingji:true, + trigger:{source:'damageSource'}, + forced:true, + derivation:'jianyan', + filter:function(event,player){ + return player.hp2) return 'trick'; + return 'red'; + }); + "step 1" + event.card=get.cardPile(function(card){ + if(get.color(card)==result.control) return true; + if(get.type(card,'trick')==result.control) return true; + return false; + },'cardPile'); + if(!event.card){ + event.finish(); + return; + } + player.showCards([event.card]); + "step 2" + player.chooseTarget(true,'选择一名男性角色送出'+get.translation(event.card),function(card,player,target){ + return target.sex=='male'; + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(_status.event.neg) return -att; + return att; + }).set('neg',get.value(event.card,player,'raw')<0); + "step 3" + player.line(result.targets,'green'); + result.targets[0].gain(event.card,'gain2'); + + }, + ai:{ + order:9, + result:{ + player:function(player){ + if(game.hasPlayer(function(current){ + return current.sex=='male'&&get.attitude(player,current)>0; + })) return 2; + return 0; + }, + }, + threaten:1.2 + } + }, + reguose:{ + audio:2, + enable:'phaseUse', + usable:1, + discard:false, + filter:function(event,player){ + return player.countCards('he',{suit:'diamond'})>0; + }, + prepare:'throw', + position:'he', + filterCard:{suit:'diamond'}, + filterTarget:function(card,player,target){ + if(player==target) return false; + if(target.hasJudge('lebu')) return true; + return lib.filter.targetEnabled({name:'lebu'},player,target); + }, + check:function(card){ + return 7-get.value(card); + }, + content:function(){ + if(target.hasJudge('lebu')){ + target.discard(target.getJudge('lebu')); + } + else{ + var next=player.useCard({name:'lebu'},target,cards); + next.animate=false; + next.audio=false; + } + player.draw(); + }, + ai:{ + result:{ + target:function(player,target){ + if(target.hasJudge('lebu')) return -get.effect(target,{name:'lebu'},player,target); + return get.effect(target,{name:'lebu'},player,target); + } + }, + order:9, + } + }, + fenwei:{ + skillAnimation:true, + animationColor:'wood', + audio:2, + audioname:['heqi'], + unique:true, + mark:true, + limited:true, + trigger:{global:'useCardToPlayered'}, + //priority:5, + filter:function(event,player){ + if(event.getParent().triggeredTargets3.length>1) return false; + if(get.type(event.card)!='trick') return false; + if(get.info(event.card).multitarget) return false; + if(event.targets.length<2) return false; + if(player.storage.fenwei) return false; + return true; + }, + init:function(player){ + player.storage.fenwei=false; + }, + direct:true, + content:function(){ + "step 0" + player.chooseTarget(get.prompt('fenwei'), + [1,trigger.targets.length],function(card,player,target){ + return _status.event.targets.contains(target); + }).set('ai',function(target){ + var trigger=_status.event.getTrigger(); + if(game.phaseNumber>game.players.length*2&&trigger.targets.length>=game.players.length-1&&!trigger.excluded.contains(target)){ + return -get.effect(target,trigger.card,trigger.player,_status.event.player); + } + return -1; + }).set('targets',trigger.targets); + "step 1" + if(result.bool){ + player.awakenSkill('fenwei'); + player.logSkill('fenwei',result.targets); + player.storage.fenwei=true; + trigger.getParent().excluded.addArray(result.targets); + game.delay(); + } + }, + intro:{ + content:'limited' + } + }, + chulao:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + if(player==target) return false; + if(target.group=='unknown') return false; + for(var i=0;i0; + }, + filter:function(event,player){ + return player.countCards('he')>0; + }, + filterCard:true, + position:'he', + selectTarget:[1,Infinity], + check:function(card){ + if(get.suit(card)=='spade') return 8-get.value(card); + return 5-get.value(card); + }, + content:function(){ + "step 0" + if(num==0&&get.suit(cards[0])=='spade') player.draw(); + player.choosePlayerCard(targets[num],'he',true); + "step 1" + if(result.bool){ + if(result.links.length) targets[num].discard(result.links[0]); + if(get.suit(result.links[0])=='spade') targets[num].draw(); + } + }, + ai:{ + result:{ + target:-1 + }, + threaten:1.2, + order:3 + } + }, + xunxun:{ + audio:2, + trigger:{player:'phaseDrawBegin1'}, + //check:function(event,player){ + // return !player.hasSkill('reyiji2'); + //}, + content:function(){ + "step 0" + event.cards=get.cards(4); + player.chooseCardButton(event.cards,2,'选择两张牌置于牌堆顶',true).set('ai',ai.get.buttonValue); + "step 1" + if(result.bool){ + var choice=[]; + for(var i=0;i-3; + return get.attitude(player,event.player)>-3; + }, + logTarget:function(event,player){ + if(event.player==player) return event.source; + return event.player; + }, + content:function(){ + "step 0" + event.count=trigger.num; + "step 1" + game.asyncDraw([trigger.player,trigger.source]); + event.count--; + "step 2" + game.delay(); + "step 3" + if(event.count){ + player.chooseBool(get.prompt2('wangxi',lib.skill.wangxi.logTarget(trigger,player))) + } + else event.finish(); + "step 4" + if(result.bool){ + player.logSkill('wangxi',lib.skill.wangxi.logTarget(trigger,player)); + event.goto(1); + } + }, + ai:{ + maixie:true, + maixie_hp:true + } + }, + refangquan:{ + audio:2, + trigger:{player:'phaseUseBefore'}, + filter:function(event,player){ + return player.countCards('h')>0&&!player.hasSkill('fangquan3'); + }, + direct:true, + content:function(){ + "step 0" + var fang=player.countMark('fangquan2')==0&&player.hp>=2&&player.countCards('h')<=player.hp+1; + player.chooseBool(get.prompt2('refangquan')).set('ai',function(){ + if(!_status.event.fang) return false; + return game.hasPlayer(function(target){ + if(target.hasJudge('lebu')||target==player) return false; + if(get.attitude(player,target)>4){ + return (get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1)>0); + } + return false; + }); + }).set('fang',fang); + "step 1" + if(result.bool){ + player.logSkill('refangquan'); + trigger.cancel(); + player.addTempSkill('fangquan2','phaseAfter'); + player.addMark('fangquan2',1,false); + player.addTempSkill('refangquan2'); + //player.storage.fangquan=result.targets[0]; + } + } + }, + refangquan2:{ + mod:{ + maxHandcardBase:function(player,num){ + return player.maxHp; + }, + }, + }, + rehunzi:{ + inherit:'hunzi', + filter:function(event,player){ + return player.hp<=2&&!player.storage.rehunzi; + }, + ai:{ + threaten:function(player,target){ + if(target.hp<=2) return 2; + return 0.5; + }, + maixie:true, + effect:{ + target:function(card,player,target){ + if(!target.hasFriend()) return; + if(get.tag(card,'damage')==1&&target.hp==3&&!target.isTurnedOver()&& + _status.currentPhase!=target&&get.distance(_status.currentPhase,target,'absolute')<=3) return [0.5,1]; + } + } + } + }, + rezhijian:{ + inherit:'zhijian', + group:['rezhijian_use'], + subfrequent:['use'], + subSkill:{ + use:{ + audio:'rezhijian', + trigger:{player:'useCard'}, + frequent:true, + filter:function(event,player){ + return get.type(event.card)=='equip'; + }, + prompt:'是否发动【直谏】摸一张牌?', + content:function(){ + player.draw('nodelay'); + }, + }, + }, + }, + retuntian:{ + audio:2, + trigger:{player:'loseEnd'}, + frequent:true, + filter:function(event,player){ + if(player==_status.currentPhase) return false; + for(var i=0;i0){ + player.discardPlayerCard(target,'he',true); + } + else{ + event.finish(); + } + }, + ai:{ + order:4, + expose:0.2, + result:{ + target:-1, + 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.hp<=2) return -2; + if(player.countCards('h','shan')==0) return -1; + return -0.5; + } + }, + threaten:1.1 + } + }, + rebeige:{ + audio:'beige', + audioname:['re_caiwenji'], + trigger:{global:'damageEnd'}, + filter:function(event,player){ + return (event.card&&event.card.name=='sha'&&event.source&& + event.player.classList.contains('dead')==false&&player.countCards('he')); + }, + direct:true, + checkx:function(event,player){ + var att1=get.attitude(player,event.player); + var att2=get.attitude(player,event.source); + return att1>0&&att2<=0; + }, + content:function(){ + "step 0" + var next=player.chooseToDiscard('he',get.prompt2('rebeige',trigger.player)); + var check=lib.skill.beige.checkx(trigger,player); + next.set('ai',function(card){ + if(_status.event.goon) return 8-get.value(card); + return 0; + }); + next.set('logSkill','beige'); + next.set('goon',check); + "step 1" + if(result.bool){ + trigger.player.judge(); + } + else{ + event.finish(); + } + "step 2" + switch(result.suit){ + case 'heart':trigger.player.recover(trigger.num);break; + case 'diamond':trigger.player.draw(3);break; + case 'club':trigger.source.chooseToDiscard('he',2,true);break; + case 'spade':trigger.source.turnOver();break; + } + }, + ai:{ + expose:0.3 + } + }, + rexingshang:{ + audio:2, + trigger:{global:'die'}, + filter:function(event,player){ + return player.isDamaged()||event.player.countCards('he')>0; + }, + direct:true, + content:function(){ + "step 0" + var choice=[]; + if(player.isDamaged()) choice.push('回复体力'); + if(trigger.player.countCards('he')) choice.push('获得牌'); + choice.push('cancel2'); + player.chooseControl(choice).set('prompt',get.prompt2('rexingshang')).set('ai',function(){ + if(choice.length==2) return 0; + if(get.value(trigger.player.getCards('he'))>8) return 1; + return 0; + }); + "step 1" + if(result.control!='cancel2'){ + player.logSkill(event.name,trigger.player); + if(result.control=='获得牌'){ + event.togain=trigger.player.getCards('he'); + player.gain(event.togain,trigger.player,'giveAuto'); + } + else player.recover(); + } + }, + }, + refangzhu:{ + audio:2, + trigger:{ + player:"damageEnd", + }, + direct:true, + content:function (){ + "step 0" + player.chooseTarget(get.prompt2('refangzhu'),function(card,player,target){ + return player!=target + }).ai=function(target){ + if(target.hasSkillTag('noturn')) return 0; + var player=_status.event.player; + if(get.attitude(_status.event.player,target)==0) return 0; + if(get.attitude(_status.event.player,target)>0){ + if(target.classList.contains('turnedover')) return 1000-target.countCards('h'); + if(player.getDamagedHp()<3) return -1; + return 100-target.countCards('h'); + } + else{ + if(target.classList.contains('turnedover')) return -1; + if(player.getDamagedHp()>=3) return -1; + return 1+target.countCards('h'); + } + } + "step 1" + if(result.bool){ + player.logSkill('refangzhu',result.targets); + event.target=result.targets[0]; + if(player.isHealthy()) event._result={bool:false}; + else event.target.chooseToDiscard('he',player.getDamagedHp()).set('ai',function(card){ + var player=_status.event.player; + if(player.isTurnedOver()||_status.event.getTrigger().player.getDamagedHp()>2) return -1; + return (player.hp*player.hp)-get.value(card); + }).set('prompt','弃置'+get.cnNumber(player.getDamagedHp())+'张牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+get.cnNumber(player.getDamagedHp())+'张牌。'); + } + else event.finish(); + "step 2" + if(result.bool){ + event.target.loseHp(); + } + else{ + if(player.isDamaged()) event.target.draw(player.getDamagedHp()); + event.target.turnOver(); + } + }, + 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,-1.5]; + if(target.hp<=1) return; + if(!target.hasFriend()) return; + var hastarget=false; + var turnfriend=false; + var players=game.filterPlayer(); + for(var i=0;i0&&players[i].isTurnedOver()){ + hastarget=true; + turnfriend=true; + } + } + if(get.attitude(player,target)>0&&!hastarget) return; + if(turnfriend||target.hp==target.maxHp) return [0.5,1]; + if(target.hp>1) return [1,0.5]; + } + }, + }, + }, + }, + repolu:{ + audio:1, + trigger:{ + source:'dieAfter', + player:'die', + }, + forceDie:true, + filter:function(event,player,name){ + return name=='die'||player.isAlive(); + }, + direct:true, + content:function(){ + 'step 0' + if(!player.storage.repolu) player.storage.repolu=0; + event.num=player.storage.repolu+1; + player.chooseTarget([1,Infinity],get.prompt('repolu'),'令任意名角色摸'+get.cnNumber(event.num)+'张牌').set('forceDie',true).ai=function(target){ + return get.attitude(_status.event.player,target); + }; + 'step 1' + if(result.bool){ + player.storage.repolu++; + result.targets.sortBySeat(); + player.logSkill('repolu',result.targets); + game.asyncDraw(result.targets,num); + } + else event.finish(); + 'step 2' + game.delay(); + }, + }, + oljiuchi:{ + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='jiu') return Infinity; + }, + }, + audio:'jiuchi', + audioname:['ol_dongzhuo'], + enable:'chooseToUse', + filterCard:function(card){ + return get.suit(card)=='spade'; + }, + viewAs:{name:'jiu'}, + viewAsFilter:function(player){ + if(!player.countCards('h',{suit:'spade'})) return false; + return true; + }, + prompt:'将一张黑桃手牌当酒使用', + check:function(card){ + if(_status.event.type=='dying') return 1; + return 4-get.value(card); + }, + ai:{ + skillTagFilter:function(player){ + return player.countCards('h',{suit:'spade'})>0&&player.hp<=0; + }, + threaten:1.5, + save:true, + }, + trigger:{source:'damageEnd'}, + forced:true, + filter:function(event,player){ + if(event.name=='chooseToUse') return player.countCards('h',{suit:'spade'})>0; + return event.card&&event.card.name=='sha'&&event.getParent(2).jiu==true&&!player.hasSkill('oljiuchi_air'); + }, + content:function(){ + player.addTempSkill('oljiuchi_air'); + }, + subSkill:{ + air:{}, + }, + }, + relieren:{ + shaRelated:true, + audio:2, + audioname:['boss_lvbu3'], + trigger:{player:'useCardToPlayered'}, + filter:function(event,player){ + return event.card.name=='sha'&&player.canCompare(event.target); + }, + check:function(event,player){ + return get.attitude(player,event.target)<0; + }, + //priority:5, + content:function(){ + "step 0" + player.chooseToCompare(trigger.target); + "step 1" + if(result.bool){ + if(trigger.target.countGainableCards(player,'he')) player.gainPlayerCard(trigger.target,true,'he'); + } + else{ + var card1=result.player; + var card2=result.target; + if(get.position(card1)=='d') trigger.target.gain(card1,'gain2'); + if(get.position(card2)=='d') player.gain(card2,'gain2'); + } + } + }, + rezaiqi:{ + count:function(){ + var num=0; + game.countPlayer2(function(current){ + current.getHistory('lose',function(evt){ + if(evt.position==ui.discardPile){ + for(var i=0;i0; + }, + trigger:{ + player:'phaseDiscardEnd' + }, + content:function(){ + 'step 0' + player.chooseTarget([1,lib.skill.rezaiqi.count()],get.prompt2('rezaiqi')).ai=function(target){ + return get.attitude(_status.event.player,target); + }; + 'step 1' + if(result.bool){ + var targets=result.targets; + targets.sortBySeat(); + player.line(targets,'fire'); + player.logSkill('rezaiqi',targets); + event.targets=targets; + } + else event.finish(); + 'step 2' + event.current=targets.shift(); + if(player.isHealthy()) event._result={index:0}; + else event.current.chooseControl().set('choiceList',[ + '摸一张牌', + '令'+get.translation(player)+'回复一点体力', + ]).set('ai',function(){ + if(get.attitude(event.current,player)>0) return 1; + return 0; + }); + 'step 3' + if(result.index==1){ + event.current.line(player); + player.recover(); + } + else event.current.draw(); + game.delay(); + if(targets.length) event.goto(2); + }, + group:'rezaiqi_count', + }, + rezaiqi_count:{ + trigger:{ + global:["loseEnd","cardsDiscardEnd"], + player:'phaseAfter', + }, + silent:true, + forced:true, + popup:false, + filter:function (event,player,name){ + if(name=='phaseAfter') return true; + if(_status.currentPhase!=player) return false; + var evt=event.getParent(); + if(evt&&evt.name=='useCard'&&evt.card&&['equip','delay'].contains(get.type(evt.card))) return false; + var cards=event.cards; + for(var i=0;i②当你不因〖暴虐〗或〖助祭〗而进行的判定的判定牌生效后,若结果为:黑桃,你可对一名其他角色造成2点雷电伤害;梅花:你回复1点体力并可对一名其他其他角色造成1点雷电伤害。', + xinguidao_info:'一名角色的判定牌生效前,你可以打出一张黑色牌作为判定牌并获得原判定牌。若你以此法打出的牌为黑桃2-9,则你摸一张牌。', + reqiangxi:"强袭", + "reqiangxi_info":"出牌阶段对每名其他角色限一次,你可以选择一项:1. 失去一点体力并对你攻击范围内的一名其他角色造成一点伤害;2. 弃置一张武器牌并对你攻击范围内的一名其他角色造成一点伤害。", + rehuoji:"火计", + "rehuoji_info":"出牌阶段,你可一张红色牌当作【火攻】使用。", + rekanpo:"看破", + "rekanpo_info":"你可以将一张黑色牌当作【无懈可击】使用。", + rejieming:"节命", + "rejieming_info":"当你受到1点伤害后,你可以令一名角色摸两张牌。然后若其手牌数小于体力上限,则你摸一张牌。", + reshuangxiong:"双雄", + "reshuangxiong_info":"摸牌阶段,你可以放弃摸牌。若如此做,你展示牌堆顶的两张牌并选择获得其中的一张。然后,你本回合内可以将与此牌颜色不同的一张手牌当做【决斗】使用。当你受到【决斗】造成的伤害时,你可以获得对方于此决斗中打出的所有【杀】", + "reshuangxiong2":"双雄", + "reshuangxiong2_info":"", + + reguanxing:'观星', + reguanxing_info:'准备阶段,你可以观看牌堆顶的5张牌(存活角色小于4时改为3张),并将其以任意顺序置于牌堆项或牌堆底,若你将〖观星〗的牌都放在了牌堆底,则你可以在结束阶段再次发动〖观星〗。', + reluoshen:'洛神', + reluoshen_info:'准备阶段,你可以进行判定,若结果为黑色则获得此判定牌,且可重复此流程直到出现红色的判定结果。你通过〖洛神〗获得的牌,不计入当前回合的手牌上限', + reluoshen_info_guozhan:'准备阶段,你可以进行判定,若为黑色则可以继续判定,直到出现红色。然后你获得所有黑色的判定牌。你通过〖洛神〗获得的牌,不计入当前回合的手牌上限。(结果为黑色的判定牌于此过程中不会进入弃牌堆)', + rejieyin:'结姻', + rejieyin_info:'出牌阶段限一次,你可以选择一名男性角色并弃置一张手牌或将装备区内的一张装备牌置于其装备区,你与其体力较高的角色摸一张牌,体力值较低的角色回复1点体力。', + rebiyue:'闭月', + rebiyue_info:'结束阶段,你可以摸一张牌,若你没有手牌,则改为摸两张牌。', + rejizhi:'集智', + rejizhi_info:'当你使用锦囊牌时,你可以摸一张牌。若此牌为基本牌,则你可以弃置之,然后令本回合手牌上限+1。', + reqicai:'奇才', + reqicai_info:'锁定技,你使用锦囊牌无距离限制,你装备区内的防具牌和宝物牌不能被其他角色弃置。', + rezhiheng:'制衡', + rezhiheng_info:'出牌阶段限一次,你可以弃置任意张牌并摸等量的牌,若你在发动〖制衡〗时弃置了所有手牌,则你多摸一张牌。', + rejiuyuan:'救援', + rejiuyuan_info:'主公技,其他吴势力角色对自己使用【桃】时,若其体力值大于你,则其可以选择令你回复1点体力,然后其摸1张牌。', + + "new_yajiao":"涯角", + "new_yajiao_info":"每当你于回合外使用或打出牌时,你可以亮出牌堆顶的一张牌,并将其交给一名角色。若此牌与你此次使用或打出的牌类别不同,则你弃置一张牌。", + "new_liyu":"利驭", + "new_liyu_info":"当你使用【杀】对一名其他角色造成伤害后,你可以获得其一张牌。若此牌不为装备牌,则其摸一张牌。若此牌为装备牌,则视为你对其选择的另一名角色使用一张【决斗】。", + "new_retuxi":"突袭", + "new_retuxi_info":"摸牌阶段摸牌时,你可以少摸任意张牌,然后获得等量的角色的各一张手牌。", + "new_retuxi_info_guozhan":"摸牌阶段摸牌时,你可以少摸至多两张牌,然后获得等量的角色的各一张手牌。", + "new_reyiji":"遗计", + "new_reyiji_info":"当你受到1点伤害后,你可以摸两张牌,然后可以将至多两张手牌交给其他角色。", + "new_rejianxiong":"奸雄", + "new_rejianxiong_info":"当你受到伤害后,你可以获得对你造成伤害的牌并摸一张牌。", + "new_reluoyi":"裸衣", + "new_reluoyi_info":"摸牌阶段开始时,你展示牌堆顶的三张牌。然后,你可以放弃摸牌。若如此做,你获得其中的基本牌、武器牌和【决斗】,且直到你的下回合开始,你使用的【杀】或【决斗】造成伤害时,此伤害+1。否则,你将这些牌置入弃牌堆。", + "new_rewusheng":"武圣", + "new_rewusheng_info":"你可以将一张红色牌当做【杀】使用或打出。你使用的方片杀没有距离限制。", + "new_yijue":"义绝", + "new_yijue_info":"出牌阶段限一次,你可以弃置一张牌并令一名有手牌的其他角色展示一张手牌。若此牌为黑色,则该角色不能使用或打出牌,非锁定技失效且受到来自你的红桃【杀】的伤害+1直到回合结束。若此牌为红色,则你可以获得此牌,并可以令其回复一点体力。", + "new_yijue2":"义绝", + "new_yijue2_info":"", + "new_repaoxiao":"咆哮", + "new_repaoxiao_info":"锁定技,出牌阶段,你使用【杀】没有数量限制。若你于此出牌阶段内使用过【杀】,则你本回合内使用【杀】没有距离限制。", + "new_tishen":"替身", + "new_tishen_info":"出牌阶段结束时,你可以弃置你所有的锦囊牌与坐骑牌。若如此做,直到你的下个回合开始,你获得所有以你为目标且未对你造成伤害的【杀】。", + "new_tishen2":"替身", + "new_tishen2_info":"", + "new_qingjian":"清俭", + "new_qingjian_info":"当你于摸牌阶段外获得牌时,你可以展示任意张牌并交给一名其他角色。然后,当前回合角色本回合的手牌上限+X(X为你给出的牌中包含的类别数)。每回合限一次。", + "qingjian_add":"清俭", + "qingjian_add_info":"", + "new_reqingnang":"青囊", + "new_reqingnang_info":"出牌阶段,你可以弃置一张手牌,令一名本回合内未成为过〖青囊〗的目标的角色回复一点体力。若你弃置的是黑色牌,则你本回合内不能再发动〖青囊〗。", + "new_reyaowu":"耀武", + "new_reyaowu_info":"锁定技,当一名角色使用【杀】对你造成伤害时,若此杀为红色,该角色回复1点体力或摸一张牌。否则则你摸一张牌。", + reyaowu:'耀武', + reyaowu_info:'锁定技,当你受到牌造成的伤害时,若此牌为红色,则伤害来源摸一张牌;否则你摸一张牌。', + reqingguo:'倾国', + reqingguo_info:'你可以将一张黑色牌当做【闪】使用或打出。', + + qinxue:'勤学', + retuxi:'突袭', + reluoyi:'裸衣', + reluoyi2:'裸衣', + reganglie:'刚烈', + qingjian:'清俭', + reyingzi:'英姿', + refanjian:'反间', + refanjian_card:'弃牌', + refanjian_hp:'流失体力', + reqianxun:'谦逊', + reqianxun2:'谦逊', + relianying:'连营', + retishen:'替身', + retishen2:'替身', + reyajiao:'涯角', + rejianxiong:'奸雄', + rejianxiong_mopai:'摸牌', + rejianxiong_napai:'拿牌', + reyiji:'遗计', + reyiji2:'遗计', + yijue:'义绝', + yijue2:'义绝', + retieji:'铁骑', + refankui:'反馈', + reyicong:'义从', + qiaomeng:'趫猛', + rekurou:'苦肉', + zhaxiang:'诈降', + zhaxiang2:'诈降', + zhuhai:'诛害', + qianxin:'潜心', + jianyan:'荐言', + reguicai:'鬼才', + xunxun:'恂恂', + wangxi:'忘隙', + reguose:'国色', + fenwei:'奋威', + chulao:'除疠', + liyu:'利驭', + rerende:'仁德', + rerende_info:'出牌阶段,你可以将至少一张手牌交给其他角色,然后你于此阶段内不能再以此法交给该角色牌;若你于此阶段内给出的牌首次达到两张,你可以视为使用一张基本牌', + liyu_info:'当你使用【杀】对一名其他角色造成伤害后,该角色可令你获得其一张牌,若如此做,则视为你对其选择的另一名角色使用一张【决斗】', + xunxun_info:'摸牌阶段,你可以观看牌堆顶的四张牌,然后将其中的两张牌置于牌堆顶,并将其余的牌以任意顺序置于牌堆底。', + wangxi_info:'每当你对其他角色造成1点伤害后,或受到其他角色造成的1点伤害后,你可与该角色各摸一张牌。', + reguose_info:'出牌阶段限一次,你可以选择一项:将一张方片花色牌当做【乐不思蜀】使用;或弃置一张方片花色牌并弃置场上的一张【乐不思蜀】。选择完成后,你摸一张牌。', + fenwei_info:'限定技,当一名角色使用的锦囊牌指定了至少两名角色为目标时,你可以令此牌对其中任意名角色无效。', + chulao_info:'出牌阶段限一次,若你有牌,你可以选择任意名势力各不相同的其他角色,你弃置你和这些角色的各一张牌。然后以此法弃置黑桃牌的角色各摸一张牌。', + reguicai_info:'在任意角色的判定牌生效前,你可以打出一张牌代替之', + zhuhai_info:'一名其他角色的结束阶段开始时,若该角色本回合造成过伤害,你可以对其使用一张【杀】。', + qianxin_info:'觉醒技,当你造成一次伤害后,若你已受伤,你须减1点体力上限,并获得技能“荐言”。', + jianyan_info:'出牌阶段限一次,你可以声明一种牌的类别或颜色,并亮出牌库中第一张符合你声明的牌,然后你令一名男性角色获得此牌', + rekurou_info:'出牌阶段限一次,你可以弃置一张牌,然后失去1点体力。', + zhaxiang_info:'锁定技 每当你失去1点体力后,你摸三张牌。然后若此时是你的出牌阶段,则直到回合结束,你使用红色【杀】无距离限制且不能被【闪】响应,你可以额外使用一张【杀】。', + qiaomeng_info:'每当你使用黑色【杀】对一名角色造成伤害后,你可以弃置该角色装备区里的一张牌,若此牌是坐骑牌,你于此牌置入弃牌堆时获得之。', + reyicong_info:'锁定技,只要你的体力值大于2点,你的进攻距离+1;只要你的体力值为2点或更低,你的防御距离+1', + refankui_info:'每当你受到1点伤害后,你可以获得伤害来源的一张牌。', + retieji_info:'当你使用【杀】指定一名角色为目标后,你可以进行一次判定并令该角色的非锁定技失效直到回合结束,除非该角色弃置一张与判定结果花色相同的牌,否则不能使用【闪】抵消此【杀】。', + yijue_info:'出牌阶段限一次,你可以与一名其他角色拼点,若你赢,则直到回合结束,该角色不能使用或打出手牌且其非锁定技失效,若你没赢,你可令该角色回复一点体力。', + reyiji_info:'每当你受到1点伤害后,你可以摸两张牌。然后你可以在至多两名角色的武将牌旁边分别扣置至多两张手牌,这些角色的下个摸牌阶段开始时,该角色获得其武将牌旁的这些牌。', + rejianxiong_info:'每当你受到伤害后,你可以获得对你造成伤害的牌,然后摸一张牌。', + reyajiao_info:'每当你于回合外使用或打出一张手牌时,你可以亮出牌堆顶的一张牌,若此牌与你此次使用或打出的牌类别相同,你可以将之交给任意一名角色;若不同则你可以将之置入弃牌堆。', + retishen_info:'限定技,准备阶段开始时,你可以将体力回复至等同于你上回合结束时的体力值,然后你每以此法回复1点体力,便摸一张牌。', + reqianxun_info:'每当一张延时类锦囊牌或其他角色使用的普通锦囊牌生效时,若你是此牌的唯一目标,你可以将所有手牌置于你的武将牌上,若如此做,此回合结束时,你获得你武将牌上的所有牌。', + relianying_info:'当你失去最后的手牌时,你可以令至多X名角色各摸一张牌(X为你此次失去的手牌数)。', + reyingzi_info:'锁定技,摸牌阶段摸牌时,你额外摸一张牌;你的手牌上限为你的体力上限。', + refanjian_info:'出牌阶段限一次,你可以展示一张手牌并将此牌交给一名其他角色。然后该角色选择一项:展示其手牌并弃置所有与此牌花色相同的牌,或失去一点体力。', + qingjian_info:'每当你于摸牌阶段外获得牌时,你可以将其中任意牌以任意顺序交给其他角色,每回合最多发动四次', + qinxue_info:'觉醒技,准备阶段开始时,若你的手牌数比体力值多3(人数不少于7时改为2)或更多,你须减一点体力上限并获得技能【攻心】', + retuxi_info:'摸牌阶段摸牌时,你可以少摸任意张牌,然后选择等量的手牌数大于或等于你的其他角色,获得这些角色的各一张手牌。', + reluoyi_info:'你可以跳过摸牌阶段,然后展示牌堆顶的三张牌,获得其中的基本牌、武器牌和【决斗】,若如此做,直到你的下回合开始,你为伤害来源的【杀】或【决斗】造成的伤害+1。', + reganglie_info:'每当你受到1点伤害后,可进行一次判定,若结果为红色,你对伤害来源造成1点伤害,若结果为黑色,你弃置其一张牌。', + botu:'博图', + botu_info:'回合结束时,若你本回合出牌阶段内使用的牌包含四种花色,则你可以进行一个额外回合。', + + xin_yuji:'界于吉', + re_zuoci:'界左慈', + "reguhuo":"蛊惑", + "reguhuo_info":"每名角色的回合限一次,你可以扣置一张手牌当一张基本牌或普通锦囊牌使用或打出。其他角色依次选择是否质疑。然后,你展示此牌。若有质疑的角色:若此牌为假,则此牌作废,且所有质疑者各摸一张牌;为真,则所有质疑角色须弃置一张牌或失去1点体力,并获得技能〖缠怨〗。", + "reguhuo_guess":"蛊惑", + "reguhuo_guess_info":"", + rechanyuan:"缠怨", + "rechanyuan_info":"锁定技,你不能质疑于吉,只要你的体力值不大于1,你失去你的武将技能。", + "reguhuo_respond":"蛊惑", + "reguhuo_respond_info":"", + "reguhuo_wuxie":"蛊惑", + "reguhuo_wuxie_info":"", + "reguhuo_phase":"蛊惑", + "reguhuo_phase_info":"", + rehuashen:'化身', + rehuashen_info:'游戏开始后,你随机获得三张未加入游戏的武将牌,选一张置于你面前并声明该武将牌的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。你的每个准备阶段和结束后,你可以选择一项:①弃置至多两张未展示的化身牌并重新获得等量化身牌;②更换所展示的化身牌或技能。(你不可声明限定技、觉醒技或主公技)。', + rexinsheng:'新生', + rexinsheng_info:'当你受到1点伤害后,你可以获得一张新的化身牌。', + re_zhurong:'界祝融', + re_menghuo:'界孟获', + re_sunjian:'手杀孙坚', + re_caopi:'界曹丕', + oljiuchi:'酒池', + oljiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。锁定技,你使用【酒】无次数限制,且当你于回合内使用带有【酒】效果的【杀】造成伤害后,你令你的【崩坏】失效直到回合结束。', + repolu:'破虏', + repolu_info:'当你杀死一名角色/死亡时,你可以令任意名角色摸X+1张牌。(X为你此前发动过【破虏】的次数)', + rexingshang:'行殇', + rexingshang_info:'当其他角色死亡后,你可以选择一项:回复1点体力,或获得其所有牌。', + refangzhu:'放逐', + refangzhu_info:'当你受到伤害后,你可以令一名其他角色选择一项:摸X张牌并将武将牌翻面,或弃置X张牌并失去1点体力。(X为你已损失的体力值)', + relieren:'烈刃', + relieren_info:'当你使用【杀】指定目标后,你可以和目标角色进行拼点。若你赢,你获得其一张牌。若你没赢,你获得对方的拼点牌,其获得你的拼点牌。', + rezaiqi:'再起', + rezaiqi_info:'弃牌阶段结束时,你可以令至多X名角色选择一项:1.摸一张牌,2.令你回复1点体力(X为本回合进入弃牌堆的红色牌数)', + re_dengai:'界邓艾', + re_jiangwei:'界姜维', + re_caiwenji:'界蔡文姬', + re_baosanniang:'手杀鲍三娘', + retuntian:'屯田', + retiaoxin:'挑衅', + rebeige:'悲歌', + retuntian_info:'当你于回合外失去牌时,你可以进行一次判定。若判定结果为♥,你获得此判定牌。否则你将此牌置于你的武将牌上,称之为【田】。锁定技,你计算与其他角色的距离时-X(X为你武将牌上【田】的数目)', + retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。', + rebeige_info:'当有角色受到【杀】造成的伤害后,你可以弃一张牌,并令其进行一次判定,若判定结果为:♥该角色回复X点体力(X为伤害点数);♦︎该角色摸三张牌;♣伤害来源弃两张牌;♠伤害来源将其武将牌翻面', + re_liushan:'手杀刘禅', + re_sunben:'界孙笨', + re_zhangzhang:'界张昭张纮', + rehunzi:'魂姿', + rehunzi_info:'觉醒技,准备阶段,若你的体力值不大于2,你减1点体力上限,并获得技能〖英姿〗和〖英魂〗。', + rezhijian_info:'出牌阶段,你可以将手牌中的一张装备牌置于一名其他角色装备区里(不得替换原装备),然后摸一张牌。当你使用装备牌时,你可以摸一张牌。', + refangquan:'放权', + refangquan_info:'你可跳过你的出牌阶段,若如此做,你本回合的手牌上限为你的体力上限,且回合结束时,你可以弃置一张手牌并令一名其他角色进行一个额外的回合。', + re_wuguotai:'界吴国太', + re_gaoshun:'界高顺', + reganlu:'甘露', + reganlu_info:'出牌阶段限一次,你可以选择装备区牌数之差的绝对值不小于X的两名角色或包含你在内的两名角色,然后交换这两名角色装备区内的牌。(X为你已损失的体力值)', + repojun:'破军', + repojun2:'破军', + repojun3:'破军', + repojun_info:'当你使用【杀】指定目标后,你可以将其的至多X张牌置于其武将牌上(X为其体力值),然后其于当前回合结束时获得这些牌。当你因执行【杀】的效果而对一名角色造成伤害时,若该角色的手牌数和装备区内的牌数均不大于你,则此伤害+1。', + rexianzhen:'陷阵', + rexianzhen_info:'出牌阶段限一次,你可以和一名其他角色拼点。若你赢,你本回合内对其使用牌没有次数和距离限制。若你没赢,你本回合内不能使用【杀】。若你以此法失去的拼点牌为【杀】,则你的【杀】不计入本回合的手牌上限。', + rejinjiu:'禁酒', + rejinjiu_info:'锁定技,你的【酒】均视为【杀】。其他角色不能于你的回合内使用【酒】。当你受到酒【杀】的伤害时,你令此伤害-X(X为影响过此【杀】的伤害值的【酒】的数量)', + rejinjiu2:'禁酒', + rejinjiu3:'禁酒', + ol_xiahouyuan:'界夏侯渊', + shebian:'设变', + shebian_info:'当你的武将牌翻面后,你可以移动场上的一张装备牌。', + cangzhuo:'藏拙', + cangzhuo_info:'弃牌阶段开始时,若你本回合内没有使用过锦囊牌,则你的锦囊牌不计入手牌上限。', + re_zhangyi:'界张嶷', + rewurong:'怃戎', + rewurong_info:'出牌阶段限一次,你可以令一名其他角色与你同时展示一张手牌:若你展示的是【杀】且该角色展示的不是【闪】,则你对其造成1点伤害;若你展示的不是【杀】且该角色展示的是【闪】,则你获得其一张牌', + ol_pangtong:'界庞统', + olniepan:'涅槃', + olniepan_info:'限定技,当你处于濒死状态时,你可以弃置你区域内的所有牌并复原你的武将牌,然后摸三张牌并将体力回复至3点。然后你选择获得以下技能中的一个:〖八阵〗/〖火计〗/〖看破〗', + ol_weiyan:'界魏延', + reqimou:'奇谋', + reqimou_info:'限定技,出牌阶段,你可以失去任意点体力并摸等量的牌,然后直到回合结束,你计算与其他角色的距离时-X,且你可以多使用X张【杀】(X为你失去的体力值)', + ol_xiaoqiao:'界小乔', + rehongyan:'红颜', + rehongyan_info:'锁定技,你区域内的黑桃牌和黑桃判定牌均视为红桃。当你于回合外正面朝上失去红桃牌后,若你的手牌数小于体力值,你摸一张牌。', + re_caozhi:'界曹植', + reluoying:'落英', + reluoying_discard:'落英', + reluoying_judge:'落英', + reluoying_info:'当其他角色的梅花牌因弃置或判定而进入弃牌堆时,你可以获得之。', + rejiushi:'酒诗', + rejiushi_info:'当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。当你受到伤害后,若你的武将牌背面向上,你可以翻面并获得牌堆中的一张随机锦囊。', + rejiushi1:'酒诗', + rejiushi3:'酒诗', + rejiushi_mark:'酒诗·改', + rejiushi_mark_info:'当你需要使用【酒】时,若你的武将牌正面向上,你可以翻面,视为使用一张【酒】。当你受到伤害后,若你的武将牌背面向上,你可以翻面。当你翻面时,你获得牌堆中的一张随机锦囊。', + chengzhang:'成章', + chengzhang_info:'觉醒技,准备阶段开始时,若你造成伤害与受到伤害值之和累计7点或以上,则你回复1点体力并摸1张牌,然后改写〖酒诗〗。', + re_wuyi:'界吴懿', + re_zhuran:'界朱然', + re_quancong:'界全琮', + re_liaohua:'界廖化', + re_guohuai:'界郭淮', + re_chengpu:'界程普', + rechunlao:'醇醪', + rechunlao2:'醇醪', + rechunlao_info:'结束阶段开始时,若你没有“醇”,你可以将至少一张【杀】置于你的武将牌上,称为“醇”。当一名角色处于濒死状态时,你可以移去一张“醇”,视为该角色使用一张【酒】,然后若此“醇”的属性为:火,你回复1点体力、雷,你摸两张牌。', + re_caozhang:'界曹彰', + yujin_yujin:'界于禁', + rejieyue:'节钺', + rejieyue_info:'结束阶段开始时,你可以将一张牌交给一名其他角色。然后其选择一项:令你摸三张牌:或其保留一张手牌和装备区的牌,然后弃置其余的牌。', + re_lingtong:'界凌统', + rexuanfeng:'旋风', + rexuanfeng_info:'当你失去装备区内的牌时,或于弃牌阶段弃置了两张或更多的手牌后,你可以依次弃置一至两名其他角色的共计两张牌,或将一名其他角色装备区内的一张牌移动到另一名其他角色的装备区内。', + olpaoxiao:'咆哮', + olpaoxiao2:'咆哮', + olpaoxiao_info:'①锁定技,你使用【杀】无次数限制。②锁定技,当你使用的【杀】被【闪】抵消时,你获得一枚“咆”(→)当你因【杀】造成伤害时,你弃置所有“咆”并令伤害值+X(X为“咆”数)。回合结束后,你弃置所有“咆”。', + oltishen:'替身', + oltishen_info:'限定技,准备阶段,你可以将体力回复至上限,然后摸X张牌(X为你回复的体力值)。', + ollongdan:'龙胆', + ollongdan_info:'你可以将一张【杀】当做【闪】、【闪】当做【杀】、【酒】当做【桃】、【桃】当做【酒】使用或打出。', + olyajiao:'涯角', + olyajiao_info:'当你于回合外因使用或打出而失去手牌后,你可以展示牌堆顶的一张牌。若这两张牌的类别相同,你可以将展示的牌交给一名角色;若类别不同,你可弃置攻击范围内包含你的角色区域里的一张牌。', + re_zhonghui:'界钟会', + re_handang:'界韩当', + requanji:'权计', + requanji_info:'出牌阶段结束时,若你的手牌数大于体力值,或当你受到1点伤害后,你可以摸一张牌,然后将一张手牌置于武将牌上,称为“权”;你的手牌上限+X(X为“权”的数量)。', + regongji:'弓骑', + regongji_info:'出牌阶段限一次,你可以弃置一张非基本牌,然后弃置一名其他角色的一张牌。锁定技,当你的装备区内有坐骑牌时,你的攻击范围无限。', + ol_sunjian:'界孙坚', + wulie:'武烈', + wulie2:'武烈', + wulie_info:'限定技,结束阶段,你可以失去任意点体力并指定等量的角色。这些角色各获得一枚「烈」。有「烈」的角色受到伤害时,其移去一枚「烈」,然后防止此伤害。', + re_sunluban:'界孙鲁班', + re_masu:'界马谡', + ol_pangde:'界庞德', + rejianchu:'鞬出', + rejianchu_info:'当你使用【杀】指定一名角色为目标后,你可以弃置其一张牌,若以此法弃置的牌不为基本牌,此【杀】不可被【闪】响应且你本回合使用【杀】的次数上限+1,为基本牌,该角色获得此【杀】', + re_taishici:'界太史慈', + hanzhan:'酣战', + hanzhan_info:'当你发起拼点时,或成为拼点的目标时,你可以令对方选择拼点牌的方式改为随机选择一张手牌。', + re_jianyong:'界简雍', + xin_xusheng:'界徐盛', + decadepojun:'破军', + decadepojun2:'破军', + decadepojun_info:'当你使用【杀】指定目标后,你可以将其的至多X张牌置于其武将牌上(X为其体力值)。若这些牌中:有装备牌,你将这些装备牌中的一张置于弃牌堆;有锦囊牌,你摸一张牌。其于回合结束时获得其武将牌上的这些牌。', + old_madai:'界马岱', + wangyi:'界王异', + guanzhang:'界关兴张苞', + xin_fazheng:'界法正', + re_liubiao:'界刘表', + rezishou:'自守', + rezishou2:'自守', + rezishou_info:'摸牌阶段,你可以多摸X张牌,然后本回合你对其他角色造成伤害时,防止此伤害。结束阶段,若你本回合没有使用牌指定其他角色为目标,你可以将场上一张装备牌移动到自己的装备区。(X为场上势力数)', + ol_dongzhuo:'界董卓', + olbaonue:'暴虐', + olbaonue_info:'主公技,其他群雄角色造成1点伤害后,其可进行判定,若为♠,你回复1点体力并获得判定牌。', + + refresh_standard:'界限突破·标', + refresh_feng:'界限突破·风', + refresh_huo:'界限突破·火', + refresh_lin:'界限突破·林', + refresh_shan:'界限突破·山', + refresh_yijiang1:'界限突破·将1', + refresh_yijiang2:'界限突破·将2', + refresh_yijiang3:'界限突破·将3', + refresh_yijiang4:'界限突破·将4', + refresh_yijiang5:'界限突破·将5', + }, + }; +}); diff --git a/character/shenhua.js b/character/shenhua.js index 0ab91fc92..a8a0cc408 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -4684,7 +4684,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, roulin:{ audio:2, - audioname:['re_dongzhuo'], + audioname:['re_dongzhuo','ol_dongzhuo'], trigger:{player:'useCardToPlayered',target:'useCardToTargeted'}, forced:true, filter:function(event,player){ @@ -4711,14 +4711,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, benghuai:{ audio:2, - audioname:['zhugedan','re_dongzhuo'], + audioname:['zhugedan','re_dongzhuo','ol_dongzhuo'], trigger:{player:'phaseJieshuBegin'}, forced:true, check:function(){ return false; }, filter:function(event,player){ - return !player.isMinHp(); + return !player.isMinHp()&&!player.hasSkill('rejiuchi_air')&&!player.hasSkill('oljiuchi_air'); }, content:function(){ "step 0" diff --git a/character/sp.js b/character/sp.js index 9d623e4ee..ef587bb46 100755 --- a/character/sp.js +++ b/character/sp.js @@ -1,14976 +1,14983 @@ -'use strict'; -game.import('character',function(lib,game,ui,get,ai,_status){ - return { - name:'sp', - connect:true, - characterSort:{ - sp:{ - sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu'], - sp_zhongdan:["cuiyan","huangfusong"], - sp_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"], - sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'], - sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan"], - sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi"], - sp_single:["hejin","hansui","niujin"], - sp_others:["hanba","caiyang"], - }, - }, - characterFilter:{}, - character:{ - ol_zhangchangpu:['female','wei',3,['yanjiao','olxingshen']], - zhangling:['male','qun',4,['zlhuji','zlshoufu'],['unseen']], - caiyang:['male','qun',1,['yinka'],['forbidai','unseen']], - panfeng:['male','qun',4,['kuangfu']], - sunshao:['male','wu',3,['bizheng','yidian']], - sp_gongsunzan:['male','qun',4,['spyicong','sptuji']], - sp_simazhao:['male','wei',3,['spzhaoxin','splanggu']], - sp_wangyuanji:['female','wei',3,['spfuluan','spshude']], - sp_xinxianying:['female','wei',3,['spmingjian','spyinzhi']], - sp_liuxie:['male','qun',3,['sphuangen','sphantong']], - - huangfusong:['male','qun',4,['xinfenyue']], - yuantanyuanshang:['male','qun',4,['neifa']], - xujing:['male','shu',3,['yuxu','xjshijian']], - - hejin:['male','qun',4,['mouzhu','yanhuo']], - hansui:['male','qun',4,['mashu','niluan']], - niujin:['male','wei',4,['cuorui','liewei']], - jianggan:["male","wei",3,["weicheng","daoshu"]], - - caoying:["female","wei",4,["xinfu_lingren","xinfu_fujian"],[]], - simahui:["male","qun",3,["xinfu_jianjie","xinfu_chenghao","xinfu_yinshi"],[]], - baosanniang:["female","shu",3,["xinfu_wuniang","xinfu_xushen"],[]], - - sp_xiahoushi:["female","shu",3,["xinfu_yanyu","xinfu_xiaode"],[]], - - - yangxiu:['male','wei',3,['jilei','danlao']], - chenlin:['male','wei',3,['bifa','songci']], - caohong:['male','wei',4,['yuanhu']], - xiahouba:['male','shu',4,['baobian']], - yuanshu:['male','qun',4,['yongsi','weidi']], - sp_diaochan:['female','qun',3,['lihun','rebiyue']], - sp_zhaoyun:['male','qun',3,['ollongdan','chongzhen']], - jsp_zhaoyun:['male','qun',3,['chixin','yicong','suiren']], - liuxie:['male','qun',3,['tianming','mizhao']], - zhugejin:['male','wu',3,['hongyuan','huanshi','mingzhe']], - zhugeke:['male','wu',3,['aocai','duwu']], - guanyinping:['female','shu',3,['huxiao','xueji','wuji']], - simalang:['male','wei',3,['junbing','quji']], - zhangxingcai:['female','shu',3,['shenxian','qiangwu']], - fuwan:['male','qun',4,['moukui']], - sp_sunshangxiang:['female','shu',3,['liangzhu','fanxiang']], - caoang:['male','wei',4,['kaikang']], - sp_caoren:['male','wei',4,['weikui','lizhan']], - zhangbao:['male','qun',3,['rezhoufu','reyingbing']], - huangjinleishi:['female','qun',3,['fulu','fuji']], - maliang:['male','shu',3,['zishu','xinyingyuan']], - sp_pangtong:['male','qun',3,['xinmanjuan','zuixiang']], - zhugedan:['male','wei',4,['gongao','juyi']], - sp_jiangwei:['male','wei',4,['kunfen','fengliang']], - sp_machao:['male','qun',4,['zhuiji','ol_shichou']], - sunhao:['male','wu',5,['recanshi','rechouhai','guiming'],['zhu']], - shixie:['male','qun',3,['rebiluan','relixia']], - mayunlu:['female','shu',4,['fengpo','mashu']], - zhanglu:['male','qun',3,['yishe','bushi','midao']], - wutugu:['male','qun',15,['ranshang','hanyong']], - sp_caiwenji:['female','wei',3,['chenqing','mozhi']], - zhugeguo:['female','shu',3,['yuhua','qirang']], - - lingju:['female','qun',3,['jieyuan','fenxin']], - - cuiyan:['male','wei',3,['yawang','xunzhi']], - sp_zhangfei:['male','shu',4,['jie','dahe']], - jsp_guanyu:['male','wei',4,['new_rewusheng','danji']], - jsp_huangyueying:['female','qun',3,['jiqiao','linglong']], - sunluyu:['female','wu',3,['new_meibu','new_mumu']], - hanba:['female','qun',4,['fentian','zhiri']], - zumao:['male','wu',4,['yinbing','juedi']], - wenpin:['male','wei',4,['zhenwei']], - daxiaoqiao:['female','wu',3,['new_xingwu','new_luoyan']], - sp_daqiao:['female','wu',3,['yanxiao','anxian']], - sp_ganning:['male','qun',4,['yinling','junwei']], - sp_xiahoudun:['male','wei',4,['fenyong','xuehen'],['die_audio']], - sp_lvmeng:['male','wu',3,['tanhu','mouduan']], - - guansuo:['male','shu',4,['xinzhengnan','xiefang']], - tadun:['male','qun',4,['luanzhan']], - yanbaihu:['male','qun',4,['zhidao','jili']], - chengyu:['male','wei',3,['shefu','benyu']], - - wanglang:['male','wei',3,['gushe','jici']], - sp_pangde:['male','wei',4,['mashu','juesi']], - sp_jiaxu:['male','wei',3,['zhenlue','jianshu','yongdi']], - - litong:['male','wei',4,['tuifeng']], - mizhu:['male','shu',3,['ziyuan','jugu']], - buzhi:['male','wu',3,['hongde','dingpan']], - - sp_liubei:['male','shu',4,['zhaolie','shichou'],['zhu']], - caochun:['male','wei',4,['xinshanjia']], - - dongbai:['female','qun',3,['lianzhu','xiehui']], - - zhaoxiang:['female','shu',4,['refanghun','refuhan']], - mazhong:['male','shu',4,['fuman']], - dongyun:['male','shu',3,['bingzheng','sheyan']], - kanze:['male','wu',3,['xiashu','kuanshi']], - heqi:['male','wu',4,['qizhou','shanxi']], - - ganfuren:['female','shu',3,['shushen','shenzhi']], - mifuren:['female','shu',3,['guixiu','cunsi']], - mateng:['male','qun',4,['xiongyi','mashu']], - tianfeng:['male','qun',3,['sijian','suishi']], - yuejin:['male','wei',4,['xiaoguo']], - chendong:['male','wu',4,['duanxie','fenming']], - sp_dongzhuo:['male','qun',5,['hengzheng']], - jiangfei:['male','shu',3,['shengxi','shoucheng']], - jiangqing:['male','wu',4,['shangyi','zniaoxiang']], - hetaihou:['female','qun',3,['zhendu','qiluan']], - kongrong:['male','qun',3,['lirang','mingshi']], - dingfeng:['male','wu',4,['fenxun','duanbing']], - bianfuren:['female','wei',3,['wanwei','yuejian']], - shamoke:['male','shu',4,['gzjili']], - liqueguosi:['male','qun',4,['xiongsuan']], - lvfan:['male','wu',3,['diaodu','diancai']], - cuimao:['male','wei',3,['zhengbi','fengying']], - - jiling:['male','qun',4,['shuangren']], - zangba:['male','wei',4,['rehengjiang']], - zhangren:['male','qun',4,['chuanxin','zfengshi']], - zoushi:['female','qun',3,['zhuoshui','zqingcheng']], - - wangyun:['male','qun',4,['xinlianji','xinmoucheng']], - sunqian:['male','shu',3,['qianya','shuimeng']], - xizhicai:['male','wei',3,['tiandu','xianfu','chouce']], - quyi:['male','qun',4,['fuqi','jiaozi']], - - luzhi:['male','wei',3,['qingzhongx','weijing']], - - //kaisa:["male","western",4,["zhengfu"]], - }, - characterIntro:{ - zhangling:'张道陵(34年2月22日—156年),字辅汉,原名陵,道教正一道实际创立者,汉朝东汉时期丰邑(今江苏徐州丰县)人。太上老君降临蜀地,“授以三天正法,命为天师”,张道陵整合当时的:黄老派、方仙道、文始派等先秦修道团体,创立道教称正一盟威之道。后世尊称为“老祖天师”、“正一真人”、“三天扶教大法师”、高明上帝、张天师。著作《老子想尔注》,弟子有3000多人,设立24治,奠基天师道。张道陵、葛玄、许逊、萨守坚合称四大天师。张道陵创建道教的背景:当时在巴蜀一带,原有巴人信奉原始巫教,大规模的淫祀而害民。而这些祀奉鬼妖(学名为:妖邪)的法教巫师聚众敛财,无恶不作。张天师携王长、赵升二位弟子和黄帝九鼎丹经,来到北邙山修行,平定了那些祸害百姓的巫妖之教。川渝一带流传的张天师以太上老君剑印符箓大破鬼兵的故事就是以此为原型的。', - caiyang:'蔡阳(?-201年),又作蔡扬,东汉丞相曹操部下武将,汝南太守。于建安六年(201)奉曹操之命攻击与刘备联合的汝南贼龚都等人,兵败被刘备所杀。明代小说《三国演义》改编为“云长擂鼓斩蔡阳”。', - pujing:'湖北省当阳境内有一座山,名叫玉泉山。东汉建安末年,山上住着一个老和尚,法名普净,普净原来是沂水关镇国寺方丈,后因云游天下,来到此处,风这地方山明水秀,就于山中结草为庵,每天坐禅参道,身边只有一个小和尚,外出化一些斋饭,供养师父。在《三国演义》中,当关羽通过汜水关时,正是由于普净提醒,关羽才揭穿了卞喜的阴谋,并杀死了卞喜。关羽死后,其怨魂亦在普净的指点下醒悟,放下了心中的仇恨,专心致力于造福一方百姓。', - huban:'为《三国演义》所杜撰的人物,正史无记载,荥阳太守王植麾下从事、桓帝时议郎胡华之子。关羽过五关斩六将时其中一关就是王植所镇守,胡班奉命放火夜袭关公,因敬服公之气概,并得其父托公所带家书,班看毕,叹曰:“险些误杀忠良!”故将之放走。胡班到荆州来投降关公,公念其旧日相救之情,甚爱之;令随费诗入川,见汉中王受爵。费诗辞别关公,带了胡班,自回蜀中去了。', - chunyuqiong:'淳于琼(?-200年),字仲简,颍川(治今河南禹州)人。东汉时期官吏,于汉灵帝中平五年(188)被任命为西园八校尉之一的右校尉,与蹇硕、袁绍、鲍鸿、曹操、赵融、冯芳、夏牟同列。为袁绍大将,与张郃、高览等人齐名。在官渡之战时镇守乌巢,遭到曹操的偷袭而惨败,自己也被曹操处斩。', - lvkuanglvxiang:'吕旷(生卒年不详),与吕翔同是袁绍属下,袁绍去世后,为袁尚守东平,后来投降曹操,并被封为列侯。在《三国演义》中,在曹操准备往南准备攻击前,两人跟著大将曹仁和将军李典准备要攻击刘备。但吕旷被赵云刺下马身亡,而吕翔也死于张飞矛下,可以算是出师未捷身先死', - caobuxing:'曹不兴,亦名弗兴,三国时著名画家。孙吴吴兴(今浙江湖州)人,生卒年不详。他在黄武年间(222—229年)享有很大的声誉。被称为“佛画之祖”。与东晋顾恺之、南朝宋陆探微、南朝梁张僧繇并称“六朝四大家”。又与赵达的算术、严武的弈棋、皇象的草书等号称“吴中八绝”。曹不兴善画龙、虎、马及人物,有“落墨为蝇”等传奇故事,其佛画成就对后世影响很大,相传其所画龙头令谢赫叹服不已。画迹今已不存,据《贞观公私画史》载,作品有《青溪龙》、《赤盘龙》、《南海监牧进十种马图》、《夷事夷兽样》、《桃源图》等,惜早已散佚。 但之后的著名画家卫协直接师承其法。', - gaolan:'高览,生卒年不详,一名高奂,本属袁绍部将,后官渡之战淳于琼被曹操击破,与张郃一同投降曹操,被封为偏将军,东莱侯。《三国演义》里,曾与许褚、徐晃大战不分胜负。201年刘备败走荆州时,高览奉命追杀,三合斩刘辟,而后被冲阵而来的赵云刺死。', - xunchen:'荀谌,字友若,荀彧之兄(一说荀彧之弟),荀绲之子,颍川人。曾任军阀袁绍的幕僚。帮助袁绍游说韩馥,夺取了冀州。', - sunshao:'孙邵(163年-225年),字长绪,青州北海国人(今山东潍坊市昌乐县西)。原为北海相孔融的功曹,被孔融称赞为可任朝廷要职的人才,后随刘繇到达江东,继而辅佐孙权。孙权称吴王后,孙邵成为吴国首任丞相,数年后病逝。由于孙邵和当时吴国史官的关系并不是很好,因此在史书中并没有详细的记载。', - yuantanyuanshang:'袁谭、袁尚分别是袁绍的长子和第三子。袁绍坐拥青州、冀州、幽州、并州,本是北方最强诸侯,却于官渡大败,惭恨而终。虽然袁绍生前偏爱小儿子袁尚,却并未在继承人上有明确表态,这也导致本应以嫡长子身份继承的袁谭因郭图、审配伪立遗令未能如愿。曹操击败袁绍后,进而渡过黄河追击袁家残余势力,袁谭告急,但袁尚仅给他少量兵力。曹操得郭嘉之计退兵坐观其变,恰使两人此前的种种矛盾彻底爆发,袁谭不敌便引狼入室,派辛毗作为使者向曹操求援,让袁尚不得不北逃投奔乌桓。但袁谭也在之后背叛曹操兵败被杀。没多久,乌桓也被平定,袁熙、袁尚二人投奔公孙康后被斩首送还曹操。', - xujing:'许靖(?—222年),字文休。汝南郡平舆县(今河南省平舆县)人。汉末至三国蜀汉时期重臣、名士、评论家。许靖因与从弟许邵俱以品评人物而闻名于世。后被刘翊推举为孝廉,任尚书郎。曾先后投奔孔伷、陈祎、许贡、王朗等人,于孙策攻王朗前与家属俱避难交州,受到交趾太守士燮礼待。其后受益州牧刘璋邀请,相继为巴郡、广汉、蜀郡太守。于刘备包围成都时欲越墙叛逃,为刘璋所获。刘备定蜀后欲将其弃用,在法正的建议下方以其为左将军长史。建安二十三年(218年),刘备称汉中王,任命许靖为汉中王傅。章武元年(221年),刘备称帝,任命许靖为司徒,位列三公。章武二年(222年),去世。有文集二卷。', - hejin:'何进(?~189年),字遂高,南阳郡宛县(今河南南阳市宛城区)人。东汉时期外戚大臣,灵思皇后之兄。初以妹妹有宠,拜为郎中,出任虎贲中郎将、颍川太守,迁侍中、将作大匠、河南尹。黄巾起义时,拜为大将军,总镇京师,发现并镇压马元义的密谋,封为慎侯。为张大威望,在京师讲武结营,置西园八校尉。汉灵帝驾崩后,粉碎了中常侍蹇硕拥立皇子刘协的图谋,听从袁绍之言,博征智谋之士,内借元舅之资,外据辅政之权,独揽朝中大权。中平六年(189),不纳陈琳和曹操劝谏,阴结军阀董卓,联合袁绍谋诛宦竖。事情败露后,为中常侍张让等人损害,其后代是魏晋高门士族南阳何氏。', - hansui:'韩遂(?-215年),字文约。凉州金城郡人。东汉末年军阀、将领,汉末群雄之一。原名韩约,后改名遂。韩遂最初闻名于西州,被羌胡叛军劫持并推举为首领,以诛宦官为名举兵造反,聚众十万,先后败皇甫嵩、张温、董卓、孙坚等名将,使得天下骚动。后受朝廷招安,拥兵割据一方长达三十余年。韩遂曾与马腾结为异姓兄弟,后二人关系破裂。袁绍、曹操相争之际,马腾、韩遂被钟繇说服,依附于曹操。马腾入京后,留其子马超统领部队。马超推举韩遂为都督起兵反叛曹操,为曹操所败,韩遂逃奔凉州,后又为夏侯渊所败,病死(一说被杀),享年七十余岁。', - niujin:'牛金(生卒年不详),初为曹仁部曲将,周瑜军数万人来攻,前锋数千人始至,曹仁登城望,乃募得三百人,遣牛金迎战。但对方兵力较多,牛金遂被围困。曹仁亲自杀入阵中救出牛金。司马懿使牛金轻骑饵诱蜀军,刚交战诸葛亮就退兵,追至祁山。蜀将马岱入寇,司马懿遣将军牛金击退,斩千余级。公孙渊反,司马懿帅牛金、胡遵等步骑四万发自洛阳,后平定辽东。牛金官至后将军。', - jianggan:"蒋干,字子翼,汉末三国时期的人物,九江(治今安徽寿县)人。历史上的蒋干是当时的名士、辩论家。而罗贯中在历史小说《三国演义》中则将蒋干刻画成了被周瑜所愚弄的小丑形象。", - huangjinleishi:"黄巾军中负责施法的女祭司二人组。", - - caoying:"曹婴是在电影《三国志之见龙卸甲》中登场的虚拟人物,由李美琪饰演。曹婴是曹操的孙女,弓马娴熟,文武双全,深得曹操的用兵之道及心术。于凤鸣山一战中担任魏军大都督阻止诸葛亮北伐并因罗平安的告密而全歼关兴、张苞、赵云率领的蜀军部队。", - simahui:"司马徽(约145—208年),字德操,颍川阳翟(今河南禹州)人。东汉末年名士,精通道学、奇门、兵法、经学。有“水镜先生”之称。 司马徽为人清雅,学识广博,有知人之明,并向刘备推荐了诸葛亮、庞统等人,受到世人的敬重。", - baosanniang:"鲍三娘是中国民间传说中的人物,事迹多见于《花关索传》。相传她是鲍家庄鲍员外的小女儿。后来与关索成亲,关羽自传授其武艺,因此也造就了鲍三娘的文武双全。荆州失守之后鲍三娘就跟随关索一同投奔蜀汉,并随诸葛亮征讨南蛮。平定了南蛮之后,夫妻二人就此一直替诸葛亮镇守着南中,他们也的确留下了许多脍炙人口的行侠仗义故事,在民间广为流传。", - - pangdegong:"庞德公,字尚长,荆州襄阳人,东汉末年名士、隐士。 庞德公与当时徐庶、司马徽、诸葛亮、庞统等人交往密切。庞德公曾称诸葛亮为\"卧龙\",庞统为\"凤雏\",司马徽为\"水镜\",被誉为知人。对诸葛亮、庞统等人早年影响较大,并得到诸葛亮的敬重。庞德公最后隐居于鹿门山,采药而终。", - zhaotongzhaoguang:"赵统,赵云长子,生卒年不详。常山真定(今为河北正定)人,陈寿在正史《三国志》中记载赵云去世后,赵统袭爵永昌亭侯,官至蜀汉虎贲中郎督,加行领军。赵广(?—263年),三国时期蜀汉牙门将,赵云的次子,赵统之弟。随姜维前往沓中,官拜牙门将。曹魏司马氏派五路大军伐蜀时,随大将军姜维与魏兵战于疆川口,姜维败绩还守剑阁,赵广于沓中战死。", - majun:"马钧,字德衡,扶风(今陕西扶风)人,生活在汉朝末期,是中国古代科技史上最负盛名的机械发明家之一。马钧年幼时家境贫寒,自己又有口吃的毛病,所以不擅言谈却精于巧思,后来在魏国担任给事中的官职。马钧最突出的表现有还原指南车;改进当时操作笨重的织绫机;发明一种由低处向高地引水的龙骨水车;制作出一种轮转式发石机,能连续发射石块,远至数百步;把木制原动轮装于木偶下面,叫做“水转百戏”。此后,马钧还改制了诸葛连弩,对科学发展和技术进步做出了贡献。", - simazhao:"司马昭(211年—265年9月6日),字子上(小说《三国演义》为子尚),河内温县(今属河南)人。三国时期曹魏权臣,西晋王朝的奠基人之一。为晋宣帝司马懿与宣穆皇后张春华次子、晋景帝司马师之弟、晋武帝司马炎之父。 司马昭早年随父抗击蜀汉,多有战功。累官洛阳典农中郎将,封新城乡侯。正元二年(255年),继兄司马师为大将军,专揽国政。甘露五年(260年),魏帝曹髦被弑杀,司马昭立曹奂为帝。景元四年(263年),分兵遣钟会、邓艾、诸葛绪三路灭亡蜀汉,受封晋公。次年,进爵晋王。 咸熙二年(265年),司马昭病逝,年五十四,葬于崇阳陵。数月后,其子司马炎代魏称帝,建立晋朝,追尊司马昭为文帝,庙号太祖。", - wangyuanji:"王元姬(217年—268年4月20日),东海郯县(今山东郯城西北)人。三国时期曹魏经学家王朗之孙女、王肃之女,晋文帝司马昭妻子,晋武帝司马炎与齐王司马攸的生母。 王元姬幼时便通《诗经》、《论语》,嫁司马昭后竭尽妇道、谦虚谨慎。其人颇有远见,曾预言钟会谋反之事。泰始元年(265年),司马炎建立西晋,尊王元姬为皇太后,宫号曰崇化宫。王元姬身处太后之位,提倡节俭,身体力行,作为众妃子的表率。在其治理之下,后宫井井有条,众人和睦相处。 泰始四年(268年),王元姬崩逝,终年五十二岁。谥号文明皇后,与司马昭合葬于崇阳陵。", - - liuye:'刘晔(?-234年),字子扬,淮南成德人,是光武帝刘秀之子阜陵王刘延的后代,三国时期魏国著名的战略家。刘晔年少知名,人称有佐世之才,是曹操手下举足轻重的谋士,他屡献妙计,对天下形势的发展往往一语中的。刘晔历仕数朝,是曹魏的三朝元老。', - luzhi:'鲁芝(190年—273年),字世英。扶风郡郿县(今陕西眉县)人。魏晋时期名臣。官至光禄大夫,位特进,封阴平侯。泰始九年(273年)卒,时年八十四。谥号“贞”。', - xizhicai:'戏志才(生卒年不详),或志才为字,名不详(一说名忠),东汉颍川郡(今河南禹州)人。经张邈推荐,成为曹操手下谋士。为人多谋略,曹操十分器重,不幸早卒。三国演义中并无此人,三国志中只有寥寥数语。由荀彧推荐给曹操,被称为有“负俗之讥”。死后,荀彧又举荐了郭嘉。
    陈寿《三国志》记载:太祖与荀彧书曰:自志才亡后,莫可与计事者。汝、颍固多奇士,谁可以继之?彧荐嘉。', - sunqian:'孙乾(?—约215年),字公祐。北海郡(治今山东昌乐西)人。东汉末年刘备的幕僚。最初被大儒郑玄推荐于州里。刘备领徐州,以孙乾为从事。自徐州跟随刘备,多次作为刘备的使臣。刘备定益州后,拜孙乾为秉忠将军,其待遇仅次于麋竺,与简雍相同。不久后便病逝。', - miheng:'祢衡(173年-198年),字正平,平原郡(今山东德州临邑德平镇)人。个性恃才傲物.和孔融交好。孔融著有《荐祢衡表》,向曹操推荐祢衡,但是祢衡称病不肯去,曹操封他为鼓手,想要羞辱祢衡,却反而被祢衡裸身击鼓而羞辱。后来祢衡骂曹操,曹操就把他遣送给刘表,祢衡对刘表也很轻慢,刘表又把他送去给江夏太守黄祖,最后因为和黄祖言语冲突而被杀,时年二十六岁。黄祖对杀害祢衡一事感到十分后悔,便将其加以厚葬。', - quyi:'麴义(又作曲义、鞠义),生卒年不详,是东汉末年军阀袁绍部下的将领,能征善战,屡建战功,早年在凉州,精通羌人战法,率领着袁绍的精锐部队。后来由于自恃功高而骄纵不轨,被袁绍所杀。', - taoqian:'陶谦(132年-194年),字恭祖。丹阳郡(治今安徽宣城)人。汉末群雄之一。陶谦最初为诸生,在州郡任职,被举茂才,历任舒、卢二县令、幽州刺史、议郎,性格刚直,有大志。后随左车骑将军皇甫嵩对抗北宫伯玉,任扬武校尉,之后又随张温征韩遂、边章。中平五年(188年),徐州黄巾起,陶谦被朝廷任为徐州刺史,击破徐州黄巾,并推行屯田,恢复生产。尔后听从王朗、赵昱建议遣使进京朝贡,获拜安东将军、徐州牧,封溧阳侯。晚年因战事上为曹操大败,徐州大半几乎遭兵祸所害,以致过度忧劳而逝,终年六十三岁。', - wangyun:'王允(137~192年),字子师,太原郡祁县(今山西祁县)人。东汉末年时期大臣。出身太原王氏,世代官宦。举孝廉出身,司徒高第征为侍御史。出任豫州刺史,勤政爱民。斗争中常侍张让失败后,去官隐居。中平六年,大将军何进掌权之后,辟为从事中郎,迁河南尹。董卓拥立汉献帝即位后,代替杨彪,拜太仆、尚书令、司徒,密谋刺死董卓,联合吕布共同执政,日益骄傲自满。初平三年(192年),董卓余党李傕、郭汜、樊稠等攻破长安。王允兵败处死,时年五十六岁。', - bianfuren:'武宣皇后卞氏(159年12月30日-230年7月9日),琅邪开阳(今山东临沂)人,魏武帝曹操的正妻(继室),魏文帝曹丕、任城威王曹彰、陈思王曹植、萧怀王曹熊的母亲。原本是倡家,即汉代专门从事音乐歌舞的乐人家庭,后来与曹操成婚,建安初年,原配丁夫人被废,卞夫人成为曹操的正妻。曹丕继位后尊其为皇太后,曹叡继位后尊其为太皇太后。卞后在太和四年去世,与魏武帝曹操合葬高陵。', - shamoke:'沙摩柯(?-222年),东汉末三国时期五溪蛮首领。汉章武元年(221年)初,为报关羽被东吴杀害之仇,刘备亲自领兵攻孙权,以金锦爵赏诱沙摩柯助战。章武二年(222年),吴大都督陆逊以火攻破刘备,率诸军齐击,汉军四十多个营寨被攻破,沙摩柯在大乱中匹马奔逃,被乱军杀死。', - lvfan:'吕范(?-228年),字子衡。汝南郡细阳县(今安徽太和)人。汉末至三国时期吴国重臣。吕范年轻为汝南县吏,后避难寿春,结识孙策。此后随孙策、孙权征伐四方,对稳固孙氏在江东的统治做出了杰出的贡献,孙权将其比之于东汉开国元勋吴汉。吴国建立后,吕范累官至前将军、假节、扬州牧,封南昌侯。黄武七年(228年),吕范被拜为大司马,未得授官,便已病逝。孙权悲痛不已,遣使赠其大司马印绶。孙权还都建业后,以太牢礼祭祀吕范。', - liqueguosi:"请分别参考武将【李傕】和【郭汜】各自的介绍。", - cuimao:"关于【崔琰】的内容,请查看武将【崔琰】的介绍。
    毛玠(?—216年),字孝先,陈留平丘(今河南封丘)人。东汉末年大臣。年少时为县吏,以清廉公正著称。因战乱而打算到荆州避乱,但中途知道刘表政令不严明,因而改往鲁阳。后来投靠曹操,提出“奉天子以令不臣,脩耕植,畜军资”的战略规划,得到曹操的欣赏。
    毛玠与崔琰主持选举,所举用的都是清廉正直之士。而毛玠为人廉洁,激起天下廉洁之风,一改朝中奢华风气。曹操大为赞赏,曹丕也亲自去拜访他。
    曹操获封魏公后,毛玠改任尚书仆射,再典选举。又密谏曹操应该立嫡长子曹丕为魏国太子。崔琰被杀后,毛玠十分不快。后来有人诬告毛玠,曹操大怒,将毛玠收于狱中。及后在桓阶、和洽营救下,只被免职,不久逝世于家中。曹操在他死后赐他棺材和钱帛。", - - huangfusong:'字义真。安定郡朝那县(今宁夏彭阳)人。于黄巾起义时,以中郎将身份讨伐黄巾,用火攻大破张梁、张宝。后接替董卓进攻张梁,连胜七阵。掘张角墓,拜左车骑将军、冀州牧,因拒绝贿赂宦官而被免职。 董卓死,王允命其与吕布等共至郿坞抄籍董卓家产、人口,皇甫嵩将坞中所藏良家子女,尽行释放。', - zangba:'其父臧戒,有二子臧艾与臧舜。年少时曾召集数人将获罪的父亲救出,此后四处流亡。后来成为陶谦麾下的骑都尉,负责募兵抵抗黄巾军。与孙观、尹礼等人拥兵驻屯于开阳,自成一股独立势力,后跟随吕布。吕布战败后,投降了曹操。后与袁绍、孙权等的战役里战功赫赫,官至镇东将军。', - zhangren:'刘璋的属下,以忠勇著称。刘备入蜀时,张任曾劝刘璋提防刘备,但刘璋没有听从。魏延舞剑想趁机除掉刘璋时,张任出面对舞,解救刘璋。后在刘备进攻时于落凤坡射死了庞统。', - jiling:'东汉末年袁术帐下将领,勇猛非常,曾奉命率军攻打小沛的刘备,在吕布辕门射戟的调停下撤兵。', - zoushi:'军阀张济之妻,张绣之婶。张绣降曹后,邹氏遂被曹操霸占。贾诩献计趁机诛杀曹操,险些得手。曹操在损失爱将典韦、侄子曹安民和长子曹昂后方才逃出生天。', - ganfuren:'刘备起兵后,于沛城娶甘氏为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。', - jiangfei:'蒋琬,蜀四英之一。初随刘备入蜀,诸葛亮卒后封大将军,辅佐刘禅,主持朝政,统兵御魏。采取闭关息民政策,国力大增。官至大司马,安阳亭侯,谥号恭侯。费祎,蜀国著名政治家和武将,官至大将军。在一次回途的筵会中,被降将郭修刺杀而亡,谥号敬侯。', - mifuren:'刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。', - chendong:'陈武,东吴将领,孙策攻打刘繇,陈武前来相助,孙策非常喜爱陈武,拜为校尉,使作先锋。陈武以十数骑兵力杀敌五十余人。后于赤壁等战役屡立功勋。董袭献上严白虎的人头来降孙策。赤壁之战,董袭受周瑜命,分兵去汉阳,合肥会战时接应太史慈,逍遥津支援孙权。濡须口之战时,董袭在船上督战,船覆董袭坚守殉职。', - jiangqing:'擅长弓术。与周泰原为活跃于长江一带的江贼,孙策脱离袁术下江东自立门户时,和周泰一起率众投靠。 孙策攻刘繇,并引出城中麾下的陈横、薛礼、张英三名将领,陈横后被蒋钦一箭射杀,后与韩当等将乘舟过江,乱箭射杀敌军。曾在赤壁之战与周泰,还有擅使长枪的韩当率领水军在三江口踏江破敌。', - kongrong:'字文举,鲁国人,东汉文学家,“建安七子”之首。献帝即位后任北军中侯、虎贲中郎将、北海相,时称孔北海后因触怒曹操,为曹操所杀。能诗善文。', - mateng:'字寿成,扶风茂陵人,东汉末年征西将军,割据西凉一带的军阀,伏波将军马援的后代,官至卫尉,封爵槐里乡侯。因其子马超谋反,而被杀,夷灭三族。', - tianfeng:'字元皓。东汉末年大军阀袁绍部下重要谋士。为人刚直不阿,曾多次向袁绍进言而不被采纳。后因谏阻袁绍征伐曹操而被袁绍下令监禁,并于官渡之战后,被袁绍杀害。', - caochun:'字子和,沛国谯(今安徽亳州)人。东汉末年曹操麾下将领,曹仁之弟。曹纯是曹操部下精锐部队“虎豹骑”的统领者之一,因在平定北方的战役中颇有功绩,被加封为高陵亭侯。死后谥曰威侯。曹纯擅战,甚得人心,为人重纲纪,不失理智,好学问,敬爱学士,闻名天下。', - hanba:'中国古代神话传说中引起旱灾的怪物。《诗·大雅·云汉》:“旱魃为虐,如惔如焚。”', - cuiyan:'字季珪,清河东武城(今河北省清河县)人。东汉末年名士,司空崔林的从兄,曹操帐下谋士。崔琰相貌俊美,很有威望,曹操对他也很敬畏。建安二十一年(216年),崔琰在给杨训的书信中写道“时乎时乎,会当有变时”,曹操认为此句有不逊之意,因而将崔琰下狱,不久崔琰即被曹操赐死。', - lifeng:'南阳(治今河南南阳)人,三国时期蜀汉大臣李严之子。230年,李严迁为骠骑将军,率军前往汉中,诸葛亮上表推举李丰为江州都督督军,以代替李严管理后方事务。李严去世后,李丰在蜀汉官至朱提太守。', - sunru:'孙茹,孙坚之妹,其名载于《江浙通志》中。儿子徐琨亦为孙吴早期名将,当初母子二人随军跟从孙策渡长江时,因为暂时没足够的船,孙策感到苦恼打算暂时驻军江边。孙茹夫人献计以芦苇为筏,孙策大喜。吴军遂以神不知鬼不觉的速度过长江击破刘繇部将张英,立下平江东第一功。', - lingcao:'东汉末年将领,吴郡余杭(今浙江余杭)人,凌统之父。早年跟随孙策转战江东。孙权统军后,凌操随其征伐黄祖,被甘宁射杀。《吴书》载:甘宁以善射,将兵在后,射杀校尉凌操', - zhugeguo:'诸葛果,为《历代神仙通鉴》中诸葛亮女儿的名字,《历代神仙通鉴》记录从上古到明代的神仙历史,因此诸葛果不见于任何史书。成都西南有朝真观,即乘烟观。相传,诸葛果在这里修行后成仙升天。', - zhuling:'朱灵(生卒年不详),字文博,冀州清河国人,三国时期曹魏名将。官至后将军,封为高唐侯,谥号威侯。初为袁绍部将,后归顺曹操,随曹操征伐四方,屡建战功。', - re_yuanshu:'字公路,汝南汝阳人,袁绍之弟。初为虎贲中郎将。董卓进京后以袁术为后将军,袁术因畏祸而出奔南阳。初平元年与袁绍、曹操等同时起兵,共讨董卓。后与袁绍对立,被袁绍、曹操击败,率馀众奔九江,割据扬州。建安二年称帝,建号仲氏。', - fuwan:'伏完(?-209),琅邪东武(今属山东)人,东汉末大臣,汉献帝伏皇后之父。历官辅国将军、中散大夫、屯骑校尉。', - liuxie:'字伯和,又字合。汉族,祖籍沛县,生于洛阳。汉灵帝第三子,被董卓迎立为帝。董卓被王允和吕布诛杀后,董卓部将李傕等攻入长安,再次挟持了他,后来逃出长安。公元196年,曹操控制了刘协,并迁都许昌,“挟天子以令诸侯”。公元220年,曹操病死,刘协被曹丕控制,随后被迫禅让于曹丕。', - yuanshu:'字公路,汝南汝阳人,袁绍之弟。初为虎贲中郎将。董卓进京后以袁术为后将军,袁术因畏祸而出奔南阳。初平元年与袁绍、曹操等同时起兵,共讨董卓。后与袁绍对立,被袁绍、曹操击败,率馀众奔九江,割据扬州。建安二年称帝,建号仲氏。', - gongsunzan:'字伯珪,汉族,号“白马义从”。辽西令支人。东汉末年献帝年间占据幽州一带的军阀,汉末群雄之一。出身贵族,因母地位卑贱,只当了郡中小吏。他貌美,声音洪亮,机智善辩。后随卢植于缑氏山中读书,粗通经传。', - caohong:'字子廉,沛国谯(今安徽亳县)人,曹操从弟,曾献马并救护曹操。后多随军征伐,平兖州、征刘表、讨祝臂。曹丕即位时封曹洪为骠骑将军。曹叡即位,拜曹洪为后将军,更封乐城侯,后复拜为骠骑将军。曹洪逝世,追谥曰恭侯。', - guanyinping:'河东解县(今山西运城)人,美髯公关羽之女。因在关羽的四个子女中排行第三,故又被称作“关三小姐”、“关氏三姐”或“关羽三小姐”。传说她是赵云的弟子、并随同诸葛亮平定南蛮。', - xiahouba:'夏侯渊次子。本为曹魏武将,后因司马懿诛曹爽一族,夏侯霸身为曹氏宗室而心怀不安,遂投降蜀汉。后随蜀将姜维北伐,官至车骑将军。', - daxiaoqiao:'大乔,庐江皖县人,为乔公长女,孙策之妻,容貌国色流离。小乔为大乔之妹,周瑜之妻,资貌绝伦。两人合称“二乔”。', - yuejin:'字文谦,魏“五子良将”之一。容貌短小,以胆烈跟从曹操,南征北讨,战功无数。从击袁绍于官渡,奋勇力战,斩袁绍部将淳于琼。又从击袁绍子谭、尚于黎阳,斩其大将严敬。从平荆州,留屯襄阳,进击关羽、苏非等人,击退其众,南郡诸郡的山谷蛮夷都前往乐进处投降。后来从曹操征孙权,假进节。曹操回师后,留乐进与张辽、李典屯于合肥。又以乐进数有军功,迁右将军。建安二十三年逝世,谥曰威侯。', - caoang:'字子修,曹操的长子,由于性情谦和且聪慧所以深得曹操喜爱。曹操征讨张绣时,羞辱张绣之婶邹氏,被张绣突然袭击。曹昂为保护曹操撤退,与典韦一起战死在宛城。', - zhugejin:'字子瑜,吴国大臣,诸葛亮之兄,诸葛恪之父。经鲁肃推荐,为东吴效力。胸怀宽广,温厚诚信,得到孙权的深深信赖,努力缓和蜀汉与东吴的关系。建安二十五年(220年)吕蒙病逝,诸葛瑾代吕蒙领南郡太守,驻守公安。孙权称帝后,诸葛瑾官至大将军,领豫州牧。', - zhangxingcai:'蜀名将张飞与夏侯氏所生之女,刘禅的妻子,史上称为“敬哀皇后”。', - zumao:'字大荣,吴郡富春人,使用双刀。孙坚在汜水关被华雄击败,祖茂为保护主公而主动提出与孙坚交换头盔,孙坚因此得脱。祖茂将孙坚的赤帻挂在柱子上,准备以此引诱华雄,趁机偷袭,却反被华雄所杀。', - dingfeng:'吴国将领。年少时以骁勇为小将,经常奋勇杀敌,屡立功勋,此后又于东兴之战中“雪中奋短兵”,大破侵犯东吴的魏军。吴景帝孙休在位时,丁奉设计除掉了东吴的权臣孙綝,被拜为大将军,后为右大司马、左军师。', - panfeng:'冀州牧韩馥部下的上将。当十八路诸侯讨伐董卓之时,他奉韩馥之命前往汜水关前挑战董卓部下大将华雄,不敌被斩。', - maliang:'字季常,因眉毛中有白毛,人称白眉马良,马谡的兄长。马良在兄弟五人中名声最佳,因此有“马氏五常,白眉最良”的说法。', - zhugedan:'字公休,曹魏后期的重要将领,诸葛亮的族弟。曾与司马师一同平定毌丘俭、文钦的叛乱。之后因与被诛的夏侯玄、邓飏交厚,且见到王淩、毌丘俭等人的覆灭而心不自安,于甘露二年起兵,并得到东吴的支援,但于次年被镇压,被大将军司马胡奋所斩。', - hetaihou:'大将军何进的妹妹,汉灵帝刘宏第二任皇后,汉少帝刘辩的生母。何氏出身于屠户家庭,后选入掖庭,得到汉灵帝临幸,生下皇子刘辩,并受封贵人。光和三年(180年),立为皇后。中平六年(189年),汉灵帝去世,刘辩继位,尊何氏为皇太后。董卓进京,废黜刘辩,不久毒杀刘辩及何氏。', - sunluyu:'又名小虎,孙权与步练师之女。吴后期,孙鲁班诬陷孙鲁育参与谋反,于是孙峻杀害了孙鲁育。', - wenpin:'本为刘表大将,刘表死后,跟随刘琮投降曹操。后曹操令其镇守江夏,多次阻止了关羽和孙权的进攻,为曹操倚为屏障的大将之一。', - zhanglu:'汉宁太守,继父祖之后传播五斗米教。刘璋杀张鲁之母,二人因此结仇,多次交战。刘备攻益州时,刘璋向张鲁求援。张鲁派马超前往,但马超投降刘备。张鲁后见曹操自封魏王,想要自立为汉宁王,为谋士阎圃劝免。后曹操讨汉中,张鲁败,众人劝其烧粮仓,张鲁认为这是国家之物,未听从,为曹操所称赞。后投降曹操,任镇南将军。', - mayunlu:'马腾之女,马超之妹,赵云之妻。父亲令其自幼习武,枪术非凡,寻常男子也是难以匹敌。', - tadun:'东汉末年辽西乌桓(亦称乌丸)的首领,乌桓大人丘力居的从子,总摄三王部。曾出兵协助袁绍,击破公孙瓒。此后受袁绍假传朝廷诏命,与三王难楼、苏仆延、乌延等人同受单于称号及印绶。后难楼、苏仆延率其部众奉立楼班为单于,蹋顿于是退位为王。袁绍死后,收到被曹操击败的袁尚的求助,纠集逃亡至乌桓的幽州、冀州官吏百姓,企图夺回河北。东汉建安十二年,曹操亲征乌桓。八月,乌桓、袁氏部队于柳城白狼山为曹军所败,蹋顿在此战中被曹操的先锋张辽所斩杀。 ', - yanbaihu:'吴郡乌程县人,原名“严虎”,别号“白虎”,东汉末年盘据吴郡一带山贼出身的地方豪帅。献帝初拥兵万人自固。孙策受袁术使渡江,攻破白虎等。白虎奔余杭,投靠许昭。建安二年,再度被孙策击败,至此不知亡佚何处。', - simalang:'字伯达,“司马八达”之一。曹操任司空后,司马朗被辟为司空属官,又历任成皋令、堂阳长、元城令、丞相主簿、兖州刺史等职,所在皆有政绩,深受百姓爱戴。后司马朗与夏侯惇、臧霸等征讨吴国,到达居巢。军队中流行瘟疫,司马朗亲自去视察,派送医药,因此染病去世。', - wangji:'字伯舆,东莱曲城人。三国时期魏国将领。王基文武兼备,才高于世,德溥于时,深得司马懿、司马师、司马昭的器重,尤其在南征毋丘俭,文钦之乱,东征诸葛诞之叛大规模军事活动中,王基与司马师、司马昭结下了深厚的军友情谊。魏景元二年王基去世,追赠司空,谥号为景侯。', - buzhi:'吴重臣,最初避难江东,于孙权统事后,被召为主记。后游历吴地,又任海盐县长,还任东曹掾,出领鄱阳太守。建安十五年,转交州刺史、立武中郎将,率军接管往交州,追拜使持节、征南中郎将。次年,以平定交州功,加平戎将军,封广信侯。后迁右将军、左护军,改封临湘侯。孙权称帝后,拜骠骑将军,领冀州牧,后因冀州分与蜀汉而解牧职。又都督西陵。赤乌九年,代陆逊为丞相。', - litong:'字文达,小字万亿。江夏平春(今河南信阳)人,汝南太守。早年以游侠闻名于江汝,在率众补充曹操兵源有功拜为阳安都尉,其间不因私而忘公,不因其妻子的求请而过问执法者。后来在曹操讨伐马超时出阵挑战,死于马超枪下。', - mizhu:'原为徐州富商,后被徐州牧陶谦辟为别驾从事。陶谦病死后,奉其遗命迎接刘备。与其弟麋芳拒绝曹操的任命而跟随刘备,在刘备最潦倒之时给予刘备很大的帮助,使他重新振作。214年(建安十九年),刘备入主益州后,拜麋竺为安汉将军,地位在诸葛亮之上,为刘备手下众臣之最。吕蒙袭取荆州,麋芳举城投降,导致关羽兵败身亡,麋竺面缚请罪,刘备劝慰麋竺,对他待遇如初。', - dongbai:'东汉末年县君,陇西临洮(今甘肃省岷县)人,董卓之孙女。董卓当权时,遍封其宗族,其中孙女董白尚未及笄,被封为渭阳君。', - zhaoxiang:'赵云与马云騄之女,赵统赵广之妹,关平之妻。', - heqi:'早年在平定山越的战争中立有大功,又讨平叛乱无数,身经百战,所向披靡,深受孙权器重。后来在与魏国的多次边境争斗中也屡立战功,官至后将军,并领徐州牧。', - dongyun:'大汉重臣,掌军中郎将董和之子。东汉末年,其父董和事刘璋为益州太守,刘备立太子时,允被选为洗马,后为黄门侍郎,延熙六年(公元243年)加辅国将军,延熙七年(公元244年)以侍中守尚书令,任大将军费祎的副手。', - mazhong:'本名狐笃,字德信,巴西阆中人,初次出场时随丞相诸葛亮南征孟获,诸葛亮遣马忠与赵云两路夹攻,大败蛮将阿会喃。孟获派弟孟优赴汉军处假投降,欲内应外合,诸葛亮将计就计,埋伏擒获孟获和诸洞酋长,马忠亦于此战立下战功。后诸葛亮北伐时亦数次出阵,立下汗马功劳。', - kanze:'孙权谋士,在孙权广纳贤才之时与严畯等来到江东,甚为孙权礼遇。第一个识破周瑜打黄盖是苦肉计,后欣然向曹操献诈降书,被曹操识破后面不改色,哈哈大笑,一番妙言让曹操相信了诈降书,是苦肉计中的关键人物。后劝孙权不要设局请关羽。在刘备御驾亲征东吴时,向孙权举荐陆逊为都督,间接上挽救了东吴的命运。', - lingju:'相传为吕布与貂蝉的女儿,被汉献帝掳走并训练为死士,被秘密送入宫中接近曹操,成为其“忘年红颜知己”。外表是柔弱的女子,实际上身怀致命的杀人绝技,等待时机给予曹操致命一击。', - yangxiu:'字德祖,今陕西华阴人,是东汉末年的文学家。杨修学问渊博,极聪慧,任丞相府主簿。史载,“是时,军国多事,修总知外内,事皆称意”。', - chenlin:'陈琳(?-217年),字孔璋,广陵射阳(今江苏宝应)人。东汉末年著名文学家,“建安七子”之一。', - zhugeke:'字元逊,琅邪阳都(今山东沂南)人。三国时期吴臣,蜀丞相诸葛亮之侄,吴大将军诸葛瑾长子,从小就以神童著称,深受孙权赏识。', - zhangbao:'东汉末年黄巾起义的首领之一,张角之弟,张梁之兄。中平元年(184)随兄张角起义,号称“地公将军”。', - chengyu:'字仲德,本名程立,因梦中於泰山捧日,更名程昱。荀彧投曹操时向其举荐程昱。他参与了攻打吕布、袁绍、刘备、孙权的大部份战事,一直出谋献策,表现出众。', - sunhao:'孙权之孙,孙和之子,东吴的末代君主。在位初期虽施行过明政,但不久即沉溺酒色,专于杀戮,变得昏庸暴虐,嗜用挖眼、剥皮等酷刑。280年,吴国被西晋所灭,孙皓投降西晋,被封为归命侯。', - wutugu:'南蛮乌戈国主,身长丈二(约合现在2.77米),不食五谷,以生蛇恶兽为饭。身有鳞甲,刀箭不能侵。兀突骨乘骑巨象,头戴日月狼须帽,身披金珠缨络,两肋下露出生鳞甲,眼目中微有光芒。', - shixie:'割据交州(今越南)一带的军阀,年少时师事刘陶,经逐渐升迁任交趾太守。后被朝廷加职绥南中郎将,迁安远将军,封龙度亭侯。在步骘接管交州时积极配合,归附孙权,被孙权加为左将军;此后又因诱降益州豪族雍闿而迁任卫将军,进封龙编侯。任交趾太守四十年。', - guansuo:'关羽的三子。自荆州失陷后,逃难在鲍家庄养病,伤势痊愈之后入蜀,逢丞相诸葛亮南征,拜之为前部先锋,一同南征。', - wanglang:'字景兴,汉末三国经学家,曹魏初期重臣。曾任会稽太守举兵抵抗孙策,后为曹操所征,被拜为谏议大夫等职。曹丕建立魏国后任命为司空。小说《三国演义》中他在阵前与诸葛亮饶舌比拼,最终被诸葛亮言词所驳倒,一时气愤坠马身亡。', - zhangliang:'东汉末年黄巾起义首领之一,张角的三弟。中平元年(184)随兄起义,号称“人公将军”。遭到朝廷所派左中郎将皇甫嵩进攻时,他率军在广宗(今河北威县)进行反击。后因警戒疏忽,遭到汉军夜袭,兵败身亡。', - }, - characterTitle:{}, - perfectPair:{ - yuejin:['re_lidian'], - zhugejin:['zhugeke'], - guanyinping:['guanyu'], - zhangxingcai:['liushan'], - fuwan:['fuhuanghou'], - sunshangxiang:['liubei'], - caoang:['caocao'], - zhangbao:['zhangliang','zhangjiao'], - zhangliang:['zhangjiao'], - maliang:['masu'], - lingcao:['lingtong'], - lingju:['diaochan','lvbu'], - jiangqing:['zhoutai'], - dingfeng:['xusheng'], - caohong:['caoren'], - daxiaoqiao:['zhouyu','sunce'], - cuiyan:['caocao'], - guansuo:['guanyu'], - mateng:['machao','madai','mayunlu'], - chengpu:['zhouyu'], - hanba:['swd_muyun'], - dongbai:['dongzhuo'], - cuimao:['caopi'], - simazhao:['wangyuanji'], - }, - card:{ - wy_meirenji:{ - fullskin:true, - vanish:true, - derivation:'wangyun', - type:'trick', - enable:true, - filterTarget:function(card,player,target){ - return target.countCards('h')&&target!=player&&target.sex=='male'; - }, - content:function(){ - 'step 0' - event.list=game.filterPlayer(function(current){ - return current!=player&¤t!=target&¤t.sex=='female'; - }).sortBySeat(); - 'step 1' - if(target.countCards('h')&&event.list.length){ - event.current=event.list.shift(); - event.current.gainPlayerCard(target,true); - target.line2([event.current,player]); - } - else{ - event.goto(4); - } - 'step 2' - event.current.chooseCard('h',true,'将一张手牌交给'+get.translation(player)); - 'step 3' - if(result.bool){ - event.current.give(result.cards,player); - } - event.goto(1); - 'step 4' - var n1=target.countCards('h'); - var n2=player.countCards('h'); - if(n1>n2){ - target.damage(player); - player.line(target); - } - else if(n1=3) return 0; - if(!target.hasSkillTag('maixie_hp')){ - return -3; - } - return -1; - } - if(num==2) return 0; - return -2+num+(Math.pow(target.hp,0.2)-1); - } - } - } - }, - }, - skill:{ - olxingshen:{ - trigger:{player:'damageEnd'}, - frequent:true, - audio:'xingshen', - content:function(){ - 'step 0' - var next=player.draw(); - if(get.isLuckyStar(player)||Math.random()<0.5) next.num=2; - player.storage.olxingshen=player.getDamagedHp(); - player[player.storage.olxingshen?'markSkill':'unmarkSkill']('olxingshen'); - }, - intro:{ - content:'下一次发动〖严教〗时多展示X张牌', - }, - }, - //张道陵 - zlhuji:{ - mod:{ - globalFrom:function(player,target,distance){ - return distance-1; - }, - }, - trigger:{player:'damageEnd'}, - forced:true, - content:function(){ - 'step 0' - var func=function(result){ - if(get.color(result)=='red') return 1; - return 0; - }; - if(get.itemtype(trigger.source)!='player'||!player.canUse('sha',trigger.source,false)) func=function(result){ - return 0; - }; - else if(get.effect(trigger.source,{name:'sha'},player,player)<0) func=function(result){ - if(get.color(result)=='red') return -1; - return 0; - }; - player.judge(func); - 'step 1' - if(result.bool&&get.itemtype(trigger.source)=='player'&&player.canUse('sha',trigger.source,false)){ - player.useCard({name:'sha',isCard:true},trigger.source,false); - } - }, - }, - zlshoufu:{ - enable:'phaseUse', - usable:1, - filter:function(event,player){ - return player.countCards('he')>0; - }, - filterTarget:function(card,player,target){ - return target!=player&&!target.getStorage('zlshoufu2').length; - }, - filterCard:true, - position:'he', - discard:false, - toStorage:true, - prepare:'give', - content:function(){ - target.addSkill('zlshoufu2'); - target.storage.zlshoufu2_markcount=0; - target.markAuto('zlshoufu2',cards); - player.draw(); - }, - }, - zlshoufu2:{ - marktext:'箓', - intro:{ - content:'cards', - onunmark:'throw', - }, - charlotte:true, - mod:{ - cardEnabled:function(card,player){ - if(player.getStorage('zlshoufu2').filter(function(magic){ - return get.type2(magic)==get.type(card); - }).length) return false; - }, - cardRespondable:function(card,player){ - if(player.getStorage('zlshoufu2').filter(function(magic){ - return get.type2(magic)==get.type(card); - }).length) return false; - }, - cardSavable:function(card,player){ - if(player.getStorage('zlshoufu2').filter(function(magic){ - return get.type2(magic)==get.type(card); - }).length) return false; - }, - }, - trigger:{ - player:['damageEnd','loseAfter'], - }, - forced:true, - filter:function(event,player){ - var storage=player.getStorage('zlshoufu2'); - if(!storage.length) return false; - if(event.name=='damage') return true; - if(event.type!='discard'||event.getParent('phaseDiscard').player!=player) return false; - for(var i of event.cards2){ - if(storage.filter(function(magic){ - return get.type2(magic)==get.type2(i,event.hs.contains(i)?player:false); - }).length) return true; - } - return false; - }, - content:function(){ - if(trigger.name=='lose'){ - for(var i of trigger.cards2){ - if(player.getStorage('zlshoufu2').filter(function(magic){ - return get.type2(magic)==get.type(i,trigger.hs.contains(i)?player:false); - }).length) player.storage.zlshoufu2_markcount++; - } - } - if(trigger.name=='damage'||player.storage.zlshoufu2_markcount>=2) player.unmarkSkill('zlshoufu2'); - else player.markSkill('zlshoufu2'); - }, - }, - //蔡阳 - yinka:{ - trigger:{player:['drawBegin','judgeBegin']}, - direct:true, - filter:function(){ - return ui.cardPile.childNodes.length>0; - }, - content:function(){ - 'step 0' - player.chooseButton(['印卡:请选择要置于牌堆'+(trigger.bottom?'底':'顶')+'的牌(先选择的在上)',Array.from(ui.cardPile.childNodes)],[1,trigger.num||1]); - 'step 1' - if(result.bool){ - while(result.links.length){ - if(trigger.bottom){ - var card=result.links.shift(); - ui.cardPile.removeChild(card); - ui.cardPile.appendChild(card); - } - else{ - var card=result.links.pop(); - ui.cardPile.removeChild(card); - ui.cardPile.insertBefore(card,ui.cardPile.firstChild) - } - } - } - }, - ai:{isLuckyStar:true}, - }, - //新王允 - xinlianji:{ - enable:'phaseUse', - audio:'wylianji', - usable:1, - check:function(card){ - return 5-get.value(card); - }, - filterTarget:function(card,player,target){ - if(ui.selected.targets.length) return true; - return target!=player; - }, - filterCard:true, - selectTarget:2, - multitarget:true, - targetprompt:['打人','被打'], - content:function(){ - 'step 0' - player.addMark('xinlianji',1,false); - var card=get.cardPile2(function(card){ - return get.subtype(card)=='equip1'&&targets[0].hasUseTarget(card); - }); - if(card){ - if(card.name=='qinggang'&&!lib.inpile.contains('qibaodao')){ - card.remove(); - card=game.createCard('qibaodao',card.suit,card.number); - } - targets[0].chooseUseTarget(card,true,'nopopup','noanimate'); - } - else{ - player.chat('没有装备牌了吗'); - game.log('但是牌堆里已经没有装备牌了!'); - } - 'step 1' - game.updateRoundNumber(); - targets[0].chooseToUse('对'+get.translation(targets[1])+'使用一张杀,或将装备区里的武器牌交给一名其他角色', - {name:'sha'}).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',targets[1]).set('addCount',false); - 'step 2' - var card=targets[0].getEquip(1); - if(!result.bool&&card){ - event.card=card; - player.chooseTarget(true,'将'+get.translation(card)+'交给一名其他角色').set('ai',function(target){ - var card=_status.event.getParent().card; - return (target.hasSkillTag('nogain')?0:get.attitude(_status.event.player,target))*Math.max(0.1,target.getUseValue(card)); - }); - } - else event.finish(); - 'step 3' - result.targets[0].gain(card,targets[0],'give'); - }, - ai:{ - order:4, - result:{ - target:function(player,target){ - if(ui.selected.targets.length){ - var pretarget=ui.selected.targets[0]; - if(pretarget.hasSha()&&pretarget.canUse({name:'sha'},target)) return get.effect(target,{name:'sha'},pretarget,target); - return Math.random(); - } - if(!target.getEquip(1)){ - if(game.hasPlayer(function(current){ - return current!=target&&!current.hasSkillTag('nogain')&&get.attitude(current,target)>0; - })) return 3; - return -3; - } - if(!game.hasPlayer(function(current){ - return current!=target&&!current.hasSkillTag('nogain')&&get.attitude(current,target)>0; - })) return -6; - return 4-get.value(target.getEquip(1)); - }, - }, - }, - }, - xinmoucheng:{ - trigger:{player:'phaseZhunbeiBegin'}, - audio:'moucheng', - forced:true, - juexingji:true, - skillAnimation:true, - animationColor:'gray', - derivation:'xinjingong', - unique:true, - filter:function(event,player){ - return player.countMark('xinlianji')>2; - }, - content:function(){ - player.awakenSkill('xinmoucheng'); - player.addSkill('xinjingong'); - player.removeSkill('xinlianji'); - }, - }, - xinjingong:{ - audio:'jingong', - enable:'phaseUse', - filter:function(event,player){ - return player.countCards('he',function(card){ - return card.name=='sha'||get.type(card)=='equip'; - }); - }, - delay:false, - usable:1, - content:function(){ - 'step 0' - var list=get.inpile('trick').randomGets(2); - if(Math.random()<0.5){ - list.push('wy_meirenji'); - } - else{ - list.push('wy_xiaolicangdao'); - } - for(var i=0;iplayer.maxHp) return 0; - var att=get.attitude(player,target); - if(att<=0||target.hasSkillTag('nogain')) return 0; - if(target.maxHp-target.countCards('h')>=2) return att; - return att/2; - }); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - event.target=target; - player.logSkill('bizheng',target); - target.draw(2); - } - else event.finish(); - 'step 2' - if(player.countCards('h')>player.maxHp) player.chooseToDiscard(2,'he',true); - 'step 3' - if(target.countCards('h')>target.maxHp) target.chooseToDiscard(2,'he',true); - }, - ai:{ - expose:0.25, - }, - }, - yidian:{ - trigger:{player:'useCard2'}, - filter:function(event,player){ - var info=get.info(event.card); - if(info.allowMultiple==false) return false; - if(event.targets&&!info.multitarget){ - for(var i=0;i0){ - player.chooseTarget('令一名角色获得'+get.translation(trigger.source)+'的一张手牌',function(card,player,target){ - var source=_status.event.source; - return target!=source&&source.countGainableCards(target,'h')>0; - }).set('source',trigger.source); - } - else event.goto(4); - 'step 3' - if(result.bool){ - var target=result.targets[0]; - player.line([trigger.source,target],'green'); - target.gainPlayerCard(trigger.source,'h',true); - if(event.count2) event.goto(2) - } - 'step 4' - if(cards.length) player.gain(cards,'gain2','log'); - 'step 5' - if(event.count>0){ - player.chooseBool(get.prompt2('spyinzhi')).set('frequentSkill','spyinzhi'); - } - else event.finish(); - 'step 6' - if(result.bool){ - player.logSkill('spyinzhi'); - event.goto(1); - }; - }, - }, - spmingjian:{ - trigger:{global:'phaseBegin'}, - direct:true, - filter:function(event,player){ - return player.countCards('he')>0; - }, - content:function(){ - 'step 0' - var next=player.chooseCard(get.prompt2('spmingjian',trigger.player),'he'); - next.set('ai',function(card){ - var target=_status.event.getTrigger().player; - var player=_status.event.player; - if(get.attitude(player,target)>0&&target.countCards('j')>0) return 5-get.value(card); - return -1; - }); - next.set('filterCard',function(card,player){ - if(get.position(card)=='e') return lib.filter.cardDiscardable.apply(this,arguments); - return true; - }); - //next.set('logSkill',['spmingjian',trigger.player]); - 'step 1' - if(result.bool){ - player.logSkill('spmingjian',trigger.player); - var card=result.cards[0]; - event.card=card; - if(get.position(card)=='e') event._result={index:0}; - else if(!lib.filter.cardDiscardable(card,player,event)) event._result={index:1}; - else{ - var name=get.translation(trigger.player); - player.chooseControl().set('choiceList',[ - '令'+name+'跳过本回合的判定阶段', - '令'+name+'于本回合的判定中不触发「判定结果生效前」的时机', - ]).set('ai',function(){return 0}); - } - } - else event.finish(); - 'step 2' - if(result.index==0){ - player.discard(card); - trigger.player.skip('phaseJudge'); - } - else{ - player.lose(card,ui.special,'toStorage'); - trigger.player.addSkill('spmingjian_charlotte'); - trigger.player.storage.spmingjian_charlotte.add(card); - trigger.player.markSkill('spmingjian_charlotte'); - } - }, - ai:{ - expose:0.25, - }, - }, - spmingjian_charlotte:{ - trigger:{player:['judgeBefore','phaseAfter']}, - forced:true, - firstDo:true, - silent:true, - popup:false, - charlotte:true, - content:function(){ - if(trigger.name=='phase') player.removeSkill(event.name); - else trigger.noJudgeTrigger=true; - }, - init:function(player,skill){ - if(!player.storage[skill]) player.storage[skill]=[]; - }, - marktext:'鉴', - intro:{ - name:'明鉴', - content:'cards', - onunmark:'throw', - }, - }, - spshude:{ - trigger:{player:'phaseJieshuBegin'}, - frequent:true, - filter:function(event,player){ - return player.countCards('h')2; - return get.suit(card)==get.suit(ui.selected.cards[0]); - }, - content:function(){ - target.turnOver(); - player.addTempSkill('spfuluan2'); - }, - ai:{ - order:1, - result:{ - target:function(player,target){ - if(target.isTurnedOver()) return 2; - return -1; - }, - }, - }, - }, - spfuluan2:{ - mod:{ - cardEnabled:function(card){ - if(card.name=='sha') return false; - }, - }, - }, - spzhaoxin:{ - trigger:{player:'phaseDrawEnd'}, - check:function(event,player){ - return player.getUseValue({name:'sha',isCard:true})>0; - }, - filter:function(event,player){ - return player.countCards('h')>0; - }, - content:function(){ - 'step 0' - player.showHandcards(); - 'step 1' - player.chooseUseTarget('sha',false); - }, - }, - splanggu:{ - trigger:{player:'damageEnd'}, - filter:function(event,player){ - return get.itemtype(event.source)=='player'; - }, - logTarget:'source', - content:function(){ - 'step 0' - player.judge(); - 'step 1' - if(trigger.source.countCards('h')>0){ - var next=player.discardPlayerCard(trigger.source,'h',[1,Infinity]); - next.set('suit',result.suit); - next.set('filterButton',function(button){ - return get.suit(button.link)==_status.event.suit; - }); - next.set('visible',true); - } - }, - group:'splanggu_rewrite', - }, - splanggu_rewrite:{ - trigger:{player:'judge'}, - filter:function (event,player){ - return player.countCards('h')>0&&event.getParent().name=='splanggu'; - }, - direct:true, - content:function (){ - "step 0" - player.chooseCard('狼顾的判定结果为'+ - get.translation(trigger.player.judging[0])+',是否打出一张手牌进行代替?','h',function(card){ - var player=_status.event.player; - var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); - if(mod2!='unchanged') return mod2; - var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); - if(mod!='unchanged') return mod; - return true; - }).set('ai',function(card){ - return -1; - }); - "step 1" - if(result.bool){ - player.respond(result.cards,'highlight','splanggu','noOrdering'); - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - if(trigger.player.judging[0].clone){ - trigger.player.judging[0].clone.classList.remove('thrownhighlight'); - game.broadcast(function(card){ - if(card.clone){ - card.clone.classList.remove('thrownhighlight'); - } - },trigger.player.judging[0]); - game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); - } - game.cardsDiscard(trigger.player.judging[0]); - trigger.player.judging[0]=result.cards[0]; - trigger.orderingCards.addArray(result.cards); - game.log(trigger.player,'的判定牌改为',result.cards[0]); - game.delay(2); - } - }, - }, - sphantong:{ - trigger:{player:'loseEnd'}, - frequent:true, - filter:function(event,player){ - return event.type=='discard'&&event.getParent(3).name=='phaseDiscard'&&event.cards.filterInD('d').length>0; - }, - content:function(){ - if(!player.storage.sphantong) player.storage.sphantong=[]; - var cards=trigger.cards.filterInD('d'); - player.storage.sphantong.addArray(cards); - player.$gain2(cards); - game.log(player,'将',cards,'置于武将牌上'); - player.markSkill('sphantong'); - }, - group:['sphantong_gain'], - derivation:['hujia','jijiang','jiuyuan','xueyi'], - marktext:'诏', - intro:{ - content:'cards', - onunmark:'throw', - }, - }, - sphantong_gain:{ - trigger:{global:'phaseBegin'}, - direct:true, - filter:function(event,player){ - return player.storage.sphantong&&player.storage.sphantong.length>0; - }, - content:function(){ - 'step 0' - player.chooseButton([get.prompt('sphantong'),player.storage.sphantong],function(button){return -1}); - 'step 1' - if(result.bool){ - player.logSkill('sphantong'); - var card=result.links[0]; - player.$throw(card); - game.log(player,'将',card,'置入了弃牌堆'); - player.storage.sphantong.remove(card); - player[player.storage.sphantong.length>0?'markSkill':'unmarkSkill']('sphantong'); - game.cardsDiscard(card); - var list=['hujia','jijiang','jiuyuan','xueyi']; - for(var i=0;i0) player.chooseControl(list).set('prompt','选择获得以下技能中的一个'); - else event.finish(); - } - else event.finish(); - 'step 2' - var skill=result.control; - player.addTempSkill(skill); - if(!player.storage.zhuSkill_sphantong) player.storage.zhuSkill_sphantong=[]; - player.storage.zhuSkill_sphantong.add(skill); - player.popup(skill,'wood'); - game.log(player,'获得了技能','#g【'+get.translation(skill)+'】'); - var next=game.createEvent('sphantong_clear',false); - event.next.remove(next); - trigger.after.push(next); - next.player=player; - next.skill=skill; - next.setContent(function(){ - if(player.storage.zhuSkill_sphantong) player.storage.zhuSkill_sphantong.remove(event.skill); - }) - }, - }, - sphuangen:{ - trigger:{global:'useCardToPlayered'}, - filter:function(event,player){ - if(!event.isFirstTarget) return false; - if(get.type(event.card)!='trick') return false; - if(get.info(event.card).multitarget) return false; - if(event.targets.length<2) return false; - return player.hp>0; - }, - direct:true, - content:function(){ - "step 0" - player.chooseTarget(get.prompt('sphuangen'), - [1,Math.min(player.hp,trigger.targets.length)],function(card,player,target){ - return _status.event.targets.contains(target); - }).set('ai',function(target){ - return -get.effect(target,trigger.card,trigger.player,_status.event.player); - }).set('targets',trigger.targets); - "step 1" - if(result.bool){ - player.logSkill('sphuangen',result.targets); - trigger.excluded.addArray(result.targets); - player.draw(); - } - }, - }, - spyicong:{ - trigger:{player:'phaseDiscardEnd'}, - direct:true, - filter:function(event,player){ - return player.countCards('he')>0; - }, - content:function(){ - 'step 0' - player.chooseCard('he',[1,player.countCards('he')],get.prompt2('spyicong')).set('ai',function(card){ - if(card.name=='du') return 10; - if(ui.selected.cards.length) return -1; - return 4-get.value(card); - }); - 'step 1' - if(result.bool){ - player.logSkill('spyicong'); - if(!player.storage.spyicong) player.storage.spyicong=[]; - player.storage.spyicong.addArray(result.cards); - player.$giveAuto(result.cards.length,player,false); - game.log(player,'扣置了'+get.cnNumber(player.lose(result.cards,'toStorage',ui.special).cards.length)+'张【扈】'); - player.markSkill('spyicong'); - } - }, - mod:{ - globalTo:function(from,to,num){ - if(to.storage.spyicong&&to.storage.spyicong.length) return num+to.storage.spyicong.length; - }, - }, - marktext:'扈', - intro:{ - name:'义从', - content:'cardCount', - onunmark:'throw', - }, - }, - sptuji:{ - trigger:{player:'phaseZhunbeiBegin'}, - forced:true, - filter:function(event,player){ - return player.storage.spyicong&&player.storage.spyicong.length>0; - }, - content:function(){ - var num=player.storage.spyicong.length; - player.addMark('sptuji2',num,false); - player.addTempSkill('sptuji2'); - player.unmarkSkill('spyicong'); - if(num<=1) player.draw(); - }, - }, - sptuji2:{ - onremove:true, - charlotte:true, - mod:{ - globalFrom:function(from,to,num){ - return num-from.countMark('sptuji2'); - }, - }, - marktext:'突', - intro:{ - name:'突骑', - content:'至其他角色的距离-#', - }, - }, - //二袁 - neifa:{ - audio:2, - trigger:{player:'phaseUseBegin'}, - direct:true, - content:function(){ - 'step 0' - _status.noclearcountdown=true; - if(game.hasPlayer(function(current){ - return current.countGainableCards(player,'ej')>0; - })){ - player.chooseControl('cancel2').set('choiceList',[ - '摸两张牌,然后弃置一张牌', - '获得场上的一张牌,然后弃置一张牌', - ]).set('prompt',get.prompt('neifa')).set('ai',function(){ - if(game.hasPlayer(function(current){ - var att=get.attitude(player,current); - if(att==0) return false; - if(att<0) return current.countCards('e',function(card){ - return get.value(card)>0; - })>0; - return current.countCards('ej',function(card){ - return get.position(card)=='j'||get.value(card)<=0; - })>0; - })) return 1; - return 0; - }); - } - else{ - player.chooseControl('ok','cancel2').set('prompt',get.prompt2('neifa')); - } - 'step 1' - if(result.control=='cancel2'){ - delete _status.noclearcountdown; - if(!_status.noclearcountdown){ - game.stopCountChoose(); - } - event.finish(); - return; - } - else if(result.index==1){ - player.chooseTarget('请选择一名角色,获得其装备区或判定区内的一张牌',true,function(card,player,target){ - return target.countGainableCards(player,'ej')>0; - }).set('ai',function(target){ - var player=_status.event.player; - var att=get.attitude(player,target); - if(att>0&&target.countCards('ej',function(card){ - return get.position(card)=='j'||get.value(card,target)<=0; - })) return 2*att; - else if(att<0&&target.countCards('e',function(card){ - return get.value(card)>0; - })) return -att; - return -1; - }); - } - else{ - delete _status.noclearcountdown; - if(!_status.noclearcountdown){ - game.stopCountChoose(); - } - player.logSkill('neifa'); - player.draw(2); - event.goto(3) - } - 'step 2' - delete _status.noclearcountdown; - if(!_status.noclearcountdown){ - game.stopCountChoose(); - } - if(result.bool){ - var target=result.targets[0]; - player.logSkill('neifa',target); - player.gainPlayerCard(target,'ej',true); - } - 'step 3' - player.chooseToDiscard(true,'he'); - 'step 4' - if(result.bool&&result.cards&&result.cards.length){ - var name=get.type(result.cards[0])=='basic'?'neifa_basic':'neifa_nobasic'; - player.addTempSkill(name); - var num=Math.min(5,player.countCards('h',function(cardx){ - return (name=='neifa_basic')!=(get.type(cardx,player)=='basic') - })); - player.addMark(name,num,false); - } - }, - ai:{ - threaten:3, - }, - }, - neifa_basic:{ - mark:true, - marktext:'伐', - onremove:true, - intro:{ - name:'内伐 - 基本牌', - content:'本回合内不能使用锦囊牌和装备牌,且使用【杀】选择目标时可以多选择1个目标,且使用【杀】的目标次数上限+#。', - }, - mod:{ - cardEnabled:function(card,player){ - if(['trick','equip'].contains(get.type(card,'trick'))) return false; - }, - cardSavable:function(card,player){ - if(['trick','equip'].contains(get.type(card,'trick'))) return false; - }, - cardUsable:function(card,player,num){ - if(card.name=='sha'){ - return num+player.countMark('neifa_basic'); - } - }, - }, - trigger:{player:'useCard2'}, - filter:function(event,player){ - if(event.card.name!='sha') return false; - return game.hasPlayer(function(current){ - return !event.targets.contains(current)&&player.canUse(event.card,current); - }); - }, - direct:true, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt('neifa'),'为'+get.translation(trigger.card)+'额外指定一个目标',function(card,player,target){ - return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target); - }).set('sourcex',trigger.targets).set('ai',function(target){ - var player=_status.event.player; - return get.effect(target,_status.event.card,player,player); - }).set('card',trigger.card); - 'step 1' - if(result.bool){ - if(!event.isMine()&&!_status.connectMode) game.delayx(); - event.targets=result.targets; - } - else{ - event.finish(); - } - 'step 2' - player.logSkill('neifa',event.targets); - trigger.targets.addArray(event.targets); - }, - }, - neifa_nobasic:{ - trigger:{player:'useCard2'}, - direct:true, - mark:true, - marktext:'伐', - onremove:true, - mod:{ - cardEnabled:function(card,player){ - if(get.type(card)=='basic') return false; - }, - cardSavable:function(card,player){ - if(get.type(card)=='basic') return false; - }, - }, - intro:{ - name:'内伐 - 非基本牌', - content:'本回合内不能使用基本牌,且使用普通锦囊牌选择目标时可以多选择1个目标,且本回合的出牌阶段内前两次使用装备牌时摸#张牌。' - }, - filter:function(event,player){ - if(get.type(event.card)!='trick') return false; - if(event.targets&&event.targets.length>0) return true; - var info=get.info(event.card); - if(info.allowMultiple==false) return false; - if(event.targets&&!info.multitarget){ - if(game.hasPlayer(function(current){ - return lib.filter.targetEnabled2(event.card,player,current)&&!event.targets.contains(current); - })){ - return true; - } - } - return false; - }, - content:function(){ - 'step 0' - var prompt2='为'+get.translation(trigger.card)+'增加或减少一个目标' - player.chooseTarget(get.prompt('neifa'),function(card,player,target){ - var player=_status.event.player; - if(_status.event.targets.contains(target)) return true; - return lib.filter.targetEnabled2(_status.event.card,player,target)&&lib.filter.targetInRange(_status.event.card,player,target); - }).set('prompt2',prompt2).set('ai',function(target){ - var trigger=_status.event.getTrigger(); - var player=_status.event.player; - return get.effect(target,trigger.card,player,player)*(_status.event.targets.contains(target)?-1:1); - }).set('targets',trigger.targets).set('card',trigger.card); - 'step 1' - if(result.bool){ - if(!event.isMine()) game.delayx(); - event.targets=result.targets; - } - else{ - event.finish(); - } - 'step 2' - if(event.targets){ - player.logSkill('neifa',event.targets); - if(trigger.targets.contains(event.targets[0])) trigger.targets.removeArray(event.targets); - else trigger.targets.addArray(event.targets); - } - }, - group:'neifa_use', - ai:{ - reverseOrder:true, - skillTagFilter:function(player){ - if(player.storage.counttrigger&&player.storage.counttrigger.neifa_use>=2) return false; - }, - effect:{ - target:function(card,player,target){ - if((!player.storage.counttrigger||!player.storage.counttrigger.neifa_use||player.storage.counttrigger.neifa_use<2)&&player==target&&get.type(card)=='equip') return [1,3]; - }, - }, - }, - }, - neifa_use:{ - audio:'neifa', - usable:2, - trigger:{player:'useCard'}, - forced:true, - filter:function(event,player){ - return get.type(event.card)=='equip'&&player.countMark('neifa_nobasic')>0; - }, - content:function(){ - player.draw(player.countMark('neifa_nobasic')); - }, - }, - //许靖 - yuxu:{ - audio:2, - trigger:{player:'useCardEnd'}, - filter:function(event,player){ - if(event!=player.getLastUsed()) return false; - var evt=event.getParent('phaseUse'); - if(!evt||evt.player!=player) return false; - var history=player.getHistory('useCard',function(evtt){ - return evtt.getParent('phaseUse')==evt; - }); - var index=history.indexOf(event); - if(index==0) return true; - return history[index-1].yuxu!=true&&player.countCards('he')>0; - }, - content:function(){ - trigger.yuxu=true; - player.addTempSkill('yuxu2'); - player.draw(); - }, - }, - yuxu2:{ - trigger:{player:'useCardEnd'}, - direct:true, - charlotte:true, - locked:true, - filter:function(event,player){ - if(event!=player.getLastUsed()) return false; - var evt=event.getParent('phaseUse'); - if(!evt||evt.player!=player) return false; - var history=player.getHistory('useCard',function(evtt){ - return evtt.getParent('phaseUse')==evt; - }); - var index=history.indexOf(event); - if(index<1) return false; - return history[index-1].yuxu==true&&player.countCards('he')>0; - }, - content:function(){ - player.chooseToDiscard('he',true); - }, - }, - xjshijian:{ - audio:2, - trigger:{global:'useCardAfter'}, - direct:true, - filter:function(event,player){ - if(event.player==player) return false; - var evt=event.getParent('phaseUse'); - if(!evt||evt.player!=event.player) return false; - return event.player.getHistory('useCard',function(evtt){ - return evtt.getParent('phaseUse')==evt; - }).indexOf(event)==1&&player.countCards('he')>0; - }, - content:function(){ - 'step 0' - var next=player.chooseToDiscard('he',get.prompt('xjshijian',trigger.player),'弃置一张牌并令其获得技能〖誉虚〗至回合结束'); - next.set('logSkill',['xjshijian',trigger.player]); - next.set('check',get.attitude(player,trigger.player)>0&&trigger.player.countCards('h')>2); - next.ai=function(card){ - if(_status.event.check) return 5-get.value(card); - return -1; - }; - 'step 1' - if(result.bool) trigger.player.addTempSkill('yuxu'); - }, - ai:{ - expose:0.25, - }, - }, - //新1v1 - yanhuo:{ - audio:2, - trigger:{player:'die'}, - forceDie:true, - filter:function(event,player){ - return player.countCards('he')>0; - }, - direct:true, - skillAnimation:true, - animationColor:'thunder', - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('yanhuo'),function(card,player,target){ - return target!=player&&target.countDiscardableCards(player,'he')>0 - }).set('forceDie',true).ai=function(target){ - return -target.countCards('he')*get.attitude(player,target); - }; - 'step 1' - if(result.bool){ - var target=result.targets[0]; - event.target=target; - player.logSkill('yanhuo',target); - event.count=player.countCards('he'); - } - else event.finish() - 'step 2' - if(target.countDiscardableCards(player,'he')){ - player.line(target); - player.discardPlayerCard(target,'he',true).set('forceDie',true); - event.count--; - if(event.count) event.redo(); - } - }, - }, - mouzhu:{ - audio:2, - enable:'phaseUse', - usable:1, - filterTarget:function(card,player,target){ - return target!=player&&target.countCards('he')>0; - }, - content:function(){ - 'step 0' - target.chooseCard('he','交给'+get.translation(player)+'一张牌',true); - 'step 1' - player.gain(result.cards,target,'giveAuto'); - 'step 2' - if(player.countCards('h')<=target.countCards('h')){ - event.finish(); - return; - } - var list=[]; - if(target.canUse('sha',player,false)) list.push('sha'); - if(target.canUse('juedou',player,false)) list.push('juedou'); - if(!list.length) event.finish(); - else if(list.length==1) event._result={control:list[0]}; - else target.chooseControl(list).set('prompt','对'+get.translation(player)+'使用一张【杀】或【决斗】。').ai=function(){ - return get.effect(player,{name:'sha'},target,target)>=get.effect(player,{name:'juedou'},target,target)?'sha':'juedou'; - }; - 'step 3' - target.useCard({name:result.control,isCard:true},player); - }, - ai:{ - order:7, - result:{ - target:-1.2, - player:function(player,target){ - if(target.countCards('h')-player.countCards('h')>1) return 1; - if(get.damageEffect(target,player,player,player)>0) return 1; - if(player.hp>3||player.countCards('h','sha')&&player.countCards('h','shan')) return 0; - if(player.hp>2) return -1.1; - return -2; - }, - }, - }, - }, - niluan:{ - audio:2, - trigger:{global:'phaseJieshuBegin'}, - filter:function(event,player){ - return event.player!=player&&(event.player.hp>player.hp||event.player.countUsed('sha')) - }, - direct:true, - content:function(){ - var next=player.chooseToUse(); - next.logSkill='niluan'; - next.set('openskilldialog',get.prompt2('niluan')); - next.set('norestore',true); - next.set('_backupevent','niluanx'); - next.backup('niluanx'); - }, - }, - niluanx:{ - viewAs:{name:'sha'}, - filterCard:{color:'black'}, - position:'he', - check:function(card){return 5-get.value(card)}, - }, - cuorui:{ - audio:2, - trigger:{ - global:'gameDrawAfter', - player:'enterGame', - }, - forced:true, - filter:function(event,player){ - return player.maxHp>0&&!get.is.single(); - }, - content:function(){ - player.draw(Math.min(5,player.maxHp),false); - }, - group:'cuorui_nojudge', - subSkill:{ - nojudge:{ - trigger:{ - player:'phaseJudgeBefore', - }, - forced:true, - audio:'cuorui', - filter:function(event,player){ - return !player.storage.cuorui&&(get.is.single()||player.countCards('j')); - }, - content:function(){ - player.storage.cuorui=true; - trigger.cancel(); - game.log(player,'跳过了','#g判定阶段'); - }, - }, - }, - }, - liewei:{ - audio:2, - trigger:{source:'dieAfter'}, - frequent:true, - content:function(){ - player.draw(3); - }, - }, - //蒋干 - weicheng:{ - audio:2, - trigger:{global:'gainAfter'}, - //forced:true, - frequent:true, - filter:function(event,player){ - if(event.source==player&&event.player!=player&&player.hp>player.countCards('h')){ - return event.relatedLose&&event.relatedLose.hs&&event.relatedLose.hs.length>0; - } - return false; - }, - content:function(){ - player.draw(); - }, - }, - daoshu:{ - audio:2, - enable:'phaseUse', - filterTarget:function(c,p,t){ - return t!=p&&t.countGainableCards(p,'h')>0; - }, - filter:function(e,p){ - return !p.hasSkill('daoshu_used') - }, - content:function(){ - 'step 0' - player.chooseControl(lib.suit).set('prompt','请选择一个花色').ai=function(){return lib.suit.randomGet()}; - 'step 1' - event.suit=result.control; - player.popup(event.suit+2); - game.log(player,'选择了',event.suit+2); - player.gainPlayerCard(target,true,'h','visibleMove'); - 'step 2' - if(result.bool){ - var suit2=get.suit(result.cards[0]); - if(suit2==event.suit){ - target.damage(); - event.finish(); - } - else{ - player.addTempSkill('daoshu_used','phaseUseEnd'); - if(player.countCards('h',function(card){return get.suit(card)!=suit2})==0){ - player.showHandcards(); - event.finish(); - } - else player.chooseCard('h',true,function(card){ - return get.suit(card)!=_status.event.suit2 - },'交给'+get.translation(target)+'一张不为'+get.translation(suit2)+'花色的牌').set('suit2',suit2); - } - } - else event.finish(); - 'step 3' - player.give(result.cards,target,true); - }, - ai:{ - order:1, - result:{ - target:-1, - }, - }, - subSkill:{ - used:{sub:true}, - }, - }, - //统率三军诸葛瑾和文聘 - "zhenwei_three":{ - global:"zhenwei_three_others", - subSkill:{ - others:{ - mod:{ - globalTo:function (from,to,distance){ - if(from.side!=to.side&&game.hasPlayer(function(current){ - return current!=to&¤t.side==to.side&¤t.hasSkill('zhenwei_three'); - }))return distance+1; - }, - }, - sub:true, - }, - }, - }, - "huanshi_three":{ - audio:"huanshi", - trigger:{ - global:"judge", - }, - filter:function (event,player){ - return player.countCards('he')>0&&player.side==event.player.side; - }, - direct:true, - content:function (){ - "step 0" - player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ - get.translation(trigger.player.judging[0])+','+get.prompt('huanshi_three'),'he',function(card){ - var player=_status.event.player; - var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); - if(mod2!='unchanged') return mod2; - var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); - if(mod!='unchanged') return mod; - return true; - }).set('ai',function(card){ - var trigger=_status.event.getTrigger(); - var player=_status.event.player; - var judging=_status.event.judging; - var result=trigger.judge(card)-trigger.judge(judging); - var attitude=get.attitude(player,trigger.player); - if(attitude==0||result==0) return 0; - if(attitude>0){ - return result-get.value(card)/2; - } - else{ - return -result-get.value(card)/2; - } - }).set('judging',trigger.player.judging[0]); - "step 1" - if(result.bool){ - player.respond(result.cards,'highlight','huanshi_three','noOrdering'); - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - if(trigger.player.judging[0].clone){ - trigger.player.judging[0].clone.classList.remove('thrownhighlight'); - game.broadcast(function(card){ - if(card.clone){ - card.clone.classList.remove('thrownhighlight'); - } - },trigger.player.judging[0]); - game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); - } - game.cardsDiscard(trigger.player.judging[0]); - trigger.player.judging[0]=result.cards[0]; - trigger.orderingCards.addArray(result.cards); - game.log(trigger.player,'的判定牌改为',result.cards[0]); - game.delay(2); - } - }, - ai:{ - rejudge:true, - tag:{ - rejudge:1, - }, - }, - }, - //英文版特典武将凯撒 - zhengfu:{ - trigger:{ - player:"useCardToPlayered", - }, - check:function (event,player){ - return get.attitude(player,event.target)<0; - }, - filter:function(event,player){ - return event.card.name=='sha'; - }, - logTarget:"target", - line:false, - content:function (){ - 'step 0' - player.line(trigger.target,{color:[220, 90, 139]}); - player.chooseControl(['basic','trick','equip']).set('ai',function(){ - var player=_status.event.target; - if(!player.countCards('h','sha')&&player.countCards('h','shan')) return 'trick'; - return 'basic'; - }).set('prompt','请选择一种牌的类别').set('target',trigger.target); - 'step 1' - trigger.target.chooseCard('he','交给'+get.translation(player)+'一张'+get.translation(result.control)+'牌,否则此【杀】不可被闪避。',function(card){ - return get.type(card,'trick')==result.control; - }).set('ai',function(card){ - var num=_status.event.num; - if(num==0) return 0; - if(card.name=='shan') return num>1?2:0; - return 8-get.value(card); - }).set('num',trigger.target.countCards('h','shan')) - 'step 2' - if(result.bool){ - var cards=result.cards; - player.gain(cards,trigger.target,'giveAuto'); - } - else trigger.getParent().directHit.add(trigger.target); - game.delay(); - }, - }, - //变权移植 - wanwei:{ - trigger:{target:['rewriteGainResult','rewriteDiscardResult']}, - direct:true, - filter:function(event,player){ - return event.player!=player; - }, - audio:2, - content:function(){ - 'step 0' - var prompt='即将失去'+get.translation(trigger.result.cards)+',是否发动【挽危】?'; - var next=player.choosePlayerCard(player,prompt,trigger.position); - next.set('ai',function(button){ - return 20-get.value(button.link); - }); - next.filterButton=trigger.filterButton; - next.selectButton=trigger.result.cards.length; - 'step 1' - if(result.bool){ - player.logSkill('wanwei'); - trigger.result.cards=result.links.slice(0); - trigger.result.links=result.links.slice(0); - trigger.cards=result.links.slice(0); - trigger.untrigger(); - } - } - }, - yuejian:{ - trigger:{global:'phaseDiscardBegin'}, - audio:2, - filter:function(event,player){ - return event.player.countUsed()0&&event.player.needsToDiscard(); - }, - subSkill:{ - num:{ - mod:{ - maxHandcard:function(player,num){ - return num+player.maxHp; - } - } - }, - } - }, - gzjili:{ - mod:{ - aiOrder:function(player,card,num){ - if(player.isPhaseUsing()&&get.subtype(card)=='equip1'&&!get.cardtag(card,'gifts')){ - var range0=player.getAttackRange(); - var range=0; - var info=get.info(card); - if(info&&info.distance&&info.distance.attackFrom){ - range-=info.distance.attackFrom; - } - if(player.getEquip(1)){ - var num=0; - var info=get.info(player.getEquip(1)); - if(info&&info.distance&&info.distance.attackFrom){ - num-=info.distance.attackFrom; - } - range0-=num; - } - range0+=range; - if(range0==(player.getHistory('useCard').length+player.getHistory('respond').length+2)&&player.countCards('h',function(cardx){ - return get.subtype(cardx)!='equip1'&&player.getUseValue(cardx)>0; - })) return num+10; - } - }, - }, - trigger:{player:['useCard','respond']}, - frequent:true, - locked:false, - filter:function(event,player){ - return player.getHistory('useCard').length+player.getHistory('respond').length==player.getAttackRange(); - }, - audio:2, - content:function(){ - player.draw(player.getAttackRange()); - }, - ai:{ - threaten:1.8, - effect:{ - target:function(card,player,target,current){ - if(player!=target||!player.isPhaseUsing()) return; - if(get.subtype(card)=='equip1'&&!get.cardtag(card,'gifts')){ - var range0=player.getAttackRange(); - var range=0; - var info=get.info(card); - if(info&&info.distance&&info.distance.attackFrom){ - range-=info.distance.attackFrom; - } - if(player.getEquip(1)){ - var num=0; - var info=get.info(player.getEquip(1)); - if(info&&info.distance&&info.distance.attackFrom){ - num-=info.distance.attackFrom; - } - range0-=num; - } - range0+=range; - var delta=range0-(player.getHistory('useCard').length+player.getHistory('respond').length); - if(delta<0) return; - var num=player.countCards('h',function(card){ - return (get.cardtag(card,'gifts')||get.subtype(card)!='equip1')&&player.getUseValue(card)>0; - }); - if(delta==2&&num>0) return [1,3]; - if(num>=delta) return 'zeroplayertarget'; - } - }, - }, - } - }, - xiongsuan:{ - limited:true, - enable:'phaseUse', - filterCard:true, - filter:function(event,player){ - return player.countCards('h'); - }, - check:function(card){ - return 7-get.value(card); - }, - filterTarget:true, - content:function(){ - 'step 0' - player.awakenSkill('xiongsuan'); - target.damage('nocard'); - 'step 1' - player.draw(3); - var list=[]; - var skills=target.getOriginalSkills(); - for(var i=0;i1){ - player.chooseControl(list).set('prompt','选择一个限定技在回合结束后重置之'); - } - else{ - event.finish(); - } - 'step 2' - target.storage.xiongsuan_restore=result.control; - target.addTempSkill('xiongsuan_restore','phaseZhunbeiBegin'); - }, - subSkill:{ - restore:{ - trigger:{global:'phaseAfter'}, - silent:true, - content:function(){ - player.restoreSkill(player.storage.xiongsuan_restore); - } - } - }, - ai:{ - order:4, - damage:true, - result:{ - target:function(player,target){ - if(target.hp>1){ - var skills=target.getOriginalSkills(); - for(var i=0;i=0) return 10; - if(target.hp>=4) return 5; - if(target.hp==3){ - if(player.countCards('h')<=2&&game.hasPlayer(function(current){ - return current.hp<=1&&get.attitude(player,current)<0; - })){ - return 3; - } - } - return 0; - } - } - } - }, - diancai:{ - audio:2, - trigger:{global:'phaseUseEnd'}, - filter:function(event,player){ - if(_status.currentPhase==player) return false; - var num=0; - player.getHistory('lose',function(evt){ - if(evt.cards2&&evt.getParent('phaseUse')==event) num+=evt.cards2.length; - }); - return num>=player.hp; - }, - content:function(){ - 'step 0' - var num=player.maxHp-player.countCards('h'); - if(num>0){ - player.draw(num); - } - }, - }, - diaodu:{ - audio:2, - group:"diaodu_use", - subfrequent:['use'], - subSkill:{ - use:{ - trigger:{ - player:"useCard", - }, - audio:"diaodu", - frequent:true, - prompt:'是否发动【调度】摸一张牌?', - filter:function (event,player){ - return get.type(event.card)=='equip' - }, - content:function (){ - player.draw('nodelay'); - }, - ai:{ - reverseEquip:true, - effect:{ - target:function (card,player,target,current){ - if(player==target&&get.type(card)=='equip') return [1,3]; - }, - }, - }, - }, - }, - trigger:{ - player:"phaseUseBegin", - }, - filter:function (event,player){ - return game.hasPlayer(function(current){ - return current!=player&¤t.countGainableCards(player,'e')>0; - }); - }, - direct:true, - content:function (){ - 'step 0' - player.chooseTarget(get.prompt2('diaodu'),function(card,player,current){ - return current!=player&¤t.countGainableCards(player,'e')>0; - }).ai=function(target){ - var num=get.attitude(_status.event.player,target); - if(target.isDamaged()&&target.getEquip('baiyin')&&num>0) return 2*num - return -num; - }; - 'step 1' - if(result.bool){ - event.target1=result.targets[0]; - player.logSkill('diaodu',event.target1); - player.line(event.target1,'diaodu'); - player.gainPlayerCard(event.target1,'e',true); - } - else event.finish(); - 'step 2' - if(result.bool){ - event.card=result.cards[0]; - player.chooseTarget('是否将'+get.translation(event.card)+'交给一名其他角色?',function(card,player,current){ - return current!=player&¤t!=event.target1; - }); - } - else event.finish(); - 'step 3' - if(result.bool){ - var target=result.targets[0]; - player.line(target,'green'); - target.gain(card,player,'give'); - } - }, - }, - zhengbi:{ - trigger:{player:'phaseUseBegin'}, - filter:function(event,player){ - //if(event.player!=player) return false; - return game.hasPlayer(function(current){return current!=player&¤t.isHealthy()})||player.countCards('h',{type:'basic'}); - }, - content:function(){ - 'step 0' - var choices=[]; - if(game.hasPlayer(function(current){return current.isHealthy()})) choices.push('选择一名未受伤的角色'); - if(player.countCards('h',{type:'basic'})) choices.push('交给一名角色一张基本牌'); - player.chooseControl(choices,ui.create.dialog('征辟

    选择一项
    ','hidden')).set('ai',function(){ - if(choices.length>1){ - return 1; - } - return 0; - }); - 'step 1' - if(result.control=='选择一名未受伤的角色') player.chooseTarget('征辟

    选择一名未受伤的角色,你对其使用牌没有次数和距离限制直到回合结束
    ',function(card,player,target){ - return target!=player&&target.isHealthy(); - },true); - else player.chooseCardTarget({ - prompt:'征辟

    交给一名其他角色一张基本牌,然后该角色交给你一张非基本牌或两张基本牌
    ', - position:'h', - filterCard:function(card){return get.type(card)=='basic'}, - filterTarget:function(card,player,target){ - return target!=player; - }, - ai1:function(card){return 7-get.value(card)}, - //ai2:function(card,player,target){} - }).set('forced',true); - 'step 2' - event.target=result.targets[0]; - player.line(result.targets,'green'); - if(result.cards.length){ - event.cards=result.cards; - result.targets[0].gain(result.cards,player,'give'); - } - else{ - player.storage.zhengbi_eff1=result.targets[0]; - player.addTempSkill('zhengbi_eff1'); - event.finish(); - } - 'step 3' - var choices=[]; - if(target.countCards('he',{type:['trick','delay','equip']})) choices.push('一张非基本牌'); - if(target.countCards('h',{type:'basic'})>1) choices.push('两张基本牌'); - if(choices.length) target.chooseControl(choices,ui.create.dialog('征辟

    交给'+get.translation(player)+'
    ')).set('ai',function(event,player){ - if(choices.length>1){ - if(player.countCards('he',{type:['trick','delay','equip']},function(card){return get.value(card)<7})) return 0; - return 1; - } - return 0; - }); - else{ - if(target.countCards('h')){ - var cards=target.getCards('h'); - player.gain(cards,target,'giveAuto'); - event.finish(); - } - else event.finish(); - } - 'step 4' - var check=(result.control=='一张非基本牌'); - target.chooseCard('he',(check?1:2),{type:(check?['trick','delay','equip']:'basic')},true); - 'step 5' - if(result.cards){ - player.gain(result.cards,target,'giveAuto'); - } - }, - subSkill:{ - eff1:{ - sub:true, - mod:{ - targetInRange:function (card,player,target){ - if(target==player.storage.zhengbi_eff1) return true; - }, - cardUsable:function (card,player,num){ - if(typeof num=='number'&&player.storage.zhengbi_eff1&&player.storage.zhengbi_eff1.isAlive()) return num+100; - }, - playerEnabled:function (card,player,target){ - if(player.storage.zhengbi_eff1.isAlive()&&player.storage.zhengbi_eff1&&target!=player.storage.zhengbi_eff1){ - var num=player.getCardUsable(card)-100; - if(num<=0) return false; - } - }, - }, - onremove:true, - }, - eff2:{sub:true}, - } - }, - fengying:{ - limited:true, - enable:'phaseUse', - position:'h', - filterCard:true, - selectCard:-1, - filter:function(event,player){ - return !player.storage.fengying&&player.countCards('h')>0; - }, - filterTarget:function(card,player,target){ - return target==player; - }, - selectTarget:-1, - discard:false, - lose:false, - content:function(){ - 'step 0' - player.awakenSkill('fengying'); - player.storage.fengying=true; - player.insertPhase(); - var evt=_status.event.getParent('phaseUse'); - if(evt&&evt.name=='phaseUse'){ - evt.skipped=true; - } - 'step 1' - var cards=player.getCards('h'); - player.discard(cards); - player.chooseTarget('请选择至多'+cards.length+'名角色,令这些角色将手牌摸至手牌上限。',[1,cards.length],function(card,player,target){ - return target.countCards('h')2){ - return Math.min(5,target.maxHp)-target.countCards('h'); - } - return att/3; - }); - 'step 2' - if(result.bool){ - var list=result.targets; - list.sort(lib.sort.seat); - player.line(list,'thunder'); - game.asyncDraw(list,function(current){ - return current.maxHp-current.countCards('h'); - }); - } - }, - skillAnimation:'epic', - animationColor:'gray', - ai:{ - order:0.1, - result:{ - player:0, - } - }, - }, - //新服曹笨 - xinshanjia:{ - group:["xinshanjia_count"], - locked:false, - mod:{ - aiValue:function(player,card,num){ - if((player.storage.xinshanjia||0)<3&&get.type(card)=='equip'&&!get.cardtag(card,'gifts')){ - if(get.position(card)=='e') return num/player.hp; - return num*player.hp; - } - }, - }, - subSkill:{ - count:{ - forced:true, - silent:true, - popup:false, - trigger:{ - player:"loseEnd", - }, - filter:function(event,player){ - return event.es.length>0; - }, - content:function (){ - lib.skill.xinshanjia.sync(player); - }, - }, - }, - audio:"shanjia", - trigger:{ - player:"phaseUseBegin", - }, - intro:{ - content:"本局游戏内已失去过#张装备区内的牌", - }, - frequent:true, - sync:function(player){ - var history=player.actionHistory; - var num=0; - for(var i=0;i0) player.markSkill('xinshanjia'); - }, - content:function (){ - 'step 0' - player.draw(3); - 'step 1' - lib.skill.xinshanjia.sync(player); - var num=3-player.storage.xinshanjia; - if(num>0){ - player.chooseToDiscard('he',true,num).ai=get.disvalue; - } - 'step 2' - var bool=true; - if(result.cards){ - for(var i=0;i2) return false; - }, - effect:{ - target:function(card,player,target){ - if(player.storage.xinshanjia<3&&get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; - }, - }, - }, - }, - //OL马超 - ol_shichou:{ - audio:2, - trigger:{ - player:'useCard2', - }, - direct:true, - filter:function(event,player){ - return event.card&&event.card.name=='sha';//&&player.isDamaged(); - }, - content:function(){ - 'step 0' - var num=Math.max(1,player.getDamagedHp()); - player.chooseTarget('是否发动【誓仇】,令至多'+num+'名其他角色也成为此【杀】的目标?',[1,num],function(card,player,target){ - return target!=player&&!trigger.targets.contains(target)&&player.canUse({name:'sha'},target); - }).ai=function(target){ - return get.effect(target,{name:'sha'},_status.event.player); - }; - 'step 1' - if(result.bool&&result.targets&&result.targets.length){ - var targets=result.targets; - player.logSkill('ol_shichou',targets); - player.line(targets,trigger.card.nature); - trigger.targets.addArray(targets); - } - }, - }, - //新大小乔 - "new_xingwu":{ - audio:"xingwu", - trigger:{ - player:"phaseDiscardBegin", - }, - direct:true, - intro:{ - content:"cards", - onunmark:function(storage,player){ - if(storage&&storage.length){ - player.$throw(storage,1000); - game.cardsDiscard(storage); - game.log(storage,'被置入了弃牌堆'); - storage.length=0; - } - }, - }, - init:function (player){ - if(!player.storage.new_xingwu) player.storage.new_xingwu=[]; - }, - content:function (){ - 'step 0' - player.chooseCard(get.prompt2('new_xingwu')).set('ai',function(card){ - var player=_status.event.player; - for(var i=0;i0&& - get.attitude(player,current)<0) - })) return 0; - } - return 7-get.value(card); - }); - 'step 1' - if(result.bool){ - player.logSkill('new_xingwu'); - if(player.storage.new_xingwu.length<2){ - player.$give(result.cards,player,false); - } - player.lose(result.cards,ui.special,'toStorage'); - player.storage.new_xingwu=player.storage.new_xingwu.concat(result.cards); - player.markSkill('new_xingwu'); - player.syncStorage('new_xingwu'); - } - else{ - event.finish(); - } - 'step 2' - var suitlist=[]; - for(var i=0;i0) return -1; - return get.damageEffect(target,player,player)*target.sex=='male'?2:1+target.countCards('e')/2; - }); - } - 'step 4' - if(result.bool){ - var target=result.targets[0]; - var num=target.sex=="male"?2:1; - target.damage(num); - event.target=target; - player.line(target,'green'); - } - else{ - event.finish(); - } - 'step 5' - if(event.target&&event.target.isAlive()){ - var es=event.target.getCards('e'); - if(es.length){ - event.target.discard(es); - } - } - }, - ai:{ - threaten:1.5, - }, - }, - "new_luoyan":{ - group:["new_luoyan_tianxiang","new_luoyan_liuli"], - }, - "new_luoyan_tianxiang":{ - inherit:"retianxiang", - filter:function (event,player){ - if(!player.storage.new_xingwu||!player.storage.new_xingwu.length) return false; - if(player.hasSkill('retianxiang')||player.hasSkill('tianxiang')) return false; - return lib.skill.retianxiang.filter(event,player); - }, - audio:"tianxiang", - }, - "new_luoyan_liuli":{ - inherit:"liuli", - filter:function (event,player){ - if(!player.storage.new_xingwu||!player.storage.new_xingwu.length) return false; - if(player.hasSkill('liuli')) return false; - return lib.skill.liuli.filter(event,player); - }, - audio:"liuli", - }, - //新孙鲁育 - "new_meibu":{ - audio:"meibu", - trigger:{ - global:"phaseUseBegin", - }, - filter:function (event,player){ - return event.player!=player&&event.player.isAlive()&&event.player.inRange(player); - }, - direct:true, - derivation:["new_zhixi"], - checkx:function (event,player){ - if(get.attitude(player,event.player)>=0) return false; - var e2=player.getEquip(2); - if(e2){ - if(e2.name=='tengjia') return true; - if(e2.name=='bagua') return true; - } - return event.player.countCards('h')>event.player.hp; - }, - content:function (){ - "step 0" - var check=lib.skill.new_meibu.checkx(trigger,player); - player.chooseToDiscard(get.prompt2('new_meibu',trigger.player),'he').set('ai',function(card){ - if(_status.event.check) return 6-get.value(card); - return 0; - }).set('check',check).set('logSkill','new_meibu'); - "step 1" - if(result.bool){ - var target=trigger.player; - var card=result.cards[0]; - player.line(target,'green'); - target.addTempSkill('new_zhixi','phaseUseEnd'); - if(card.name!='sha'&&get.type(card)!='trick'&&get.color(card)!='black'){ - target.addTempSkill('new_meibu_range','phaseUseEnd'); - target.storage.meibu=player; - } - target.markSkillCharacter('new_meibu',player,'魅步','锁定技,出牌阶段,你至多可使用X张牌,你使用了锦囊牌后不能再使用牌(X为你的体力值)。'); - } - }, - ai:{ - expose:0.2, - }, - subSkill:{ - range:{ - mod:{ - globalFrom:function (from,to,num){ - if(to==from.storage.meibu){ - return -Infinity; - } - }, - }, - sub:true, - }, - }, - }, - "new_mumu":{ - audio:"mumu", - trigger:{ - player:"phaseUseBegin", - }, - direct:true, - content:function (){ - 'step 0' - player.chooseTarget(get.prompt('new_mumu'),'弃置一名角色装备区内的一张牌,或者获得一名角色装备区内的防具牌',function(card,player,target){ - if(target==player) return target.getEquip(2)!=undefined; - return target.countCards('e')>0; - }).set('ai',function(target){ - var player=_status.event.player; - var att=get.attitude(player,target) - if(target.getEquip(2)&&player.isEmpty(2)){ - return -2*att; - } - return -att; - }); - 'step 1' - if(result.bool&&result.targets&&result.targets.length){ - event.target=result.targets[0]; - player.logSkill('new_mumu',event.target); - player.line(event.target,'green'); - var e=event.target.getEquip(2); - event.e=e; - if(target==player) event.choice='获得一张防具牌'; - else if(e){ - player.chooseControl('弃置一张装备牌','获得一张防具牌').set('ai',function(){ - if(_status.event.player.getEquip(2)){ - return '弃置一张装备牌'; - } - return '获得一张防具牌'; - }); - } - else{ - event.choice='弃置一张装备牌'; - } - }else event.finish(); - 'step 2' - var choice=event.choice||result.control; - if(choice=='弃置一张装备牌'){ - player.discardPlayerCard(event.target,'e',true); - } - else{ - if(event.e){ - player.gain(event.e,event.target,'give'); - player.addTempSkill('new_mumu2') - } - } - }, - }, - "new_zhixi":{ - mod:{ - cardEnabled:function(card,player){ - if(player.storage.new_zhixi2||player.countMark('new_zhixi')>=player.hp) return false; - }, - cardUsable:function(card,player){ - if(player.storage.new_zhixi2||player.countMark('new_zhixi')>=player.hp) return false; - }, - cardRespondable:function(card,player){ - if(player.storage.new_zhixi2||player.countMark('new_zhixi')>=player.hp) return false; - }, - }, - trigger:{ - player:"useCard1", - }, - forced:true, - popup:false, - onremove:true, - firstDo:true, - onremove:function(player){ - player.unmarkSkill('new_meibu'); - delete player.storage.new_zhixi; - delete player.storage.new_zhixi2; - }, - content:function(){ - player.addMark('new_zhixi',1,false); - if(get.type2(trigger.card)=='trick') player.storage.new_zhixi2=true; - }, - ai:{presha:true,pretao:true,nokeep:true}, - }, - "new_mumu2":{ - mod:{ - cardEnabled:function(card){ - if(card.name=='sha') return false; - }, - }, - }, - qingzhong:{ - audio:2, - }, - qingzhongx:{ - audio:'weijing', - trigger:{player:'phaseUseBegin'}, - check:function(event,player){ - if(game.hasPlayer(function(current){ - return current!=player&¤t.isMinHandcard()&&get.attitude(player,current)>0; - })){ - return true; - } - if(player.countCards('h')<=2) return true; - // if(player.countCards('h')<=3&&!player.countCards('h','shan')) return true; - //if(player.countCards('h',{type:'basic'})<=1) return true; - return false; - }, - content:function(){ - player.draw(2); - player.addTempSkill('qingzhongx_give'); - }, - subSkill:{ - give:{ - trigger:{player:'phaseUseEnd'}, - filter:function(event,player){ - return !player.isMinHandcard(true); - }, - audio:'weijing', - forced:true, - content:function(){ - 'step 0' - var list=game.filterPlayer(function(current){ - return current.isMinHandcard(); - }); - if(list.length==1){ - if(list[0]!=player){ - player.line(list[0],'green'); - player.swapHandcards(list[0]); - } - event.finish(); - } - else{ - player.chooseTarget(true,'清忠:选择一名手牌最少的角色与其交换手牌',function(card,player,target){ - return target.isMinHandcard(); - }).set('ai',function(target){ - return get.attitude(_status.event.player,target); - }); - } - 'step 1' - if(result.bool){ - var target=result.targets[0]; - if(target!=player){ - player.line(target,'green'); - player.swapHandcards(target); - } - } - } - } - } - }, - weijing:{ - audio:2, - group:['weijing_sha','weijing_shan'], - subSkill:{ - sha:{ - audio:'qingzhong', - enable:'chooseToUse', - viewAs:{name:'sha',isCard:true}, - filterCard:function(){return false}, - viewAsFilter:function(player){ - if(player.hasSkill('weijing_disable')) return false; - }, - selectCard:-1, - mark:false, - precontent:function(){ - player.addTempSkill('weijing_disable','roundStart'); - }, - prompt:'视为使用一张杀', - ai:{ - order:function(){ - var player=_status.event.player; - if(!player.hasShan()&&!game.hasPlayer(function(current){ - return player.canUse('sha',current)&¤t.hp==1&&get.effect(current,{name:'sha'},player,player)>0; - })){ - return 0; - } - return 2.95; - }, - skillTagFilter:function(player,tag,arg){ - if(player.hasSkill('weijing_disable')) return false; - if(arg!='use') return false; - }, - respondSha:true, - } - }, - shan:{ - audio:'qingzhong', - enable:'chooseToUse', - viewAs:{name:'shan',isCard:true}, - mark:false, - filterCard:function(){return false}, - viewAsFilter:function(player){ - if(player.hasSkill('weijing_disable')) return false; - return true; - }, - onuse:function(event,player){ - player.addTempSkill('weijing_disable','roundStart'); - }, - selectCard:-1, - prompt:'视为使用一张闪', - ai:{ - order:function(){ - var player=_status.event.player; - if(player.hasSkill('qingzhongx_give')) return 2.95; - return 3.15; - }, - skillTagFilter:function(player){ - if(player.hasSkill('weijing_disable')) return false; - }, - respondShan:true, - } - }, - disable:{ - mark:true, - intro:{ - content:'本轮已发动' - } - } - } - }, - zishu:{ - audio:2, - locked:true, - subSkill:{ - discard:{ - trigger:{global:'phaseEnd'}, - audio:"zishu", - forced:true, - filter:function(event,player){ - if(_status.currentPhase!=player){ - var he=player.getCards('h'); - var bool=false; - player.getHistory('gain',function(evt){ - if(!bool&&evt&&evt.cards){ - for(var i=0;i0) return false; - return event.cards.filterInD().length>0 - }, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt('yingyuan'),'将'+get.translation(trigger.cards)+'交给一名其他角色',function(card,player,target){ - return target!=player; - }).set('ai',function(target){ - if(target.hasJudge('lebu')) return 0; - var att=get.attitude(_status.event.player,target); - if(att<3) return 0; - if(target.hasSha()&&_status.event.sha){ - att/=5; - } - if(event.wuxie&&target.needsToDiscard(1)){ - att/=5; - } - return att/(1+get.distance(player,target,'absolute')); - }).set('sha',trigger.cards[0].name=='sha').set('wuxie',trigger.cards[0].name=='wuxie'); - 'step 1' - if(result.bool){ - player.logSkill('yingyuan',result.targets[0]); - result.targets[0].gain(trigger.cards.filterInD(),'gain2'); - player.getHistory('custom').push({yingyuan_name:trigger.card.name}); - } - }, - }, - shuimeng:{ - audio:true, - trigger:{player:'phaseUseAfter'}, - direct:true, - filter:function(event,player){ - return player.countCards('h'); - }, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('shuimeng'),function(card,player,target){ - return player.canCompare(target); - }).set('ai',function(target){ - if(!_status.event.goon) return 0; - return -get.attitude(_status.event.player,target); - }).set('goon',player.needsToDiscard()||player.hasCard(function(card){ - var val=get.value(card); - if(val<0) return true; - if(val<=5){ - return card.number>=11; - } - if(val<=6){ - return card.number>=12; - } - return false; - })); - 'step 1' - if(result.bool){ - player.logSkill('shuimeng',result.targets); - event.target=result.targets[0]; - player.chooseToCompare(event.target); - } - else{ - event.finish(); - } - 'step 2' - if(result.bool){ - player.chooseUseTarget({name:'wuzhong',isCard:true},true); - } - else{ - event.target.useCard({name:'guohe',isCard:true},player); - } - } - }, - qianya:{ - audio:2, - trigger:{target:'useCardToTargeted'}, - direct:true, - filter:function(event,player){ - return get.type(event.card,'trick')=='trick'&&player.countCards('h'); - }, - content:function(){ - 'step 0' - var nh=player.countCards('h'); - player.chooseCardTarget({ - filterCard:true, - filterTarget:function(card,player,target){ - return target!=player; - }, - selectCard:[1,nh], - ai1:function(card){ - var player=_status.event.player; - var cardname=_status.event.cardname; - if(_status.event.du) return -get.value(card,player,'raw'); - else if(_status.event.shuimeng){ - if(cardname=='wuzhong'){ - if(player.needsToDiscard(2-ui.selected.cards.length)){ - return 10-get.value(card,player,'raw'); - } - } - else if(cardname=='guohe'){ - if(player.needsToDiscard(-1-ui.selected.cards.length)){ - return 10-get.value(card,player,'raw'); - } - } - return 0; - } - else if(cardname=='lebu'){ - if(player.needsToDiscard(1-ui.selected.cards.length)){ - return 8-get.value(card,player,'raw'); - } - else{ - if(!ui.selected.cards.length){ - return 6-get.value(card,player,'raw'); - } - return 0; - } - } - else if(cardname=='shunshou'){ - if(_status.event.nh<=2) return get.value(card,player,'raw'); - } - else if(cardname=='huogong'){ - if(player.hp==1) return get.value(card,player,'raw'); - } - if(ui.selected.cards.length) return 0; - return 7-get.value(card,player,'raw'); - }, - ai2:function(target){ - var att=get.attitude(_status.event.player,target); - var nh2=target.countCards('h'); - var num=Math.sqrt(1+nh2); - var cardname=_status.event.cardname; - if(_status.event.du) return 0.5-att; - else if(_status.event.shuimeng){ - return att/num; - } - else if(cardname=='lebu'){ - return att/num; - } - else if(cardname=='shunshou'){ - if(_status.event.nh<=2) return att/num; - } - else if(cardname=='huogong'){ - if(_status.event.player.hp==1) return att/num; - } - if(_status.event.nh>nh2+1){ - return att/num; - } - return 0; - }, - du:player.hasCard(function(card){ - return get.value(card,player,'raw')<0; - }), - shuimeng:trigger.getParent(2).name=='shuimeng', - nh:nh, - cardname:trigger.card.name, - prompt:get.prompt2('qianya') - }); - 'step 1' - if(result.bool){ - player.logSkill('qianya',result.targets); - player.give(result.cards,result.targets[0]); - } - } - }, - xianfu:{ - trigger:{ - global:'gameDrawAfter', - player:'enterGame', - }, - forced:true, - filter:function(){ - return game.players.length>1; - }, - audio:6, - content:function(){ - 'step 0' - player.chooseTarget('请选择【先辅】的目标',lib.translate.xianfu_info,true,function(card,player,target){ - return target!=player&&(!player.storage.xianfu2||!player.storage.xianfu2.contains(target)); - }).set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(att>0) return att+1; - if(att==0) return Math.random(); - return att; - }); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - if(!player.storage.xianfu2) player.storage.xianfu2=[]; - player.storage.xianfu2.push(target); - player.addSkill('xianfu2'); - } - } - }, - xianfu_mark:{ - marktext:'辅', - intro:{ - name:'先辅', - content:'当你受到伤害后,$受到等量的伤害,当你回复体力后,$回复等量的体力' - }, - }, - xianfu2:{ - audio:'xianfu', - charlotte:true, - trigger:{global:['damageEnd','recoverEnd']}, - forced:true, - filter:function(event,player){ - if(event.player.isDead()||!player.storage.xianfu2||!player.storage.xianfu2.contains(event.player)||event.num<=0) return false; - if(event.name=='damage') return true; - return player.isDamaged(); - }, - logTarget:'player', - content:function(){ - 'step 0' - var target=trigger.player; - if(!target.storage.xianfu_mark) target.storage.xianfu_mark=[]; - target.storage.xianfu_mark.add(player); - target.storage.xianfu_mark.sortBySeat(); - target.markSkill('xianfu_mark'); - game.delayx(); - 'step 1' - player[trigger.name](trigger.num,'nosource'); - }, - onremove:function(player){ - if(!player.storage.xianfu2) return; - game.countPlayer(function(current){ - if(player.storage.xianfu2.contains(current)&¤t.storage.xianfu_mark){ - current.storage.xianfu_mark.remove(player); - if(!current.storage.xianfu_mark.length) current.unmarkSkill('xianfu_mark'); - else current.markSkill('xianfu_mark'); - } - }); - delete player.storage.xianfu2; - }, - group:'xianfu3', - }, - xianfu3:{ - trigger:{global:'dieBegin'}, - silent:true, - filter:function(event,player){ - return event.player==player||player.storage.xianfu2&&player.storage.xianfu2.contains(player); - }, - content:function(){ - if(player==event.player) lib.skill.xianfu2.onremove(player); - else player.storage.xianfu2.remove(event.player); - } - }, - chouce:{ - trigger:{player:'damageEnd'}, - content:function(){ - 'step 0' - event.num=trigger.num; - 'step 1' - player.judge(); - 'step 2' - event.color=result.color; - if(event.color=='black'){ - player.chooseTarget('弃置一名角色区域内的一张牌',function(card,player,target){ - return target.countCards('hej'); - }).set('ai',function(target){ - var player=_status.event.player; - var att=get.attitude(player,target); - if(att<0){ - att=-Math.sqrt(-att); - } - else{ - att=Math.sqrt(att); - } - return att*lib.card.guohe.ai.result.target(player,target); - }) - } - else{ - var next=player.chooseTarget('令一名角色摸一张牌'); - if(player.storage.xianfu2&&player.storage.xianfu2.length){ - next.set('prompt2','(若目标为'+get.translation(player.storage.xianfu2)+'则改为摸两张牌)'); - } - next.set('ai',function(target){ - var player=_status.event.player; - var att=get.attitude(player,target)/Math.sqrt(1+target.countCards('h')); - if(player.storage.xianfu2&&player.storage.xianfu2.contains(target)) return att*2; - return att; - }) - } - 'step 3' - if(result.bool){ - var target=result.targets[0]; - player.line(target,'green'); - if(event.color=='black'){ - player.discardPlayerCard(target,'hej',true); - } - else{ - if(player.storage.xianfu2&&player.storage.xianfu2.contains(target)){ - if(!target.storage.xianfu_mark) target.storage.xianfu_mark=[]; - target.storage.xianfu_mark.add(player); - target.storage.xianfu_mark.sortBySeat(); - target.markSkill('xianfu_mark'); - target.draw(2); - } - else{ - target.draw(); - } - } - } - 'step 4' - if(--event.num>0){ - player.chooseBool(get.prompt2('chouce')); - } - else{ - event.finish(); - } - 'step 5' - if(result.bool){ - player.logSkill('chouce'); - 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; - if(target.hp>=4) return [1,get.tag(card,'damage')*1.5]; - if(target.hp==3) return [1,get.tag(card,'damage')*1]; - if(target.hp==2) return [1,get.tag(card,'damage')*0.5]; - } - } - } - } - }, - fuqi:{ - audio:2, - forced:true, - trigger:{ - player:"useCard", - }, - filter:function(event,player){ - return event.card&&(get.type(event.card)=='trick'||get.type(event.card)=='basic'&&!['shan','tao','jiu','du'].contains(event.card.name))&&game.hasPlayer(function(current){ - return current!=player&&get.distance(current,player)<=1; - }); - }, - content:function(){ - trigger.directHit.addArray(game.filterPlayer(function(current){ - return current!=player&&get.distance(current,player)<=1; - })); - }, - }, - wylianji:{ - enable:'phaseUse', - audio:2, - usable:1, - filter:function(event,player){ - return player.hasCard(lib.skill.wylianji.filterCard); - }, - check:function(card){ - if(card.name=='sha') return 1; - else{ - if(get.tag(card,'damage')){ - if(get.tag(card,'multineg')) return 5; - return 2; - } - } - return 0; - }, - filterCard:function(card){ - return get.name(card)=='sha'||(get.type(card,'trick')=='trick'&&get.color(card)=='black'&&!get.info(card).multitarget)&&get.info(card).enable; - }, - filterTarget:function(card,player,target){ - return target!=player&&!target.isMin()&& - (player.canUse(card,target,false)||game.hasPlayer(function(current){ - return current!=player&&target.canUse(card,current); - })); - }, - discard:false, - lose:true, - delay:false, - content:function(){ - 'step 0' - player.showCards(get.translation(player)+'对'+get.translation(target)+'发动了【连计】',cards); - 'step 1' - 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.createCard2('qibaodao',equip1.suit,equip1.number); - } - target.$draw(equip1); - target.chooseUseTarget(true,equip1,'noanimate','nopopup'); - game.delay(); - 'step 2' - game.updateRoundNumber(); - var card=cards[0]; - var bool1=game.hasPlayer(function(current){ - return current!=player&&target.canUse(card,current); - }); - var bool2=player.canUse(card,target,false); - if(bool1&&bool2){ - target.chooseControl(function(){ - return 0; - }).set('choiceList',[ - '对除'+get.translation(player)+'以外的角色使用'+get.translation(cards)+',并将装备区里的武器牌交给该牌的一个目标角色', - '视为'+get.translation(player)+'对你使用'+get.translation(cards)+',并将装备区内的武器牌交给'+get.translation(player) - ]); - } - else if(bool1){ - event.directindex=0; - } - else if(bool2){ - event.directindex=1; - } - else{ - event.finish(); - } - 'step 3' - var card=cards[0]; - if(result&&typeof event.directindex!='number'){ - event.directindex=result.index; - } - if(event.directindex==1){ - event.insert(lib.skill.wylianji.content_use,{ - player:player, - target:target, - card:card - }) - } - else{ - event.insert(lib.skill.wylianji.content_give,{ - player:target, - card:card, - targets:game.filterPlayer(function(current){ - return current!=player; - }) - }); - } - }, - content_use:function(){ - 'step 0' - player.useCard(card,target); - 'step 1' - if(!get.owner(card)){ - target.gain(card,'gain2'); - } - 'step 2' - var equip1=target.getEquip(1); - if(equip1){ - game.delay(); - target.give(equip1,player); - target.line(player); - } - }, - content_give:function(){ - 'step 0' - var select=get.select(get.info(card).selectTarget); - if(select[1]==-1){ - for(var i=0;i1){ - player.chooseTarget(true,'将'+get.translation(equip1)+'交给一名角色',function(card,player,target){ - return _status.event.list.contains(target); - }).set('ai',function(target){ - return get.attitude(player,target); - }).set('list',_status.event.list); - event.equip1=equip1; - } - else{ - if(event.list.length==1){ - player.give(equip1,event.list[0]); - player.line(event.list); - } - event.finish(); - } - } - else{ - event.finish(); - } - 'step 3' - if(result.bool&&result.targets.length&&event.equip1){ - player.give(event.equip1,result.targets[0]); - player.line(result.targets); - } - }, - ai:{ - order:7, - result:{ - target:function(player,target){ - if(ui.selected.cards.length){ - var card=ui.selected.cards[0]; - var bool=(card.name!='sha'); - if(game.hasPlayer(function(current){ - return target.canUse(card,current,bool)&&get.effect(current,card,target,player)>0; - })){ - var num=1; - if(target.getEquip(1)){ - num=0.6; - } - if(target.hasSkillTag('noe')) 2*num; - return num; - } - } - return 0; - } - } - } - }, - moucheng:{ - audio:2, - derivation:['jingong','wy_meirenji','wy_xiaolicangdao'], - trigger:{global:'damageEnd'}, - forced:true, - popup:false, - filter:function(event,player){ - return event.source!=player&&event.getParent(2).name=='useCard'&&event.getParent(3).name=='wylianjiInserted'; - }, - init:function(player){ - player.storage.moucheng=0; - }, - intro:{ - content:'已造成#点伤害' - }, - unique:true, - juexingji:true, - content:function(){ - player.storage.moucheng+=trigger.num; - if(player.hasSkill('moucheng')){ - player.markSkill('moucheng'); - player.syncStorage('moucheng'); - } - if(player.storage.moucheng>=3){ - event.trigger('mouchengAwaken'); - } - }, - group:'moucheng_awaken', - subSkill:{ - awaken:{ - trigger:{player:'mouchengAwaken'}, - forced:true, - skillAnimation:true, - animationColor:'gray', - content:function(){ - player.awakenSkill('moucheng'); - player.removeSkill('wylianji'); - player.addSkill('jingong'); - } - } - } - }, - jingong:{ - audio:2, - enable:'phaseUse', - filter:function(event,player){ - return player.countCards('he',function(card){ - return card.name=='sha'||get.type(card)=='equip'; - }); - }, - delay:false, - usable:1, - content:function(){ - 'step 0' - var list=get.inpile('trick').randomGets(2); - if(Math.random()<0.5){ - list.push('wy_meirenji'); - } - else{ - list.push('wy_xiaolicangdao'); - } - for(var i=0;i=num) return false; - return player.countCards('h')>0; - }, - filterTarget:function(event,player,target){ - return player.canCompare(target); - }, - content:function(){ - 'step 0' - player.chooseToCompare(target); - 'step 1' - if(!result.bool) event.finish(); - event.num=result.num1; - 'step 2' - if(num<=5&&target.countGainableCards(player,'he')>0) player.gainPlayerCard(target,'he',true); - 'step 3' - if(num<=9){ - var card=get.cardPile2(function(x){ - return x.name=='sha'; - }); - if(card) player.gain(card,'gain2'); - } - 'step 4' - if(num<=13){ - var card={name:'sha',nature:'thunder'}; - if(player.canUse(card,target,false)) player.useCard(card,target,false); - } - }, - ai:{ - order:4, - result:{ - target:function(player,target){ - var sort=function(a,b){ - return b.number-a.number; - }; - var ps=player.getCards('h').sort(sort); - var ts=target.getCards('h').sort(sort); - if(ps[0].number>ts[0].number){ - var effect=get.effect(target,{name:'sha',nature:'thunder'},player,player) - if(ps[0].number<6&&target.countCards('he')>1) effect-=2; - if(ps[0].number<10) effect-=1; - return effect; - } - return ps.length>=ts.length?-0.5:0; - }, - }, - }, - }, - fenyue:{ - audio:2, - enable:'phaseUse', - filter:function(event,player){ - if(!player.countCards('h')) return false; - var num; - if(get.mode()=='identity'){ - num=game.countPlayer(function(current){ - return current.identity=='zhong'||current.identity=='mingzhong'; - }); - } - else{ - num=1; - } - if(player.getStat().skill.fenyue>=num) return false; - return true; - }, - filterTarget:function(card,player,target){ - return player.canCompare(target); - }, - ai:{ - order:2.8, - result:{ - target:function(player,target){ - if(get.attitude(player,target)<0&&player.hasCard(function(card){ - return (card.number>=9&&get.value(card)<=5)||get.value(card)<=3; - })){ - return get.effect(target,{name:'sha'},player,target); - } - else{ - return 0; - } - } - } - }, - content:function(){ - 'step 0' - player.chooseToCompare(target); - 'step 1' - if(result.bool){ - player.chooseControl(function(){ - return 1; - }).set('choiceList',[ - '令'+get.translation(target)+'不能使用或打出手牌直到回合结束', - '视为对'+get.translation(target)+'使用一张杀(不计入次数限制)' - ]); - } - else{ - var evt=_status.event.getParent('phaseUse'); - if(evt&&evt.name=='phaseUse'){ - evt.skipped=true; - } - event.finish(); - } - 'step 2' - if(result.control=='选项一'){ - target.addTempSkill('fenyue2'); - } - else{ - player.useCard({name:'sha',isCard:true},target,false); - } - } - }, - fenyue2:{ - mark:true, - mod:{ - cardEnabled2:function (card){ - if(get.position(card)=='h') return false; - }, - }, - intro:{ - content:'不能使用或打出手牌' - } - }, - - huoshui:{ - audio:2, - enable:'phaseUse', - unique:true, - forceunique:true, - filter:function(event,player){ - if(player.name1=='gz_zoushi') return player.isUnseen(0); - return player.isUnseen(1); - }, - content:function(){ - if(player.name1=='gz_zoushi') player.showCharacter(0); - else player.showCharacter(1); - }, - global:'huoshui_mingzhi' - }, - huoshui_mingzhi:{ - ai:{ - nomingzhi:true, - skillTagFilter:function(player){ - if(_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.hasSkill('huoshui')){ - return true; - } - return false; - } - } - }, - qingcheng:{ - audio:2, - enable:'phaseUse', - filter:function(event,player){ - return player.countCards('he',{type:'equip'})&&game.hasPlayer(function(current){ - return current!=player&&!current.isUnseen(2); - }); - }, - filterCard:{type:'equip'}, - position:'he', - filterTarget:function(card,player,target){ - return !target.isUnseen(2); - }, - check:function(card){ - return 6-get.value(card,_status.event.player); - }, - content:function(){ - 'step 0' - if(get.is.jun(target)){ - event._result={control:'副将'}; - } - else{ - var choice='主将'; - var skills=lib.character[target.name2][3]; - for(var i=0;i=0) return 0; - if(player.hasCard(function(card){ - return get.tag(card,'damage')&&player.canUse(card,target,true,true); - })){ - if(target.maxHp>3) return -0.5; - return -1; - } - return 0; - } - } - } - }, - qingcheng_ai:{ - ai:{ - effect:{ - target:function(card){ - if(get.tag(card,'damage')) return 2; - } - } - } - }, - zhuoshui:{ - audio:'huoshui', - trigger:{player:'phaseZhunbeiBegin'}, - forced:true, - content:function(){ - game.countPlayer(function(current){ - if(current!=player&&!current.hasSkill('fengyin')){ - player.line(current,'green'); - current.addTempSkill('fengyin'); - } - }); - } - }, - zqingcheng:{ - audio:'qingcheng', - enable:'phaseUse', - filter:function(event,player){ - return player.countCards('he',{type:'equip'}); - }, - filterCard:{type:'equip'}, - position:'he', - filterTarget:function(card,player,target){ - return target!=player; - }, - check:function(card){ - var player=_status.event.player; - if(game.hasPlayer(function(current){ - return get.attitude(player,current)>2&¤t.isTurnedOver(); - })){ - return 10-get.value(card,player); - } - return 6-get.value(card,player); - }, - content:function(){ - 'step 0' - target.turnOver(); - 'step 1' - target.draw(2); - }, - ai:{ - order:8, - result:{ - target:function(player,target){ - if(target.hasSkillTag('noturn')) return 0; - if(target.isTurnedOver()) return 2; - return -0.5; - } - } - } - }, - zfengshi:{ - audio:2, - trigger:{player:'useCardToPlayered'}, - filter:function(event,player){ - return event.card.name=='sha'&&event.target.countCards('e'); - }, - logTarget:'target', - check:function(event,player){ - if(event.target.hasSkillTag('noe')) return false; - return get.attitude(player,event.target)<0; - }, - content:function(){ - trigger.target.chooseToDiscard('e',true); - } - }, - chuanxin:{ - audio:2, - trigger:{source:'damageBegin2'}, - filter:function(event,player){ - if(_status.currentPhase!=player) return false; - if(!_status.event.getParent('phaseUse')) return false; - if(event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.getParent().name==event.card.name){ - if(get.mode()=='guozhan'){ - return (event.player.identity!='qun'||player.identity=='ye')&& - !event.player.isUnseen()&&event.player.hasViceCharacter(); - } - else{ - var info=lib.character[event.player.name]; - if(!info) return false; - var skills=event.player.getSkills(); - for(var i=0;i=2) return 1; - return 0; - }).set('choiceList',['弃置装备区内的所有牌并失去一点体力',get.mode()=='guozhan'?'移除副将牌':'随机移除武将牌上的一个技能']); - } - else{ - event._result={index:1}; - } - 'step 1' - if(result.index==1){ - if(get.mode()!='guozhan'){ - var info=lib.character[trigger.player.name]; - var skills=trigger.player.getSkills(); - var list=[]; - for(var i=0;i0; - }, - logTarget:function(){ - return _status.currentPhase; - }, - content:function(){ - var source=_status.currentPhase; - if(source.hasSkill('hengjiang2')){ - source.storage.hengjiang2+=trigger.num; - source.storage.hengjiang3.add(player); - source.updateMarks(); - } - else{ - source.storage.hengjiang3=[player]; - source.storage.hengjiang2=trigger.num; - source.addTempSkill('hengjiang2'); - } - }, - ai:{ - maixie_defend:true, - } - }, - hengjiang2:{ - mark:true, - charlotte:true, - intro:{ - content:'手牌上限-#' - }, - mod:{ - maxHandcard:function(player,num){ - return num-player.storage.hengjiang2; - } - }, - onremove:function(player){ - delete player.storage.hengjiang2; - delete player.storage.hengjiang3; - }, - trigger:{player:'phaseDiscardEnd'}, - filter:function(event,player){ - if(event.cards&&event.cards.length) return false; - var players=player.storage.hengjiang3; - for(var i=0;i0; - }, - logTarget:function(){ - return _status.currentPhase; - }, - content:function(){ - "step 0" - event.count=trigger.num; - "step 1" - event.count--; - var source=_status.currentPhase; - if(source.hasSkill('rehengjiang2')){ - source.storage.rehengjiang2++; - source.storage.rehengjiang3.push(player); - source.storage.rehengjiang3.sortBySeat(source); - source.updateMarks(); - } - else{ - source.storage.rehengjiang3=[player]; - source.storage.rehengjiang2=1; - source.addTempSkill('rehengjiang2'); - } - "step 2" - if(event.count){ - player.chooseBool(get.prompt2('rehengjiang',_status.currentPhase)).set('ai',function(){ - return lib.skill.rehengjiang.check(_status.event.getTrigger(),_status.event.player); - }) - } - else event.finish(); - "step 3" - if(result.bool){ - player.logSkill('rehengjiang',_status.currentPhase); - event.goto(1); - } - }, - ai:{ - maixie_defend:true, - } - }, - rehengjiang2:{ - mark:true, - charlotte:true, - intro:{ - content:'手牌上限-#' - }, - mod:{ - maxHandcard:function(player,num){ - return num-player.storage.rehengjiang2; - } - }, - onremove:function(player){ - delete player.storage.rehengjiang2; - delete player.storage.rehengjiang3; - }, - trigger:{player:'phaseDiscardEnd'}, - filter:function(event,player){ - if(event.cards&&event.cards.length) return false; - var players=player.storage.rehengjiang3; - for(var i=0;i1){ - goon=player.hasCard(function(card){ - return card.number>10&&get.value(card)<=5; - }); - } - else{ - goon=player.hasCard(function(card){ - return (card.number>=9&&get.value(card)<=5)||get.value(card)<=3; - }); - } - player.chooseTarget(get.prompt2('shuangren'),function(card,player,target){ - return player.canCompare(target); - }).set('ai',function(target){ - var player=_status.event.player; - if(_status.event.goon&&get.attitude(player,target)<0){ - return get.effect(target,{name:'sha'},player,player); - } - return 0; - }).set('goon',goon); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - event.target=target; - player.logSkill('shuangren',target); - player.chooseToCompare(target); - } - else{ - event.finish(); - } - 'step 2' - if(result.bool){ - var target=event.target; - if(target.identity!='ye'&&target.identity!='unknown'&&game.hasPlayer(function(current){ - if(!player.canUse('sha',current,false)) return false; - if(target==current) return false; - if(get.mode()=='guozhan'){ - return target.identity==current.identity; - } - return true; - })){ - var str='对一名'; - if(get.mode()=='guozhan'){ - str+=get.translation(target.identity)+'势力的'; - } - player.chooseTarget(str+'角色使用一张杀',true,function(card,player,target){ - if(!player.canUse('sha',target,false)) return false; - if(get.mode()=='guozhan'){ - return target.identity==_status.event.identity; - } - return true; - }).set('ai',function(target){ - var player=_status.event.player; - return get.effect(target,{name:'sha'},player,player); - }).set('identity',target.identity); - } - else{ - player.useCard({name:'sha',isCard:true},target,false); - event.finish(); - } - } - else{ - trigger.cancel(); - event.finish(); - } - 'step 3' - if(result.bool&&result.targets&&result.targets.length){ - player.useCard({name:'sha',isCard:true},result.targets[0],false); - } - } - }, - kuanshi:{ - audio:2, - trigger:{player:'phaseJieshuBegin'}, - direct:true, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('kuanshi')).set('ai',function(target){ - if(get.attitude(_status.event.player,target)>0){ - return 1/Math.sqrt(target.hp+1); - } - return 0; - }); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - player.logSkill('kuanshi'); - target.storage.kuanshi2=player; - target.addSkill('kuanshi2'); - } - } - }, - kuanshi2:{ - /*mark:'character', - intro:{ - content:'下一次受到超过1点的伤害时,防止此伤害,然后$跳过下个回合的摸牌阶段' - },*/ - trigger:{player:'damageBegin4'}, - forced:true, - filter:function(event,player){ - return event.num>1; - }, - //priority:-11, - content:function(){ - trigger.cancel(); - player.storage.kuanshi2.skip('phaseDraw'); - player.removeSkill('kuanshi2'); - }, - group:'kuanshi2_remove', - onremove:true, - subSkill:{ - remove:{ - trigger:{global:['phaseZhunbeiBegin','dieAfter']}, - forced:true, - popup:false, - filter:function(event,player){ - return event.player==player.storage.kuanshi2; - }, - content:function(){ - player.removeSkill('kuanshi2'); - } - } - } - }, - xiashu:{ - audio:2, - trigger:{player:'phaseUseBegin'}, - direct:true, - filter:function(event,player){ - return player.countCards('h')>0; - }, - content:function(){ - 'step 0' - var maxval=0; - var hs=player.getCards('h'); - for(var i=0;i0) return 0.1; - if(maxval>=8) return 0; - if(att==0) return 0.2; - if(dh>=3) return dh; - if(dh==2){ - if(maxval<=7) return dh; - } - if(maxval<=6) return dh; - return 0; - - }).set('maxval',maxval); - 'step 1' - if(result.bool){ - player.logSkill('xiashu',result.targets); - event.target=result.targets[0]; - var hs=player.getCards('h'); - event.target.gain(hs,player,'giveAuto'); - } - else{ - event.finish(); - } - 'step 2' - var hs=event.target.getCards('h'); - if(!hs.length){ - event.finish(); - return; - } - hs.sort(function(a,b){ - return get.value(b,player,'raw')-get.value(a,player,'raw'); - }); - event.target.chooseCard([1,hs.length],'展示至少一张手牌',true).set('ai',function(card){ - var rand=_status.event.rand; - var list=_status.event.list; - if(_status.event.att){ - if(ui.selected.cards.length>=Math.ceil(list.length/2)) return 0; - var value=get.value(card); - if(_status.event.getParent().player.isHealthy()){ - value+=(get.tag(card,'damage')?1.5:0)+(get.tag(card,'draw')?2:0); - } - return value; - } - if(ui.selected.cards.length>=Math.floor(list.length/2)) return 0; - return (list.indexOf(card)%2==rand)?1:0; - }).set('rand',(Math.random()<0.6)?1:0).set('list',hs).set('att',get.attitude(event.target,player)>0); - 'step 3' - event.target.showCards(result.cards); - event.cards1=result.cards; - event.cards2=event.target.getCards('h',function(card){ - return !event.cards1.contains(card); - }); - 'step 4' - var choice; - var num1=event.cards1.length; - var num2=event.cards2.length; - if(get.attitude(event.target,player)>0&&num1>=num2){ - choice=0; - } - else if(num1==num2){ - choice=(Math.random()<0.45)?0:1; - } - else if(num1>num2){ - if(num1-num2==1){ - choice=(Math.random()<0.6)?0:1; - } - else{ - choice=0; - } - } - else{ - if(num2-num1==1){ - choice=(Math.random()<0.6)?1:0; - } - else{ - choice=1; - } - } - player.chooseControl(function(event,player){ - return _status.event.choice; - }).set('choiceList',['获得'+get.translation(event.target)+'展示的牌', - '获得'+get.translation(event.target)+'未展示的牌']).set('choice',choice); - 'step 5' - if(result.index==0){ - player.gain(event.cards1,target,'give'); - } - else{ - player.gain(event.cards2,target,'giveAuto'); - } - }, - ai:{ - expose:0.1 - } - }, - sheyan:{ - audio:2, - trigger:{target:'useCardToTarget'}, - filter:function(event,player){ - if(!event.targets||!event.targets.contains(player)) return false; - var info=get.info(event.card); - if(info.type!='trick') return false; - if(info.multitarget) return false; - if(event.targets.length>1) return true; - return game.hasPlayer(function(current){ - return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,event.player,current); - }); - }, - direct:true, - content:function(){ - 'step 0' - var bool1=(trigger.targets.length>1); - var bool2=game.hasPlayer(function(current){ - return !trigger.targets.contains(current)&&lib.filter.targetEnabled2(trigger.card,trigger.player,current); - }); - if(bool1&&bool2){ - player.chooseControlList(get.prompt('sheyan'),['为'+get.translation(trigger.card)+'增加一个目标','为'+get.translation(trigger.card)+'减少一个目标'],function(event,player){ - if(_status.event.add) return 0; - return 1; - }).set('add',get.effect(player,trigger.card,trigger.player,player)>=0); - } - else if(bool2){ - event.type='add'; - event.goto(2); - event.unchosen=true; - } - else{ - event.type='remove'; - event.goto(2); - event.unchosen=true; - } - 'step 1' - if(result.control=='cancel2'){ - event.finish(); - } - else if(result.index==1){ - event.type='remove'; - } - else{ - event.type='add'; - } - 'step 2' - if(event.type=='add'){ - player.chooseTarget(event.unchosen?get.prompt('sheyan'):null,'为'+get.translation(trigger.card)+'增加一个目标',function(card,player,target){ - var trigger=_status.event.getTrigger(); - return !trigger.targets.contains(target)&&lib.filter.targetEnabled2(trigger.card,trigger.player,target); - }).set('ai',function(target){ - var trigger=_status.event.getTrigger(); - return get.effect(target,trigger.card,trigger.player,_status.event.player); - }); - } - else{ - player.chooseTarget(event.unchosen?get.prompt('sheyan'):null,'为'+get.translation(trigger.card)+'减少一个目标',function(card,player,target){ - return _status.event.targets.contains(target); - }).set('ai',function(target){ - var trigger=_status.event.getTrigger(); - return -get.effect(target,trigger.card,trigger.player,_status.event.player); - }).set('targets',trigger.targets); - } - 'step 3' - if(result.bool){ - if(!event.isMine()) game.delayx(); - event.target=result.targets[0]; - } - else{ - event.finish(); - } - 'step 4' - player.logSkill('sheyan',event.target); - if(event.type=='add'){ - trigger.targets.push(event.target); - } - else{ - trigger.getParent().excluded.add(event.target); - } - }, - ai:{ - expose:0.2 - } - }, - bingzheng:{ - audio:2, - trigger:{player:'phaseUseEnd'}, - direct:true, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('bingzheng'),function(card,player,target){ - return target.countCards('h')!=target.hp; - }).set('ai',function(target){ - var player=_status.event.player; - var att=get.attitude(player,target); - var nh=target.countCards('h'); - if(att>0){ - if(nh==target.hp-1){ - if(player==target) return att+1; - return att+2; - } - if(player==target&&player.needsToDiscard()) return att/3; - return att; - } - else{ - if(nh==target.hp+1) return -att; - if(nh==0) return 0; - return -att/2; - } - }); - 'step 1' - if(result.bool){ - player.logSkill('bingzheng',result.targets); - event.target=result.targets[0]; - if(event.target.countCards('h')){ - player.chooseControl(function(event,player){ - var target=event.target; - if(get.attitude(player,target)<0) return 1; - return 0; - }).set('choiceList',['令'+get.translation(event.target)+'摸一张牌', - '令'+get.translation(event.target)+'弃置一张手牌']); - } - else{ - event.directfalse=true; - } - } - else{ - event.finish(); - } - 'step 2' - if(event.directfalse||result.index==0){ - event.target.draw(); - } - else{ - event.target.chooseToDiscard('h',true); - } - 'step 3' - if(event.target.countCards('h')==event.target.hp){ - player.draw(); - if(event.target==player){ - event.finish(); - return; - } - var next=player.chooseCard('是否交给'+get.translation(event.target)+'一张牌?','he'); - next.set('ai',function(card){ - if(get.position(card)!='h') return 0; - if(_status.event.shan&&card.name=='shan'){ - return 11; - } - if(_status.event.goon){ - return 10-get.value(card); - } - return -get.value(card,_status.event.player,'raw'); - }); - if(get.attitude(player,event.target)>1&& - player.countCards('h','shan')>1&&player.countCards('h')>event.target.countCards('h')){ - next.set('shan',true); - } - if(get.attitude(player,event.target)>0&&player.needsToDiscard()){ - next.set('goon',true); - } - } - else{ - event.finish(); - } - 'step 4' - if(result.bool){ - event.target.gain(result.cards,player,'giveAuto'); - } - }, - ai:{ - expose:0.2, - threaten:1.4 - } - }, - fuman:{ - audio:2, - enable:'phaseUse', - filterTarget:function(card,player,target){ - return !target.hasSkill('fuman2')&&target!=player; - }, - filter:function(event,player){ - return player.countCards('h','sha'); - }, - discard:false, - lose:false, - delay:false, - filterCard:{name:'sha'}, - content:function(){ - target.gain(cards,player,'giveAuto'); - target.storage.fuman3=cards[0]; - target.storage.fuman2=player; - target.addTempSkill('fuman2',{player:'phaseAfter'}); - }, - check:function(card){ - return 6-get.value(card); - }, - ai:{ - order:2, - result:{ - target:function(player,target){ - if(!target.hasSha()) return 1.2; - return 1; - } - } - } - }, - fuman2:{ - mod:{ - aiOrder:function(player,card,num){ - if(card==player.storage.fuman3&&player.storage.fuman2.isIn()) return num+get.sgn(get.attitude(player,player.storage.fuman2)); - }, - }, - trigger:{player:'useCard'}, - forced:true, - filter:function(event,player){ - return event.cards.contains(player.storage.fuman3)&&player.storage.fuman2.isIn(); - }, - mark:true, - intro:{ - content:'下个回合结束之前使用“抚蛮”牌时,令$一张牌' - }, - content:function(){ - 'step 0' - game.delayx(); - 'step 1' - player.line(player.storage.fuman2,'green'); - player.storage.fuman2.draw(); - }, - onremove:function(player){ - delete player.storage.fuman2; - delete player.storage.fuman3; - }, - }, - qizhou:{ - trigger:{player:['phaseBefore','equipEnd','loseEnd']}, - forced:true, - popup:false, - derivation:['mashu','reyingzi','duanbing','fenwei'], - filter:function(event,player){ - if(player.equiping) return false; - var suits=[]; - var es=player.getCards('e'); - for(var i=0;i0; - } - }, - content:function(){ - var suits=[]; - var es=player.getCards('e'); - for(var i=0;i0; - } - if(player.hasSha()&&geteff(target)){ - var num=game.countPlayer(function(current){ - return current!=player&&get.distance(player,current)<=1&&geteff(current); - }); - if(num==0){ - if(game.hasPlayer(function(current){ - return player.canUse('sha',current)&&geteff(current)&¤t!=target; - })){ - return 1; - } - } - else if(num==1){ - return 1; - } - } - return 0; - } - } - } - }, - fenxun2:{ - mark:'character', - onremove:true, - intro:{ - content:'到$的距离视为1' - }, - mod:{ - globalFrom:function(from,to){ - if(to==from.storage.fenxun2){ - return -Infinity; - } - } - } - }, - duanbing:{ - audio:2, - audioname:['heqi'], - trigger:{player:'useCard2'}, - filter:function(event,player){ - if(event.card.name!='sha') return false; - return game.hasPlayer(function(current){ - return !event.targets.contains(current)&&get.distance(player,current)<=1&&player.canUse(event.card,current); - }); - }, - direct:true, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt('duanbing'),'为'+get.translation(trigger.card)+'增加一个目标',function(card,player,target){ - return !_status.event.sourcex.contains(target)&&get.distance(player,target)<=1&&player.canUse(_status.event.card,target); - }).set('sourcex',trigger.targets).set('ai',function(target){ - var player=_status.event.player; - return get.effect(target,_status.event.card,player,player); - }).set('card',trigger.card); - 'step 1' - if(result.bool){ - if(!event.isMine()&&!_status.connectMode) game.delayx(); - event.target=result.targets[0]; - } - else{ - event.finish(); - } - 'step 2' - player.logSkill('duanbing',event.target); - trigger.targets.push(event.target); - }, - ai:{ - effect:{ - player:function(card,player,target,current,isLink){ - if(!isLink&&card.name=='sha'){ - if(player._duanbingtmp) return; - player._duanbingtmp=true; - if(get.effect(target,card,player,player)<=0){ - delete player._duanbingtmp; - return; - } - if(game.hasPlayer(function(current){ - return current!=target&&get.distance(player,current)<=1&& - player.canUse(card,current)&&get.effect(current,card,player,player)>0; - })){ - delete player._duanbingtmp; - return [1,1]; - } - delete player._duanbingtmp; - } - } - } - } - }, - fuhan:{ - audio:2, - trigger:{player:'phaseBegin'}, - unique:true, - limited:true, - skillAnimation:true, - animationColor:'orange', - forceunique:true, - //filter:function(event,player){ - // return player.storage.fanghun2>0; - //}, - prompt:function(event,player){ - var num=Math.max(2,player.storage.fanghun2||0); - num=Math.min(num,8); - return get.prompt('fuhan')+'(体力上限:'+num+')'; - }, - check:function(event,player){ - var num=Math.max(2,player.storage.fanghun2||0); - if(num==1) return false; - if(player.hp<=1) return true; - if(num==2) return false; - if(num==3) return player.hp<3&&player.isMinHp(); - return true; - }, - content:function(){ - 'step 0' - if(player.storage.fanghun) player.draw(player.storage.fanghun); - player.removeMark('fanghun',player.storage.fanghun); - event.num=Math.max(2,player.storage.fanghun2||0); - var list; - if(_status.characterlist){ - list=[]; - for(var i=0;i<_status.characterlist.length;i++){ - var name=_status.characterlist[i]; - if(lib.character[name][1]=='shu') list.push(name); - } - } - else if(_status.connectMode){ - list=get.charactersOL(function(i){ - return lib.character[i][1]!='shu'; - }); - } - else{ - list=get.gainableCharacters(function(info){ - return info[1]=='shu'; - }); - } - var players=game.players.concat(game.dead); - for(var i=0;i0) player.gainMaxHp(num); - else player.loseMaxHp(-num); - player.recover(); - } - }, - refuhan:{ - audio:'fuhan', - trigger:{player:'phaseBegin'}, - unique:true, - limited:true, - skillAnimation:true, - animationColor:'orange', - forceunique:true, - filter:function(event,player){ - return player.countMark('fanghun')>0; - }, - content:function(){ - 'step 0' - if(player.storage.fanghun) player.draw(player.storage.fanghun); - player.removeMark('fanghun',player.storage.fanghun); - var list; - if(_status.characterlist){ - list=[]; - for(var i=0;i<_status.characterlist.length;i++){ - var name=_status.characterlist[i]; - if(lib.character[name][1]=='shu') list.push(name); - } - } - else if(_status.connectMode){ - list=get.charactersOL(function(i){ - return lib.character[i][1]!='shu'; - }); - } - else{ - list=get.gainableCharacters(function(info){ - return info[1]=='shu'; - }); - } - var players=game.players.concat(game.dead); - for(var i=0;i(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){ - var temp=get.order({name:name}); - if(temp>max){ - max=temp; - name2=map[name]; - } - } - } - if(name2==get.name(card,player)) return 1; - return 0; - } - return 1; - }, - filterCard:function(card,player,event){ - event=event||_status.event; - var filter=event._backup.filterCard; - var name=get.name(card,player); - if(name=='sha'&&filter({name:'shan',cards:[card]},player,event)) return true; - if(name=='shan'&&filter({name:'sha',cards:[card]},player,event)) return true; - if(name=='tao'&&filter({name:'jiu',cards:[card]},player,event)) return true; - if(name=='jiu'&&filter({name:'tao',cards:[card]},player,event)) return true; - return false; - }, - filter:function(event,player){ - if(!player.storage.fanghun||player.storage.fanghun<0) return false; - var filter=event.filterCard; - if(filter({name:'sha'},player,event)&&player.countCards('h','shan')) return true; - if(filter({name:'shan'},player,event)&&player.countCards('h','sha')) return true; - if(filter({name:'tao'},player,event)&&player.countCards('h','jiu')) return true; - if(filter({name:'jiu'},player, event)&&player.countCards('h','tao')) return true; - return false; - }, - onrespond:function(){return this.onuse.apply(this,arguments)}, - onuse:function(result,player){ - player.removeMark('fanghun',1); - }, - ai:{ - respondSha:true, - respondShan:true, - save:true, - skillTagFilter:function(player,tag){ - if(!player.storage.fanghun||player.storage.fanghun<0) return false; - var name; - switch(tag){ - case 'respondSha':name='shan';break; - case 'respondShan':name='sha';break; - case 'save':name='jiu';break; - } - if(!player.countCards('h',name)) return false; - }, - order:function(item,player){ - if(player&&_status.event.type=='phase'){ - var max=0; - var list=['sha','tao','jiu']; - var map={sha:'shan',tao:'jiu',jiu:'tao'} - for(var i=0;i(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){ - var temp=get.order({name:name}); - if(temp>max) max=temp; - } - } - if(max>0) max+=0.3; - return max; - } - return 4; - }, - }, - }, - } - }, - yjixi:{ - init:function(player){ - player.storage.yjixi=0; - }, - derivation:'wangzun', - trigger:{player:'phaseJieshuBegin'}, - forced:true, - filter:function(event,player){ - return player.storage.yjixi>=3; - }, - skillAnimation:true, - animationColor:'gray', - unique:true, - juexingji:true, - content:function(){ - 'step 0' - player.awakenSkill('yjixi'); - player.gainMaxHp(); - player.recover(); - 'step 1' - var str='摸两张牌'; - var mode=get.mode(); - var choice='选项一'; - if(mode=='identity'||(mode=='versus'&&_status.mode=='four')){ - var list=[]; - var zhu=get.zhu(player); - if(zhu&&zhu!=player&&zhu.skills){ - for(var i=0;i=6) return 0; - return 20-num; - } - else{ - if(_status.event.player.needsToDiscard()){ - return 7-num; - } - } - return 0; - }, - discard:false, - lose:false, - delay:false, - content:function(){ - 'step 0' - target.gain(cards,player,'giveAuto'); - if(get.color(cards[0])=='black'){ - target.chooseToDiscard(2,'he','弃置两张牌,或令'+get.translation(player)+'摸两张牌').set('ai',function(card){ - if(_status.event.goon) return 7-get.value(card); - return 0; - }).set('goon',get.attitude(target,player)<0); - } - else{ - event.finish(); - } - 'step 1' - if(!result.bool){ - player.draw(2); - } - }, - ai:{ - order:8, - expose:0.2, - result:{ - target:function(player,target){ - if(ui.selected.cards.length&&get.color(ui.selected.cards[0])=='red'){ - if(target.countCards('h')0) player.markSkill('shanjia'); - }, - audio:2, - intro:{ - content:function(storage){ - if(storage==0) return '未使用过装备牌'; - return '已使用过'+storage+'张装备牌'; - } - }, - group:'shanjia2', - trigger:{player:'phaseUseBegin'}, - frequent:true, - filter:function(event,player){ - lib.skill.shanjia.sync(player); - return player.storage.shanjia>0; - }, - content:function(){ - 'step 0' - lib.skill.shanjia.sync(player); - player.draw(Math.min(7,player.storage.shanjia)); - 'step 1' - player.chooseToDiscard('he',Math.min(7,player.storage.shanjia),true); - 'step 2' - var useCard=false; - if(result.bool&&result.cards){ - for(var i=0;i0) - })){ - return 6-get.value(card); - } - } - return 0; - }, - content:function(){ - player.loseHp(); - switch(get.type(cards[0],'trick')){ - case 'basic':player.addTempSkill('zhanyi_basic');break; - case 'equip':player.addTempSkill('zhanyi_equip');break; - case 'trick':player.addTempSkill('zhanyi_trick');player.draw(2);break; - } - }, - ai:{ - order:9.1, - result:{ - player:1 - } - } - }, - zhanyi_basic:{ - group:['zhanyi_basic_sha','zhanyi_basic_jiu','zhanyi_basic_tao'] - }, - zhanyi_basic_tao:{ - enable:'chooseToUse', - filterCard:{type:'basic'}, - viewAs:{name:'tao'}, - viewAsFilter:function(player){ - if(!player.countCards('h',{type:'basic'})) return false; - }, - prompt:'将一张基本牌当桃使用', - check:function(card){ - return 8-get.value(card); - }, - ai:{ - skillTagFilter:function(player){ - if(!player.countCards('h',{type:'basic'})) return false; - }, - save:true, - } - }, - zhanyi_basic_sha:{ - enable:'chooseToUse', - filterCard:{type:'basic'}, - viewAs:{name:'sha'}, - viewAsFilter:function(player){ - if(!player.countCards('h',{type:'basic'})) return false; - }, - prompt:'将一张基本牌当杀使用', - check:function(card){return 4-get.value(card)}, - ai:{ - skillTagFilter:function(player){ - if(!player.countCards('h',{type:'basic'})) return false; - }, - respondSha:true, - } - }, - zhanyi_basic_jiu:{ - enable:'chooseToUse', - filterCard:{type:'basic'}, - viewAs:{name:'jiu'}, - viewAsFilter:function(player){ - if(!player.countCards('h',{type:'basic'})) return false; - }, - prompt:'将一张基本牌当酒使用', - check:function(card){ - if(_status.event.type=='dying') return 1; - return 4-get.value(card); - }, - ai:{ - skillTagFilter:function(player){ - return player.countCards('h',{type:'basic'})>0&&player.hp<=0; - }, - save:true, - } - }, - zhanyi_equip:{ - trigger:{player:'shaBegin'}, - forced:true, - filter:function(event,player){ - return event.target.countCards('he')>0; - }, - check:function(event,player){ - return get.attitude(player,event.target)<0; - }, - content:function(){ - trigger.target.chooseToDiscard('he',true,2); - } - }, - zhanyi_trick:{ - mod:{ - targetInRange:function(){ - return true; - } - } - }, - shichou:{ - //audio:1, - skillAnimation:true, - animationColor:'orange', - unique:true, - limited:true, - mark:false, - trigger:{player:'phaseZhunbeiBegin'}, - zhuSkill:true, - direct:true, - filter:function(event,player){ - if(!player.hasZhuSkill('shichou'))return false; - if(player.countCards('he')<2) return false; - return !player.storage.shichou; - }, - init:function(player){ - if(player.hasZhuSkill('shichou')){ - player.markSkill('shichou'); - player.storage.shichou=false; - } - }, - content:function(){ - "step 0" - player.chooseCardTarget({ - prompt:get.prompt2('shichou'), - selectCard:2, - filterTarget:function(card,player,target){ - return target.group=='shu'&&target!=player; - }, - filterCard:true, - position:'he', - ai1:function(card){ - return 7-get.value(card); - }, - ai2:function(target){ - var player=_status.event.player; - if(player.hasUnknown()) return 0; - var att=get.attitude(player,target); - if(att<=0){ - if(target.hp==1) return (10-att)/2; - return 10-att; - } - else{ - if(target.hp==1) return 0; - return (10-att)/4; - } - }, - }); - "step 1" - if(!result.bool) return; - var target=result.targets[0]; - var cards=result.cards; - player.storage.shichou=true; - player.logSkill('shichou',target); - player.awakenSkill('shichou'); - target.gain(cards,player,'giveAuto'); - player.storage.shichou_target=target; - player.addSkill('shichou2'); - target.markSkillCharacter('shichou',player,'誓仇','代替'+get.translation(player)+'承受伤害直到首次进入濒死状态'); - }, - intro:{ - content:'limited' - }, - }, - shichou2:{ - group:'shichou3', - trigger:{player:'damageBegin3'}, - forced:true, - popup:false, - content:function(){ - trigger.player=player.storage.shichou_target; - trigger.shichou4=true; - trigger.player.addSkill('shichou4'); - player.logSkill('shichou2',player.storage.shichou_target); - game.delay(0.5); - }, - ai:{ - effect:{ - target:function(card,player,target,current){ - if(get.tag(card,'damage')){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; - if(get.attitude(player,target)>0) return [0,0]; - var eff=get.damageEffect(target.storage.shichou_target,player,target); - if(eff>0){ - return [0,1]; - } - else if(eff<0){ - return [0,-2]; - } - else{ - return [0,0]; - } - } - } - } - } - }, - shichou3:{ - trigger:{global:['dying','dieBegin']}, - forced:true, - popup:false, - //priority:10, - filter:function(event,player){ - return event.player==player.storage.shichou_target; - }, - content:function(){ - trigger.player.unmarkSkill('shichou'); - delete player.storage.shichou_target; - player.removeSkill('shichou2'); - } - }, - shichou4:{ - trigger:{player:['damageAfter','damageCancelled']}, - forced:true, - popup:false, - audio:false, - content:function(){ - if(!trigger.shichou4) return; - if(event.triggername=='damageAfter'&&trigger.num){ - player.draw(trigger.num); - } - player.removeSkill('shichou4'); - } - }, - zhaolie:{ - trigger:{player:'phaseDrawBegin2'}, - direct:true, - filter:function(event,player){ - return !event.numFixed; - }, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('zhaolie'),function(card,player,target){ - return target!=player&&player.inRange(target); - }).set('ai',function(target){ - var player=_status.event.player; - if(get.attitude(player,target)>0) return 0; - return get.damageEffect(target,player,player); - }); - 'step 1' - if(result.bool){ - trigger.num--; - player.storage.zhaolie=result.targets[0]; - player.logSkill('zhaolie',result.targets); - player.addTempSkill('zhaolie2','phaseDrawAfter'); - } - } - }, - zhaolie2:{ - trigger:{player:'phaseDrawEnd'}, - forced:true, - popup:false, - content:function(){ - 'step 0' - event.cards=get.cards(3); - player.showCards(event.cards); - 'step 1' - event.basic=[]; - event.nonbasic=[]; - event.todis=[]; - for(var i=0;i1?0:7-get.value(card); - case 2:return 8-get.value(card); - case 3:return 10-get.value(card); - default:return 0; - } - }).set('num',num); - } - 'step 2' - var num=event.nonbasic.length; - var undone=false; - if(num==0){ - if(event.basic.length){ - result.targets[0].gain(event.basic,'gain2','log'); - } - } - else{ - if(result.bool){ - if(event.basic.length){ - player.gain(event.basic,'gain2','log'); - } - } - else{ - player.storage.zhaolie.damage(num); - if(event.basic.length){ - undone=true; - } - } - } - if(!undone){ - delete player.storage.zhaolie; - event.finish(); - } - 'step 3' - if(player.storage.zhaolie.isAlive()){ - player.storage.zhaolie.gain(event.basic,'gain2','log'); - } - else{ - game.cardsDiscard(event.basic); - } - delete player.storage.zhaolie; - } - }, - dingpan:{ - enable:'phaseUse', - filter:function(event,player){ - var num; - var mode=get.mode(); - if(mode=='identity'){ - if(_status.mode=='purple') num=player.getEnemies().length; - else num=get.population('fan'); - } - else if(mode=='versus'){ - num=player.getEnemies().length; - } - else{ - num=1; - } - if((player.getStat().skill.dingpan||0)>=num) return false; - return true; - }, - filterTarget:function(card,player,target){ - return target.countCards('e')>0; - }, - content:function(){ - 'step 0' - target.draw(); - 'step 1' - var goon=get.damageEffect(target,player,target)>=0; - if(!goon&&target.hp>=4&&get.attitude(player,target)<0){ - var es=target.getCards('e'); - for(var i=0;i=8){ - goon=true;break; - } - } - } - target.chooseControl(function(){ - if(_status.event.goon) return '选项二'; - return '选项一'; - }).set('goon',goon).set('prompt','定叛').set('choiceList',['令'+get.translation(player)+'弃置你装备区里的一张牌','获得你装备区内的所有牌并受到一点伤害']); - 'step 2' - if(result.control=='选项一'){ - player.discardPlayerCard(target,true,'e'); - event.finish(); - } - else{ - target.gain(target.getCards('e'),'gain2'); - } - 'step 3' - game.delay(0.5); - target.damage(); - }, - ai:{ - order:7, - result:{ - target:function(player,target){ - if(get.damageEffect(target,player,target)>=0) return 2; - var att=get.attitude(player,target); - if(att==0) return 0; - var es=target.getCards('e'); - if(att>0&&(target.countCards('h')>2||target.needsToDiscard(1))) return 0; - if(es.length==1&&att>0) return 0; - for(var i=0;i0){ - return 1; - } - } - else if(val>=7){ - if(att<0){ - return -1; - } - } - } - return 0; - } - } - } - }, - hongde:{ - audio:2, - trigger:{player:['gainAfter','loseAfter']}, - direct:true, - filter:function(event,player){ - if(event.name=='lose'&&event.type=='gain'&&event.getParent().player==player) return false; - if(event.name=='gain') return event.cards&&event.cards.length>1; - return event.cards2&&event.cards2.length>1; - }, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt('hongde'),'令一名其他角色摸一张牌',function(card,player,target){ - return target!=player; - }).set('ai',function(target){ - return get.attitude(player,target); - }); - 'step 1' - if(result.bool){ - player.logSkill('hongde',result.targets); - result.targets[0].draw(); - } - } - }, - ziyuan:{ - audio:2, - enable:'phaseUse', - usable:1, - filterCard:function(card){ - var num=0; - for(var i=0;i0); - })){ - return 10; - } - return 1; - }, - result:{ - player:function(player,target){ - if(get.attitude(player,target)<0) return -1; - var eff=get.recoverEffect(target,player,player); - if(eff<0) return 0; - if(eff>0){ - if(target.hp==1) return 3; - return 2; - } - if(player.needsToDiscard()) return 1; - return 0; - } - }, - threaten:1.3 - } - }, - jugu:{ - audio:2, - mod:{ - maxHandcard:function(player,num){ - return num+player.maxHp; - } - }, - trigger:{global:'gameDrawAfter',player:'enterGame'}, - forced:true, - content:function(){ - player.draw(player.maxHp); - } - }, - tuifeng:{ - audio:2, - trigger:{player:'damageEnd'}, - direct:true, - notemp:true, - filter:function(event,player){ - return player.countCards('he')>0; - }, - init:function(player){ - if(!player.storage.tuifeng) player.storage.tuifeng=[]; - }, - content:function(){ - 'step 0' - player.chooseCard(get.prompt2('tuifeng'),'he',[1,trigger.num]).set('ai',function(card){ - if(card.name=='du') return 20; - return 7-get.useful(card); - }); - 'step 1' - if(result.bool){ - player.logSkill('tuifeng'); - player.lose(result.cards,ui.special,'toStorage'); - player.$give(result.cards,player,false); - for(var i=0;i0; - }, - content:function(){ - player.draw(2*player.storage.tuifeng.length); - player.addTempSkill('tuifeng3'); - player.storage.tuifeng3=player.storage.tuifeng.length; - player.unmarkSkill('tuifeng'); - } - }, - tuifeng3:{ - mod:{ - cardUsable:function(card,player,num){ - if(card.name=='sha'&&player.storage.tuifeng3) return num+player.storage.tuifeng3; - } - }, - onremove:true - }, - weidi:{ - trigger:{global:['gameStart','zhuUpdate']}, - forced:true, - audio:2, - filter:function(event,player){ - var mode=get.mode(); - return (mode=='identity'||(mode=='versus'&&_status.mode=='four')); - }, - content:function(){ - var list=[]; - var zhu=get.zhu(player); - if(zhu&&zhu!=player&&zhu.skills){ - for(var i=0;i0; - }, - init:function(player){ - player.storage.jianshu=false; - }, - filterTarget:function(card,player,target){ - if(target==player) return false; - if(ui.selected.targets.length){ - return ui.selected.targets[0]!=target&&!ui.selected.targets[0].hasSkillTag('noCompareSource')&&target.countCards('h') - &&!target.hasSkillTag('noCompareTarget'); - } - return true; - }, - filterCard:{color:'black'}, - mark:true, - discard:false, - lose:false, - delay:false, - check:function(card){ - if(_status.event.player.hp==1) return 8-get.value(card); - return 6-get.value(card); - }, - selectTarget:2, - multitarget:true, - content:function(){ - 'step 0' - player.awakenSkill('jianshu'); - player.storage.jianshu=true; - targets[0].gain(cards,player,'give'); - 'step 1' - targets[0].chooseToCompare(targets[1]); - 'step 2' - if(result.bool){ - targets[0].chooseToDiscard('he',2,true); - targets[1].loseHp(); - } - else if(result.tie){ - targets[0].loseHp() - targets[1].loseHp() - } - else{ - targets[1].chooseToDiscard('he',2,true); - targets[0].loseHp(); - } - }, - intro:{ - content:'limited' - }, - ai:{ - expose:0.4, - order:4, - result:{ - target:function(player,target){ - if(player.hasUnknown()) return 0; - if(ui.selected.targets.length) return -1; - return -0.5; - } - } - } - }, - yongdi:{ - audio:2, - unique:true, - limited:true, - trigger:{player:'phaseZhunbeiBegin'}, - animationColor:'thunder', - skillAnimation:'legend', - filter:function(event,player){ - return !player.storage.yongdi; - }, - init:function(player){ - player.storage.yongdi=false; - }, - mark:true, - intro:{ - content:'limited' - }, - direct:true, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('yongdi'),function(card,player,target){ - return (target.sex=='male'||target.name=='key_yuri')&&target!=player; - }).set('ai',function(target){ - if(!_status.event.goon) return 0; - var player=_status.event.player; - var att=get.attitude(player,target); - if(att<=1) return 0; - var mode=get.mode(); - if(mode=='identity'||(mode=='versus'&&_status.mode=='four')){ - if(target.name&&lib.character[target.name]){ - for(var i=0;i0; - }, - multitarget:true, - multiline:true, - content:function(){ - player.chooseToCompare(targets).callback=lib.skill.gushe.callback; - }, - intro:{ - name:'饶舌', - content:'mark' - }, - chat:['粗鄙之语','天地不容','谄谀之臣','皓首匹夫,苍髯老贼','二臣贼子','断脊之犬','我从未见过有如此厚颜无耻之人!'], - callback:function(){ - 'step 0' - if(event.num1<=event.num2){ - target.chat(lib.skill.gushe.chat[player.countMark('gushe')]); - game.delay(); - player.addMark('gushe',1); - if(player.countMark('gushe')>=7){ - player.die(); - } - } - 'step 1' - if(event.num1>=event.num2){ - target.chooseToDiscard('he','弃置一张牌,或令'+get.translation(player)+'摸一张牌').set('ai',function(card){ - if(_status.event.goon) return 6-get.value(card); - return 0; - }).set('goon',get.attitude(target,player)<0); - } - else event.goto(3); - 'step 2' - if(!result.bool){ - player.draw(); - } - 'step 3' - if(event.num1<=event.num2){ - player.chooseToDiscard('he','弃置一张牌,或摸一张牌').set('ai',function(){return -1;}); - } - else event.finish(); - 'step 4' - if(!result.bool) player.draw(); - }, - ai:{ - order:7, - result:{ - target:function(player,target){ - var num=ui.selected.targets.length+1; - if(num>3) num=3; - var hs=player.getCards('h'); - for(var i=0;i5&&player.countMark('gushe')+num<=6) return -1; - } - } - } - return 0; - }, - } - } - }, - jici:{ - audio:2, - trigger:{player:'compare'}, - filter:function(event,player){ - return event.getParent().name=='gushe'&&!event.iwhile&&event.num1<=player.countMark('gushe'); - }, - content:function(){ - if(trigger.num10; - }, - filterTarget:function(card,player,target){ - return target!=player&&target.countCards('he')>0; - }, - filterCard:{name:'sha'}, - content:function(){ - 'step 0' - target.chooseToDiscard('he',true); - 'step 1' - if(target.hp>=player.hp&&result.bool&&result.cards[0].name!='sha'){ - player.useCard({name:'juedou',isCard:true},target); - } - }, - ai:{ - order:2, - result:{ - target:function(player,target){ - if(get.effect(target,{name:'juedou'},player,player)<=0){ - return 0; - } - if(target.hpplayer.hp) return -0.1; - return 0; - } - var hs1=target.getCards('h','sha'); - var hs2=player.getCards('h','sha'); - if(hs1.length>hs2.length){ - return 0; - } - var hsx=target.getCards('h'); - if(hsx.length>2&&hs2.length<=1&&hsx[0].number<6){ - return 0; - } - if(hsx.length>3&&hs2.length<=1){ - return 0; - } - if(hs1.length>hs2.length-1&&hs1.length>0&&(hs2.length<=1||hs1[0].number>hs2[0].number)){ - return 0; - } - return -1; - } - } - } - }, - shefu:{ - trigger:{player:'phaseJieshuBegin'}, - direct:true, - audio:2, - init:function(player){ - if(!player.storage.shefu) player.storage.shefu=[]; - if(!player.storage.shefu2) player.storage.shefu2=[]; - }, - filter:function(event,player){ - return player.countCards('h')>0; - }, - intro:{ - content:'cards', - onunmark:function(storage,player){ - if(storage&&storage.length){ - player.$throw(storage,1000); - game.cardsDiscard(storage); - game.log(storage,'被置入了弃牌堆'); - storage.length=0; - } - player.storage.shefu2=[]; - }, - mark:function(dialog,content,player){ - if(content&&content.length){ - dialog.addAuto(content); - if(player.isUnderControl(true)){ - var str=''; - for(var i=0;i'+str+'') - } - } - }, - }, - content:function(){ - 'step 0' - var list1=[],list2=[],list3=[]; - for(var i=0;i=5) return false; - if(nh2>nh2&&event.source.isDead()) return false; - return true; - }, - direct:true, - content:function(){ - "step 0" - var num1=player.countCards('h'); - var num2=trigger.source.countCards('h'); - if(num1>num2){ - var next=player.chooseToDiscard([num2+1,num1],'贲育:是否弃置至少'+(num2+1)+'张手牌,并对'+get.translation(trigger.source)+'造成一点伤害?'); - next.logSkill=['benyu',trigger.source]; - next.set('ai',function(card){ - var trigger=_status.event.getTrigger(); - var player=_status.event.player; - if(ui.selected.cards.length>=_status.event.num){ - return -1; - } - if(get.damageEffect(trigger.source,player,player)>0&&_status.event.num<=2){ - return 8-get.value(card); - } - return -1; - }); - next.set('num',num2+1); - } - else{ - event.draw=true; - event.num=Math.min(num2,5)-num1; - player.chooseBool(get.prompt2('benyu')); - } - "step 1" - if(result.bool){ - if(event.draw){ - player.logSkill('benyu',trigger.source); - player.draw(event.num); - } - else{ - trigger.source.damage(player); - } - } - }, - }, - jili:{ - audio:2, - trigger:{ - global:'useCardToTarget' - }, - forced:true, - check:function(event,player){ - return get.effect(player,event.card,event.player,player)>0; - }, - filter:function(event,player){ - if(get.color(event.card)!='red') return false; - if(!event.targets) return false; - if(event.player==player) return false; - if(event.targets.contains(player)) return false; - if(get.info(event.card).multitarget) return false; - var type=get.type(event.card); - if(type!='basic'&&type!='trick') return false; - if(lib.filter.targetEnabled2(event.card,event.player,player)){ - for(var i=0;i0&&event.player!=player&&!player.hasSkill('zhidao2'); - }, - forced:true, - content:function(){ - var num=0; - if(trigger.player.countCards('h')) num++; - if(trigger.player.countCards('e')) num++; - if(trigger.player.countCards('j')) num++; - if(num){ - player.gainPlayerCard(trigger.player,num,'hej',true).set('filterButton',function(button){ - for(var i=0;i0; - }); - }, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt('qizhi'),'弃置一名角色的一张牌,然后其摸一张牌',function(card,player,target){ - return !_status.event.targets.contains(target)&&target.countCards('he')>0; - }).set('ai',function(target){ - var player=_status.event.player; - if(target==player) return 2; - if(get.attitude(player,target)<=0){ - return 1 - } - return 0.5; - }).set('targets',trigger.targets); - 'step 1' - if(result.bool){ - player.getHistory('custom').push({qizhi:true}); - if(!event.isMine()&&!_status.connectMode) game.delay(); - player.logSkill('qizhi',result.targets); - player.discardPlayerCard(result.targets[0],true,'he'); - event.target=result.targets[0]; - } - else{ - event.finish(); - } - 'step 2' - event.target.draw(); - }, - }, - jinqu:{ - audio:2, - trigger:{player:'phaseJieshuBegin'}, - check:function(event,player){ - return player.getHistory('custom',function(evt){ - return evt.qizhi==true; - }).length>=player.countCards('h'); - }, - prompt:function(event,player){ - var num=player.getHistory('custom',function(evt){ - return evt.qizhi==true; - }).length; - return '进趋:是否摸两张牌并将手牌弃置至'+get.cnNumber(num)+'张?'; - }, - content:function(){ - 'step 0' - player.draw(2); - 'step 1' - var dh=player.countCards('h')-player.getHistory('custom',function(evt){ - return evt.qizhi==true; - }).length; - if(dh>0){ - player.chooseToDiscard(dh,true); - } - } - }, - mouduan:{ - audio:1, - init2:function(player){ - game.broadcastAll(function(player){ - player._mouduan_mark=player.mark('武',{ - content:'拥有技能【激昂】、【谦逊】' - }); - },player); - player.addAdditionalSkill('mouduan',['jiang','qianxun']); - }, - onremove:function(player){ - game.broadcastAll(function(player){ - if(player._mouduan_mark){ - player._mouduan_mark.delete(); - delete player._mouduan_mark; - } - },player); - player.removeAdditionalSkill('mouduan'); - }, - trigger:{player:'loseEnd'}, - forced:true, - filter:function(event,player){ - return player._mouduan_mark&&player._mouduan_mark.name=='武'&&player.countCards('h')<=2; - }, - content:function(){ - game.broadcastAll(function(player){ - if(!player._mouduan_mark) return; - player._mouduan_mark.name='文'; - player._mouduan_mark.skill='文'; - player._mouduan_mark.firstChild.innerHTML='文'; - player._mouduan_mark.info.content='拥有技能【英姿】、【克己】'; - },player); - player.addAdditionalSkill('mouduan',['yingzi','keji']); - }, - group:'mouduan2' - }, - mouduan2:{ - audio:1, - trigger:{global:'phaseZhunbeiBegin'}, - //priority:5, - filter:function(event,player){ - return player._mouduan_mark&&player._mouduan_mark.name=='文'&&player.countCards('h')>2; - }, - direct:true, - content:function(){ - 'step 0' - player.chooseToDiscard('he','谋断:是否弃置一张牌将标记变为“武”?').ai=function(){ - return -1; - } - 'step 1' - if(result.bool&&player.countCards('h')>2){ - game.broadcastAll(function(player){ - if(!player._mouduan_mark) return; - player._mouduan_mark.name='武'; - player._mouduan_mark.skill='武'; - player._mouduan_mark.firstChild.innerHTML='武'; - player._mouduan_mark.info.content='拥有技能【激昂】、【谦逊】'; - },player); - player.addAdditionalSkill('mouduan',['jiang','qianxun']); - } - } - }, - tanhu:{ - audio:1, - 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){ - target.addTempSkill('tanhu2'); - } - }, - ai:{ - result:{ - target:function(player,target){ - var hs=player.getCards('h'); - if(hs.length<3) return 0; - var bool=false; - for(var i=0;i=9&&get.value(hs[i])<7){ - bool=true; - break; - } - } - if(!bool) return 0; - return -1; - } - }, - order:9, - }, - group:'tanhu3' - }, - tanhu2:{ - mark:true, - intro:{ - content:'已成为探虎目标' - } - }, - tanhu3:{ - mod:{ - globalFrom:function(from,to){ - if(to.hasSkill('tanhu2')) return -Infinity; - }, - wuxieRespondable:function(card,player,target){ - if(target&&target.hasSkill('tanhu2')) return false; - } - } - }, - jiaozi:{ - audio:2, - trigger:{player:'damageBegin3',source:'damageBegin1'}, - forced:true, - filter:function(event,player){ - return player.isMaxHandcard(true); - }, - content:function(){ - trigger.num++; - }, - ai:{presha:true}, - }, - jiqiao:{ - audio:2, - trigger:{player:'phaseUseBegin'}, - direct:true, - filter:function(event,player){ - return player.countCards('he',{type:'equip'})>0; - }, - content:function(){ - 'step 0' - player.chooseToDiscard(get.prompt2('jiqiao'),[1,player.countCards('he',{type:'equip'})],'he',function(card){ - return get.type(card)=='equip'; - }).set('ai',function(card){ - if(card.name=='bagua') return 10; - return 7-get.value(card); - }).logSkill='jiqiao'; - 'step 1' - if(result.bool){ - event.cards=get.cards(2*result.cards.length); - player.showCards(event.cards); - } - else{ - event.finish(); - } - 'step 2' - var gained=[]; - var tothrow=[]; - for(var i=0;i=2&&he<=3){ - return '弃牌'; - } - if(player.maxHp-player.hp>=3&&he<=5){ - return '弃牌'; - } - if(player.maxHp-player.hp>3){ - return '弃牌'; - } - return '出杀'; - } - return '出杀'; - }).set('prompt','弃置'+get.translation(trigger.player)+get.cnNumber(player.maxHp-player.hp)+'张牌,或对任意一名角色使用一张杀'); - 'step 1' - if(result.control=='弃牌'){ - player.line(trigger.player,'green'); - if(player.hp1) return false; - if(!event.target) return false; - if(event.target.hp>=player.hp) return false; - - var card=event.card; - if(card.name=='sha') return true; - if(get.color(card)=='black'&&get.type(card,'trick')=='trick') return true; - return false; - }, - content:function(){ - "step 0" - var save=false; - if(get.attitude(player,trigger.target)>2){ - if(trigger.card.name=='sha'){ - if(player.countCards('h','shan')||player.getEquip(2)|| - trigger.target.hp==1||player.hp>trigger.target.hp+1){ - if(!trigger.target.countCards('h','shan')||trigger.target.countCards('h')0; - }, - content:function(){ - 'step 0' - player.chooseToCompare(target).set('preserve','win'); - 'step 1' - if(result.bool&&result.target){ - event.type=true; - event.card=result.target; - player.chooseTarget('将'+get.translation(result.target)+'交给一名角色',function(card,player,target){ - return target.hp<=player.hp; - }).set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(_status.event.du) return -att; - return att; - }).set('du',event.card.name=='du'); - target.addTempSkill('dahe2'); - } - else{ - event.type=false; - if(player.countCards('h')){ - player.showHandcards(); - player.chooseToDiscard('h',true); - } - } - 'step 2' - if(event.type){ - if(result.bool){ - player.line(result.targets,'green'); - result.targets[0].gain(event.card,'gain2'); - } - } - }, - ai:{ - result:{ - target:function(player,target){ - var hs=player.getCards('h'); - if(hs.length<3) return 0; - var bool=false; - for(var i=0;i=9&&get.value(hs[i])<7){ - bool=true; - break; - } - } - if(!bool) return 0; - if(player.canUse('sha',target)&&(player.countCards('h','sha'))){ - return -2; - } - return -0.5; - } - }, - order:9, - } - }, - dahe2:{ - mark:true, - intro:{ - content:'非红桃闪无效' - }, - mod:{ - cardRespondable:function(card,player){ - if(card.name=='shan'&&get.suit(card)!='heart') return false; - }, - cardEnabled:function(card,player){ - if(card.name=='shan'&&get.suit(card)!='heart') return false; - }, - } - }, - xunzhi:{ - audio:2, - trigger:{player:'phaseZhunbeiBegin'}, - init:function(player){ - player.storage.xunzhi=0; - }, - filter:function(event,player){ - var previous=player.getPrevious(); - var next=player.getNext(); - if(previous&&next){ - return player.hp!=previous.hp&&player.hp!=next.hp; - } - return false; - }, - check:function(event,player){ - return player.hp>=3&&player.countCards('h')>player.hp+1+player.storage.xunzhi; - }, - content:function(){ - player.loseHp(); - player.storage.xunzhi+=2; - }, - mark:true, - intro:{ - content:function(storage,player){ - return '手牌上限+'+player.storage.xunzhi; - } - }, - mod:{ - maxHandcard:function(player,num){ - if(typeof player.storage.xunzhi=='number'){ - return num+player.storage.xunzhi; - } - } - } - }, - yawang:{ - audio:2, - trigger:{player:'phaseDrawBegin1'}, - forced:true, - filter:function(event,player){ - return !event.numFixed; - }, - check:function(event,player){ - var num=game.countPlayer(function(target){ - return target.hp==player.hp; - }); - if(!player.hasSkill('xunzhi2')){ - var nh=player.countCards('h'); - if(nh>5) return false; - if(num==3&&nh>3) return false; - } - return num>=3; - }, - content:function(){ - trigger.changeToZero(); - var num=game.countPlayer(function(target){ - return target.hp==player.hp; - }); - if(num){ - player.draw(num); - } - player.storage.yawang=num; - player.addTempSkill('yawang2'); - } - }, - yawang2:{ - mod:{ - cardEnabled:function(card,player){ - if(_status.currentPhase!=player) return; - if(player.countUsed()>=player.storage.yawang) return false; - } - } - }, - junwei:{ - trigger:{player:'phaseJieshuBegin'}, - direct:true, - filter:function(event,player){ - return player.storage.yinling&&player.storage.yinling.length>=3; - }, - content:function(){ - 'step 0' - if(player.storage.yinling.length>3){ - player.chooseButton(3,[get.prompt('junwei'),'hidden',player.storage.yinling]).set('ai',function(button){ - return 1; - }); - } - else{ - player.chooseBool().set('createDialog',[get.prompt('junwei'),'hidden',player.storage.yinling]).set('dialogselectx',true).set('choice',true); - event.cards=player.storage.yinling.slice(0); - } - 'step 1' - if(result.bool){ - player.logSkill('junwei'); - var cards=event.cards||result.links; - for(var i=0;i1) return 1; - if(_status.event.player.hp>=3) return 0; - return 1; - }).set('nshan',nshan); - } - } - else{ - event.finish(); - } - 'step 3' - if(!event.directfalse&&result.bool) game.delay(); - ui.clear(); - 'step 4' - if(!event.directfalse&&result.bool){ - event.cards=result.cards; - event.target.$throw(result.cards); - player.chooseTarget('将'+get.translation(event.cards)+'交给一名角色',true,function(card,player,target){ - return target!=_status.event.getParent().target; - }).set('ai',function(target){ - return get.attitude(_status.event.player,target)/(target.countCards('h','shan')+1); - }); - } - else{ - event.target.loseHp(); - delete event.cards; - } - 'step 5' - if(event.cards){ - player.line(result.targets,'green'); - result.targets[0].gain(event.cards,'gain2'); - game.log(player,'将',event.cards,'交给',result.targets[0]); - event.finish(); - } - else{ - if(event.target.countCards('e')){ - player.choosePlayerCard('e','将'+get.translation(event.target)+'的一张装备牌移出游戏',true,event.target); - } - else{ - event.finish(); - } - } - 'step 6' - if(result.bool){ - var card=result.links[0]; - if(event.target.storage.junwei2){ - event.target.storage.junwei2.push(card); - event.target.markSkill('junwei2'); - } - else{ - event.target.storage.junwei2=[card]; - } - event.target.lose(card,ui.special,'toStorage'); - event.target.addSkill('junwei2'); - event.target.syncStorage('junwei2'); - } - } - }, - junwei2:{ - mark:true, - intro:{ - content:'cards', - onunmark:function(storage,player){ - if(storage&&storage.length){ - player.$throw(storage,1000); - game.cardsDiscard(storage); - game.log(storage,'被置入了弃牌堆'); - storage.length=0; - } - }, - }, - trigger:{player:'phaseJieshuBegin'}, - forced:true, - content:function(){ - 'step 0' - if(player.storage.junwei2.length){ - var card=player.storage.junwei2.shift(); - player.equip(card); - event.redo(); - } - 'step 1' - player.removeSkill('junwei2'); - delete player.storage.junwei2; - } - }, - yinling:{ - enable:'phaseUse', - filterCard:{color:'black'}, - position:'he', - intro:{ - content:'cards', - onunmark:'throw' - }, - filter:function(event,player){ - return player.countCards('he',{color:'black'})>0&&player.storage.yinling.length<4; - }, - filterTarget:function(card,player,target){ - return target.countCards('he')>0&&target!=player; - }, - init:function(player){ - player.storage.yinling=[]; - }, - check:function(card){ - return 6-get.value(card); - }, - content:function(){ - 'step 0' - player.choosePlayerCard('hej',target,true); - 'step 1' - if(result.bool&&result.links&&result.links.length){ - target.$give(result.links,player,false); - target.lose(result.links,ui.special,'toStorage'); - player.storage.yinling.push(result.links[0]); - player.markSkill('yinling'); - player.syncStorage('yinling'); - } - }, - ai:{ - order:10.1, - expose:0.1, - result:{ - target:function(player,target){ - if(target.hasSkill('tuntian')) return 0; - var es=target.getCards('e'); - var nh=target.countCards('h'); - var noe=(es.length==0||target.hasSkillTag('noe')); - var noe2=(es.length==1&&es[0].name=='baiyin'&&target.hp=0){ - return -1.5; - } - return 2; - } - return -1.5; - }, - }, - } - }, - yanxiao:{ - audio:2, - enable:'phaseUse', - filterCard:{suit:'diamond'}, - filterTarget:true, - check:function(card){ - return 7-get.value(card); - }, - position:'he', - filter:function(event,player){ - return player.countCards('he',{suit:'diamond'})>0; - }, - discard:false, - //lose:false, - visible:true, - toStorage:true, - prepare:'give', - content:function(){ - //player.lose(cards,ui.special,'toStorage','visible'); - if(target.hasSkill('yanxiao2')&&target.storage.yanxiao2){ - target.storage.yanxiao2.push(cards[0]); - target.syncStorage('yanxiao2'); - target.markSkill('yanxiao2'); - } - else{ - target.storage.yanxiao2=cards.slice(0); - target.syncStorage('yanxiao2'); - target.addSkill('yanxiao2'); - } - }, - ai:{ - order:8, - result:{ - target:function(player,target){ - if(target.storage.yanxiao2&&target.storage.yanxiao2.length) return 0; - if(target.countCards('j')) return 1; - return 0; - } - } - } - }, - yanxiao2:{ - audio:'yanxiao', - mark:true, - intro:{ - content:'cards', - onunmark:function(storage,player){ - if(storage&&storage.length){ - player.$throw(storage,1000); - game.cardsDiscard(storage); - game.log(storage,'被置入了弃牌堆'); - storage.length=0; - } - }, - }, - trigger:{player:'phaseJudgeBegin'}, - forced:true, - content:function(){ - var cards=player.storage.yanxiao2.concat(player.getCards('j')); - player.gain(cards,'gain2','log','fromStorage'); - delete player.storage.yanxiao2; - player.removeSkill('yanxiao2'); - }, - ai:{ - effect:{ - target:function(card){ - if(get.type(card)=='delay') return [0,0.1]; - } - } - } - }, - anxian:{ - audio:2, - group:['anxian_source','anxian_target'], - subSkill:{ - source:{ - audio:"anxian", - trigger:{source:'damageBegin2'}, - filter:function(event,player){ - return event.card&&event.card.name=='sha'; - }, - check:function(event,player){ - if(get.damageEffect(event.player,player,player)<=0) return true; - return false; - }, - content:function(){ - 'step 0' - if(trigger.player.countCards('h')){ - trigger.player.chooseToDiscard(true); - } - 'step 1' - player.draw(); - trigger.cancel(); - } - }, - target:{ - audio:"anxian", - trigger:{target:'useCardToTargeted'}, - direct:true, - filter:function(event,player){ - return event.card.name=='sha'&&player.countCards('h'); - }, - content:function(){ - "step 0" - var next=player.chooseToDiscard(get.prompt2('anxian')); - next.set('ai',function(card){ - var player=_status.event.player; - var trigger=_status.event.getTrigger(); - if(get.attitude(player,trigger.player)>0){ - return 9-get.value(card); - } - if(player.countCards('h',{name:'shan'})) return -1; - return 7-get.value(card); - }); - next.logSkill='anxian'; - "step 1" - if(result.bool){ - trigger.player.draw(); - trigger.getParent().excluded.push(player); - } - }, - } - } - }, - luoyan_tianxiang:{ - inherit:'tianxiang', - filter:function(event,player){ - if(!player.storage.xingwu||!player.storage.xingwu.length) return false; - if(player.hasSkill('tianxiang')) return false; - return lib.skill.tianxiang.filter(event,player); - }, - }, - luoyan_liuli:{ - inherit:'liuli', - filter:function(event,player){ - if(!player.storage.xingwu||!player.storage.xingwu.length) return false; - if(player.hasSkill('liuli')) return false; - return lib.skill.liuli.filter(event,player); - }, - }, - luoyan:{ - group:['luoyan_tianxiang','luoyan_liuli'], - }, - xingwu:{ - audio:2, - group:['xingwu_color','xingwu_color2'], - subSkill:{ - color:{ - trigger:{player:'phaseZhunbeiBegin'}, - silent:true, - content:function(){ - player.storage.xingwu_color=['black','red']; - } - }, - color2:{ - trigger:{player:'useCard'}, - silent:true, - filter:function(event,player){ - return Array.isArray(player.storage.xingwu_color)&&_status.currentPhase==player; - }, - content:function(){ - player.storage.xingwu_color.remove(get.color(trigger.card)); - } - } - }, - trigger:{player:'phaseDiscardBegin'}, - direct:true, - filter:function(event,player){ - if(!player.storage.xingwu_color) return false; - var length=player.storage.xingwu_color.length; - if(length==0) return false; - var hs=player.getCards('h'); - if(hs.length==0) return false; - if(length==2) return true; - var color=player.storage.xingwu_color[0]; - for(var i=0;i0&& - get.attitude(player,current)<0) - })) return 0; - } - return 7-get.value(card); - }); - 'step 1' - if(result.bool){ - player.logSkill('xingwu'); - if(player.storage.xingwu.length<2){ - player.$give(result.cards,player); - } - player.lose(result.cards,ui.special); - player.storage.xingwu=player.storage.xingwu.concat(result.cards); - player.markSkill('xingwu'); - player.syncStorage('xingwu'); - } - else{ - event.finish(); - } - 'step 2' - if(player.storage.xingwu.length==3){ - player.$throw(player.storage.xingwu); - while(player.storage.xingwu.length){ - player.storage.xingwu.shift().discard(); - } - player.unmarkSkill('xingwu'); - player.chooseTarget(function(card,player,target){ - return target!=player&&target.sex=='male'; - },'对一名男性角色造成两点伤害并弃置其装备区内的牌').set('ai',function(target){ - var player=_status.event.player; - if(get.attitude(player,target)>0) return -1; - return get.damageEffect(target,player,player)+target.countCards('e')/2; - }); - } - else{ - event.finish(); - } - 'step 3' - if(result.bool){ - var target=result.targets[0]; - target.damage(2); - event.target=target; - player.line(target,'green'); - } - else{ - event.finish(); - } - 'step 4' - if(event.target&&event.target.isAlive()){ - var es=event.target.getCards('e'); - if(es.length){ - event.target.discard(es); - } - } - }, - ai:{ - threaten:1.5 - } - }, - yinbing:{ - trigger:{player:'phaseJieshuBegin'}, - direct:true, - audio:2, - init:function(player){ - if(!player.storage.yinbing) player.storage.yinbing=[]; - }, - filter:function(event,player){ - return player.countCards('he',{type:'basic'})0&& - (event.card.name=='sha'||event.card.name=='juedou'); - }, - content:function(){ - 'step 0' - player.chooseCardButton('移去一张引兵牌',true,player.storage.yinbing); - 'step 1' - var card=result.links[0]; - player.storage.yinbing.remove(card); - game.cardsDiscard(card); - player.$throw(card); - game.log(player,'将',card,'置入弃牌堆'); - player.syncStorage('yinbing'); - if(player.storage.yinbing.length==0){ - player.unmarkSkill('yinbing'); - } - } - } - }, - group:'yinbing_discard' - }, - juedi:{ - trigger:{player:'phaseZhunbeiBegin'}, - filter:function(event,player){ - return player.storage.yinbing&&player.storage.yinbing.length>0; - }, - forced:true, - audio:2, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt2('juedi'),true,function(card,player,target){ - return player.hp>=target.hp; - }).set('ai',function(target){ - var player=_status.event.player; - var att=get.attitude(player,target); - if(att<2) return att-10; - var num=att/10; - if(target==player){ - num+=player.maxHp-player.countCards('h')+0.5; - } - else{ - num+=_status.event.n2*2; - if(target.isDamaged()){ - if(target.hp==1){ - num+=3; - } - else if(target.hp==2){ - num+=2; - } - else{ - num+=0.5; - } - } - } - if(target.hasJudge('lebu')){ - num/=2; - } - return num; - }).set('n2',player.storage.yinbing.length); - 'step 1' - if(result.bool){ - player.line(result.targets[0],'green'); - if(result.targets[0]==player){ - player.$throw(player.storage.yinbing,1000); - var num=player.maxHp-player.countCards('h'); - if(num>0) player.draw(num); - game.cardsDiscard(player.storage.yinbing); - player.storage.yinbing=[]; - player.syncStorage('yinbing'); - player.unmarkSkill('yinbing'); - } - else{ - var target=result.targets[0]; - target.recover(); - target.gain(player.storage.yinbing.slice(0),'gain2','log','fromStorage'); - target.draw(player.storage.yinbing.length); - player.storage.yinbing.length=0; - } - player.syncStorage('yinbing'); - player.unmarkSkill('yinbing'); - } - } - }, - meibu:{ - trigger:{global:'phaseUseBegin'}, - filter:function(event,player){ - return event.player!=player&&get.distance(event.player,player,'attack')>1; - }, - logTarget:'player', - check:function(event,player){ - if(get.attitude(player,event.player)>=0) return false; - var e2=player.getEquip(2); - if(e2){ - if(e2.name=='tengjia') return true; - if(e2.name=='bagua') return true; - } - return player.countCards('h','shan')>0; - }, - content:function(){ - var target=trigger.player; - target.addTempSkill('meibu_viewas'); - target.addTempSkill('meibu_range'); - target.storage.meibu=player; - target.markSkillCharacter('meibu',player,'魅步','锦囊牌均视为杀且'+get.translation(player)+'视为在攻击范围内'); - }, - ai:{ - expose:0.2 - }, - subSkill:{ - range:{ - mod:{ - targetInRange:function(card,player,target){ - if(card.name=='sha'&&target==player.storage.meibu){ - return true; - } - } - }, - onremove:function(player){ - game.broadcast(function(player){ - if(player.marks.meibu){ - player.marks.meibu.delete(); - delete player.marks.meibu; - } - },player); - if(player.marks.meibu){ - player.marks.meibu.delete(); - delete player.marks.meibu; - game.addVideo('unmark',player,'meibu'); - } - }, - trigger:{player:'useCard'}, - forced:true, - popup:false, - filter:function(event,player){ - return event.skill=='meibu_viewas' - }, - content:function(){ - player.removeSkill('meibu_viewas'); - game.broadcastAll(function(player){ - if(player.marks.meibu&&player.marks.meibu.info){ - player.marks.meibu.info.content=player.marks.meibu.info.content.slice(8); - } - },player); - } - }, - viewas:{ - mod:{ - cardEnabled:function(card,player){ - if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; - }, - cardUsable:function(card,player){ - if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; - }, - cardRespondable:function(card,player){ - if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; - }, - cardSavable:function(card,player){ - if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; - }, - }, - enable:['chooseToUse','chooseToRespond'], - filterCard:function(card){ - return get.type(card,'trick')=='trick'; - }, - viewAs:{name:'sha'}, - check:function(){return 1}, - ai:{ - effect:{ - target:function(card,player,target,current){ - if(get.tag(card,'respondSha')&¤t<0) return 0.8 - } - }, - respondSha:true, - order:4, - useful:-1, - value:-1 - } - } - } - }, - mumu:{ - enable:'phaseUse', - usable:1, - filterCard:function(card,player,target){ - return card.name=='sha'||(get.type(card,'trick')=='trick'&&get.color(card)=='black'); - }, - check:function(card){ - return 7-get.value(card); - }, - filterTarget:function(card,player,target){ - if(target==player) return false; - return target.getEquip(1)||target.getEquip(2); - }, - content:function(){ - 'step 0' - var e1=target.getEquip(1); - var e2=target.getEquip(2); - event.e1=e1; - event.e2=e2; - if(e1&&e2){ - player.chooseControl('武器牌','防具牌').set('ai',function(){ - if(_status.event.player.getEquip(2)){ - return '武器牌'; - } - return '防具牌'; - }); - } - else if(e1){ - event.choice='武器牌'; - } - else{ - event.choice='防具牌'; - } - 'step 1' - var choice=event.choice||result.control; - if(choice=='武器牌'){ - if(event.e1){ - target.discard(event.e1); - } - player.draw(); - } - else{ - if(event.e2){ - player.equip(event.e2); - target.$give(event.e2,player); - } - } - }, - ai:{ - order:8, - result:{ - target:function(player,target){ - if(target.getEquip(2)&&!player.getEquip(2)){ - return -2; - } - return -1; - } - } - } - }, - fentian:{ - audio:2, - trigger:{player:'phaseJieshuBegin'}, - direct:true, - filter:function(event,player){ - if(player.countCards('h')>=player.hp) return false; - return game.hasPlayer(function(current){ - return player!=current&&player.inRange(current)&¤t.countCards('he'); - }); - }, - intro:{ - content:'cards', - onunmark:function(storage,player){ - if(storage&&storage.length){ - player.$throw(storage,1000); - game.cardsDiscard(storage); - game.log(storage,'被置入了弃牌堆'); - storage.length=0; - } - }, - }, - init:function(player,skill){ - if(!player.storage[skill]) player.storage.fentian=[]; - }, - content:function(){ - 'step 0' - player.chooseTarget('焚天:选择一名攻击范围内的角色,将其一张牌置于你的武将牌上',true,function(card,player,target){ - return player!=target&&player.inRange(target)&&target.countCards('he')>0; - }).set('ai',function(target){ - return -get.attitude(_status.event.player,target) - }); - 'step 1' - if(result.bool){ - player.logSkill('fentian',result.targets); - event.target=result.targets[0]; - player.choosePlayerCard(result.targets[0],'he',true); - } - else{ - event.finish(); - } - 'step 2' - if(result.bool){ - event.target.$give(result.links,player,false); - event.target.lose(result.links,ui.special,'toStorage'); - player.storage.fentian=player.storage.fentian.concat(result.links); - player.syncStorage('fentian'); - player.markSkill('fentian'); - } - 'step 3' - game.delayx(); - }, - mod:{ - attackFrom:function(from,to,distance){ - return distance-from.storage.fentian.length; - } - } - }, - zhiri:{ - trigger:{player:'phaseZhunbeiBegin'}, - forced:true, - unique:true, - juexingji:true, - audio:2, - skillAnimation:true, - animationColor:'fire', - derivation:'xintan', - filter:function(event,player){ - return player.storage.fentian&&player.storage.fentian.length>=3&&!player.storage.zhiri; - }, - content:function(){ - player.loseMaxHp(); - player.addSkill('xintan'); - player.storage.zhiri=true; - player.awakenSkill('zhiri'); - } - }, - xintan:{ - enable:'phaseUse', - usable:1, - audio:2, - unique:true, - filter:function(event,player){ - return player.storage.fentian&&player.storage.fentian.length>=2; - }, - filterTarget:true, - prompt:'移去两张“焚”并令一名角色失去一点体力', - content:function(){ - 'step 0' - player.chooseCardButton(2,'移去两张“焚”并令'+get.translation(target)+'失去一点体力',player.storage.fentian,true); - 'step 1' - if(result.bool){ - player.$throw(result.links); - for(var i=0;iplayer.hp; - }, - content:function(){ - player.storage.danji=true; - player.loseMaxHp(); - player.addSkill('mashu'); - player.addSkill('nuzhan'); - player.awakenSkill('danji'); - } - }, - nuzhan:{ - audio:2, - popup:false, - silent:true, - firstDo:true, - trigger:{player:'useCard1'}, - filter:function(event,player){ - return event.card&&event.card.name=='sha'&&event.addCount!==false&&event.cards&& - event.cards.length==1&&get.type(event.cards[0],'trick')=='trick'; - }, - forced:true, - content:function(){ - trigger.addCount=false; - if(player.stat[player.stat.length-1].card.sha>0){ - player.stat[player.stat.length-1].card.sha--; - } - }, - group:'nuzhan2' - }, - nuzhan2:{ - audio:'nuzhan', - trigger:{player:'useCard1'}, - forced:true, - popup:false, - silent:true, - firstDo:true, - filter:function(event,player){ - return event.card&&event.card.name=='sha'&&event.cards&& - event.cards.length==1&&get.type(event.cards[0])=='equip'; - }, - content:function(){ - trigger.baseDamage++; - } - }, - jieyuan:{ - group:['jieyuan_more','jieyuan_less'], - subSkill:{ - more:{ - audio:true, - trigger:{source:'damageBegin1'}, - direct:true, - filter:function(event,player){ - if(!player.hasSkill('fenxin_nei')){ - if(!player.countCards('h',{color:'black'})) return false; - } - return (event.player.hp>=player.hp||player.hasSkill('fenxin_fan'))&&player!=event.player; - }, - content:function(){ - 'step 0' - var goon=(get.attitude(player,trigger.player)<0); - var next=player.chooseToDiscard(get.prompt('jieyuan',trigger.player)); - if(!player.hasSkill('fenxin_nei')){ - next.set('filterCard',function(card){ - return get.color(card)=='black'; - }); - next.set('prompt2','弃置一张黑色手牌令伤害+1'); - } - else{ - next.set('prompt2','弃置一张手牌令伤害+1'); - } - next.set('ai',function(card){ - if(_status.event.goon){ - return 8-get.value(card); - } - return 0; - }); - next.set('goon',goon); - next.logSkill=['jieyuan_more',trigger.player]; - 'step 1' - if(result.bool){ - trigger.num++; - } - } - }, - less:{ - audio:true, - trigger:{player:'damageBegin2'}, - filter:function(event,player){ - if(!player.hasSkill('fenxin_nei')){ - if(!player.countCards('h',{color:'red'})) return false; - } - return event.source&&(event.source.hp>=player.hp||player.hasSkill('fenxin_zhong'))&&player!=event.source; - }, - direct:true, - content:function(){ - "step 0" - var next=player.chooseToDiscard(get.prompt('jieyuan')); - if(!player.hasSkill('fenxin_nei')){ - next.set('filterCard',function(card){ - return get.color(card)=='red'; - }); - next.set('prompt2','弃置一张红色手牌令伤害-1'); - } - else{ - next.set('prompt2','弃置一张手牌令伤害-1'); - } - next.set('ai',function(card){ - var player=_status.event.player; - if(player.hp==1||_status.event.getTrigger().num>1){ - return 9-get.value(card); - } - if(player.hp==2){ - return 8-get.value(card); - } - return 7-get.value(card); - }); - next.logSkill='jieyuan_less'; - "step 1" - if(result.bool){ - trigger.num--; - } - } - } - }, - ai:{ - expose:0.2, - threaten:1.5 - } - }, - fenxin:{ - mode:['identity'], - available:function(mode){ - if(mode=='identity'&&_status.mode=='purple') return false; - }, - trigger:{global:'dieAfter'}, - filter:function(event,player){ - return ['fan','zhong','nei'].contains(event.player.identity)&&!player.hasSkill('fenxin_'+event.player.identity); - }, - forced:true, - content:function(){ - player.addSkill('fenxin_'+trigger.player.identity); - player.markSkill('fenxin'); - }, - intro:{ - mark:function(dialog,content,player){ - if(player.hasSkill('fenxin_zhong')){ - dialog.addText('你发动“竭缘”减少伤害无体力值限制'); - } - if(player.hasSkill('fenxin_fan')){ - dialog.addText('你发动“竭缘”增加伤害无体力值限制'); - } - if(player.hasSkill('fenxin_nei')){ - dialog.addText('将“竭缘”中的黑色手牌和红色手牌改为一张牌'); - } - } - }, - subSkill:{ - fan:{}, - zhong:{}, - nei:{} - }, - ai:{ - combo:'jieyuan' - } - }, - fenxin_old:{ - mode:['identity'], - trigger:{source:'dieBegin'}, - init:function(player){ - player.storage.fenxin=false; - }, - intro:{ - content:'limited' - }, - skillAnimation:'epic', - animationColor:'fire', - unique:true, - limited:true, - audio:2, - mark:true, - filter:function(event,player){ - if(player.storage.fenxin) return false; - return event.player.identity!='zhu'&&player.identity!='zhu'&& - player.identity!='mingzhong'&&event.player.identity!='mingzhong'; - }, - check:function(event,player){ - if(player.identity==event.player.identity) return Math.random()<0.5; - var stat=get.situation(); - switch(player.identity){ - case 'fan': - if(stat<0) return false; - if(stat==0) return Math.random()<0.6; - return true; - case 'zhong': - if(stat>0) return false; - if(stat==0) return Math.random()<0.6; - return true; - case 'nei': - if(event.player.identity=='fan'&&stat<0) return true; - if(event.player.identity=='zhong'&&stat>0) return true; - if(stat==0) return Math.random()<0.7; - return false; - } - }, - prompt:function(event,player){ - return '焚心:是否与'+get.translation(event.player)+'交换身份?'; - }, - content:function(){ - game.broadcastAll(function(player,target,shown){ - var identity=player.identity; - player.identity=target.identity; - if(shown||player==game.me){ - player.setIdentity(); - } - target.identity=identity; - },player,trigger.player,trigger.player.identityShown); - player.line(trigger.player,'green'); - player.storage.fenxin=true; - player.awakenSkill('fenxin_old'); - } - }, - xisheng:{ - enable:'chooseToUse', - usable:1, - viewAs:{name:'tao'}, - viewAsFilter:function(player){ - return player!=_status.currentPhase&&player.countCards('he')>1; - }, - selectCard:2, - filterCard:true, - position:'he', - ai:{ - save:true, - skillTagFilter:function(){ - return lib.skill.xisheng.viewAsFilter.apply(this,arguments) - }, - }, - }, - shulv:{ - inherit:'zhiheng', - prompt:'弃置一张牌并摸一张牌', - selectCard:1, - filter:function(event,player){ - return player.countCards('h')>player.hp; - }, - }, - xiandeng:{ - mod:{ - cardUsable:function(card,player,num){ - if(card.name=='sha') return num+1; - }, - targetInRange:function(card,player){ - if(card.name=='sha'&&player.countUsed('sha',true)==0) return true; - }, - }, - }, - qingyi:{ - audio:2, - trigger:{player:'phaseJudgeBefore'}, - direct:true, - content:function(){ - "step 0" - var check= player.countCards('h')>2; - player.chooseTarget(get.prompt("qingyi"),"跳过判定阶段和摸牌阶段,视为对一名其他角色使用一张【杀】",function(card,player,target){ - if(player==target) return false; - return player.canUse({name:'sha'},target,false); - }).set('check',check).set('ai',function(target){ - if(!_status.event.check) return 0; - return get.effect(target,{name:'sha'},_status.event.player); - }); - "step 1" - if(result.bool){ - player.logSkill('qingyi',result.targets); - player.useCard({name:'sha',isCard:true},result.targets[0],false); - trigger.cancel(); - player.skip('phaseDraw'); - } - }, - }, - qingyi1:{ - audio:true, - trigger:{player:'phaseZhunbeiBegin'}, - direct:true, - content:function(){ - "step 0" - player.addSkill('qingyi3'); - var check= player.countCards('h')>2; - player.chooseTarget(get.prompt2('qingyi'),function(card,player,target){ - if(player==target) return false; - return player.canUse({name:'sha'},target); - }).ai=function(target){ - if(!check) return 0; - return get.effect(target,{name:'sha'},_status.event.player); - } - "step 1" - if(result.bool){ - player.logSkill('qingyi1',result.targets); - player.useCard({name:'sha',isCard:true},result.targets[0],false); - player.skip('phaseJudge'); - player.skip('phaseDraw'); - } - player.removeSkill('qingyi3'); - } - }, - qingyi2:{ - audio:true, - trigger:{player:'phaseUseBefore'}, - direct:true, - filter:function(event,player){ - return player.countCards('he',{type:'equip'})>0; - }, - content:function(){ - "step 0" - player.addSkill('qingyi3'); - var check=player.countCards('h')<=player.hp; - player.chooseCardTarget({ - prompt:get.prompt2('qingyi'), - filterCard:function(card,player){ - return get.type(card)=='equip'&&lib.filter.cardDiscardable(card,player); - }, - position:'he', - filterTarget:function(card,player,target){ - if(player==target) return false; - return player.canUse({name:'sha'},target); - }, - ai1:function(card){ - if(!_status.event.check) return 0; - return 6-get.value(card); - }, - ai2:function(target){ - if(!_status.event.check) return 0; - return get.effect(target,{name:'sha'},_status.event.player); - }, - check:check - }); - "step 1" - if(result.bool){ - player.logSkill('qingyi2',result.targets); - player.discard(result.cards[0]); - player.useCard({name:'sha',isCard:true},result.targets[0]); - trigger.cancel(); - } - player.removeSkill('qingyi3'); - } - }, - qingyi3:{ - mod:{ - targetInRange:function(card,player,target,now){ - return true; - } - }, - }, - qirang:{ - audio:2, - trigger:{player:'equipEnd'}, - frequent:true, - content:function(){ - player.gain(get.cardPile(function(card){ - return get.type(card,'trick')=='trick'; - }),'gain2'); - }, - ai:{ - effect:{ - target:function(card,player,target,current){ - if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; - } - }, - threaten:1.3 - } - }, - yuhua:{ - trigger:{player:'phaseDiscardBegin'}, - forced:true, - audio:2, - filter:function(event,player){ - return event.parent.name=='phaseDiscard'&&player.countCards('h',{type:'basic'})0){ - var att1=get.attitude(target,player); - var att2=get.attitude(target,trigger.player); - var att3=get.attitude(player,target); - if(att3<0) return 0; - return att1/2+att2+att3; - } - else{ - return 0; - // return get.attitude(player,target); - } - }); - 'step 1' - if(result.bool){ - player.addTempSkill('chenqing2','roundStart'); - event.target=result.targets[0]; - event.target.draw(4); - player.logSkill('chenqing',event.target); - } - else{ - event.finish(); - } - 'step 2' - var target=event.target; - var tosave=trigger.player; - var att=get.attitude(target,tosave); - var hastao=target.countCards('h','tao'); - target.chooseToDiscard(4,true,'he').set('ai',function(card){ - var hastao=_status.event.hastao; - var att=_status.event.att; - if(!hastao&&att>0){ - var suit=get.suit(card); - for(var i=0;i0&&player.countCards('h')>0; - }, - content:function(){ - "step 0" - event.count=2; - event.history=player.getHistory('useCard',function(evt){ - return evt.isPhaseUsing()&&['basic','trick'].contains(get.type(evt.card)); - }) - "step 1" - event._result={}; - if(event.count&&event.history.length&&player.countCards('h')){ - event.count--; - var card=event.history.shift().card; - card={name:card.name,nature:card.nature}; - if(card.name!='jiu'&&lib.filter.cardEnabled(card)){ - if(game.hasPlayer(function(current){ - return player.canUse(card,current); - })){ - lib.skill.mozhix.viewAs=card; - var next=player.chooseToUse(); - if(next.isOnline()){ - player.send(function(card){ - lib.skill.mozhix.viewAs=card; - },card) - } - next.logSkill='mozhi'; - next.set('openskilldialog','默识:将一张手牌当'+get.translation(card)+'使用'); - next.set('norestore',true); - next.set('_backupevent','mozhix'); - next.backup('mozhix'); - } - } - } - "step 2" - if(result&&result.bool) event.goto(1); - }, - }, - mozhix:{ - filterCard:function(card){ - return get.itemtype(card)=='card'; - }, - selectCard:1, - popname:true, - }, - chenqing2:{}, - ranshang:{ - audio:2, - trigger:{player:'damageEnd'}, - filter:function(event,player){ - return event.nature=='fire'; - }, - forced:true, - check:function(){ - return false; - }, - content:function(){ - player.addMark('ranshang',trigger.num); - }, - intro:{ - name2:'燃', - content:'mark' - }, - ai:{ - effect:{ - target:function(card,player,target,current){ - if(card.name=='sha'){ - if(card.nature=='fire'||player.hasSkill('zhuque_skill')) return 2; - } - if(get.tag(card,'fireDamage')&¤t<0) return 2; - } - } - }, - group:'ranshang2' - }, - ranshang2:{ - audio:2, - trigger:{player:'phaseJieshuBegin'}, - forced:true, - filter:function(event,player){ - return player.countMark('ranshang')>0; - }, - content:function(){ - player.loseHp(player.countMark('ranshang')); - } - }, - hanyong:{ - trigger:{player:'useCard'}, - filter:function(event,player){ - return game.roundNumber>player.hp&&event.card&& - (event.card.name=='nanman'||event.card.name=='wanjian'); - }, - content:function(){ - trigger.baseDamage++; - }, - }, - hanyong3:{ - audio:false, - trigger:{source:'damageBegin1'}, - forced:true, - onremove:true, - filter:function(event,player){ - return event.card==player.storage.hanyong3; - }, - content:function(){ - trigger.num++; - } - }, - yishe:{ - audio:2, - trigger:{player:'phaseJieshuBegin'}, - init:function(player){ - if(!player.storage.yishe) player.storage.yishe=[]; - }, - filter:function(event,player){ - return !player.storage.yishe||!player.storage.yishe.length; - }, - intro:{ - content:'cards' - }, - content:function(){ - 'step 0' - player.draw(2); - player.chooseCard(2,'he',true,'选择两张牌作为“米”'); - 'step 1' - player.storage.yishe=result.cards; - player.lose(result.cards,ui.special,'toStorage'); - player.syncStorage('yishe'); - player.markSkill('yishe'); - } - }, - bushi:{ - audio:2, - trigger:{player:'damageEnd',source:'damageEnd'}, - filter:function(event,player){ - if(event._notrigger.contains(event.player)) return false; - return player.storage.yishe&&player.storage.yishe.length&&event.player.isAlive(); - }, - direct:true, - content:function(){ - 'step 0' - event.count=trigger.num; - 'step 1' - trigger.player.chooseCardButton('选择获得一张“米”',player.storage.yishe); - 'step 2' - if(result.bool){ - event.count--; - player.logSkill('bushi'); - trigger.player.gain(result.links[0],'draw2','log','fromStorage'); - player.storage.yishe.remove(result.links[0]); - player.syncStorage('yishe'); - if(player.storage.yishe.length==0){ - player.recover(); - player.unmarkSkill('yishe'); - } - else{ - player.markSkill('yishe'); - if(event.count>0) event.goto(1); - } - } - } - }, - midao:{ - audio:2, - //unique:true, - trigger:{global:'judge'}, - direct:true, - filter:function(event,player){ - return player.storage.yishe&&player.storage.yishe.length&&event.player.isAlive(); - }, - content:function(){ - "step 0" - var list=player.storage.yishe; - player.chooseButton([get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+get.translation(trigger.player.judging[0])+ - ','+get.prompt('midao'),list,'hidden'],function(button){ - var card=button.link; - var trigger=_status.event.getTrigger(); - var player=_status.event.player; - var judging=_status.event.judging; - var result=trigger.judge(card)-trigger.judge(judging); - var attitude=get.attitude(player,trigger.player); - return result*attitude; - }).set('judging',trigger.player.judging[0]).set('filterButton',function(button){ - var player=_status.event.player; - var card=button.link; - var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); - if(mod2!='unchanged') return mod2; - var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); - if(mod!='unchanged') return mod; - return true; - }); - "step 1" - if(result.bool){ - event.forceDie=true; - player.respond(result.links,'midao','highlight','noOrdering'); - result.cards=result.links; - var card=result.cards[0]; - event.card=card; - player.storage.yishe.remove(card); - if(player.storage.yishe.length==0){ - player.unmarkSkill('yishe'); - if(player.hasSkill('yishe')){ - player.logSkill('yishe'); - player.recover(); - } - } - else player.markSkill('yishe'); - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - if(trigger.player.judging[0].clone){ - trigger.player.judging[0].clone.classList.remove('thrownhighlight'); - game.broadcast(function(card){ - if(card.clone){ - card.clone.classList.remove('thrownhighlight'); - } - },trigger.player.judging[0]); - game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); - } - game.cardsDiscard(trigger.player.judging[0]); - trigger.player.judging[0]=result.cards[0]; - trigger.orderingCards.addArray(result.cards); - game.log(trigger.player,'的判定牌改为',card); - game.delay(2); - } - }, - ai:{ - rejudge:true, - tag:{ - rejudge:0.6 - } - } - }, - fengpo:{ - shaRelated:true, - audio:2, - trigger:{ - player:'useCardToPlayered', - }, - filter:function(event,player){ - if(event.targets.length!=1||!['sha','juedou'].contains(event.card.name)) return false; - var evt2=event.getParent('phaseUse'); - if(evt2.player!=player) return false; - return player.getHistory('useCard',function(evt){ - return ['sha','juedou'].contains(evt.card.name)&&evt.getParent('phaseUse')==evt2; - }).indexOf(event.getParent())==0; - }, - direct:true, - content:function(){ - 'step 0' - player.chooseControl('draw_card','加伤害','cancel2').set('prompt',get.prompt2('fengpo')); - 'step 1' - if(result.control&&result.control!='cancel2'){ - player.logSkill('fengpo',trigger.target); - var nd=trigger.target.countCards('h',{suit:'diamond'}); - if(result.control=='draw_card'){ - player.draw(nd); - } - else{ - var trigger2=trigger.getParent(); - if(typeof trigger2.baseDamage!='number'){ - trigger2.baseDamage=1; - } - trigger2.baseDamage+=nd; - } - } - } - }, - fengpo2:{ - trigger:{source:'damageBegin1'}, - filter:function(event){ - return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.notLink(); - }, - forced:true, - audio:false, - content:function(){ - if(typeof player.storage.fengpo=='number'){ - trigger.num+=player.storage.fengpo; - } - } - }, - fengpo3:{}, - biluan:{ - audio:2, - trigger:{player:'phaseDrawBegin1'}, - mark:true, - //unique:true, - intro:{ - content:function(storage){ - if(storage>0){ - return '其他角色计算与你的距离时+'+storage; - } - else if(storage<0){ - return '其他角色计算与你的距离时'+storage; - } - else{ - return '无距离变化'; - } - } - }, - init:function(player){ - if(typeof player.storage.biluan!='number') player.storage.biluan=0; - }, - check:function(event,player){ - if(player.countCards('h')>player.hp) return true; - if(player.hasJudge('lebu')) return true; - var ng=[]; - var players=game.filterPlayer(); - for(var i=0;i1){ - nai++; - } - } - } - return nai>=2; - }, - filter:function(event,player){ - return !event.numFixed&&game.hasPlayer(function(current){ - return current!=player&&get.distance(current,player)<=1; - }); - }, - content:function(){ - var ng=[]; - var players=game.filterPlayer(); - for(var i=0;i1; - }, - forced:true, - content:function(){ - 'step 0' - player.chooseTarget(function(card,player,target){ - return target==player||target==_status.event.source; - },true,'礼下:选择一个目标摸一张牌').set('ai',function(target){ - return player==target?1:0; - }).set('source',trigger.player); - 'step 1' - if(result.targets.length){ - result.targets[0].draw(); - player.line(result.targets[0],'green'); - } - player.storage.biluan--; - player.markSkill('biluan'); - game.addVideo('storage',player,['biluan',player.storage.biluan]); - } - }, - rebiluan2:{ - mark:true, - charlotte:true, - intro:{ - content:function(storage){ - if(storage>0){ - return '其他角色计算与你的距离时+'+storage; - } - else if(storage<0){ - return '其他角色计算与你的距离时'+storage; - } - else{ - return '无距离变化'; - } - } - }, - init:function(player){ - if(typeof player.storage.rebiluan2!='number') player.storage.rebiluan2=0; - }, - mod:{ - globalTo:function(from,to,distance){ - if(typeof to.storage.rebiluan2=='number'){ - return distance+to.storage.rebiluan2; - } - } - } - }, - rebiluan:{ - audio:'biluan', - trigger:{player:'phaseJieshuBegin'}, - checkx:function(player){ - var ng=Math.min(4,game.countPlayer()); - var nai=0; - for(var i=0;i1){ - nai++; - } - } - } - return nai>=2; - }, - filter:function(event,player){ - return player.countCards('he')&&game.hasPlayer(function(current){ - return current!=player&&get.distance(current,player)<=1; - }); - }, - direct:true, - content:function(){ - "step 0" - player.chooseToDiscard('he',get.prompt2('rebiluan')).set('logSkill','rebiluan').set('check',lib.skill.rebiluan.checkx(player)).set('ai',function(card){ - if(_status.event.check) return 6-get.value(card); - return 0; - }); - "step 1" - if(result.bool){ - player.addSkill('rebiluan2'); - var ng=Math.min(4,game.countPlayer()); - player.$damagepop(ng,'unknownx'); - player.storage.rebiluan2+=ng; - player.markSkill('rebiluan2'); - game.addVideo('storage',player,['rebiluan2',player.storage.rebiluan2]); - } - }, - }, - relixia:{ - audio:'lixia', - trigger:{global:'phaseJieshuBegin'}, - filter:function(event,player){ - return event.player.isAlive()&&event.player!=player&&!player.inRangeOf(event.player); - }, - forced:true, - content:function(){ - 'step 0' - if(trigger.player.isDead()){ - event._result={bool:true,links:[0]}; - return; - } - event.videoId=lib.status.videoId++; - var func=function(card,id,bool){ - var list=[ - '令自己摸一张牌', - '令XXX摸两张牌', - '令XXX回复1点体力', - ]; - var choiceList=ui.create.dialog('【礼下】:请选择一至两项','forcebutton'); - choiceList.videoId=id; - for(var i=0;i0&&get.attitude(player,event.player)<0; - }, - prompt:function(event){ - return get.translation(event.source)+'即将对'+get.translation(event.player)+'造成伤害,'+get.prompt('fuji'); - }, - logTarget:'source', - content:function(){ - trigger.source.judge().callback=lib.skill.fuji.callback; - }, - callback:function(){ - var evt=event.getParent(2); - if(event.judgeResult.color=='black'){ - //game.cardsDiscard(card); - evt._trigger.num++; - } - else{ - evt._trigger.source.gain(card,'gain2'); - } - }, - }, - fulu:{ - trigger:{player:'useCard1'}, - filter:function(event,player){ - if(event.card.name=='sha'&&!event.card.nature) return true; - }, - audio:true, - check:function(event,player){ - var eff=0; - for(var i=0;i=0; - }, - content:function(){ - trigger.card.nature='thunder'; - if(get.itemtype(trigger.card)=='card'){ - var next=game.createEvent('fulu_clear'); - next.card=trigger.card; - event.next.remove(next); - trigger.after.push(next); - next.setContent(function(){ - delete card.nature; - }); - } - } - }, - guiming:{ - unique:true, - zhuSkill:true, - }, - canshi:{ - audio:2, - trigger:{player:'phaseDrawBegin1'}, - check:function(event,player){ - var num=game.countPlayer(function(current){ - if(player.hasZhuSkill('guiming')&¤t.group=='wu') return true; - return current.isDamaged(); - }); - return num>3; - }, - prompt:function(event,player){ - var num=game.countPlayer(function(current){ - if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true; - return current.isDamaged(); - }); - return '残蚀:是否改为摸'+get.cnNumber(num)+'张牌?'; - }, - filter:function(event,player){ - return !event.numFixed; - }, - content:function(){ - trigger.changeToZero(); - var num=game.countPlayer(function(current){ - if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true; - return current.isDamaged(); - }); - if(num>0){ - player.draw(num); - } - player.addTempSkill('canshi2'); - } - }, - canshi2:{ - trigger:{player:'useCard'}, - forced:true, - filter:function(event,player){ - if(player.countCards('he')==0) return false; - var type=get.type(event.card,'trick'); - return type=='basic'||type=='trick'; - }, - autodelay:true, - content:function(){ - player.chooseToDiscard(true,'he'); - } - }, - chouhai:{ - audio:2, - trigger:{player:'damageBegin3'}, - forced:true, - check:function(){ - return false; - }, - filter:function(event,player){ - return player.countCards('h')==0; - }, - content:function(){ - trigger.num++; - }, - ai:{ - effect:{ - target:function(card,player,target,current){ - if(get.tag(card,'damage')&&target.countCards('h')==0) return [1,-2]; - } - } - } - }, - recanshi:{ - audio:'canshi', - trigger:{player:'phaseDrawBegin2'}, - check:function(event,player){ - if(player.skipList.contains('phaseUse')||!player.countCards('h',function(card){ - return get.type(card,'trick')=='trick'&&player.hasUseTarget(card); - })) return true; - var num=game.countPlayer(function(current){ - if(player.hasZhuSkill('guiming')&¤t.group=='wu') return true; - return current.isDamaged(); - }); - return num>1; - }, - prompt:function(event,player){ - var num=game.countPlayer(function(current){ - if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true; - return current.isDamaged(); - }); - return '残蚀:是否多摸'+get.cnNumber(num)+'张牌?'; - }, - filter:function(event,player){ - return !event.numFixed&&game.hasPlayer(function(current){ - if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true; - return current.isDamaged(); - }); - }, - content:function(){ - var num=game.countPlayer(function(current){ - if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true; - return current.isDamaged(); - }); - if(num>0){ - trigger.num+=num; - } - player.addTempSkill('recanshi2'); - } - }, - recanshi2:{ - trigger:{player:'useCard'}, - forced:true, - filter:function(event,player){ - if(player.countCards('he')==0) return false; - if(event.card.name=='sha') return true; - var type=get.type(event.card,'trick'); - return type=='trick'; - }, - autodelay:true, - content:function(){ - player.chooseToDiscard(true,'he'); - } - }, - rechouhai:{ - audio:'chouhai', - trigger:{player:'damageBegin3'}, - forced:true, - check:function(){ - return false; - }, - filter:function(event,player){ - return event.card&&event.card.name=='sha'&&player.countCards('h')==0; - }, - content:function(){ - trigger.num++; - }, - ai:{ - effect:{ - target:function(card,player,target,current){ - if(card.name=='sha'&&target.countCards('h')==0) return [1,-2]; - } - } - } - }, - kunfen:{ - audio:2, - trigger:{player:'phaseJieshuBegin'}, - direct:true, - content:function(){ - "step 0" - if(player.storage.kunfen|| - (get.mode()=='guozhan'&&player.hiddenSkills.contains('kunfen'))){ - if(!player.storage.kunfen){ - event.skillHidden=true; - } - player.chooseBool(get.prompt2('kunfen')).set('ai',function(){ - var player=_status.event.player; - if(player.hp>3) return true; - if(player.hp==3&&player.countCards('h')<3) return true; - if(player.hp==2&&player.countCards('h')==0) return true; - return false; - }); - } - else{ - event.forced=true; - } - "step 1" - if(event.forced||result.bool){ - player.logSkill('kunfen'); - player.loseHp(); - } - else{ - event.finish(); - } - "step 2" - player.draw(2); - }, - ai:{ - threaten:1.5 - } - }, - fengliang:{ - skillAnimation:true, - animationColor:'thunder', - unique:true, - juexingji:true, - audio:2, - derivation:'retiaoxin', - trigger:{player:'dying'}, - //priority:10, - forced:true, - filter:function(event,player){ - return !player.storage.kunfen; - }, - content:function(){ - "step 0" - player.loseMaxHp(); - "step 1" - if(player.hp<2){ - player.recover(2-player.hp); - } - "step 2" - player.addSkill('retiaoxin'); - player.storage.kunfen=true; - player.awakenSkill('fengliang'); - }, - }, - zhuiji:{ - mod:{ - globalFrom:function(from,to){ - if(from.hp>=to.hp) return -Infinity; - } - } - }, - oldcihuai:{ - audio:'cihuai', - trigger:{player:'phaseUseBegin'}, - filter:function(event,player){ - return player.countCards('h')>0; - }, - check:function(event,player){ - return !player.countCards('h','sha'); - }, - content:function(){ - player.showHandcards(); - if(!player.countCards('h','sha')) player.addTempSkill('oldcihuai2'); - }, - }, - oldcihuai2:{ - group:'oldcihuai3', - prompt:'视为使用一张杀', - enable:'chooseToUse', - viewAs:{name:'sha',isCard:true}, - filterCard:function(){return false}, - selectCard:-1, - ai:{ - presha:true, - respondSha:true, - }, - }, - oldcihuai3:{ - trigger:{ - player:['gainEnd','loseEnd'], - global:'die', - }, - silent:true, - firstDo:true, - filter:function(event,player){ - if(event.name=='lose') return event.hs.length>0; - return true; - }, - content:function(){ - player.removeSkill('oldcihuai2'); - }, - }, - cihuai:{ - trigger:{player:'phaseUseBegin'}, - direct:true, - filter:function(event,player){ - return player.countCards('h','sha')==0; - }, - content:function(){ - "step 0" - player.chooseTarget(get.prompt2('cihuai'),function(card,player,target){ - return player.canUse({name:'sha',isCard:true},target); - }).set('ai',function(target){ - var player=_status.event.player; - return get.effect(target,{name:'sha',isCard:true},player,player); - }); - "step 1" - if(result.bool){ - player.logSkill('cihuai'); - player.showHandcards(); - player.useCard({name:'sha',isCard:true},result.targets); - } - }, - ai:{ - expose:0.2, - } - }, - jilei:{ - trigger:{player:'damageEnd'}, - //priority:9, - audio:2, - direct:true, - filter:function(event){ - return event&&event.source; - }, - content:function(){ - 'step 0' - player.chooseControl('basic','trick','equip','cancel2',function(){ - var source=_status.event.source; - if(get.attitude(_status.event.player,source)>0) return 'cancel2'; - if(!source.storage.jilei2||!source.storage.jilei2.contains('basic')) return 'basic'; - if(_status.currentPhase!=source) return 'trick'; - if(lib.filter.cardUsable({name:'sha'},source)&&source.countCards('h')>=2) return 'basic'; - return 'trick'; - }).set('prompt',get.prompt2('jilei',trigger.source)).set('source',trigger.source); - 'step 1' - if(result.control!='cancel2'){ - player.logSkill('jilei',trigger.source); - player.popup(get.translation(result.control)+'牌'); - trigger.source.addTempSkill('jilei2',{player:'phaseBegin'}); - trigger.source.storage.jilei2.add(result.control); - trigger.source.updateMarks('jilei2'); - } - }, - ai:{ - maixie_defend:true, - threaten:0.7 - } - }, - jilei2:{ - unique:true, - charlotte:true, - intro:{ - content:function(storage){ - return '不能使用、打出或弃置'+get.translation(storage)+'牌'; - } - }, - init:function(player,skill){ - if(!player.storage[skill]) player.storage[skill]=[]; - }, - mark:true, - onremove:true, - mod:{ - cardDiscardable:function(card,player){ - if(player.storage.jilei2.contains(get.type(card,'trick'))) return false; - }, - cardEnabled:function(card,player){ - if(player.storage.jilei2.contains(get.type(card,'trick'))) return false; - }, - cardUsable:function(card,player){ - if(player.storage.jilei2.contains(get.type(card,'trick'))) return false; - }, - cardRespondable:function(card,player){ - if(player.storage.jilei2.contains(get.type(card,'trick'))) return false; - }, - cardSavable:function(card,player){ - if(player.storage.jilei2.contains(get.type(card,'trick'))) return false; - }, - }, - }, - danlao:{ - audio:2, - filter:function(event,player){ - return (event.card.name=='sha'||get.type(event.card)=='trick')&&event.targets&&event.targets.length>1; - }, - check:function(event,player){ - return event.getParent().excluded.contains(player)||get.tag(event.card,'multineg')||get.effect(player,event.card,event.player,player)<=0; - }, - trigger:{target:'useCardToTargeted'}, - content:function(){ - trigger.getParent().excluded.add(player); - player.draw(); - }, - ai:{ - effect:{ - target:function(card){ - if(get.type(card)!='trick') return; - if(card.name=='tiesuo') return [0,0]; - if(card.name=='yihuajiemu') return [0,1]; - if(get.tag(card,'multineg')) return [0,2]; - } - } - } - }, - taichen:{ - enable:'phaseUse', - usable:1, - filterTarget:function(card,player,target){ - return player.canUse('sha',target); - }, - content:function(){ - "step 0" - player.loseHp(); - "step 1" - player.useCard({name:'sha',isCard:true},target,false); - }, - ai:{ - order:1, - result:{ - target:function(player,target){ - if(player.hp>2&&player.hp>target.hp&&target.countCards('he')<4){ - return get.effect(target,{name:'sha'},player,target); - } - return 0; - } - } - } - }, - xinmanjuan:{ - audio:'manjuan', - forced:true, - priority:15, - trigger:{player:'gainAfter'}, - filter:function(event,player){ - return event.type!='xinmanjuan'; - }, - content:function(){ - "step 0" - player.lose(trigger.cards,ui.discardPile,'visible'); - player.$throw(trigger.cards,1000); - game.log(player,'将',trigger.cards,'置入了弃牌堆') - "step 1" - event.cards=trigger.cards.slice(0); - if(_status.currentPhase!=player) event.finish(); - "step 2" - event.card=event.cards.shift(); - event.togain=[]; - var number=get.number(event.card); - for(var i=0;imaxval){ - maxval=tempval; - } - } - maxval+=cards.length-1; - var next=player.chooseToDiscard('he',{suit:suits}); - next.set('ai',function(card){ - return _status.event.maxval-get.value(card); - }); - next.set('maxval',maxval); - next.set('dialog',[get.prompt(event.name),'hidden',cards]) - next.logSkill=event.name; - event.cards=cards; - } - "step 2" - if(result.bool){ - player.gain(event.cards,'gain2','log'); - } - }, - ai:{ - threaten:1.3 - } - }, - zuixiang:{ - skillAnimation:true, - animationColor:'gray', - audio:true, - unique:true, - mark:true, - trigger:{player:'phaseZhunbeiBegin'}, - //priority:10, - filter:function(event,player){ - if(player.storage.zuixiang) return false; - return true; - }, - check:function(event,player){ - return player.countCards('h')0; - }, - filterCard:{name:'sha'}, - check:function(card){return 6-get.value(card)}, - content:function(){ - 'step 0' - var list=lib.group.slice(0); - list.remove('shen'); - if(player.storage.xiemu2) list.removeArray(player.storage.xiemu2); - var list2=list.slice(0); - list2.sort(function(a,b){ - return lib.skill.xiemu.count(b)-lib.skill.xiemu.count(a); - }); - player.chooseControl(list).set('prompt','请选择一个势力').ai=function(){return list2[0]}; - 'step 1' - player.popup(result.control+2,get.groupnature(result.control)); - game.log(player,'选择了','#g'+get.translation(result.control+2)); - player.addTempSkill('xiemu2',{player:'phaseBegin'}); - player.storage.xiemu2.add(result.control); - player.updateMarks('xiemu2'); - }, - ai:{ - order:1, - result:{player:1}, - }, - count:function(group){ - var player=_status.event.player; - return game.countPlayer(function(current){ - return current!=player&¤t.group==group&&get.attitude(current,player)<0; - }); - }, - }, - xiemu2:{ - onremove:true, - mark:true, - forced:true, - audio:'xiemu', - intro:{ - content:function(storage){ - return '已指定'+get.translation(storage)+'势力'; - }, - }, - trigger:{ - target:'useCardToTargeted' - }, - init:function(player){ - if(!player.storage.xiemu2) player.storage.xiemu2=[]; - }, - filter:function(event,player){ - if(!player.storage.xiemu2) return false; - if(get.color(event.card)!='black') return false; - if(!event.player) return false; - if(event.player==player||!player.storage.xiemu2.contains(event.player.group)) return false; - return true; - }, - content:function(){ - player.draw(2); - }, - }, - oldxiemu:{ - audio:'xiemu', - trigger:{target:'useCardToTargeted'}, - filter:function(event,player){ - if(get.color(event.card)!='black') return false; - if(!event.player) return false; - if(event.player==player) return false; - if(get.mode()!='guozhan') return false; - return player.countCards('h','sha')>0; - }, - direct:true, - content:function(){ - "step 0" - var next=player.chooseToDiscard('协穆:是否弃置一张杀并摸两张牌?',{name:'sha'}); - next.set('ai',function(card){ - return 9-get.value(card); - }); - next.logSkill='xiemu'; - "step 1" - if(result.bool){ - player.draw(2); - } - }, - ai:{ - effect:{ - target:function(card,player,target){ - if(get.color(card)=='black'&&target.countCards('h')>0){ - return [1,0.5]; - } - } - } - } - }, - spmengjin:{ - trigger:{player:'shaBegin'}, - filter:function(event,player){ - return event.target.countCards('he')>0; - }, - direct:true, - content:function(){ - "step 0" - var att=get.attitude(player,trigger.target); - player.choosePlayerCard(get.prompt('spmengjin',trigger.target),'he',trigger.target).ai=function(button){ - var val=get.buttonValue(button); - if(att>0) return -val; - return val; - }; - "step 1" - if(result.bool){ - trigger.target.discard(result.links); - player.logSkill('spmengjin',trigger.target); - trigger.target.addTempSkill('mengjin2','shaAfter'); - } - }, - ai:{ - expose:0.2 - } - }, - fenxun_old:{ - audio:2, - trigger:{player:'shaBefore'}, - direct:true, - filter:function(event,player){ - return event.targets.length==1; - }, - position:'he', - content:function(){ - "step 0" - player.chooseCardTarget({ - filterCard:lib.filter.cardDiscardable, - filterTarget:function(card,player,target){ - var trigger=_status.event.getTrigger(); - return lib.filter.targetEnabled(trigger.card,player,target)&&target!=trigger.targets[0]; - }, - ai1:function(card){ - return 6-get.value(card); - }, - ai2:function(target){ - var trigger=_status.event.getTrigger(); - var player=_status.event.player; - return get.effect(target,trigger.card,player,player); - }, - prompt:get.prompt2('fenxun') - }); - "step 1" - if(result.bool){ - player.discard(result.cards); - trigger.targets.push(result.targets[0]); - player.logSkill('fenxun',result.targets); - } - } - }, - rezhoufu:{ - audio:'zhoufu', - enable:'phaseUse', - usable:1, - filter:function(event,player){ - return player.countCards('he')>0; - }, - filterCard:true, - filterTarget:function(card,player,target){ - return target!=player&&!target.getStorage('rezhoufu2').length; - }, - check:function(card){ - return 6-get.value(card) - }, - position:'he', - discard:false, - toStorage:true, - prepare:'give', - content:function(){ - if(!target.storage.rezhoufu2_markcount) target.storage.rezhoufu2_markcount=0; - target.markAuto('rezhoufu2',cards); - }, - ai:{ - order:1, - result:{ - target:-1, - }, - }, - group:['rezhoufu_judge','rezhoufu_losehp'], - subSkill:{ - judge:{ - audio:'zhoufu', - trigger:{global:'judgeBefore'}, - forced:true, - filter:function(event,player){ - return !event.directresult&&event.player.getStorage('rezhoufu2').length; - }, - logTarget:'player', - content:function(){ - var cards=[trigger.player.getStorage('rezhoufu2')[0]]; - trigger.directresult=cards[0]; - trigger.player.unmarkAuto('rezhoufu2',cards); - }, - }, - losehp:{ - audio:'zhoufu', - trigger:{global:'phaseEnd'}, - forced:true, - filter:function(event,player){ - return event.player.hasSkill('rezhoufu3')&&event.player.isAlive(); - }, - logTarget:'player', - content:function(){ - trigger.player.loseHp(); - }, - }, - }, - }, - rezhoufu2:{ - intro:{ - content:'cards', - onunmark:function(storage,player){ - if(storage&&storage.length){ - player.$throw(storage,1000); - game.cardsDiscard(storage); - game.log(storage,'被置入了弃牌堆'); - storage.length==0; - } - player.addTempSkill('rezhoufu3'); - delete player.storage.rezhoufu2_markcount; - }, - }, - }, - rezhoufu3:{}, - reyingbing:{ - audio:'yingbin', - trigger:{global:'useCard'}, - forced:true, - filter:function(event,player){ - var cards=event.player.getStorage('rezhoufu2'); - return cards.length&&get.color(cards[0])==get.color(event.card); - }, - logTarget:'player', - content:function(){ - 'step 0' - player.draw(); - 'step 1' - trigger.player.storage.rezhoufu2_markcount++; - if(trigger.player.storage.rezhoufu2_markcount>=2){ - var cards=trigger.player.getStorage('rezhoufu2'); - trigger.player.$throw(cards); - game.delayx(); - player.gain(cards,'gain2','log'); - cards.length=0; - trigger.player.unmarkSkill('rezhoufu2'); - } - else trigger.player.markSkill('rezhoufu2'); - }, - }, - zhoufu:{ - audio:2, - enable:'phaseUse', - usable:1, - filterCard:true, - filterTarget:function(card,player,target){ - return player!=target&&!target.hasSkill('zhoufu2'); - }, - prepare:'throw', - discard:false, - //lose:false, - visible:true, - toStorage:true, - content:function(){ - //player.lose(cards,ui.special,'toStorage'); - target.$gain2(cards); - target.storage.zhoufu2=cards[0]; - target.addSkill('zhoufu2'); - target.storage.zhoufu3=player; - //ui.special.appendChild(cards[0]); - target.syncStorage('zhoufu2'); - }, - check:function(card){ - return 6-get.value(card) - }, - ai:{ - expose:0.1, - order:1, - result:{ - target:-1 - } - } - }, - zhoufu2:{ - trigger:{player:'judgeBefore'}, - forced:true, - //priority:10, - mark:'card', - filter:function(event){ - return !event.directresult; - }, - content:function(){ - "step 0" - trigger.directresult=player.storage.zhoufu2; - delete player.storage.zhoufu2; - player.removeSkill('zhoufu2'); - delete player.storage.zhoufu2_markcount; - if(player.storage.zhoufu3.isIn()){ - player.storage.zhoufu3.line(player,'green'); - } - "step 1" - player.addTempSkill('zhoufu3'); - }, - intro:{ - content:'card', - onunmark:function(storage,player){ - if(storage){ - player.$throw(storage,1000); - game.cardsDiscard(storage); - game.log(storage,'被置入了弃牌堆'); - } - delete player.storage.zhoufu2; - }, - } - }, - zhoufu3:{ - trigger:{global:'phaseEnd'}, - silent:true, - content:function(){ - if(player.storage.zhoufu3.isIn()){ - player.storage.zhoufu3.logSkill('zhoufu',player); - player.loseHp(); - } - delete player.storage.zhoufu3; - }, - onremove:true - }, - yingbin:{ - audio:2, - trigger:{global:'useCard'}, - filter:function(event,player){ - return event.player.hasSkill('zhoufu2')&&event.player.storage.zhoufu3==player&& - get.suit(event.player.storage.zhoufu2)==get.suit(event.card); - }, - forced:true, - autodelay:true, - content:function(){ - player.draw(); - if(trigger.player.storage.zhoufu2_markcount==1){ - trigger.player.removeSkill('zhoufu2'); - delete trigger.player.storage.zhoufu2; - delete trigger.player.storage.zhoufu2_markcount; - delete trigger.player.storage.zhoufu3; - } - else{ - trigger.player.storage.zhoufu2_markcount=1; - trigger.player.updateMarks(); - } - } - }, - kuiwei:{ - audio:2, - trigger:{player:'phaseJieshuBegin'}, - check:function(event,player){ - if(player.isTurnedOver()) return true; - var num=game.countPlayer(function(current){ - return current.getEquip(1); - }); - return num>1; - }, - content:function(){ - "step 0" - player.turnOver(); - "step 1" - var num=game.countPlayer(function(current){ - return current.getEquip(1); - }); - player.draw(2+num); - player.addSkill('kuiwei2'); - }, - ai:{ - effect:{ - target:function(card){ - if(card.name=='guiyoujie') return [0,2]; - } - } - } - }, - kuiwei2:{ - trigger:{player:'phaseDrawBegin'}, - forced:true, - audio:false, - content:function(){ - var num=game.countPlayer(function(current){ - return current.getEquip(1); - }); - if(num>=player.countCards('he')){ - player.discard(player.getCards('he')); - } - else if(num){ - player.chooseToDiscard('he',num,true); - } - player.removeSkill('kuiwei2'); - } - }, - yanzheng:{ - enable:'chooseToUse', - audio:2, - filter:function(event,player){ - return player.hp0; - }, - viewAsFilter:function(player){ - return player.hp0; - }, - filterCard:true, - position:'e', - viewAs:{name:'wuxie'}, - prompt:'将一张装备区内的牌当无懈可击使用', - check:function(card){return 8-get.equipValue(card)}, - threaten:1.2 - }, - tongji:{ - global:'tongji_disable', - audio:2, - trigger:{global:"useCard1"}, - forced:true, - filter:function (event,player){ - return event.targets.contains(player)&&player!=event.player&&event.card.name=='sha'&&player.hp=0; - }, - content:function(){ - "step 0" - player.draw(); - if(trigger.target!=player){ - player.chooseCard(true,'he','交给'+get.translation(trigger.target)+'一张牌').set('ai',function(card){ - if(get.position(card)=='e') return -1; - if(card.name=='shan') return 1; - if(get.type(card)=='equip') return 0.5; - return 0; - }); - } - else{ - event.finish(); - } - "step 1" - trigger.target.gain(result.cards,player,'give'); - game.delay(); - event.card=result.cards[0]; - "step 2" - if(trigger.target.getCards('h').contains(card)&&get.type(card)=='equip'){ - trigger.target.chooseUseTarget(card); - } - }, - ai:{ - threaten:1.1 - } - }, - liangzhu:{ - audio:2, - trigger:{global:'recoverAfter'}, - direct:true, - filter:function(event,player){ - return event.player.isPhaseUsing(); - }, - content:function(){ - 'step 0' - if(player==trigger.player){ - player.chooseControl('摸一张','摸两张','cancel2',function(){ - return '摸两张'; - }).set('prompt',get.prompt2('liangzhu')); - event.single=true; - } - else{ - player.chooseTarget(get.prompt2('liangzhu'),function(card,player,target){ - return target==_status.event.player||target==_status.event.target; - }).set('target',trigger.player).set('ai',function(target){ - var player=_status.event.player; - if(player==target) return 1; - return get.attitude(player,target)-1.5; - }); - } - 'step 1' - if(event.single){ - if(result.control!='cancel2'){ - player.logSkill('liangzhu',player); - if(result.control=='摸一张'){ - player.draw(); - } - else{ - player.draw(2); - if(!player.storage.liangzhu) player.storage.liangzhu=[]; - player.storage.liangzhu.add(player); - } - } - } - else if(result.bool){ - var target=result.targets[0]; - player.logSkill('liangzhu',target); - if(target==player){ - target.draw(); - } - else{ - target.draw(2); - if(target.storage.liangzhu){ - target.storage.liangzhu.add(player); - } - else{ - target.storage.liangzhu=[player]; - } - } - } - }, - ai:{ - expose:0.1 - } - }, - fanxiang:{ - skillAnimation:true, - animationColor:'fire', - audio:2, - unique:true, - juexingji:true, - forceunique:true, - derivation:'xiaoji', - trigger:{player:'phaseZhunbeiBegin'}, - filter:function(event,player){ - if(player.storage.fanxiang) return false; - return game.hasPlayer(function(current){ - return current.storage.liangzhu&¤t.storage.liangzhu.contains(player)&¤t.isDamaged(); - }); - }, - forced:true, - content:function(){ - player.storage.fanxiang=true; - player.gainMaxHp(); - player.recover(); - player.removeSkill('liangzhu'); - player.addSkill('xiaoji'); - player.awakenSkill('fanxiang'); - }, - }, - mingshi:{ - audio:2, - trigger:{player:'damageBegin3'}, - direct:true, - filter:function(event,player){ - return event.source&&event.source.hp>player.hp; - }, - content:function(){ - "step 0" - var next=player.chooseToDiscard(get.prompt2('mingshi'),{color:'black'}); - next.set('ai',function(card){ - return 9-get.value(card); - }); - next.set('logSkill','mingshi'); - "step 1" - if(result.bool){ - trigger.num--; - } - }, - ai:{ - threaten:0.8 - } - }, - lirang:{ - audio:2, - trigger:{player:'loseAfter'}, - filter:function(event,player){ - if(event.type!='discard') return false; - for(var i=0;i1; - }); - } - player.chooseCardButton(get.prompt('lirang'),event.cards,[1,event.cards.length]).set('ai',function(button){ - if(!_status.event.goon||ui.selected.buttons.length) return 0; - if(button.link.name=='du') return 2; - return 1; - }).set('goon',goon); - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - event.togive=result.links.slice(0); - player.chooseTarget('将'+get.translation(result.links)+'交给一名角色',true,function(card,player,target){ - return target!=player; - }).set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(_status.event.enemy){ - return -att; - } - else{ - if(att>2) return att/Math.sqrt(1+target.countCards('h')); - return att/Math.sqrt(1+target.countCards('h'))/5; - } - }).set('enemy',get.value(event.togive[0],player,'raw')<0); - } - else{ - //game.cardsDiscard(event.cards); - event.finish(); - } - "step 3" - if(result.bool){ - if(!event.logged){ - player.logSkill('lirang',result.targets); - event.logged=true; - } - else player.line(result.targets,'green'); - for(var i=0;i0; - }, - content:function(){ - trigger.target.discardPlayerCard(player,true); - } - }, - shenxian:{ - audio:2, - trigger:{global:'loseAfter'}, - filter:function(event,player){ - if(event.type!='discard'||event.player==player||_status.currentPhase==player) return false; - if(player.hasSkill('shenxian2')) return false; - for(var i=0;iplayer.storage.qiangwu) return num+2; - }, - targetInRange:function(card,player){ - if(_status.currentPhase==player&&card.name=='sha'&&card.numberplayer.storage.qiangwu) return Infinity; - } - }, - trigger:{player:'useCard1'}, - filter:function(event,player){ - if(_status.currentPhase==player&&event.card.name=='sha'&& - event.card.number>player.storage.qiangwu&&event.addCount!==false) return true; - return false; - }, - forced:true, - popup:false, - firstDo:true, - content:function(){ - trigger.addCount=false; - if(player.stat[player.stat.length-1].card.sha>0){ - player.stat[player.stat.length-1].card.sha--; - } - }, - }, - zhendu:{ - audio:2, - trigger:{global:'phaseUseBegin'}, - filter:function(event,player){ - return /*(get.mode()!='guozhan'||event.player!=player)&&*/player.countCards('h')>0; - }, - direct:true, - content:function(){ - "step 0" - var nono=(Math.abs(get.attitude(player,trigger.player))<3); - if(player==trigger.player||get.damageEffect(trigger.player,player,player)<=0){ - nono=true - } - else if(trigger.player.hp>2){ - nono=true; - } - else if(trigger.player.hp>1&&player.countCards('h')<3){ - nono=true; - } - else if(trigger.player.canUse('sha',player)&&!player.countCards('h','shan')&&trigger.player.countCards('h')>=3){ - nono=true; - } - var next=player.chooseToDiscard(get.prompt2('zhendu',trigger.player)); - next.set('ai',function(card){ - if(_status.event.nono) return -1; - return 7-get.useful(card); - }); - next.set('logSkill',['zhendu',trigger.player]); - next.set('nono',nono); - "step 1" - if(result.bool){ - trigger.player.chooseUseTarget({name:'jiu'},true,'noTargetDelay','nodelayx'); - } - else{ - event.finish(); - } - "step 2" - if(result.bool&&trigger.player!=player) trigger.player.damage(); - }, - ai:{ - threaten:2, - expose:0.3 - } - }, - qiluan:{ - audio:'qiluan2', - //group:'qiluan_draw', - //subfrequent:['draw'], - trigger:{global:'phaseEnd'}, - frequent:true, - filter:function(event,player){ - return game.hasPlayer2(function(current){ - return current.getStat('kill')>0 - }); - }, - prompt:function(event,player){ - var num=game.countPlayer2(function(current){ - return (current.getStat('kill')||0)*(current==player?3:1); - }); - return get.prompt('qiluan')+'(可摸'+get.cnNumber(num)+'张牌)'; - }, - content:function(){ - //if(get.mode()=='guozhan'){ - // player.draw(3); - //} - //else{ - player.draw(game.countPlayer2(function(current){ - return (current.getStat('kill')||0)*(current==player?3:1); - })); - //} - }, - subSkill:{ - draw:{ - trigger:{global:'dieAfter'}, - frequent:true, - filter:function(event,player){ - return /*get.mode()!='guozhan'&&*/player!=event.source; - }, - content:function(){player.draw()}, - }, - }, - }, - qiluan2:{ - audio:2, - }, - zniaoxiang:{ - shaRelated:true, - audio:2, - trigger:{player:'useCardToPlayered'}, - forced:true, - filter:function(event,player){ - return event.card.name=='sha'&&!event.getParent().directHit.contains(event.target); - }, - //priority:-1, - logTarget:'target', - content:function(){ - var id=trigger.target.playerid; - var map=trigger.getParent().customArgs; - if(!map[id]) map[id]={}; - if(typeof map[id].shanRequired=='number'){ - map[id].shanRequired++; - } - else{ - map[id].shanRequired=2; - } - } - }, - shangyi:{ - audio:2, - enable:'phaseUse', - usable:1, - filterTarget:function(card,player,target){ - return player!=target&&target.countCards('h'); - }, - content:function(){ - "step 0" - player.chooseCardButton(target,target.getCards('h')).set('filterButton',function(button){ - return get.color(button.link)=='black'; - }); - "step 1" - if(result.bool){ - target.discard(result.links[0]); - } - }, - ai:{ - order:11, - result:{ - target:function(player,target){ - return -target.countCards('h'); - } - }, - threaten:1.1 - }, - }, - shengxi:{ - trigger:{player:'phaseDiscardBegin'}, - frequent:true, - filter:function(event,player){ - return !player.getStat('damage'); - }, - content:function(){ - player.draw(2); - }, - audio:2, - audioname:['liushan'] - }, - shoucheng:{ - trigger:{global:'loseAfter'}, - audio:2, - check:function(event,player){ - return get.attitude(player,event.player)>0; - }, - filter:function(event,player){ - if(event.player==player||event.player.isDead()||event.player.countCards('h')) return false; - if(_status.currentPhase==event.player) return false; - return event.hs&&event.hs.length>0; - }, - logTarget:'player', - content:function(){ - trigger.player.draw(); - }, - ai:{ - threaten:1.3, - expose:0.2, - noh:true, - } - }, - hengzheng:{ - audio:2, - trigger:{player:'phaseDrawBegin1'}, - filter:function(event,player){ - return !event.numFixed&&(player.hp==1||player.countCards('h')==0); - }, - check:function(event,player){ - var num=game.countPlayer(function(current){ - if(current.countCards('he')&¤t!=player&&get.attitude(player,current)<=0){ - return true; - } - if(current.countCards('j')&¤t!=player&&get.attitude(player,current)>0){ - return true; - } - }); - return num>=2; - }, - content:function(){ - "step 0" - var targets=game.filterPlayer(); - targets.remove(player); - targets.sort(lib.sort.seat); - event.targets=targets; - event.num=0; - trigger.changeToZero(); - player.line(targets,'green'); - "step 1" - if(num【勇决】
    每当其他角色于回合内使用一张杀,若目标不是你,你可以获得之,每回合限一次
    '); - "step 1" - player.turnOver(); - }, - intro:{ - content:'limited' - }, - ai:{ - order:4, - result:{ - target:function(player,target){ - if(target.isMin()) return 0; - if(player.hp>1){ - if(game.phaseNumber2) return 0; - if(get.attitude(player,target)<5) return 0; - } - if(get.attitude(player,target)<5) return 0; - if(target.hp==1&&target.maxHp>2) return 0.2; - if(target==game.me) return 1.2; - return 1; - } - }, - expose:0.5, - threaten:1.5 - } - }, - fenming:{ - audio:2, - trigger:{player:'phaseJieshuBegin'}, - check:function(event,player){ - var num=game.countPlayer(function(current){ - if(current.isLinked()&¤t.countCards('he')){ - return get.attitude(player,current); - } - }); - return num<0; - }, - filter:function(event,player){ - return player.isLinked(); - }, - content:function(){ - "step 0" - event.targets=game.filterPlayer(function(current){ - if(current.isLinked()&¤t.countCards('he')){ - return true; - } - }); - event.num=0; - event.targets.sort(lib.sort.seat); - "step 1" - if(event.num=0); - trigger.player.chooseToDiscard('he','弃置一张装备牌并令'+get.translation(player)+'摸一张牌,或受到一点伤害',{type:'equip'}).set('ai',function(card){ - if(_status.event.nono){ - return 0; - } - if(_status.event.player.hp==1) return 10-get.value(card); - return 9-get.value(card); - }).set('nono',nono); - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - player.draw(); - } - else{ - trigger.player.damage(); - } - }, - ai:{ - expose:0.3, - threaten:1.3 - } - }, - suishi:{ - audio:2, - trigger:{global:'dying'}, - forced:true, - popup:false, - //priority:12, - check:function(){ - return false; - }, - filter:function(event,player){ - return event.player!=player&&event.parent.name=='damage'&&event.parent.source&&event.parent.source!=event.player; - }, - content:function(){ - 'step 0' - var str; - if(trigger.parent.source==player){ - str='随势:是否摸一张牌?'; - } - else{ - str='随势:是否令'+get.translation(player)+'摸一张牌?' - } - trigger.parent.source.chooseBool(str).set('ai',function(){ - return get.attitude(_status.event.player,_status.event.target)>0; - }).set('target',player); - 'step 1' - if(result.bool){ - player.logSkill('suishi'); - trigger.parent.source.line(player,'green'); - player.draw(); - } - }, - group:'suishi2' - }, - suishi2:{ - trigger:{global:'dieAfter'}, - forced:true, - popup:false, - check:function(){ - return false; - }, - filter:function(event,player){ - return event.player!=player&&event.source&&event.source!=player&&event.source!=event.player; - }, - content:function(){ - 'step 0' - var str; - if(trigger.source==player){ - str='随势:是否流失一点体力?'; - } - else{ - str='随势:是否令'+get.translation(player)+'流失一点体力?' - } - trigger.source.chooseBool(str).set('ai',function(){ - return get.attitude(_status.event.player,_status.event.target)<0; - }).set('target',player); - 'step 1' - if(result.bool){ - player.logSkill('suishi'); - trigger.source.line(player,'green'); - player.loseHp(); - } - }, - }, - sijian:{ - trigger:{player:'loseAfter'}, - direct:true, - audio:2, - filter:function(event,player){ - if(player.countCards('h')) return false; - return event.hs&&event.hs.length>0; - }, - content:function(){ - "step 0" - player.chooseTarget(get.prompt('sijian'),'弃置一名其他角色的一张牌',function(card,player,target){ - return player!=target&&target.countCards('he')>0; - }).set('ai',function(target){ - return -get.attitude(_status.event.player,target); - }); - "step 1" - if(result.bool){ - player.logSkill('sijian',result.targets); - event.target=result.targets[0]; - player.discardPlayerCard(event.target,true); - } - else{ - event.finish(); - } - }, - ai:{ - expose:0.2, - } - }, - quji:{ - audio:2, - enable:'phaseUse', - usable:1, - position:'he', - filterCard:true, - selectCard:function(){ - var player=_status.event.player; - return player.getDamagedHp(); - }, - filterTarget:function(card,player,target){ - return target.hp-1; - if(num==2) return att>0; - return att>1; - } - return false; - }, - content:function(){ - "step 0" - event.target=player; - event.player=trigger.player; - event.player.chooseBool('是否对'+get.translation(event.target)+'发动【郡兵】?',event.player==event.target?'摸一张牌':'摸一张牌,将所有手牌交给该角色,然后该角色交给你等量的手牌').set('choice',lib.skill.junbing.checkx(event.target,event.player)); - "step 1" - if(!result.bool){event.finish();return} - target.logSkill('junbing',player); - if(player==target) event.finish(); - player.draw(); - "step 2" - var cards=player.getCards('h'); - target.gain(cards,player,'giveAuto'); - event.num=cards.length; - game.delay(); - "step 3" - target.chooseCard('选择还给'+get.translation(player)+'的牌',true,event.num); - game.delay(0.2); - "step 4" - player.gain(result.cards,target,'giveAuto'); - game.delay(); - }, - audio:2, - }, - xiongyi:{ - skillAnimation:true, - animationColor:'gray', - unique:true, - enable:'phaseUse', - audio:2, - limited:true, - filterTarget:function(card,player,target){ - if(get.mode()=='guozhan'){ - if(player==target) return true; - if(player.identity=='ye') return false; - if(player.identity=='unknown'){ - if(_status.yeidentity.contains(player._group)){ - return false; - } - else if(get.zhu(player)||get.population(player._group)+1<=get.population()/2){ - return player._group==target.identity; - } - else{ - return false; - } - } - return player.identity==target.identity; - } - else{ - return true; - } - }, - multitarget:true, - multiline:true, - selectTarget:function(){ - if(get.mode()=='guozhan') return -1; - return [1,3]; - }, - content:function(){ - "step 0" - player.awakenSkill('xiongyi'); - game.asyncDraw(targets,3); - "step 1" - if(player.isDamaged()){ - if(get.mode()=='guozhan'){ - if(player.isMinor(true)){ - player.recover(); - } - } - else if(targets.length<=2){ - player.recover(); - } - } - }, - ai:{ - order:1, - result:{ - target:function(player){ - var num=player.countCards('h'); - if(player.hp==1) return 1; - if(player.hp==2&&num<=2) return 1; - if(player.hp==3&&num<=1) return 1; - if(game.phaseNumber1){ - event.num--; - event.goto(1); - } - } - }, - ai:{ - threaten:0.8, - expose:0.1 - } - }, - shushen:{ - audio:2, - trigger:{player:'recoverAfter'}, - direct:true, - content:function(){ - "step 0" - event.count=trigger.num; - "step 1" - player.chooseTarget(get.prompt('shushen'),'令一名其他角色选择摸两张牌或回复1点体力',function(card,player,target){ - return target!=player; - }).set('ai',function(target){ - return get.attitude(_status.event.player,target); - }); - "step 2" - if(result.bool){ - event.count--; - player.logSkill('shushen',result.targets); - result.targets[0].chooseDrawRecover(2,true); - if(event.count) event.goto(1); - } - }, - ai:{ - threaten:0.8, - expose:0.1 - } - }, - shenzhi:{ - audio:2, - trigger:{player:'phaseZhunbeiBegin'}, - check:function(event,player){ - if(player.hp>2) return false; - var cards=player.getCards('h'); - if(cards.length3) return false; - for(var i=0;i7||get.tag(cards[i],'recover')>=1) return false; - } - return true; - }, - filter:function(event,player){ - return player.countCards('h')>0; - }, - content:function(){ - "step 0" - var cards=player.getCards('h'); - event.bool=cards.length>=player.hp; - player.discard(cards); - "step 1" - if(event.bool){ - player.recover(); - } - } - }, - wuji:{ - skillAnimation:true, - animationColor:'orange', - audio:2, - trigger:{player:'phaseJieshuBegin'}, - forced:true, - unique:true, - juexingji:true, - filter:function(event,player){ - return player.getStat('damage')>=3&&!player.storage.wuji; - }, - content:function(){ - "step 0" - player.removeSkill('huxiao'); - player.gainMaxHp(); - "step 1" - player.recover(); - player.awakenSkill('wuji'); - player.storage.wuji=true; - - var card=get.cardPile('qinglong','field'); - if(card){ - player.gain(card,'gain2','log'); - } - } - }, - xueji_old:{ - audio:2, - enable:'phaseUse', - usable:1, - filter:function(event,player){ - return player.hp0; - }, - filterTarget:function(card,player,target){ - return player!=target&&get.distance(player,target,'attack')<=1; - }, - selectTarget:function(){ - return [1,_status.event.player.maxHp-_status.event.player.hp]; - }, - position:'he', - filterCard:function(card){ - return get.color(card)=='red'; - }, - check:function(card){ - return 8-get.useful(card); - }, - content:function(){ - "step 0" - target.damage(); - "step 1" - target.draw(); - }, - ai:{ - order:7, - result:{ - target:function(player,target){ - return get.damageEffect(target,player); - } - }, - threaten:function(player,target){ - if(target.hp==1) return 2; - if(target.hp==2) return 1.5; - return 0.5; - }, - maixie:true, - effect:{ - target:function(card,player,target){ - if(get.tag(card,'damage')){ - if(target.hp==target.maxHp&&target.hasFriend()) return [0,1]; - } - if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0]; - } - } - } - }, - xueji:{ - audio:2, - enable:'phaseUse', - usable:1, - filter:function(event,player){ - return player.countCards('he',{color:'red'})>0; - }, - filterTarget:true, - selectTarget:function(){ - var player=_status.event.player - return [1,Math.max(1,player.getDamagedHp())]; - }, - position:'he', - filterCard:{color:'red'}, - check:function(card){ - return 8-get.value(card); - }, - multitarget:true, - multiline:true, - line:'fire', - content:function(){ - 'step 0' - event.delay=false; - for(var i=0;ii) cards.push(ui.cardPile.childNodes[i]); - } - player.chooseCardButton('傲才:选择一张卡牌打出',cards).set('filterButton',function(button){ - return get.type(button.link)=='basic'&&_status.event.getTrigger().filterCard(button.link); - }); - "step 1" - if(result.bool){ - game.log(player,'傲才发动成功'); - trigger.untrigger(); - trigger.responded=true; - result.links[0].remove(); - trigger.result={bool:true,card:result.links[0]} - } - }, - ai:{ - effect:{ - target:function(card,player,target,effect){ - if(get.tag(card,'respondShan')) return 0.7; - if(get.tag(card,'respondSha')) return 0.7; - } - } - }, - group:'aocai2', - }, - aocai2:{ - enable:'chooseToUse', - filter:function(event,player){ - return _status.currentPhase!==player&&event.type!='wuxie'&&event.type!='trickuse'; - }, - onChooseToUse:function(event){ - if(!game.online){ - var cards=[]; - if(ui.cardPile.childNodes.length<2){ - var discardcards=get.cards(2); - game.cardsDiscard(discardcards); - } - for(var i=0;i<2;i++){ - if(ui.cardPile.childNodes.length>i) cards.push(ui.cardPile.childNodes[i]); - } - event.set('aocaicards',cards); - } - }, - chooseButton:{ - dialog:function(event,player){ - return ui.create.dialog('傲才:选择一张卡牌使用',event.aocaicards); - }, - filter:function(button,player){ - var evt=_status.event.getParent(); - if(evt&&evt.filterCard){ - return get.type(button.link)=='basic'&&evt.filterCard(button.link,player,evt); - } - return false; - }, - check:function(button){ - return 1; - }, - backup:function(links,player){ - return { - audio:'aocai', - filterCard:function(){return false}, - selectCard:-1, - viewAs:links[0], - } - }, - prompt:function(links,player){ - return '选择'+get.translation(links)+'的目标'; - } - }, - ai:{ - order:11, - respondShan:true, - respondSha:true, - save:true, - result:{ - player:function(player){ - if(_status.event.dying) return get.attitude(player,_status.event.dying); - return 1; - } - } - } - }, - hongyuan:{ - trigger:{player:'phaseDrawBegin2'}, - direct:true, - audio:2, - filter:function(event,player){ - return !event.numFixed&&event.num>0; - }, - content:function(){ - "step 0" - var check; - if(player.countCards('h')==0){ - check=false; - } - else{ - check=(game.countPlayer(function(current){ - return player!=current&&get.attitude(player,current)>1; - })>=2); - } - if(get.is.versus()){ - event.versus=true; - player.chooseBool(get.prompt2('hongyuan')).ai=function(){ - return game.countPlayer(function(current){ - return player.side==current.side; - })>2; - }; - } - else{ - player.chooseTarget(get.prompt2('hongyuan'),[1,2],function(card,player,target){ - return player!=target; - },function(target){ - if(!_status.event.check) return 0; - return get.attitude(_status.event.player,target); - }).set('check',check); - } - "step 1" - if(result.bool){ - var targets; - if(event.versus){ - targets=game.filterPlayer(function(current){ - return current!=player&¤t.side==player.side; - }); - } - else{ - targets=result.targets; - } - player.logSkill('hongyuan',targets); - game.asyncDraw(targets); - trigger.num--; - } - }, - }, - huanshi:{ - audio:2, - trigger:{global:'judge'}, - filter:function(event,player){ - return player.countCards('he')>0; - }, - logTarget:'player', - check:function(event,player){ - if(get.attitude(player,event.player)<=0) return false; - var cards=player.getCards('he'); - var judge=event.judge(event.player.judging[0]); - for(var i=0;ijudge) return true; - if(_status.currentPhase!=player&&judge2==judge&&get.color(cards[i])=='red'&&get.useful(cards[i])<5) return true; - } - return false; - }, - content:function(){ - "step 0" - var target=trigger.player; - var judge=trigger.judge(target.judging[0]); - var attitude=get.attitude(target,player); - target.choosePlayerCard('请选择代替判定的牌','he','visible',true,player).set('ai',function(button){ - var card=button.link; - var judge=_status.event.judge; - var attitude=_status.event.attitude; - var result=trigger.judge(card)-judge; - var player=_status.event.player; - if(result>0){ - return 20+result; - } - if(result==0){ - if(_status.currentPhase==player) return 0; - if(attitude>=0){ - return get.color(card)=='red'?7:0-get.value(card); - } - else{ - return get.color(card)=='black'?10:0+get.value(card); - } - } - if(attitude>=0){ - return get.color(card)=='red'?0:-10+result; - } - else{ - return get.color(card)=='black'?0:-10+result; - } - }).set('filterButton',function(button){ - var player=_status.event.target; - var card=button.link; - var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); - if(mod2!='unchanged') return mod2; - var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); - if(mod!='unchanged') return mod; - return true; - }).set('judge',judge).set('attitude',attitude); - "step 1" - if(result.bool){ - event.card=result.links[0]; - player.respond(event.card,'highlight').nopopup=true; - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - if(trigger.player.judging[0].clone){ - trigger.player.judging[0].clone.classList.remove('thrownhighlight'); - game.broadcast(function(card){ - if(card.clone){ - card.clone.classList.remove('thrownhighlight'); - } - },trigger.player.judging[0]); - game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); - } - game.cardsDiscard(trigger.player.judging[0]); - trigger.player.judging[0]=event.card; - trigger.orderingCards.add(event.card); - game.log(trigger.player,'的判定牌改为',event.card); - game.delay(2); - } - }, - ai:{ - rejudge:true, - tag:{ - rejudge:1, - } - } - }, - mingzhe:{ - audio:2, - trigger:{player:['useCard','respond','loseAfter']}, - frequent:true, - filter:function(event,player){ - if(player==_status.currentPhase) 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;i2) return current-1; - }, - globalTo:function(from,to,current){ - if(to.hp<=2) return current+1; - }, - }, - ai:{ - threaten:0.8 - } - }, - yongsi:{ - group:['yongsi1','yongsi2'], - ai:{ - threaten:2.2 - } - }, - yongsi1:{ - audio:2, - trigger:{player:'phaseDrawBegin2'}, - forced:true, - filter:function(event,player){ - return !event.numFixed; - }, - content:function(){ - trigger.num+=game.countGroup(); - } - }, - yongsi2:{ - audio:2, - trigger:{player:'phaseDiscardBegin'}, - forced:true, - content:function(){ - player.chooseToDiscard(game.countGroup(),'he',true); - } - }, - bifa:{ - trigger:{player:'phaseJieshuBegin'}, - direct:true, - audio:2, - filter:function(event,player){ - return player.countCards('h')>0; - }, - content:function(){ - "step 0" - var players=game.filterPlayer(); - for(var i=0;itarget.hp){ - target.chooseToDiscard(2,'he',true); - } - else{ - target.draw(2); - } - if(!player.storage.songci) player.storage.songci=[]; - player.storage.songci.push(target); - player.storage.songci.sortBySeat(); - player.markSkill('songci'); - }, - intro:{ - content:'已对$发动过〖颂词〗' - }, - ai:{ - order:7, - threaten:1.5, - expose:0.2, - result:{ - target:function(player,target){ - if(target.countCards('h')target.hp){ - return -1; - } - } - } - } - }, - baobian:{ - audio:2, - trigger:{player:['phaseBefore','changeHp']}, - forced:true, - popup:false, - init:function(player){ - if(game.online) return; - player.removeAdditionalSkill('baobian'); - var list=[]; - if(player.hp<=3){ - //if(trigger.num!=undefined&&trigger.num<0&&player.hp-trigger.num>1) player.logSkill('baobian'); - list.push('retiaoxin'); - } - if(player.hp<=2){ - list.push('olpaoxiao'); - } - if(player.hp<=1){ - list.push('xinshensu'); - } - if(list.length){ - player.addAdditionalSkill('baobian',list); - } - }, - derivation:['retiaoxin','olpaoxiao','xinshensu'], - content:function(){ - player.removeAdditionalSkill('baobian'); - var list=[]; - if(player.hp<=3){ - if(trigger.num!=undefined&&trigger.num<0&&player.hp-trigger.num>1) player.logSkill('baobian'); - list.push('retiaoxin'); - } - if(player.hp<=2){ - list.push('olpaoxiao'); - } - if(player.hp<=1){ - list.push('xinshensu'); - } - if(list.length){ - player.addAdditionalSkill('baobian',list); - } - }, - ai:{ - maixie:true, - effect:{ - target:function(card,player,target){ - if(get.tag(card,'damage')){ - if(!target.hasFriend()) return; - if(target.hp>=4) return [0,1]; - } - if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0]; - } - } - } - }, - chongzhen:{ - group:['chongzhen1','chongzhen2'], - audio:'chongzhen1', - ai:{ - combo:'ollongdan', - mingzhi:false, - effect:{ - target:function(card,player,target,current){ - if(get.tag(card,'respondShan')||get.tag(card,'respondSha')){ - if(get.attitude(target,player)<=0){ - if(current>0) return; - if(target.countCards('h')==0) return 1.6; - if(target.countCards('h')==1) return 1.2; - if(target.countCards('h')==2) return [0.8,0.2,0,-0.2]; - return [0.4,0.7,0,-0.7]; - } - } - }, - }, - } - }, - chongzhen1:{ - audio:2, - trigger:{player:'useCard'}, - filter:function(event,player){ - if((event.card.name!='sha'&&event.card.name!='shan')||(event.skill!='longdan_shan'&&event.skill!='longdan_sha'&& - event.skill!='fanghun_shan'&&event.skill!='fanghun_sha'&&event.skill!='ollongdan')) return false; - var target=lib.skill.chongzhen1.logTarget(event,player); - return target&&target.countGainableCards(player,'h')>0; - }, - logTarget:function(event,player){ - if(event.card.name=='sha') return event.targets[0]; - return event.respondTo[0]; - }, - prompt2:'每当你发动“龙胆”使用或打出一张手牌时,你可以立即获得对方的一张手牌。', - content:function(){ - var target=lib.skill.chongzhen1.logTarget(trigger,player); - player.gainPlayerCard(target,'h',true); - } - }, - chongzhen2:{ - audio:2, - trigger:{player:'respond'}, - filter:function(event,player){ - if(event.skill!='longdan_shan'&&event.skill!='longdan_sha'&& - event.skill!='fanghun_shan'&&event.skill!='fanghun_sha'&&event.skill!='ollongdan') return false; - return event.source&&event.source.countGainableCards(player,'h')>0; - }, - logTarget:'source', - prompt2:'每当你发动“龙胆”使用或打出一张手牌时,你可以立即获得对方的一张手牌。', - content:function(){ - player.gainPlayerCard(trigger.source,'h',true); - } - }, - lihun:{ - audio:2, - enable:'phaseUse', - usable:1, - filterTarget:function(card,player,target){ - return player!=target&&target.sex=='male'; - }, - filterCard:true, - position:'he', - content:function(){ - player.gain(target.getCards('h'),target,'giveAuto'); - player.turnOver(); - player.addSkill('lihun2'); - player.storage.lihun=target; - }, - check:function(card){return 8-get.value(card)}, - ai:{ - order:10, - result:{ - player:function(player){ - if(player.classList.contains('turnedover')) return 10; - return 0; - }, - target:function(player,target){ - if(target.countCards('h')>target.hp) return target.hp-target.countCards('h'); - return 0; - } - }, - threaten:1.5, - effect:{ - target:function(card){ - if(card.name=='guiyoujie') return [0,2]; - } - } - }, - }, - lihun2:{ - trigger:{player:'phaseUseEnd'}, - forced:true, - popup:false, - audio:false, - content:function(){ - "step 0" - var cards=player.getCards('he'); - player.removeSkill('lihun2'); - if(player.storage.lihun.classList.contains('dead')||player.storage.lihun.hp<=0||cards.length==0){ - event.finish(); - } - else{ - if(cards.length0; - }, - content:function(){ - "step 0" - player.chooseCardTarget({ - filterCard:function(card){ - return get.type(card)=='equip'; - }, - position:'he', - filterTarget:function(card,player,target){ - return target.isEmpty(get.subtype(card)); - }, - ai1:function(card){ - return 6-get.value(card); - }, - ai2:function(target){ - return get.attitude(_status.event.player,target)-3; - }, - prompt:get.prompt2('yuanhu') - }); - "step 1" - if(result.bool){ - player.logSkill('yuanhu',result.targets); - var thisTarget=result.targets[0]; - var thisCard=result.cards[0]; - thisTarget.equip(thisCard); - event.target=thisTarget; - if(thisTarget!=player){ - player.$give(thisCard,thisTarget,false); - } - switch(get.subtype(thisCard)){ - case 'equip1':{ - if(!game.hasPlayer(function(current){ - return get.distance(thisTarget,current)<=1; - })){ - event.finish(); - return; - } - game.delay(); - player.chooseTarget(true,function(card,player,target){ - return get.distance(_status.event.thisTarget,target)<=1&&target.countCards('hej'); - }).set('ai',function(target){ - var attitude=get.attitude(_status.event.player,target); - if(attitude>0&&target.countCards('j')){ - return attitude*1.5; - } - return -attitude; - }).set('thisTarget',thisTarget); - return; - } - case 'equip2':{ - thisTarget.draw();event.finish(); - return; - } - case 'equip5':{ - event.finish(); - return; - } - default:{ - thisTarget.recover(); - event.finish(); - return; - } - } - } - else{ - event.finish(); - } - "step 2" - if(result.targets.length){ - player.discardPlayerCard(true,result.targets[0],'hej'); - } - }, - }, - tianming:{ - audio:2, - trigger:{target:'useCardToTargeted'}, - check:function(event,player){ - var cards=player.getCards('h'); - if(cards.length<=2){ - for(var i=0;iplayers[1].hp&&players[0]!=player){ - players[0].chooseBool(get.prompt2('tianming')); - event.player=players[0]; - } - else{ - event.finish(); - } - "step 1" - if(result.bool){ - player.chooseToDiscard(2,true,'he'); - player.draw(2); - } - }, - ai:{ - effect:{ - target:function(card,player,target,current){ - if(card.name=='sha') return [1,0.5]; - } - } - } - }, - mizhao:{ - enable:'phaseUse', - usable:1, - audio:2, - filter:function(event,player){ - return player.countCards('h')>0; - }, - filterCard:true, - selectCard:-1, - filterTarget:function(card,player,target){ - return player!=target; - }, - discard:false, - lose:false, - delay:false, - ai:{ - order:1, - result:{ - player:0, - target:function(player,target){ - if(target.hasSkillTag('nogain')) return 0; - if(player.countCards('h')>1){ - return 1; - } - var players=game.filterPlayer(); - for(var i=0;i0){ - return eff-10; - } - return eff; - }).set('target1',event.target1); - "step 2" - if(result.targets.length){ - event.target2=result.targets[0]; - event.target1.line(event.target2); - event.target1.chooseToCompare(event.target2); - } - else{ - event.finish(); - } - "step 3" - if(!result.tie){ - if(result.bool&&event.target1.canUse({name:'sha',isCard:true},event.target2,false)){ - event.target1.useCard({name:'sha',isCard:true},event.target2); - } - else if(event.target2.canUse({name:'sha',isCard:true},event.target1,false)){ - event.target2.useCard({name:'sha',isCard:true},event.target1); - } - } - } - }, - gongao:{ - audio:2, - trigger:{global:'dieAfter'}, - forced:true, - content:function(){ - player.gainMaxHp(); - player.recover(); - }, - ai:{ - threaten:1.5 - } - }, - juyi:{ - skillAnimation:true, - animationColor:'thunder', - audio:true, - derivation:['benghuai','weizhong'], - trigger:{player:'phaseZhunbeiBegin'}, - filter:function(event,player){ - return player.maxHp>game.players.length&&player.hp0){ - player.draw(num); - } - player.addSkill('benghuai'); - player.addSkill('weizhong'); - player.storage.juyi=true; - player.awakenSkill('juyi'); - } - }, - weizhong:{ - audio:true, - trigger:{player:['gainMaxHpEnd','loseMaxHpEnd']}, - forced:true, - content:function(){ - player.draw(); - } - }, - chixin:{ - group:['chixin1','chixin2'], - mod:{ - cardUsable:function(card,player,num){ - if(card.name=='sha'){ - return num+20; - } - }, - }, - trigger:{player:'shaBefore'}, - forced:true, - popup:false, - check:function(event,player){ - return player.countCards('h','sha')>0; - }, - filter:function(event,player){ - return _status.currentPhase==player; - }, - content:function(){ - var target=trigger.target; - if(target.hasSkill('chixin3')){ - target.storage.chixin++; - } - else{ - target.storage.chixin=1; - target.addTempSkill('chixin3','phaseUseEnd'); - } - } - }, - chixin1:{ - enable:['chooseToRespond','chooseToUse'], - filterCard:{suit:'diamond'}, - position:'he', - viewAs:{name:'sha'}, - prompt:'将一张♦牌当杀使用或打出', - check:function(card){return 5-get.value(card)}, - ai:{ - respondSha:true, - } - }, - chixin2:{ - enable:['chooseToUse','chooseToRespond'], - filterCard:{suit:'diamond'}, - viewAs:{name:'shan'}, - position:'he', - prompt:'将一张♦牌当闪使用或打出', - check:function(card){return 5-get.value(card)}, - ai:{ - respondShan:true, - effect:{ - target:function(card,player,target,current){ - if(get.tag(card,'respondShan')&¤t<0) return 0.8 - } - }, - } - }, - chixin3:{ - mod:{ - targetEnabled:function(card,player,target){ - if(card.name!='sha') return; - if(player==_status.currentPhase&&player.hasSkill('chixin')){ - var num=player.getCardUsable(card,true)-20; - var players=game.filterPlayer(); - for(var i=0;i1; - } - } - } - }, - suiren:{ - trigger:{player:'phaseZhunbeiBegin'}, - skillAnimation:true, - animationColor:'gray', - filter:function(event,player){ - return !player.storage.suiren; - }, - intro:{ - content:'limited', - }, - mark:true, - direct:true, - unique:true, - limited:true, - content:function(){ - "step 0" - var check=(player.hp==1||(player.hp==2&&player.countCards('h')<=1)); - player.chooseTarget(get.prompt2('suiren')).set('ai',function(target){ - if(!_status.event.check) return 0; - return get.attitude(_status.event.player,target); - }).set('check',check); - "step 1" - if(result.bool){ - player.storage.suiren=true; - player.awakenSkill('suiren'); - player.logSkill('suiren',result.targets); - player.removeSkill('yicong'); - player.gainMaxHp(); - player.recover(); - result.targets[0].draw(3); - } - } - }, - kuangfu:{ - trigger:{source:'damageSource'}, - direct:true, - audio:2, - filter:function(event){ - if(event._notrigger.contains(event.player)) return false; - return event.card&&event.card.name=='sha'&&event.player.countCards('e'); - }, - content:function(){ - "step 0" - var neg=get.attitude(player,trigger.player)<=0; - player.choosePlayerCard('e',trigger.player).set('ai',function(button){ - if(_status.event.neg){ - return get.buttonValue(button); - } - return 0; - }).set('neg',neg); - "step 1" - if(result.bool){ - player.logSkill('kuangfu'); - event.card=result.links[0]; - if(player.isEmpty(get.subtype(event.card))){ - player.chooseBool('是否将'+get.translation(event.card)+'置入自己的装备区?').ai=function(){ - return true; - }; - } - else event._result={bool:false}; - } - else event.finish(); - "step 2" - if(result.bool){ - trigger.player.$give(event.card,player,false); - player.equip(event.card); - } - else trigger.player.discard(event.card); - } - }, - "xinfu_lingren":{ - usable:1, - audio:2, - trigger:{ - player:"useCardToPlayered", - }, - direct:true, - filter:function (event,player){ - if(event.getParent().triggeredTargets3.length>1) return false; - if(!player.isPhaseUsing()) return false; - if(!['basic','trick'].contains(get.type(event.card))) return false; - if(get.tag(event.card,'damage')) return true; - return false; - }, - content:function (){ - 'step 0' - player.chooseTarget(get.prompt2('xinfu_lingren'),function(card,player,target){ - return _status.event.targets.contains(target); - }).set('ai',function(target){ - return 2-get.attitude(_status.event.player,target); - }).set('targets',trigger.targets); - 'step 1' - if(result.bool){ - player.logSkill('xinfu_lingren',result.targets); - var target=result.targets[0]; - event.target=target; - event.choice={ - basic:false, - trick:false, - equip:false, - } - player.chooseBool('是否押基本牌?').ai=function(event,player){ - var rand=0.95; - if(!target.countCards('h',{type:['basic']})) rand=0.05; - if(!target.countCards('h')) rand=0; - return Math.random()0){ - target.addTempSkill('lingren_adddamage'); - target.storage.lingren={ - card:trigger.card, - //player:event.targett, - } - } - if(event.num>1) player.draw(2); - if(event.num>2){ - player.addTempSkill('lingren_jianxiong',{player:'phaseBegin'}); - player.addTempSkill('lingren_xingshang',{player:'phaseBegin'}); - } - }, - ai:{ - threaten:2.4, - }, - }, - "lingren_adddamage":{ - onremove:function (player){ - delete player.storage.lingren; - }, - trigger:{ - player:"damageBegin3", - }, - filter:function (event,player){ - var info=player.storage.lingren; - return event.card&&event.card==info.card; - }, - silent:true, - popup:false, - forced:true, - content:function (){ - trigger.num++; - }, - }, - "lingren_jianxiong":{ - audio:1, - trigger:{ - player:"damageEnd", - }, - content:function (){ - "step 0" - if(get.itemtype(trigger.cards)=='cards'&&get.position(trigger.cards[0],true)=='o'){ - player.gain(trigger.cards,"gain2"); - } - player.draw("nodelay"); - }, - ai:{ - maixie:true, - "maixie_hp":true, - effect:{ - target:function (card,player,target){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; - if(get.tag(card,'damage')&&player!=target) return [1,0.6]; - }, - }, - }, - }, - "lingren_xingshang":{ - audio:1, - inherit:'rexingshang', - }, - "xinfu_fujian":{ - audio:2, - trigger:{ - player:"phaseJieshuBegin", - }, - filter:function (event,player){ - return !game.hasPlayer(function(current){ - return current.countCards('h')==0; - }); - }, - forced:true, - content:function (){ - event.num=0; - var list=game.filterPlayer(function(target){ - if(target.isMinHandcard()) event.num=target.countCards('h'); - return player!=target; - }); - if(event.num<1){ - event.finish(); - } - else{ - var target=list.randomGet(); - var cards=target.getCards('h').randomGets(event.num); - player.line(target); - var content=[get.translation(target)+'的部分手牌',cards]; - game.log(player,'观看了',target,'的部分手牌'); - player.chooseControl('ok').set('dialog',content); - } - }, - }, - "xinfu_xionghuo":{ - group:["xinfu_xionghuo_damage","xinfu_xionghuo_begin","xinfu_xionghuo_init"], - subSkill:{ - begin:{ - audio:'xinfu_xionghuo', - logTarget:'player', - line:false, - forced:true, - trigger:{ - global:"phaseUseBegin", - }, - filter:function (event,player){ - return event.player.countMark('xionghuo')>0&&event.player!=player; - }, - content:function (){ - 'step 0' - trigger.player.removeMark('xionghuo',trigger.player.countMark('xionghuo')); - var list=[1,2,3]; - var num=list.randomGet(); - event.goto(num); - 'step 1' - player.line(trigger.player,'fire'); - trigger.player.damage('fire'); - if(!trigger.player.storage.xionghuo_disable) trigger.player.storage.xionghuo_disable=[]; - trigger.player.storage.xionghuo_disable.push(player); - trigger.player.addTempSkill('xionghuo_disable','phaseAfter'); - event.goto(4); - 'step 2' - player.line(trigger.player,'water'); - trigger.player.loseHp(); - trigger.player.addMark('xionghuo_low',1,false); - trigger.player.addTempSkill('xionghuo_low','phaseAfter'); - event.goto(4); - 'step 3' - player.line(trigger.player,'green'); - var card1=trigger.player.getCards('h').randomGet(); - var card2=trigger.player.getCards('e').randomGet(); - var list=[]; - if(card1) list.push(card1); - if(card2) list.push(card2); - if(list.length>0){ - player.gain(list,trigger.player,'giveAuto','bySelf'); - } - 'step 4' - game.delay(); - }, - }, - damage:{ - audio:"xinfu_xionghuo", - sub:true, - forced:true, - trigger:{ - source:"damageBegin1", - }, - filter:function (event,player){ - return event.player.countMark('xionghuo')>0; - }, - content:function (){ - trigger.num++; - }, - }, - init:{ - trigger:{ - global:"gameDrawAfter", - player:"enterGame", - }, - forced:true, - locked:false, - content:function(){ - player.addMark("xionghuo",3); - }, - }, - }, - audio:2, - enable:"phaseUse", - filter:function(event,player){ - return player.countMark('xionghuo')>0; - }, - filterTarget:function (card,player,target){ - if(target.hasMark('xionghuo')) return false; - return player!=target>0; - }, - content:function (){ - player.removeMark('xionghuo',1); - target.addMark('xionghuo',1); - }, - ai:{ - order:11, - result:{ - target:function (player,target){ - var mark=player.countMark('xionghuo'); - if(mark>2) return -1; - return Math.min(-(1+mark-target.hp),0); - }, - }, - threaten:1.1, - }, - }, - xionghuo:{ - marktext:"戾", - mark:true, - intro:{ - name:'暴戾', - content:"mark", - }, - locked:true, - }, - "xionghuo_disable":{ - mod:{ - playerEnabled:function (card,player,target){ - if(card.name=='sha'&&(player.storage.xionghuo_disable&&player.storage.xionghuo_disable.contains(target))) return false; - }, - }, - onremove:true, - charlotte:true, - mark:true, - marktext:"禁", - intro:{ - content:"本回合内不能对$使用【杀】", - }, - }, - "xionghuo_low":{ - mod:{ - maxHandcard:function (player,num){ - return num-player.countMark('xionghuo_low'); - }, - }, - marktext:"减", - mark:true, - onremove:true, - charlotte:true, - intro:{ - content:"本回合内手牌上限-#", - }, - }, - "xinfu_shajue":{ - audio:2, - trigger:{ - global:"dying", - }, - filter:function (event,player){ - return event.player.hp<0&&event.player!=player; - }, - forced:true, - //priority:7, - content:function (){ - if(trigger.parent.name=='damage'&&get.itemtype(trigger.parent.cards)=='cards'&&get.position(trigger.parent.cards[0],true)=='o'){ - player.gain(trigger.parent.cards,"gain2"); - } - player.addMark('xionghuo',1); - }, - }, - "xinfu_jianjie":{ - derivation:["jianjie_faq"], - group:["xinfu_jianjie1","xinfu_jianjie2"], - audio:3, - trigger:{ - player:"phaseZhunbeiBegin", - }, - forced:true, - direct:true, - filter:function (event,player){ - if(player.phaseNumber>1) return false; - return !game.hasPlayer(function(current){ - return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan'); - }); - }, - content:function (){ - "step 0" - player.chooseTarget('请将「龙印」交给一名角色',true,function(card,player,target){ - return target!=player; - }).set('ai',function(target){ - var player=_status.event.player; - return 10+get.attitude(player,target); - }); - "step 1" - if(result.bool&&result.targets&&result.targets.length){ - var target=result.targets[0]; - player.logSkill('xinfu_jianjie',target); - player.line(target,'fire'); - target.addSkill('smh_huoji'); - game.delay(); - } - if(game.hasPlayer(function(current){ - return !current.hasSkill('smh_huoji')&¤t!=player - })){ - player.chooseTarget('请将「凤印」交给一名角色',true,function(card,player,target){ - return target!=player&&!target.hasSkill('smh_huoji'); - }).set('ai',function(target){ - var player=_status.event.player; - return 10+get.attitude(player,target); - }); - }else event.finish(); - "step 2" - if(result.bool&&result.targets&&result.targets.length){ - var target=result.targets[0]; - player.logSkill('xinfu_jianjie',target); - player.line(target,'green'); - target.addSkill('smh_lianhuan'); - game.delay(); - } - }, - }, - "xinfu_jianjie1":{ - audio:3, - prompt:"你的第一个准备阶段,你令两名不同的角色分别获得龙印与凤印;出牌阶段限一次(你的第一个回合除外),或当拥有龙印、凤印的角色死亡时,你可以转移龙印、凤印。", - enable:"phaseUse", - usable:1, - filter:function (event,player){ - if(player.phaseNumber==1) return false; - if(!game.hasPlayer(function(current){ - return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan'); - })) return false; - return true; - }, - filterTarget:function (card,player,target){ - if(ui.selected.targets.length==1){ - return true; - }else{ - return target.hasSkill('smh_huoji')||target.hasSkill('smh_lianhuan'); - } - }, - targetprompt:["移走印","得到印"], - selectTarget:2, - multitarget:true, - content:function (){ - 'step 0' - if(targets[0].hasSkill('smh_huoji')&&targets[0].hasSkill('smh_lianhuan')){ - player.chooseControl('龙印','凤印').set('prompt','请选择要移动的印'); - } - else{ - if(targets[0].hasSkill('smh_huoji')) event._result={control:'龙印'}; - else event._result={control:'凤印'}; - } - 'step 1' - if(result.control=='龙印'){ - targets[0].removeSkill('smh_huoji'); - targets[1].addSkill('smh_huoji'); - } - else{ - targets[0].removeSkill('smh_lianhuan'); - targets[1].addSkill('smh_lianhuan'); - } - }, - ai:{ - order:8, - result:{ - target:function (player,target){ - if(ui.selected.targets.length==0){ - return get.attitude(player,target)<0?-999:-3; - } - else{ - return target.countCards('h')+1; - } - }, - }, - expose:0.4, - threaten:3, - }, - }, - "smh_huoji":{ - charlotte:true, - group:["smh_yeyan"], - mark:true, - marktext:"龙", - intro:{ - name:"龙印", - content:"
  • 出牌阶段限三次,你可以将一张红色牌当【火攻】使用。
  • 若你同时拥有「凤印」,则你视为拥有技能〖业炎〗。(发动〖业炎〗后,弃置龙印和凤印)", - }, - usable:3, - audio:2, - enable:"chooseToUse", - position:"he", - filterCard:function (card){ - return get.color(card)=='red'; - }, - viewAs:{ - name:"huogong", - nature:"fire", - }, - viewAsFilter:function (player){ - if(player.hasSkill('huoji')) return false; - if(!game.hasPlayer(function(current){ - return current.hasSkill('xinfu_jianjie'); - })) return false; - if(!player.countCards('he',{color:'red'})) return false; - }, - prompt:"将一张红色牌当火攻使用", - check:function (card){ - var player=_status.currentPhase; - if(player.countCards('h')>player.hp){ - return 6-get.value(card); - } - return 4-get.value(card) - }, - }, - "smh_lianhuan":{ - audio:2, - charlotte:true, - enable:"phaseUse", - filter:function (event,player){ - if(player.hasSkill('lianhuan')||player.hasSkill('xinlianhuan')) return false; - if(!game.hasPlayer(function(current){ - return current.hasSkill('xinfu_jianjie'); - })) return false; - if((player.getStat().skill.smh_lianhuan||0)+(player.getStat().skill.smh_lianhuan1||0)>=3) return false; - return player.countCards('h',{suit:'club'})>0; - }, - filterCard:function (card){ - return get.suit(card)=='club'; - }, - viewAs:{ - name:"tiesuo", - }, - prompt:"将一张梅花牌当铁锁连环使用", - check:function (card){return 6-get.value(card)}, - mark:true, - marktext:"凤", - intro:{ - name:"凤印", - content:"
  • 出牌阶段限三次,你可以将你的任意一张梅花手牌当作【铁索连环】使用或重铸。", - }, - group:["smh_lianhuan1"], - }, - "xinfu_jianjie2":{ - trigger:{ - global:"dieAfter", - }, - forced:true, - direct:true, - silent:true, - popup:false, - filter:function (event,player){ - return event.player.hasSkill('smh_huoji')||event.player.hasSkill('smh_lianhuan'); - }, - content:function (){ - "step 0" - player.logSkill('xinfu_jianjie'); - "step 1" - if(trigger.player.hasSkill('smh_huoji')){ - player.chooseTarget('请将'+get.translation(trigger.player)+'的「龙印」交给一名角色',true).set('ai',function(target){ - var player=_status.event.player; - return 10+get.attitude(player,target); - }); - }else event.goto(2); - "step 2" - if(result.bool&&result.targets&&result.targets.length){ - var target=result.targets[0]; - player.line(target,'fire'); - target.addSkill('smh_huoji'); - game.delay(); - } - "step 3" - if(trigger.player.hasSkill('smh_lianhuan')){ - player.chooseTarget('请将'+get.translation(trigger.player)+'的「凤印」交给一名角色',true).set('ai',function(target){ - var player=_status.event.player; - return 10+get.attitude(player,target); - }); - }else event.finish(); - "step 4" - if(result.bool&&result.targets&&result.targets.length){ - var target=result.targets[0]; - player.line(target,'green'); - target.addSkill('smh_lianhuan'); - game.delay(); - } - }, - }, - "smh_lianhuan1":{ - enable:"phaseUse", - filter:function (event,player){ - if(player.hasSkill('lianhuan')||player.hasSkill('xinlianhuan')) return false; - if(!game.hasPlayer(function(current){ - return current.hasSkill('xinfu_jianjie'); - })) return false; - if((player.getStat().skill.smh_lianhuan||0)+(player.getStat().skill.smh_lianhuan1||0)>=3) return false; - return player.countCards('h',{suit:'club'})>0; - }, - filterCard:function (card){ - return get.suit(card)=='club'; - }, - check:function (card){ - return -1; - }, - content:function (){ - player.draw(); - }, - discard:false, - loseTo:'discardPile', - prompt:"将一张梅花牌置入弃牌堆并摸一张牌", - delay:0.5, - prepare:function (cards,player){ - player.$throw(cards,1000); - }, - ai:{ - basic:{ - order:1, - }, - result:{ - player:1, - }, - }, - forced:true, - }, - "smh_yeyan":{ - unique:true, - enable:"phaseUse", - audio:3, - skillAnimation:true, - animationColor:'gray', - prompt:"限定技,出牌阶段,你可以对一至三名角色造成至多共3点火焰伤害(你可以任意分配每名目标角色受到的伤害点数),若你将对一名角色分配2点或更多的火焰伤害,你须先弃置四张不同花色的手牌再失去3点体力。", - filter:function (event,player){ - if(!game.hasPlayer(function(current){ - return current.hasSkill('xinfu_jianjie'); - })) return false; - return player.hasSkill('smh_lianhuan'); - }, - filterTarget:function (card,player,target){ - var length=ui.selected.cards.length; - return (length==0||length==4); - }, - filterCard:function (card){ - var suit=get.suit(card); - for(var i=0;i1){ - 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;i0){ - 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); - } - }, - }, - "jianjie_faq":{}, - "xinfu_wuniang":{ - trigger:{ - player:["useCard","respond"], - }, - audio:2, - direct:true, - filter:function (event,player){ - return event.card.name=='sha'; - }, - content:function (){ - 'step 0' - player.chooseTarget(get.prompt('xinfu_wuniang'),'获得一名其他角色的一张牌,然后其和场上所有的“关索”摸一张牌。',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]; - player.logSkill('xinfu_wuniang',target); - player.line(target,'fire'); - event.draws=game.filterPlayer(function(current){ - if(current==target) return true; - return ['guansuo','old_guansuo'].contains(current.name)||['guansuo','old_guansuo'].contains(current.name2); - }); - player.gainPlayerCard(target,'he',true); - } - else event.finish(); - 'step 2' - game.asyncDraw(event.draws,1); - game.delay(); - }, - }, - "xinfu_xushen":{ - derivation:["xinfu_zhennan"], - audio:2, - subSkill:{ - count:{ - trigger:{ - player:"recoverBegin", - }, - forced:true, - silent:true, - popup:false, - filter:function (event,player){ - if(!event.card||event.card.name!='tao') return false; - if(!event.source||event.source.sex!='male') return false; - if(!player.isDying()) return false; - if(game.hasPlayer(function(current){ - return current.name=='guansuo'||current.name2=='guansuo'; - })) return false; - return true; - }, - content:function (){ - trigger.xinfu_xushen=true; - }, - sub:true, - }, - }, - group:["xinfu_xushen_count"], - trigger:{ - player:"recoverAfter", - }, - limited:true, - init:function (player){ - player.storage.xinfu_xushen=false; - }, - filter:function (event,player){ - if(player.storage.xinfu_xushen) return false; - if(player.isDying()) return false; - return event.xinfu_xushen==true; - }, - direct:true, - skillAnimation:true, - animationColor:'fire', - content:function (){ - "step 0" - trigger.source.chooseBool('【许身】:是否将自己的一张武将牌替换为“关索”?').set('ai',function(){ - return false; - }); - "step 1" - if(result.bool){ - player.awakenSkill('xinfu_xushen'); - player.logSkill('xinfu_xushen',trigger.source); - if(trigger.source.name2!=undefined){ - trigger.source.chooseControl(trigger.source.name,trigger.source.name2).set('prompt','请选择要更换的武将牌'); - }else event._result={control:trigger.source.name}; - } - else event.finish(); - "step 2" - trigger.source.reinit(result.control,'guansuo'); - if(_status.characterlist){ - _status.characterlist.add(result.control); - _status.characterlist.remove('guansuo'); - } - player.recover(); - player.addSkill('xinfu_zhennan'); - }, - mark:true, - intro:{ - content:"limited", - }, - }, - - "xinfu_falu":{ - subSkill:{ - spade:{ - marktext:'♠︎️', - intro:{ - name:'紫薇', - content:'mark', - }, - }, - heart:{ - marktext:'♥︎️', - intro:{ - name:'玉清', - content:'mark', - }, - }, - club:{ - marktext:'♣︎️', - intro:{ - name:'后土', - content:'mark', - }, - }, - diamond:{ - marktext:'♦︎', - intro:{ - name:'勾陈', - content:'mark', - }, - }, - }, - forced:true, - audio:2, - trigger:{ - player:["loseAfter","enterGame"], - global:"gameDrawAfter", - }, - filter:function (event,player){ - if(event.name!='lose') return true; - if(event.type!='discard') return false; - for(var i=0;i0){ - if(results>0){ - if(resulth>results) return '红桃5'; - return '黑桃5'; - } - else if(resulth>0) return '红桃5'; - return '取消'; - } - else{ - if(results<0){ - if(resulth=0) return false; - if(event.player.hasSkillTag('filterDamage',null,{ - player:player, - card:event.card, - })) return false; - return player.hasMark('xinfu_falu_spade')||get.color(ui.cardPile.firstChild)=='black'; - }, - prompt2:function(event){ - return '弃置「玉清♥」标记,然后进行判定。若结果为黑色,则对'+get.translation(event.player)+'即将造成的伤害+1。'; - }, - logTarget:"player", - content:function (){ - "step 0" - player.removeMark('xinfu_falu_heart') - player.judge(function(card){ - if(get.color(card)=='black') return 4; - return -1; - }); - "step 1" - if(result.bool==true){ - trigger.num++; - } - }, - }, - "xinfu_zhennan":{ - audio:2, - trigger:{ - target:"useCardToTargeted", - }, - filter:function (event,player){ - return event.card.name=='nanman'; - }, - direct:true, - content:function (){ - "step 0" - player.chooseTarget(get.prompt('xinfu_zhennan'),'对一名其他角色造成1-3点随机伤害',function(card,player,target){ - return target!=player; - }).set('ai',function(target){ - var player=_status.event.player; - return get.damageEffect(target,player,player); - }); - "step 1" - if(result.bool&&result.targets&&result.targets.length){ - game.delay(); - player.logSkill('xinfu_zhennan',result.targets); - var num=[1,2,3,1,1,2].randomGet(); - if(get.isLuckyStar(player)) num=3; - player.line(result.targets[0],'fire'); - result.targets[0].damage(num); - } - }, - ai:{ - expose:0.25, - }, - }, - "xinfu_yanyu":{ - trigger:{ - global:"phaseUseBegin", - }, - direct:true, - filter:function (event,player){ - return player.countCards('he')>0; - }, - content:function (){ - 'step 0' - player.chooseToDiscard(get.prompt('xinfu_yanyu'),get.translation('xinfu_yanyu_info'),'he').set('ai',function(card){ - var map=_status.event.goon; - var type=get.type(card,'trick'); - if(!map[type]) return -1; - return map[type]-get.value(card); - }).set('logSkill','xinfu_yanyu').set('goon',function(){ - var map={ - basic:0, - trick:0.1, - }; - var hs=trigger.player.getCards('h'); - var sha=false; - var jiu=false; - for(var i=0;i=3) return false; - //var evt=event.getParent(); - //if(evt&&(evt.name=='useCard'||evt.name=='respond')) return false; - var type=player.storage.xinfu_yanyu; - var cards=event.cards; - for(var i=0;i=3) event.finish(); - else player.chooseCardButton(event.cards,'【燕语】:是否将其中的一张牌交给一名角色?').ai=function(card){ - if(card.name=='du') return 10; - return get.value(card); - }; - 'step 2' - if(result.bool){ - player.storage.xinfu_yanyu2++; - if(!event.logged){ - player.logSkill('xinfu_yanyu'); - player.addExpose(0.25); - event.logged=true; - } - event.togain=result.links[0]; - event.cards.remove(event.togain); - player.chooseTarget(true,'请选择要获得'+get.translation(event.togain)+'的角色').set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - var card=_status.event.card; - var val=get.value(card); - if(target==_status.currentPhase&&target.hasValueTarget(card)) att=att*2; - return att*val; - }).set('card',event.togain); - } - else event.finish(); - 'step 3' - var target=result.targets[0]; - player.line(target,'green'); - target.gain(event.togain,'gain2'); - if(event.cards.length) event.goto(1); - }, - }, - "xinfu_xiaode":{ - subSkill:{ - remove:{ - unique:true, - charlotte:true, - trigger:{ - player:"phaseAfter", - }, - forced:true, - popup:false, - content:function (){ - player.removeAdditionalSkill('xinfu_xiaode'); - player.removeSkill('xinfu_xiaode_remove'); - }, - }, - }, - trigger:{ - global:"dieAfter", - }, - direct:true, - filter:function (skill,event){ - return !event.hasSkill('xinfu_xiaode_remove'); - }, - content:function (){ - 'step 0' - var list=[]; - var listm=[]; - var listv=[]; - if(trigger.player.name1!=undefined) listm=lib.character[trigger.player.name1][3]; - else listm=lib.character[trigger.player.name][3]; - if(trigger.player.name2!=undefined) listv=lib.character[trigger.player.name2][3]; - listm=listm.concat(listv); - var func=function(skill){ - var info=get.info(skill); - if(info.charlotte||info.zhuSkill||(info.unique&&!info.limited)) return false; - return true; - }; - for(var i=0;i觉醒技 当你使用或打出基本牌时,若你已经已累计发动过3次【翊赞】,你将【翊赞】改为“你可以将一张基本牌当任意基本牌牌使用或打出”。", - wuniang:"武娘", - wuniang_info:"你使用或打出【杀】时,你可以获得一名其他角色的一张牌,然后该角色摸一张牌;若“关索”在场,你可令“关索”也摸一张牌", - zhennan:"镇南", - zhennan_info:"当你成为【南蛮入侵】的目标时,你可令一名其他角色随机受到一至三点伤害", - xushen:"许身", - xushen_info:"当其他男性角色令你脱离濒死状态时,若“关索”不在场,其可以选择是否用“关索”替换其武将牌,然后你回复一点体力并获得技能【镇南】", - - wanwei:'挽危', - wanwei_info:'当你因被其他角色获得或弃置而失去牌时,你可以改为自己选择失去的牌。', - yuejian:'约俭', - yuejian_info:'一名角色的弃牌阶段开始时,若其本回合内使用过的牌数小于X,则你可以令其本回合的手牌上限+X。(X为其的体力上限)', - gzjili:'蒺藜', - gzjili_info:'当你于一回合内使用或打出第X张牌时,你可以摸X张牌(X为你的攻击范围)。', - xiongsuan:'凶算', - xiongsuan_info:'限定技,出牌阶段,你可以弃置一张手牌并选择一名角色,对其造成1点伤害,然后你摸三张牌。若该角色有已发动的限定技,则你选择其中一个限定技。此回合结束后,视为该限定技未发动过。', - diaodu:"调度", - diaodu_info:"当你使用装备牌时,你可以摸一张牌;出牌阶段开始时,你可以获得一名其他角色装备区里的一张牌,然后你可以将此牌交给另一名角色。", - diancai:'典财', - diancai_info:'其他角色的出牌阶段结束时,若你于此阶段失去了X张或更多的牌,则你可以将手牌摸至体力上限。(X为你的体力值)', - zhengbi:'征辟', - zhengbi_info:'出牌阶段开始时,你可以选择一项:选择一名未受伤的其他角色,你对其使用的牌无距离限制且不计入使用次数直到回合结束;或将一张基本牌交给一名其他角色,然后其交给你一张非基本牌或两张基本牌。', - fengying:'奉迎', - fengying_info:'限定技,出牌阶段,你可以弃置所有手牌。若如此做,你可以令等量的角色将手牌摸至X张(X为其体力上限且至多为5)。然后,你结束出牌阶段,并在当前回合结束后进行一个新的回合。', - - qingzhong:'清忠', - qingzhongx:'清忠', - qingzhongx_info:'出牌阶段开始时,你可以摸两张牌,若如此做,此阶段结束时,你与手牌数最少的角色交换手牌。', - weijing:'卫境', - weijing_info:'每轮限一次,当你需要使用【杀】或【闪】时,你可以视为使用一张【杀】或【闪】。', - zishu:'自书', - zishu_info:'锁定技,你的回合外,你获得的牌均会在当前回合结束后置入弃牌堆;你的回合内,当你不因〖自书〗而获得牌时,你摸一张牌。', - yingyuan:'应援', - yingyuan_info:'当你于回合内使用的牌结算完成后,你可以将其交给一名其他角色(相同牌名的牌每回合限一次)。', - xinyingyuan:'应援', - xinyingyuan_info:'当你于回合内使用一张牌后,你可以令一名其他角色从牌堆获得一张与该牌类型相同的牌(每种类型的牌每回合限一次)。', - qianya:'谦雅', - qianya_info:'当你成为锦囊牌的目标后,你可以将任意张手牌交给一名其他角色。', - shuimeng:'说盟', - shuimeng_info:'出牌阶段结束时,你可以与一名角色拼点,若你赢,视为你使用【无中生有】;若你没赢,视为其对你使用【过河拆桥】。', - xianfu:'先辅', - xianfu2:'先辅', - xianfu2_bg:'辅', - xianfu_info:'锁定技,游戏开始时,你选择一名其他角色,当其受到伤害后,你受到等量的伤害,当其回复体力后,你回复等量的体力。', - chouce:'筹策', - chouce_info:'当你受到1点伤害后,你可以判定,若结果为:黑色,你弃置一名角色区域里的一张牌;红色,你选择一名角色,其摸一张牌,若其是〖先辅〗选择的角色,改为其摸两张牌。', - fuqi:'伏骑', - fuqi_info:'锁定技,当你使用牌时,你令所有与你距离为1的其他角色不能使用或打出牌响应此牌。', - jiaozi:'骄恣', - jiaozi_info:'锁定技,若你的手牌数为全场唯一最多,则当你造成或受到伤害时,此伤害+1。', - wy_meirenji:'美人计', - wy_meirenji_info:'出牌阶段,对一名有手牌的其他男性角色使用。每名女性角色各获得其一张手牌并将一张手牌交给你,然后比较你与其的手牌数,手牌少的角色对手牌多的角色造成1点伤害。', - wy_xiaolicangdao:'笑里藏刀', - wy_xiaolicangdao_info:'出牌阶段,对一名其他角色使用。该角色摸X张牌(X为其已损失的体力值且至多为5),然后你对其造成1点伤害。', - weikui:'伪溃', - weikui2:'伪溃', - weikui_info:'出牌阶段限一次,你可以失去1点体力并选择一名有手牌的其他角色,你观看其手牌:若其手牌中有【闪】,则视为你对其使用【杀】,且本回合你计算与其的距离视为1;若其手牌中没有【闪】,你弃置其中一张牌。', - lizhan:'励战', - lizhan_info:'结束阶段,你可以令任意名已受伤的角色摸一张牌。', - wylianji:'连计', - wylianji_info:'出牌阶段限一次,你可以展示一张【杀】或黑色锦囊牌,并令一名其他角色将牌堆中的随机一张武器牌置入装备区(可替换原装备)。然后该角色选择一项:1.对除你以外的角色使用该牌,并将装备区里的武器牌交给该牌的一个目标角色;2.令你对其使用此牌,然后获得此牌,并将装备区内的武器牌交给你。', - // from here - moucheng:'谋逞', - moucheng_info:'觉醒技,当其他角色使用因〖连计〗交给其的牌累计造成伤害达到3点后,你失去技能〖连计〗,然后获得技能〖矜功〗', - jingong:'矜功', - jingong2:'矜功', - jingong_backup:'矜功', - jingong_info:'出牌阶段限一次,你可以将一张装备牌或【杀】当做一张随机锦囊牌使用(三选一,其中一张为【美人计】或【笑里藏刀】),然后本回合的结束阶段,若你于本回合内未造成过伤害,你失去1点体力', - fenyue:'奋钺', - fenyue2:'奋钺', - fenyue2_bg:'钺', - fenyue_info:'出牌阶段限X次,你可以与一名角色拼点,若你赢,你选择一项:1.令其不能使用或打出手牌直到回合结束;2.视为你对其使用了【杀】(不计入次数限制)。若你没赢,你结束出牌阶段。(X为存活的忠臣数)', - - huoshui:'祸水', - huoshui_info:'出牌阶段,你可以明置此武将牌:你的回合内,若此武将牌处于明置状态,其他角色不能明置其武将牌。', - qingcheng:'倾城', - qingcheng_info:'出牌阶段,你可以弃置一张装备牌并选择一名两张武将牌均明置的其他角色,你暗置其一张武将牌', - zhuoshui:'祸水', - zhuoshui_info:'锁定技,准备阶段,你令所有其他角色的非锁定技失效直到回合结束。', - zqingcheng:'倾城', - zqingcheng_info:'出牌阶段,你可以弃置一张装备牌,然后令一名角色翻面并摸两张牌。', - zfengshi:'锋矢', - zfengshi_info:'当你使用【杀】指定目标后,你可以令目标弃置装备区内的一张牌。', - chuanxin:'穿心', - chuanxin_info:'当你于出牌阶段内使用【杀】或【决斗】对目标角色造成伤害时,你可以防止此伤害。若如此做,该角色选择一项:1.弃置装备区里的所有牌,若如此做,其失去1点体力;2.随机移除主武将牌上的一个技能。', - chuanxin_info_guozhan:'当你于出牌阶段内使用【杀】或【决斗】对目标角色造成伤害时,若其与你势力不同且有副将,你可以防止此伤害。若如此做,该角色选择一项:1.弃置装备区里的所有牌,若如此做,其失去1点体力;2.移除副将。', - hengjiang:'横江', - hengjiang2:'横江', - hengjiang_info:'当你受到1点伤害后,你可以令当前回合角色本回合的手牌上限-1。然后若其弃牌阶段内没有弃牌,则你摸一张牌。', - rehengjiang:'横江', - rehengjiang2:'横江', - rehengjiang_info:'当你受到1点伤害后,你可以令当前回合角色本回合的手牌上限-1。然后若其弃牌阶段内没有弃牌,则你摸X张牌(X为你本回合内对其发动过〖横江〗的次数)。', - shuangren:'双刃', - shuangren_info:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对任意一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你结束出牌阶段。', - shuangren_info_guozhan:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对其或与其势力相同的另一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你结束出牌阶段。', - xiashu:'下书', - xiashu_info:'出牌阶段开始时,你可以将所有手牌交给一名其他角色,然后该角色亮出任意数量的手牌(至少一张)。你选择一项:1.获得其亮出的手牌;2.获得其未亮出的手牌。', - kuanshi:'宽释', - kuanshi2:'宽释', - kuanshi_info:'结束阶段,你可以选择一名角色。直到你的下回合开始,该角色第一次受到大于1的伤害时,防止此伤害,然后你跳过下个回合的摸牌阶段。', - bingzheng:'秉正', - bingzheng_info:'出牌阶段结束时,你可以令手牌数不等于体力值的一名角色弃置一张手牌或摸一张牌。然后若其手牌数等于体力值,你摸一张牌,且可以交给该角色一张牌。', - sheyan:'舍宴', - sheyan_info:'当你成为普通锦囊牌的目标时(【借刀杀人】等带有指向目标的锦囊除外),你可以为此牌增加一个目标或令其对其中一个目标无效。(有效目标数至少为一)', - fuman:'抚蛮', - fuman2:'抚蛮', - fuman_info:'出牌阶段,你可以将一张【杀】交给一名本回合未获得过〖抚蛮〗牌的其他角色,其于下个回合结束之前使用〖抚蛮〗牌时,你摸一张牌。', - qizhou:'绮胄', - qizhou_info:'锁定技,你根据装备区里牌的花色数获得以下技能:1种或以上:〖马术〗;2种或以上:〖英姿〗;3种或以上:〖短兵〗;4种:〖奋威〗。', - shanxi:'闪袭', - shanxi_info:'出牌阶段限一次,你可以弃置一张红色基本牌,然后弃置攻击范围内的一名其他角色的一张牌。若弃置的牌是【闪】,你观看其手牌,若弃置的不是【闪】,其观看你的手牌。', - duanbing:'短兵', - duanbing_info:'当你使用【杀】选择目标后,你可以令一名距离为1的其他角色也成为此牌的目标。', - fanghun:'芳魂', - fanghun_info:'当你使用【杀】造成伤害或受到【杀】的伤害后,你获得X个“梅影”标记(X为伤害点数);你可以移去1个“梅影”标记来发动〖龙胆〗并摸一张牌。', - refanghun:'芳魂', - refanghun_info:'当你使用【杀】或成为【杀】的目标后,你获得1个“梅影”标记;你可以移去1个“梅影”标记来发动〖龙胆〗并摸一张牌。', - fanghun_sha:'龙胆', - fuhan:'扶汉', - fuhan_info:'限定技,回合开始时,你可以移去所有“梅影”标记并摸等量的牌,随机观看五名未登场的蜀势力角色,将武将牌替换为其中一名角色,并将体力上限数调整为本局游戏中移去“梅影”标记的数量(至少为2,至多为8),然后回复1点体力。', - refuhan:'扶汉', - refuhan_info:'限定技,回合开始时,你可以移去所有“梅影”标记并摸等量的牌,随机观看五名未登场的蜀势力角色,获得其中一张武将牌上的所有技能。', - yjixi:'觊玺', - yjixi_info:'觉醒技,结束阶段,若你连续三回合没有因〖庸肆〗而失去过体力,则你增加1点体力上限并回复1点体力,然后选择一项:获得技能〖妄尊〗;摸两张牌并获得当前主公的主公技。', - xinyongsi:'庸肆', - xinyongsi1:'庸肆', - xinyongsi2:'庸肆', - xinyongsi_info:'锁定技,摸牌阶段,你令额定摸牌数改为X(X为势力数);弃牌阶段开始时,你选择一项:1.弃置一张牌;2.失去1点体力。', - xiehui:'黠慧', - xiehui2:'黠慧', - xiehui_info:'锁定技,你的黑色牌不计入手牌上限;其他角色获得你的黑色牌时,其不能使用、打出、弃置这些牌直到其体力值减少为止。', - lianzhu:'连诛', - lianzhu_info:'出牌阶段限一次,你可以展示并交给一名其他角色一张牌,若此牌为黑色,其选择一项:1.你摸两张牌;2.弃置两张牌', - zhaolie:'昭烈', - zhaolie_info:'摸牌阶段摸牌时,你可以少摸一张牌并指定攻击范围内的一名角色。你展示牌堆顶的三张牌,将其中的非基本牌和【桃】置于弃牌堆,然后该角色选择一项:1.你对其造成X点伤害,然后其获得这些基本牌;2.其弃置X张牌,然后你获得这些基本牌。(X为其中非基本牌的数量)', - shichou:'誓仇', - shichou2:'誓仇', - shichou_info:'主公技,限定技,准备阶段,你可指定一名蜀势力角色并交给其两张牌。本局游戏中,当你受到伤害时,改为该角色受到等量的伤害并摸等量的牌,直至该角色第一次进入濒死状态。', - shanjia:'缮甲', - shanjia_info:'出牌阶段开始时,你可以摸X张牌,然后弃置等量的牌。若你以此法弃置了装备区内的牌,则你可以视为使用一张【杀】。(X为你于本局游戏内使用过的装备牌数且最大为7)', - tuifeng:'推锋', - tuifeng2:'推锋', - tuifeng_info:'1.当你受到1点伤害后,你可以将一张牌置于武将牌上,称为“锋”。2.准备阶段开始时,若你的武将牌上有“锋”,你移去所有“锋”,摸2X张牌,然后你于此回合的出牌阶段内使用【杀】的次数上限+X。(X为你此次移去的“锋”数)', - ziyuan:'资援', - ziyuan_info:'出牌阶段限一次,你可以将任意张点数之和为13的手牌交给一名其他角色,然后该角色回复1点体力。', - jugu:'巨贾', - jugu_info:'锁定技,1.你的手牌上限+X。2.游戏开始时,你摸X张牌(X为你的体力上限)', - hongde:'弘德', - hongde_info:'当你一次获得或失去至少两张牌后,你可以令一名其他角色摸一张牌。', - dingpan:'定叛', - dingpan_info_identity:'出牌阶段限X次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。(X为场上存活的反贼数)', - dingpan_info_versus:'出牌阶段限X次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。(X为场上存活的敌方角色数)', - dingpan_info:'出牌阶段限一次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。', - weidi:'伪帝', - weidi_info:'锁定技,你视为拥有当前主公的主公技。', - juesi:'决死', - juesi_info:'出牌阶段,你可以弃置一张【杀】并选择攻击范围内的一名有牌的其他角色,该角色弃置一张牌,然后若弃置的牌不是【杀】且你的体力值不大于该角色,你视为对其使用【决斗】。', - zhenlue:'缜略', - zhenlue_info:'锁定技,你使用的普通锦囊牌不能被【无懈可击】响应;你不能成为延时锦囊牌的目标。', - jianshu:'间书', - jianshu_info:'限定技,出牌阶段,你可以将一张黑色手牌交给一名其他角色,并选择另一名其他角色,然后令这两名角色拼点。赢的角色弃置两张牌,没赢的角色失去一点体力。', - yongdi:'拥嫡', - yongdi_info:'限定技,准备阶段开始时,你可令一名其他男性角色增加一点体力上限并回复1点体力,然后若该角色的武将牌上有主公技且其不为主公,其获得此主公技。', - gushe:'鼓舌', - gushe_bg:'舌', - gushe_info:'出牌阶段限一次,你可以用一张手牌与至多三名角色同时拼点,然后依次结算拼点结果,没赢的角色选择一项:1.弃置一张牌;2.令你摸一张牌。若你没赢,你获得一个“饶舌”标记。当你获得第7个“饶舌”标记时,你死亡。', - jici:'激词', - jici_info:'当你因发动〖鼓舌〗而扣置的拼点牌亮出后,若点数小于X,你可令点数+X;若点数等于X,你可令你本回合发动〖鼓舌〗的次数上限+1。(X为你“饶舌”标记的数量)', - shefu:'设伏', - shefu_bg:'伏', - shefu_info:'结束阶段开始时,你可以将一张手牌移出游戏,称为「伏兵」。然后为「伏兵」记录一个基本牌或锦囊牌的名称(须与其他「伏兵」记录的名称均不同)。你的回合外,当有其他角色使用与你记录的「伏兵」牌名相同的牌时,你可以取消此牌的所有目标,然后移去该「伏兵」', - benyu:'贲育', - benyu2:'贲育', - benyu_info:'当你受到伤害后,若你的手牌数不大于伤害来源的手牌数,你可以将手牌摸至与伤害来源手牌数相同(至多摸至5张);否则你可以弃置大于伤害来源手牌数的手牌,然后对其造成1点伤害。', - zhidao:'雉盗', - zhidao_info:'锁定技,当你于你的回合内第一次对区域里有牌的其他角色造成伤害后,你获得其手牌、装备区和判定区里的各一张牌,然后直到回合结束,其他角色不能被选择为你使用牌的目标。', - jili:'寄篱', - jili_info:'锁定技,当一名其他角色成为红色基本牌或红色普通锦囊牌的目标时,若其与你的距离为1且你既不是此牌的使用者也不是目标,你也成为此牌的目标。', - luanzhan:'乱战', - luanzhan_info:'你使用【杀】或黑色普通锦囊牌可以额外选择X名角色为目标;当你使用【杀】或黑色普通锦囊牌指定目标后,若此牌的目标角色数小于X,则X减至0。(X为你于本局游戏内造成过伤害的次数)', - zhengnan:'征南', - zhengnan_info:'其他角色死亡后,你可以摸三张牌并获得下列技能中的任意一个:〖武圣〗、 〖当先〗和〖制蛮〗。', - xinzhengnan:'征南', - xinzhengnan_info:'锁定技,当一名角色进入濒死状态时,若你未因其发动过〖征南〗,则你回复1点体力并摸一张牌并获得下列技能中的任意一个:〖武圣〗、 〖当先〗和〖制蛮〗(若技能全部拥有则改为摸三张牌。你以此法获得的〖当先〗结算时视为已发动过〖伏枥〗)。', - xiefang:'撷芳', - xiefang_info:'锁定技,你计算与其他角色的距离时-X。(X为女性角色数)', - qizhi:'奇制', - qizhi_info:'当你于回合内使用基本牌或锦囊牌指定目标后,你可以弃置不是此牌目标的一名角色的一张牌。若如此做,其摸一张牌。', - jinqu:'进趋', - jinqu_info:'结束阶段开始时,你可以摸两张牌,若如此做,你将手牌弃置至X张。(X为你于此回合发动过〖奇制〗的次数)', - tanhu:'探虎', - tanhu2:'探虎', - tanhu3:'探虎', - tanhu_info:'出牌阶段限一次,你可以与一名其他角色拼点。若你赢,你获得以下效果直到回合结束:你与该角色的距离为1,你对该角色使用的普通锦囊牌不能被【无懈可击】响应。', - mouduan:'谋断', - mouduan_info:'游戏开始时,你获得标记“武”并获得技能〖激昂〗和〖谦逊〗。当你失去手牌后,若手牌数不大于2,你须将你的标记变为“文”,将这两项技能改为〖英姿〗和〖克己〗。一名角色的回合开始前,你可弃一张牌将标记翻回。', - jiqiao:'机巧', - jiqiao_info:'出牌阶段开始时,你可以弃置任意张装备牌,然后亮出牌堆顶两倍数量的牌并获得其中的非装备牌。', - linglong:'玲珑', - linglong_info:'锁定技,若你的装备区没有武器牌,则你使用【杀】的次数上限+1;若你的装备区没有防具牌,视为你装备着【八卦阵】;若你的装备区没有坐骑牌,你的手牌上限+1;若你的装备区没有宝物牌,则你视为拥有技能〖奇才〗。', - fenyong:'愤勇', - fenyong2:'愤勇', - fenyong2_bg:'勇', - fenyong_info:'每当你受到一次伤害后,你可以获得一枚「愤勇」标记;当你拥有「愤勇」标记时,防止你受到的所有伤害。', - xuehen:'雪恨', - xuehen_info:'每个角色的结束阶段开始时,若你有愤勇标记,你弃置之,然后选择一项:1.弃置当前回合角色X张牌(X为你已损失的体力值);2.视为对一名任意角色使用一张【杀】。', - zhenwei:'镇卫', - zhenwei2:'镇卫', - zhenwei_info:'当一名其他角色成为【杀】或黑色锦囊牌的目标时(使用者不是你),若该角色的体力值小于你且此牌的目标角色数为1,你可以弃置一张牌。若如此做,你选择一项:1、摸一张牌,然后将此【杀】或黑色锦囊牌转移给你;2、令此【杀】或黑色锦囊牌无效,然后将此【杀】或黑色锦囊牌置于使用者的武将牌旁,若如此做,当前回合结束后,使用者获得使用者武将牌旁的这些牌。', - jie:'嫉恶', - jie_info:'锁定技,当你使用红色【杀】造成伤害时,此伤害+1。', - dahe:'大喝', - dahe2:'大喝', - dahe2_bg:'喝', - dahe_info:'出牌阶段限一次,你可以与一名其他角色拼点。若你赢,该角色不能使用或打出不为♥花色的【闪】直到回合结束,且你可将该角色拼点的牌交给场上一名体力不多于你的角色。若你没赢,你须展示手牌并弃置其中的一张。', - yinling:'银铃', - yinling_bg:'锦', - yinling_info:'出牌阶段,若你的“锦”小于四张,你可以弃置一张黑色牌并指定一名其他角色。若如此做,你将其的一张牌置于你的武将牌上,称为“锦”。', - junwei:'军威', - junwei2:'军威', - junwei_info:'结束阶段开始时,你可以移去三张“锦”。若如此做,你须指定一名角色并令其选择一项:1.展示一张【闪】,然后你将此【闪】交给一名其他角色。2.该角色失去1点体力,然后你将其装备区内的一张牌移出游戏。该角色的回合结束后,将以此法移出游戏的装备牌移回原处。', - yanxiao:'言笑', - yanxiao2:'言笑', - yanxiao_info:'出牌阶段,你可以将一张♦牌置于一名角色的武将牌上。武将牌上有〖言笑〗牌的角色下个判定阶段开始时,获得〖言笑〗牌及其判定区里的所有牌。', - anxian:'安娴', - anxian_info:'当你使用【杀】对目标角色造成伤害时,你可以防止此伤害,令其弃置一张手牌,然后你摸一张牌;当你成为【杀】的目标后,你可以弃置一张手牌,令此【杀】对你无效,然后此【杀】的使用者摸一张牌。', - xingwu:'星舞', - xingwu_info:'弃牌阶段开始时,你可以将一张与你本回合使用的牌颜色均不同的手牌置于武将牌上:若你有至少三张“星舞”牌,你移去“星舞”牌并选择一名男性角色,该角色受到2点伤害并弃置其装备区的所有牌', - luoyan:'落雁', - luoyan_info:'锁定技。若你的武将牌上有“星舞牌”,你拥有“天香”和“流离”', - yinbing:'引兵', - yinbing_info:'结束阶段开始时,你可以将至少一张非基本牌置于武将牌上。每当你受到【杀】或【决斗】的伤害后,你移去一张「引兵」牌。', - juedi:'绝地', - juedi_info:'锁定技,准备阶段,若你的武将牌上有「引兵」牌,你选择一项:1.移去「引兵」牌,将手牌补至体力上限数;2.将「引兵」牌交给一名体力值不大于你的其他角色,其回复1点体力并摸等量的牌。', - kuangfu:'狂斧', - kuangfu_info:'当你使用【杀】造成伤害时,你可以选择一项:弃置其装备区内的一张牌,或将其装备区内的一张牌移动到你的装备区内。', - xintan:'心惔', - xintan_info:'出牌阶段限一次,你可以移去两张「焚」并选择一名角色,该角色失去一点体力。', - fentian:'焚天', - fentian_info:'锁定技,结束阶段开始时,若你的手牌数少于体力值,你须选择一名攻击范围内的角色,将其一张牌置于你的武将牌上,称为「焚」。锁定技,你的攻击范围+X(X为「焚」的数量)', - zhiri:'炙日', - zhiri_info:'觉醒技,准备阶段开始时,若你的「焚」的数量不小于3,你减1点体力上限,然后获得技能〖心惔〗', - meibu:'魅步', - meibu_info:'其他角色的出牌阶段开始时,若你不在其攻击范围内,你可以令该角色的锦囊牌均视为【杀】,直到该角色以此法使用了一张【杀】或回合结束。若如此做,则直到回合结束,视为你在其攻击范围内。', - mumu:'穆穆', - mumu_info:'出牌阶段限一次,你可以弃置一张【杀】或黑色锦囊牌,然后选择一项:弃置场上的一张武器牌,然后摸一张牌;或将场上的一张防具牌移动到你的装备区里(可替换原防具)。', - zhanyi:'战意', - zhanyi_basic_sha:'战杀', - zhanyi_basic_jiu:'战酒', - zhanyi_basic_tao:'战桃', - zhanyi_info:'出牌阶段限一次,你可以弃置一张牌并失去1点体力,然后根据你弃置的牌获得以下效果直到回合结束:基本牌,你可以将一张基本牌当作【杀】、【酒】或【桃】使用;锦囊牌,摸两张牌且你使用的牌无距离限制;装备牌,你使用【杀】指定目标角色后,其弃置两张牌。', - nuzhan:'怒斩', - nuzhan2:'怒斩', - nuzhan_info:'锁定技,你使用的由一张锦囊牌转化的【杀】不计入出牌阶段的次数限制;锁定技,你使用的由一张装备牌转化的【杀】的伤害值基数+1', - danji:'单骑', - danji_info:'觉醒技,准备阶段开始时,若你的手牌数大于你的体力值且本局游戏的主公不为刘备,你减1点体力上限,然后获得〖马术〗和〖怒斩〗', - jieyuan:'竭缘', - jieyuan_more:'竭缘', - jieyuan_less:'竭缘', - jieyuan_info:'当你对一名其他角色造成伤害时,若其体力值大于或等于你的体力值,你可弃置一张黑色手牌,令此伤害+1;当你受到一名其他角色造成的伤害时,若其体力值大于或等于你的体力值,你可弃置一张红色手牌,令此伤害-1。', - fenxin:'焚心', - fenxin_old:'焚心', - fenxin_info:'锁定技,一名其他角色死亡后,若其身份为:忠臣,你本局内发动〖竭缘〗减少伤害时无视体力值限制;反贼,你本局内发动〖竭缘〗增加伤害时无视体力值限制;内奸,你本局内选择发动〖竭缘〗的牌时无颜色限制。', - fenxin_old_info:'限定技,当你杀死一名非主公角色时,你可以与其交换未翻开的身份牌。(你的身份为主公时不能发动此技能)', - qingyi:'轻逸', - qingyi1:'轻逸', - qingyi2:'轻逸', - qingyi_info:'你可以跳过判定阶段和摸牌阶段。若如此做,视为对一名角色使用了一张无距离限制的【杀】。', - xiandeng:'先登', - xiandeng_info:'锁定技,出牌阶段,你使用的第一张【杀】不计入次数且无距离限制。', - shulv:'熟虑', - shulv_info:'出牌阶段限一次,若你的手牌数大于体力值,则你可以弃置一张牌并摸一张牌。', - xisheng:'牺牲', - xisheng_info:'每名其他角色的回合限一次,你可以将两张牌当做【桃】使用。', - yuhua:'羽化', - yuhua_info:'锁定技,弃牌阶段内,你的非基本牌不计入手牌上限。', - qirang:'祈禳', - qirang_info:'当有装备牌进入你的装备区时,你可以随机获得牌堆中的一张锦囊牌。', - biluan:'避乱', - biluan_info:'摸牌阶段开始时,若有与你距离不大于1的其他角色,你可以放弃摸牌。若如此做,本局内其他角色计算与你的距离时+X。(X为势力数)', - lixia:'礼下', - lixia_info:'锁定技,其他角色的结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸一张牌。本局内其他角色计算与你的距离时-1。', - rebiluan:'避乱', - rebiluan2:'避乱', - rebiluan_info:'结束阶段开始时,若有与你距离不大于1的其他角色,你可以弃置一张牌。若如此做,本局内其他角色计算与你的距离时+X。(X为场上角色数且至多为4)', - relixia:'礼下', - relixia_info:'锁定技,其他角色的结束阶段开始时,若你不在其攻击范围内,你选择一至两项:1.摸一张牌;2.其摸两张牌;3.其回复1点体力。本局内其他角色计算与你的距离时-X(X为你选择的选项数)。', - yishe:'义舍', - yishe_bg:'米', - yishe_info:'结束阶段开始时,若你的武将牌上没有「米」,则你可以摸两张牌。若如此做,你将两张牌置于武将牌上,称为「米」;当有「米」移至其他区域后,若你的武将牌上没有「米」,则你回复1点体力。', - bushi:'布施', - midao:'米道', - bushi_info:'当你受到1点伤害后,或其他角色受到你造成的1点伤害后,受到伤害的角色可以获得你的一张「米」', - midao_info:'一名角色的判定牌生效前,你可以打出一张「米」代替之。', - fengpo:'凤魄', - fengpo_info:'当你于出牌阶段内使用第一张【杀】或【决斗】指定目标后,若目标角色数为1,你可以选择一项:1.摸X张牌;2.令此牌的伤害值基数+X。(X为其手牌中方牌的数量)', - chenqing:'陈情', - chenqing_info:'每轮限一次,当一名角色处于濒死状态时,你可以令另一名其他角色摸四张牌,然后其弃置四张牌。若其以此法弃置的四张牌花色各不相同,则视为该角色对濒死的角色使用一张【桃】。', - mozhi:'默识', - mozhi_info:'结束阶段开始时,你可以将一张手牌当作你本回合出牌阶段内使用的第一张基本或普通锦囊牌使用。然后,你可以将一张手牌当做你本回合出牌阶段内使用的第二张基本或普通锦囊牌使用。(你不能通过此技能使用【酒】)', - ranshang:'燃殇', - ranshang2:'燃殇', - ranshang_info:'锁定技,当你受到1点火焰伤害后,你获得1枚“燃”标记;结束阶段开始时,你失去X点体力(X为“燃”标记的数量)', - hanyong:'悍勇', - hanyong_info:'当你使用【南蛮入侵】或【万箭齐发】时,若你的体力值小于游戏轮数,你可以令此牌的伤害值基数+1。', - - yicong:'义从', - yongsi:'庸肆', - yongsi1:'庸肆', - yongsi2:'庸肆', - bifa:'笔伐', - bifa2:'笔伐', - songci:'颂词', - baobian:'豹变', - lihun:'离魂', - chongzhen:'冲阵', - chongzhen1:'冲阵', - chongzhen2:'冲阵', - yuanhu:'援护', - tianming:'天命', - mizhao:'密诏', - duwu:'黩武', - mingzhe:'明哲', - huanshi:'缓释', - hongyuan:'弘援', - aocai:'傲才', - aocai2:'傲才', - aocai2_backup:'傲才', - aocai3:'傲才', - huxiao:'虎啸', - huxiao3:'虎啸', - xueji:'雪恨', - wuji:'武继', - shushen:'淑慎', - shenzhi:'神智', - xiongyi:'雄异', - junbing:'郡兵', - junbing2:'郡兵', - quji:'去疾', - sijian:'死谏', - suishi:'随势', - suishi2:'随势', - xiaoguo:'骁果', - duanxie:'断绁', - fenming:'奋命', - guixiu:'闺秀', - cunsi:'存嗣', - yongjue:'勇决', - hengzheng:'横征', - shengxi:'生息', - shoucheng:'守成', - shangyi:'尚义', - zniaoxiang:'鸟翔', - zhendu:'鸩毒', - qiluan:'戚乱', - qiluan2:'戚乱', - qiluan3:'戚乱', - shenxian:'甚贤', - oldshenxian:'甚贤', - qiangwu:'枪舞', - moukui:'谋溃', - moukui2:'谋溃', - lirang:'礼让', - mingshi:'名士', - liangzhu:'良助', - kaikang:'慷忾', - wangzun:'妄尊', - tongji:'同疾', - kuiwei:'溃围', - kuiwei2:'溃围', - yanzheng:'严整', - zhoufu:'咒缚', - zhoufu2:'咒缚', - zhoufu3:'咒缚', - yingbin:'影兵', - reyingbing:'影兵', - rezhoufu:'咒缚', - rezhoufu2:'咒缚', - fenxun:'奋迅', - fenxun2:'奋迅', - spmengjin:'猛进', - xiemu:'协穆', - xiemu2:'协穆', - oldxiemu:'协穆', - naman:'纳蛮', - zuixiang:'醉乡', - manjuan:'漫卷', - taichen:'抬榇', - jilei:'鸡肋', - jilei2:'鸡肋', - jilei2_bg:'肋', - fulu:'符箓', - fuji:'助祭', - yawang:'雅望', - xunzhi:'殉志', - fanxiang:'返乡', - fanxiang_info:'觉醒技,准备阶段开始时,若场上有已受伤且你发动过〖良助〗的选项二的角色,则你加1点体力上限并回复1点体力,失去技能〖良助〗并获得技能〖枭姬〗', - xunzhi_info:'准备阶段开始时,若你的上家和下家与你的体力值均不相等,你可以失去1点体力。若如此做,你本局内手牌上限+2。', - yawang_info:'锁定技,摸牌阶段开始时,你改为摸X张牌,然后你于本回合的出牌阶段内至多使用X张牌(X为与你体力值相等的角色数)', - fuji_info:'当一名角色造成雷属性伤害时,你可以令其进行判定,若结果为黑色,此伤害+1;若结果为红色,该角色获得判定牌。', - fulu_info:'当你声明使用普通【杀】时,你可以将此【杀】改为雷【杀】。', - jilei_info:'当你受到有来源的伤害后,你可以声明一种牌的类别。若如此做,你令伤害来源不能使用、打出或弃置此类别的手牌,直到其下个回合开始。', - danlao:'啖酪', - danlao_info:'当你成为一张指定了多个目标的【杀】或普通锦囊牌的目标时,你可以摸一张牌,令此牌对你无效。', - gongao:'功獒', - zhuiji:'追击', - chouhai:'仇海', - chouhai_info:'锁定技,当你受到伤害时,若你没有手牌,此伤害+1。', - rechouhai:'仇海', - rechouhai_info:'锁定技,当你受到渠道为【杀】的伤害时,若你没有手牌,此伤害+1。', - guiming:'归命', - guiming_info:'主公技,锁定技,你将残蚀描述中的“已受伤角色”改为“已受伤角色或其他吴势力角色”', - chixin:'赤心', - chixin1:'赤心', - chixin2:'赤心', - chixin_info:'你可以将♦牌当作【杀】或【闪】使用或打出。出牌阶段,你对在你攻击范围内且本回合内未成为过你使用的【杀】的目标的角色使用的【杀】没有次数限制。', - suiren:'随仁', - suiren_info:'限定技,准备阶段开始时,你可以失去技能〖义从〗,然后加1点体力上限并回复1点体力,然后令一名角色摸三张牌。', - canshi:'残蚀', - canshi2:'残蚀', - canshi_info:'摸牌阶段开始时,你可以改为摸X张牌(X为已受伤的角色数),若如此做,当你于此回合内使用基本牌或锦囊牌时,你弃置一张牌。', - recanshi:'残蚀', - recanshi2:'残蚀', - recanshi_info:'摸牌阶段开始时,你可以多摸X张牌(X为已受伤的角色数),若如此做,当你于此回合内使用【杀】或锦囊牌时,你弃置一张牌。', - zhuiji_info:'锁定技,你与体力值不大于你的角色的距离视为1。', - kunfen:'困奋', - kunfen_info:'锁定技,结束阶段开始时,你失去1点体力,然后摸两张牌。', - fengliang:'逢亮', - fengliang_info:'觉醒技,当你进入濒死状态时,你减1点体力上限,将体力值回复至2点,获得技能〖挑衅〗并将〖困奋〗改为非锁定技。', - oldcihuai:'刺槐', - oldcihuai2:'刺槐', - oldcihuai_info:'出牌阶段开始时,你可以展示手牌。若其中没有【杀】,则当你于此阶段内手牌数变化之前/有角色死亡之前需要使用【杀】时,你可以使用无对应实体牌的【杀】。', - cihuai:'刺槐', - cihuai_info:'出牌阶段开始时,若你的手牌中没有【杀】,则你可以展示你的手牌,视为对一名角色使用一张【杀】。', - gongao_info:'锁定技,当一名角色死亡后,你增加一点体力上限,回复一点体力。', - juyi:'举义', - juyi_info:'觉醒技,准备阶段开始时,若你已受伤且体力上限大于存活角色数,你须将手牌摸至体力上限,然后获得技能〖崩坏〗和〖威重〗。', - weizhong:'威重', - weizhong_info:'锁定技,当你的体力上限增加或减少时,你摸一张牌。', - taichen_info:'出牌阶段限一次,你可以失去1点体力,视为对一名角色使用一张【杀】。(不计入出牌阶段的使用次数限制)', - manjuan_info:'其他角色的牌因弃置而进入弃牌堆后,你可以弃置一张花色与之不同的牌,然后获得此牌。', - xinmanjuan:'漫卷', - xinmanjuan_info:'锁定技,当你不因【漫卷】或【醉乡】而获得牌时,你将此牌置入弃牌堆。然后若此时处于你的回合内,则你可以从弃牌堆中选择获得一张与此牌点数相同的其他牌。', - zuixiang_info:'限定技,准备阶段开始时,你可以展示牌堆顶的3张牌并置于你的武将牌上。你不能使用或打出与该些牌同类的牌,所有同类牌对你无效。之后的每个准备阶段,你须重复展示一次,直到这些牌中任意两张点数相同。然后,你获得这些牌。', - naman_info:'当其他角色打出的【杀】进入弃牌堆时,你可以获得之。', - xiemu_info:'出牌阶段限一次,你可以弃置一张【杀】并选择一个势力。若如此做,直到你的下回合开始时,当你成为该势力的其他角色使用的黑色牌的目标后,你摸两张牌。', - oldxiemu_info:'当你成为其他角色使用的黑色牌的目标后,你可以弃置一张【杀】,然后摸两张牌。', - spmengjin_info:'当你使用【杀】指定目标后,你可以弃置目标角色的一张牌。', - fenxun_info:'出牌阶段限一次,你可以弃置一张牌并选择一名其他角色,你于本回合内至其的距离视为1。', - rezhoufu_info:'出牌阶段限一次,你可以用一张牌对一名其他角色施“咒”。当有“咒”的角色判定时,将“咒”作为判定牌;一名角色的回合结束时,你令本回合移除过“咒”的角色各失去1点体力', - reyingbing_info:'锁定技,有“咒”的角色使用与“咒”颜色相同的牌时,你摸一张牌;若这是你第二次因该“咒”摸牌,你获得该"咒"。', - yingbin_info:'锁定技,有“咒”的角色使用与“咒”花色相同的牌时,你摸一张牌;当你因同一名角色的同一张“咒”的效果摸第二张牌时,移去该“咒”。', - zhoufu_info:'出牌阶段限一次,你可以将一张手牌置于一名没有“咒”的其他角色的武将牌旁,称为“咒”。当有“咒”的角色判定时,其改为将“咒”作为判定牌;一名角色的回合结束时,若有角色于此回合因判定而移除过“咒”,则你令这些角色各失去1点体力。', - yanzheng_info:'若你的手牌数大于你的体力值,则你可以将你装备区内的牌当作【无懈可击】使用。', - kuiwei_info:'结束阶段开始时,你可以摸2+X张牌并记录X,然后将你的武将牌翻面(X为场上所有角色装备区内武器牌数目之和)。你的下个摸牌阶段开始时,你弃置X张牌。', - tongji_info:'锁定技。若你的手牌数大于你的体力值,则攻击范围包含你的其他角色使用【杀】时不能指定你以外的角色为目标。', - wangzun_info:'其他角色的准备阶段开始时,你可以摸一张牌。若如此做,该角色此回合的手牌上限-1。然后你不能再发动〖妄尊〗直到回合开始。', - kaikang_info:'当一名角色成为【杀】的目标后,若你至该角色的距离为1,你可以摸一张牌。若如此做,你交给其一张牌并展示之。若为装备牌,该角色可以使用此牌。', - liangzhu_info:'当一名角色于其出牌阶段内回复体力时,你可以选择一项:1、摸一张牌;2、令该角色摸两张牌。', - mingshi_info:'当你受到伤害时,若伤害来源的体力值大于你,你可以弃置一张黑色手牌,令伤害值-1。', - lirang_info:'当你的牌因弃置而置入弃牌堆后,你可以将其中的任意张牌交给其他角色。', - moukui_info:'当你使用【杀】指定目标后,你可以选择一项:摸一张牌,或弃置其一张牌。若如此做,当此【杀】被【闪】抵消时,目标角色弃置你的一张牌。 ', - qiangwu_info:'出牌阶段,你可以进行判定。若如此做,直到回合结束,你使用点数小于判定结果的【杀】时不受距离限制,且你使用点数大于判定结果的【杀】时不计入出牌阶段的使用次数限制。', - shenxian_info:'每名角色的回合限一次,你的回合外,当有其他角色因弃置而失去基本牌时,你可以摸一张牌。', - oldshenxian_info:'你的回合外,每当有其他角色因弃置而失去基本牌时,你可以摸一张牌。', - qiluan_info:'一名角色的回合结束时,你可以摸3X+Y张牌。(X为你本回合内杀死过的角色数,Y为本回合内其他角色杀死过的角色数)', - //qiluan_info_guozhan:'一名角色的回合结束时,若你于回合内杀死过角色,则你可以摸三张牌。', - zhendu_info:'一名角色的出牌阶段开始时,你可以弃置一张手牌,视为该角色使用了一张【酒】。若该角色不是你,你对其造成一点伤害。', - //zhendu_info_guozhan:'其他角色的出牌阶段开始时,你可以弃置一张手牌,视为该角色使用了一张【酒】。若如此做,你对其造成一点伤害。', - shangyi_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后弃置其中的一张黑色牌。', - zniaoxiang_info:'锁定技,当你使用【杀】指定目标后,你令目标角色响应此【杀】所需要使用的【闪】的数目+1。', - shoucheng_info:'当一名其他角色于其回合外失去手牌时,若其没有手牌,则你可令该角色摸一张牌。', - shengxi_info:'弃牌阶段开始时,若你本回合内未造成过伤害,则你可以摸两张牌。', - hengzheng_info:'摸牌阶段开始时,若你的体力值为1或你没有手牌,则你可以放弃摸牌,改为获得每名其他角色区域内的一张牌。', - cunsi_info:'限定技,出牌阶段,你可以将所有手牌交给一名男性角色。该角色获得技能【勇决】,然后你将武将牌翻面。', - yongjue_info:'每回合限一次。当其他角色于回合内使用的【杀】结算完成后,若你不是此【杀】的目标角色,则你可以获得之。', - guixiu_info:'当你成为【杀】的目标后,若你的手牌数小于体力值,则你可以摸一张牌。', - fenming_info:'结束阶段开始时,若你处于横置状态,你可以弃置所有处于横置状态的角色的各一张牌。', - duanxie_info:'出牌阶段限一次,你可以令一名其他角色横置,若如此做,你横置。', - xiaoguo_info:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌,然后你摸一张牌;2.受到你对其造成的1点伤害。', - sijian_info:'当你失去最后的手牌时,你可以弃置一名其他角色的一张牌。', - suishi_info:'当其他角色进入濒死状态时,伤害来源可以令你摸一张牌;当其他角色死亡时,伤害来源可以令你失去1点体力', - quji_info:'出牌阶段限一次,你可以弃置X张牌(X为你已损失的体力值),然后令至多X名已受伤的角色各回复1点体力。若你以此法弃置的牌中有黑色牌,你失去一点体力。', - junbing_info:'一名角色的结束阶段开始时,若其手牌数不大于1,该角色可以摸一张牌。若如此做,该角色将所有手牌交给你,然后你交给其等量的牌。', - xiongyi_info:'限定技,出牌阶段,你可以选择至多三名角色,这些角色各摸三张牌;若你选择的角色数不超过2,你回复1点体力', - xiongyi_info_guozhan:'限定技,出牌阶段,你可以令与你势力相同的所有角色各摸三张牌,然后若你的势力是角色最少的势力(或之一),则你回复1点体力。', - shenzhi_info:'准备阶段开始时,你可以弃置所有手牌。若你以此法弃置的牌数不小于X,你回复1点体力(X为你的体力值)。', - shushen_info:'当你回复1点体力时,你可以令一名其他角色选择回复1点体力或摸两张牌。', - wuji_info:'觉醒技,结束阶段开始时,若你于此回合内造成过3点或更多伤害,你加1点体力上限并回复1点体力,失去〖虎啸〗,然后从场上、牌堆或弃牌堆中获得【青龙偃月刀】', - xueji_info:'出牌阶段限一次,你可以弃置一张红色牌,然后选择至多X名角色,横置这些角色并对其中一名角色造成1点火焰伤害。(X为你已损失的体力值且至少为1)', - huxiao_info:'锁定技,当你造成火属性伤害时,该角色摸一张牌。然后,你于此回合内对其使用牌没有次数限制。', - aocai_info:'当你于回合外需要使用或打出一张基本牌时,你可以观看牌堆顶的两张牌。若你观看的牌中有此牌,你可以使用打出之。', - hongyuan_info:'摸牌阶段,你可以少摸一张牌并指定至多两名其他角色。若如此做,这些角色各摸一张牌。', - hongyuan_info_combat:'摸牌阶段,你可以少摸一张牌。若如此做,其他友方角色各摸一张牌。', - huanshi_info:'一名角色的判定牌生效前,你可令其观看你的手牌。若如此做,该角色选择你的一张牌,你打出此牌代替之。', - mingzhe_info:'当你于回合外使用或打出红色牌,或因弃置失去一张红色牌后,你可以摸一张牌。', - duwu_info:'出牌阶段,你可以弃置X张牌对你攻击范围内的一名其他角色造成1点伤害(X为该角色的体力值)。若该角色因此法进入濒死状态,则你于濒死状态结算后失去1点体力,且本回合不能再发动〖黩武〗。', - tianming_info:'当你成为【杀】的目标时,你可以弃置两张牌(不足则全弃,无牌则不弃),然后摸两张牌;若此时全场体力值最多的角色仅有一名且不是你,该角色也可以如此做。', - mizhao_info:'出牌阶段限一次,你可以将所有手牌交给一名其他角色。若如此做,你令该角色与你指定的另一名有手牌的角色拼点,视为拼点赢的角色对没赢的角色使用一张【杀】。', - yuanhu_info:'结束阶段开始时,你可以将一张装备牌置于一名角色的装备区里,然后根据此装备牌的类型执行以下对应效果。武器牌:弃置该角色距离1以内的一名角色区域中的一张牌;防具牌:该角色摸一张牌;坐骑牌:该角色回复1点体力。', - lihun_info:'出牌阶段限一次,你可以弃置一张牌并选择一名其他男性角色。若如此做,你将武将牌翻面并获得其所有手牌。出牌阶段结束时,你交给其X张牌。(X为该角色的体力值)', - chongzhen_info:'当你发动〖龙胆〗使用或打出一张牌时,你可以获得对方的一张手牌。', - bifa_info:'结束阶段开始时,你可以将一张手牌移出游戏并指定一名其他角色。该角色的准备阶段开始时,其观看你移出游戏的牌并选择一项:交给你一张与此牌类型相同的手牌并获得此牌;或将此牌置入弃牌堆,然后失去1点体力。', - songci_info:'出牌阶段,你可以选择一项:令一名手牌数小于其体力值的角色摸两张牌;或令一名手牌数大于其体力值的角色弃置两张牌。每局游戏每名角色限一次。', - yongsi_info:'锁定技,摸牌阶段,你多摸X张牌。弃牌阶段开始时,你弃置X张牌。(X为场上势力数)', - yicong_info:'锁定技,当你的体力值大于2时,你计算与其他角色的距离时-1;当你的体力值不大于2时,其他角色计算与你的距离时+1。', - baobian_info:'锁定技,若你的体力值为3或更少,你视为拥有技能〖挑衅〗;若你的体力值为2或更少;你视为拥有技能〖咆哮〗;若你的体力值为1,你视为拥有技能〖神速〗。', - bingzhao:'秉诏', - bingzhao_info:'主公技,游戏开始时,你选择一个其他势力。当你对该势力的角色发动〖骨疽〗时,其可令你额外摸一张牌。', - sp_gongsunzan:'SP公孙瓒', - sp_simazhao:'SP司马昭', - sp_wangyuanji:'SP王元姬', - sp_xinxianying:'SP辛宪英', - sp_liuxie:'SP刘协', - spyicong_info:'弃牌阶段结束时,你可以将任意张牌置于你的武将牌上,称为「扈」。每有一张「扈」,其他角色与你计算距离时便+1。', - spyicong:'义从', - sptuji:'突骑', - sptuji_info:'准备开始时,你将所有「扈」置于弃牌堆,然后你本回合内计算与其他角色的距离时-X。若X不大于1,你摸一张牌。(X为以此法进入弃牌堆的「扈」的数量)', - sphuangen:'皇恩', - sphuangen_info:'一名角色使用锦囊牌指定目标时,若此牌的目标数大于1,则你可以令此牌对其中的至多X个目标无效,然后摸一张牌。(X为你的体力值)', - sphantong:'汉统', - sphantong_gain:'汉统', - sphantong_info:'当你的牌因弃牌阶段的游戏规则要求而进入弃牌堆后,你可以将这些牌置于你的武将牌上,称为「诏」。一名角色的回合开始时,你可以弃置一张「诏」并获得〖护驾〗/〖激将〗/〖救援〗/〖血裔〗中的一个技能直至当前回合结束。', - spzhaoxin:'昭心', - spzhaoxin_info:'摸牌阶段结束时,你可以展示所有手牌,然后视为使用一张【杀】。', - splanggu:'狼顾', - splanggu_rewrite:'狼顾', - splanggu_info:'当你受到有来源的伤害后,你可以进行判定(此判定结果生效前,你可以打出一张手牌替换判定牌)。然后你可以观看伤害来源的手牌并弃置其中的任意张与判定结果花色相同的牌。', - spfuluan:'扶乱', - spfuluan_info:'出牌阶段限一次,你可以弃置三张花色相同的牌并选择攻击范围内的一名角色。若如此做,该角色翻面且你不能使用【杀】直到回合结束', - spshude:'淑德', - spshude_info:'结束阶段开始时,你可以将手牌补至体力上限。', - spmingjian:'明鉴', - spmingjian_info:'一名角色的回合开始时,你可以选择一项:①弃置一张牌,然后其跳过本回合的判定阶段。②将一张手牌置于其武将牌上,然后其本回合内进行判定时不触发「判定结果生效前」的时机,且其回合结束时将此牌置入弃牌堆。', - spyinzhi:'隐智', - spyinzhi_info:'当你受到1点伤害后,你可以展示牌堆顶的两张牌。若其中有黑桃牌,则你可以进行至多X次「令一名角色获得伤害来源的一张手牌」的步骤,然后获得其余的牌。(X为其中黑桃牌的数量)', - sunshao:'孙邵', - bizheng:'弼政', - bizheng_info:'摸牌阶段结束时,你可以令一名其他角色摸两张牌。然后,若你的手牌数大于体力上限,你弃置两张牌。若其的手牌数大于体力上限,其弃置两张牌。', - yidian:'佚典', - yidian_info:'当你使用牌选择目标时,若弃牌堆中没有与此牌名称相同的牌,则你可以为此牌增加一个目标(无距离限制)。', - xinlianji:'连计', - xinlianji_info:'出牌阶段限一次,你可以弃置一张手牌,令其使用牌堆中的一张随机武器牌,然后选择一项:对你指定的一名角色使用【杀】,或令你将其装备区里的武器牌交给任意角色。', - xinmoucheng:'谋逞', - xinmoucheng_info:'觉醒技,准备阶段,若你已经发动了3次以上的〖连计〗,则你失去〖连计〗并获得〖矜功〗。', - xinjingong:'矜功', - xinjingong_info:'出牌阶段限一次,你可以将一张【杀】或装备牌当做三张随机锦囊牌中的一张使用。', - caiyang:'蔡阳', - yinka:'印卡', - zhangling:'张陵', - zlhuji:'虎骑', - zlhuji_info:'锁定技,你与其他角色的距离-1,你于回合外受到伤害后进行判定,若结果为红色,视为你对伤害来源使用一张【杀】(无视距离)。', - zlshoufu:'授符', - zlshoufu2:'授符', - zlshoufu_info:'出牌阶段限一次,你可摸一张牌,然后将一张手牌置于一名没有【箓】的角色的武将牌上,称为【箓】;其不能使用和打出与【箓】同类型的牌。该角色受伤后,或于弃牌阶段弃置至少2张与【箓】同类型的牌后,将【箓】置入弃牌堆。', - ol_zhangchangpu:'OL张昌蒲', - olxingshen:'省身', - olxingshen_info:'当你受到伤害后,你可以随机摸两张牌。若如此做,你移去所有“省”并获得X个“省”,且下一次发动〖严教〗展示牌时移去所有“省”并多展示等量的牌。(X为你已损失的体力值)', - - sp_default:"常规", - sp_zhongdan:"忠胆英杰", - sp_star:"桌游志·SP", - sp_guozhan:"国战", - sp_guozhan2:"国战移植", - sp_others:"其他", - sp_single:'新1v1', - sp_sticker:'桌游志·贴纸', - }, - }; -}); +'use strict'; +game.import('character',function(lib,game,ui,get,ai,_status){ + return { + name:'sp', + connect:true, + characterSort:{ + sp:{ + sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu'], + sp_zhongdan:["cuiyan","huangfusong"], + sp_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"], + sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'], + sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan"], + sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi"], + sp_single:["hejin","hansui","niujin"], + sp_others:["hanba","caiyang"], + }, + }, + characterFilter:{}, + character:{ + //caoshuang:['male','wei',4,['tuogu','shanzhuan']], + ol_zhangchangpu:['female','wei',3,['yanjiao','olxingshen']], + zhangling:['male','qun',4,['zlhuji','zlshoufu'],['unseen']], + caiyang:['male','qun',1,['yinka'],['forbidai','unseen']], + panfeng:['male','qun',4,['kuangfu']], + sunshao:['male','wu',3,['bizheng','yidian']], + sp_gongsunzan:['male','qun',4,['spyicong','sptuji']], + sp_simazhao:['male','wei',3,['spzhaoxin','splanggu']], + sp_wangyuanji:['female','wei',3,['spfuluan','spshude']], + sp_xinxianying:['female','wei',3,['spmingjian','spyinzhi']], + sp_liuxie:['male','qun',3,['sphuangen','sphantong']], + + huangfusong:['male','qun',4,['xinfenyue']], + yuantanyuanshang:['male','qun',4,['neifa']], + xujing:['male','shu',3,['yuxu','xjshijian']], + + hejin:['male','qun',4,['mouzhu','yanhuo']], + hansui:['male','qun',4,['mashu','niluan']], + niujin:['male','wei',4,['cuorui','liewei']], + jianggan:["male","wei",3,["weicheng","daoshu"]], + + caoying:["female","wei",4,["xinfu_lingren","xinfu_fujian"],[]], + simahui:["male","qun",3,["xinfu_jianjie","xinfu_chenghao","xinfu_yinshi"],[]], + baosanniang:["female","shu",3,["xinfu_wuniang","xinfu_xushen"],[]], + + sp_xiahoushi:["female","shu",3,["xinfu_yanyu","xinfu_xiaode"],[]], + + + yangxiu:['male','wei',3,['jilei','danlao']], + chenlin:['male','wei',3,['bifa','songci']], + caohong:['male','wei',4,['yuanhu']], + xiahouba:['male','shu',4,['baobian']], + yuanshu:['male','qun',4,['yongsi','weidi']], + sp_diaochan:['female','qun',3,['lihun','rebiyue']], + sp_zhaoyun:['male','qun',3,['ollongdan','chongzhen']], + jsp_zhaoyun:['male','qun',3,['chixin','yicong','suiren']], + liuxie:['male','qun',3,['tianming','mizhao']], + zhugejin:['male','wu',3,['hongyuan','huanshi','mingzhe']], + zhugeke:['male','wu',3,['aocai','duwu']], + guanyinping:['female','shu',3,['huxiao','xueji','wuji']], + simalang:['male','wei',3,['junbing','quji']], + zhangxingcai:['female','shu',3,['shenxian','qiangwu']], + fuwan:['male','qun',4,['moukui']], + sp_sunshangxiang:['female','shu',3,['liangzhu','fanxiang']], + caoang:['male','wei',4,['kaikang']], + sp_caoren:['male','wei',4,['weikui','lizhan']], + zhangbao:['male','qun',3,['rezhoufu','reyingbing']], + huangjinleishi:['female','qun',3,['fulu','fuji']], + maliang:['male','shu',3,['zishu','xinyingyuan']], + sp_pangtong:['male','qun',3,['xinmanjuan','zuixiang']], + zhugedan:['male','wei',4,['gongao','juyi']], + sp_jiangwei:['male','wei',4,['kunfen','fengliang']], + sp_machao:['male','qun',4,['zhuiji','ol_shichou']], + sunhao:['male','wu',5,['recanshi','rechouhai','guiming'],['zhu']], + shixie:['male','qun',3,['rebiluan','relixia']], + mayunlu:['female','shu',4,['fengpo','mashu']], + zhanglu:['male','qun',3,['yishe','bushi','midao']], + wutugu:['male','qun',15,['ranshang','hanyong']], + sp_caiwenji:['female','wei',3,['chenqing','mozhi']], + zhugeguo:['female','shu',3,['yuhua','qirang']], + + lingju:['female','qun',3,['jieyuan','fenxin']], + + cuiyan:['male','wei',3,['yawang','xunzhi']], + sp_zhangfei:['male','shu',4,['jie','dahe']], + jsp_guanyu:['male','wei',4,['new_rewusheng','danji']], + jsp_huangyueying:['female','qun',3,['jiqiao','linglong']], + sunluyu:['female','wu',3,['new_meibu','new_mumu']], + hanba:['female','qun',4,['fentian','zhiri']], + zumao:['male','wu',4,['yinbing','juedi']], + wenpin:['male','wei',4,['zhenwei']], + daxiaoqiao:['female','wu',3,['new_xingwu','new_luoyan']], + sp_daqiao:['female','wu',3,['yanxiao','anxian']], + sp_ganning:['male','qun',4,['yinling','junwei']], + sp_xiahoudun:['male','wei',4,['fenyong','xuehen'],['die_audio']], + sp_lvmeng:['male','wu',3,['tanhu','mouduan']], + + guansuo:['male','shu',4,['xinzhengnan','xiefang']], + tadun:['male','qun',4,['luanzhan']], + yanbaihu:['male','qun',4,['zhidao','jili']], + chengyu:['male','wei',3,['shefu','benyu']], + + wanglang:['male','wei',3,['gushe','jici']], + sp_pangde:['male','wei',4,['mashu','juesi']], + sp_jiaxu:['male','wei',3,['zhenlue','jianshu','yongdi']], + + litong:['male','wei',4,['tuifeng']], + mizhu:['male','shu',3,['ziyuan','jugu']], + buzhi:['male','wu',3,['hongde','dingpan']], + + sp_liubei:['male','shu',4,['zhaolie','shichou'],['zhu']], + caochun:['male','wei',4,['xinshanjia']], + + dongbai:['female','qun',3,['lianzhu','xiehui']], + + zhaoxiang:['female','shu',4,['refanghun','refuhan']], + mazhong:['male','shu',4,['fuman']], + dongyun:['male','shu',3,['bingzheng','sheyan']], + kanze:['male','wu',3,['xiashu','kuanshi']], + heqi:['male','wu',4,['qizhou','shanxi']], + + ganfuren:['female','shu',3,['shushen','shenzhi']], + mifuren:['female','shu',3,['guixiu','cunsi']], + mateng:['male','qun',4,['xiongyi','mashu']], + tianfeng:['male','qun',3,['sijian','suishi']], + yuejin:['male','wei',4,['xiaoguo']], + chendong:['male','wu',4,['duanxie','fenming']], + sp_dongzhuo:['male','qun',5,['hengzheng']], + jiangfei:['male','shu',3,['shengxi','shoucheng']], + jiangqing:['male','wu',4,['shangyi','zniaoxiang']], + hetaihou:['female','qun',3,['zhendu','qiluan']], + kongrong:['male','qun',3,['lirang','mingshi']], + dingfeng:['male','wu',4,['fenxun','duanbing']], + bianfuren:['female','wei',3,['wanwei','yuejian']], + shamoke:['male','shu',4,['gzjili']], + liqueguosi:['male','qun',4,['xiongsuan']], + lvfan:['male','wu',3,['diaodu','diancai']], + cuimao:['male','wei',3,['zhengbi','fengying']], + + jiling:['male','qun',4,['shuangren']], + zangba:['male','wei',4,['rehengjiang']], + zhangren:['male','qun',4,['chuanxin','zfengshi']], + zoushi:['female','qun',3,['zhuoshui','zqingcheng']], + + wangyun:['male','qun',4,['xinlianji','xinmoucheng']], + sunqian:['male','shu',3,['qianya','shuimeng']], + xizhicai:['male','wei',3,['tiandu','xianfu','chouce']], + quyi:['male','qun',4,['fuqi','jiaozi']], + + luzhi:['male','wei',3,['qingzhongx','weijing']], + + //kaisa:["male","western",4,["zhengfu"]], + }, + characterIntro:{ + caoshuang:'曹爽(?-249年2月9日),字昭伯,沛国谯县(今安徽亳州市)人。三国时期魏国权臣,大司马曹真长子。曹爽体态肥胖,凭借宗室身份,出入宫廷,交好太子曹叡。魏明帝即位,起家员外散骑侍郎,累迁城门校尉、散骑常侍,转武卫将军。太和五年(231年),袭封邵陵侯。景初三年(239年),魏明帝曹叡病危,拜大将军、假黄钺,与司马懿并为托孤大臣。少帝曹芳即位,加侍中,改封武安侯。势倾四海,声震天下。任用私人,专权乱政,侵吞公产。伐蜀失败,虚耗国力。起居逾制,软禁郭太后。正始十年,太傅司马懿发动高平陵政变,掌握魏国大权。曹爽失去大将军职务,以谋反之罪处死,夷灭三族。', + zhangling:'张道陵(34年2月22日—156年),字辅汉,原名陵,道教正一道实际创立者,汉朝东汉时期丰邑(今江苏徐州丰县)人。太上老君降临蜀地,“授以三天正法,命为天师”,张道陵整合当时的:黄老派、方仙道、文始派等先秦修道团体,创立道教称正一盟威之道。后世尊称为“老祖天师”、“正一真人”、“三天扶教大法师”、高明上帝、张天师。著作《老子想尔注》,弟子有3000多人,设立24治,奠基天师道。张道陵、葛玄、许逊、萨守坚合称四大天师。张道陵创建道教的背景:当时在巴蜀一带,原有巴人信奉原始巫教,大规模的淫祀而害民。而这些祀奉鬼妖(学名为:妖邪)的法教巫师聚众敛财,无恶不作。张天师携王长、赵升二位弟子和黄帝九鼎丹经,来到北邙山修行,平定了那些祸害百姓的巫妖之教。川渝一带流传的张天师以太上老君剑印符箓大破鬼兵的故事就是以此为原型的。', + caiyang:'蔡阳(?-201年),又作蔡扬,东汉丞相曹操部下武将,汝南太守。于建安六年(201)奉曹操之命攻击与刘备联合的汝南贼龚都等人,兵败被刘备所杀。明代小说《三国演义》改编为“云长擂鼓斩蔡阳”。', + pujing:'湖北省当阳境内有一座山,名叫玉泉山。东汉建安末年,山上住着一个老和尚,法名普净,普净原来是沂水关镇国寺方丈,后因云游天下,来到此处,风这地方山明水秀,就于山中结草为庵,每天坐禅参道,身边只有一个小和尚,外出化一些斋饭,供养师父。在《三国演义》中,当关羽通过汜水关时,正是由于普净提醒,关羽才揭穿了卞喜的阴谋,并杀死了卞喜。关羽死后,其怨魂亦在普净的指点下醒悟,放下了心中的仇恨,专心致力于造福一方百姓。', + huban:'为《三国演义》所杜撰的人物,正史无记载,荥阳太守王植麾下从事、桓帝时议郎胡华之子。关羽过五关斩六将时其中一关就是王植所镇守,胡班奉命放火夜袭关公,因敬服公之气概,并得其父托公所带家书,班看毕,叹曰:“险些误杀忠良!”故将之放走。胡班到荆州来投降关公,公念其旧日相救之情,甚爱之;令随费诗入川,见汉中王受爵。费诗辞别关公,带了胡班,自回蜀中去了。', + chunyuqiong:'淳于琼(?-200年),字仲简,颍川(治今河南禹州)人。东汉时期官吏,于汉灵帝中平五年(188)被任命为西园八校尉之一的右校尉,与蹇硕、袁绍、鲍鸿、曹操、赵融、冯芳、夏牟同列。为袁绍大将,与张郃、高览等人齐名。在官渡之战时镇守乌巢,遭到曹操的偷袭而惨败,自己也被曹操处斩。', + lvkuanglvxiang:'吕旷(生卒年不详),与吕翔同是袁绍属下,袁绍去世后,为袁尚守东平,后来投降曹操,并被封为列侯。在《三国演义》中,在曹操准备往南准备攻击前,两人跟著大将曹仁和将军李典准备要攻击刘备。但吕旷被赵云刺下马身亡,而吕翔也死于张飞矛下,可以算是出师未捷身先死', + caobuxing:'曹不兴,亦名弗兴,三国时著名画家。孙吴吴兴(今浙江湖州)人,生卒年不详。他在黄武年间(222—229年)享有很大的声誉。被称为“佛画之祖”。与东晋顾恺之、南朝宋陆探微、南朝梁张僧繇并称“六朝四大家”。又与赵达的算术、严武的弈棋、皇象的草书等号称“吴中八绝”。曹不兴善画龙、虎、马及人物,有“落墨为蝇”等传奇故事,其佛画成就对后世影响很大,相传其所画龙头令谢赫叹服不已。画迹今已不存,据《贞观公私画史》载,作品有《青溪龙》、《赤盘龙》、《南海监牧进十种马图》、《夷事夷兽样》、《桃源图》等,惜早已散佚。 但之后的著名画家卫协直接师承其法。', + gaolan:'高览,生卒年不详,一名高奂,本属袁绍部将,后官渡之战淳于琼被曹操击破,与张郃一同投降曹操,被封为偏将军,东莱侯。《三国演义》里,曾与许褚、徐晃大战不分胜负。201年刘备败走荆州时,高览奉命追杀,三合斩刘辟,而后被冲阵而来的赵云刺死。', + xunchen:'荀谌,字友若,荀彧之兄(一说荀彧之弟),荀绲之子,颍川人。曾任军阀袁绍的幕僚。帮助袁绍游说韩馥,夺取了冀州。', + sunshao:'孙邵(163年-225年),字长绪,青州北海国人(今山东潍坊市昌乐县西)。原为北海相孔融的功曹,被孔融称赞为可任朝廷要职的人才,后随刘繇到达江东,继而辅佐孙权。孙权称吴王后,孙邵成为吴国首任丞相,数年后病逝。由于孙邵和当时吴国史官的关系并不是很好,因此在史书中并没有详细的记载。', + yuantanyuanshang:'袁谭、袁尚分别是袁绍的长子和第三子。袁绍坐拥青州、冀州、幽州、并州,本是北方最强诸侯,却于官渡大败,惭恨而终。虽然袁绍生前偏爱小儿子袁尚,却并未在继承人上有明确表态,这也导致本应以嫡长子身份继承的袁谭因郭图、审配伪立遗令未能如愿。曹操击败袁绍后,进而渡过黄河追击袁家残余势力,袁谭告急,但袁尚仅给他少量兵力。曹操得郭嘉之计退兵坐观其变,恰使两人此前的种种矛盾彻底爆发,袁谭不敌便引狼入室,派辛毗作为使者向曹操求援,让袁尚不得不北逃投奔乌桓。但袁谭也在之后背叛曹操兵败被杀。没多久,乌桓也被平定,袁熙、袁尚二人投奔公孙康后被斩首送还曹操。', + xujing:'许靖(?—222年),字文休。汝南郡平舆县(今河南省平舆县)人。汉末至三国蜀汉时期重臣、名士、评论家。许靖因与从弟许邵俱以品评人物而闻名于世。后被刘翊推举为孝廉,任尚书郎。曾先后投奔孔伷、陈祎、许贡、王朗等人,于孙策攻王朗前与家属俱避难交州,受到交趾太守士燮礼待。其后受益州牧刘璋邀请,相继为巴郡、广汉、蜀郡太守。于刘备包围成都时欲越墙叛逃,为刘璋所获。刘备定蜀后欲将其弃用,在法正的建议下方以其为左将军长史。建安二十三年(218年),刘备称汉中王,任命许靖为汉中王傅。章武元年(221年),刘备称帝,任命许靖为司徒,位列三公。章武二年(222年),去世。有文集二卷。', + hejin:'何进(?~189年),字遂高,南阳郡宛县(今河南南阳市宛城区)人。东汉时期外戚大臣,灵思皇后之兄。初以妹妹有宠,拜为郎中,出任虎贲中郎将、颍川太守,迁侍中、将作大匠、河南尹。黄巾起义时,拜为大将军,总镇京师,发现并镇压马元义的密谋,封为慎侯。为张大威望,在京师讲武结营,置西园八校尉。汉灵帝驾崩后,粉碎了中常侍蹇硕拥立皇子刘协的图谋,听从袁绍之言,博征智谋之士,内借元舅之资,外据辅政之权,独揽朝中大权。中平六年(189),不纳陈琳和曹操劝谏,阴结军阀董卓,联合袁绍谋诛宦竖。事情败露后,为中常侍张让等人损害,其后代是魏晋高门士族南阳何氏。', + hansui:'韩遂(?-215年),字文约。凉州金城郡人。东汉末年军阀、将领,汉末群雄之一。原名韩约,后改名遂。韩遂最初闻名于西州,被羌胡叛军劫持并推举为首领,以诛宦官为名举兵造反,聚众十万,先后败皇甫嵩、张温、董卓、孙坚等名将,使得天下骚动。后受朝廷招安,拥兵割据一方长达三十余年。韩遂曾与马腾结为异姓兄弟,后二人关系破裂。袁绍、曹操相争之际,马腾、韩遂被钟繇说服,依附于曹操。马腾入京后,留其子马超统领部队。马超推举韩遂为都督起兵反叛曹操,为曹操所败,韩遂逃奔凉州,后又为夏侯渊所败,病死(一说被杀),享年七十余岁。', + niujin:'牛金(生卒年不详),初为曹仁部曲将,周瑜军数万人来攻,前锋数千人始至,曹仁登城望,乃募得三百人,遣牛金迎战。但对方兵力较多,牛金遂被围困。曹仁亲自杀入阵中救出牛金。司马懿使牛金轻骑饵诱蜀军,刚交战诸葛亮就退兵,追至祁山。蜀将马岱入寇,司马懿遣将军牛金击退,斩千余级。公孙渊反,司马懿帅牛金、胡遵等步骑四万发自洛阳,后平定辽东。牛金官至后将军。', + jianggan:"蒋干,字子翼,汉末三国时期的人物,九江(治今安徽寿县)人。历史上的蒋干是当时的名士、辩论家。而罗贯中在历史小说《三国演义》中则将蒋干刻画成了被周瑜所愚弄的小丑形象。", + huangjinleishi:"黄巾军中负责施法的女祭司二人组。", + + caoying:"曹婴是在电影《三国志之见龙卸甲》中登场的虚拟人物,由李美琪饰演。曹婴是曹操的孙女,弓马娴熟,文武双全,深得曹操的用兵之道及心术。于凤鸣山一战中担任魏军大都督阻止诸葛亮北伐并因罗平安的告密而全歼关兴、张苞、赵云率领的蜀军部队。", + simahui:"司马徽(约145—208年),字德操,颍川阳翟(今河南禹州)人。东汉末年名士,精通道学、奇门、兵法、经学。有“水镜先生”之称。 司马徽为人清雅,学识广博,有知人之明,并向刘备推荐了诸葛亮、庞统等人,受到世人的敬重。", + baosanniang:"鲍三娘是中国民间传说中的人物,事迹多见于《花关索传》。相传她是鲍家庄鲍员外的小女儿。后来与关索成亲,关羽自传授其武艺,因此也造就了鲍三娘的文武双全。荆州失守之后鲍三娘就跟随关索一同投奔蜀汉,并随诸葛亮征讨南蛮。平定了南蛮之后,夫妻二人就此一直替诸葛亮镇守着南中,他们也的确留下了许多脍炙人口的行侠仗义故事,在民间广为流传。", + + pangdegong:"庞德公,字尚长,荆州襄阳人,东汉末年名士、隐士。 庞德公与当时徐庶、司马徽、诸葛亮、庞统等人交往密切。庞德公曾称诸葛亮为\"卧龙\",庞统为\"凤雏\",司马徽为\"水镜\",被誉为知人。对诸葛亮、庞统等人早年影响较大,并得到诸葛亮的敬重。庞德公最后隐居于鹿门山,采药而终。", + zhaotongzhaoguang:"赵统,赵云长子,生卒年不详。常山真定(今为河北正定)人,陈寿在正史《三国志》中记载赵云去世后,赵统袭爵永昌亭侯,官至蜀汉虎贲中郎督,加行领军。赵广(?—263年),三国时期蜀汉牙门将,赵云的次子,赵统之弟。随姜维前往沓中,官拜牙门将。曹魏司马氏派五路大军伐蜀时,随大将军姜维与魏兵战于疆川口,姜维败绩还守剑阁,赵广于沓中战死。", + majun:"马钧,字德衡,扶风(今陕西扶风)人,生活在汉朝末期,是中国古代科技史上最负盛名的机械发明家之一。马钧年幼时家境贫寒,自己又有口吃的毛病,所以不擅言谈却精于巧思,后来在魏国担任给事中的官职。马钧最突出的表现有还原指南车;改进当时操作笨重的织绫机;发明一种由低处向高地引水的龙骨水车;制作出一种轮转式发石机,能连续发射石块,远至数百步;把木制原动轮装于木偶下面,叫做“水转百戏”。此后,马钧还改制了诸葛连弩,对科学发展和技术进步做出了贡献。", + simazhao:"司马昭(211年—265年9月6日),字子上(小说《三国演义》为子尚),河内温县(今属河南)人。三国时期曹魏权臣,西晋王朝的奠基人之一。为晋宣帝司马懿与宣穆皇后张春华次子、晋景帝司马师之弟、晋武帝司马炎之父。 司马昭早年随父抗击蜀汉,多有战功。累官洛阳典农中郎将,封新城乡侯。正元二年(255年),继兄司马师为大将军,专揽国政。甘露五年(260年),魏帝曹髦被弑杀,司马昭立曹奂为帝。景元四年(263年),分兵遣钟会、邓艾、诸葛绪三路灭亡蜀汉,受封晋公。次年,进爵晋王。 咸熙二年(265年),司马昭病逝,年五十四,葬于崇阳陵。数月后,其子司马炎代魏称帝,建立晋朝,追尊司马昭为文帝,庙号太祖。", + wangyuanji:"王元姬(217年—268年4月20日),东海郯县(今山东郯城西北)人。三国时期曹魏经学家王朗之孙女、王肃之女,晋文帝司马昭妻子,晋武帝司马炎与齐王司马攸的生母。 王元姬幼时便通《诗经》、《论语》,嫁司马昭后竭尽妇道、谦虚谨慎。其人颇有远见,曾预言钟会谋反之事。泰始元年(265年),司马炎建立西晋,尊王元姬为皇太后,宫号曰崇化宫。王元姬身处太后之位,提倡节俭,身体力行,作为众妃子的表率。在其治理之下,后宫井井有条,众人和睦相处。 泰始四年(268年),王元姬崩逝,终年五十二岁。谥号文明皇后,与司马昭合葬于崇阳陵。", + + liuye:'刘晔(?-234年),字子扬,淮南成德人,是光武帝刘秀之子阜陵王刘延的后代,三国时期魏国著名的战略家。刘晔年少知名,人称有佐世之才,是曹操手下举足轻重的谋士,他屡献妙计,对天下形势的发展往往一语中的。刘晔历仕数朝,是曹魏的三朝元老。', + luzhi:'鲁芝(190年—273年),字世英。扶风郡郿县(今陕西眉县)人。魏晋时期名臣。官至光禄大夫,位特进,封阴平侯。泰始九年(273年)卒,时年八十四。谥号“贞”。', + xizhicai:'戏志才(生卒年不详),或志才为字,名不详(一说名忠),东汉颍川郡(今河南禹州)人。经张邈推荐,成为曹操手下谋士。为人多谋略,曹操十分器重,不幸早卒。三国演义中并无此人,三国志中只有寥寥数语。由荀彧推荐给曹操,被称为有“负俗之讥”。死后,荀彧又举荐了郭嘉。
    陈寿《三国志》记载:太祖与荀彧书曰:自志才亡后,莫可与计事者。汝、颍固多奇士,谁可以继之?彧荐嘉。', + sunqian:'孙乾(?—约215年),字公祐。北海郡(治今山东昌乐西)人。东汉末年刘备的幕僚。最初被大儒郑玄推荐于州里。刘备领徐州,以孙乾为从事。自徐州跟随刘备,多次作为刘备的使臣。刘备定益州后,拜孙乾为秉忠将军,其待遇仅次于麋竺,与简雍相同。不久后便病逝。', + miheng:'祢衡(173年-198年),字正平,平原郡(今山东德州临邑德平镇)人。个性恃才傲物.和孔融交好。孔融著有《荐祢衡表》,向曹操推荐祢衡,但是祢衡称病不肯去,曹操封他为鼓手,想要羞辱祢衡,却反而被祢衡裸身击鼓而羞辱。后来祢衡骂曹操,曹操就把他遣送给刘表,祢衡对刘表也很轻慢,刘表又把他送去给江夏太守黄祖,最后因为和黄祖言语冲突而被杀,时年二十六岁。黄祖对杀害祢衡一事感到十分后悔,便将其加以厚葬。', + quyi:'麴义(又作曲义、鞠义),生卒年不详,是东汉末年军阀袁绍部下的将领,能征善战,屡建战功,早年在凉州,精通羌人战法,率领着袁绍的精锐部队。后来由于自恃功高而骄纵不轨,被袁绍所杀。', + taoqian:'陶谦(132年-194年),字恭祖。丹阳郡(治今安徽宣城)人。汉末群雄之一。陶谦最初为诸生,在州郡任职,被举茂才,历任舒、卢二县令、幽州刺史、议郎,性格刚直,有大志。后随左车骑将军皇甫嵩对抗北宫伯玉,任扬武校尉,之后又随张温征韩遂、边章。中平五年(188年),徐州黄巾起,陶谦被朝廷任为徐州刺史,击破徐州黄巾,并推行屯田,恢复生产。尔后听从王朗、赵昱建议遣使进京朝贡,获拜安东将军、徐州牧,封溧阳侯。晚年因战事上为曹操大败,徐州大半几乎遭兵祸所害,以致过度忧劳而逝,终年六十三岁。', + wangyun:'王允(137~192年),字子师,太原郡祁县(今山西祁县)人。东汉末年时期大臣。出身太原王氏,世代官宦。举孝廉出身,司徒高第征为侍御史。出任豫州刺史,勤政爱民。斗争中常侍张让失败后,去官隐居。中平六年,大将军何进掌权之后,辟为从事中郎,迁河南尹。董卓拥立汉献帝即位后,代替杨彪,拜太仆、尚书令、司徒,密谋刺死董卓,联合吕布共同执政,日益骄傲自满。初平三年(192年),董卓余党李傕、郭汜、樊稠等攻破长安。王允兵败处死,时年五十六岁。', + bianfuren:'武宣皇后卞氏(159年12月30日-230年7月9日),琅邪开阳(今山东临沂)人,魏武帝曹操的正妻(继室),魏文帝曹丕、任城威王曹彰、陈思王曹植、萧怀王曹熊的母亲。原本是倡家,即汉代专门从事音乐歌舞的乐人家庭,后来与曹操成婚,建安初年,原配丁夫人被废,卞夫人成为曹操的正妻。曹丕继位后尊其为皇太后,曹叡继位后尊其为太皇太后。卞后在太和四年去世,与魏武帝曹操合葬高陵。', + shamoke:'沙摩柯(?-222年),东汉末三国时期五溪蛮首领。汉章武元年(221年)初,为报关羽被东吴杀害之仇,刘备亲自领兵攻孙权,以金锦爵赏诱沙摩柯助战。章武二年(222年),吴大都督陆逊以火攻破刘备,率诸军齐击,汉军四十多个营寨被攻破,沙摩柯在大乱中匹马奔逃,被乱军杀死。', + lvfan:'吕范(?-228年),字子衡。汝南郡细阳县(今安徽太和)人。汉末至三国时期吴国重臣。吕范年轻为汝南县吏,后避难寿春,结识孙策。此后随孙策、孙权征伐四方,对稳固孙氏在江东的统治做出了杰出的贡献,孙权将其比之于东汉开国元勋吴汉。吴国建立后,吕范累官至前将军、假节、扬州牧,封南昌侯。黄武七年(228年),吕范被拜为大司马,未得授官,便已病逝。孙权悲痛不已,遣使赠其大司马印绶。孙权还都建业后,以太牢礼祭祀吕范。', + liqueguosi:"请分别参考武将【李傕】和【郭汜】各自的介绍。", + cuimao:"关于【崔琰】的内容,请查看武将【崔琰】的介绍。
    毛玠(?—216年),字孝先,陈留平丘(今河南封丘)人。东汉末年大臣。年少时为县吏,以清廉公正著称。因战乱而打算到荆州避乱,但中途知道刘表政令不严明,因而改往鲁阳。后来投靠曹操,提出“奉天子以令不臣,脩耕植,畜军资”的战略规划,得到曹操的欣赏。
    毛玠与崔琰主持选举,所举用的都是清廉正直之士。而毛玠为人廉洁,激起天下廉洁之风,一改朝中奢华风气。曹操大为赞赏,曹丕也亲自去拜访他。
    曹操获封魏公后,毛玠改任尚书仆射,再典选举。又密谏曹操应该立嫡长子曹丕为魏国太子。崔琰被杀后,毛玠十分不快。后来有人诬告毛玠,曹操大怒,将毛玠收于狱中。及后在桓阶、和洽营救下,只被免职,不久逝世于家中。曹操在他死后赐他棺材和钱帛。", + + huangfusong:'字义真。安定郡朝那县(今宁夏彭阳)人。于黄巾起义时,以中郎将身份讨伐黄巾,用火攻大破张梁、张宝。后接替董卓进攻张梁,连胜七阵。掘张角墓,拜左车骑将军、冀州牧,因拒绝贿赂宦官而被免职。 董卓死,王允命其与吕布等共至郿坞抄籍董卓家产、人口,皇甫嵩将坞中所藏良家子女,尽行释放。', + zangba:'其父臧戒,有二子臧艾与臧舜。年少时曾召集数人将获罪的父亲救出,此后四处流亡。后来成为陶谦麾下的骑都尉,负责募兵抵抗黄巾军。与孙观、尹礼等人拥兵驻屯于开阳,自成一股独立势力,后跟随吕布。吕布战败后,投降了曹操。后与袁绍、孙权等的战役里战功赫赫,官至镇东将军。', + zhangren:'刘璋的属下,以忠勇著称。刘备入蜀时,张任曾劝刘璋提防刘备,但刘璋没有听从。魏延舞剑想趁机除掉刘璋时,张任出面对舞,解救刘璋。后在刘备进攻时于落凤坡射死了庞统。', + jiling:'东汉末年袁术帐下将领,勇猛非常,曾奉命率军攻打小沛的刘备,在吕布辕门射戟的调停下撤兵。', + zoushi:'军阀张济之妻,张绣之婶。张绣降曹后,邹氏遂被曹操霸占。贾诩献计趁机诛杀曹操,险些得手。曹操在损失爱将典韦、侄子曹安民和长子曹昂后方才逃出生天。', + ganfuren:'刘备起兵后,于沛城娶甘氏为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。', + jiangfei:'蒋琬,蜀四英之一。初随刘备入蜀,诸葛亮卒后封大将军,辅佐刘禅,主持朝政,统兵御魏。采取闭关息民政策,国力大增。官至大司马,安阳亭侯,谥号恭侯。费祎,蜀国著名政治家和武将,官至大将军。在一次回途的筵会中,被降将郭修刺杀而亡,谥号敬侯。', + mifuren:'刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。', + chendong:'陈武,东吴将领,孙策攻打刘繇,陈武前来相助,孙策非常喜爱陈武,拜为校尉,使作先锋。陈武以十数骑兵力杀敌五十余人。后于赤壁等战役屡立功勋。董袭献上严白虎的人头来降孙策。赤壁之战,董袭受周瑜命,分兵去汉阳,合肥会战时接应太史慈,逍遥津支援孙权。濡须口之战时,董袭在船上督战,船覆董袭坚守殉职。', + jiangqing:'擅长弓术。与周泰原为活跃于长江一带的江贼,孙策脱离袁术下江东自立门户时,和周泰一起率众投靠。 孙策攻刘繇,并引出城中麾下的陈横、薛礼、张英三名将领,陈横后被蒋钦一箭射杀,后与韩当等将乘舟过江,乱箭射杀敌军。曾在赤壁之战与周泰,还有擅使长枪的韩当率领水军在三江口踏江破敌。', + kongrong:'字文举,鲁国人,东汉文学家,“建安七子”之首。献帝即位后任北军中侯、虎贲中郎将、北海相,时称孔北海后因触怒曹操,为曹操所杀。能诗善文。', + mateng:'字寿成,扶风茂陵人,东汉末年征西将军,割据西凉一带的军阀,伏波将军马援的后代,官至卫尉,封爵槐里乡侯。因其子马超谋反,而被杀,夷灭三族。', + tianfeng:'字元皓。东汉末年大军阀袁绍部下重要谋士。为人刚直不阿,曾多次向袁绍进言而不被采纳。后因谏阻袁绍征伐曹操而被袁绍下令监禁,并于官渡之战后,被袁绍杀害。', + caochun:'字子和,沛国谯(今安徽亳州)人。东汉末年曹操麾下将领,曹仁之弟。曹纯是曹操部下精锐部队“虎豹骑”的统领者之一,因在平定北方的战役中颇有功绩,被加封为高陵亭侯。死后谥曰威侯。曹纯擅战,甚得人心,为人重纲纪,不失理智,好学问,敬爱学士,闻名天下。', + hanba:'中国古代神话传说中引起旱灾的怪物。《诗·大雅·云汉》:“旱魃为虐,如惔如焚。”', + cuiyan:'字季珪,清河东武城(今河北省清河县)人。东汉末年名士,司空崔林的从兄,曹操帐下谋士。崔琰相貌俊美,很有威望,曹操对他也很敬畏。建安二十一年(216年),崔琰在给杨训的书信中写道“时乎时乎,会当有变时”,曹操认为此句有不逊之意,因而将崔琰下狱,不久崔琰即被曹操赐死。', + lifeng:'南阳(治今河南南阳)人,三国时期蜀汉大臣李严之子。230年,李严迁为骠骑将军,率军前往汉中,诸葛亮上表推举李丰为江州都督督军,以代替李严管理后方事务。李严去世后,李丰在蜀汉官至朱提太守。', + sunru:'孙茹,孙坚之妹,其名载于《江浙通志》中。儿子徐琨亦为孙吴早期名将,当初母子二人随军跟从孙策渡长江时,因为暂时没足够的船,孙策感到苦恼打算暂时驻军江边。孙茹夫人献计以芦苇为筏,孙策大喜。吴军遂以神不知鬼不觉的速度过长江击破刘繇部将张英,立下平江东第一功。', + lingcao:'东汉末年将领,吴郡余杭(今浙江余杭)人,凌统之父。早年跟随孙策转战江东。孙权统军后,凌操随其征伐黄祖,被甘宁射杀。《吴书》载:甘宁以善射,将兵在后,射杀校尉凌操', + zhugeguo:'诸葛果,为《历代神仙通鉴》中诸葛亮女儿的名字,《历代神仙通鉴》记录从上古到明代的神仙历史,因此诸葛果不见于任何史书。成都西南有朝真观,即乘烟观。相传,诸葛果在这里修行后成仙升天。', + zhuling:'朱灵(生卒年不详),字文博,冀州清河国人,三国时期曹魏名将。官至后将军,封为高唐侯,谥号威侯。初为袁绍部将,后归顺曹操,随曹操征伐四方,屡建战功。', + re_yuanshu:'字公路,汝南汝阳人,袁绍之弟。初为虎贲中郎将。董卓进京后以袁术为后将军,袁术因畏祸而出奔南阳。初平元年与袁绍、曹操等同时起兵,共讨董卓。后与袁绍对立,被袁绍、曹操击败,率馀众奔九江,割据扬州。建安二年称帝,建号仲氏。', + fuwan:'伏完(?-209),琅邪东武(今属山东)人,东汉末大臣,汉献帝伏皇后之父。历官辅国将军、中散大夫、屯骑校尉。', + liuxie:'字伯和,又字合。汉族,祖籍沛县,生于洛阳。汉灵帝第三子,被董卓迎立为帝。董卓被王允和吕布诛杀后,董卓部将李傕等攻入长安,再次挟持了他,后来逃出长安。公元196年,曹操控制了刘协,并迁都许昌,“挟天子以令诸侯”。公元220年,曹操病死,刘协被曹丕控制,随后被迫禅让于曹丕。', + yuanshu:'字公路,汝南汝阳人,袁绍之弟。初为虎贲中郎将。董卓进京后以袁术为后将军,袁术因畏祸而出奔南阳。初平元年与袁绍、曹操等同时起兵,共讨董卓。后与袁绍对立,被袁绍、曹操击败,率馀众奔九江,割据扬州。建安二年称帝,建号仲氏。', + gongsunzan:'字伯珪,汉族,号“白马义从”。辽西令支人。东汉末年献帝年间占据幽州一带的军阀,汉末群雄之一。出身贵族,因母地位卑贱,只当了郡中小吏。他貌美,声音洪亮,机智善辩。后随卢植于缑氏山中读书,粗通经传。', + caohong:'字子廉,沛国谯(今安徽亳县)人,曹操从弟,曾献马并救护曹操。后多随军征伐,平兖州、征刘表、讨祝臂。曹丕即位时封曹洪为骠骑将军。曹叡即位,拜曹洪为后将军,更封乐城侯,后复拜为骠骑将军。曹洪逝世,追谥曰恭侯。', + guanyinping:'河东解县(今山西运城)人,美髯公关羽之女。因在关羽的四个子女中排行第三,故又被称作“关三小姐”、“关氏三姐”或“关羽三小姐”。传说她是赵云的弟子、并随同诸葛亮平定南蛮。', + xiahouba:'夏侯渊次子。本为曹魏武将,后因司马懿诛曹爽一族,夏侯霸身为曹氏宗室而心怀不安,遂投降蜀汉。后随蜀将姜维北伐,官至车骑将军。', + daxiaoqiao:'大乔,庐江皖县人,为乔公长女,孙策之妻,容貌国色流离。小乔为大乔之妹,周瑜之妻,资貌绝伦。两人合称“二乔”。', + yuejin:'字文谦,魏“五子良将”之一。容貌短小,以胆烈跟从曹操,南征北讨,战功无数。从击袁绍于官渡,奋勇力战,斩袁绍部将淳于琼。又从击袁绍子谭、尚于黎阳,斩其大将严敬。从平荆州,留屯襄阳,进击关羽、苏非等人,击退其众,南郡诸郡的山谷蛮夷都前往乐进处投降。后来从曹操征孙权,假进节。曹操回师后,留乐进与张辽、李典屯于合肥。又以乐进数有军功,迁右将军。建安二十三年逝世,谥曰威侯。', + caoang:'字子修,曹操的长子,由于性情谦和且聪慧所以深得曹操喜爱。曹操征讨张绣时,羞辱张绣之婶邹氏,被张绣突然袭击。曹昂为保护曹操撤退,与典韦一起战死在宛城。', + zhugejin:'字子瑜,吴国大臣,诸葛亮之兄,诸葛恪之父。经鲁肃推荐,为东吴效力。胸怀宽广,温厚诚信,得到孙权的深深信赖,努力缓和蜀汉与东吴的关系。建安二十五年(220年)吕蒙病逝,诸葛瑾代吕蒙领南郡太守,驻守公安。孙权称帝后,诸葛瑾官至大将军,领豫州牧。', + zhangxingcai:'蜀名将张飞与夏侯氏所生之女,刘禅的妻子,史上称为“敬哀皇后”。', + zumao:'字大荣,吴郡富春人,使用双刀。孙坚在汜水关被华雄击败,祖茂为保护主公而主动提出与孙坚交换头盔,孙坚因此得脱。祖茂将孙坚的赤帻挂在柱子上,准备以此引诱华雄,趁机偷袭,却反被华雄所杀。', + dingfeng:'吴国将领。年少时以骁勇为小将,经常奋勇杀敌,屡立功勋,此后又于东兴之战中“雪中奋短兵”,大破侵犯东吴的魏军。吴景帝孙休在位时,丁奉设计除掉了东吴的权臣孙綝,被拜为大将军,后为右大司马、左军师。', + panfeng:'冀州牧韩馥部下的上将。当十八路诸侯讨伐董卓之时,他奉韩馥之命前往汜水关前挑战董卓部下大将华雄,不敌被斩。', + maliang:'字季常,因眉毛中有白毛,人称白眉马良,马谡的兄长。马良在兄弟五人中名声最佳,因此有“马氏五常,白眉最良”的说法。', + zhugedan:'字公休,曹魏后期的重要将领,诸葛亮的族弟。曾与司马师一同平定毌丘俭、文钦的叛乱。之后因与被诛的夏侯玄、邓飏交厚,且见到王淩、毌丘俭等人的覆灭而心不自安,于甘露二年起兵,并得到东吴的支援,但于次年被镇压,被大将军司马胡奋所斩。', + hetaihou:'大将军何进的妹妹,汉灵帝刘宏第二任皇后,汉少帝刘辩的生母。何氏出身于屠户家庭,后选入掖庭,得到汉灵帝临幸,生下皇子刘辩,并受封贵人。光和三年(180年),立为皇后。中平六年(189年),汉灵帝去世,刘辩继位,尊何氏为皇太后。董卓进京,废黜刘辩,不久毒杀刘辩及何氏。', + sunluyu:'又名小虎,孙权与步练师之女。吴后期,孙鲁班诬陷孙鲁育参与谋反,于是孙峻杀害了孙鲁育。', + wenpin:'本为刘表大将,刘表死后,跟随刘琮投降曹操。后曹操令其镇守江夏,多次阻止了关羽和孙权的进攻,为曹操倚为屏障的大将之一。', + zhanglu:'汉宁太守,继父祖之后传播五斗米教。刘璋杀张鲁之母,二人因此结仇,多次交战。刘备攻益州时,刘璋向张鲁求援。张鲁派马超前往,但马超投降刘备。张鲁后见曹操自封魏王,想要自立为汉宁王,为谋士阎圃劝免。后曹操讨汉中,张鲁败,众人劝其烧粮仓,张鲁认为这是国家之物,未听从,为曹操所称赞。后投降曹操,任镇南将军。', + mayunlu:'马腾之女,马超之妹,赵云之妻。父亲令其自幼习武,枪术非凡,寻常男子也是难以匹敌。', + tadun:'东汉末年辽西乌桓(亦称乌丸)的首领,乌桓大人丘力居的从子,总摄三王部。曾出兵协助袁绍,击破公孙瓒。此后受袁绍假传朝廷诏命,与三王难楼、苏仆延、乌延等人同受单于称号及印绶。后难楼、苏仆延率其部众奉立楼班为单于,蹋顿于是退位为王。袁绍死后,收到被曹操击败的袁尚的求助,纠集逃亡至乌桓的幽州、冀州官吏百姓,企图夺回河北。东汉建安十二年,曹操亲征乌桓。八月,乌桓、袁氏部队于柳城白狼山为曹军所败,蹋顿在此战中被曹操的先锋张辽所斩杀。 ', + yanbaihu:'吴郡乌程县人,原名“严虎”,别号“白虎”,东汉末年盘据吴郡一带山贼出身的地方豪帅。献帝初拥兵万人自固。孙策受袁术使渡江,攻破白虎等。白虎奔余杭,投靠许昭。建安二年,再度被孙策击败,至此不知亡佚何处。', + simalang:'字伯达,“司马八达”之一。曹操任司空后,司马朗被辟为司空属官,又历任成皋令、堂阳长、元城令、丞相主簿、兖州刺史等职,所在皆有政绩,深受百姓爱戴。后司马朗与夏侯惇、臧霸等征讨吴国,到达居巢。军队中流行瘟疫,司马朗亲自去视察,派送医药,因此染病去世。', + wangji:'字伯舆,东莱曲城人。三国时期魏国将领。王基文武兼备,才高于世,德溥于时,深得司马懿、司马师、司马昭的器重,尤其在南征毋丘俭,文钦之乱,东征诸葛诞之叛大规模军事活动中,王基与司马师、司马昭结下了深厚的军友情谊。魏景元二年王基去世,追赠司空,谥号为景侯。', + buzhi:'吴重臣,最初避难江东,于孙权统事后,被召为主记。后游历吴地,又任海盐县长,还任东曹掾,出领鄱阳太守。建安十五年,转交州刺史、立武中郎将,率军接管往交州,追拜使持节、征南中郎将。次年,以平定交州功,加平戎将军,封广信侯。后迁右将军、左护军,改封临湘侯。孙权称帝后,拜骠骑将军,领冀州牧,后因冀州分与蜀汉而解牧职。又都督西陵。赤乌九年,代陆逊为丞相。', + litong:'字文达,小字万亿。江夏平春(今河南信阳)人,汝南太守。早年以游侠闻名于江汝,在率众补充曹操兵源有功拜为阳安都尉,其间不因私而忘公,不因其妻子的求请而过问执法者。后来在曹操讨伐马超时出阵挑战,死于马超枪下。', + mizhu:'原为徐州富商,后被徐州牧陶谦辟为别驾从事。陶谦病死后,奉其遗命迎接刘备。与其弟麋芳拒绝曹操的任命而跟随刘备,在刘备最潦倒之时给予刘备很大的帮助,使他重新振作。214年(建安十九年),刘备入主益州后,拜麋竺为安汉将军,地位在诸葛亮之上,为刘备手下众臣之最。吕蒙袭取荆州,麋芳举城投降,导致关羽兵败身亡,麋竺面缚请罪,刘备劝慰麋竺,对他待遇如初。', + dongbai:'东汉末年县君,陇西临洮(今甘肃省岷县)人,董卓之孙女。董卓当权时,遍封其宗族,其中孙女董白尚未及笄,被封为渭阳君。', + zhaoxiang:'赵云与马云騄之女,赵统赵广之妹,关平之妻。', + heqi:'早年在平定山越的战争中立有大功,又讨平叛乱无数,身经百战,所向披靡,深受孙权器重。后来在与魏国的多次边境争斗中也屡立战功,官至后将军,并领徐州牧。', + dongyun:'大汉重臣,掌军中郎将董和之子。东汉末年,其父董和事刘璋为益州太守,刘备立太子时,允被选为洗马,后为黄门侍郎,延熙六年(公元243年)加辅国将军,延熙七年(公元244年)以侍中守尚书令,任大将军费祎的副手。', + mazhong:'本名狐笃,字德信,巴西阆中人,初次出场时随丞相诸葛亮南征孟获,诸葛亮遣马忠与赵云两路夹攻,大败蛮将阿会喃。孟获派弟孟优赴汉军处假投降,欲内应外合,诸葛亮将计就计,埋伏擒获孟获和诸洞酋长,马忠亦于此战立下战功。后诸葛亮北伐时亦数次出阵,立下汗马功劳。', + kanze:'孙权谋士,在孙权广纳贤才之时与严畯等来到江东,甚为孙权礼遇。第一个识破周瑜打黄盖是苦肉计,后欣然向曹操献诈降书,被曹操识破后面不改色,哈哈大笑,一番妙言让曹操相信了诈降书,是苦肉计中的关键人物。后劝孙权不要设局请关羽。在刘备御驾亲征东吴时,向孙权举荐陆逊为都督,间接上挽救了东吴的命运。', + lingju:'相传为吕布与貂蝉的女儿,被汉献帝掳走并训练为死士,被秘密送入宫中接近曹操,成为其“忘年红颜知己”。外表是柔弱的女子,实际上身怀致命的杀人绝技,等待时机给予曹操致命一击。', + yangxiu:'字德祖,今陕西华阴人,是东汉末年的文学家。杨修学问渊博,极聪慧,任丞相府主簿。史载,“是时,军国多事,修总知外内,事皆称意”。', + chenlin:'陈琳(?-217年),字孔璋,广陵射阳(今江苏宝应)人。东汉末年著名文学家,“建安七子”之一。', + zhugeke:'字元逊,琅邪阳都(今山东沂南)人。三国时期吴臣,蜀丞相诸葛亮之侄,吴大将军诸葛瑾长子,从小就以神童著称,深受孙权赏识。', + zhangbao:'东汉末年黄巾起义的首领之一,张角之弟,张梁之兄。中平元年(184)随兄张角起义,号称“地公将军”。', + chengyu:'字仲德,本名程立,因梦中於泰山捧日,更名程昱。荀彧投曹操时向其举荐程昱。他参与了攻打吕布、袁绍、刘备、孙权的大部份战事,一直出谋献策,表现出众。', + sunhao:'孙权之孙,孙和之子,东吴的末代君主。在位初期虽施行过明政,但不久即沉溺酒色,专于杀戮,变得昏庸暴虐,嗜用挖眼、剥皮等酷刑。280年,吴国被西晋所灭,孙皓投降西晋,被封为归命侯。', + wutugu:'南蛮乌戈国主,身长丈二(约合现在2.77米),不食五谷,以生蛇恶兽为饭。身有鳞甲,刀箭不能侵。兀突骨乘骑巨象,头戴日月狼须帽,身披金珠缨络,两肋下露出生鳞甲,眼目中微有光芒。', + shixie:'割据交州(今越南)一带的军阀,年少时师事刘陶,经逐渐升迁任交趾太守。后被朝廷加职绥南中郎将,迁安远将军,封龙度亭侯。在步骘接管交州时积极配合,归附孙权,被孙权加为左将军;此后又因诱降益州豪族雍闿而迁任卫将军,进封龙编侯。任交趾太守四十年。', + guansuo:'关羽的三子。自荆州失陷后,逃难在鲍家庄养病,伤势痊愈之后入蜀,逢丞相诸葛亮南征,拜之为前部先锋,一同南征。', + wanglang:'字景兴,汉末三国经学家,曹魏初期重臣。曾任会稽太守举兵抵抗孙策,后为曹操所征,被拜为谏议大夫等职。曹丕建立魏国后任命为司空。小说《三国演义》中他在阵前与诸葛亮饶舌比拼,最终被诸葛亮言词所驳倒,一时气愤坠马身亡。', + zhangliang:'东汉末年黄巾起义首领之一,张角的三弟。中平元年(184)随兄起义,号称“人公将军”。遭到朝廷所派左中郎将皇甫嵩进攻时,他率军在广宗(今河北威县)进行反击。后因警戒疏忽,遭到汉军夜袭,兵败身亡。', + }, + characterTitle:{}, + perfectPair:{ + yuejin:['re_lidian'], + zhugejin:['zhugeke'], + guanyinping:['guanyu'], + zhangxingcai:['liushan'], + fuwan:['fuhuanghou'], + sunshangxiang:['liubei'], + caoang:['caocao'], + zhangbao:['zhangliang','zhangjiao'], + zhangliang:['zhangjiao'], + maliang:['masu'], + lingcao:['lingtong'], + lingju:['diaochan','lvbu'], + jiangqing:['zhoutai'], + dingfeng:['xusheng'], + caohong:['caoren'], + daxiaoqiao:['zhouyu','sunce'], + cuiyan:['caocao'], + guansuo:['guanyu'], + mateng:['machao','madai','mayunlu'], + chengpu:['zhouyu'], + hanba:['swd_muyun'], + dongbai:['dongzhuo'], + cuimao:['caopi'], + simazhao:['wangyuanji'], + }, + card:{ + wy_meirenji:{ + fullskin:true, + vanish:true, + derivation:'wangyun', + type:'trick', + enable:true, + filterTarget:function(card,player,target){ + return target.countCards('h')&&target!=player&&target.sex=='male'; + }, + content:function(){ + 'step 0' + event.list=game.filterPlayer(function(current){ + return current!=player&¤t!=target&¤t.sex=='female'; + }).sortBySeat(); + 'step 1' + if(target.countCards('h')&&event.list.length){ + event.current=event.list.shift(); + event.current.gainPlayerCard(target,true); + target.line2([event.current,player]); + } + else{ + event.goto(4); + } + 'step 2' + event.current.chooseCard('h',true,'将一张手牌交给'+get.translation(player)); + 'step 3' + if(result.bool){ + event.current.give(result.cards,player); + } + event.goto(1); + 'step 4' + var n1=target.countCards('h'); + var n2=player.countCards('h'); + if(n1>n2){ + target.damage(player); + player.line(target); + } + else if(n1=3) return 0; + if(!target.hasSkillTag('maixie_hp')){ + return -3; + } + return -1; + } + if(num==2) return 0; + return -2+num+(Math.pow(target.hp,0.2)-1); + } + } + } + }, + }, + skill:{ + olxingshen:{ + trigger:{player:'damageEnd'}, + frequent:true, + audio:'xingshen', + content:function(){ + 'step 0' + var next=player.draw(); + if(get.isLuckyStar(player)||Math.random()<0.5) next.num=2; + var num=player.countMark('olxingshen'); + if(num<6) player.addMark('olxingshen',Math.max(6-num,player.getDamagedHp()),false) + }, + intro:{ + content:'下一次发动〖严教〗时多展示X张牌', + }, + }, + //张道陵 + zlhuji:{ + mod:{ + globalFrom:function(player,target,distance){ + return distance-1; + }, + }, + trigger:{player:'damageEnd'}, + forced:true, + content:function(){ + 'step 0' + var func=function(result){ + if(get.color(result)=='red') return 1; + return 0; + }; + if(get.itemtype(trigger.source)!='player'||!player.canUse('sha',trigger.source,false)) func=function(result){ + return 0; + }; + else if(get.effect(trigger.source,{name:'sha'},player,player)<0) func=function(result){ + if(get.color(result)=='red') return -1; + return 0; + }; + player.judge(func); + 'step 1' + if(result.bool&&get.itemtype(trigger.source)=='player'&&player.canUse('sha',trigger.source,false)){ + player.useCard({name:'sha',isCard:true},trigger.source,false); + } + }, + }, + zlshoufu:{ + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('he')>0; + }, + filterTarget:function(card,player,target){ + return target!=player&&!target.getStorage('zlshoufu2').length; + }, + filterCard:true, + position:'he', + discard:false, + toStorage:true, + prepare:'give', + content:function(){ + target.addSkill('zlshoufu2'); + target.storage.zlshoufu2_markcount=0; + target.markAuto('zlshoufu2',cards); + player.draw(); + }, + }, + zlshoufu2:{ + marktext:'箓', + intro:{ + content:'cards', + onunmark:'throw', + }, + charlotte:true, + mod:{ + cardEnabled:function(card,player){ + if(player.getStorage('zlshoufu2').filter(function(magic){ + return get.type2(magic)==get.type(card); + }).length) return false; + }, + cardRespondable:function(card,player){ + if(player.getStorage('zlshoufu2').filter(function(magic){ + return get.type2(magic)==get.type(card); + }).length) return false; + }, + cardSavable:function(card,player){ + if(player.getStorage('zlshoufu2').filter(function(magic){ + return get.type2(magic)==get.type(card); + }).length) return false; + }, + }, + trigger:{ + player:['damageEnd','loseAfter'], + }, + forced:true, + filter:function(event,player){ + var storage=player.getStorage('zlshoufu2'); + if(!storage.length) return false; + if(event.name=='damage') return true; + if(event.type!='discard'||event.getParent('phaseDiscard').player!=player) return false; + for(var i of event.cards2){ + if(storage.filter(function(magic){ + return get.type2(magic)==get.type2(i,event.hs.contains(i)?player:false); + }).length) return true; + } + return false; + }, + content:function(){ + if(trigger.name=='lose'){ + for(var i of trigger.cards2){ + if(player.getStorage('zlshoufu2').filter(function(magic){ + return get.type2(magic)==get.type(i,trigger.hs.contains(i)?player:false); + }).length) player.storage.zlshoufu2_markcount++; + } + } + if(trigger.name=='damage'||player.storage.zlshoufu2_markcount>=2) player.unmarkSkill('zlshoufu2'); + else player.markSkill('zlshoufu2'); + }, + }, + //蔡阳 + yinka:{ + trigger:{player:['drawBegin','judgeBegin']}, + direct:true, + filter:function(){ + return ui.cardPile.childNodes.length>0; + }, + content:function(){ + 'step 0' + player.chooseButton(['印卡:请选择要置于牌堆'+(trigger.bottom?'底':'顶')+'的牌(先选择的在上)',Array.from(ui.cardPile.childNodes)],[1,trigger.num||1]); + 'step 1' + if(result.bool){ + while(result.links.length){ + if(trigger.bottom){ + var card=result.links.shift(); + ui.cardPile.removeChild(card); + ui.cardPile.appendChild(card); + } + else{ + var card=result.links.pop(); + ui.cardPile.removeChild(card); + ui.cardPile.insertBefore(card,ui.cardPile.firstChild) + } + } + } + }, + ai:{isLuckyStar:true}, + }, + //新王允 + xinlianji:{ + enable:'phaseUse', + audio:'wylianji', + usable:1, + check:function(card){ + return 5-get.value(card); + }, + filterTarget:function(card,player,target){ + if(ui.selected.targets.length) return true; + return target!=player; + }, + filterCard:true, + selectTarget:2, + multitarget:true, + targetprompt:['打人','被打'], + content:function(){ + 'step 0' + player.addMark('xinlianji',1,false); + var card=get.cardPile2(function(card){ + return get.subtype(card)=='equip1'&&targets[0].hasUseTarget(card); + }); + if(card){ + if(card.name=='qinggang'&&!lib.inpile.contains('qibaodao')){ + card.remove(); + card=game.createCard('qibaodao',card.suit,card.number); + } + targets[0].chooseUseTarget(card,true,'nopopup','noanimate'); + } + else{ + player.chat('没有装备牌了吗'); + game.log('但是牌堆里已经没有装备牌了!'); + } + 'step 1' + game.updateRoundNumber(); + targets[0].chooseToUse('对'+get.translation(targets[1])+'使用一张杀,或将装备区里的武器牌交给一名其他角色', + {name:'sha'}).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',targets[1]).set('addCount',false); + 'step 2' + var card=targets[0].getEquip(1); + if(!result.bool&&card){ + event.card=card; + player.chooseTarget(true,'将'+get.translation(card)+'交给一名其他角色').set('ai',function(target){ + var card=_status.event.getParent().card; + return (target.hasSkillTag('nogain')?0:get.attitude(_status.event.player,target))*Math.max(0.1,target.getUseValue(card)); + }); + } + else event.finish(); + 'step 3' + result.targets[0].gain(card,targets[0],'give'); + }, + ai:{ + order:4, + result:{ + target:function(player,target){ + if(ui.selected.targets.length){ + var pretarget=ui.selected.targets[0]; + if(pretarget.hasSha()&&pretarget.canUse({name:'sha'},target)) return get.effect(target,{name:'sha'},pretarget,target); + return Math.random(); + } + if(!target.getEquip(1)){ + if(game.hasPlayer(function(current){ + return current!=target&&!current.hasSkillTag('nogain')&&get.attitude(current,target)>0; + })) return 3; + return -3; + } + if(!game.hasPlayer(function(current){ + return current!=target&&!current.hasSkillTag('nogain')&&get.attitude(current,target)>0; + })) return -6; + return 4-get.value(target.getEquip(1)); + }, + }, + }, + }, + xinmoucheng:{ + trigger:{player:'phaseZhunbeiBegin'}, + audio:'moucheng', + forced:true, + juexingji:true, + skillAnimation:true, + animationColor:'gray', + derivation:'xinjingong', + unique:true, + filter:function(event,player){ + return player.countMark('xinlianji')>2; + }, + content:function(){ + player.awakenSkill('xinmoucheng'); + player.addSkill('xinjingong'); + player.removeSkill('xinlianji'); + }, + }, + xinjingong:{ + audio:'jingong', + enable:'phaseUse', + filter:function(event,player){ + return player.countCards('he',function(card){ + return card.name=='sha'||get.type(card)=='equip'; + }); + }, + delay:false, + usable:1, + content:function(){ + 'step 0' + var list=get.inpile('trick').randomGets(2); + if(Math.random()<0.5){ + list.push('wy_meirenji'); + } + else{ + list.push('wy_xiaolicangdao'); + } + for(var i=0;iplayer.maxHp) return 0; + var att=get.attitude(player,target); + if(att<=0||target.hasSkillTag('nogain')) return 0; + if(target.maxHp-target.countCards('h')>=2) return att; + return att/2; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('bizheng',target); + target.draw(2); + } + else event.finish(); + 'step 2' + if(player.countCards('h')>player.maxHp) player.chooseToDiscard(2,'he',true); + 'step 3' + if(target.countCards('h')>target.maxHp) target.chooseToDiscard(2,'he',true); + }, + ai:{ + expose:0.25, + }, + }, + yidian:{ + trigger:{player:'useCard2'}, + filter:function(event,player){ + var info=get.info(event.card); + if(info.allowMultiple==false) return false; + if(event.targets&&!info.multitarget){ + for(var i=0;i0){ + player.chooseTarget('令一名角色获得'+get.translation(trigger.source)+'的一张手牌',function(card,player,target){ + var source=_status.event.source; + return target!=source&&source.countGainableCards(target,'h')>0; + }).set('source',trigger.source); + } + else event.goto(4); + 'step 3' + if(result.bool){ + var target=result.targets[0]; + player.line([trigger.source,target],'green'); + target.gainPlayerCard(trigger.source,'h',true); + if(event.count2) event.goto(2) + } + 'step 4' + if(cards.length) player.gain(cards,'gain2','log'); + 'step 5' + if(event.count>0){ + player.chooseBool(get.prompt2('spyinzhi')).set('frequentSkill','spyinzhi'); + } + else event.finish(); + 'step 6' + if(result.bool){ + player.logSkill('spyinzhi'); + event.goto(1); + }; + }, + }, + spmingjian:{ + trigger:{global:'phaseBegin'}, + direct:true, + filter:function(event,player){ + return player.countCards('he')>0; + }, + content:function(){ + 'step 0' + var next=player.chooseCard(get.prompt2('spmingjian',trigger.player),'he'); + next.set('ai',function(card){ + var target=_status.event.getTrigger().player; + var player=_status.event.player; + if(get.attitude(player,target)>0&&target.countCards('j')>0) return 5-get.value(card); + return -1; + }); + next.set('filterCard',function(card,player){ + if(get.position(card)=='e') return lib.filter.cardDiscardable.apply(this,arguments); + return true; + }); + //next.set('logSkill',['spmingjian',trigger.player]); + 'step 1' + if(result.bool){ + player.logSkill('spmingjian',trigger.player); + var card=result.cards[0]; + event.card=card; + if(get.position(card)=='e') event._result={index:0}; + else if(!lib.filter.cardDiscardable(card,player,event)) event._result={index:1}; + else{ + var name=get.translation(trigger.player); + player.chooseControl().set('choiceList',[ + '令'+name+'跳过本回合的判定阶段', + '令'+name+'于本回合的判定中不触发「判定结果生效前」的时机', + ]).set('ai',function(){return 0}); + } + } + else event.finish(); + 'step 2' + if(result.index==0){ + player.discard(card); + trigger.player.skip('phaseJudge'); + } + else{ + player.lose(card,ui.special,'toStorage'); + trigger.player.addSkill('spmingjian_charlotte'); + trigger.player.storage.spmingjian_charlotte.add(card); + trigger.player.markSkill('spmingjian_charlotte'); + } + }, + ai:{ + expose:0.25, + }, + }, + spmingjian_charlotte:{ + trigger:{player:['judgeBefore','phaseAfter']}, + forced:true, + firstDo:true, + silent:true, + popup:false, + charlotte:true, + content:function(){ + if(trigger.name=='phase') player.removeSkill(event.name); + else trigger.noJudgeTrigger=true; + }, + init:function(player,skill){ + if(!player.storage[skill]) player.storage[skill]=[]; + }, + marktext:'鉴', + intro:{ + name:'明鉴', + content:'cards', + onunmark:'throw', + }, + }, + spshude:{ + trigger:{player:'phaseJieshuBegin'}, + frequent:true, + filter:function(event,player){ + return player.countCards('h')2; + return get.suit(card)==get.suit(ui.selected.cards[0]); + }, + content:function(){ + target.turnOver(); + player.addTempSkill('spfuluan2'); + }, + ai:{ + order:1, + result:{ + target:function(player,target){ + if(target.isTurnedOver()) return 2; + return -1; + }, + }, + }, + }, + spfuluan2:{ + mod:{ + cardEnabled:function(card){ + if(card.name=='sha') return false; + }, + }, + }, + spzhaoxin:{ + trigger:{player:'phaseDrawEnd'}, + check:function(event,player){ + return player.getUseValue({name:'sha',isCard:true})>0; + }, + filter:function(event,player){ + return player.countCards('h')>0; + }, + content:function(){ + 'step 0' + player.showHandcards(); + 'step 1' + player.chooseUseTarget('sha',false); + }, + }, + splanggu:{ + trigger:{player:'damageEnd'}, + filter:function(event,player){ + return get.itemtype(event.source)=='player'; + }, + logTarget:'source', + content:function(){ + 'step 0' + player.judge(); + 'step 1' + if(trigger.source.countCards('h')>0){ + var next=player.discardPlayerCard(trigger.source,'h',[1,Infinity]); + next.set('suit',result.suit); + next.set('filterButton',function(button){ + return get.suit(button.link)==_status.event.suit; + }); + next.set('visible',true); + } + }, + group:'splanggu_rewrite', + }, + splanggu_rewrite:{ + trigger:{player:'judge'}, + filter:function (event,player){ + return player.countCards('h')>0&&event.getParent().name=='splanggu'; + }, + direct:true, + content:function (){ + "step 0" + player.chooseCard('狼顾的判定结果为'+ + get.translation(trigger.player.judging[0])+',是否打出一张手牌进行代替?','h',function(card){ + var player=_status.event.player; + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + if(mod!='unchanged') return mod; + return true; + }).set('ai',function(card){ + return -1; + }); + "step 1" + if(result.bool){ + player.respond(result.cards,'highlight','splanggu','noOrdering'); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + if(trigger.player.judging[0].clone){ + trigger.player.judging[0].clone.classList.remove('thrownhighlight'); + game.broadcast(function(card){ + if(card.clone){ + card.clone.classList.remove('thrownhighlight'); + } + },trigger.player.judging[0]); + game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); + } + game.cardsDiscard(trigger.player.judging[0]); + trigger.player.judging[0]=result.cards[0]; + trigger.orderingCards.addArray(result.cards); + game.log(trigger.player,'的判定牌改为',result.cards[0]); + game.delay(2); + } + }, + }, + sphantong:{ + trigger:{player:'loseEnd'}, + frequent:true, + filter:function(event,player){ + return event.type=='discard'&&event.getParent(3).name=='phaseDiscard'&&event.cards.filterInD('d').length>0; + }, + content:function(){ + if(!player.storage.sphantong) player.storage.sphantong=[]; + var cards=trigger.cards.filterInD('d'); + player.storage.sphantong.addArray(cards); + player.$gain2(cards); + game.log(player,'将',cards,'置于武将牌上'); + player.markSkill('sphantong'); + }, + group:['sphantong_gain'], + derivation:['hujia','jijiang','jiuyuan','xueyi'], + marktext:'诏', + intro:{ + content:'cards', + onunmark:'throw', + }, + }, + sphantong_gain:{ + trigger:{global:'phaseBegin'}, + direct:true, + filter:function(event,player){ + return player.storage.sphantong&&player.storage.sphantong.length>0; + }, + content:function(){ + 'step 0' + player.chooseButton([get.prompt('sphantong'),player.storage.sphantong],function(button){return -1}); + 'step 1' + if(result.bool){ + player.logSkill('sphantong'); + var card=result.links[0]; + player.$throw(card); + game.log(player,'将',card,'置入了弃牌堆'); + player.storage.sphantong.remove(card); + player[player.storage.sphantong.length>0?'markSkill':'unmarkSkill']('sphantong'); + game.cardsDiscard(card); + var list=['hujia','jijiang','jiuyuan','xueyi']; + for(var i=0;i0) player.chooseControl(list).set('prompt','选择获得以下技能中的一个'); + else event.finish(); + } + else event.finish(); + 'step 2' + var skill=result.control; + player.addTempSkill(skill); + if(!player.storage.zhuSkill_sphantong) player.storage.zhuSkill_sphantong=[]; + player.storage.zhuSkill_sphantong.add(skill); + player.popup(skill,'wood'); + game.log(player,'获得了技能','#g【'+get.translation(skill)+'】'); + var next=game.createEvent('sphantong_clear',false); + event.next.remove(next); + trigger.after.push(next); + next.player=player; + next.skill=skill; + next.setContent(function(){ + if(player.storage.zhuSkill_sphantong) player.storage.zhuSkill_sphantong.remove(event.skill); + }) + }, + }, + sphuangen:{ + trigger:{global:'useCardToPlayered'}, + filter:function(event,player){ + if(!event.isFirstTarget) return false; + if(get.type(event.card)!='trick') return false; + if(get.info(event.card).multitarget) return false; + if(event.targets.length<2) return false; + return player.hp>0; + }, + direct:true, + content:function(){ + "step 0" + player.chooseTarget(get.prompt('sphuangen'), + [1,Math.min(player.hp,trigger.targets.length)],function(card,player,target){ + return _status.event.targets.contains(target); + }).set('ai',function(target){ + return -get.effect(target,trigger.card,trigger.player,_status.event.player); + }).set('targets',trigger.targets); + "step 1" + if(result.bool){ + player.logSkill('sphuangen',result.targets); + trigger.excluded.addArray(result.targets); + player.draw(); + } + }, + }, + spyicong:{ + trigger:{player:'phaseDiscardEnd'}, + direct:true, + filter:function(event,player){ + return player.countCards('he')>0; + }, + content:function(){ + 'step 0' + player.chooseCard('he',[1,player.countCards('he')],get.prompt2('spyicong')).set('ai',function(card){ + if(card.name=='du') return 10; + if(ui.selected.cards.length) return -1; + return 4-get.value(card); + }); + 'step 1' + if(result.bool){ + player.logSkill('spyicong'); + if(!player.storage.spyicong) player.storage.spyicong=[]; + player.storage.spyicong.addArray(result.cards); + player.$giveAuto(result.cards.length,player,false); + game.log(player,'扣置了'+get.cnNumber(player.lose(result.cards,'toStorage',ui.special).cards.length)+'张【扈】'); + player.markSkill('spyicong'); + } + }, + mod:{ + globalTo:function(from,to,num){ + if(to.storage.spyicong&&to.storage.spyicong.length) return num+to.storage.spyicong.length; + }, + }, + marktext:'扈', + intro:{ + name:'义从', + content:'cardCount', + onunmark:'throw', + }, + }, + sptuji:{ + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + filter:function(event,player){ + return player.storage.spyicong&&player.storage.spyicong.length>0; + }, + content:function(){ + var num=player.storage.spyicong.length; + player.addMark('sptuji2',num,false); + player.addTempSkill('sptuji2'); + player.unmarkSkill('spyicong'); + if(num<=1) player.draw(); + }, + }, + sptuji2:{ + onremove:true, + charlotte:true, + mod:{ + globalFrom:function(from,to,num){ + return num-from.countMark('sptuji2'); + }, + }, + marktext:'突', + intro:{ + name:'突骑', + content:'至其他角色的距离-#', + }, + }, + //二袁 + neifa:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + direct:true, + content:function(){ + 'step 0' + _status.noclearcountdown=true; + if(game.hasPlayer(function(current){ + return current.countGainableCards(player,'ej')>0; + })){ + player.chooseControl('cancel2').set('choiceList',[ + '摸两张牌,然后弃置一张牌', + '获得场上的一张牌,然后弃置一张牌', + ]).set('prompt',get.prompt('neifa')).set('ai',function(){ + if(game.hasPlayer(function(current){ + var att=get.attitude(player,current); + if(att==0) return false; + if(att<0) return current.countCards('e',function(card){ + return get.value(card)>0; + })>0; + return current.countCards('ej',function(card){ + return get.position(card)=='j'||get.value(card)<=0; + })>0; + })) return 1; + return 0; + }); + } + else{ + player.chooseControl('ok','cancel2').set('prompt',get.prompt2('neifa')); + } + 'step 1' + if(result.control=='cancel2'){ + delete _status.noclearcountdown; + if(!_status.noclearcountdown){ + game.stopCountChoose(); + } + event.finish(); + return; + } + else if(result.index==1){ + player.chooseTarget('请选择一名角色,获得其装备区或判定区内的一张牌',true,function(card,player,target){ + return target.countGainableCards(player,'ej')>0; + }).set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + if(att>0&&target.countCards('ej',function(card){ + return get.position(card)=='j'||get.value(card,target)<=0; + })) return 2*att; + else if(att<0&&target.countCards('e',function(card){ + return get.value(card)>0; + })) return -att; + return -1; + }); + } + else{ + delete _status.noclearcountdown; + if(!_status.noclearcountdown){ + game.stopCountChoose(); + } + player.logSkill('neifa'); + player.draw(2); + event.goto(3) + } + 'step 2' + delete _status.noclearcountdown; + if(!_status.noclearcountdown){ + game.stopCountChoose(); + } + if(result.bool){ + var target=result.targets[0]; + player.logSkill('neifa',target); + player.gainPlayerCard(target,'ej',true); + } + 'step 3' + player.chooseToDiscard(true,'he'); + 'step 4' + if(result.bool&&result.cards&&result.cards.length){ + var name=get.type(result.cards[0])=='basic'?'neifa_basic':'neifa_nobasic'; + player.addTempSkill(name); + var num=Math.min(5,player.countCards('h',function(cardx){ + return (name=='neifa_basic')!=(get.type(cardx,player)=='basic') + })); + player.addMark(name,num,false); + } + }, + ai:{ + threaten:3, + }, + }, + neifa_basic:{ + mark:true, + marktext:'伐', + onremove:true, + intro:{ + name:'内伐 - 基本牌', + content:'本回合内不能使用锦囊牌和装备牌,且使用【杀】选择目标时可以多选择1个目标,且使用【杀】的目标次数上限+#。', + }, + mod:{ + cardEnabled:function(card,player){ + if(['trick','equip'].contains(get.type(card,'trick'))) return false; + }, + cardSavable:function(card,player){ + if(['trick','equip'].contains(get.type(card,'trick'))) return false; + }, + cardUsable:function(card,player,num){ + if(card.name=='sha'){ + return num+player.countMark('neifa_basic'); + } + }, + }, + trigger:{player:'useCard2'}, + filter:function(event,player){ + if(event.card.name!='sha') return false; + return game.hasPlayer(function(current){ + return !event.targets.contains(current)&&player.canUse(event.card,current); + }); + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('neifa'),'为'+get.translation(trigger.card)+'额外指定一个目标',function(card,player,target){ + return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target); + }).set('sourcex',trigger.targets).set('ai',function(target){ + var player=_status.event.player; + return get.effect(target,_status.event.card,player,player); + }).set('card',trigger.card); + 'step 1' + if(result.bool){ + if(!event.isMine()&&!_status.connectMode) game.delayx(); + event.targets=result.targets; + } + else{ + event.finish(); + } + 'step 2' + player.logSkill('neifa',event.targets); + trigger.targets.addArray(event.targets); + }, + }, + neifa_nobasic:{ + trigger:{player:'useCard2'}, + direct:true, + mark:true, + marktext:'伐', + onremove:true, + mod:{ + cardEnabled:function(card,player){ + if(get.type(card)=='basic') return false; + }, + cardSavable:function(card,player){ + if(get.type(card)=='basic') return false; + }, + }, + intro:{ + name:'内伐 - 非基本牌', + content:'本回合内不能使用基本牌,且使用普通锦囊牌选择目标时可以多选择1个目标,且本回合的出牌阶段内前两次使用装备牌时摸#张牌。' + }, + filter:function(event,player){ + if(get.type(event.card)!='trick') return false; + if(event.targets&&event.targets.length>0) return true; + var info=get.info(event.card); + if(info.allowMultiple==false) return false; + if(event.targets&&!info.multitarget){ + if(game.hasPlayer(function(current){ + return lib.filter.targetEnabled2(event.card,player,current)&&!event.targets.contains(current); + })){ + return true; + } + } + return false; + }, + content:function(){ + 'step 0' + var prompt2='为'+get.translation(trigger.card)+'增加或减少一个目标' + player.chooseTarget(get.prompt('neifa'),function(card,player,target){ + var player=_status.event.player; + if(_status.event.targets.contains(target)) return true; + return lib.filter.targetEnabled2(_status.event.card,player,target)&&lib.filter.targetInRange(_status.event.card,player,target); + }).set('prompt2',prompt2).set('ai',function(target){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + return get.effect(target,trigger.card,player,player)*(_status.event.targets.contains(target)?-1:1); + }).set('targets',trigger.targets).set('card',trigger.card); + 'step 1' + if(result.bool){ + if(!event.isMine()) game.delayx(); + event.targets=result.targets; + } + else{ + event.finish(); + } + 'step 2' + if(event.targets){ + player.logSkill('neifa',event.targets); + if(trigger.targets.contains(event.targets[0])) trigger.targets.removeArray(event.targets); + else trigger.targets.addArray(event.targets); + } + }, + group:'neifa_use', + ai:{ + reverseOrder:true, + skillTagFilter:function(player){ + if(player.storage.counttrigger&&player.storage.counttrigger.neifa_use>=2) return false; + }, + effect:{ + target:function(card,player,target){ + if((!player.storage.counttrigger||!player.storage.counttrigger.neifa_use||player.storage.counttrigger.neifa_use<2)&&player==target&&get.type(card)=='equip') return [1,3]; + }, + }, + }, + }, + neifa_use:{ + audio:'neifa', + usable:2, + trigger:{player:'useCard'}, + forced:true, + filter:function(event,player){ + return get.type(event.card)=='equip'&&player.countMark('neifa_nobasic')>0; + }, + content:function(){ + player.draw(player.countMark('neifa_nobasic')); + }, + }, + //许靖 + yuxu:{ + audio:2, + trigger:{player:'useCardEnd'}, + filter:function(event,player){ + if(event!=player.getLastUsed()) return false; + var evt=event.getParent('phaseUse'); + if(!evt||evt.player!=player) return false; + var history=player.getHistory('useCard',function(evtt){ + return evtt.getParent('phaseUse')==evt; + }); + var index=history.indexOf(event); + if(index==0) return true; + return history[index-1].yuxu!=true&&player.countCards('he')>0; + }, + content:function(){ + trigger.yuxu=true; + player.addTempSkill('yuxu2'); + player.draw(); + }, + }, + yuxu2:{ + trigger:{player:'useCardEnd'}, + direct:true, + charlotte:true, + locked:true, + filter:function(event,player){ + if(event!=player.getLastUsed()) return false; + var evt=event.getParent('phaseUse'); + if(!evt||evt.player!=player) return false; + var history=player.getHistory('useCard',function(evtt){ + return evtt.getParent('phaseUse')==evt; + }); + var index=history.indexOf(event); + if(index<1) return false; + return history[index-1].yuxu==true&&player.countCards('he')>0; + }, + content:function(){ + player.chooseToDiscard('he',true); + }, + }, + xjshijian:{ + audio:2, + trigger:{global:'useCardAfter'}, + direct:true, + filter:function(event,player){ + if(event.player==player) return false; + var evt=event.getParent('phaseUse'); + if(!evt||evt.player!=event.player) return false; + return event.player.getHistory('useCard',function(evtt){ + return evtt.getParent('phaseUse')==evt; + }).indexOf(event)==1&&player.countCards('he')>0; + }, + content:function(){ + 'step 0' + var next=player.chooseToDiscard('he',get.prompt('xjshijian',trigger.player),'弃置一张牌并令其获得技能〖誉虚〗至回合结束'); + next.set('logSkill',['xjshijian',trigger.player]); + next.set('check',get.attitude(player,trigger.player)>0&&trigger.player.countCards('h')>2); + next.ai=function(card){ + if(_status.event.check) return 5-get.value(card); + return -1; + }; + 'step 1' + if(result.bool) trigger.player.addTempSkill('yuxu'); + }, + ai:{ + expose:0.25, + }, + }, + //新1v1 + yanhuo:{ + audio:2, + trigger:{player:'die'}, + forceDie:true, + filter:function(event,player){ + return player.countCards('he')>0; + }, + direct:true, + skillAnimation:true, + animationColor:'thunder', + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('yanhuo'),function(card,player,target){ + return target!=player&&target.countDiscardableCards(player,'he')>0 + }).set('forceDie',true).ai=function(target){ + return -target.countCards('he')*get.attitude(player,target); + }; + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('yanhuo',target); + event.count=player.countCards('he'); + } + else event.finish() + 'step 2' + if(target.countDiscardableCards(player,'he')){ + player.line(target); + player.discardPlayerCard(target,'he',true).set('forceDie',true); + event.count--; + if(event.count) event.redo(); + } + }, + }, + mouzhu:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return target!=player&&target.countCards('he')>0; + }, + content:function(){ + 'step 0' + target.chooseCard('he','交给'+get.translation(player)+'一张牌',true); + 'step 1' + player.gain(result.cards,target,'giveAuto'); + 'step 2' + if(player.countCards('h')<=target.countCards('h')){ + event.finish(); + return; + } + var list=[]; + if(target.canUse('sha',player,false)) list.push('sha'); + if(target.canUse('juedou',player,false)) list.push('juedou'); + if(!list.length) event.finish(); + else if(list.length==1) event._result={control:list[0]}; + else target.chooseControl(list).set('prompt','对'+get.translation(player)+'使用一张【杀】或【决斗】。').ai=function(){ + return get.effect(player,{name:'sha'},target,target)>=get.effect(player,{name:'juedou'},target,target)?'sha':'juedou'; + }; + 'step 3' + target.useCard({name:result.control,isCard:true},player); + }, + ai:{ + order:7, + result:{ + target:-1.2, + player:function(player,target){ + if(target.countCards('h')-player.countCards('h')>1) return 1; + if(get.damageEffect(target,player,player,player)>0) return 1; + if(player.hp>3||player.countCards('h','sha')&&player.countCards('h','shan')) return 0; + if(player.hp>2) return -1.1; + return -2; + }, + }, + }, + }, + niluan:{ + audio:2, + trigger:{global:'phaseJieshuBegin'}, + filter:function(event,player){ + return event.player!=player&&(event.player.hp>player.hp||event.player.countUsed('sha')) + }, + direct:true, + content:function(){ + var next=player.chooseToUse(); + next.logSkill='niluan'; + next.set('openskilldialog',get.prompt2('niluan')); + next.set('norestore',true); + next.set('_backupevent','niluanx'); + next.backup('niluanx'); + }, + }, + niluanx:{ + viewAs:{name:'sha'}, + filterCard:{color:'black'}, + position:'he', + check:function(card){return 5-get.value(card)}, + }, + cuorui:{ + audio:2, + trigger:{ + global:'gameDrawAfter', + player:'enterGame', + }, + forced:true, + filter:function(event,player){ + return player.maxHp>0&&!get.is.single(); + }, + content:function(){ + player.draw(Math.min(5,player.maxHp),false); + }, + group:'cuorui_nojudge', + subSkill:{ + nojudge:{ + trigger:{ + player:'phaseJudgeBefore', + }, + forced:true, + audio:'cuorui', + filter:function(event,player){ + return !player.storage.cuorui&&(get.is.single()||player.countCards('j')); + }, + content:function(){ + player.storage.cuorui=true; + trigger.cancel(); + game.log(player,'跳过了','#g判定阶段'); + }, + }, + }, + }, + liewei:{ + audio:2, + trigger:{source:'dieAfter'}, + frequent:true, + content:function(){ + player.draw(3); + }, + }, + //蒋干 + weicheng:{ + audio:2, + trigger:{global:'gainAfter'}, + //forced:true, + frequent:true, + filter:function(event,player){ + if(event.source==player&&event.player!=player&&player.hp>player.countCards('h')){ + return event.relatedLose&&event.relatedLose.hs&&event.relatedLose.hs.length>0; + } + return false; + }, + content:function(){ + player.draw(); + }, + }, + daoshu:{ + audio:2, + enable:'phaseUse', + filterTarget:function(c,p,t){ + return t!=p&&t.countGainableCards(p,'h')>0; + }, + filter:function(e,p){ + return !p.hasSkill('daoshu_used') + }, + content:function(){ + 'step 0' + player.chooseControl(lib.suit).set('prompt','请选择一个花色').ai=function(){return lib.suit.randomGet()}; + 'step 1' + event.suit=result.control; + player.popup(event.suit+2); + game.log(player,'选择了',event.suit+2); + player.gainPlayerCard(target,true,'h','visibleMove'); + 'step 2' + if(result.bool){ + var suit2=get.suit(result.cards[0]); + if(suit2==event.suit){ + target.damage(); + event.finish(); + } + else{ + player.addTempSkill('daoshu_used','phaseUseEnd'); + if(player.countCards('h',function(card){return get.suit(card)!=suit2})==0){ + player.showHandcards(); + event.finish(); + } + else player.chooseCard('h',true,function(card){ + return get.suit(card)!=_status.event.suit2 + },'交给'+get.translation(target)+'一张不为'+get.translation(suit2)+'花色的牌').set('suit2',suit2); + } + } + else event.finish(); + 'step 3' + player.give(result.cards,target,true); + }, + ai:{ + order:1, + result:{ + target:-1, + }, + }, + subSkill:{ + used:{sub:true}, + }, + }, + //统率三军诸葛瑾和文聘 + "zhenwei_three":{ + global:"zhenwei_three_others", + subSkill:{ + others:{ + mod:{ + globalTo:function (from,to,distance){ + if(from.side!=to.side&&game.hasPlayer(function(current){ + return current!=to&¤t.side==to.side&¤t.hasSkill('zhenwei_three'); + }))return distance+1; + }, + }, + sub:true, + }, + }, + }, + "huanshi_three":{ + audio:"huanshi", + trigger:{ + global:"judge", + }, + filter:function (event,player){ + return player.countCards('he')>0&&player.side==event.player.side; + }, + direct:true, + content:function (){ + "step 0" + player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ + get.translation(trigger.player.judging[0])+','+get.prompt('huanshi_three'),'he',function(card){ + var player=_status.event.player; + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + if(mod!='unchanged') return mod; + return true; + }).set('ai',function(card){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + var judging=_status.event.judging; + var result=trigger.judge(card)-trigger.judge(judging); + var attitude=get.attitude(player,trigger.player); + if(attitude==0||result==0) return 0; + if(attitude>0){ + return result-get.value(card)/2; + } + else{ + return -result-get.value(card)/2; + } + }).set('judging',trigger.player.judging[0]); + "step 1" + if(result.bool){ + player.respond(result.cards,'highlight','huanshi_three','noOrdering'); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + if(trigger.player.judging[0].clone){ + trigger.player.judging[0].clone.classList.remove('thrownhighlight'); + game.broadcast(function(card){ + if(card.clone){ + card.clone.classList.remove('thrownhighlight'); + } + },trigger.player.judging[0]); + game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); + } + game.cardsDiscard(trigger.player.judging[0]); + trigger.player.judging[0]=result.cards[0]; + trigger.orderingCards.addArray(result.cards); + game.log(trigger.player,'的判定牌改为',result.cards[0]); + game.delay(2); + } + }, + ai:{ + rejudge:true, + tag:{ + rejudge:1, + }, + }, + }, + //英文版特典武将凯撒 + zhengfu:{ + trigger:{ + player:"useCardToPlayered", + }, + check:function (event,player){ + return get.attitude(player,event.target)<0; + }, + filter:function(event,player){ + return event.card.name=='sha'; + }, + logTarget:"target", + line:false, + content:function (){ + 'step 0' + player.line(trigger.target,{color:[220, 90, 139]}); + player.chooseControl(['basic','trick','equip']).set('ai',function(){ + var player=_status.event.target; + if(!player.countCards('h','sha')&&player.countCards('h','shan')) return 'trick'; + return 'basic'; + }).set('prompt','请选择一种牌的类别').set('target',trigger.target); + 'step 1' + trigger.target.chooseCard('he','交给'+get.translation(player)+'一张'+get.translation(result.control)+'牌,否则此【杀】不可被闪避。',function(card){ + return get.type(card,'trick')==result.control; + }).set('ai',function(card){ + var num=_status.event.num; + if(num==0) return 0; + if(card.name=='shan') return num>1?2:0; + return 8-get.value(card); + }).set('num',trigger.target.countCards('h','shan')) + 'step 2' + if(result.bool){ + var cards=result.cards; + player.gain(cards,trigger.target,'giveAuto'); + } + else trigger.getParent().directHit.add(trigger.target); + game.delay(); + }, + }, + //变权移植 + wanwei:{ + trigger:{target:['rewriteGainResult','rewriteDiscardResult']}, + direct:true, + filter:function(event,player){ + return event.player!=player; + }, + audio:2, + content:function(){ + 'step 0' + var prompt='即将失去'+get.translation(trigger.result.cards)+',是否发动【挽危】?'; + var next=player.choosePlayerCard(player,prompt,trigger.position); + next.set('ai',function(button){ + return 20-get.value(button.link); + }); + next.filterButton=trigger.filterButton; + next.selectButton=trigger.result.cards.length; + 'step 1' + if(result.bool){ + player.logSkill('wanwei'); + trigger.result.cards=result.links.slice(0); + trigger.result.links=result.links.slice(0); + trigger.cards=result.links.slice(0); + trigger.untrigger(); + } + } + }, + yuejian:{ + trigger:{global:'phaseDiscardBegin'}, + audio:2, + filter:function(event,player){ + return event.player.countUsed()0&&event.player.needsToDiscard(); + }, + subSkill:{ + num:{ + mod:{ + maxHandcard:function(player,num){ + return num+player.maxHp; + } + } + }, + } + }, + gzjili:{ + mod:{ + aiOrder:function(player,card,num){ + if(player.isPhaseUsing()&&get.subtype(card)=='equip1'&&!get.cardtag(card,'gifts')){ + var range0=player.getAttackRange(); + var range=0; + var info=get.info(card); + if(info&&info.distance&&info.distance.attackFrom){ + range-=info.distance.attackFrom; + } + if(player.getEquip(1)){ + var num=0; + var info=get.info(player.getEquip(1)); + if(info&&info.distance&&info.distance.attackFrom){ + num-=info.distance.attackFrom; + } + range0-=num; + } + range0+=range; + if(range0==(player.getHistory('useCard').length+player.getHistory('respond').length+2)&&player.countCards('h',function(cardx){ + return get.subtype(cardx)!='equip1'&&player.getUseValue(cardx)>0; + })) return num+10; + } + }, + }, + trigger:{player:['useCard','respond']}, + frequent:true, + locked:false, + filter:function(event,player){ + return player.getHistory('useCard').length+player.getHistory('respond').length==player.getAttackRange(); + }, + audio:2, + content:function(){ + player.draw(player.getAttackRange()); + }, + ai:{ + threaten:1.8, + effect:{ + target:function(card,player,target,current){ + if(player!=target||!player.isPhaseUsing()) return; + if(get.subtype(card)=='equip1'&&!get.cardtag(card,'gifts')){ + var range0=player.getAttackRange(); + var range=0; + var info=get.info(card); + if(info&&info.distance&&info.distance.attackFrom){ + range-=info.distance.attackFrom; + } + if(player.getEquip(1)){ + var num=0; + var info=get.info(player.getEquip(1)); + if(info&&info.distance&&info.distance.attackFrom){ + num-=info.distance.attackFrom; + } + range0-=num; + } + range0+=range; + var delta=range0-(player.getHistory('useCard').length+player.getHistory('respond').length); + if(delta<0) return; + var num=player.countCards('h',function(card){ + return (get.cardtag(card,'gifts')||get.subtype(card)!='equip1')&&player.getUseValue(card)>0; + }); + if(delta==2&&num>0) return [1,3]; + if(num>=delta) return 'zeroplayertarget'; + } + }, + }, + } + }, + xiongsuan:{ + limited:true, + enable:'phaseUse', + filterCard:true, + filter:function(event,player){ + return player.countCards('h'); + }, + check:function(card){ + return 7-get.value(card); + }, + filterTarget:true, + content:function(){ + 'step 0' + player.awakenSkill('xiongsuan'); + target.damage('nocard'); + 'step 1' + player.draw(3); + var list=[]; + var skills=target.getOriginalSkills(); + for(var i=0;i1){ + player.chooseControl(list).set('prompt','选择一个限定技在回合结束后重置之'); + } + else{ + event.finish(); + } + 'step 2' + target.storage.xiongsuan_restore=result.control; + target.addTempSkill('xiongsuan_restore','phaseZhunbeiBegin'); + }, + subSkill:{ + restore:{ + trigger:{global:'phaseAfter'}, + silent:true, + content:function(){ + player.restoreSkill(player.storage.xiongsuan_restore); + } + } + }, + ai:{ + order:4, + damage:true, + result:{ + target:function(player,target){ + if(target.hp>1){ + var skills=target.getOriginalSkills(); + for(var i=0;i=0) return 10; + if(target.hp>=4) return 5; + if(target.hp==3){ + if(player.countCards('h')<=2&&game.hasPlayer(function(current){ + return current.hp<=1&&get.attitude(player,current)<0; + })){ + return 3; + } + } + return 0; + } + } + } + }, + diancai:{ + audio:2, + trigger:{global:'phaseUseEnd'}, + filter:function(event,player){ + if(_status.currentPhase==player) return false; + var num=0; + player.getHistory('lose',function(evt){ + if(evt.cards2&&evt.getParent('phaseUse')==event) num+=evt.cards2.length; + }); + return num>=player.hp; + }, + content:function(){ + 'step 0' + var num=player.maxHp-player.countCards('h'); + if(num>0){ + player.draw(num); + } + }, + }, + diaodu:{ + audio:2, + group:"diaodu_use", + subfrequent:['use'], + subSkill:{ + use:{ + trigger:{ + player:"useCard", + }, + audio:"diaodu", + frequent:true, + prompt:'是否发动【调度】摸一张牌?', + filter:function (event,player){ + return get.type(event.card)=='equip' + }, + content:function (){ + player.draw('nodelay'); + }, + ai:{ + reverseEquip:true, + effect:{ + target:function (card,player,target,current){ + if(player==target&&get.type(card)=='equip') return [1,3]; + }, + }, + }, + }, + }, + trigger:{ + player:"phaseUseBegin", + }, + filter:function (event,player){ + return game.hasPlayer(function(current){ + return current!=player&¤t.countGainableCards(player,'e')>0; + }); + }, + direct:true, + content:function (){ + 'step 0' + player.chooseTarget(get.prompt2('diaodu'),function(card,player,current){ + return current!=player&¤t.countGainableCards(player,'e')>0; + }).ai=function(target){ + var num=get.attitude(_status.event.player,target); + if(target.isDamaged()&&target.getEquip('baiyin')&&num>0) return 2*num + return -num; + }; + 'step 1' + if(result.bool){ + event.target1=result.targets[0]; + player.logSkill('diaodu',event.target1); + player.line(event.target1,'diaodu'); + player.gainPlayerCard(event.target1,'e',true); + } + else event.finish(); + 'step 2' + if(result.bool){ + event.card=result.cards[0]; + player.chooseTarget('是否将'+get.translation(event.card)+'交给一名其他角色?',function(card,player,current){ + return current!=player&¤t!=event.target1; + }); + } + else event.finish(); + 'step 3' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + target.gain(card,player,'give'); + } + }, + }, + zhengbi:{ + trigger:{player:'phaseUseBegin'}, + filter:function(event,player){ + //if(event.player!=player) return false; + return game.hasPlayer(function(current){return current!=player&¤t.isHealthy()})||player.countCards('h',{type:'basic'}); + }, + content:function(){ + 'step 0' + var choices=[]; + if(game.hasPlayer(function(current){return current.isHealthy()})) choices.push('选择一名未受伤的角色'); + if(player.countCards('h',{type:'basic'})) choices.push('交给一名角色一张基本牌'); + player.chooseControl(choices,ui.create.dialog('征辟

    选择一项
    ','hidden')).set('ai',function(){ + if(choices.length>1){ + return 1; + } + return 0; + }); + 'step 1' + if(result.control=='选择一名未受伤的角色') player.chooseTarget('征辟

    选择一名未受伤的角色,你对其使用牌没有次数和距离限制直到回合结束
    ',function(card,player,target){ + return target!=player&&target.isHealthy(); + },true); + else player.chooseCardTarget({ + prompt:'征辟

    交给一名其他角色一张基本牌,然后该角色交给你一张非基本牌或两张基本牌
    ', + position:'h', + filterCard:function(card){return get.type(card)=='basic'}, + filterTarget:function(card,player,target){ + return target!=player; + }, + ai1:function(card){return 7-get.value(card)}, + //ai2:function(card,player,target){} + }).set('forced',true); + 'step 2' + event.target=result.targets[0]; + player.line(result.targets,'green'); + if(result.cards.length){ + event.cards=result.cards; + result.targets[0].gain(result.cards,player,'give'); + } + else{ + player.storage.zhengbi_eff1=result.targets[0]; + player.addTempSkill('zhengbi_eff1'); + event.finish(); + } + 'step 3' + var choices=[]; + if(target.countCards('he',{type:['trick','delay','equip']})) choices.push('一张非基本牌'); + if(target.countCards('h',{type:'basic'})>1) choices.push('两张基本牌'); + if(choices.length) target.chooseControl(choices,ui.create.dialog('征辟

    交给'+get.translation(player)+'
    ')).set('ai',function(event,player){ + if(choices.length>1){ + if(player.countCards('he',{type:['trick','delay','equip']},function(card){return get.value(card)<7})) return 0; + return 1; + } + return 0; + }); + else{ + if(target.countCards('h')){ + var cards=target.getCards('h'); + player.gain(cards,target,'giveAuto'); + event.finish(); + } + else event.finish(); + } + 'step 4' + var check=(result.control=='一张非基本牌'); + target.chooseCard('he',(check?1:2),{type:(check?['trick','delay','equip']:'basic')},true); + 'step 5' + if(result.cards){ + player.gain(result.cards,target,'giveAuto'); + } + }, + subSkill:{ + eff1:{ + sub:true, + mod:{ + targetInRange:function (card,player,target){ + if(target==player.storage.zhengbi_eff1) return true; + }, + cardUsable:function (card,player,num){ + if(typeof num=='number'&&player.storage.zhengbi_eff1&&player.storage.zhengbi_eff1.isAlive()) return num+100; + }, + playerEnabled:function (card,player,target){ + if(player.storage.zhengbi_eff1.isAlive()&&player.storage.zhengbi_eff1&&target!=player.storage.zhengbi_eff1){ + var num=player.getCardUsable(card)-100; + if(num<=0) return false; + } + }, + }, + onremove:true, + }, + eff2:{sub:true}, + } + }, + fengying:{ + limited:true, + enable:'phaseUse', + position:'h', + filterCard:true, + selectCard:-1, + filter:function(event,player){ + return !player.storage.fengying&&player.countCards('h')>0; + }, + filterTarget:function(card,player,target){ + return target==player; + }, + selectTarget:-1, + discard:false, + lose:false, + content:function(){ + 'step 0' + player.awakenSkill('fengying'); + player.storage.fengying=true; + player.insertPhase(); + var evt=_status.event.getParent('phaseUse'); + if(evt&&evt.name=='phaseUse'){ + evt.skipped=true; + } + 'step 1' + var cards=player.getCards('h'); + player.discard(cards); + player.chooseTarget('请选择至多'+cards.length+'名角色,令这些角色将手牌摸至手牌上限。',[1,cards.length],function(card,player,target){ + return target.countCards('h')2){ + return Math.min(5,target.maxHp)-target.countCards('h'); + } + return att/3; + }); + 'step 2' + if(result.bool){ + var list=result.targets; + list.sort(lib.sort.seat); + player.line(list,'thunder'); + game.asyncDraw(list,function(current){ + return current.maxHp-current.countCards('h'); + }); + } + }, + skillAnimation:'epic', + animationColor:'gray', + ai:{ + order:0.1, + result:{ + player:0, + } + }, + }, + //新服曹笨 + xinshanjia:{ + group:["xinshanjia_count"], + locked:false, + mod:{ + aiValue:function(player,card,num){ + if((player.storage.xinshanjia||0)<3&&get.type(card)=='equip'&&!get.cardtag(card,'gifts')){ + if(get.position(card)=='e') return num/player.hp; + return num*player.hp; + } + }, + }, + subSkill:{ + count:{ + forced:true, + silent:true, + popup:false, + trigger:{ + player:"loseEnd", + }, + filter:function(event,player){ + return event.es.length>0; + }, + content:function (){ + lib.skill.xinshanjia.sync(player); + }, + }, + }, + audio:"shanjia", + trigger:{ + player:"phaseUseBegin", + }, + intro:{ + content:"本局游戏内已失去过#张装备区内的牌", + }, + frequent:true, + sync:function(player){ + var history=player.actionHistory; + var num=0; + for(var i=0;i0) player.markSkill('xinshanjia'); + }, + content:function (){ + 'step 0' + player.draw(3); + 'step 1' + lib.skill.xinshanjia.sync(player); + var num=3-player.storage.xinshanjia; + if(num>0){ + player.chooseToDiscard('he',true,num).ai=get.disvalue; + } + 'step 2' + var bool=true; + if(result.cards){ + for(var i=0;i2) return false; + }, + effect:{ + target:function(card,player,target){ + if(player.storage.xinshanjia<3&&get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; + }, + }, + }, + }, + //OL马超 + ol_shichou:{ + audio:2, + trigger:{ + player:'useCard2', + }, + direct:true, + filter:function(event,player){ + return event.card&&event.card.name=='sha';//&&player.isDamaged(); + }, + content:function(){ + 'step 0' + var num=Math.max(1,player.getDamagedHp()); + player.chooseTarget('是否发动【誓仇】,令至多'+num+'名其他角色也成为此【杀】的目标?',[1,num],function(card,player,target){ + return target!=player&&!trigger.targets.contains(target)&&player.canUse({name:'sha'},target); + }).ai=function(target){ + return get.effect(target,{name:'sha'},_status.event.player); + }; + 'step 1' + if(result.bool&&result.targets&&result.targets.length){ + var targets=result.targets; + player.logSkill('ol_shichou',targets); + player.line(targets,trigger.card.nature); + trigger.targets.addArray(targets); + } + }, + }, + //新大小乔 + "new_xingwu":{ + audio:"xingwu", + trigger:{ + player:"phaseDiscardBegin", + }, + direct:true, + intro:{ + content:"cards", + onunmark:function(storage,player){ + if(storage&&storage.length){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + storage.length=0; + } + }, + }, + init:function (player){ + if(!player.storage.new_xingwu) player.storage.new_xingwu=[]; + }, + content:function (){ + 'step 0' + player.chooseCard(get.prompt2('new_xingwu')).set('ai',function(card){ + var player=_status.event.player; + for(var i=0;i0&& + get.attitude(player,current)<0) + })) return 0; + } + return 7-get.value(card); + }); + 'step 1' + if(result.bool){ + player.logSkill('new_xingwu'); + if(player.storage.new_xingwu.length<2){ + player.$give(result.cards,player,false); + } + player.lose(result.cards,ui.special,'toStorage'); + player.storage.new_xingwu=player.storage.new_xingwu.concat(result.cards); + player.markSkill('new_xingwu'); + player.syncStorage('new_xingwu'); + } + else{ + event.finish(); + } + 'step 2' + var suitlist=[]; + for(var i=0;i0) return -1; + return get.damageEffect(target,player,player)*target.sex=='male'?2:1+target.countCards('e')/2; + }); + } + 'step 4' + if(result.bool){ + var target=result.targets[0]; + var num=target.sex=="male"?2:1; + target.damage(num); + event.target=target; + player.line(target,'green'); + } + else{ + event.finish(); + } + 'step 5' + if(event.target&&event.target.isAlive()){ + var es=event.target.getCards('e'); + if(es.length){ + event.target.discard(es); + } + } + }, + ai:{ + threaten:1.5, + }, + }, + "new_luoyan":{ + group:["new_luoyan_tianxiang","new_luoyan_liuli"], + }, + "new_luoyan_tianxiang":{ + inherit:"retianxiang", + filter:function (event,player){ + if(!player.storage.new_xingwu||!player.storage.new_xingwu.length) return false; + if(player.hasSkill('retianxiang')||player.hasSkill('tianxiang')) return false; + return lib.skill.retianxiang.filter(event,player); + }, + audio:"tianxiang", + }, + "new_luoyan_liuli":{ + inherit:"liuli", + filter:function (event,player){ + if(!player.storage.new_xingwu||!player.storage.new_xingwu.length) return false; + if(player.hasSkill('liuli')) return false; + return lib.skill.liuli.filter(event,player); + }, + audio:"liuli", + }, + //新孙鲁育 + "new_meibu":{ + audio:"meibu", + trigger:{ + global:"phaseUseBegin", + }, + filter:function (event,player){ + return event.player!=player&&event.player.isAlive()&&event.player.inRange(player); + }, + direct:true, + derivation:["new_zhixi"], + checkx:function (event,player){ + if(get.attitude(player,event.player)>=0) return false; + var e2=player.getEquip(2); + if(e2){ + if(e2.name=='tengjia') return true; + if(e2.name=='bagua') return true; + } + return event.player.countCards('h')>event.player.hp; + }, + content:function (){ + "step 0" + var check=lib.skill.new_meibu.checkx(trigger,player); + player.chooseToDiscard(get.prompt2('new_meibu',trigger.player),'he').set('ai',function(card){ + if(_status.event.check) return 6-get.value(card); + return 0; + }).set('check',check).set('logSkill','new_meibu'); + "step 1" + if(result.bool){ + var target=trigger.player; + var card=result.cards[0]; + player.line(target,'green'); + target.addTempSkill('new_zhixi','phaseUseEnd'); + if(card.name!='sha'&&get.type(card)!='trick'&&get.color(card)!='black'){ + target.addTempSkill('new_meibu_range','phaseUseEnd'); + target.storage.meibu=player; + } + target.markSkillCharacter('new_meibu',player,'魅步','锁定技,出牌阶段,你至多可使用X张牌,你使用了锦囊牌后不能再使用牌(X为你的体力值)。'); + } + }, + ai:{ + expose:0.2, + }, + subSkill:{ + range:{ + mod:{ + globalFrom:function (from,to,num){ + if(to==from.storage.meibu){ + return -Infinity; + } + }, + }, + sub:true, + }, + }, + }, + "new_mumu":{ + audio:"mumu", + trigger:{ + player:"phaseUseBegin", + }, + direct:true, + content:function (){ + 'step 0' + player.chooseTarget(get.prompt('new_mumu'),'弃置一名角色装备区内的一张牌,或者获得一名角色装备区内的防具牌',function(card,player,target){ + if(target==player) return target.getEquip(2)!=undefined; + return target.countCards('e')>0; + }).set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target) + if(target.getEquip(2)&&player.isEmpty(2)){ + return -2*att; + } + return -att; + }); + 'step 1' + if(result.bool&&result.targets&&result.targets.length){ + event.target=result.targets[0]; + player.logSkill('new_mumu',event.target); + player.line(event.target,'green'); + var e=event.target.getEquip(2); + event.e=e; + if(target==player) event.choice='获得一张防具牌'; + else if(e){ + player.chooseControl('弃置一张装备牌','获得一张防具牌').set('ai',function(){ + if(_status.event.player.getEquip(2)){ + return '弃置一张装备牌'; + } + return '获得一张防具牌'; + }); + } + else{ + event.choice='弃置一张装备牌'; + } + }else event.finish(); + 'step 2' + var choice=event.choice||result.control; + if(choice=='弃置一张装备牌'){ + player.discardPlayerCard(event.target,'e',true); + } + else{ + if(event.e){ + player.gain(event.e,event.target,'give'); + player.addTempSkill('new_mumu2') + } + } + }, + }, + "new_zhixi":{ + mod:{ + cardEnabled:function(card,player){ + if(player.storage.new_zhixi2||player.countMark('new_zhixi')>=player.hp) return false; + }, + cardUsable:function(card,player){ + if(player.storage.new_zhixi2||player.countMark('new_zhixi')>=player.hp) return false; + }, + cardRespondable:function(card,player){ + if(player.storage.new_zhixi2||player.countMark('new_zhixi')>=player.hp) return false; + }, + }, + trigger:{ + player:"useCard1", + }, + forced:true, + popup:false, + onremove:true, + firstDo:true, + onremove:function(player){ + player.unmarkSkill('new_meibu'); + delete player.storage.new_zhixi; + delete player.storage.new_zhixi2; + }, + content:function(){ + player.addMark('new_zhixi',1,false); + if(get.type2(trigger.card)=='trick') player.storage.new_zhixi2=true; + }, + ai:{presha:true,pretao:true,nokeep:true}, + }, + "new_mumu2":{ + mod:{ + cardEnabled:function(card){ + if(card.name=='sha') return false; + }, + }, + }, + qingzhong:{ + audio:2, + }, + qingzhongx:{ + audio:'weijing', + trigger:{player:'phaseUseBegin'}, + check:function(event,player){ + if(game.hasPlayer(function(current){ + return current!=player&¤t.isMinHandcard()&&get.attitude(player,current)>0; + })){ + return true; + } + if(player.countCards('h')<=2) return true; + // if(player.countCards('h')<=3&&!player.countCards('h','shan')) return true; + //if(player.countCards('h',{type:'basic'})<=1) return true; + return false; + }, + content:function(){ + player.draw(2); + player.addTempSkill('qingzhongx_give'); + }, + subSkill:{ + give:{ + trigger:{player:'phaseUseEnd'}, + filter:function(event,player){ + return !player.isMinHandcard(true); + }, + audio:'weijing', + forced:true, + content:function(){ + 'step 0' + var list=game.filterPlayer(function(current){ + return current.isMinHandcard(); + }); + if(list.length==1){ + if(list[0]!=player){ + player.line(list[0],'green'); + player.swapHandcards(list[0]); + } + event.finish(); + } + else{ + player.chooseTarget(true,'清忠:选择一名手牌最少的角色与其交换手牌',function(card,player,target){ + return target.isMinHandcard(); + }).set('ai',function(target){ + return get.attitude(_status.event.player,target); + }); + } + 'step 1' + if(result.bool){ + var target=result.targets[0]; + if(target!=player){ + player.line(target,'green'); + player.swapHandcards(target); + } + } + } + } + } + }, + weijing:{ + audio:2, + group:['weijing_sha','weijing_shan'], + subSkill:{ + sha:{ + audio:'qingzhong', + enable:'chooseToUse', + viewAs:{name:'sha',isCard:true}, + filterCard:function(){return false}, + viewAsFilter:function(player){ + if(player.hasSkill('weijing_disable')) return false; + }, + selectCard:-1, + mark:false, + precontent:function(){ + player.addTempSkill('weijing_disable','roundStart'); + }, + prompt:'视为使用一张杀', + ai:{ + order:function(){ + var player=_status.event.player; + if(!player.hasShan()&&!game.hasPlayer(function(current){ + return player.canUse('sha',current)&¤t.hp==1&&get.effect(current,{name:'sha'},player,player)>0; + })){ + return 0; + } + return 2.95; + }, + skillTagFilter:function(player,tag,arg){ + if(player.hasSkill('weijing_disable')) return false; + if(arg!='use') return false; + }, + respondSha:true, + } + }, + shan:{ + audio:'qingzhong', + enable:'chooseToUse', + viewAs:{name:'shan',isCard:true}, + mark:false, + filterCard:function(){return false}, + viewAsFilter:function(player){ + if(player.hasSkill('weijing_disable')) return false; + return true; + }, + onuse:function(event,player){ + player.addTempSkill('weijing_disable','roundStart'); + }, + selectCard:-1, + prompt:'视为使用一张闪', + ai:{ + order:function(){ + var player=_status.event.player; + if(player.hasSkill('qingzhongx_give')) return 2.95; + return 3.15; + }, + skillTagFilter:function(player){ + if(player.hasSkill('weijing_disable')) return false; + }, + respondShan:true, + } + }, + disable:{ + mark:true, + intro:{ + content:'本轮已发动' + } + } + } + }, + zishu:{ + audio:2, + locked:true, + subSkill:{ + discard:{ + trigger:{global:'phaseEnd'}, + audio:"zishu", + forced:true, + filter:function(event,player){ + if(_status.currentPhase!=player){ + var he=player.getCards('h'); + var bool=false; + player.getHistory('gain',function(evt){ + if(!bool&&evt&&evt.cards){ + for(var i=0;i0) return false; + return event.cards.filterInD().length>0 + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('yingyuan'),'将'+get.translation(trigger.cards)+'交给一名其他角色',function(card,player,target){ + return target!=player; + }).set('ai',function(target){ + if(target.hasJudge('lebu')) return 0; + var att=get.attitude(_status.event.player,target); + if(att<3) return 0; + if(target.hasSha()&&_status.event.sha){ + att/=5; + } + if(event.wuxie&&target.needsToDiscard(1)){ + att/=5; + } + return att/(1+get.distance(player,target,'absolute')); + }).set('sha',trigger.cards[0].name=='sha').set('wuxie',trigger.cards[0].name=='wuxie'); + 'step 1' + if(result.bool){ + player.logSkill('yingyuan',result.targets[0]); + result.targets[0].gain(trigger.cards.filterInD(),'gain2'); + player.getHistory('custom').push({yingyuan_name:trigger.card.name}); + } + }, + }, + shuimeng:{ + audio:true, + trigger:{player:'phaseUseAfter'}, + direct:true, + filter:function(event,player){ + return player.countCards('h'); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('shuimeng'),function(card,player,target){ + return player.canCompare(target); + }).set('ai',function(target){ + if(!_status.event.goon) return 0; + return -get.attitude(_status.event.player,target); + }).set('goon',player.needsToDiscard()||player.hasCard(function(card){ + var val=get.value(card); + if(val<0) return true; + if(val<=5){ + return card.number>=11; + } + if(val<=6){ + return card.number>=12; + } + return false; + })); + 'step 1' + if(result.bool){ + player.logSkill('shuimeng',result.targets); + event.target=result.targets[0]; + player.chooseToCompare(event.target); + } + else{ + event.finish(); + } + 'step 2' + if(result.bool){ + player.chooseUseTarget({name:'wuzhong',isCard:true},true); + } + else{ + event.target.useCard({name:'guohe',isCard:true},player); + } + } + }, + qianya:{ + audio:2, + trigger:{target:'useCardToTargeted'}, + direct:true, + filter:function(event,player){ + return get.type(event.card,'trick')=='trick'&&player.countCards('h'); + }, + content:function(){ + 'step 0' + var nh=player.countCards('h'); + player.chooseCardTarget({ + filterCard:true, + filterTarget:function(card,player,target){ + return target!=player; + }, + selectCard:[1,nh], + ai1:function(card){ + var player=_status.event.player; + var cardname=_status.event.cardname; + if(_status.event.du) return -get.value(card,player,'raw'); + else if(_status.event.shuimeng){ + if(cardname=='wuzhong'){ + if(player.needsToDiscard(2-ui.selected.cards.length)){ + return 10-get.value(card,player,'raw'); + } + } + else if(cardname=='guohe'){ + if(player.needsToDiscard(-1-ui.selected.cards.length)){ + return 10-get.value(card,player,'raw'); + } + } + return 0; + } + else if(cardname=='lebu'){ + if(player.needsToDiscard(1-ui.selected.cards.length)){ + return 8-get.value(card,player,'raw'); + } + else{ + if(!ui.selected.cards.length){ + return 6-get.value(card,player,'raw'); + } + return 0; + } + } + else if(cardname=='shunshou'){ + if(_status.event.nh<=2) return get.value(card,player,'raw'); + } + else if(cardname=='huogong'){ + if(player.hp==1) return get.value(card,player,'raw'); + } + if(ui.selected.cards.length) return 0; + return 7-get.value(card,player,'raw'); + }, + ai2:function(target){ + var att=get.attitude(_status.event.player,target); + var nh2=target.countCards('h'); + var num=Math.sqrt(1+nh2); + var cardname=_status.event.cardname; + if(_status.event.du) return 0.5-att; + else if(_status.event.shuimeng){ + return att/num; + } + else if(cardname=='lebu'){ + return att/num; + } + else if(cardname=='shunshou'){ + if(_status.event.nh<=2) return att/num; + } + else if(cardname=='huogong'){ + if(_status.event.player.hp==1) return att/num; + } + if(_status.event.nh>nh2+1){ + return att/num; + } + return 0; + }, + du:player.hasCard(function(card){ + return get.value(card,player,'raw')<0; + }), + shuimeng:trigger.getParent(2).name=='shuimeng', + nh:nh, + cardname:trigger.card.name, + prompt:get.prompt2('qianya') + }); + 'step 1' + if(result.bool){ + player.logSkill('qianya',result.targets); + player.give(result.cards,result.targets[0]); + } + } + }, + xianfu:{ + trigger:{ + global:'gameDrawAfter', + player:'enterGame', + }, + forced:true, + filter:function(){ + return game.players.length>1; + }, + audio:6, + content:function(){ + 'step 0' + player.chooseTarget('请选择【先辅】的目标',lib.translate.xianfu_info,true,function(card,player,target){ + return target!=player&&(!player.storage.xianfu2||!player.storage.xianfu2.contains(target)); + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(att>0) return att+1; + if(att==0) return Math.random(); + return att; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + if(!player.storage.xianfu2) player.storage.xianfu2=[]; + player.storage.xianfu2.push(target); + player.addSkill('xianfu2'); + } + } + }, + xianfu_mark:{ + marktext:'辅', + intro:{ + name:'先辅', + content:'当你受到伤害后,$受到等量的伤害,当你回复体力后,$回复等量的体力' + }, + }, + xianfu2:{ + audio:'xianfu', + charlotte:true, + trigger:{global:['damageEnd','recoverEnd']}, + forced:true, + filter:function(event,player){ + if(event.player.isDead()||!player.storage.xianfu2||!player.storage.xianfu2.contains(event.player)||event.num<=0) return false; + if(event.name=='damage') return true; + return player.isDamaged(); + }, + logTarget:'player', + content:function(){ + 'step 0' + var target=trigger.player; + if(!target.storage.xianfu_mark) target.storage.xianfu_mark=[]; + target.storage.xianfu_mark.add(player); + target.storage.xianfu_mark.sortBySeat(); + target.markSkill('xianfu_mark'); + game.delayx(); + 'step 1' + player[trigger.name](trigger.num,'nosource'); + }, + onremove:function(player){ + if(!player.storage.xianfu2) return; + game.countPlayer(function(current){ + if(player.storage.xianfu2.contains(current)&¤t.storage.xianfu_mark){ + current.storage.xianfu_mark.remove(player); + if(!current.storage.xianfu_mark.length) current.unmarkSkill('xianfu_mark'); + else current.markSkill('xianfu_mark'); + } + }); + delete player.storage.xianfu2; + }, + group:'xianfu3', + }, + xianfu3:{ + trigger:{global:'dieBegin'}, + silent:true, + filter:function(event,player){ + return event.player==player||player.storage.xianfu2&&player.storage.xianfu2.contains(player); + }, + content:function(){ + if(player==event.player) lib.skill.xianfu2.onremove(player); + else player.storage.xianfu2.remove(event.player); + } + }, + chouce:{ + trigger:{player:'damageEnd'}, + content:function(){ + 'step 0' + event.num=trigger.num; + 'step 1' + player.judge(); + 'step 2' + event.color=result.color; + if(event.color=='black'){ + player.chooseTarget('弃置一名角色区域内的一张牌',function(card,player,target){ + return target.countCards('hej'); + }).set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + if(att<0){ + att=-Math.sqrt(-att); + } + else{ + att=Math.sqrt(att); + } + return att*lib.card.guohe.ai.result.target(player,target); + }) + } + else{ + var next=player.chooseTarget('令一名角色摸一张牌'); + if(player.storage.xianfu2&&player.storage.xianfu2.length){ + next.set('prompt2','(若目标为'+get.translation(player.storage.xianfu2)+'则改为摸两张牌)'); + } + next.set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target)/Math.sqrt(1+target.countCards('h')); + if(player.storage.xianfu2&&player.storage.xianfu2.contains(target)) return att*2; + return att; + }) + } + 'step 3' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + if(event.color=='black'){ + player.discardPlayerCard(target,'hej',true); + } + else{ + if(player.storage.xianfu2&&player.storage.xianfu2.contains(target)){ + if(!target.storage.xianfu_mark) target.storage.xianfu_mark=[]; + target.storage.xianfu_mark.add(player); + target.storage.xianfu_mark.sortBySeat(); + target.markSkill('xianfu_mark'); + target.draw(2); + } + else{ + target.draw(); + } + } + } + 'step 4' + if(--event.num>0){ + player.chooseBool(get.prompt2('chouce')); + } + else{ + event.finish(); + } + 'step 5' + if(result.bool){ + player.logSkill('chouce'); + 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; + if(target.hp>=4) return [1,get.tag(card,'damage')*1.5]; + if(target.hp==3) return [1,get.tag(card,'damage')*1]; + if(target.hp==2) return [1,get.tag(card,'damage')*0.5]; + } + } + } + } + }, + fuqi:{ + audio:2, + forced:true, + trigger:{ + player:"useCard", + }, + filter:function(event,player){ + return event.card&&(get.type(event.card)=='trick'||get.type(event.card)=='basic'&&!['shan','tao','jiu','du'].contains(event.card.name))&&game.hasPlayer(function(current){ + return current!=player&&get.distance(current,player)<=1; + }); + }, + content:function(){ + trigger.directHit.addArray(game.filterPlayer(function(current){ + return current!=player&&get.distance(current,player)<=1; + })); + }, + }, + wylianji:{ + enable:'phaseUse', + audio:2, + usable:1, + filter:function(event,player){ + return player.hasCard(lib.skill.wylianji.filterCard); + }, + check:function(card){ + if(card.name=='sha') return 1; + else{ + if(get.tag(card,'damage')){ + if(get.tag(card,'multineg')) return 5; + return 2; + } + } + return 0; + }, + filterCard:function(card){ + return get.name(card)=='sha'||(get.type(card,'trick')=='trick'&&get.color(card)=='black'&&!get.info(card).multitarget)&&get.info(card).enable; + }, + filterTarget:function(card,player,target){ + return target!=player&&!target.isMin()&& + (player.canUse(card,target,false)||game.hasPlayer(function(current){ + return current!=player&&target.canUse(card,current); + })); + }, + discard:false, + lose:true, + delay:false, + content:function(){ + 'step 0' + player.showCards(get.translation(player)+'对'+get.translation(target)+'发动了【连计】',cards); + 'step 1' + 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.createCard2('qibaodao',equip1.suit,equip1.number); + } + target.$draw(equip1); + target.chooseUseTarget(true,equip1,'noanimate','nopopup'); + game.delay(); + 'step 2' + game.updateRoundNumber(); + var card=cards[0]; + var bool1=game.hasPlayer(function(current){ + return current!=player&&target.canUse(card,current); + }); + var bool2=player.canUse(card,target,false); + if(bool1&&bool2){ + target.chooseControl(function(){ + return 0; + }).set('choiceList',[ + '对除'+get.translation(player)+'以外的角色使用'+get.translation(cards)+',并将装备区里的武器牌交给该牌的一个目标角色', + '视为'+get.translation(player)+'对你使用'+get.translation(cards)+',并将装备区内的武器牌交给'+get.translation(player) + ]); + } + else if(bool1){ + event.directindex=0; + } + else if(bool2){ + event.directindex=1; + } + else{ + event.finish(); + } + 'step 3' + var card=cards[0]; + if(result&&typeof event.directindex!='number'){ + event.directindex=result.index; + } + if(event.directindex==1){ + event.insert(lib.skill.wylianji.content_use,{ + player:player, + target:target, + card:card + }) + } + else{ + event.insert(lib.skill.wylianji.content_give,{ + player:target, + card:card, + targets:game.filterPlayer(function(current){ + return current!=player; + }) + }); + } + }, + content_use:function(){ + 'step 0' + player.useCard(card,target); + 'step 1' + if(!get.owner(card)){ + target.gain(card,'gain2'); + } + 'step 2' + var equip1=target.getEquip(1); + if(equip1){ + game.delay(); + target.give(equip1,player); + target.line(player); + } + }, + content_give:function(){ + 'step 0' + var select=get.select(get.info(card).selectTarget); + if(select[1]==-1){ + for(var i=0;i1){ + player.chooseTarget(true,'将'+get.translation(equip1)+'交给一名角色',function(card,player,target){ + return _status.event.list.contains(target); + }).set('ai',function(target){ + return get.attitude(player,target); + }).set('list',_status.event.list); + event.equip1=equip1; + } + else{ + if(event.list.length==1){ + player.give(equip1,event.list[0]); + player.line(event.list); + } + event.finish(); + } + } + else{ + event.finish(); + } + 'step 3' + if(result.bool&&result.targets.length&&event.equip1){ + player.give(event.equip1,result.targets[0]); + player.line(result.targets); + } + }, + ai:{ + order:7, + result:{ + target:function(player,target){ + if(ui.selected.cards.length){ + var card=ui.selected.cards[0]; + var bool=(card.name!='sha'); + if(game.hasPlayer(function(current){ + return target.canUse(card,current,bool)&&get.effect(current,card,target,player)>0; + })){ + var num=1; + if(target.getEquip(1)){ + num=0.6; + } + if(target.hasSkillTag('noe')) 2*num; + return num; + } + } + return 0; + } + } + } + }, + moucheng:{ + audio:2, + derivation:['jingong','wy_meirenji','wy_xiaolicangdao'], + trigger:{global:'damageEnd'}, + forced:true, + popup:false, + filter:function(event,player){ + return event.source!=player&&event.getParent(2).name=='useCard'&&event.getParent(3).name=='wylianjiInserted'; + }, + init:function(player){ + player.storage.moucheng=0; + }, + intro:{ + content:'已造成#点伤害' + }, + unique:true, + juexingji:true, + content:function(){ + player.storage.moucheng+=trigger.num; + if(player.hasSkill('moucheng')){ + player.markSkill('moucheng'); + player.syncStorage('moucheng'); + } + if(player.storage.moucheng>=3){ + event.trigger('mouchengAwaken'); + } + }, + group:'moucheng_awaken', + subSkill:{ + awaken:{ + trigger:{player:'mouchengAwaken'}, + forced:true, + skillAnimation:true, + animationColor:'gray', + content:function(){ + player.awakenSkill('moucheng'); + player.removeSkill('wylianji'); + player.addSkill('jingong'); + } + } + } + }, + jingong:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return player.countCards('he',function(card){ + return card.name=='sha'||get.type(card)=='equip'; + }); + }, + delay:false, + usable:1, + content:function(){ + 'step 0' + var list=get.inpile('trick').randomGets(2); + if(Math.random()<0.5){ + list.push('wy_meirenji'); + } + else{ + list.push('wy_xiaolicangdao'); + } + for(var i=0;i=num) return false; + return player.countCards('h')>0; + }, + filterTarget:function(event,player,target){ + return player.canCompare(target); + }, + content:function(){ + 'step 0' + player.chooseToCompare(target); + 'step 1' + if(!result.bool) event.finish(); + event.num=result.num1; + 'step 2' + if(num<=5&&target.countGainableCards(player,'he')>0) player.gainPlayerCard(target,'he',true); + 'step 3' + if(num<=9){ + var card=get.cardPile2(function(x){ + return x.name=='sha'; + }); + if(card) player.gain(card,'gain2'); + } + 'step 4' + if(num<=13){ + var card={name:'sha',nature:'thunder'}; + if(player.canUse(card,target,false)) player.useCard(card,target,false); + } + }, + ai:{ + order:4, + result:{ + target:function(player,target){ + var sort=function(a,b){ + return b.number-a.number; + }; + var ps=player.getCards('h').sort(sort); + var ts=target.getCards('h').sort(sort); + if(ps[0].number>ts[0].number){ + var effect=get.effect(target,{name:'sha',nature:'thunder'},player,player) + if(ps[0].number<6&&target.countCards('he')>1) effect-=2; + if(ps[0].number<10) effect-=1; + return effect; + } + return ps.length>=ts.length?-0.5:0; + }, + }, + }, + }, + fenyue:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + if(!player.countCards('h')) return false; + var num; + if(get.mode()=='identity'){ + num=game.countPlayer(function(current){ + return current.identity=='zhong'||current.identity=='mingzhong'; + }); + } + else{ + num=1; + } + if(player.getStat().skill.fenyue>=num) return false; + return true; + }, + filterTarget:function(card,player,target){ + return player.canCompare(target); + }, + ai:{ + order:2.8, + result:{ + target:function(player,target){ + if(get.attitude(player,target)<0&&player.hasCard(function(card){ + return (card.number>=9&&get.value(card)<=5)||get.value(card)<=3; + })){ + return get.effect(target,{name:'sha'},player,target); + } + else{ + return 0; + } + } + } + }, + content:function(){ + 'step 0' + player.chooseToCompare(target); + 'step 1' + if(result.bool){ + player.chooseControl(function(){ + return 1; + }).set('choiceList',[ + '令'+get.translation(target)+'不能使用或打出手牌直到回合结束', + '视为对'+get.translation(target)+'使用一张杀(不计入次数限制)' + ]); + } + else{ + var evt=_status.event.getParent('phaseUse'); + if(evt&&evt.name=='phaseUse'){ + evt.skipped=true; + } + event.finish(); + } + 'step 2' + if(result.control=='选项一'){ + target.addTempSkill('fenyue2'); + } + else{ + player.useCard({name:'sha',isCard:true},target,false); + } + } + }, + fenyue2:{ + mark:true, + mod:{ + cardEnabled2:function (card){ + if(get.position(card)=='h') return false; + }, + }, + intro:{ + content:'不能使用或打出手牌' + } + }, + + huoshui:{ + audio:2, + enable:'phaseUse', + unique:true, + forceunique:true, + filter:function(event,player){ + if(player.name1=='gz_zoushi') return player.isUnseen(0); + return player.isUnseen(1); + }, + content:function(){ + if(player.name1=='gz_zoushi') player.showCharacter(0); + else player.showCharacter(1); + }, + global:'huoshui_mingzhi' + }, + huoshui_mingzhi:{ + ai:{ + nomingzhi:true, + skillTagFilter:function(player){ + if(_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.hasSkill('huoshui')){ + return true; + } + return false; + } + } + }, + qingcheng:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return player.countCards('he',{type:'equip'})&&game.hasPlayer(function(current){ + return current!=player&&!current.isUnseen(2); + }); + }, + filterCard:{type:'equip'}, + position:'he', + filterTarget:function(card,player,target){ + return !target.isUnseen(2); + }, + check:function(card){ + return 6-get.value(card,_status.event.player); + }, + content:function(){ + 'step 0' + if(get.is.jun(target)){ + event._result={control:'副将'}; + } + else{ + var choice='主将'; + var skills=lib.character[target.name2][3]; + for(var i=0;i=0) return 0; + if(player.hasCard(function(card){ + return get.tag(card,'damage')&&player.canUse(card,target,true,true); + })){ + if(target.maxHp>3) return -0.5; + return -1; + } + return 0; + } + } + } + }, + qingcheng_ai:{ + ai:{ + effect:{ + target:function(card){ + if(get.tag(card,'damage')) return 2; + } + } + } + }, + zhuoshui:{ + audio:'huoshui', + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + content:function(){ + game.countPlayer(function(current){ + if(current!=player&&!current.hasSkill('fengyin')){ + player.line(current,'green'); + current.addTempSkill('fengyin'); + } + }); + } + }, + zqingcheng:{ + audio:'qingcheng', + enable:'phaseUse', + filter:function(event,player){ + return player.countCards('he',{type:'equip'}); + }, + filterCard:{type:'equip'}, + position:'he', + filterTarget:function(card,player,target){ + return target!=player; + }, + check:function(card){ + var player=_status.event.player; + if(game.hasPlayer(function(current){ + return get.attitude(player,current)>2&¤t.isTurnedOver(); + })){ + return 10-get.value(card,player); + } + return 6-get.value(card,player); + }, + content:function(){ + 'step 0' + target.turnOver(); + 'step 1' + target.draw(2); + }, + ai:{ + order:8, + result:{ + target:function(player,target){ + if(target.hasSkillTag('noturn')) return 0; + if(target.isTurnedOver()) return 2; + return -0.5; + } + } + } + }, + zfengshi:{ + audio:2, + trigger:{player:'useCardToPlayered'}, + filter:function(event,player){ + return event.card.name=='sha'&&event.target.countCards('e'); + }, + logTarget:'target', + check:function(event,player){ + if(event.target.hasSkillTag('noe')) return false; + return get.attitude(player,event.target)<0; + }, + content:function(){ + trigger.target.chooseToDiscard('e',true); + } + }, + chuanxin:{ + audio:2, + trigger:{source:'damageBegin2'}, + filter:function(event,player){ + if(_status.currentPhase!=player) return false; + if(!_status.event.getParent('phaseUse')) return false; + if(event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.getParent().name==event.card.name){ + if(get.mode()=='guozhan'){ + return (event.player.identity!='qun'||player.identity=='ye')&& + !event.player.isUnseen()&&event.player.hasViceCharacter(); + } + else{ + var info=lib.character[event.player.name]; + if(!info) return false; + var skills=event.player.getSkills(); + for(var i=0;i=2) return 1; + return 0; + }).set('choiceList',['弃置装备区内的所有牌并失去一点体力',get.mode()=='guozhan'?'移除副将牌':'随机移除武将牌上的一个技能']); + } + else{ + event._result={index:1}; + } + 'step 1' + if(result.index==1){ + if(get.mode()!='guozhan'){ + var info=lib.character[trigger.player.name]; + var skills=trigger.player.getSkills(); + var list=[]; + for(var i=0;i0; + }, + logTarget:function(){ + return _status.currentPhase; + }, + content:function(){ + var source=_status.currentPhase; + if(source.hasSkill('hengjiang2')){ + source.storage.hengjiang2+=trigger.num; + source.storage.hengjiang3.add(player); + source.updateMarks(); + } + else{ + source.storage.hengjiang3=[player]; + source.storage.hengjiang2=trigger.num; + source.addTempSkill('hengjiang2'); + } + }, + ai:{ + maixie_defend:true, + } + }, + hengjiang2:{ + mark:true, + charlotte:true, + intro:{ + content:'手牌上限-#' + }, + mod:{ + maxHandcard:function(player,num){ + return num-player.storage.hengjiang2; + } + }, + onremove:function(player){ + delete player.storage.hengjiang2; + delete player.storage.hengjiang3; + }, + trigger:{player:'phaseDiscardEnd'}, + filter:function(event,player){ + if(event.cards&&event.cards.length) return false; + var players=player.storage.hengjiang3; + for(var i=0;i0; + }, + logTarget:function(){ + return _status.currentPhase; + }, + content:function(){ + "step 0" + event.count=trigger.num; + "step 1" + event.count--; + var source=_status.currentPhase; + if(source.hasSkill('rehengjiang2')){ + source.storage.rehengjiang2++; + source.storage.rehengjiang3.push(player); + source.storage.rehengjiang3.sortBySeat(source); + source.updateMarks(); + } + else{ + source.storage.rehengjiang3=[player]; + source.storage.rehengjiang2=1; + source.addTempSkill('rehengjiang2'); + } + "step 2" + if(event.count){ + player.chooseBool(get.prompt2('rehengjiang',_status.currentPhase)).set('ai',function(){ + return lib.skill.rehengjiang.check(_status.event.getTrigger(),_status.event.player); + }) + } + else event.finish(); + "step 3" + if(result.bool){ + player.logSkill('rehengjiang',_status.currentPhase); + event.goto(1); + } + }, + ai:{ + maixie_defend:true, + } + }, + rehengjiang2:{ + mark:true, + charlotte:true, + intro:{ + content:'手牌上限-#' + }, + mod:{ + maxHandcard:function(player,num){ + return num-player.storage.rehengjiang2; + } + }, + onremove:function(player){ + delete player.storage.rehengjiang2; + delete player.storage.rehengjiang3; + }, + trigger:{player:'phaseDiscardEnd'}, + filter:function(event,player){ + if(event.cards&&event.cards.length) return false; + var players=player.storage.rehengjiang3; + for(var i=0;i1){ + goon=player.hasCard(function(card){ + return card.number>10&&get.value(card)<=5; + }); + } + else{ + goon=player.hasCard(function(card){ + return (card.number>=9&&get.value(card)<=5)||get.value(card)<=3; + }); + } + player.chooseTarget(get.prompt2('shuangren'),function(card,player,target){ + return player.canCompare(target); + }).set('ai',function(target){ + var player=_status.event.player; + if(_status.event.goon&&get.attitude(player,target)<0){ + return get.effect(target,{name:'sha'},player,player); + } + return 0; + }).set('goon',goon); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('shuangren',target); + player.chooseToCompare(target); + } + else{ + event.finish(); + } + 'step 2' + if(result.bool){ + var target=event.target; + if(target.identity!='ye'&&target.identity!='unknown'&&game.hasPlayer(function(current){ + if(!player.canUse('sha',current,false)) return false; + if(target==current) return false; + if(get.mode()=='guozhan'){ + return target.identity==current.identity; + } + return true; + })){ + var str='对一名'; + if(get.mode()=='guozhan'){ + str+=get.translation(target.identity)+'势力的'; + } + player.chooseTarget(str+'角色使用一张杀',true,function(card,player,target){ + if(!player.canUse('sha',target,false)) return false; + if(get.mode()=='guozhan'){ + return target.identity==_status.event.identity; + } + return true; + }).set('ai',function(target){ + var player=_status.event.player; + return get.effect(target,{name:'sha'},player,player); + }).set('identity',target.identity); + } + else{ + player.useCard({name:'sha',isCard:true},target,false); + event.finish(); + } + } + else{ + trigger.cancel(); + event.finish(); + } + 'step 3' + if(result.bool&&result.targets&&result.targets.length){ + player.useCard({name:'sha',isCard:true},result.targets[0],false); + } + } + }, + kuanshi:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('kuanshi')).set('ai',function(target){ + if(get.attitude(_status.event.player,target)>0){ + return 1/Math.sqrt(target.hp+1); + } + return 0; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('kuanshi'); + target.storage.kuanshi2=player; + target.addSkill('kuanshi2'); + } + } + }, + kuanshi2:{ + /*mark:'character', + intro:{ + content:'下一次受到超过1点的伤害时,防止此伤害,然后$跳过下个回合的摸牌阶段' + },*/ + trigger:{player:'damageBegin4'}, + forced:true, + filter:function(event,player){ + return event.num>1; + }, + //priority:-11, + content:function(){ + trigger.cancel(); + player.storage.kuanshi2.skip('phaseDraw'); + player.removeSkill('kuanshi2'); + }, + group:'kuanshi2_remove', + onremove:true, + subSkill:{ + remove:{ + trigger:{global:['phaseZhunbeiBegin','dieAfter']}, + forced:true, + popup:false, + filter:function(event,player){ + return event.player==player.storage.kuanshi2; + }, + content:function(){ + player.removeSkill('kuanshi2'); + } + } + } + }, + xiashu:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + return player.countCards('h')>0; + }, + content:function(){ + 'step 0' + var maxval=0; + var hs=player.getCards('h'); + for(var i=0;i0) return 0.1; + if(maxval>=8) return 0; + if(att==0) return 0.2; + if(dh>=3) return dh; + if(dh==2){ + if(maxval<=7) return dh; + } + if(maxval<=6) return dh; + return 0; + + }).set('maxval',maxval); + 'step 1' + if(result.bool){ + player.logSkill('xiashu',result.targets); + event.target=result.targets[0]; + var hs=player.getCards('h'); + event.target.gain(hs,player,'giveAuto'); + } + else{ + event.finish(); + } + 'step 2' + var hs=event.target.getCards('h'); + if(!hs.length){ + event.finish(); + return; + } + hs.sort(function(a,b){ + return get.value(b,player,'raw')-get.value(a,player,'raw'); + }); + event.target.chooseCard([1,hs.length],'展示至少一张手牌',true).set('ai',function(card){ + var rand=_status.event.rand; + var list=_status.event.list; + if(_status.event.att){ + if(ui.selected.cards.length>=Math.ceil(list.length/2)) return 0; + var value=get.value(card); + if(_status.event.getParent().player.isHealthy()){ + value+=(get.tag(card,'damage')?1.5:0)+(get.tag(card,'draw')?2:0); + } + return value; + } + if(ui.selected.cards.length>=Math.floor(list.length/2)) return 0; + return (list.indexOf(card)%2==rand)?1:0; + }).set('rand',(Math.random()<0.6)?1:0).set('list',hs).set('att',get.attitude(event.target,player)>0); + 'step 3' + event.target.showCards(result.cards); + event.cards1=result.cards; + event.cards2=event.target.getCards('h',function(card){ + return !event.cards1.contains(card); + }); + 'step 4' + var choice; + var num1=event.cards1.length; + var num2=event.cards2.length; + if(get.attitude(event.target,player)>0&&num1>=num2){ + choice=0; + } + else if(num1==num2){ + choice=(Math.random()<0.45)?0:1; + } + else if(num1>num2){ + if(num1-num2==1){ + choice=(Math.random()<0.6)?0:1; + } + else{ + choice=0; + } + } + else{ + if(num2-num1==1){ + choice=(Math.random()<0.6)?1:0; + } + else{ + choice=1; + } + } + player.chooseControl(function(event,player){ + return _status.event.choice; + }).set('choiceList',['获得'+get.translation(event.target)+'展示的牌', + '获得'+get.translation(event.target)+'未展示的牌']).set('choice',choice); + 'step 5' + if(result.index==0){ + player.gain(event.cards1,target,'give'); + } + else{ + player.gain(event.cards2,target,'giveAuto'); + } + }, + ai:{ + expose:0.1 + } + }, + sheyan:{ + audio:2, + trigger:{target:'useCardToTarget'}, + filter:function(event,player){ + if(!event.targets||!event.targets.contains(player)) return false; + var info=get.info(event.card); + if(info.type!='trick') return false; + if(info.multitarget) return false; + if(event.targets.length>1) return true; + return game.hasPlayer(function(current){ + return !event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,event.player,current); + }); + }, + direct:true, + content:function(){ + 'step 0' + var bool1=(trigger.targets.length>1); + var bool2=game.hasPlayer(function(current){ + return !trigger.targets.contains(current)&&lib.filter.targetEnabled2(trigger.card,trigger.player,current); + }); + if(bool1&&bool2){ + player.chooseControlList(get.prompt('sheyan'),['为'+get.translation(trigger.card)+'增加一个目标','为'+get.translation(trigger.card)+'减少一个目标'],function(event,player){ + if(_status.event.add) return 0; + return 1; + }).set('add',get.effect(player,trigger.card,trigger.player,player)>=0); + } + else if(bool2){ + event.type='add'; + event.goto(2); + event.unchosen=true; + } + else{ + event.type='remove'; + event.goto(2); + event.unchosen=true; + } + 'step 1' + if(result.control=='cancel2'){ + event.finish(); + } + else if(result.index==1){ + event.type='remove'; + } + else{ + event.type='add'; + } + 'step 2' + if(event.type=='add'){ + player.chooseTarget(event.unchosen?get.prompt('sheyan'):null,'为'+get.translation(trigger.card)+'增加一个目标',function(card,player,target){ + var trigger=_status.event.getTrigger(); + return !trigger.targets.contains(target)&&lib.filter.targetEnabled2(trigger.card,trigger.player,target); + }).set('ai',function(target){ + var trigger=_status.event.getTrigger(); + return get.effect(target,trigger.card,trigger.player,_status.event.player); + }); + } + else{ + player.chooseTarget(event.unchosen?get.prompt('sheyan'):null,'为'+get.translation(trigger.card)+'减少一个目标',function(card,player,target){ + return _status.event.targets.contains(target); + }).set('ai',function(target){ + var trigger=_status.event.getTrigger(); + return -get.effect(target,trigger.card,trigger.player,_status.event.player); + }).set('targets',trigger.targets); + } + 'step 3' + if(result.bool){ + if(!event.isMine()) game.delayx(); + event.target=result.targets[0]; + } + else{ + event.finish(); + } + 'step 4' + player.logSkill('sheyan',event.target); + if(event.type=='add'){ + trigger.targets.push(event.target); + } + else{ + trigger.getParent().excluded.add(event.target); + } + }, + ai:{ + expose:0.2 + } + }, + bingzheng:{ + audio:2, + trigger:{player:'phaseUseEnd'}, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('bingzheng'),function(card,player,target){ + return target.countCards('h')!=target.hp; + }).set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + var nh=target.countCards('h'); + if(att>0){ + if(nh==target.hp-1){ + if(player==target) return att+1; + return att+2; + } + if(player==target&&player.needsToDiscard()) return att/3; + return att; + } + else{ + if(nh==target.hp+1) return -att; + if(nh==0) return 0; + return -att/2; + } + }); + 'step 1' + if(result.bool){ + player.logSkill('bingzheng',result.targets); + event.target=result.targets[0]; + if(event.target.countCards('h')){ + player.chooseControl(function(event,player){ + var target=event.target; + if(get.attitude(player,target)<0) return 1; + return 0; + }).set('choiceList',['令'+get.translation(event.target)+'摸一张牌', + '令'+get.translation(event.target)+'弃置一张手牌']); + } + else{ + event.directfalse=true; + } + } + else{ + event.finish(); + } + 'step 2' + if(event.directfalse||result.index==0){ + event.target.draw(); + } + else{ + event.target.chooseToDiscard('h',true); + } + 'step 3' + if(event.target.countCards('h')==event.target.hp){ + player.draw(); + if(event.target==player){ + event.finish(); + return; + } + var next=player.chooseCard('是否交给'+get.translation(event.target)+'一张牌?','he'); + next.set('ai',function(card){ + if(get.position(card)!='h') return 0; + if(_status.event.shan&&card.name=='shan'){ + return 11; + } + if(_status.event.goon){ + return 10-get.value(card); + } + return -get.value(card,_status.event.player,'raw'); + }); + if(get.attitude(player,event.target)>1&& + player.countCards('h','shan')>1&&player.countCards('h')>event.target.countCards('h')){ + next.set('shan',true); + } + if(get.attitude(player,event.target)>0&&player.needsToDiscard()){ + next.set('goon',true); + } + } + else{ + event.finish(); + } + 'step 4' + if(result.bool){ + event.target.gain(result.cards,player,'giveAuto'); + } + }, + ai:{ + expose:0.2, + threaten:1.4 + } + }, + fuman:{ + audio:2, + enable:'phaseUse', + filterTarget:function(card,player,target){ + return !target.hasSkill('fuman2')&&target!=player; + }, + filter:function(event,player){ + return player.countCards('h','sha'); + }, + discard:false, + lose:false, + delay:false, + filterCard:{name:'sha'}, + content:function(){ + target.gain(cards,player,'giveAuto'); + target.storage.fuman3=cards[0]; + target.storage.fuman2=player; + target.addTempSkill('fuman2',{player:'phaseAfter'}); + }, + check:function(card){ + return 6-get.value(card); + }, + ai:{ + order:2, + result:{ + target:function(player,target){ + if(!target.hasSha()) return 1.2; + return 1; + } + } + } + }, + fuman2:{ + mod:{ + aiOrder:function(player,card,num){ + if(card==player.storage.fuman3&&player.storage.fuman2.isIn()) return num+get.sgn(get.attitude(player,player.storage.fuman2)); + }, + }, + trigger:{player:'useCard'}, + forced:true, + filter:function(event,player){ + return event.cards.contains(player.storage.fuman3)&&player.storage.fuman2.isIn(); + }, + mark:true, + intro:{ + content:'下个回合结束之前使用“抚蛮”牌时,令$一张牌' + }, + content:function(){ + 'step 0' + game.delayx(); + 'step 1' + player.line(player.storage.fuman2,'green'); + player.storage.fuman2.draw(); + }, + onremove:function(player){ + delete player.storage.fuman2; + delete player.storage.fuman3; + }, + }, + qizhou:{ + trigger:{player:['phaseBefore','equipEnd','loseEnd']}, + forced:true, + popup:false, + derivation:['mashu','reyingzi','duanbing','fenwei'], + filter:function(event,player){ + if(player.equiping) return false; + var suits=[]; + var es=player.getCards('e'); + for(var i=0;i0; + } + }, + content:function(){ + var suits=[]; + var es=player.getCards('e'); + for(var i=0;i0; + } + if(player.hasSha()&&geteff(target)){ + var num=game.countPlayer(function(current){ + return current!=player&&get.distance(player,current)<=1&&geteff(current); + }); + if(num==0){ + if(game.hasPlayer(function(current){ + return player.canUse('sha',current)&&geteff(current)&¤t!=target; + })){ + return 1; + } + } + else if(num==1){ + return 1; + } + } + return 0; + } + } + } + }, + fenxun2:{ + mark:'character', + onremove:true, + intro:{ + content:'到$的距离视为1' + }, + mod:{ + globalFrom:function(from,to){ + if(to==from.storage.fenxun2){ + return -Infinity; + } + } + } + }, + duanbing:{ + audio:2, + audioname:['heqi'], + trigger:{player:'useCard2'}, + filter:function(event,player){ + if(event.card.name!='sha') return false; + return game.hasPlayer(function(current){ + return !event.targets.contains(current)&&get.distance(player,current)<=1&&player.canUse(event.card,current); + }); + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('duanbing'),'为'+get.translation(trigger.card)+'增加一个目标',function(card,player,target){ + return !_status.event.sourcex.contains(target)&&get.distance(player,target)<=1&&player.canUse(_status.event.card,target); + }).set('sourcex',trigger.targets).set('ai',function(target){ + var player=_status.event.player; + return get.effect(target,_status.event.card,player,player); + }).set('card',trigger.card); + 'step 1' + if(result.bool){ + if(!event.isMine()&&!_status.connectMode) game.delayx(); + event.target=result.targets[0]; + } + else{ + event.finish(); + } + 'step 2' + player.logSkill('duanbing',event.target); + trigger.targets.push(event.target); + }, + ai:{ + effect:{ + player:function(card,player,target,current,isLink){ + if(!isLink&&card.name=='sha'){ + if(player._duanbingtmp) return; + player._duanbingtmp=true; + if(get.effect(target,card,player,player)<=0){ + delete player._duanbingtmp; + return; + } + if(game.hasPlayer(function(current){ + return current!=target&&get.distance(player,current)<=1&& + player.canUse(card,current)&&get.effect(current,card,player,player)>0; + })){ + delete player._duanbingtmp; + return [1,1]; + } + delete player._duanbingtmp; + } + } + } + } + }, + fuhan:{ + audio:2, + trigger:{player:'phaseBegin'}, + unique:true, + limited:true, + skillAnimation:true, + animationColor:'orange', + forceunique:true, + //filter:function(event,player){ + // return player.storage.fanghun2>0; + //}, + prompt:function(event,player){ + var num=Math.max(2,player.storage.fanghun2||0); + num=Math.min(num,8); + return get.prompt('fuhan')+'(体力上限:'+num+')'; + }, + check:function(event,player){ + var num=Math.max(2,player.storage.fanghun2||0); + if(num==1) return false; + if(player.hp<=1) return true; + if(num==2) return false; + if(num==3) return player.hp<3&&player.isMinHp(); + return true; + }, + content:function(){ + 'step 0' + if(player.storage.fanghun) player.draw(player.storage.fanghun); + player.removeMark('fanghun',player.storage.fanghun); + event.num=Math.max(2,player.storage.fanghun2||0); + var list; + if(_status.characterlist){ + list=[]; + for(var i=0;i<_status.characterlist.length;i++){ + var name=_status.characterlist[i]; + if(lib.character[name][1]=='shu') list.push(name); + } + } + else if(_status.connectMode){ + list=get.charactersOL(function(i){ + return lib.character[i][1]!='shu'; + }); + } + else{ + list=get.gainableCharacters(function(info){ + return info[1]=='shu'; + }); + } + var players=game.players.concat(game.dead); + for(var i=0;i0) player.gainMaxHp(num); + else player.loseMaxHp(-num); + player.recover(); + } + }, + refuhan:{ + audio:'fuhan', + trigger:{player:'phaseBegin'}, + unique:true, + limited:true, + skillAnimation:true, + animationColor:'orange', + forceunique:true, + filter:function(event,player){ + return player.countMark('fanghun')>0; + }, + content:function(){ + 'step 0' + if(player.storage.fanghun) player.draw(player.storage.fanghun); + player.removeMark('fanghun',player.storage.fanghun); + var list; + if(_status.characterlist){ + list=[]; + for(var i=0;i<_status.characterlist.length;i++){ + var name=_status.characterlist[i]; + if(lib.character[name][1]=='shu') list.push(name); + } + } + else if(_status.connectMode){ + list=get.charactersOL(function(i){ + return lib.character[i][1]!='shu'; + }); + } + else{ + list=get.gainableCharacters(function(info){ + return info[1]=='shu'; + }); + } + var players=game.players.concat(game.dead); + for(var i=0;i(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){ + var temp=get.order({name:name}); + if(temp>max){ + max=temp; + name2=map[name]; + } + } + } + if(name2==get.name(card,player)) return 1; + return 0; + } + return 1; + }, + filterCard:function(card,player,event){ + event=event||_status.event; + var filter=event._backup.filterCard; + var name=get.name(card,player); + if(name=='sha'&&filter({name:'shan',cards:[card]},player,event)) return true; + if(name=='shan'&&filter({name:'sha',cards:[card]},player,event)) return true; + if(name=='tao'&&filter({name:'jiu',cards:[card]},player,event)) return true; + if(name=='jiu'&&filter({name:'tao',cards:[card]},player,event)) return true; + return false; + }, + filter:function(event,player){ + if(!player.storage.fanghun||player.storage.fanghun<0) return false; + var filter=event.filterCard; + if(filter({name:'sha'},player,event)&&player.countCards('h','shan')) return true; + if(filter({name:'shan'},player,event)&&player.countCards('h','sha')) return true; + if(filter({name:'tao'},player,event)&&player.countCards('h','jiu')) return true; + if(filter({name:'jiu'},player, event)&&player.countCards('h','tao')) return true; + return false; + }, + onrespond:function(){return this.onuse.apply(this,arguments)}, + onuse:function(result,player){ + player.removeMark('fanghun',1); + }, + ai:{ + respondSha:true, + respondShan:true, + save:true, + skillTagFilter:function(player,tag){ + if(!player.storage.fanghun||player.storage.fanghun<0) return false; + var name; + switch(tag){ + case 'respondSha':name='shan';break; + case 'respondShan':name='sha';break; + case 'save':name='jiu';break; + } + if(!player.countCards('h',name)) return false; + }, + order:function(item,player){ + if(player&&_status.event.type=='phase'){ + var max=0; + var list=['sha','tao','jiu']; + var map={sha:'shan',tao:'jiu',jiu:'tao'} + for(var i=0;i(name=='jiu'?1:0)&&player.getUseValue({name:name})>0){ + var temp=get.order({name:name}); + if(temp>max) max=temp; + } + } + if(max>0) max+=0.3; + return max; + } + return 4; + }, + }, + }, + } + }, + yjixi:{ + init:function(player){ + player.storage.yjixi=0; + }, + derivation:'wangzun', + trigger:{player:'phaseJieshuBegin'}, + forced:true, + filter:function(event,player){ + return player.storage.yjixi>=3; + }, + skillAnimation:true, + animationColor:'gray', + unique:true, + juexingji:true, + content:function(){ + 'step 0' + player.awakenSkill('yjixi'); + player.gainMaxHp(); + player.recover(); + 'step 1' + var str='摸两张牌'; + var mode=get.mode(); + var choice='选项一'; + if(mode=='identity'||(mode=='versus'&&_status.mode=='four')){ + var list=[]; + var zhu=get.zhu(player); + if(zhu&&zhu!=player&&zhu.skills){ + for(var i=0;i=6) return 0; + return 20-num; + } + else{ + if(_status.event.player.needsToDiscard()){ + return 7-num; + } + } + return 0; + }, + discard:false, + lose:false, + delay:false, + content:function(){ + 'step 0' + target.gain(cards,player,'giveAuto'); + if(get.color(cards[0])=='black'){ + target.chooseToDiscard(2,'he','弃置两张牌,或令'+get.translation(player)+'摸两张牌').set('ai',function(card){ + if(_status.event.goon) return 7-get.value(card); + return 0; + }).set('goon',get.attitude(target,player)<0); + } + else{ + event.finish(); + } + 'step 1' + if(!result.bool){ + player.draw(2); + } + }, + ai:{ + order:8, + expose:0.2, + result:{ + target:function(player,target){ + if(ui.selected.cards.length&&get.color(ui.selected.cards[0])=='red'){ + if(target.countCards('h')0) player.markSkill('shanjia'); + }, + audio:2, + intro:{ + content:function(storage){ + if(storage==0) return '未使用过装备牌'; + return '已使用过'+storage+'张装备牌'; + } + }, + group:'shanjia2', + trigger:{player:'phaseUseBegin'}, + frequent:true, + filter:function(event,player){ + lib.skill.shanjia.sync(player); + return player.storage.shanjia>0; + }, + content:function(){ + 'step 0' + lib.skill.shanjia.sync(player); + player.draw(Math.min(7,player.storage.shanjia)); + 'step 1' + player.chooseToDiscard('he',Math.min(7,player.storage.shanjia),true); + 'step 2' + var useCard=false; + if(result.bool&&result.cards){ + for(var i=0;i0) + })){ + return 6-get.value(card); + } + } + return 0; + }, + content:function(){ + player.loseHp(); + switch(get.type(cards[0],'trick')){ + case 'basic':player.addTempSkill('zhanyi_basic');break; + case 'equip':player.addTempSkill('zhanyi_equip');break; + case 'trick':player.addTempSkill('zhanyi_trick');player.draw(2);break; + } + }, + ai:{ + order:9.1, + result:{ + player:1 + } + } + }, + zhanyi_basic:{ + group:['zhanyi_basic_sha','zhanyi_basic_jiu','zhanyi_basic_tao'] + }, + zhanyi_basic_tao:{ + enable:'chooseToUse', + filterCard:{type:'basic'}, + viewAs:{name:'tao'}, + viewAsFilter:function(player){ + if(!player.countCards('h',{type:'basic'})) return false; + }, + prompt:'将一张基本牌当桃使用', + check:function(card){ + return 8-get.value(card); + }, + ai:{ + skillTagFilter:function(player){ + if(!player.countCards('h',{type:'basic'})) return false; + }, + save:true, + } + }, + zhanyi_basic_sha:{ + enable:'chooseToUse', + filterCard:{type:'basic'}, + viewAs:{name:'sha'}, + viewAsFilter:function(player){ + if(!player.countCards('h',{type:'basic'})) return false; + }, + prompt:'将一张基本牌当杀使用', + check:function(card){return 4-get.value(card)}, + ai:{ + skillTagFilter:function(player){ + if(!player.countCards('h',{type:'basic'})) return false; + }, + respondSha:true, + } + }, + zhanyi_basic_jiu:{ + enable:'chooseToUse', + filterCard:{type:'basic'}, + viewAs:{name:'jiu'}, + viewAsFilter:function(player){ + if(!player.countCards('h',{type:'basic'})) return false; + }, + prompt:'将一张基本牌当酒使用', + check:function(card){ + if(_status.event.type=='dying') return 1; + return 4-get.value(card); + }, + ai:{ + skillTagFilter:function(player){ + return player.countCards('h',{type:'basic'})>0&&player.hp<=0; + }, + save:true, + } + }, + zhanyi_equip:{ + trigger:{player:'shaBegin'}, + forced:true, + filter:function(event,player){ + return event.target.countCards('he')>0; + }, + check:function(event,player){ + return get.attitude(player,event.target)<0; + }, + content:function(){ + trigger.target.chooseToDiscard('he',true,2); + } + }, + zhanyi_trick:{ + mod:{ + targetInRange:function(){ + return true; + } + } + }, + shichou:{ + //audio:1, + skillAnimation:true, + animationColor:'orange', + unique:true, + limited:true, + mark:false, + trigger:{player:'phaseZhunbeiBegin'}, + zhuSkill:true, + direct:true, + filter:function(event,player){ + if(!player.hasZhuSkill('shichou'))return false; + if(player.countCards('he')<2) return false; + return !player.storage.shichou; + }, + init:function(player){ + if(player.hasZhuSkill('shichou')){ + player.markSkill('shichou'); + player.storage.shichou=false; + } + }, + content:function(){ + "step 0" + player.chooseCardTarget({ + prompt:get.prompt2('shichou'), + selectCard:2, + filterTarget:function(card,player,target){ + return target.group=='shu'&&target!=player; + }, + filterCard:true, + position:'he', + ai1:function(card){ + return 7-get.value(card); + }, + ai2:function(target){ + var player=_status.event.player; + if(player.hasUnknown()) return 0; + var att=get.attitude(player,target); + if(att<=0){ + if(target.hp==1) return (10-att)/2; + return 10-att; + } + else{ + if(target.hp==1) return 0; + return (10-att)/4; + } + }, + }); + "step 1" + if(!result.bool) return; + var target=result.targets[0]; + var cards=result.cards; + player.storage.shichou=true; + player.logSkill('shichou',target); + player.awakenSkill('shichou'); + target.gain(cards,player,'giveAuto'); + player.storage.shichou_target=target; + player.addSkill('shichou2'); + target.markSkillCharacter('shichou',player,'誓仇','代替'+get.translation(player)+'承受伤害直到首次进入濒死状态'); + }, + intro:{ + content:'limited' + }, + }, + shichou2:{ + group:'shichou3', + trigger:{player:'damageBegin3'}, + forced:true, + popup:false, + content:function(){ + trigger.player=player.storage.shichou_target; + trigger.shichou4=true; + trigger.player.addSkill('shichou4'); + player.logSkill('shichou2',player.storage.shichou_target); + game.delay(0.5); + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + if(get.attitude(player,target)>0) return [0,0]; + var eff=get.damageEffect(target.storage.shichou_target,player,target); + if(eff>0){ + return [0,1]; + } + else if(eff<0){ + return [0,-2]; + } + else{ + return [0,0]; + } + } + } + } + } + }, + shichou3:{ + trigger:{global:['dying','dieBegin']}, + forced:true, + popup:false, + //priority:10, + filter:function(event,player){ + return event.player==player.storage.shichou_target; + }, + content:function(){ + trigger.player.unmarkSkill('shichou'); + delete player.storage.shichou_target; + player.removeSkill('shichou2'); + } + }, + shichou4:{ + trigger:{player:['damageAfter','damageCancelled']}, + forced:true, + popup:false, + audio:false, + content:function(){ + if(!trigger.shichou4) return; + if(event.triggername=='damageAfter'&&trigger.num){ + player.draw(trigger.num); + } + player.removeSkill('shichou4'); + } + }, + zhaolie:{ + trigger:{player:'phaseDrawBegin2'}, + direct:true, + filter:function(event,player){ + return !event.numFixed; + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('zhaolie'),function(card,player,target){ + return target!=player&&player.inRange(target); + }).set('ai',function(target){ + var player=_status.event.player; + if(get.attitude(player,target)>0) return 0; + return get.damageEffect(target,player,player); + }); + 'step 1' + if(result.bool){ + trigger.num--; + player.storage.zhaolie=result.targets[0]; + player.logSkill('zhaolie',result.targets); + player.addTempSkill('zhaolie2','phaseDrawAfter'); + } + } + }, + zhaolie2:{ + trigger:{player:'phaseDrawEnd'}, + forced:true, + popup:false, + content:function(){ + 'step 0' + event.cards=get.cards(3); + player.showCards(event.cards); + 'step 1' + event.basic=[]; + event.nonbasic=[]; + event.todis=[]; + for(var i=0;i1?0:7-get.value(card); + case 2:return 8-get.value(card); + case 3:return 10-get.value(card); + default:return 0; + } + }).set('num',num); + } + 'step 2' + var num=event.nonbasic.length; + var undone=false; + if(num==0){ + if(event.basic.length){ + result.targets[0].gain(event.basic,'gain2','log'); + } + } + else{ + if(result.bool){ + if(event.basic.length){ + player.gain(event.basic,'gain2','log'); + } + } + else{ + player.storage.zhaolie.damage(num); + if(event.basic.length){ + undone=true; + } + } + } + if(!undone){ + delete player.storage.zhaolie; + event.finish(); + } + 'step 3' + if(player.storage.zhaolie.isAlive()){ + player.storage.zhaolie.gain(event.basic,'gain2','log'); + } + else{ + game.cardsDiscard(event.basic); + } + delete player.storage.zhaolie; + } + }, + dingpan:{ + enable:'phaseUse', + filter:function(event,player){ + var num; + var mode=get.mode(); + if(mode=='identity'){ + if(_status.mode=='purple') num=player.getEnemies().length; + else num=get.population('fan'); + } + else if(mode=='versus'){ + num=player.getEnemies().length; + } + else{ + num=1; + } + if((player.getStat().skill.dingpan||0)>=num) return false; + return true; + }, + filterTarget:function(card,player,target){ + return target.countCards('e')>0; + }, + content:function(){ + 'step 0' + target.draw(); + 'step 1' + var goon=get.damageEffect(target,player,target)>=0; + if(!goon&&target.hp>=4&&get.attitude(player,target)<0){ + var es=target.getCards('e'); + for(var i=0;i=8){ + goon=true;break; + } + } + } + target.chooseControl(function(){ + if(_status.event.goon) return '选项二'; + return '选项一'; + }).set('goon',goon).set('prompt','定叛').set('choiceList',['令'+get.translation(player)+'弃置你装备区里的一张牌','获得你装备区内的所有牌并受到一点伤害']); + 'step 2' + if(result.control=='选项一'){ + player.discardPlayerCard(target,true,'e'); + event.finish(); + } + else{ + target.gain(target.getCards('e'),'gain2'); + } + 'step 3' + game.delay(0.5); + target.damage(); + }, + ai:{ + order:7, + result:{ + target:function(player,target){ + if(get.damageEffect(target,player,target)>=0) return 2; + var att=get.attitude(player,target); + if(att==0) return 0; + var es=target.getCards('e'); + if(att>0&&(target.countCards('h')>2||target.needsToDiscard(1))) return 0; + if(es.length==1&&att>0) return 0; + for(var i=0;i0){ + return 1; + } + } + else if(val>=7){ + if(att<0){ + return -1; + } + } + } + return 0; + } + } + } + }, + hongde:{ + audio:2, + trigger:{player:['gainAfter','loseAfter']}, + direct:true, + filter:function(event,player){ + if(event.name=='lose'&&event.type=='gain'&&event.getParent().player==player) return false; + if(event.name=='gain') return event.cards&&event.cards.length>1; + return event.cards2&&event.cards2.length>1; + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('hongde'),'令一名其他角色摸一张牌',function(card,player,target){ + return target!=player; + }).set('ai',function(target){ + return get.attitude(player,target); + }); + 'step 1' + if(result.bool){ + player.logSkill('hongde',result.targets); + result.targets[0].draw(); + } + } + }, + ziyuan:{ + audio:2, + enable:'phaseUse', + usable:1, + filterCard:function(card){ + var num=0; + for(var i=0;i0); + })){ + return 10; + } + return 1; + }, + result:{ + player:function(player,target){ + if(get.attitude(player,target)<0) return -1; + var eff=get.recoverEffect(target,player,player); + if(eff<0) return 0; + if(eff>0){ + if(target.hp==1) return 3; + return 2; + } + if(player.needsToDiscard()) return 1; + return 0; + } + }, + threaten:1.3 + } + }, + jugu:{ + audio:2, + mod:{ + maxHandcard:function(player,num){ + return num+player.maxHp; + } + }, + trigger:{global:'gameDrawAfter',player:'enterGame'}, + forced:true, + content:function(){ + player.draw(player.maxHp); + } + }, + tuifeng:{ + audio:2, + trigger:{player:'damageEnd'}, + direct:true, + notemp:true, + filter:function(event,player){ + return player.countCards('he')>0; + }, + init:function(player){ + if(!player.storage.tuifeng) player.storage.tuifeng=[]; + }, + content:function(){ + 'step 0' + player.chooseCard(get.prompt2('tuifeng'),'he',[1,trigger.num]).set('ai',function(card){ + if(card.name=='du') return 20; + return 7-get.useful(card); + }); + 'step 1' + if(result.bool){ + player.logSkill('tuifeng'); + player.lose(result.cards,ui.special,'toStorage'); + player.$give(result.cards,player,false); + for(var i=0;i0; + }, + content:function(){ + player.draw(2*player.storage.tuifeng.length); + player.addTempSkill('tuifeng3'); + player.storage.tuifeng3=player.storage.tuifeng.length; + player.unmarkSkill('tuifeng'); + } + }, + tuifeng3:{ + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha'&&player.storage.tuifeng3) return num+player.storage.tuifeng3; + } + }, + onremove:true + }, + weidi:{ + trigger:{global:['gameStart','zhuUpdate']}, + forced:true, + audio:2, + filter:function(event,player){ + var mode=get.mode(); + return (mode=='identity'||(mode=='versus'&&_status.mode=='four')); + }, + content:function(){ + var list=[]; + var zhu=get.zhu(player); + if(zhu&&zhu!=player&&zhu.skills){ + for(var i=0;i0; + }, + init:function(player){ + player.storage.jianshu=false; + }, + filterTarget:function(card,player,target){ + if(target==player) return false; + if(ui.selected.targets.length){ + return ui.selected.targets[0]!=target&&!ui.selected.targets[0].hasSkillTag('noCompareSource')&&target.countCards('h') + &&!target.hasSkillTag('noCompareTarget'); + } + return true; + }, + filterCard:{color:'black'}, + mark:true, + discard:false, + lose:false, + delay:false, + check:function(card){ + if(_status.event.player.hp==1) return 8-get.value(card); + return 6-get.value(card); + }, + selectTarget:2, + multitarget:true, + content:function(){ + 'step 0' + player.awakenSkill('jianshu'); + player.storage.jianshu=true; + targets[0].gain(cards,player,'give'); + 'step 1' + targets[0].chooseToCompare(targets[1]); + 'step 2' + if(result.bool){ + targets[0].chooseToDiscard('he',2,true); + targets[1].loseHp(); + } + else if(result.tie){ + targets[0].loseHp() + targets[1].loseHp() + } + else{ + targets[1].chooseToDiscard('he',2,true); + targets[0].loseHp(); + } + }, + intro:{ + content:'limited' + }, + ai:{ + expose:0.4, + order:4, + result:{ + target:function(player,target){ + if(player.hasUnknown()) return 0; + if(ui.selected.targets.length) return -1; + return -0.5; + } + } + } + }, + yongdi:{ + audio:2, + unique:true, + limited:true, + trigger:{player:'phaseZhunbeiBegin'}, + animationColor:'thunder', + skillAnimation:'legend', + filter:function(event,player){ + return !player.storage.yongdi; + }, + init:function(player){ + player.storage.yongdi=false; + }, + mark:true, + intro:{ + content:'limited' + }, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('yongdi'),function(card,player,target){ + return (target.sex=='male'||target.name=='key_yuri')&&target!=player; + }).set('ai',function(target){ + if(!_status.event.goon) return 0; + var player=_status.event.player; + var att=get.attitude(player,target); + if(att<=1) return 0; + var mode=get.mode(); + if(mode=='identity'||(mode=='versus'&&_status.mode=='four')){ + if(target.name&&lib.character[target.name]){ + for(var i=0;i0; + }, + multitarget:true, + multiline:true, + content:function(){ + player.chooseToCompare(targets).callback=lib.skill.gushe.callback; + }, + intro:{ + name:'饶舌', + content:'mark' + }, + chat:['粗鄙之语','天地不容','谄谀之臣','皓首匹夫,苍髯老贼','二臣贼子','断脊之犬','我从未见过有如此厚颜无耻之人!'], + callback:function(){ + 'step 0' + if(event.num1<=event.num2){ + target.chat(lib.skill.gushe.chat[player.countMark('gushe')]); + game.delay(); + player.addMark('gushe',1); + if(player.countMark('gushe')>=7){ + player.die(); + } + } + 'step 1' + if(event.num1>=event.num2){ + target.chooseToDiscard('he','弃置一张牌,或令'+get.translation(player)+'摸一张牌').set('ai',function(card){ + if(_status.event.goon) return 6-get.value(card); + return 0; + }).set('goon',get.attitude(target,player)<0); + } + else event.goto(3); + 'step 2' + if(!result.bool){ + player.draw(); + } + 'step 3' + if(event.num1<=event.num2){ + player.chooseToDiscard('he','弃置一张牌,或摸一张牌').set('ai',function(){return -1;}); + } + else event.finish(); + 'step 4' + if(!result.bool) player.draw(); + }, + ai:{ + order:7, + result:{ + target:function(player,target){ + var num=ui.selected.targets.length+1; + if(num>3) num=3; + var hs=player.getCards('h'); + for(var i=0;i5&&player.countMark('gushe')+num<=6) return -1; + } + } + } + return 0; + }, + } + } + }, + jici:{ + audio:2, + trigger:{player:'compare'}, + filter:function(event,player){ + return event.getParent().name=='gushe'&&!event.iwhile&&event.num1<=player.countMark('gushe'); + }, + content:function(){ + if(trigger.num10; + }, + filterTarget:function(card,player,target){ + return target!=player&&target.countCards('he')>0; + }, + filterCard:{name:'sha'}, + content:function(){ + 'step 0' + target.chooseToDiscard('he',true); + 'step 1' + if(target.hp>=player.hp&&result.bool&&result.cards[0].name!='sha'){ + player.useCard({name:'juedou',isCard:true},target); + } + }, + ai:{ + order:2, + result:{ + target:function(player,target){ + if(get.effect(target,{name:'juedou'},player,player)<=0){ + return 0; + } + if(target.hpplayer.hp) return -0.1; + return 0; + } + var hs1=target.getCards('h','sha'); + var hs2=player.getCards('h','sha'); + if(hs1.length>hs2.length){ + return 0; + } + var hsx=target.getCards('h'); + if(hsx.length>2&&hs2.length<=1&&hsx[0].number<6){ + return 0; + } + if(hsx.length>3&&hs2.length<=1){ + return 0; + } + if(hs1.length>hs2.length-1&&hs1.length>0&&(hs2.length<=1||hs1[0].number>hs2[0].number)){ + return 0; + } + return -1; + } + } + } + }, + shefu:{ + trigger:{player:'phaseJieshuBegin'}, + direct:true, + audio:2, + init:function(player){ + if(!player.storage.shefu) player.storage.shefu=[]; + if(!player.storage.shefu2) player.storage.shefu2=[]; + }, + filter:function(event,player){ + return player.countCards('h')>0; + }, + intro:{ + content:'cards', + onunmark:function(storage,player){ + if(storage&&storage.length){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + storage.length=0; + } + player.storage.shefu2=[]; + }, + mark:function(dialog,content,player){ + if(content&&content.length){ + dialog.addAuto(content); + if(player.isUnderControl(true)){ + var str=''; + for(var i=0;i'+str+'') + } + } + }, + }, + content:function(){ + 'step 0' + var list1=[],list2=[],list3=[]; + for(var i=0;i=5) return false; + if(nh2>nh2&&event.source.isDead()) return false; + return true; + }, + direct:true, + content:function(){ + "step 0" + var num1=player.countCards('h'); + var num2=trigger.source.countCards('h'); + if(num1>num2){ + var next=player.chooseToDiscard([num2+1,num1],'贲育:是否弃置至少'+(num2+1)+'张手牌,并对'+get.translation(trigger.source)+'造成一点伤害?'); + next.logSkill=['benyu',trigger.source]; + next.set('ai',function(card){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + if(ui.selected.cards.length>=_status.event.num){ + return -1; + } + if(get.damageEffect(trigger.source,player,player)>0&&_status.event.num<=2){ + return 8-get.value(card); + } + return -1; + }); + next.set('num',num2+1); + } + else{ + event.draw=true; + event.num=Math.min(num2,5)-num1; + player.chooseBool(get.prompt2('benyu')); + } + "step 1" + if(result.bool){ + if(event.draw){ + player.logSkill('benyu',trigger.source); + player.draw(event.num); + } + else{ + trigger.source.damage(player); + } + } + }, + }, + jili:{ + audio:2, + trigger:{ + global:'useCardToTarget' + }, + forced:true, + check:function(event,player){ + return get.effect(player,event.card,event.player,player)>0; + }, + filter:function(event,player){ + if(get.color(event.card)!='red') return false; + if(!event.targets) return false; + if(event.player==player) return false; + if(event.targets.contains(player)) return false; + if(get.info(event.card).multitarget) return false; + var type=get.type(event.card); + if(type!='basic'&&type!='trick') return false; + if(lib.filter.targetEnabled2(event.card,event.player,player)){ + for(var i=0;i0&&event.player!=player&&!player.hasSkill('zhidao2'); + }, + forced:true, + content:function(){ + var num=0; + if(trigger.player.countCards('h')) num++; + if(trigger.player.countCards('e')) num++; + if(trigger.player.countCards('j')) num++; + if(num){ + player.gainPlayerCard(trigger.player,num,'hej',true).set('filterButton',function(button){ + for(var i=0;i0; + }); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('qizhi'),'弃置一名角色的一张牌,然后其摸一张牌',function(card,player,target){ + return !_status.event.targets.contains(target)&&target.countCards('he')>0; + }).set('ai',function(target){ + var player=_status.event.player; + if(target==player) return 2; + if(get.attitude(player,target)<=0){ + return 1 + } + return 0.5; + }).set('targets',trigger.targets); + 'step 1' + if(result.bool){ + player.getHistory('custom').push({qizhi:true}); + if(!event.isMine()&&!_status.connectMode) game.delay(); + player.logSkill('qizhi',result.targets); + player.discardPlayerCard(result.targets[0],true,'he'); + event.target=result.targets[0]; + } + else{ + event.finish(); + } + 'step 2' + event.target.draw(); + }, + }, + jinqu:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + check:function(event,player){ + return player.getHistory('custom',function(evt){ + return evt.qizhi==true; + }).length>=player.countCards('h'); + }, + prompt:function(event,player){ + var num=player.getHistory('custom',function(evt){ + return evt.qizhi==true; + }).length; + return '进趋:是否摸两张牌并将手牌弃置至'+get.cnNumber(num)+'张?'; + }, + content:function(){ + 'step 0' + player.draw(2); + 'step 1' + var dh=player.countCards('h')-player.getHistory('custom',function(evt){ + return evt.qizhi==true; + }).length; + if(dh>0){ + player.chooseToDiscard(dh,true); + } + } + }, + mouduan:{ + audio:1, + init2:function(player){ + game.broadcastAll(function(player){ + player._mouduan_mark=player.mark('武',{ + content:'拥有技能【激昂】、【谦逊】' + }); + },player); + player.addAdditionalSkill('mouduan',['jiang','qianxun']); + }, + onremove:function(player){ + game.broadcastAll(function(player){ + if(player._mouduan_mark){ + player._mouduan_mark.delete(); + delete player._mouduan_mark; + } + },player); + player.removeAdditionalSkill('mouduan'); + }, + trigger:{player:'loseEnd'}, + forced:true, + filter:function(event,player){ + return player._mouduan_mark&&player._mouduan_mark.name=='武'&&player.countCards('h')<=2; + }, + content:function(){ + game.broadcastAll(function(player){ + if(!player._mouduan_mark) return; + player._mouduan_mark.name='文'; + player._mouduan_mark.skill='文'; + player._mouduan_mark.firstChild.innerHTML='文'; + player._mouduan_mark.info.content='拥有技能【英姿】、【克己】'; + },player); + player.addAdditionalSkill('mouduan',['yingzi','keji']); + }, + group:'mouduan2' + }, + mouduan2:{ + audio:1, + trigger:{global:'phaseZhunbeiBegin'}, + //priority:5, + filter:function(event,player){ + return player._mouduan_mark&&player._mouduan_mark.name=='文'&&player.countCards('h')>2; + }, + direct:true, + content:function(){ + 'step 0' + player.chooseToDiscard('he','谋断:是否弃置一张牌将标记变为“武”?').ai=function(){ + return -1; + } + 'step 1' + if(result.bool&&player.countCards('h')>2){ + game.broadcastAll(function(player){ + if(!player._mouduan_mark) return; + player._mouduan_mark.name='武'; + player._mouduan_mark.skill='武'; + player._mouduan_mark.firstChild.innerHTML='武'; + player._mouduan_mark.info.content='拥有技能【激昂】、【谦逊】'; + },player); + player.addAdditionalSkill('mouduan',['jiang','qianxun']); + } + } + }, + tanhu:{ + audio:1, + 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){ + target.addTempSkill('tanhu2'); + } + }, + ai:{ + result:{ + target:function(player,target){ + var hs=player.getCards('h'); + if(hs.length<3) return 0; + var bool=false; + for(var i=0;i=9&&get.value(hs[i])<7){ + bool=true; + break; + } + } + if(!bool) return 0; + return -1; + } + }, + order:9, + }, + group:'tanhu3' + }, + tanhu2:{ + mark:true, + intro:{ + content:'已成为探虎目标' + } + }, + tanhu3:{ + mod:{ + globalFrom:function(from,to){ + if(to.hasSkill('tanhu2')) return -Infinity; + }, + wuxieRespondable:function(card,player,target){ + if(target&&target.hasSkill('tanhu2')) return false; + } + } + }, + jiaozi:{ + audio:2, + trigger:{player:'damageBegin3',source:'damageBegin1'}, + forced:true, + filter:function(event,player){ + return player.isMaxHandcard(true); + }, + content:function(){ + trigger.num++; + }, + ai:{presha:true}, + }, + jiqiao:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + return player.countCards('he',{type:'equip'})>0; + }, + content:function(){ + 'step 0' + player.chooseToDiscard(get.prompt2('jiqiao'),[1,player.countCards('he',{type:'equip'})],'he',function(card){ + return get.type(card)=='equip'; + }).set('ai',function(card){ + if(card.name=='bagua') return 10; + return 7-get.value(card); + }).logSkill='jiqiao'; + 'step 1' + if(result.bool){ + event.cards=get.cards(2*result.cards.length); + player.showCards(event.cards); + } + else{ + event.finish(); + } + 'step 2' + var gained=[]; + var tothrow=[]; + for(var i=0;i=2&&he<=3){ + return '弃牌'; + } + if(player.maxHp-player.hp>=3&&he<=5){ + return '弃牌'; + } + if(player.maxHp-player.hp>3){ + return '弃牌'; + } + return '出杀'; + } + return '出杀'; + }).set('prompt','弃置'+get.translation(trigger.player)+get.cnNumber(player.maxHp-player.hp)+'张牌,或对任意一名角色使用一张杀'); + 'step 1' + if(result.control=='弃牌'){ + player.line(trigger.player,'green'); + if(player.hp1) return false; + if(!event.target) return false; + if(event.target.hp>=player.hp) return false; + + var card=event.card; + if(card.name=='sha') return true; + if(get.color(card)=='black'&&get.type(card,'trick')=='trick') return true; + return false; + }, + content:function(){ + "step 0" + var save=false; + if(get.attitude(player,trigger.target)>2){ + if(trigger.card.name=='sha'){ + if(player.countCards('h','shan')||player.getEquip(2)|| + trigger.target.hp==1||player.hp>trigger.target.hp+1){ + if(!trigger.target.countCards('h','shan')||trigger.target.countCards('h')0; + }, + content:function(){ + 'step 0' + player.chooseToCompare(target).set('preserve','win'); + 'step 1' + if(result.bool&&result.target){ + event.type=true; + event.card=result.target; + player.chooseTarget('将'+get.translation(result.target)+'交给一名角色',function(card,player,target){ + return target.hp<=player.hp; + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(_status.event.du) return -att; + return att; + }).set('du',event.card.name=='du'); + target.addTempSkill('dahe2'); + } + else{ + event.type=false; + if(player.countCards('h')){ + player.showHandcards(); + player.chooseToDiscard('h',true); + } + } + 'step 2' + if(event.type){ + if(result.bool){ + player.line(result.targets,'green'); + result.targets[0].gain(event.card,'gain2'); + } + } + }, + ai:{ + result:{ + target:function(player,target){ + var hs=player.getCards('h'); + if(hs.length<3) return 0; + var bool=false; + for(var i=0;i=9&&get.value(hs[i])<7){ + bool=true; + break; + } + } + if(!bool) return 0; + if(player.canUse('sha',target)&&(player.countCards('h','sha'))){ + return -2; + } + return -0.5; + } + }, + order:9, + } + }, + dahe2:{ + mark:true, + intro:{ + content:'非红桃闪无效' + }, + mod:{ + cardRespondable:function(card,player){ + if(card.name=='shan'&&get.suit(card)!='heart') return false; + }, + cardEnabled:function(card,player){ + if(card.name=='shan'&&get.suit(card)!='heart') return false; + }, + } + }, + xunzhi:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + init:function(player){ + player.storage.xunzhi=0; + }, + filter:function(event,player){ + var previous=player.getPrevious(); + var next=player.getNext(); + if(previous&&next){ + return player.hp!=previous.hp&&player.hp!=next.hp; + } + return false; + }, + check:function(event,player){ + return player.hp>=3&&player.countCards('h')>player.hp+1+player.storage.xunzhi; + }, + content:function(){ + player.loseHp(); + player.storage.xunzhi+=2; + }, + mark:true, + intro:{ + content:function(storage,player){ + return '手牌上限+'+player.storage.xunzhi; + } + }, + mod:{ + maxHandcard:function(player,num){ + if(typeof player.storage.xunzhi=='number'){ + return num+player.storage.xunzhi; + } + } + } + }, + yawang:{ + audio:2, + trigger:{player:'phaseDrawBegin1'}, + forced:true, + filter:function(event,player){ + return !event.numFixed; + }, + check:function(event,player){ + var num=game.countPlayer(function(target){ + return target.hp==player.hp; + }); + if(!player.hasSkill('xunzhi2')){ + var nh=player.countCards('h'); + if(nh>5) return false; + if(num==3&&nh>3) return false; + } + return num>=3; + }, + content:function(){ + trigger.changeToZero(); + var num=game.countPlayer(function(target){ + return target.hp==player.hp; + }); + if(num){ + player.draw(num); + } + player.storage.yawang=num; + player.addTempSkill('yawang2'); + } + }, + yawang2:{ + mod:{ + cardEnabled:function(card,player){ + if(_status.currentPhase!=player) return; + if(player.countUsed()>=player.storage.yawang) return false; + } + } + }, + junwei:{ + trigger:{player:'phaseJieshuBegin'}, + direct:true, + filter:function(event,player){ + return player.storage.yinling&&player.storage.yinling.length>=3; + }, + content:function(){ + 'step 0' + if(player.storage.yinling.length>3){ + player.chooseButton(3,[get.prompt('junwei'),'hidden',player.storage.yinling]).set('ai',function(button){ + return 1; + }); + } + else{ + player.chooseBool().set('createDialog',[get.prompt('junwei'),'hidden',player.storage.yinling]).set('dialogselectx',true).set('choice',true); + event.cards=player.storage.yinling.slice(0); + } + 'step 1' + if(result.bool){ + player.logSkill('junwei'); + var cards=event.cards||result.links; + for(var i=0;i1) return 1; + if(_status.event.player.hp>=3) return 0; + return 1; + }).set('nshan',nshan); + } + } + else{ + event.finish(); + } + 'step 3' + if(!event.directfalse&&result.bool) game.delay(); + ui.clear(); + 'step 4' + if(!event.directfalse&&result.bool){ + event.cards=result.cards; + event.target.$throw(result.cards); + player.chooseTarget('将'+get.translation(event.cards)+'交给一名角色',true,function(card,player,target){ + return target!=_status.event.getParent().target; + }).set('ai',function(target){ + return get.attitude(_status.event.player,target)/(target.countCards('h','shan')+1); + }); + } + else{ + event.target.loseHp(); + delete event.cards; + } + 'step 5' + if(event.cards){ + player.line(result.targets,'green'); + result.targets[0].gain(event.cards,'gain2'); + game.log(player,'将',event.cards,'交给',result.targets[0]); + event.finish(); + } + else{ + if(event.target.countCards('e')){ + player.choosePlayerCard('e','将'+get.translation(event.target)+'的一张装备牌移出游戏',true,event.target); + } + else{ + event.finish(); + } + } + 'step 6' + if(result.bool){ + var card=result.links[0]; + if(event.target.storage.junwei2){ + event.target.storage.junwei2.push(card); + event.target.markSkill('junwei2'); + } + else{ + event.target.storage.junwei2=[card]; + } + event.target.lose(card,ui.special,'toStorage'); + event.target.addSkill('junwei2'); + event.target.syncStorage('junwei2'); + } + } + }, + junwei2:{ + mark:true, + intro:{ + content:'cards', + onunmark:function(storage,player){ + if(storage&&storage.length){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + storage.length=0; + } + }, + }, + trigger:{player:'phaseJieshuBegin'}, + forced:true, + content:function(){ + 'step 0' + if(player.storage.junwei2.length){ + var card=player.storage.junwei2.shift(); + player.equip(card); + event.redo(); + } + 'step 1' + player.removeSkill('junwei2'); + delete player.storage.junwei2; + } + }, + yinling:{ + enable:'phaseUse', + filterCard:{color:'black'}, + position:'he', + intro:{ + content:'cards', + onunmark:'throw' + }, + filter:function(event,player){ + return player.countCards('he',{color:'black'})>0&&player.storage.yinling.length<4; + }, + filterTarget:function(card,player,target){ + return target.countCards('he')>0&&target!=player; + }, + init:function(player){ + player.storage.yinling=[]; + }, + check:function(card){ + return 6-get.value(card); + }, + content:function(){ + 'step 0' + player.choosePlayerCard('hej',target,true); + 'step 1' + if(result.bool&&result.links&&result.links.length){ + target.$give(result.links,player,false); + target.lose(result.links,ui.special,'toStorage'); + player.storage.yinling.push(result.links[0]); + player.markSkill('yinling'); + player.syncStorage('yinling'); + } + }, + ai:{ + order:10.1, + expose:0.1, + result:{ + target:function(player,target){ + if(target.hasSkill('tuntian')) return 0; + var es=target.getCards('e'); + var nh=target.countCards('h'); + var noe=(es.length==0||target.hasSkillTag('noe')); + var noe2=(es.length==1&&es[0].name=='baiyin'&&target.hp=0){ + return -1.5; + } + return 2; + } + return -1.5; + }, + }, + } + }, + yanxiao:{ + audio:2, + enable:'phaseUse', + filterCard:{suit:'diamond'}, + filterTarget:true, + check:function(card){ + return 7-get.value(card); + }, + position:'he', + filter:function(event,player){ + return player.countCards('he',{suit:'diamond'})>0; + }, + discard:false, + //lose:false, + visible:true, + toStorage:true, + prepare:'give', + content:function(){ + //player.lose(cards,ui.special,'toStorage','visible'); + if(target.hasSkill('yanxiao2')&&target.storage.yanxiao2){ + target.storage.yanxiao2.push(cards[0]); + target.syncStorage('yanxiao2'); + target.markSkill('yanxiao2'); + } + else{ + target.storage.yanxiao2=cards.slice(0); + target.syncStorage('yanxiao2'); + target.addSkill('yanxiao2'); + } + }, + ai:{ + order:8, + result:{ + target:function(player,target){ + if(target.storage.yanxiao2&&target.storage.yanxiao2.length) return 0; + if(target.countCards('j')) return 1; + return 0; + } + } + } + }, + yanxiao2:{ + audio:'yanxiao', + mark:true, + intro:{ + content:'cards', + onunmark:function(storage,player){ + if(storage&&storage.length){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + storage.length=0; + } + }, + }, + trigger:{player:'phaseJudgeBegin'}, + forced:true, + content:function(){ + var cards=player.storage.yanxiao2.concat(player.getCards('j')); + player.gain(cards,'gain2','log','fromStorage'); + delete player.storage.yanxiao2; + player.removeSkill('yanxiao2'); + }, + ai:{ + effect:{ + target:function(card){ + if(get.type(card)=='delay') return [0,0.1]; + } + } + } + }, + anxian:{ + audio:2, + group:['anxian_source','anxian_target'], + subSkill:{ + source:{ + audio:"anxian", + trigger:{source:'damageBegin2'}, + filter:function(event,player){ + return event.card&&event.card.name=='sha'; + }, + check:function(event,player){ + if(get.damageEffect(event.player,player,player)<=0) return true; + return false; + }, + content:function(){ + 'step 0' + if(trigger.player.countCards('h')){ + trigger.player.chooseToDiscard(true); + } + 'step 1' + player.draw(); + trigger.cancel(); + } + }, + target:{ + audio:"anxian", + trigger:{target:'useCardToTargeted'}, + direct:true, + filter:function(event,player){ + return event.card.name=='sha'&&player.countCards('h'); + }, + content:function(){ + "step 0" + var next=player.chooseToDiscard(get.prompt2('anxian')); + next.set('ai',function(card){ + var player=_status.event.player; + var trigger=_status.event.getTrigger(); + if(get.attitude(player,trigger.player)>0){ + return 9-get.value(card); + } + if(player.countCards('h',{name:'shan'})) return -1; + return 7-get.value(card); + }); + next.logSkill='anxian'; + "step 1" + if(result.bool){ + trigger.player.draw(); + trigger.getParent().excluded.push(player); + } + }, + } + } + }, + luoyan_tianxiang:{ + inherit:'tianxiang', + filter:function(event,player){ + if(!player.storage.xingwu||!player.storage.xingwu.length) return false; + if(player.hasSkill('tianxiang')) return false; + return lib.skill.tianxiang.filter(event,player); + }, + }, + luoyan_liuli:{ + inherit:'liuli', + filter:function(event,player){ + if(!player.storage.xingwu||!player.storage.xingwu.length) return false; + if(player.hasSkill('liuli')) return false; + return lib.skill.liuli.filter(event,player); + }, + }, + luoyan:{ + group:['luoyan_tianxiang','luoyan_liuli'], + }, + xingwu:{ + audio:2, + group:['xingwu_color','xingwu_color2'], + subSkill:{ + color:{ + trigger:{player:'phaseZhunbeiBegin'}, + silent:true, + content:function(){ + player.storage.xingwu_color=['black','red']; + } + }, + color2:{ + trigger:{player:'useCard'}, + silent:true, + filter:function(event,player){ + return Array.isArray(player.storage.xingwu_color)&&_status.currentPhase==player; + }, + content:function(){ + player.storage.xingwu_color.remove(get.color(trigger.card)); + } + } + }, + trigger:{player:'phaseDiscardBegin'}, + direct:true, + filter:function(event,player){ + if(!player.storage.xingwu_color) return false; + var length=player.storage.xingwu_color.length; + if(length==0) return false; + var hs=player.getCards('h'); + if(hs.length==0) return false; + if(length==2) return true; + var color=player.storage.xingwu_color[0]; + for(var i=0;i0&& + get.attitude(player,current)<0) + })) return 0; + } + return 7-get.value(card); + }); + 'step 1' + if(result.bool){ + player.logSkill('xingwu'); + if(player.storage.xingwu.length<2){ + player.$give(result.cards,player); + } + player.lose(result.cards,ui.special); + player.storage.xingwu=player.storage.xingwu.concat(result.cards); + player.markSkill('xingwu'); + player.syncStorage('xingwu'); + } + else{ + event.finish(); + } + 'step 2' + if(player.storage.xingwu.length==3){ + player.$throw(player.storage.xingwu); + while(player.storage.xingwu.length){ + player.storage.xingwu.shift().discard(); + } + player.unmarkSkill('xingwu'); + player.chooseTarget(function(card,player,target){ + return target!=player&&target.sex=='male'; + },'对一名男性角色造成两点伤害并弃置其装备区内的牌').set('ai',function(target){ + var player=_status.event.player; + if(get.attitude(player,target)>0) return -1; + return get.damageEffect(target,player,player)+target.countCards('e')/2; + }); + } + else{ + event.finish(); + } + 'step 3' + if(result.bool){ + var target=result.targets[0]; + target.damage(2); + event.target=target; + player.line(target,'green'); + } + else{ + event.finish(); + } + 'step 4' + if(event.target&&event.target.isAlive()){ + var es=event.target.getCards('e'); + if(es.length){ + event.target.discard(es); + } + } + }, + ai:{ + threaten:1.5 + } + }, + yinbing:{ + trigger:{player:'phaseJieshuBegin'}, + direct:true, + audio:2, + init:function(player){ + if(!player.storage.yinbing) player.storage.yinbing=[]; + }, + filter:function(event,player){ + return player.countCards('he',{type:'basic'})0&& + (event.card.name=='sha'||event.card.name=='juedou'); + }, + content:function(){ + 'step 0' + player.chooseCardButton('移去一张引兵牌',true,player.storage.yinbing); + 'step 1' + var card=result.links[0]; + player.storage.yinbing.remove(card); + game.cardsDiscard(card); + player.$throw(card); + game.log(player,'将',card,'置入弃牌堆'); + player.syncStorage('yinbing'); + if(player.storage.yinbing.length==0){ + player.unmarkSkill('yinbing'); + } + } + } + }, + group:'yinbing_discard' + }, + juedi:{ + trigger:{player:'phaseZhunbeiBegin'}, + filter:function(event,player){ + return player.storage.yinbing&&player.storage.yinbing.length>0; + }, + forced:true, + audio:2, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('juedi'),true,function(card,player,target){ + return player.hp>=target.hp; + }).set('ai',function(target){ + var player=_status.event.player; + var att=get.attitude(player,target); + if(att<2) return att-10; + var num=att/10; + if(target==player){ + num+=player.maxHp-player.countCards('h')+0.5; + } + else{ + num+=_status.event.n2*2; + if(target.isDamaged()){ + if(target.hp==1){ + num+=3; + } + else if(target.hp==2){ + num+=2; + } + else{ + num+=0.5; + } + } + } + if(target.hasJudge('lebu')){ + num/=2; + } + return num; + }).set('n2',player.storage.yinbing.length); + 'step 1' + if(result.bool){ + player.line(result.targets[0],'green'); + if(result.targets[0]==player){ + player.$throw(player.storage.yinbing,1000); + var num=player.maxHp-player.countCards('h'); + if(num>0) player.draw(num); + game.cardsDiscard(player.storage.yinbing); + player.storage.yinbing=[]; + player.syncStorage('yinbing'); + player.unmarkSkill('yinbing'); + } + else{ + var target=result.targets[0]; + target.recover(); + target.gain(player.storage.yinbing.slice(0),'gain2','log','fromStorage'); + target.draw(player.storage.yinbing.length); + player.storage.yinbing.length=0; + } + player.syncStorage('yinbing'); + player.unmarkSkill('yinbing'); + } + } + }, + meibu:{ + trigger:{global:'phaseUseBegin'}, + filter:function(event,player){ + return event.player!=player&&get.distance(event.player,player,'attack')>1; + }, + logTarget:'player', + check:function(event,player){ + if(get.attitude(player,event.player)>=0) return false; + var e2=player.getEquip(2); + if(e2){ + if(e2.name=='tengjia') return true; + if(e2.name=='bagua') return true; + } + return player.countCards('h','shan')>0; + }, + content:function(){ + var target=trigger.player; + target.addTempSkill('meibu_viewas'); + target.addTempSkill('meibu_range'); + target.storage.meibu=player; + target.markSkillCharacter('meibu',player,'魅步','锦囊牌均视为杀且'+get.translation(player)+'视为在攻击范围内'); + }, + ai:{ + expose:0.2 + }, + subSkill:{ + range:{ + mod:{ + targetInRange:function(card,player,target){ + if(card.name=='sha'&&target==player.storage.meibu){ + return true; + } + } + }, + onremove:function(player){ + game.broadcast(function(player){ + if(player.marks.meibu){ + player.marks.meibu.delete(); + delete player.marks.meibu; + } + },player); + if(player.marks.meibu){ + player.marks.meibu.delete(); + delete player.marks.meibu; + game.addVideo('unmark',player,'meibu'); + } + }, + trigger:{player:'useCard'}, + forced:true, + popup:false, + filter:function(event,player){ + return event.skill=='meibu_viewas' + }, + content:function(){ + player.removeSkill('meibu_viewas'); + game.broadcastAll(function(player){ + if(player.marks.meibu&&player.marks.meibu.info){ + player.marks.meibu.info.content=player.marks.meibu.info.content.slice(8); + } + },player); + } + }, + viewas:{ + mod:{ + cardEnabled:function(card,player){ + if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; + }, + cardUsable:function(card,player){ + if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; + }, + cardRespondable:function(card,player){ + if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; + }, + cardSavable:function(card,player){ + if(card.name!='sha'&&get.type(card,'trick')=='trick') return false; + }, + }, + enable:['chooseToUse','chooseToRespond'], + filterCard:function(card){ + return get.type(card,'trick')=='trick'; + }, + viewAs:{name:'sha'}, + check:function(){return 1}, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'respondSha')&¤t<0) return 0.8 + } + }, + respondSha:true, + order:4, + useful:-1, + value:-1 + } + } + } + }, + mumu:{ + enable:'phaseUse', + usable:1, + filterCard:function(card,player,target){ + return card.name=='sha'||(get.type(card,'trick')=='trick'&&get.color(card)=='black'); + }, + check:function(card){ + return 7-get.value(card); + }, + filterTarget:function(card,player,target){ + if(target==player) return false; + return target.getEquip(1)||target.getEquip(2); + }, + content:function(){ + 'step 0' + var e1=target.getEquip(1); + var e2=target.getEquip(2); + event.e1=e1; + event.e2=e2; + if(e1&&e2){ + player.chooseControl('武器牌','防具牌').set('ai',function(){ + if(_status.event.player.getEquip(2)){ + return '武器牌'; + } + return '防具牌'; + }); + } + else if(e1){ + event.choice='武器牌'; + } + else{ + event.choice='防具牌'; + } + 'step 1' + var choice=event.choice||result.control; + if(choice=='武器牌'){ + if(event.e1){ + target.discard(event.e1); + } + player.draw(); + } + else{ + if(event.e2){ + player.equip(event.e2); + target.$give(event.e2,player); + } + } + }, + ai:{ + order:8, + result:{ + target:function(player,target){ + if(target.getEquip(2)&&!player.getEquip(2)){ + return -2; + } + return -1; + } + } + } + }, + fentian:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + direct:true, + filter:function(event,player){ + if(player.countCards('h')>=player.hp) return false; + return game.hasPlayer(function(current){ + return player!=current&&player.inRange(current)&¤t.countCards('he'); + }); + }, + intro:{ + content:'cards', + onunmark:function(storage,player){ + if(storage&&storage.length){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + storage.length=0; + } + }, + }, + init:function(player,skill){ + if(!player.storage[skill]) player.storage.fentian=[]; + }, + content:function(){ + 'step 0' + player.chooseTarget('焚天:选择一名攻击范围内的角色,将其一张牌置于你的武将牌上',true,function(card,player,target){ + return player!=target&&player.inRange(target)&&target.countCards('he')>0; + }).set('ai',function(target){ + return -get.attitude(_status.event.player,target) + }); + 'step 1' + if(result.bool){ + player.logSkill('fentian',result.targets); + event.target=result.targets[0]; + player.choosePlayerCard(result.targets[0],'he',true); + } + else{ + event.finish(); + } + 'step 2' + if(result.bool){ + event.target.$give(result.links,player,false); + event.target.lose(result.links,ui.special,'toStorage'); + player.storage.fentian=player.storage.fentian.concat(result.links); + player.syncStorage('fentian'); + player.markSkill('fentian'); + } + 'step 3' + game.delayx(); + }, + mod:{ + attackFrom:function(from,to,distance){ + return distance-from.storage.fentian.length; + } + } + }, + zhiri:{ + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + unique:true, + juexingji:true, + audio:2, + skillAnimation:true, + animationColor:'fire', + derivation:'xintan', + filter:function(event,player){ + return player.storage.fentian&&player.storage.fentian.length>=3&&!player.storage.zhiri; + }, + content:function(){ + player.loseMaxHp(); + player.addSkill('xintan'); + player.storage.zhiri=true; + player.awakenSkill('zhiri'); + } + }, + xintan:{ + enable:'phaseUse', + usable:1, + audio:2, + unique:true, + filter:function(event,player){ + return player.storage.fentian&&player.storage.fentian.length>=2; + }, + filterTarget:true, + prompt:'移去两张“焚”并令一名角色失去一点体力', + content:function(){ + 'step 0' + player.chooseCardButton(2,'移去两张“焚”并令'+get.translation(target)+'失去一点体力',player.storage.fentian,true); + 'step 1' + if(result.bool){ + player.$throw(result.links); + for(var i=0;iplayer.hp; + }, + content:function(){ + player.storage.danji=true; + player.loseMaxHp(); + player.addSkill('mashu'); + player.addSkill('nuzhan'); + player.awakenSkill('danji'); + } + }, + nuzhan:{ + audio:2, + popup:false, + silent:true, + firstDo:true, + trigger:{player:'useCard1'}, + filter:function(event,player){ + return event.card&&event.card.name=='sha'&&event.addCount!==false&&event.cards&& + event.cards.length==1&&get.type(event.cards[0],'trick')=='trick'; + }, + forced:true, + content:function(){ + trigger.addCount=false; + if(player.stat[player.stat.length-1].card.sha>0){ + player.stat[player.stat.length-1].card.sha--; + } + }, + group:'nuzhan2' + }, + nuzhan2:{ + audio:'nuzhan', + trigger:{player:'useCard1'}, + forced:true, + popup:false, + silent:true, + firstDo:true, + filter:function(event,player){ + return event.card&&event.card.name=='sha'&&event.cards&& + event.cards.length==1&&get.type(event.cards[0])=='equip'; + }, + content:function(){ + trigger.baseDamage++; + } + }, + jieyuan:{ + group:['jieyuan_more','jieyuan_less'], + subSkill:{ + more:{ + audio:true, + trigger:{source:'damageBegin1'}, + direct:true, + filter:function(event,player){ + if(!player.hasSkill('fenxin_nei')){ + if(!player.countCards('h',{color:'black'})) return false; + } + return (event.player.hp>=player.hp||player.hasSkill('fenxin_fan'))&&player!=event.player; + }, + content:function(){ + 'step 0' + var goon=(get.attitude(player,trigger.player)<0); + var next=player.chooseToDiscard(get.prompt('jieyuan',trigger.player)); + if(!player.hasSkill('fenxin_nei')){ + next.set('filterCard',function(card){ + return get.color(card)=='black'; + }); + next.set('prompt2','弃置一张黑色手牌令伤害+1'); + } + else{ + next.set('prompt2','弃置一张手牌令伤害+1'); + } + next.set('ai',function(card){ + if(_status.event.goon){ + return 8-get.value(card); + } + return 0; + }); + next.set('goon',goon); + next.logSkill=['jieyuan_more',trigger.player]; + 'step 1' + if(result.bool){ + trigger.num++; + } + } + }, + less:{ + audio:true, + trigger:{player:'damageBegin2'}, + filter:function(event,player){ + if(!player.hasSkill('fenxin_nei')){ + if(!player.countCards('h',{color:'red'})) return false; + } + return event.source&&(event.source.hp>=player.hp||player.hasSkill('fenxin_zhong'))&&player!=event.source; + }, + direct:true, + content:function(){ + "step 0" + var next=player.chooseToDiscard(get.prompt('jieyuan')); + if(!player.hasSkill('fenxin_nei')){ + next.set('filterCard',function(card){ + return get.color(card)=='red'; + }); + next.set('prompt2','弃置一张红色手牌令伤害-1'); + } + else{ + next.set('prompt2','弃置一张手牌令伤害-1'); + } + next.set('ai',function(card){ + var player=_status.event.player; + if(player.hp==1||_status.event.getTrigger().num>1){ + return 9-get.value(card); + } + if(player.hp==2){ + return 8-get.value(card); + } + return 7-get.value(card); + }); + next.logSkill='jieyuan_less'; + "step 1" + if(result.bool){ + trigger.num--; + } + } + } + }, + ai:{ + expose:0.2, + threaten:1.5 + } + }, + fenxin:{ + mode:['identity'], + available:function(mode){ + if(mode=='identity'&&_status.mode=='purple') return false; + }, + trigger:{global:'dieAfter'}, + filter:function(event,player){ + return ['fan','zhong','nei'].contains(event.player.identity)&&!player.hasSkill('fenxin_'+event.player.identity); + }, + forced:true, + content:function(){ + player.addSkill('fenxin_'+trigger.player.identity); + player.markSkill('fenxin'); + }, + intro:{ + mark:function(dialog,content,player){ + if(player.hasSkill('fenxin_zhong')){ + dialog.addText('你发动“竭缘”减少伤害无体力值限制'); + } + if(player.hasSkill('fenxin_fan')){ + dialog.addText('你发动“竭缘”增加伤害无体力值限制'); + } + if(player.hasSkill('fenxin_nei')){ + dialog.addText('将“竭缘”中的黑色手牌和红色手牌改为一张牌'); + } + } + }, + subSkill:{ + fan:{}, + zhong:{}, + nei:{} + }, + ai:{ + combo:'jieyuan' + } + }, + fenxin_old:{ + mode:['identity'], + trigger:{source:'dieBegin'}, + init:function(player){ + player.storage.fenxin=false; + }, + intro:{ + content:'limited' + }, + skillAnimation:'epic', + animationColor:'fire', + unique:true, + limited:true, + audio:2, + mark:true, + filter:function(event,player){ + if(player.storage.fenxin) return false; + return event.player.identity!='zhu'&&player.identity!='zhu'&& + player.identity!='mingzhong'&&event.player.identity!='mingzhong'; + }, + check:function(event,player){ + if(player.identity==event.player.identity) return Math.random()<0.5; + var stat=get.situation(); + switch(player.identity){ + case 'fan': + if(stat<0) return false; + if(stat==0) return Math.random()<0.6; + return true; + case 'zhong': + if(stat>0) return false; + if(stat==0) return Math.random()<0.6; + return true; + case 'nei': + if(event.player.identity=='fan'&&stat<0) return true; + if(event.player.identity=='zhong'&&stat>0) return true; + if(stat==0) return Math.random()<0.7; + return false; + } + }, + prompt:function(event,player){ + return '焚心:是否与'+get.translation(event.player)+'交换身份?'; + }, + content:function(){ + game.broadcastAll(function(player,target,shown){ + var identity=player.identity; + player.identity=target.identity; + if(shown||player==game.me){ + player.setIdentity(); + } + target.identity=identity; + },player,trigger.player,trigger.player.identityShown); + player.line(trigger.player,'green'); + player.storage.fenxin=true; + player.awakenSkill('fenxin_old'); + } + }, + xisheng:{ + enable:'chooseToUse', + usable:1, + viewAs:{name:'tao'}, + viewAsFilter:function(player){ + return player!=_status.currentPhase&&player.countCards('he')>1; + }, + selectCard:2, + filterCard:true, + position:'he', + ai:{ + save:true, + skillTagFilter:function(){ + return lib.skill.xisheng.viewAsFilter.apply(this,arguments) + }, + }, + }, + shulv:{ + inherit:'zhiheng', + prompt:'弃置一张牌并摸一张牌', + selectCard:1, + filter:function(event,player){ + return player.countCards('h')>player.hp; + }, + }, + xiandeng:{ + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+1; + }, + targetInRange:function(card,player){ + if(card.name=='sha'&&player.countUsed('sha',true)==0) return true; + }, + }, + }, + qingyi:{ + audio:2, + trigger:{player:'phaseJudgeBefore'}, + direct:true, + content:function(){ + "step 0" + var check= player.countCards('h')>2; + player.chooseTarget(get.prompt("qingyi"),"跳过判定阶段和摸牌阶段,视为对一名其他角色使用一张【杀】",function(card,player,target){ + if(player==target) return false; + return player.canUse({name:'sha'},target,false); + }).set('check',check).set('ai',function(target){ + if(!_status.event.check) return 0; + return get.effect(target,{name:'sha'},_status.event.player); + }); + "step 1" + if(result.bool){ + player.logSkill('qingyi',result.targets); + player.useCard({name:'sha',isCard:true},result.targets[0],false); + trigger.cancel(); + player.skip('phaseDraw'); + } + }, + }, + qingyi1:{ + audio:true, + trigger:{player:'phaseZhunbeiBegin'}, + direct:true, + content:function(){ + "step 0" + player.addSkill('qingyi3'); + var check= player.countCards('h')>2; + player.chooseTarget(get.prompt2('qingyi'),function(card,player,target){ + if(player==target) return false; + return player.canUse({name:'sha'},target); + }).ai=function(target){ + if(!check) return 0; + return get.effect(target,{name:'sha'},_status.event.player); + } + "step 1" + if(result.bool){ + player.logSkill('qingyi1',result.targets); + player.useCard({name:'sha',isCard:true},result.targets[0],false); + player.skip('phaseJudge'); + player.skip('phaseDraw'); + } + player.removeSkill('qingyi3'); + } + }, + qingyi2:{ + audio:true, + trigger:{player:'phaseUseBefore'}, + direct:true, + filter:function(event,player){ + return player.countCards('he',{type:'equip'})>0; + }, + content:function(){ + "step 0" + player.addSkill('qingyi3'); + var check=player.countCards('h')<=player.hp; + player.chooseCardTarget({ + prompt:get.prompt2('qingyi'), + filterCard:function(card,player){ + return get.type(card)=='equip'&&lib.filter.cardDiscardable(card,player); + }, + position:'he', + filterTarget:function(card,player,target){ + if(player==target) return false; + return player.canUse({name:'sha'},target); + }, + ai1:function(card){ + if(!_status.event.check) return 0; + return 6-get.value(card); + }, + ai2:function(target){ + if(!_status.event.check) return 0; + return get.effect(target,{name:'sha'},_status.event.player); + }, + check:check + }); + "step 1" + if(result.bool){ + player.logSkill('qingyi2',result.targets); + player.discard(result.cards[0]); + player.useCard({name:'sha',isCard:true},result.targets[0]); + trigger.cancel(); + } + player.removeSkill('qingyi3'); + } + }, + qingyi3:{ + mod:{ + targetInRange:function(card,player,target,now){ + return true; + } + }, + }, + qirang:{ + audio:2, + trigger:{player:'equipEnd'}, + frequent:true, + content:function(){ + player.gain(get.cardPile(function(card){ + return get.type(card,'trick')=='trick'; + }),'gain2'); + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; + } + }, + threaten:1.3 + } + }, + yuhua:{ + trigger:{player:'phaseDiscardBegin'}, + forced:true, + audio:2, + filter:function(event,player){ + return event.parent.name=='phaseDiscard'&&player.countCards('h',{type:'basic'})0){ + var att1=get.attitude(target,player); + var att2=get.attitude(target,trigger.player); + var att3=get.attitude(player,target); + if(att3<0) return 0; + return att1/2+att2+att3; + } + else{ + return 0; + // return get.attitude(player,target); + } + }); + 'step 1' + if(result.bool){ + player.addTempSkill('chenqing2','roundStart'); + event.target=result.targets[0]; + event.target.draw(4); + player.logSkill('chenqing',event.target); + } + else{ + event.finish(); + } + 'step 2' + var target=event.target; + var tosave=trigger.player; + var att=get.attitude(target,tosave); + var hastao=target.countCards('h','tao'); + target.chooseToDiscard(4,true,'he').set('ai',function(card){ + var hastao=_status.event.hastao; + var att=_status.event.att; + if(!hastao&&att>0){ + var suit=get.suit(card); + for(var i=0;i0&&player.countCards('h')>0; + }, + content:function(){ + "step 0" + event.count=2; + event.history=player.getHistory('useCard',function(evt){ + return evt.isPhaseUsing()&&['basic','trick'].contains(get.type(evt.card)); + }) + "step 1" + event._result={}; + if(event.count&&event.history.length&&player.countCards('h')){ + event.count--; + var card=event.history.shift().card; + card={name:card.name,nature:card.nature}; + if(card.name!='jiu'&&lib.filter.cardEnabled(card)){ + if(game.hasPlayer(function(current){ + return player.canUse(card,current); + })){ + lib.skill.mozhix.viewAs=card; + var next=player.chooseToUse(); + if(next.isOnline()){ + player.send(function(card){ + lib.skill.mozhix.viewAs=card; + },card) + } + next.logSkill='mozhi'; + next.set('openskilldialog','默识:将一张手牌当'+get.translation(card)+'使用'); + next.set('norestore',true); + next.set('_backupevent','mozhix'); + next.backup('mozhix'); + } + } + } + "step 2" + if(result&&result.bool) event.goto(1); + }, + }, + mozhix:{ + filterCard:function(card){ + return get.itemtype(card)=='card'; + }, + selectCard:1, + popname:true, + }, + chenqing2:{}, + ranshang:{ + audio:2, + trigger:{player:'damageEnd'}, + filter:function(event,player){ + return event.nature=='fire'; + }, + forced:true, + check:function(){ + return false; + }, + content:function(){ + player.addMark('ranshang',trigger.num); + }, + intro:{ + name2:'燃', + content:'mark' + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(card.name=='sha'){ + if(card.nature=='fire'||player.hasSkill('zhuque_skill')) return 2; + } + if(get.tag(card,'fireDamage')&¤t<0) return 2; + } + } + }, + group:'ranshang2' + }, + ranshang2:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + forced:true, + filter:function(event,player){ + return player.countMark('ranshang')>0; + }, + content:function(){ + player.loseHp(player.countMark('ranshang')); + } + }, + hanyong:{ + trigger:{player:'useCard'}, + filter:function(event,player){ + return game.roundNumber>player.hp&&event.card&& + (event.card.name=='nanman'||event.card.name=='wanjian'); + }, + content:function(){ + trigger.baseDamage++; + }, + }, + hanyong3:{ + audio:false, + trigger:{source:'damageBegin1'}, + forced:true, + onremove:true, + filter:function(event,player){ + return event.card==player.storage.hanyong3; + }, + content:function(){ + trigger.num++; + } + }, + yishe:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + init:function(player){ + if(!player.storage.yishe) player.storage.yishe=[]; + }, + filter:function(event,player){ + return !player.storage.yishe||!player.storage.yishe.length; + }, + intro:{ + content:'cards' + }, + content:function(){ + 'step 0' + player.draw(2); + player.chooseCard(2,'he',true,'选择两张牌作为“米”'); + 'step 1' + player.storage.yishe=result.cards; + player.lose(result.cards,ui.special,'toStorage'); + player.syncStorage('yishe'); + player.markSkill('yishe'); + } + }, + bushi:{ + audio:2, + trigger:{player:'damageEnd',source:'damageEnd'}, + filter:function(event,player){ + if(event._notrigger.contains(event.player)) return false; + return player.storage.yishe&&player.storage.yishe.length&&event.player.isAlive(); + }, + direct:true, + content:function(){ + 'step 0' + event.count=trigger.num; + 'step 1' + trigger.player.chooseCardButton('选择获得一张“米”',player.storage.yishe); + 'step 2' + if(result.bool){ + event.count--; + player.logSkill('bushi'); + trigger.player.gain(result.links[0],'draw2','log','fromStorage'); + player.storage.yishe.remove(result.links[0]); + player.syncStorage('yishe'); + if(player.storage.yishe.length==0){ + player.recover(); + player.unmarkSkill('yishe'); + } + else{ + player.markSkill('yishe'); + if(event.count>0) event.goto(1); + } + } + } + }, + midao:{ + audio:2, + //unique:true, + trigger:{global:'judge'}, + direct:true, + filter:function(event,player){ + return player.storage.yishe&&player.storage.yishe.length&&event.player.isAlive(); + }, + content:function(){ + "step 0" + var list=player.storage.yishe; + player.chooseButton([get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+get.translation(trigger.player.judging[0])+ + ','+get.prompt('midao'),list,'hidden'],function(button){ + var card=button.link; + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + var judging=_status.event.judging; + var result=trigger.judge(card)-trigger.judge(judging); + var attitude=get.attitude(player,trigger.player); + return result*attitude; + }).set('judging',trigger.player.judging[0]).set('filterButton',function(button){ + var player=_status.event.player; + var card=button.link; + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + if(mod!='unchanged') return mod; + return true; + }); + "step 1" + if(result.bool){ + event.forceDie=true; + player.respond(result.links,'midao','highlight','noOrdering'); + result.cards=result.links; + var card=result.cards[0]; + event.card=card; + player.storage.yishe.remove(card); + if(player.storage.yishe.length==0){ + player.unmarkSkill('yishe'); + if(player.hasSkill('yishe')){ + player.logSkill('yishe'); + player.recover(); + } + } + else player.markSkill('yishe'); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + if(trigger.player.judging[0].clone){ + trigger.player.judging[0].clone.classList.remove('thrownhighlight'); + game.broadcast(function(card){ + if(card.clone){ + card.clone.classList.remove('thrownhighlight'); + } + },trigger.player.judging[0]); + game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); + } + game.cardsDiscard(trigger.player.judging[0]); + trigger.player.judging[0]=result.cards[0]; + trigger.orderingCards.addArray(result.cards); + game.log(trigger.player,'的判定牌改为',card); + game.delay(2); + } + }, + ai:{ + rejudge:true, + tag:{ + rejudge:0.6 + } + } + }, + fengpo:{ + shaRelated:true, + audio:2, + trigger:{ + player:'useCardToPlayered', + }, + filter:function(event,player){ + if(event.targets.length!=1||!['sha','juedou'].contains(event.card.name)) return false; + var evt2=event.getParent('phaseUse'); + if(evt2.player!=player) return false; + return player.getHistory('useCard',function(evt){ + return ['sha','juedou'].contains(evt.card.name)&&evt.getParent('phaseUse')==evt2; + }).indexOf(event.getParent())==0; + }, + direct:true, + content:function(){ + 'step 0' + player.chooseControl('draw_card','加伤害','cancel2').set('prompt',get.prompt2('fengpo')); + 'step 1' + if(result.control&&result.control!='cancel2'){ + player.logSkill('fengpo',trigger.target); + var nd=trigger.target.countCards('h',{suit:'diamond'}); + if(result.control=='draw_card'){ + player.draw(nd); + } + else{ + var trigger2=trigger.getParent(); + if(typeof trigger2.baseDamage!='number'){ + trigger2.baseDamage=1; + } + trigger2.baseDamage+=nd; + } + } + } + }, + fengpo2:{ + trigger:{source:'damageBegin1'}, + filter:function(event){ + return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.notLink(); + }, + forced:true, + audio:false, + content:function(){ + if(typeof player.storage.fengpo=='number'){ + trigger.num+=player.storage.fengpo; + } + } + }, + fengpo3:{}, + biluan:{ + audio:2, + trigger:{player:'phaseDrawBegin1'}, + mark:true, + //unique:true, + intro:{ + content:function(storage){ + if(storage>0){ + return '其他角色计算与你的距离时+'+storage; + } + else if(storage<0){ + return '其他角色计算与你的距离时'+storage; + } + else{ + return '无距离变化'; + } + } + }, + init:function(player){ + if(typeof player.storage.biluan!='number') player.storage.biluan=0; + }, + check:function(event,player){ + if(player.countCards('h')>player.hp) return true; + if(player.hasJudge('lebu')) return true; + var ng=[]; + var players=game.filterPlayer(); + for(var i=0;i1){ + nai++; + } + } + } + return nai>=2; + }, + filter:function(event,player){ + return !event.numFixed&&game.hasPlayer(function(current){ + return current!=player&&get.distance(current,player)<=1; + }); + }, + content:function(){ + var ng=[]; + var players=game.filterPlayer(); + for(var i=0;i1; + }, + forced:true, + content:function(){ + 'step 0' + player.chooseTarget(function(card,player,target){ + return target==player||target==_status.event.source; + },true,'礼下:选择一个目标摸一张牌').set('ai',function(target){ + return player==target?1:0; + }).set('source',trigger.player); + 'step 1' + if(result.targets.length){ + result.targets[0].draw(); + player.line(result.targets[0],'green'); + } + player.storage.biluan--; + player.markSkill('biluan'); + game.addVideo('storage',player,['biluan',player.storage.biluan]); + } + }, + rebiluan2:{ + mark:true, + charlotte:true, + intro:{ + content:function(storage){ + if(storage>0){ + return '其他角色计算与你的距离时+'+storage; + } + else if(storage<0){ + return '其他角色计算与你的距离时'+storage; + } + else{ + return '无距离变化'; + } + } + }, + init:function(player){ + if(typeof player.storage.rebiluan2!='number') player.storage.rebiluan2=0; + }, + mod:{ + globalTo:function(from,to,distance){ + if(typeof to.storage.rebiluan2=='number'){ + return distance+to.storage.rebiluan2; + } + } + } + }, + rebiluan:{ + audio:'biluan', + trigger:{player:'phaseJieshuBegin'}, + checkx:function(player){ + var ng=Math.min(4,game.countPlayer()); + var nai=0; + for(var i=0;i1){ + nai++; + } + } + } + return nai>=2; + }, + filter:function(event,player){ + return player.countCards('he')&&game.hasPlayer(function(current){ + return current!=player&&get.distance(current,player)<=1; + }); + }, + direct:true, + content:function(){ + "step 0" + player.chooseToDiscard('he',get.prompt2('rebiluan')).set('logSkill','rebiluan').set('check',lib.skill.rebiluan.checkx(player)).set('ai',function(card){ + if(_status.event.check) return 6-get.value(card); + return 0; + }); + "step 1" + if(result.bool){ + player.addSkill('rebiluan2'); + var ng=Math.min(4,game.countPlayer()); + player.$damagepop(ng,'unknownx'); + player.storage.rebiluan2+=ng; + player.markSkill('rebiluan2'); + game.addVideo('storage',player,['rebiluan2',player.storage.rebiluan2]); + } + }, + }, + relixia:{ + audio:'lixia', + trigger:{global:'phaseJieshuBegin'}, + filter:function(event,player){ + return event.player.isAlive()&&event.player!=player&&!player.inRangeOf(event.player); + }, + forced:true, + content:function(){ + 'step 0' + if(trigger.player.isDead()){ + event._result={bool:true,links:[0]}; + return; + } + event.videoId=lib.status.videoId++; + var func=function(card,id,bool){ + var list=[ + '令自己摸一张牌', + '令XXX摸两张牌', + '令XXX回复1点体力', + ]; + var choiceList=ui.create.dialog('【礼下】:请选择一至两项','forcebutton'); + choiceList.videoId=id; + for(var i=0;i0&&get.attitude(player,event.player)<0; + }, + prompt:function(event){ + return get.translation(event.source)+'即将对'+get.translation(event.player)+'造成伤害,'+get.prompt('fuji'); + }, + logTarget:'source', + content:function(){ + trigger.source.judge().callback=lib.skill.fuji.callback; + }, + callback:function(){ + var evt=event.getParent(2); + if(event.judgeResult.color=='black'){ + //game.cardsDiscard(card); + evt._trigger.num++; + } + else{ + evt._trigger.source.gain(card,'gain2'); + } + }, + }, + fulu:{ + trigger:{player:'useCard1'}, + filter:function(event,player){ + if(event.card.name=='sha'&&!event.card.nature) return true; + }, + audio:true, + check:function(event,player){ + var eff=0; + for(var i=0;i=0; + }, + content:function(){ + trigger.card.nature='thunder'; + if(get.itemtype(trigger.card)=='card'){ + var next=game.createEvent('fulu_clear'); + next.card=trigger.card; + event.next.remove(next); + trigger.after.push(next); + next.setContent(function(){ + delete card.nature; + }); + } + } + }, + guiming:{ + unique:true, + zhuSkill:true, + }, + canshi:{ + audio:2, + trigger:{player:'phaseDrawBegin1'}, + check:function(event,player){ + var num=game.countPlayer(function(current){ + if(player.hasZhuSkill('guiming')&¤t.group=='wu') return true; + return current.isDamaged(); + }); + return num>3; + }, + prompt:function(event,player){ + var num=game.countPlayer(function(current){ + if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true; + return current.isDamaged(); + }); + return '残蚀:是否改为摸'+get.cnNumber(num)+'张牌?'; + }, + filter:function(event,player){ + return !event.numFixed; + }, + content:function(){ + trigger.changeToZero(); + var num=game.countPlayer(function(current){ + if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true; + return current.isDamaged(); + }); + if(num>0){ + player.draw(num); + } + player.addTempSkill('canshi2'); + } + }, + canshi2:{ + trigger:{player:'useCard'}, + forced:true, + filter:function(event,player){ + if(player.countCards('he')==0) return false; + var type=get.type(event.card,'trick'); + return type=='basic'||type=='trick'; + }, + autodelay:true, + content:function(){ + player.chooseToDiscard(true,'he'); + } + }, + chouhai:{ + audio:2, + trigger:{player:'damageBegin3'}, + forced:true, + check:function(){ + return false; + }, + filter:function(event,player){ + return player.countCards('h')==0; + }, + content:function(){ + trigger.num++; + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'damage')&&target.countCards('h')==0) return [1,-2]; + } + } + } + }, + recanshi:{ + audio:'canshi', + trigger:{player:'phaseDrawBegin2'}, + check:function(event,player){ + if(player.skipList.contains('phaseUse')||!player.countCards('h',function(card){ + return get.type(card,'trick')=='trick'&&player.hasUseTarget(card); + })) return true; + var num=game.countPlayer(function(current){ + if(player.hasZhuSkill('guiming')&¤t.group=='wu') return true; + return current.isDamaged(); + }); + return num>1; + }, + prompt:function(event,player){ + var num=game.countPlayer(function(current){ + if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true; + return current.isDamaged(); + }); + return '残蚀:是否多摸'+get.cnNumber(num)+'张牌?'; + }, + filter:function(event,player){ + return !event.numFixed&&game.hasPlayer(function(current){ + if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true; + return current.isDamaged(); + }); + }, + content:function(){ + var num=game.countPlayer(function(current){ + if(player.hasZhuSkill('guiming')&¤t.group=='wu'&¤t!=player) return true; + return current.isDamaged(); + }); + if(num>0){ + trigger.num+=num; + } + player.addTempSkill('recanshi2'); + } + }, + recanshi2:{ + trigger:{player:'useCard'}, + forced:true, + filter:function(event,player){ + if(player.countCards('he')==0) return false; + if(event.card.name=='sha') return true; + var type=get.type(event.card,'trick'); + return type=='trick'; + }, + autodelay:true, + content:function(){ + player.chooseToDiscard(true,'he'); + } + }, + rechouhai:{ + audio:'chouhai', + trigger:{player:'damageBegin3'}, + forced:true, + check:function(){ + return false; + }, + filter:function(event,player){ + return event.card&&event.card.name=='sha'&&player.countCards('h')==0; + }, + content:function(){ + trigger.num++; + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(card.name=='sha'&&target.countCards('h')==0) return [1,-2]; + } + } + } + }, + kunfen:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + direct:true, + content:function(){ + "step 0" + if(player.storage.kunfen|| + (get.mode()=='guozhan'&&player.hiddenSkills.contains('kunfen'))){ + if(!player.storage.kunfen){ + event.skillHidden=true; + } + player.chooseBool(get.prompt2('kunfen')).set('ai',function(){ + var player=_status.event.player; + if(player.hp>3) return true; + if(player.hp==3&&player.countCards('h')<3) return true; + if(player.hp==2&&player.countCards('h')==0) return true; + return false; + }); + } + else{ + event.forced=true; + } + "step 1" + if(event.forced||result.bool){ + player.logSkill('kunfen'); + player.loseHp(); + } + else{ + event.finish(); + } + "step 2" + player.draw(2); + }, + ai:{ + threaten:1.5 + } + }, + fengliang:{ + skillAnimation:true, + animationColor:'thunder', + unique:true, + juexingji:true, + audio:2, + derivation:'retiaoxin', + trigger:{player:'dying'}, + //priority:10, + forced:true, + filter:function(event,player){ + return !player.storage.kunfen; + }, + content:function(){ + "step 0" + player.loseMaxHp(); + "step 1" + if(player.hp<2){ + player.recover(2-player.hp); + } + "step 2" + player.addSkill('retiaoxin'); + player.storage.kunfen=true; + player.awakenSkill('fengliang'); + }, + }, + zhuiji:{ + mod:{ + globalFrom:function(from,to){ + if(from.hp>=to.hp) return -Infinity; + } + } + }, + oldcihuai:{ + audio:'cihuai', + trigger:{player:'phaseUseBegin'}, + filter:function(event,player){ + return player.countCards('h')>0; + }, + check:function(event,player){ + return !player.countCards('h','sha'); + }, + content:function(){ + player.showHandcards(); + if(!player.countCards('h','sha')) player.addTempSkill('oldcihuai2'); + }, + }, + oldcihuai2:{ + group:'oldcihuai3', + prompt:'视为使用一张杀', + enable:'chooseToUse', + viewAs:{name:'sha',isCard:true}, + filterCard:function(){return false}, + selectCard:-1, + ai:{ + presha:true, + respondSha:true, + }, + }, + oldcihuai3:{ + trigger:{ + player:['gainEnd','loseEnd'], + global:'die', + }, + silent:true, + firstDo:true, + filter:function(event,player){ + if(event.name=='lose') return event.hs.length>0; + return true; + }, + content:function(){ + player.removeSkill('oldcihuai2'); + }, + }, + cihuai:{ + trigger:{player:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + return player.countCards('h','sha')==0; + }, + content:function(){ + "step 0" + player.chooseTarget(get.prompt2('cihuai'),function(card,player,target){ + return player.canUse({name:'sha',isCard:true},target); + }).set('ai',function(target){ + var player=_status.event.player; + return get.effect(target,{name:'sha',isCard:true},player,player); + }); + "step 1" + if(result.bool){ + player.logSkill('cihuai'); + player.showHandcards(); + player.useCard({name:'sha',isCard:true},result.targets); + } + }, + ai:{ + expose:0.2, + } + }, + jilei:{ + trigger:{player:'damageEnd'}, + //priority:9, + audio:2, + direct:true, + filter:function(event){ + return event&&event.source; + }, + content:function(){ + 'step 0' + player.chooseControl('basic','trick','equip','cancel2',function(){ + var source=_status.event.source; + if(get.attitude(_status.event.player,source)>0) return 'cancel2'; + if(!source.storage.jilei2||!source.storage.jilei2.contains('basic')) return 'basic'; + if(_status.currentPhase!=source) return 'trick'; + if(lib.filter.cardUsable({name:'sha'},source)&&source.countCards('h')>=2) return 'basic'; + return 'trick'; + }).set('prompt',get.prompt2('jilei',trigger.source)).set('source',trigger.source); + 'step 1' + if(result.control!='cancel2'){ + player.logSkill('jilei',trigger.source); + player.popup(get.translation(result.control)+'牌'); + trigger.source.addTempSkill('jilei2',{player:'phaseBegin'}); + trigger.source.storage.jilei2.add(result.control); + trigger.source.updateMarks('jilei2'); + } + }, + ai:{ + maixie_defend:true, + threaten:0.7 + } + }, + jilei2:{ + unique:true, + charlotte:true, + intro:{ + content:function(storage){ + return '不能使用、打出或弃置'+get.translation(storage)+'牌'; + } + }, + init:function(player,skill){ + if(!player.storage[skill]) player.storage[skill]=[]; + }, + mark:true, + onremove:true, + mod:{ + cardDiscardable:function(card,player){ + if(player.storage.jilei2.contains(get.type(card,'trick'))) return false; + }, + cardEnabled:function(card,player){ + if(player.storage.jilei2.contains(get.type(card,'trick'))) return false; + }, + cardUsable:function(card,player){ + if(player.storage.jilei2.contains(get.type(card,'trick'))) return false; + }, + cardRespondable:function(card,player){ + if(player.storage.jilei2.contains(get.type(card,'trick'))) return false; + }, + cardSavable:function(card,player){ + if(player.storage.jilei2.contains(get.type(card,'trick'))) return false; + }, + }, + }, + danlao:{ + audio:2, + filter:function(event,player){ + return (event.card.name=='sha'||get.type(event.card)=='trick')&&event.targets&&event.targets.length>1; + }, + check:function(event,player){ + return event.getParent().excluded.contains(player)||get.tag(event.card,'multineg')||get.effect(player,event.card,event.player,player)<=0; + }, + trigger:{target:'useCardToTargeted'}, + content:function(){ + trigger.getParent().excluded.add(player); + player.draw(); + }, + ai:{ + effect:{ + target:function(card){ + if(get.type(card)!='trick') return; + if(card.name=='tiesuo') return [0,0]; + if(card.name=='yihuajiemu') return [0,1]; + if(get.tag(card,'multineg')) return [0,2]; + } + } + } + }, + taichen:{ + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return player.canUse('sha',target); + }, + content:function(){ + "step 0" + player.loseHp(); + "step 1" + player.useCard({name:'sha',isCard:true},target,false); + }, + ai:{ + order:1, + result:{ + target:function(player,target){ + if(player.hp>2&&player.hp>target.hp&&target.countCards('he')<4){ + return get.effect(target,{name:'sha'},player,target); + } + return 0; + } + } + } + }, + xinmanjuan:{ + audio:'manjuan', + forced:true, + priority:15, + trigger:{player:'gainAfter'}, + filter:function(event,player){ + return event.type!='xinmanjuan'; + }, + content:function(){ + "step 0" + player.lose(trigger.cards,ui.discardPile,'visible'); + player.$throw(trigger.cards,1000); + game.log(player,'将',trigger.cards,'置入了弃牌堆') + "step 1" + event.cards=trigger.cards.slice(0); + if(_status.currentPhase!=player) event.finish(); + "step 2" + event.card=event.cards.shift(); + event.togain=[]; + var number=get.number(event.card); + for(var i=0;imaxval){ + maxval=tempval; + } + } + maxval+=cards.length-1; + var next=player.chooseToDiscard('he',{suit:suits}); + next.set('ai',function(card){ + return _status.event.maxval-get.value(card); + }); + next.set('maxval',maxval); + next.set('dialog',[get.prompt(event.name),'hidden',cards]) + next.logSkill=event.name; + event.cards=cards; + } + "step 2" + if(result.bool){ + player.gain(event.cards,'gain2','log'); + } + }, + ai:{ + threaten:1.3 + } + }, + zuixiang:{ + skillAnimation:true, + animationColor:'gray', + audio:true, + unique:true, + mark:true, + trigger:{player:'phaseZhunbeiBegin'}, + //priority:10, + filter:function(event,player){ + if(player.storage.zuixiang) return false; + return true; + }, + check:function(event,player){ + return player.countCards('h')0; + }, + filterCard:{name:'sha'}, + check:function(card){return 6-get.value(card)}, + content:function(){ + 'step 0' + var list=lib.group.slice(0); + list.remove('shen'); + if(player.storage.xiemu2) list.removeArray(player.storage.xiemu2); + var list2=list.slice(0); + list2.sort(function(a,b){ + return lib.skill.xiemu.count(b)-lib.skill.xiemu.count(a); + }); + player.chooseControl(list).set('prompt','请选择一个势力').ai=function(){return list2[0]}; + 'step 1' + player.popup(result.control+2,get.groupnature(result.control)); + game.log(player,'选择了','#g'+get.translation(result.control+2)); + player.addTempSkill('xiemu2',{player:'phaseBegin'}); + player.storage.xiemu2.add(result.control); + player.updateMarks('xiemu2'); + }, + ai:{ + order:1, + result:{player:1}, + }, + count:function(group){ + var player=_status.event.player; + return game.countPlayer(function(current){ + return current!=player&¤t.group==group&&get.attitude(current,player)<0; + }); + }, + }, + xiemu2:{ + onremove:true, + mark:true, + forced:true, + audio:'xiemu', + intro:{ + content:function(storage){ + return '已指定'+get.translation(storage)+'势力'; + }, + }, + trigger:{ + target:'useCardToTargeted' + }, + init:function(player){ + if(!player.storage.xiemu2) player.storage.xiemu2=[]; + }, + filter:function(event,player){ + if(!player.storage.xiemu2) return false; + if(get.color(event.card)!='black') return false; + if(!event.player) return false; + if(event.player==player||!player.storage.xiemu2.contains(event.player.group)) return false; + return true; + }, + content:function(){ + player.draw(2); + }, + }, + oldxiemu:{ + audio:'xiemu', + trigger:{target:'useCardToTargeted'}, + filter:function(event,player){ + if(get.color(event.card)!='black') return false; + if(!event.player) return false; + if(event.player==player) return false; + if(get.mode()!='guozhan') return false; + return player.countCards('h','sha')>0; + }, + direct:true, + content:function(){ + "step 0" + var next=player.chooseToDiscard('协穆:是否弃置一张杀并摸两张牌?',{name:'sha'}); + next.set('ai',function(card){ + return 9-get.value(card); + }); + next.logSkill='xiemu'; + "step 1" + if(result.bool){ + player.draw(2); + } + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(get.color(card)=='black'&&target.countCards('h')>0){ + return [1,0.5]; + } + } + } + } + }, + spmengjin:{ + trigger:{player:'shaBegin'}, + filter:function(event,player){ + return event.target.countCards('he')>0; + }, + direct:true, + content:function(){ + "step 0" + var att=get.attitude(player,trigger.target); + player.choosePlayerCard(get.prompt('spmengjin',trigger.target),'he',trigger.target).ai=function(button){ + var val=get.buttonValue(button); + if(att>0) return -val; + return val; + }; + "step 1" + if(result.bool){ + trigger.target.discard(result.links); + player.logSkill('spmengjin',trigger.target); + trigger.target.addTempSkill('mengjin2','shaAfter'); + } + }, + ai:{ + expose:0.2 + } + }, + fenxun_old:{ + audio:2, + trigger:{player:'shaBefore'}, + direct:true, + filter:function(event,player){ + return event.targets.length==1; + }, + position:'he', + content:function(){ + "step 0" + player.chooseCardTarget({ + filterCard:lib.filter.cardDiscardable, + filterTarget:function(card,player,target){ + var trigger=_status.event.getTrigger(); + return lib.filter.targetEnabled(trigger.card,player,target)&&target!=trigger.targets[0]; + }, + ai1:function(card){ + return 6-get.value(card); + }, + ai2:function(target){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + return get.effect(target,trigger.card,player,player); + }, + prompt:get.prompt2('fenxun') + }); + "step 1" + if(result.bool){ + player.discard(result.cards); + trigger.targets.push(result.targets[0]); + player.logSkill('fenxun',result.targets); + } + } + }, + rezhoufu:{ + audio:'zhoufu', + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('he')>0; + }, + filterCard:true, + filterTarget:function(card,player,target){ + return target!=player&&!target.getStorage('rezhoufu2').length; + }, + check:function(card){ + return 6-get.value(card) + }, + position:'he', + discard:false, + toStorage:true, + prepare:'give', + content:function(){ + if(!target.storage.rezhoufu2_markcount) target.storage.rezhoufu2_markcount=0; + target.markAuto('rezhoufu2',cards); + }, + ai:{ + order:1, + result:{ + target:-1, + }, + }, + group:['rezhoufu_judge','rezhoufu_losehp'], + subSkill:{ + judge:{ + audio:'zhoufu', + trigger:{global:'judgeBefore'}, + forced:true, + filter:function(event,player){ + return !event.directresult&&event.player.getStorage('rezhoufu2').length; + }, + logTarget:'player', + content:function(){ + var cards=[trigger.player.getStorage('rezhoufu2')[0]]; + trigger.directresult=cards[0]; + trigger.player.unmarkAuto('rezhoufu2',cards); + }, + }, + losehp:{ + audio:'zhoufu', + trigger:{global:'phaseEnd'}, + forced:true, + filter:function(event,player){ + return event.player.hasSkill('rezhoufu3')&&event.player.isAlive(); + }, + logTarget:'player', + content:function(){ + trigger.player.loseHp(); + }, + }, + }, + }, + rezhoufu2:{ + intro:{ + content:'cards', + onunmark:function(storage,player){ + if(storage&&storage.length){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + storage.length==0; + } + player.addTempSkill('rezhoufu3'); + delete player.storage.rezhoufu2_markcount; + }, + }, + }, + rezhoufu3:{}, + reyingbing:{ + audio:'yingbin', + trigger:{global:'useCard'}, + forced:true, + filter:function(event,player){ + var cards=event.player.getStorage('rezhoufu2'); + return cards.length&&get.color(cards[0])==get.color(event.card); + }, + logTarget:'player', + content:function(){ + 'step 0' + player.draw(); + 'step 1' + trigger.player.storage.rezhoufu2_markcount++; + if(trigger.player.storage.rezhoufu2_markcount>=2){ + var cards=trigger.player.getStorage('rezhoufu2'); + trigger.player.$throw(cards); + game.delayx(); + player.gain(cards,'gain2','log'); + cards.length=0; + trigger.player.unmarkSkill('rezhoufu2'); + } + else trigger.player.markSkill('rezhoufu2'); + }, + }, + zhoufu:{ + audio:2, + enable:'phaseUse', + usable:1, + filterCard:true, + filterTarget:function(card,player,target){ + return player!=target&&!target.hasSkill('zhoufu2'); + }, + prepare:'throw', + discard:false, + //lose:false, + visible:true, + toStorage:true, + content:function(){ + //player.lose(cards,ui.special,'toStorage'); + target.$gain2(cards); + target.storage.zhoufu2=cards[0]; + target.addSkill('zhoufu2'); + target.storage.zhoufu3=player; + //ui.special.appendChild(cards[0]); + target.syncStorage('zhoufu2'); + }, + check:function(card){ + return 6-get.value(card) + }, + ai:{ + expose:0.1, + order:1, + result:{ + target:-1 + } + } + }, + zhoufu2:{ + trigger:{player:'judgeBefore'}, + forced:true, + //priority:10, + mark:'card', + filter:function(event){ + return !event.directresult; + }, + content:function(){ + "step 0" + trigger.directresult=player.storage.zhoufu2; + delete player.storage.zhoufu2; + player.removeSkill('zhoufu2'); + delete player.storage.zhoufu2_markcount; + if(player.storage.zhoufu3.isIn()){ + player.storage.zhoufu3.line(player,'green'); + } + "step 1" + player.addTempSkill('zhoufu3'); + }, + intro:{ + content:'card', + onunmark:function(storage,player){ + if(storage){ + player.$throw(storage,1000); + game.cardsDiscard(storage); + game.log(storage,'被置入了弃牌堆'); + } + delete player.storage.zhoufu2; + }, + } + }, + zhoufu3:{ + trigger:{global:'phaseEnd'}, + silent:true, + content:function(){ + if(player.storage.zhoufu3.isIn()){ + player.storage.zhoufu3.logSkill('zhoufu',player); + player.loseHp(); + } + delete player.storage.zhoufu3; + }, + onremove:true + }, + yingbin:{ + audio:2, + trigger:{global:'useCard'}, + filter:function(event,player){ + return event.player.hasSkill('zhoufu2')&&event.player.storage.zhoufu3==player&& + get.suit(event.player.storage.zhoufu2)==get.suit(event.card); + }, + forced:true, + autodelay:true, + content:function(){ + player.draw(); + if(trigger.player.storage.zhoufu2_markcount==1){ + trigger.player.removeSkill('zhoufu2'); + delete trigger.player.storage.zhoufu2; + delete trigger.player.storage.zhoufu2_markcount; + delete trigger.player.storage.zhoufu3; + } + else{ + trigger.player.storage.zhoufu2_markcount=1; + trigger.player.updateMarks(); + } + } + }, + kuiwei:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + check:function(event,player){ + if(player.isTurnedOver()) return true; + var num=game.countPlayer(function(current){ + return current.getEquip(1); + }); + return num>1; + }, + content:function(){ + "step 0" + player.turnOver(); + "step 1" + var num=game.countPlayer(function(current){ + return current.getEquip(1); + }); + player.draw(2+num); + player.addSkill('kuiwei2'); + }, + ai:{ + effect:{ + target:function(card){ + if(card.name=='guiyoujie') return [0,2]; + } + } + } + }, + kuiwei2:{ + trigger:{player:'phaseDrawBegin'}, + forced:true, + audio:false, + content:function(){ + var num=game.countPlayer(function(current){ + return current.getEquip(1); + }); + if(num>=player.countCards('he')){ + player.discard(player.getCards('he')); + } + else if(num){ + player.chooseToDiscard('he',num,true); + } + player.removeSkill('kuiwei2'); + } + }, + yanzheng:{ + enable:'chooseToUse', + audio:2, + filter:function(event,player){ + return player.hp0; + }, + viewAsFilter:function(player){ + return player.hp0; + }, + filterCard:true, + position:'e', + viewAs:{name:'wuxie'}, + prompt:'将一张装备区内的牌当无懈可击使用', + check:function(card){return 8-get.equipValue(card)}, + threaten:1.2 + }, + tongji:{ + global:'tongji_disable', + audio:2, + trigger:{global:"useCard1"}, + forced:true, + filter:function (event,player){ + return event.targets.contains(player)&&player!=event.player&&event.card.name=='sha'&&player.hp=0; + }, + content:function(){ + "step 0" + player.draw(); + if(trigger.target!=player){ + player.chooseCard(true,'he','交给'+get.translation(trigger.target)+'一张牌').set('ai',function(card){ + if(get.position(card)=='e') return -1; + if(card.name=='shan') return 1; + if(get.type(card)=='equip') return 0.5; + return 0; + }); + } + else{ + event.finish(); + } + "step 1" + trigger.target.gain(result.cards,player,'give'); + game.delay(); + event.card=result.cards[0]; + "step 2" + if(trigger.target.getCards('h').contains(card)&&get.type(card)=='equip'){ + trigger.target.chooseUseTarget(card); + } + }, + ai:{ + threaten:1.1 + } + }, + liangzhu:{ + audio:2, + trigger:{global:'recoverAfter'}, + direct:true, + filter:function(event,player){ + return event.player.isPhaseUsing(); + }, + content:function(){ + 'step 0' + if(player==trigger.player){ + player.chooseControl('摸一张','摸两张','cancel2',function(){ + return '摸两张'; + }).set('prompt',get.prompt2('liangzhu')); + event.single=true; + } + else{ + player.chooseTarget(get.prompt2('liangzhu'),function(card,player,target){ + return target==_status.event.player||target==_status.event.target; + }).set('target',trigger.player).set('ai',function(target){ + var player=_status.event.player; + if(player==target) return 1; + return get.attitude(player,target)-1.5; + }); + } + 'step 1' + if(event.single){ + if(result.control!='cancel2'){ + player.logSkill('liangzhu',player); + if(result.control=='摸一张'){ + player.draw(); + } + else{ + player.draw(2); + if(!player.storage.liangzhu) player.storage.liangzhu=[]; + player.storage.liangzhu.add(player); + } + } + } + else if(result.bool){ + var target=result.targets[0]; + player.logSkill('liangzhu',target); + if(target==player){ + target.draw(); + } + else{ + target.draw(2); + if(target.storage.liangzhu){ + target.storage.liangzhu.add(player); + } + else{ + target.storage.liangzhu=[player]; + } + } + } + }, + ai:{ + expose:0.1 + } + }, + fanxiang:{ + skillAnimation:true, + animationColor:'fire', + audio:2, + unique:true, + juexingji:true, + forceunique:true, + derivation:'xiaoji', + trigger:{player:'phaseZhunbeiBegin'}, + filter:function(event,player){ + if(player.storage.fanxiang) return false; + return game.hasPlayer(function(current){ + return current.storage.liangzhu&¤t.storage.liangzhu.contains(player)&¤t.isDamaged(); + }); + }, + forced:true, + content:function(){ + player.storage.fanxiang=true; + player.gainMaxHp(); + player.recover(); + player.removeSkill('liangzhu'); + player.addSkill('xiaoji'); + player.awakenSkill('fanxiang'); + }, + }, + mingshi:{ + audio:2, + trigger:{player:'damageBegin3'}, + direct:true, + filter:function(event,player){ + return event.source&&event.source.hp>player.hp; + }, + content:function(){ + "step 0" + var next=player.chooseToDiscard(get.prompt2('mingshi'),{color:'black'}); + next.set('ai',function(card){ + return 9-get.value(card); + }); + next.set('logSkill','mingshi'); + "step 1" + if(result.bool){ + trigger.num--; + } + }, + ai:{ + threaten:0.8 + } + }, + lirang:{ + audio:2, + trigger:{player:'loseAfter'}, + filter:function(event,player){ + if(event.type!='discard') return false; + for(var i=0;i1; + }); + } + player.chooseCardButton(get.prompt('lirang'),event.cards,[1,event.cards.length]).set('ai',function(button){ + if(!_status.event.goon||ui.selected.buttons.length) return 0; + if(button.link.name=='du') return 2; + return 1; + }).set('goon',goon); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + event.togive=result.links.slice(0); + player.chooseTarget('将'+get.translation(result.links)+'交给一名角色',true,function(card,player,target){ + return target!=player; + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(_status.event.enemy){ + return -att; + } + else{ + if(att>2) return att/Math.sqrt(1+target.countCards('h')); + return att/Math.sqrt(1+target.countCards('h'))/5; + } + }).set('enemy',get.value(event.togive[0],player,'raw')<0); + } + else{ + //game.cardsDiscard(event.cards); + event.finish(); + } + "step 3" + if(result.bool){ + if(!event.logged){ + player.logSkill('lirang',result.targets); + event.logged=true; + } + else player.line(result.targets,'green'); + for(var i=0;i0; + }, + content:function(){ + trigger.target.discardPlayerCard(player,true); + } + }, + shenxian:{ + audio:2, + trigger:{global:'loseAfter'}, + filter:function(event,player){ + if(event.type!='discard'||event.player==player||_status.currentPhase==player) return false; + if(player.hasSkill('shenxian2')) return false; + for(var i=0;iplayer.storage.qiangwu) return num+2; + }, + targetInRange:function(card,player){ + if(_status.currentPhase==player&&card.name=='sha'&&card.numberplayer.storage.qiangwu) return Infinity; + } + }, + trigger:{player:'useCard1'}, + filter:function(event,player){ + if(_status.currentPhase==player&&event.card.name=='sha'&& + event.card.number>player.storage.qiangwu&&event.addCount!==false) return true; + return false; + }, + forced:true, + popup:false, + firstDo:true, + content:function(){ + trigger.addCount=false; + if(player.stat[player.stat.length-1].card.sha>0){ + player.stat[player.stat.length-1].card.sha--; + } + }, + }, + zhendu:{ + audio:2, + trigger:{global:'phaseUseBegin'}, + filter:function(event,player){ + return /*(get.mode()!='guozhan'||event.player!=player)&&*/player.countCards('h')>0; + }, + direct:true, + content:function(){ + "step 0" + var nono=(Math.abs(get.attitude(player,trigger.player))<3); + if(player==trigger.player||get.damageEffect(trigger.player,player,player)<=0){ + nono=true + } + else if(trigger.player.hp>2){ + nono=true; + } + else if(trigger.player.hp>1&&player.countCards('h')<3){ + nono=true; + } + else if(trigger.player.canUse('sha',player)&&!player.countCards('h','shan')&&trigger.player.countCards('h')>=3){ + nono=true; + } + var next=player.chooseToDiscard(get.prompt2('zhendu',trigger.player)); + next.set('ai',function(card){ + if(_status.event.nono) return -1; + return 7-get.useful(card); + }); + next.set('logSkill',['zhendu',trigger.player]); + next.set('nono',nono); + "step 1" + if(result.bool){ + trigger.player.chooseUseTarget({name:'jiu'},true,'noTargetDelay','nodelayx'); + } + else{ + event.finish(); + } + "step 2" + if(result.bool&&trigger.player!=player) trigger.player.damage(); + }, + ai:{ + threaten:2, + expose:0.3 + } + }, + qiluan:{ + audio:'qiluan2', + //group:'qiluan_draw', + //subfrequent:['draw'], + trigger:{global:'phaseEnd'}, + frequent:true, + filter:function(event,player){ + return game.hasPlayer2(function(current){ + return current.getStat('kill')>0 + }); + }, + prompt:function(event,player){ + var num=game.countPlayer2(function(current){ + return (current.getStat('kill')||0)*(current==player?3:1); + }); + return get.prompt('qiluan')+'(可摸'+get.cnNumber(num)+'张牌)'; + }, + content:function(){ + //if(get.mode()=='guozhan'){ + // player.draw(3); + //} + //else{ + player.draw(game.countPlayer2(function(current){ + return (current.getStat('kill')||0)*(current==player?3:1); + })); + //} + }, + subSkill:{ + draw:{ + trigger:{global:'dieAfter'}, + frequent:true, + filter:function(event,player){ + return /*get.mode()!='guozhan'&&*/player!=event.source; + }, + content:function(){player.draw()}, + }, + }, + }, + qiluan2:{ + audio:2, + }, + zniaoxiang:{ + shaRelated:true, + audio:2, + trigger:{player:'useCardToPlayered'}, + forced:true, + filter:function(event,player){ + return event.card.name=='sha'&&!event.getParent().directHit.contains(event.target); + }, + //priority:-1, + logTarget:'target', + content:function(){ + var id=trigger.target.playerid; + var map=trigger.getParent().customArgs; + if(!map[id]) map[id]={}; + if(typeof map[id].shanRequired=='number'){ + map[id].shanRequired++; + } + else{ + map[id].shanRequired=2; + } + } + }, + shangyi:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return player!=target&&target.countCards('h'); + }, + content:function(){ + "step 0" + player.chooseCardButton(target,target.getCards('h')).set('filterButton',function(button){ + return get.color(button.link)=='black'; + }); + "step 1" + if(result.bool){ + target.discard(result.links[0]); + } + }, + ai:{ + order:11, + result:{ + target:function(player,target){ + return -target.countCards('h'); + } + }, + threaten:1.1 + }, + }, + shengxi:{ + trigger:{player:'phaseDiscardBegin'}, + frequent:true, + filter:function(event,player){ + return !player.getStat('damage'); + }, + content:function(){ + player.draw(2); + }, + audio:2, + audioname:['liushan'] + }, + shoucheng:{ + trigger:{global:'loseAfter'}, + audio:2, + check:function(event,player){ + return get.attitude(player,event.player)>0; + }, + filter:function(event,player){ + if(event.player==player||event.player.isDead()||event.player.countCards('h')) return false; + if(_status.currentPhase==event.player) return false; + return event.hs&&event.hs.length>0; + }, + logTarget:'player', + content:function(){ + trigger.player.draw(); + }, + ai:{ + threaten:1.3, + expose:0.2, + noh:true, + } + }, + hengzheng:{ + audio:2, + trigger:{player:'phaseDrawBegin1'}, + filter:function(event,player){ + return !event.numFixed&&(player.hp==1||player.countCards('h')==0); + }, + check:function(event,player){ + var num=game.countPlayer(function(current){ + if(current.countCards('he')&¤t!=player&&get.attitude(player,current)<=0){ + return true; + } + if(current.countCards('j')&¤t!=player&&get.attitude(player,current)>0){ + return true; + } + }); + return num>=2; + }, + content:function(){ + "step 0" + var targets=game.filterPlayer(); + targets.remove(player); + targets.sort(lib.sort.seat); + event.targets=targets; + event.num=0; + trigger.changeToZero(); + player.line(targets,'green'); + "step 1" + if(num【勇决】
    每当其他角色于回合内使用一张杀,若目标不是你,你可以获得之,每回合限一次
    '); + "step 1" + player.turnOver(); + }, + intro:{ + content:'limited' + }, + ai:{ + order:4, + result:{ + target:function(player,target){ + if(target.isMin()) return 0; + if(player.hp>1){ + if(game.phaseNumber2) return 0; + if(get.attitude(player,target)<5) return 0; + } + if(get.attitude(player,target)<5) return 0; + if(target.hp==1&&target.maxHp>2) return 0.2; + if(target==game.me) return 1.2; + return 1; + } + }, + expose:0.5, + threaten:1.5 + } + }, + fenming:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + check:function(event,player){ + var num=game.countPlayer(function(current){ + if(current.isLinked()&¤t.countCards('he')){ + return get.attitude(player,current); + } + }); + return num<0; + }, + filter:function(event,player){ + return player.isLinked(); + }, + content:function(){ + "step 0" + event.targets=game.filterPlayer(function(current){ + if(current.isLinked()&¤t.countCards('he')){ + return true; + } + }); + event.num=0; + event.targets.sort(lib.sort.seat); + "step 1" + if(event.num=0); + trigger.player.chooseToDiscard('he','弃置一张装备牌并令'+get.translation(player)+'摸一张牌,或受到一点伤害',{type:'equip'}).set('ai',function(card){ + if(_status.event.nono){ + return 0; + } + if(_status.event.player.hp==1) return 10-get.value(card); + return 9-get.value(card); + }).set('nono',nono); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + player.draw(); + } + else{ + trigger.player.damage(); + } + }, + ai:{ + expose:0.3, + threaten:1.3 + } + }, + suishi:{ + audio:2, + trigger:{global:'dying'}, + forced:true, + popup:false, + //priority:12, + check:function(){ + return false; + }, + filter:function(event,player){ + return event.player!=player&&event.parent.name=='damage'&&event.parent.source&&event.parent.source!=event.player; + }, + content:function(){ + 'step 0' + var str; + if(trigger.parent.source==player){ + str='随势:是否摸一张牌?'; + } + else{ + str='随势:是否令'+get.translation(player)+'摸一张牌?' + } + trigger.parent.source.chooseBool(str).set('ai',function(){ + return get.attitude(_status.event.player,_status.event.target)>0; + }).set('target',player); + 'step 1' + if(result.bool){ + player.logSkill('suishi'); + trigger.parent.source.line(player,'green'); + player.draw(); + } + }, + group:'suishi2' + }, + suishi2:{ + trigger:{global:'dieAfter'}, + forced:true, + popup:false, + check:function(){ + return false; + }, + filter:function(event,player){ + return event.player!=player&&event.source&&event.source!=player&&event.source!=event.player; + }, + content:function(){ + 'step 0' + var str; + if(trigger.source==player){ + str='随势:是否流失一点体力?'; + } + else{ + str='随势:是否令'+get.translation(player)+'流失一点体力?' + } + trigger.source.chooseBool(str).set('ai',function(){ + return get.attitude(_status.event.player,_status.event.target)<0; + }).set('target',player); + 'step 1' + if(result.bool){ + player.logSkill('suishi'); + trigger.source.line(player,'green'); + player.loseHp(); + } + }, + }, + sijian:{ + trigger:{player:'loseAfter'}, + direct:true, + audio:2, + filter:function(event,player){ + if(player.countCards('h')) return false; + return event.hs&&event.hs.length>0; + }, + content:function(){ + "step 0" + player.chooseTarget(get.prompt('sijian'),'弃置一名其他角色的一张牌',function(card,player,target){ + return player!=target&&target.countCards('he')>0; + }).set('ai',function(target){ + return -get.attitude(_status.event.player,target); + }); + "step 1" + if(result.bool){ + player.logSkill('sijian',result.targets); + event.target=result.targets[0]; + player.discardPlayerCard(event.target,true); + } + else{ + event.finish(); + } + }, + ai:{ + expose:0.2, + } + }, + quji:{ + audio:2, + enable:'phaseUse', + usable:1, + position:'he', + filterCard:true, + selectCard:function(){ + var player=_status.event.player; + return player.getDamagedHp(); + }, + filterTarget:function(card,player,target){ + return target.hp-1; + if(num==2) return att>0; + return att>1; + } + return false; + }, + content:function(){ + "step 0" + event.target=player; + event.player=trigger.player; + event.player.chooseBool('是否对'+get.translation(event.target)+'发动【郡兵】?',event.player==event.target?'摸一张牌':'摸一张牌,将所有手牌交给该角色,然后该角色交给你等量的手牌').set('choice',lib.skill.junbing.checkx(event.target,event.player)); + "step 1" + if(!result.bool){event.finish();return} + target.logSkill('junbing',player); + if(player==target) event.finish(); + player.draw(); + "step 2" + var cards=player.getCards('h'); + target.gain(cards,player,'giveAuto'); + event.num=cards.length; + game.delay(); + "step 3" + target.chooseCard('选择还给'+get.translation(player)+'的牌',true,event.num); + game.delay(0.2); + "step 4" + player.gain(result.cards,target,'giveAuto'); + game.delay(); + }, + audio:2, + }, + xiongyi:{ + skillAnimation:true, + animationColor:'gray', + unique:true, + enable:'phaseUse', + audio:2, + limited:true, + filterTarget:function(card,player,target){ + if(get.mode()=='guozhan'){ + if(player==target) return true; + if(player.identity=='ye') return false; + if(player.identity=='unknown'){ + if(_status.yeidentity.contains(player._group)){ + return false; + } + else if(get.zhu(player)||get.population(player._group)+1<=get.population()/2){ + return player._group==target.identity; + } + else{ + return false; + } + } + return player.identity==target.identity; + } + else{ + return true; + } + }, + multitarget:true, + multiline:true, + selectTarget:function(){ + if(get.mode()=='guozhan') return -1; + return [1,3]; + }, + content:function(){ + "step 0" + player.awakenSkill('xiongyi'); + game.asyncDraw(targets,3); + "step 1" + if(player.isDamaged()){ + if(get.mode()=='guozhan'){ + if(player.isMinor(true)){ + player.recover(); + } + } + else if(targets.length<=2){ + player.recover(); + } + } + }, + ai:{ + order:1, + result:{ + target:function(player){ + var num=player.countCards('h'); + if(player.hp==1) return 1; + if(player.hp==2&&num<=2) return 1; + if(player.hp==3&&num<=1) return 1; + if(game.phaseNumber1){ + event.num--; + event.goto(1); + } + } + }, + ai:{ + threaten:0.8, + expose:0.1 + } + }, + shushen:{ + audio:2, + trigger:{player:'recoverAfter'}, + direct:true, + content:function(){ + "step 0" + event.count=trigger.num; + "step 1" + player.chooseTarget(get.prompt('shushen'),'令一名其他角色选择摸两张牌或回复1点体力',function(card,player,target){ + return target!=player; + }).set('ai',function(target){ + return get.attitude(_status.event.player,target); + }); + "step 2" + if(result.bool){ + event.count--; + player.logSkill('shushen',result.targets); + result.targets[0].chooseDrawRecover(2,true); + if(event.count) event.goto(1); + } + }, + ai:{ + threaten:0.8, + expose:0.1 + } + }, + shenzhi:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + check:function(event,player){ + if(player.hp>2) return false; + var cards=player.getCards('h'); + if(cards.length3) return false; + for(var i=0;i7||get.tag(cards[i],'recover')>=1) return false; + } + return true; + }, + filter:function(event,player){ + return player.countCards('h')>0; + }, + content:function(){ + "step 0" + var cards=player.getCards('h'); + event.bool=cards.length>=player.hp; + player.discard(cards); + "step 1" + if(event.bool){ + player.recover(); + } + } + }, + wuji:{ + skillAnimation:true, + animationColor:'orange', + audio:2, + trigger:{player:'phaseJieshuBegin'}, + forced:true, + unique:true, + juexingji:true, + filter:function(event,player){ + return player.getStat('damage')>=3&&!player.storage.wuji; + }, + content:function(){ + "step 0" + player.removeSkill('huxiao'); + player.gainMaxHp(); + "step 1" + player.recover(); + player.awakenSkill('wuji'); + player.storage.wuji=true; + + var card=get.cardPile('qinglong','field'); + if(card){ + player.gain(card,'gain2','log'); + } + } + }, + xueji_old:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.hp0; + }, + filterTarget:function(card,player,target){ + return player!=target&&get.distance(player,target,'attack')<=1; + }, + selectTarget:function(){ + return [1,_status.event.player.maxHp-_status.event.player.hp]; + }, + position:'he', + filterCard:function(card){ + return get.color(card)=='red'; + }, + check:function(card){ + return 8-get.useful(card); + }, + content:function(){ + "step 0" + target.damage(); + "step 1" + target.draw(); + }, + ai:{ + order:7, + result:{ + target:function(player,target){ + return get.damageEffect(target,player); + } + }, + threaten:function(player,target){ + if(target.hp==1) return 2; + if(target.hp==2) return 1.5; + return 0.5; + }, + maixie:true, + effect:{ + target:function(card,player,target){ + if(get.tag(card,'damage')){ + if(target.hp==target.maxHp&&target.hasFriend()) return [0,1]; + } + if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0]; + } + } + } + }, + xueji:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('he',{color:'red'})>0; + }, + filterTarget:true, + selectTarget:function(){ + var player=_status.event.player + return [1,Math.max(1,player.getDamagedHp())]; + }, + position:'he', + filterCard:{color:'red'}, + check:function(card){ + return 8-get.value(card); + }, + multitarget:true, + multiline:true, + line:'fire', + content:function(){ + 'step 0' + event.delay=false; + for(var i=0;ii) cards.push(ui.cardPile.childNodes[i]); + } + player.chooseCardButton('傲才:选择一张卡牌打出',cards).set('filterButton',function(button){ + return get.type(button.link)=='basic'&&_status.event.getTrigger().filterCard(button.link); + }); + "step 1" + if(result.bool){ + game.log(player,'傲才发动成功'); + trigger.untrigger(); + trigger.responded=true; + result.links[0].remove(); + trigger.result={bool:true,card:result.links[0]} + } + }, + ai:{ + effect:{ + target:function(card,player,target,effect){ + if(get.tag(card,'respondShan')) return 0.7; + if(get.tag(card,'respondSha')) return 0.7; + } + } + }, + group:'aocai2', + }, + aocai2:{ + enable:'chooseToUse', + filter:function(event,player){ + return _status.currentPhase!==player&&event.type!='wuxie'&&event.type!='trickuse'; + }, + onChooseToUse:function(event){ + if(!game.online){ + var cards=[]; + if(ui.cardPile.childNodes.length<2){ + var discardcards=get.cards(2); + game.cardsDiscard(discardcards); + } + for(var i=0;i<2;i++){ + if(ui.cardPile.childNodes.length>i) cards.push(ui.cardPile.childNodes[i]); + } + event.set('aocaicards',cards); + } + }, + chooseButton:{ + dialog:function(event,player){ + return ui.create.dialog('傲才:选择一张卡牌使用',event.aocaicards); + }, + filter:function(button,player){ + var evt=_status.event.getParent(); + if(evt&&evt.filterCard){ + return get.type(button.link)=='basic'&&evt.filterCard(button.link,player,evt); + } + return false; + }, + check:function(button){ + return 1; + }, + backup:function(links,player){ + return { + audio:'aocai', + filterCard:function(){return false}, + selectCard:-1, + viewAs:links[0], + } + }, + prompt:function(links,player){ + return '选择'+get.translation(links)+'的目标'; + } + }, + ai:{ + order:11, + respondShan:true, + respondSha:true, + save:true, + result:{ + player:function(player){ + if(_status.event.dying) return get.attitude(player,_status.event.dying); + return 1; + } + } + } + }, + hongyuan:{ + trigger:{player:'phaseDrawBegin2'}, + direct:true, + audio:2, + filter:function(event,player){ + return !event.numFixed&&event.num>0; + }, + content:function(){ + "step 0" + var check; + if(player.countCards('h')==0){ + check=false; + } + else{ + check=(game.countPlayer(function(current){ + return player!=current&&get.attitude(player,current)>1; + })>=2); + } + if(get.is.versus()){ + event.versus=true; + player.chooseBool(get.prompt2('hongyuan')).ai=function(){ + return game.countPlayer(function(current){ + return player.side==current.side; + })>2; + }; + } + else{ + player.chooseTarget(get.prompt2('hongyuan'),[1,2],function(card,player,target){ + return player!=target; + },function(target){ + if(!_status.event.check) return 0; + return get.attitude(_status.event.player,target); + }).set('check',check); + } + "step 1" + if(result.bool){ + var targets; + if(event.versus){ + targets=game.filterPlayer(function(current){ + return current!=player&¤t.side==player.side; + }); + } + else{ + targets=result.targets; + } + player.logSkill('hongyuan',targets); + game.asyncDraw(targets); + trigger.num--; + } + }, + }, + huanshi:{ + audio:2, + trigger:{global:'judge'}, + filter:function(event,player){ + return player.countCards('he')>0; + }, + logTarget:'player', + check:function(event,player){ + if(get.attitude(player,event.player)<=0) return false; + var cards=player.getCards('he'); + var judge=event.judge(event.player.judging[0]); + for(var i=0;ijudge) return true; + if(_status.currentPhase!=player&&judge2==judge&&get.color(cards[i])=='red'&&get.useful(cards[i])<5) return true; + } + return false; + }, + content:function(){ + "step 0" + var target=trigger.player; + var judge=trigger.judge(target.judging[0]); + var attitude=get.attitude(target,player); + target.choosePlayerCard('请选择代替判定的牌','he','visible',true,player).set('ai',function(button){ + var card=button.link; + var judge=_status.event.judge; + var attitude=_status.event.attitude; + var result=trigger.judge(card)-judge; + var player=_status.event.player; + if(result>0){ + return 20+result; + } + if(result==0){ + if(_status.currentPhase==player) return 0; + if(attitude>=0){ + return get.color(card)=='red'?7:0-get.value(card); + } + else{ + return get.color(card)=='black'?10:0+get.value(card); + } + } + if(attitude>=0){ + return get.color(card)=='red'?0:-10+result; + } + else{ + return get.color(card)=='black'?0:-10+result; + } + }).set('filterButton',function(button){ + var player=_status.event.target; + var card=button.link; + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + if(mod!='unchanged') return mod; + return true; + }).set('judge',judge).set('attitude',attitude); + "step 1" + if(result.bool){ + event.card=result.links[0]; + player.respond(event.card,'highlight').nopopup=true; + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + if(trigger.player.judging[0].clone){ + trigger.player.judging[0].clone.classList.remove('thrownhighlight'); + game.broadcast(function(card){ + if(card.clone){ + card.clone.classList.remove('thrownhighlight'); + } + },trigger.player.judging[0]); + game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); + } + game.cardsDiscard(trigger.player.judging[0]); + trigger.player.judging[0]=event.card; + trigger.orderingCards.add(event.card); + game.log(trigger.player,'的判定牌改为',event.card); + game.delay(2); + } + }, + ai:{ + rejudge:true, + tag:{ + rejudge:1, + } + } + }, + mingzhe:{ + audio:2, + trigger:{player:['useCard','respond','loseAfter']}, + frequent:true, + filter:function(event,player){ + if(player==_status.currentPhase) 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;i2) return current-1; + }, + globalTo:function(from,to,current){ + if(to.hp<=2) return current+1; + }, + }, + ai:{ + threaten:0.8 + } + }, + yongsi:{ + group:['yongsi1','yongsi2'], + ai:{ + threaten:2.2 + } + }, + yongsi1:{ + audio:2, + trigger:{player:'phaseDrawBegin2'}, + forced:true, + filter:function(event,player){ + return !event.numFixed; + }, + content:function(){ + trigger.num+=game.countGroup(); + } + }, + yongsi2:{ + audio:2, + trigger:{player:'phaseDiscardBegin'}, + forced:true, + content:function(){ + player.chooseToDiscard(game.countGroup(),'he',true); + } + }, + bifa:{ + trigger:{player:'phaseJieshuBegin'}, + direct:true, + audio:2, + filter:function(event,player){ + return player.countCards('h')>0; + }, + content:function(){ + "step 0" + var players=game.filterPlayer(); + for(var i=0;itarget.hp){ + target.chooseToDiscard(2,'he',true); + } + else{ + target.draw(2); + } + if(!player.storage.songci) player.storage.songci=[]; + player.storage.songci.push(target); + player.storage.songci.sortBySeat(); + player.markSkill('songci'); + }, + intro:{ + content:'已对$发动过〖颂词〗' + }, + ai:{ + order:7, + threaten:1.5, + expose:0.2, + result:{ + target:function(player,target){ + if(target.countCards('h')target.hp){ + return -1; + } + } + } + } + }, + baobian:{ + audio:2, + trigger:{player:['phaseBefore','changeHp']}, + forced:true, + popup:false, + init:function(player){ + if(game.online) return; + player.removeAdditionalSkill('baobian'); + var list=[]; + if(player.hp<=3){ + //if(trigger.num!=undefined&&trigger.num<0&&player.hp-trigger.num>1) player.logSkill('baobian'); + list.push('retiaoxin'); + } + if(player.hp<=2){ + list.push('olpaoxiao'); + } + if(player.hp<=1){ + list.push('xinshensu'); + } + if(list.length){ + player.addAdditionalSkill('baobian',list); + } + }, + derivation:['retiaoxin','olpaoxiao','xinshensu'], + content:function(){ + player.removeAdditionalSkill('baobian'); + var list=[]; + if(player.hp<=3){ + if(trigger.num!=undefined&&trigger.num<0&&player.hp-trigger.num>1) player.logSkill('baobian'); + list.push('retiaoxin'); + } + if(player.hp<=2){ + list.push('olpaoxiao'); + } + if(player.hp<=1){ + list.push('xinshensu'); + } + if(list.length){ + player.addAdditionalSkill('baobian',list); + } + }, + ai:{ + maixie:true, + effect:{ + target:function(card,player,target){ + if(get.tag(card,'damage')){ + if(!target.hasFriend()) return; + if(target.hp>=4) return [0,1]; + } + if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0]; + } + } + } + }, + chongzhen:{ + group:['chongzhen1','chongzhen2'], + audio:'chongzhen1', + ai:{ + combo:'ollongdan', + mingzhi:false, + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'respondShan')||get.tag(card,'respondSha')){ + if(get.attitude(target,player)<=0){ + if(current>0) return; + if(target.countCards('h')==0) return 1.6; + if(target.countCards('h')==1) return 1.2; + if(target.countCards('h')==2) return [0.8,0.2,0,-0.2]; + return [0.4,0.7,0,-0.7]; + } + } + }, + }, + } + }, + chongzhen1:{ + audio:2, + trigger:{player:'useCard'}, + filter:function(event,player){ + if((event.card.name!='sha'&&event.card.name!='shan')||(event.skill!='longdan_shan'&&event.skill!='longdan_sha'&& + event.skill!='fanghun_shan'&&event.skill!='fanghun_sha'&&event.skill!='ollongdan')) return false; + var target=lib.skill.chongzhen1.logTarget(event,player); + return target&&target.countGainableCards(player,'h')>0; + }, + logTarget:function(event,player){ + if(event.card.name=='sha') return event.targets[0]; + return event.respondTo[0]; + }, + prompt2:'每当你发动“龙胆”使用或打出一张手牌时,你可以立即获得对方的一张手牌。', + content:function(){ + var target=lib.skill.chongzhen1.logTarget(trigger,player); + player.gainPlayerCard(target,'h',true); + } + }, + chongzhen2:{ + audio:2, + trigger:{player:'respond'}, + filter:function(event,player){ + if(event.skill!='longdan_shan'&&event.skill!='longdan_sha'&& + event.skill!='fanghun_shan'&&event.skill!='fanghun_sha'&&event.skill!='ollongdan') return false; + return event.source&&event.source.countGainableCards(player,'h')>0; + }, + logTarget:'source', + prompt2:'每当你发动“龙胆”使用或打出一张手牌时,你可以立即获得对方的一张手牌。', + content:function(){ + player.gainPlayerCard(trigger.source,'h',true); + } + }, + lihun:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return player!=target&&target.sex=='male'; + }, + filterCard:true, + position:'he', + content:function(){ + player.gain(target.getCards('h'),target,'giveAuto'); + player.turnOver(); + player.addSkill('lihun2'); + player.storage.lihun=target; + }, + check:function(card){return 8-get.value(card)}, + ai:{ + order:10, + result:{ + player:function(player){ + if(player.classList.contains('turnedover')) return 10; + return 0; + }, + target:function(player,target){ + if(target.countCards('h')>target.hp) return target.hp-target.countCards('h'); + return 0; + } + }, + threaten:1.5, + effect:{ + target:function(card){ + if(card.name=='guiyoujie') return [0,2]; + } + } + }, + }, + lihun2:{ + trigger:{player:'phaseUseEnd'}, + forced:true, + popup:false, + audio:false, + content:function(){ + "step 0" + var cards=player.getCards('he'); + player.removeSkill('lihun2'); + if(player.storage.lihun.classList.contains('dead')||player.storage.lihun.hp<=0||cards.length==0){ + event.finish(); + } + else{ + if(cards.length0; + }, + content:function(){ + "step 0" + player.chooseCardTarget({ + filterCard:function(card){ + return get.type(card)=='equip'; + }, + position:'he', + filterTarget:function(card,player,target){ + return target.isEmpty(get.subtype(card)); + }, + ai1:function(card){ + return 6-get.value(card); + }, + ai2:function(target){ + return get.attitude(_status.event.player,target)-3; + }, + prompt:get.prompt2('yuanhu') + }); + "step 1" + if(result.bool){ + player.logSkill('yuanhu',result.targets); + var thisTarget=result.targets[0]; + var thisCard=result.cards[0]; + thisTarget.equip(thisCard); + event.target=thisTarget; + if(thisTarget!=player){ + player.$give(thisCard,thisTarget,false); + } + switch(get.subtype(thisCard)){ + case 'equip1':{ + if(!game.hasPlayer(function(current){ + return get.distance(thisTarget,current)<=1; + })){ + event.finish(); + return; + } + game.delay(); + player.chooseTarget(true,function(card,player,target){ + return get.distance(_status.event.thisTarget,target)<=1&&target.countCards('hej'); + }).set('ai',function(target){ + var attitude=get.attitude(_status.event.player,target); + if(attitude>0&&target.countCards('j')){ + return attitude*1.5; + } + return -attitude; + }).set('thisTarget',thisTarget); + return; + } + case 'equip2':{ + thisTarget.draw();event.finish(); + return; + } + case 'equip5':{ + event.finish(); + return; + } + default:{ + thisTarget.recover(); + event.finish(); + return; + } + } + } + else{ + event.finish(); + } + "step 2" + if(result.targets.length){ + player.discardPlayerCard(true,result.targets[0],'hej'); + } + }, + }, + tianming:{ + audio:2, + trigger:{target:'useCardToTargeted'}, + check:function(event,player){ + var cards=player.getCards('h'); + if(cards.length<=2){ + for(var i=0;iplayers[1].hp&&players[0]!=player){ + players[0].chooseBool(get.prompt2('tianming')); + event.player=players[0]; + } + else{ + event.finish(); + } + "step 1" + if(result.bool){ + player.chooseToDiscard(2,true,'he'); + player.draw(2); + } + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(card.name=='sha') return [1,0.5]; + } + } + } + }, + mizhao:{ + enable:'phaseUse', + usable:1, + audio:2, + filter:function(event,player){ + return player.countCards('h')>0; + }, + filterCard:true, + selectCard:-1, + filterTarget:function(card,player,target){ + return player!=target; + }, + discard:false, + lose:false, + delay:false, + ai:{ + order:1, + result:{ + player:0, + target:function(player,target){ + if(target.hasSkillTag('nogain')) return 0; + if(player.countCards('h')>1){ + return 1; + } + var players=game.filterPlayer(); + for(var i=0;i0){ + return eff-10; + } + return eff; + }).set('target1',event.target1); + "step 2" + if(result.targets.length){ + event.target2=result.targets[0]; + event.target1.line(event.target2); + event.target1.chooseToCompare(event.target2); + } + else{ + event.finish(); + } + "step 3" + if(!result.tie){ + if(result.bool&&event.target1.canUse({name:'sha',isCard:true},event.target2,false)){ + event.target1.useCard({name:'sha',isCard:true},event.target2); + } + else if(event.target2.canUse({name:'sha',isCard:true},event.target1,false)){ + event.target2.useCard({name:'sha',isCard:true},event.target1); + } + } + } + }, + gongao:{ + audio:2, + trigger:{global:'dieAfter'}, + forced:true, + content:function(){ + player.gainMaxHp(); + player.recover(); + }, + ai:{ + threaten:1.5 + } + }, + juyi:{ + skillAnimation:true, + animationColor:'thunder', + audio:true, + derivation:['benghuai','weizhong'], + trigger:{player:'phaseZhunbeiBegin'}, + filter:function(event,player){ + return player.maxHp>game.players.length&&player.hp0){ + player.draw(num); + } + player.addSkill('benghuai'); + player.addSkill('weizhong'); + player.storage.juyi=true; + player.awakenSkill('juyi'); + } + }, + weizhong:{ + audio:true, + trigger:{player:['gainMaxHpEnd','loseMaxHpEnd']}, + forced:true, + content:function(){ + player.draw(); + } + }, + chixin:{ + group:['chixin1','chixin2'], + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha'){ + return num+20; + } + }, + }, + trigger:{player:'shaBefore'}, + forced:true, + popup:false, + check:function(event,player){ + return player.countCards('h','sha')>0; + }, + filter:function(event,player){ + return _status.currentPhase==player; + }, + content:function(){ + var target=trigger.target; + if(target.hasSkill('chixin3')){ + target.storage.chixin++; + } + else{ + target.storage.chixin=1; + target.addTempSkill('chixin3','phaseUseEnd'); + } + } + }, + chixin1:{ + enable:['chooseToRespond','chooseToUse'], + filterCard:{suit:'diamond'}, + position:'he', + viewAs:{name:'sha'}, + prompt:'将一张♦牌当杀使用或打出', + check:function(card){return 5-get.value(card)}, + ai:{ + respondSha:true, + } + }, + chixin2:{ + enable:['chooseToUse','chooseToRespond'], + filterCard:{suit:'diamond'}, + viewAs:{name:'shan'}, + position:'he', + prompt:'将一张♦牌当闪使用或打出', + check:function(card){return 5-get.value(card)}, + ai:{ + respondShan:true, + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'respondShan')&¤t<0) return 0.8 + } + }, + } + }, + chixin3:{ + mod:{ + targetEnabled:function(card,player,target){ + if(card.name!='sha') return; + if(player==_status.currentPhase&&player.hasSkill('chixin')){ + var num=player.getCardUsable(card,true)-20; + var players=game.filterPlayer(); + for(var i=0;i1; + } + } + } + }, + suiren:{ + trigger:{player:'phaseZhunbeiBegin'}, + skillAnimation:true, + animationColor:'gray', + filter:function(event,player){ + return !player.storage.suiren; + }, + intro:{ + content:'limited', + }, + mark:true, + direct:true, + unique:true, + limited:true, + content:function(){ + "step 0" + var check=(player.hp==1||(player.hp==2&&player.countCards('h')<=1)); + player.chooseTarget(get.prompt2('suiren')).set('ai',function(target){ + if(!_status.event.check) return 0; + return get.attitude(_status.event.player,target); + }).set('check',check); + "step 1" + if(result.bool){ + player.storage.suiren=true; + player.awakenSkill('suiren'); + player.logSkill('suiren',result.targets); + player.removeSkill('yicong'); + player.gainMaxHp(); + player.recover(); + result.targets[0].draw(3); + } + } + }, + kuangfu:{ + trigger:{source:'damageSource'}, + direct:true, + audio:2, + filter:function(event){ + if(event._notrigger.contains(event.player)) return false; + return event.card&&event.card.name=='sha'&&event.player.countCards('e'); + }, + content:function(){ + "step 0" + var neg=get.attitude(player,trigger.player)<=0; + player.choosePlayerCard('e',trigger.player).set('ai',function(button){ + if(_status.event.neg){ + return get.buttonValue(button); + } + return 0; + }).set('neg',neg); + "step 1" + if(result.bool){ + player.logSkill('kuangfu'); + event.card=result.links[0]; + if(player.isEmpty(get.subtype(event.card))){ + player.chooseBool('是否将'+get.translation(event.card)+'置入自己的装备区?').ai=function(){ + return true; + }; + } + else event._result={bool:false}; + } + else event.finish(); + "step 2" + if(result.bool){ + trigger.player.$give(event.card,player,false); + player.equip(event.card); + } + else trigger.player.discard(event.card); + } + }, + "xinfu_lingren":{ + usable:1, + audio:2, + trigger:{ + player:"useCardToPlayered", + }, + direct:true, + filter:function (event,player){ + if(event.getParent().triggeredTargets3.length>1) return false; + if(!player.isPhaseUsing()) return false; + if(!['basic','trick'].contains(get.type(event.card))) return false; + if(get.tag(event.card,'damage')) return true; + return false; + }, + content:function (){ + 'step 0' + player.chooseTarget(get.prompt2('xinfu_lingren'),function(card,player,target){ + return _status.event.targets.contains(target); + }).set('ai',function(target){ + return 2-get.attitude(_status.event.player,target); + }).set('targets',trigger.targets); + 'step 1' + if(result.bool){ + player.logSkill('xinfu_lingren',result.targets); + var target=result.targets[0]; + event.target=target; + event.choice={ + basic:false, + trick:false, + equip:false, + } + player.chooseBool('是否押基本牌?').ai=function(event,player){ + var rand=0.95; + if(!target.countCards('h',{type:['basic']})) rand=0.05; + if(!target.countCards('h')) rand=0; + return Math.random()0){ + target.addTempSkill('lingren_adddamage'); + target.storage.lingren={ + card:trigger.card, + //player:event.targett, + } + } + if(event.num>1) player.draw(2); + if(event.num>2){ + player.addTempSkill('lingren_jianxiong',{player:'phaseBegin'}); + player.addTempSkill('lingren_xingshang',{player:'phaseBegin'}); + } + }, + ai:{ + threaten:2.4, + }, + }, + "lingren_adddamage":{ + onremove:function (player){ + delete player.storage.lingren; + }, + trigger:{ + player:"damageBegin3", + }, + filter:function (event,player){ + var info=player.storage.lingren; + return event.card&&event.card==info.card; + }, + silent:true, + popup:false, + forced:true, + content:function (){ + trigger.num++; + }, + }, + "lingren_jianxiong":{ + audio:1, + trigger:{ + player:"damageEnd", + }, + content:function (){ + "step 0" + if(get.itemtype(trigger.cards)=='cards'&&get.position(trigger.cards[0],true)=='o'){ + player.gain(trigger.cards,"gain2"); + } + player.draw("nodelay"); + }, + ai:{ + maixie:true, + "maixie_hp":true, + effect:{ + target:function (card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; + if(get.tag(card,'damage')&&player!=target) return [1,0.6]; + }, + }, + }, + }, + "lingren_xingshang":{ + audio:1, + inherit:'rexingshang', + }, + "xinfu_fujian":{ + audio:2, + trigger:{ + player:"phaseJieshuBegin", + }, + filter:function (event,player){ + return !game.hasPlayer(function(current){ + return current.countCards('h')==0; + }); + }, + forced:true, + content:function (){ + event.num=0; + var list=game.filterPlayer(function(target){ + if(target.isMinHandcard()) event.num=target.countCards('h'); + return player!=target; + }); + if(event.num<1){ + event.finish(); + } + else{ + var target=list.randomGet(); + var cards=target.getCards('h').randomGets(event.num); + player.line(target); + var content=[get.translation(target)+'的部分手牌',cards]; + game.log(player,'观看了',target,'的部分手牌'); + player.chooseControl('ok').set('dialog',content); + } + }, + }, + "xinfu_xionghuo":{ + group:["xinfu_xionghuo_damage","xinfu_xionghuo_begin","xinfu_xionghuo_init"], + subSkill:{ + begin:{ + audio:'xinfu_xionghuo', + logTarget:'player', + line:false, + forced:true, + trigger:{ + global:"phaseUseBegin", + }, + filter:function (event,player){ + return event.player.countMark('xionghuo')>0&&event.player!=player; + }, + content:function (){ + 'step 0' + trigger.player.removeMark('xionghuo',trigger.player.countMark('xionghuo')); + var list=[1,2,3]; + var num=list.randomGet(); + event.goto(num); + 'step 1' + player.line(trigger.player,'fire'); + trigger.player.damage('fire'); + if(!trigger.player.storage.xionghuo_disable) trigger.player.storage.xionghuo_disable=[]; + trigger.player.storage.xionghuo_disable.push(player); + trigger.player.addTempSkill('xionghuo_disable','phaseAfter'); + event.goto(4); + 'step 2' + player.line(trigger.player,'water'); + trigger.player.loseHp(); + trigger.player.addMark('xionghuo_low',1,false); + trigger.player.addTempSkill('xionghuo_low','phaseAfter'); + event.goto(4); + 'step 3' + player.line(trigger.player,'green'); + var card1=trigger.player.getCards('h').randomGet(); + var card2=trigger.player.getCards('e').randomGet(); + var list=[]; + if(card1) list.push(card1); + if(card2) list.push(card2); + if(list.length>0){ + player.gain(list,trigger.player,'giveAuto','bySelf'); + } + 'step 4' + game.delay(); + }, + }, + damage:{ + audio:"xinfu_xionghuo", + sub:true, + forced:true, + trigger:{ + source:"damageBegin1", + }, + filter:function (event,player){ + return event.player.countMark('xionghuo')>0; + }, + content:function (){ + trigger.num++; + }, + }, + init:{ + trigger:{ + global:"gameDrawAfter", + player:"enterGame", + }, + forced:true, + locked:false, + content:function(){ + player.addMark("xionghuo",3); + }, + }, + }, + audio:2, + enable:"phaseUse", + filter:function(event,player){ + return player.countMark('xionghuo')>0; + }, + filterTarget:function (card,player,target){ + if(target.hasMark('xionghuo')) return false; + return player!=target>0; + }, + content:function (){ + player.removeMark('xionghuo',1); + target.addMark('xionghuo',1); + }, + ai:{ + order:11, + result:{ + target:function (player,target){ + var mark=player.countMark('xionghuo'); + if(mark>2) return -1; + return Math.min(-(1+mark-target.hp),0); + }, + }, + threaten:1.1, + }, + }, + xionghuo:{ + marktext:"戾", + mark:true, + intro:{ + name:'暴戾', + content:"mark", + }, + locked:true, + }, + "xionghuo_disable":{ + mod:{ + playerEnabled:function (card,player,target){ + if(card.name=='sha'&&(player.storage.xionghuo_disable&&player.storage.xionghuo_disable.contains(target))) return false; + }, + }, + onremove:true, + charlotte:true, + mark:true, + marktext:"禁", + intro:{ + content:"本回合内不能对$使用【杀】", + }, + }, + "xionghuo_low":{ + mod:{ + maxHandcard:function (player,num){ + return num-player.countMark('xionghuo_low'); + }, + }, + marktext:"减", + mark:true, + onremove:true, + charlotte:true, + intro:{ + content:"本回合内手牌上限-#", + }, + }, + "xinfu_shajue":{ + audio:2, + trigger:{ + global:"dying", + }, + filter:function (event,player){ + return event.player.hp<0&&event.player!=player; + }, + forced:true, + //priority:7, + content:function (){ + if(trigger.parent.name=='damage'&&get.itemtype(trigger.parent.cards)=='cards'&&get.position(trigger.parent.cards[0],true)=='o'){ + player.gain(trigger.parent.cards,"gain2"); + } + player.addMark('xionghuo',1); + }, + }, + "xinfu_jianjie":{ + derivation:["jianjie_faq"], + group:["xinfu_jianjie1","xinfu_jianjie2"], + audio:3, + trigger:{ + player:"phaseZhunbeiBegin", + }, + forced:true, + direct:true, + filter:function (event,player){ + if(player.phaseNumber>1) return false; + return !game.hasPlayer(function(current){ + return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan'); + }); + }, + content:function (){ + "step 0" + player.chooseTarget('请将「龙印」交给一名角色',true,function(card,player,target){ + return target!=player; + }).set('ai',function(target){ + var player=_status.event.player; + return 10+get.attitude(player,target); + }); + "step 1" + if(result.bool&&result.targets&&result.targets.length){ + var target=result.targets[0]; + player.logSkill('xinfu_jianjie',target); + player.line(target,'fire'); + target.addSkill('smh_huoji'); + game.delay(); + } + if(game.hasPlayer(function(current){ + return !current.hasSkill('smh_huoji')&¤t!=player + })){ + player.chooseTarget('请将「凤印」交给一名角色',true,function(card,player,target){ + return target!=player&&!target.hasSkill('smh_huoji'); + }).set('ai',function(target){ + var player=_status.event.player; + return 10+get.attitude(player,target); + }); + }else event.finish(); + "step 2" + if(result.bool&&result.targets&&result.targets.length){ + var target=result.targets[0]; + player.logSkill('xinfu_jianjie',target); + player.line(target,'green'); + target.addSkill('smh_lianhuan'); + game.delay(); + } + }, + }, + "xinfu_jianjie1":{ + audio:3, + prompt:"你的第一个准备阶段,你令两名不同的角色分别获得龙印与凤印;出牌阶段限一次(你的第一个回合除外),或当拥有龙印、凤印的角色死亡时,你可以转移龙印、凤印。", + enable:"phaseUse", + usable:1, + filter:function (event,player){ + if(player.phaseNumber==1) return false; + if(!game.hasPlayer(function(current){ + return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan'); + })) return false; + return true; + }, + filterTarget:function (card,player,target){ + if(ui.selected.targets.length==1){ + return true; + }else{ + return target.hasSkill('smh_huoji')||target.hasSkill('smh_lianhuan'); + } + }, + targetprompt:["移走印","得到印"], + selectTarget:2, + multitarget:true, + content:function (){ + 'step 0' + if(targets[0].hasSkill('smh_huoji')&&targets[0].hasSkill('smh_lianhuan')){ + player.chooseControl('龙印','凤印').set('prompt','请选择要移动的印'); + } + else{ + if(targets[0].hasSkill('smh_huoji')) event._result={control:'龙印'}; + else event._result={control:'凤印'}; + } + 'step 1' + if(result.control=='龙印'){ + targets[0].removeSkill('smh_huoji'); + targets[1].addSkill('smh_huoji'); + } + else{ + targets[0].removeSkill('smh_lianhuan'); + targets[1].addSkill('smh_lianhuan'); + } + }, + ai:{ + order:8, + result:{ + target:function (player,target){ + if(ui.selected.targets.length==0){ + return get.attitude(player,target)<0?-999:-3; + } + else{ + return target.countCards('h')+1; + } + }, + }, + expose:0.4, + threaten:3, + }, + }, + "smh_huoji":{ + charlotte:true, + group:["smh_yeyan"], + mark:true, + marktext:"龙", + intro:{ + name:"龙印", + content:"
  • 出牌阶段限三次,你可以将一张红色牌当【火攻】使用。
  • 若你同时拥有「凤印」,则你视为拥有技能〖业炎〗。(发动〖业炎〗后,弃置龙印和凤印)", + }, + usable:3, + audio:2, + enable:"chooseToUse", + position:"he", + filterCard:function (card){ + return get.color(card)=='red'; + }, + viewAs:{ + name:"huogong", + nature:"fire", + }, + viewAsFilter:function (player){ + if(player.hasSkill('huoji')) return false; + if(!game.hasPlayer(function(current){ + return current.hasSkill('xinfu_jianjie'); + })) return false; + if(!player.countCards('he',{color:'red'})) return false; + }, + prompt:"将一张红色牌当火攻使用", + check:function (card){ + var player=_status.currentPhase; + if(player.countCards('h')>player.hp){ + return 6-get.value(card); + } + return 4-get.value(card) + }, + }, + "smh_lianhuan":{ + audio:2, + charlotte:true, + enable:"phaseUse", + filter:function (event,player){ + if(player.hasSkill('lianhuan')||player.hasSkill('xinlianhuan')) return false; + if(!game.hasPlayer(function(current){ + return current.hasSkill('xinfu_jianjie'); + })) return false; + if((player.getStat().skill.smh_lianhuan||0)+(player.getStat().skill.smh_lianhuan1||0)>=3) return false; + return player.countCards('h',{suit:'club'})>0; + }, + filterCard:function (card){ + return get.suit(card)=='club'; + }, + viewAs:{ + name:"tiesuo", + }, + prompt:"将一张梅花牌当铁锁连环使用", + check:function (card){return 6-get.value(card)}, + mark:true, + marktext:"凤", + intro:{ + name:"凤印", + content:"
  • 出牌阶段限三次,你可以将你的任意一张梅花手牌当作【铁索连环】使用或重铸。", + }, + group:["smh_lianhuan1"], + }, + "xinfu_jianjie2":{ + trigger:{ + global:"dieAfter", + }, + forced:true, + direct:true, + silent:true, + popup:false, + filter:function (event,player){ + return event.player.hasSkill('smh_huoji')||event.player.hasSkill('smh_lianhuan'); + }, + content:function (){ + "step 0" + player.logSkill('xinfu_jianjie'); + "step 1" + if(trigger.player.hasSkill('smh_huoji')){ + player.chooseTarget('请将'+get.translation(trigger.player)+'的「龙印」交给一名角色',true).set('ai',function(target){ + var player=_status.event.player; + return 10+get.attitude(player,target); + }); + }else event.goto(2); + "step 2" + if(result.bool&&result.targets&&result.targets.length){ + var target=result.targets[0]; + player.line(target,'fire'); + target.addSkill('smh_huoji'); + game.delay(); + } + "step 3" + if(trigger.player.hasSkill('smh_lianhuan')){ + player.chooseTarget('请将'+get.translation(trigger.player)+'的「凤印」交给一名角色',true).set('ai',function(target){ + var player=_status.event.player; + return 10+get.attitude(player,target); + }); + }else event.finish(); + "step 4" + if(result.bool&&result.targets&&result.targets.length){ + var target=result.targets[0]; + player.line(target,'green'); + target.addSkill('smh_lianhuan'); + game.delay(); + } + }, + }, + "smh_lianhuan1":{ + enable:"phaseUse", + filter:function (event,player){ + if(player.hasSkill('lianhuan')||player.hasSkill('xinlianhuan')) return false; + if(!game.hasPlayer(function(current){ + return current.hasSkill('xinfu_jianjie'); + })) return false; + if((player.getStat().skill.smh_lianhuan||0)+(player.getStat().skill.smh_lianhuan1||0)>=3) return false; + return player.countCards('h',{suit:'club'})>0; + }, + filterCard:function (card){ + return get.suit(card)=='club'; + }, + check:function (card){ + return -1; + }, + content:function (){ + player.draw(); + }, + discard:false, + loseTo:'discardPile', + prompt:"将一张梅花牌置入弃牌堆并摸一张牌", + delay:0.5, + prepare:function (cards,player){ + player.$throw(cards,1000); + }, + ai:{ + basic:{ + order:1, + }, + result:{ + player:1, + }, + }, + forced:true, + }, + "smh_yeyan":{ + unique:true, + enable:"phaseUse", + audio:3, + skillAnimation:true, + animationColor:'gray', + prompt:"限定技,出牌阶段,你可以对一至三名角色造成至多共3点火焰伤害(你可以任意分配每名目标角色受到的伤害点数),若你将对一名角色分配2点或更多的火焰伤害,你须先弃置四张不同花色的手牌再失去3点体力。", + filter:function (event,player){ + if(!game.hasPlayer(function(current){ + return current.hasSkill('xinfu_jianjie'); + })) return false; + return player.hasSkill('smh_lianhuan'); + }, + filterTarget:function (card,player,target){ + var length=ui.selected.cards.length; + return (length==0||length==4); + }, + filterCard:function (card){ + var suit=get.suit(card); + for(var i=0;i1){ + 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;i0){ + 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); + } + }, + }, + "jianjie_faq":{}, + "xinfu_wuniang":{ + trigger:{ + player:["useCard","respond"], + }, + audio:2, + direct:true, + filter:function (event,player){ + return event.card.name=='sha'; + }, + content:function (){ + 'step 0' + player.chooseTarget(get.prompt('xinfu_wuniang'),'获得一名其他角色的一张牌,然后其和场上所有的“关索”摸一张牌。',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]; + player.logSkill('xinfu_wuniang',target); + player.line(target,'fire'); + event.draws=game.filterPlayer(function(current){ + if(current==target) return true; + return ['guansuo','old_guansuo'].contains(current.name)||['guansuo','old_guansuo'].contains(current.name2); + }); + player.gainPlayerCard(target,'he',true); + } + else event.finish(); + 'step 2' + game.asyncDraw(event.draws,1); + game.delay(); + }, + }, + "xinfu_xushen":{ + derivation:["xinfu_zhennan"], + audio:2, + subSkill:{ + count:{ + trigger:{ + player:"recoverBegin", + }, + forced:true, + silent:true, + popup:false, + filter:function (event,player){ + if(!event.card||event.card.name!='tao') return false; + if(!event.source||event.source.sex!='male') return false; + if(!player.isDying()) return false; + if(game.hasPlayer(function(current){ + return current.name=='guansuo'||current.name2=='guansuo'; + })) return false; + return true; + }, + content:function (){ + trigger.xinfu_xushen=true; + }, + sub:true, + }, + }, + group:["xinfu_xushen_count"], + trigger:{ + player:"recoverAfter", + }, + limited:true, + init:function (player){ + player.storage.xinfu_xushen=false; + }, + filter:function (event,player){ + if(player.storage.xinfu_xushen) return false; + if(player.isDying()) return false; + return event.xinfu_xushen==true; + }, + direct:true, + skillAnimation:true, + animationColor:'fire', + content:function (){ + "step 0" + trigger.source.chooseBool('【许身】:是否将自己的一张武将牌替换为“关索”?').set('ai',function(){ + return false; + }); + "step 1" + if(result.bool){ + player.awakenSkill('xinfu_xushen'); + player.logSkill('xinfu_xushen',trigger.source); + if(trigger.source.name2!=undefined){ + trigger.source.chooseControl(trigger.source.name,trigger.source.name2).set('prompt','请选择要更换的武将牌'); + }else event._result={control:trigger.source.name}; + } + else event.finish(); + "step 2" + trigger.source.reinit(result.control,'guansuo'); + if(_status.characterlist){ + _status.characterlist.add(result.control); + _status.characterlist.remove('guansuo'); + } + player.recover(); + player.addSkill('xinfu_zhennan'); + }, + mark:true, + intro:{ + content:"limited", + }, + }, + + "xinfu_falu":{ + subSkill:{ + spade:{ + marktext:'♠︎️', + intro:{ + name:'紫薇', + content:'mark', + }, + }, + heart:{ + marktext:'♥︎️', + intro:{ + name:'玉清', + content:'mark', + }, + }, + club:{ + marktext:'♣︎️', + intro:{ + name:'后土', + content:'mark', + }, + }, + diamond:{ + marktext:'♦︎', + intro:{ + name:'勾陈', + content:'mark', + }, + }, + }, + forced:true, + audio:2, + trigger:{ + player:["loseAfter","enterGame"], + global:"gameDrawAfter", + }, + filter:function (event,player){ + if(event.name!='lose') return true; + if(event.type!='discard') return false; + for(var i=0;i0){ + if(results>0){ + if(resulth>results) return '红桃5'; + return '黑桃5'; + } + else if(resulth>0) return '红桃5'; + return '取消'; + } + else{ + if(results<0){ + if(resulth=0) return false; + if(event.player.hasSkillTag('filterDamage',null,{ + player:player, + card:event.card, + })) return false; + return player.hasMark('xinfu_falu_spade')||get.color(ui.cardPile.firstChild)=='black'; + }, + prompt2:function(event){ + return '弃置「玉清♥」标记,然后进行判定。若结果为黑色,则对'+get.translation(event.player)+'即将造成的伤害+1。'; + }, + logTarget:"player", + content:function (){ + "step 0" + player.removeMark('xinfu_falu_heart') + player.judge(function(card){ + if(get.color(card)=='black') return 4; + return -1; + }); + "step 1" + if(result.bool==true){ + trigger.num++; + } + }, + }, + "xinfu_zhennan":{ + audio:2, + trigger:{ + target:"useCardToTargeted", + }, + filter:function (event,player){ + return event.card.name=='nanman'; + }, + direct:true, + content:function (){ + "step 0" + player.chooseTarget(get.prompt('xinfu_zhennan'),'对一名其他角色造成1-3点随机伤害',function(card,player,target){ + return target!=player; + }).set('ai',function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player); + }); + "step 1" + if(result.bool&&result.targets&&result.targets.length){ + game.delay(); + player.logSkill('xinfu_zhennan',result.targets); + var num=[1,2,3,1,1,2].randomGet(); + if(get.isLuckyStar(player)) num=3; + player.line(result.targets[0],'fire'); + result.targets[0].damage(num); + } + }, + ai:{ + expose:0.25, + }, + }, + "xinfu_yanyu":{ + trigger:{ + global:"phaseUseBegin", + }, + direct:true, + filter:function (event,player){ + return player.countCards('he')>0; + }, + content:function (){ + 'step 0' + player.chooseToDiscard(get.prompt('xinfu_yanyu'),get.translation('xinfu_yanyu_info'),'he').set('ai',function(card){ + var map=_status.event.goon; + var type=get.type(card,'trick'); + if(!map[type]) return -1; + return map[type]-get.value(card); + }).set('logSkill','xinfu_yanyu').set('goon',function(){ + var map={ + basic:0, + trick:0.1, + }; + var hs=trigger.player.getCards('h'); + var sha=false; + var jiu=false; + for(var i=0;i=3) return false; + //var evt=event.getParent(); + //if(evt&&(evt.name=='useCard'||evt.name=='respond')) return false; + var type=player.storage.xinfu_yanyu; + var cards=event.cards; + for(var i=0;i=3) event.finish(); + else player.chooseCardButton(event.cards,'【燕语】:是否将其中的一张牌交给一名角色?').ai=function(card){ + if(card.name=='du') return 10; + return get.value(card); + }; + 'step 2' + if(result.bool){ + player.storage.xinfu_yanyu2++; + if(!event.logged){ + player.logSkill('xinfu_yanyu'); + player.addExpose(0.25); + event.logged=true; + } + event.togain=result.links[0]; + event.cards.remove(event.togain); + player.chooseTarget(true,'请选择要获得'+get.translation(event.togain)+'的角色').set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + var card=_status.event.card; + var val=get.value(card); + if(target==_status.currentPhase&&target.hasValueTarget(card)) att=att*2; + return att*val; + }).set('card',event.togain); + } + else event.finish(); + 'step 3' + var target=result.targets[0]; + player.line(target,'green'); + target.gain(event.togain,'gain2'); + if(event.cards.length) event.goto(1); + }, + }, + "xinfu_xiaode":{ + subSkill:{ + remove:{ + unique:true, + charlotte:true, + trigger:{ + player:"phaseAfter", + }, + forced:true, + popup:false, + content:function (){ + player.removeAdditionalSkill('xinfu_xiaode'); + player.removeSkill('xinfu_xiaode_remove'); + }, + }, + }, + trigger:{ + global:"dieAfter", + }, + direct:true, + filter:function (skill,event){ + return !event.hasSkill('xinfu_xiaode_remove'); + }, + content:function (){ + 'step 0' + var list=[]; + var listm=[]; + var listv=[]; + if(trigger.player.name1!=undefined) listm=lib.character[trigger.player.name1][3]; + else listm=lib.character[trigger.player.name][3]; + if(trigger.player.name2!=undefined) listv=lib.character[trigger.player.name2][3]; + listm=listm.concat(listv); + var func=function(skill){ + var info=get.info(skill); + if(info.charlotte||info.zhuSkill||(info.unique&&!info.limited)) return false; + return true; + }; + for(var i=0;i觉醒技 当你使用或打出基本牌时,若你已经已累计发动过3次【翊赞】,你将【翊赞】改为“你可以将一张基本牌当任意基本牌牌使用或打出”。", + wuniang:"武娘", + wuniang_info:"你使用或打出【杀】时,你可以获得一名其他角色的一张牌,然后该角色摸一张牌;若“关索”在场,你可令“关索”也摸一张牌", + zhennan:"镇南", + zhennan_info:"当你成为【南蛮入侵】的目标时,你可令一名其他角色随机受到一至三点伤害", + xushen:"许身", + xushen_info:"当其他男性角色令你脱离濒死状态时,若“关索”不在场,其可以选择是否用“关索”替换其武将牌,然后你回复一点体力并获得技能【镇南】", + + wanwei:'挽危', + wanwei_info:'当你因被其他角色获得或弃置而失去牌时,你可以改为自己选择失去的牌。', + yuejian:'约俭', + yuejian_info:'一名角色的弃牌阶段开始时,若其本回合内使用过的牌数小于X,则你可以令其本回合的手牌上限+X。(X为其的体力上限)', + gzjili:'蒺藜', + gzjili_info:'当你于一回合内使用或打出第X张牌时,你可以摸X张牌(X为你的攻击范围)。', + xiongsuan:'凶算', + xiongsuan_info:'限定技,出牌阶段,你可以弃置一张手牌并选择一名角色,对其造成1点伤害,然后你摸三张牌。若该角色有已发动的限定技,则你选择其中一个限定技。此回合结束后,视为该限定技未发动过。', + diaodu:"调度", + diaodu_info:"当你使用装备牌时,你可以摸一张牌;出牌阶段开始时,你可以获得一名其他角色装备区里的一张牌,然后你可以将此牌交给另一名角色。", + diancai:'典财', + diancai_info:'其他角色的出牌阶段结束时,若你于此阶段失去了X张或更多的牌,则你可以将手牌摸至体力上限。(X为你的体力值)', + zhengbi:'征辟', + zhengbi_info:'出牌阶段开始时,你可以选择一项:选择一名未受伤的其他角色,你对其使用的牌无距离限制且不计入使用次数直到回合结束;或将一张基本牌交给一名其他角色,然后其交给你一张非基本牌或两张基本牌。', + fengying:'奉迎', + fengying_info:'限定技,出牌阶段,你可以弃置所有手牌。若如此做,你可以令等量的角色将手牌摸至X张(X为其体力上限且至多为5)。然后,你结束出牌阶段,并在当前回合结束后进行一个新的回合。', + + qingzhong:'清忠', + qingzhongx:'清忠', + qingzhongx_info:'出牌阶段开始时,你可以摸两张牌,若如此做,此阶段结束时,你与手牌数最少的角色交换手牌。', + weijing:'卫境', + weijing_info:'每轮限一次,当你需要使用【杀】或【闪】时,你可以视为使用一张【杀】或【闪】。', + zishu:'自书', + zishu_info:'锁定技,你的回合外,你获得的牌均会在当前回合结束后置入弃牌堆;你的回合内,当你不因〖自书〗而获得牌时,你摸一张牌。', + yingyuan:'应援', + yingyuan_info:'当你于回合内使用的牌结算完成后,你可以将其交给一名其他角色(相同牌名的牌每回合限一次)。', + xinyingyuan:'应援', + xinyingyuan_info:'当你于回合内使用一张牌后,你可以令一名其他角色从牌堆获得一张与该牌类型相同的牌(每种类型的牌每回合限一次)。', + qianya:'谦雅', + qianya_info:'当你成为锦囊牌的目标后,你可以将任意张手牌交给一名其他角色。', + shuimeng:'说盟', + shuimeng_info:'出牌阶段结束时,你可以与一名角色拼点,若你赢,视为你使用【无中生有】;若你没赢,视为其对你使用【过河拆桥】。', + xianfu:'先辅', + xianfu2:'先辅', + xianfu2_bg:'辅', + xianfu_info:'锁定技,游戏开始时,你选择一名其他角色,当其受到伤害后,你受到等量的伤害,当其回复体力后,你回复等量的体力。', + chouce:'筹策', + chouce_info:'当你受到1点伤害后,你可以判定,若结果为:黑色,你弃置一名角色区域里的一张牌;红色,你选择一名角色,其摸一张牌,若其是〖先辅〗选择的角色,改为其摸两张牌。', + fuqi:'伏骑', + fuqi_info:'锁定技,当你使用牌时,你令所有与你距离为1的其他角色不能使用或打出牌响应此牌。', + jiaozi:'骄恣', + jiaozi_info:'锁定技,若你的手牌数为全场唯一最多,则当你造成或受到伤害时,此伤害+1。', + wy_meirenji:'美人计', + wy_meirenji_info:'出牌阶段,对一名有手牌的其他男性角色使用。每名女性角色各获得其一张手牌并将一张手牌交给你,然后比较你与其的手牌数,手牌少的角色对手牌多的角色造成1点伤害。', + wy_xiaolicangdao:'笑里藏刀', + wy_xiaolicangdao_info:'出牌阶段,对一名其他角色使用。该角色摸X张牌(X为其已损失的体力值且至多为5),然后你对其造成1点伤害。', + weikui:'伪溃', + weikui2:'伪溃', + weikui_info:'出牌阶段限一次,你可以失去1点体力并选择一名有手牌的其他角色,你观看其手牌:若其手牌中有【闪】,则视为你对其使用【杀】,且本回合你计算与其的距离视为1;若其手牌中没有【闪】,你弃置其中一张牌。', + lizhan:'励战', + lizhan_info:'结束阶段,你可以令任意名已受伤的角色摸一张牌。', + wylianji:'连计', + wylianji_info:'出牌阶段限一次,你可以展示一张【杀】或黑色锦囊牌,并令一名其他角色将牌堆中的随机一张武器牌置入装备区(可替换原装备)。然后该角色选择一项:1.对除你以外的角色使用该牌,并将装备区里的武器牌交给该牌的一个目标角色;2.令你对其使用此牌,然后获得此牌,并将装备区内的武器牌交给你。', + // from here + moucheng:'谋逞', + moucheng_info:'觉醒技,当其他角色使用因〖连计〗交给其的牌累计造成伤害达到3点后,你失去技能〖连计〗,然后获得技能〖矜功〗', + jingong:'矜功', + jingong2:'矜功', + jingong_backup:'矜功', + jingong_info:'出牌阶段限一次,你可以将一张装备牌或【杀】当做一张随机锦囊牌使用(三选一,其中一张为【美人计】或【笑里藏刀】),然后本回合的结束阶段,若你于本回合内未造成过伤害,你失去1点体力', + fenyue:'奋钺', + fenyue2:'奋钺', + fenyue2_bg:'钺', + fenyue_info:'出牌阶段限X次,你可以与一名角色拼点,若你赢,你选择一项:1.令其不能使用或打出手牌直到回合结束;2.视为你对其使用了【杀】(不计入次数限制)。若你没赢,你结束出牌阶段。(X为存活的忠臣数)', + + huoshui:'祸水', + huoshui_info:'出牌阶段,你可以明置此武将牌:你的回合内,若此武将牌处于明置状态,其他角色不能明置其武将牌。', + qingcheng:'倾城', + qingcheng_info:'出牌阶段,你可以弃置一张装备牌并选择一名两张武将牌均明置的其他角色,你暗置其一张武将牌', + zhuoshui:'祸水', + zhuoshui_info:'锁定技,准备阶段,你令所有其他角色的非锁定技失效直到回合结束。', + zqingcheng:'倾城', + zqingcheng_info:'出牌阶段,你可以弃置一张装备牌,然后令一名角色翻面并摸两张牌。', + zfengshi:'锋矢', + zfengshi_info:'当你使用【杀】指定目标后,你可以令目标弃置装备区内的一张牌。', + chuanxin:'穿心', + chuanxin_info:'当你于出牌阶段内使用【杀】或【决斗】对目标角色造成伤害时,你可以防止此伤害。若如此做,该角色选择一项:1.弃置装备区里的所有牌,若如此做,其失去1点体力;2.随机移除主武将牌上的一个技能。', + chuanxin_info_guozhan:'当你于出牌阶段内使用【杀】或【决斗】对目标角色造成伤害时,若其与你势力不同且有副将,你可以防止此伤害。若如此做,该角色选择一项:1.弃置装备区里的所有牌,若如此做,其失去1点体力;2.移除副将。', + hengjiang:'横江', + hengjiang2:'横江', + hengjiang_info:'当你受到1点伤害后,你可以令当前回合角色本回合的手牌上限-1。然后若其弃牌阶段内没有弃牌,则你摸一张牌。', + rehengjiang:'横江', + rehengjiang2:'横江', + rehengjiang_info:'当你受到1点伤害后,你可以令当前回合角色本回合的手牌上限-1。然后若其弃牌阶段内没有弃牌,则你摸X张牌(X为你本回合内对其发动过〖横江〗的次数)。', + shuangren:'双刃', + shuangren_info:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对任意一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你结束出牌阶段。', + shuangren_info_guozhan:'出牌阶段开始时,你可以与一名角色拼点。若你赢,你视为对其或与其势力相同的另一名角色使用一张【杀】(不计入出牌阶段的次数限制);若你没赢,你结束出牌阶段。', + xiashu:'下书', + xiashu_info:'出牌阶段开始时,你可以将所有手牌交给一名其他角色,然后该角色亮出任意数量的手牌(至少一张)。你选择一项:1.获得其亮出的手牌;2.获得其未亮出的手牌。', + kuanshi:'宽释', + kuanshi2:'宽释', + kuanshi_info:'结束阶段,你可以选择一名角色。直到你的下回合开始,该角色第一次受到大于1的伤害时,防止此伤害,然后你跳过下个回合的摸牌阶段。', + bingzheng:'秉正', + bingzheng_info:'出牌阶段结束时,你可以令手牌数不等于体力值的一名角色弃置一张手牌或摸一张牌。然后若其手牌数等于体力值,你摸一张牌,且可以交给该角色一张牌。', + sheyan:'舍宴', + sheyan_info:'当你成为普通锦囊牌的目标时(【借刀杀人】等带有指向目标的锦囊除外),你可以为此牌增加一个目标或令其对其中一个目标无效。(有效目标数至少为一)', + fuman:'抚蛮', + fuman2:'抚蛮', + fuman_info:'出牌阶段,你可以将一张【杀】交给一名本回合未获得过〖抚蛮〗牌的其他角色,其于下个回合结束之前使用〖抚蛮〗牌时,你摸一张牌。', + qizhou:'绮胄', + qizhou_info:'锁定技,你根据装备区里牌的花色数获得以下技能:1种或以上:〖马术〗;2种或以上:〖英姿〗;3种或以上:〖短兵〗;4种:〖奋威〗。', + shanxi:'闪袭', + shanxi_info:'出牌阶段限一次,你可以弃置一张红色基本牌,然后弃置攻击范围内的一名其他角色的一张牌。若弃置的牌是【闪】,你观看其手牌,若弃置的不是【闪】,其观看你的手牌。', + duanbing:'短兵', + duanbing_info:'当你使用【杀】选择目标后,你可以令一名距离为1的其他角色也成为此牌的目标。', + fanghun:'芳魂', + fanghun_info:'当你使用【杀】造成伤害或受到【杀】的伤害后,你获得X个“梅影”标记(X为伤害点数);你可以移去1个“梅影”标记来发动〖龙胆〗并摸一张牌。', + refanghun:'芳魂', + refanghun_info:'当你使用【杀】或成为【杀】的目标后,你获得1个“梅影”标记;你可以移去1个“梅影”标记来发动〖龙胆〗并摸一张牌。', + fanghun_sha:'龙胆', + fuhan:'扶汉', + fuhan_info:'限定技,回合开始时,你可以移去所有“梅影”标记并摸等量的牌,随机观看五名未登场的蜀势力角色,将武将牌替换为其中一名角色,并将体力上限数调整为本局游戏中移去“梅影”标记的数量(至少为2,至多为8),然后回复1点体力。', + refuhan:'扶汉', + refuhan_info:'限定技,回合开始时,你可以移去所有“梅影”标记并摸等量的牌,随机观看五名未登场的蜀势力角色,获得其中一张武将牌上的所有技能。', + yjixi:'觊玺', + yjixi_info:'觉醒技,结束阶段,若你连续三回合没有因〖庸肆〗而失去过体力,则你增加1点体力上限并回复1点体力,然后选择一项:获得技能〖妄尊〗;摸两张牌并获得当前主公的主公技。', + xinyongsi:'庸肆', + xinyongsi1:'庸肆', + xinyongsi2:'庸肆', + xinyongsi_info:'锁定技,摸牌阶段,你令额定摸牌数改为X(X为势力数);弃牌阶段开始时,你选择一项:1.弃置一张牌;2.失去1点体力。', + xiehui:'黠慧', + xiehui2:'黠慧', + xiehui_info:'锁定技,你的黑色牌不计入手牌上限;其他角色获得你的黑色牌时,其不能使用、打出、弃置这些牌直到其体力值减少为止。', + lianzhu:'连诛', + lianzhu_info:'出牌阶段限一次,你可以展示并交给一名其他角色一张牌,若此牌为黑色,其选择一项:1.你摸两张牌;2.弃置两张牌', + zhaolie:'昭烈', + zhaolie_info:'摸牌阶段摸牌时,你可以少摸一张牌并指定攻击范围内的一名角色。你展示牌堆顶的三张牌,将其中的非基本牌和【桃】置于弃牌堆,然后该角色选择一项:1.你对其造成X点伤害,然后其获得这些基本牌;2.其弃置X张牌,然后你获得这些基本牌。(X为其中非基本牌的数量)', + shichou:'誓仇', + shichou2:'誓仇', + shichou_info:'主公技,限定技,准备阶段,你可指定一名蜀势力角色并交给其两张牌。本局游戏中,当你受到伤害时,改为该角色受到等量的伤害并摸等量的牌,直至该角色第一次进入濒死状态。', + shanjia:'缮甲', + shanjia_info:'出牌阶段开始时,你可以摸X张牌,然后弃置等量的牌。若你以此法弃置了装备区内的牌,则你可以视为使用一张【杀】。(X为你于本局游戏内使用过的装备牌数且最大为7)', + tuifeng:'推锋', + tuifeng2:'推锋', + tuifeng_info:'1.当你受到1点伤害后,你可以将一张牌置于武将牌上,称为“锋”。2.准备阶段开始时,若你的武将牌上有“锋”,你移去所有“锋”,摸2X张牌,然后你于此回合的出牌阶段内使用【杀】的次数上限+X。(X为你此次移去的“锋”数)', + ziyuan:'资援', + ziyuan_info:'出牌阶段限一次,你可以将任意张点数之和为13的手牌交给一名其他角色,然后该角色回复1点体力。', + jugu:'巨贾', + jugu_info:'锁定技,1.你的手牌上限+X。2.游戏开始时,你摸X张牌(X为你的体力上限)', + hongde:'弘德', + hongde_info:'当你一次获得或失去至少两张牌后,你可以令一名其他角色摸一张牌。', + dingpan:'定叛', + dingpan_info_identity:'出牌阶段限X次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。(X为场上存活的反贼数)', + dingpan_info_versus:'出牌阶段限X次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。(X为场上存活的敌方角色数)', + dingpan_info:'出牌阶段限一次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。', + weidi:'伪帝', + weidi_info:'锁定技,你视为拥有当前主公的主公技。', + juesi:'决死', + juesi_info:'出牌阶段,你可以弃置一张【杀】并选择攻击范围内的一名有牌的其他角色,该角色弃置一张牌,然后若弃置的牌不是【杀】且你的体力值不大于该角色,你视为对其使用【决斗】。', + zhenlue:'缜略', + zhenlue_info:'锁定技,你使用的普通锦囊牌不能被【无懈可击】响应;你不能成为延时锦囊牌的目标。', + jianshu:'间书', + jianshu_info:'限定技,出牌阶段,你可以将一张黑色手牌交给一名其他角色,并选择另一名其他角色,然后令这两名角色拼点。赢的角色弃置两张牌,没赢的角色失去一点体力。', + yongdi:'拥嫡', + yongdi_info:'限定技,准备阶段开始时,你可令一名其他男性角色增加一点体力上限并回复1点体力,然后若该角色的武将牌上有主公技且其不为主公,其获得此主公技。', + gushe:'鼓舌', + gushe_bg:'舌', + gushe_info:'出牌阶段限一次,你可以用一张手牌与至多三名角色同时拼点,然后依次结算拼点结果,没赢的角色选择一项:1.弃置一张牌;2.令你摸一张牌。若你没赢,你获得一个“饶舌”标记。当你获得第7个“饶舌”标记时,你死亡。', + jici:'激词', + jici_info:'当你因发动〖鼓舌〗而扣置的拼点牌亮出后,若点数小于X,你可令点数+X;若点数等于X,你可令你本回合发动〖鼓舌〗的次数上限+1。(X为你“饶舌”标记的数量)', + shefu:'设伏', + shefu_bg:'伏', + shefu_info:'结束阶段开始时,你可以将一张手牌移出游戏,称为「伏兵」。然后为「伏兵」记录一个基本牌或锦囊牌的名称(须与其他「伏兵」记录的名称均不同)。你的回合外,当有其他角色使用与你记录的「伏兵」牌名相同的牌时,你可以取消此牌的所有目标,然后移去该「伏兵」', + benyu:'贲育', + benyu2:'贲育', + benyu_info:'当你受到伤害后,若你的手牌数不大于伤害来源的手牌数,你可以将手牌摸至与伤害来源手牌数相同(至多摸至5张);否则你可以弃置大于伤害来源手牌数的手牌,然后对其造成1点伤害。', + zhidao:'雉盗', + zhidao_info:'锁定技,当你于你的回合内第一次对区域里有牌的其他角色造成伤害后,你获得其手牌、装备区和判定区里的各一张牌,然后直到回合结束,其他角色不能被选择为你使用牌的目标。', + jili:'寄篱', + jili_info:'锁定技,当一名其他角色成为红色基本牌或红色普通锦囊牌的目标时,若其与你的距离为1且你既不是此牌的使用者也不是目标,你也成为此牌的目标。', + luanzhan:'乱战', + luanzhan_info:'你使用【杀】或黑色普通锦囊牌可以额外选择X名角色为目标;当你使用【杀】或黑色普通锦囊牌指定目标后,若此牌的目标角色数小于X,则X减至0。(X为你于本局游戏内造成过伤害的次数)', + zhengnan:'征南', + zhengnan_info:'其他角色死亡后,你可以摸三张牌并获得下列技能中的任意一个:〖武圣〗、 〖当先〗和〖制蛮〗。', + xinzhengnan:'征南', + xinzhengnan_info:'当一名角色进入濒死状态时,若你未因其发动过〖征南〗,则你回复1点体力并摸一张牌并获得下列技能中的任意一个:〖武圣〗、 〖当先〗和〖制蛮〗(若技能全部拥有则改为摸三张牌。你以此法获得的〖当先〗结算时视为已发动过〖伏枥〗)。', + xiefang:'撷芳', + xiefang_info:'锁定技,你计算与其他角色的距离时-X。(X为女性角色数)', + qizhi:'奇制', + qizhi_info:'当你于回合内使用基本牌或锦囊牌指定目标后,你可以弃置不是此牌目标的一名角色的一张牌。若如此做,其摸一张牌。', + jinqu:'进趋', + jinqu_info:'结束阶段开始时,你可以摸两张牌,若如此做,你将手牌弃置至X张。(X为你于此回合发动过〖奇制〗的次数)', + tanhu:'探虎', + tanhu2:'探虎', + tanhu3:'探虎', + tanhu_info:'出牌阶段限一次,你可以与一名其他角色拼点。若你赢,你获得以下效果直到回合结束:你与该角色的距离为1,你对该角色使用的普通锦囊牌不能被【无懈可击】响应。', + mouduan:'谋断', + mouduan_info:'游戏开始时,你获得标记“武”并获得技能〖激昂〗和〖谦逊〗。当你失去手牌后,若手牌数不大于2,你须将你的标记变为“文”,将这两项技能改为〖英姿〗和〖克己〗。一名角色的回合开始前,你可弃一张牌将标记翻回。', + jiqiao:'机巧', + jiqiao_info:'出牌阶段开始时,你可以弃置任意张装备牌,然后亮出牌堆顶两倍数量的牌并获得其中的非装备牌。', + linglong:'玲珑', + linglong_info:'锁定技,若你的装备区没有武器牌,则你使用【杀】的次数上限+1;若你的装备区没有防具牌,视为你装备着【八卦阵】;若你的装备区没有坐骑牌,你的手牌上限+1;若你的装备区没有宝物牌,则你视为拥有技能〖奇才〗。', + fenyong:'愤勇', + fenyong2:'愤勇', + fenyong2_bg:'勇', + fenyong_info:'每当你受到一次伤害后,你可以获得一枚「愤勇」标记;当你拥有「愤勇」标记时,防止你受到的所有伤害。', + xuehen:'雪恨', + xuehen_info:'每个角色的结束阶段开始时,若你有愤勇标记,你弃置之,然后选择一项:1.弃置当前回合角色X张牌(X为你已损失的体力值);2.视为对一名任意角色使用一张【杀】。', + zhenwei:'镇卫', + zhenwei2:'镇卫', + zhenwei_info:'当一名其他角色成为【杀】或黑色锦囊牌的目标时(使用者不是你),若该角色的体力值小于你且此牌的目标角色数为1,你可以弃置一张牌。若如此做,你选择一项:1、摸一张牌,然后将此【杀】或黑色锦囊牌转移给你;2、令此【杀】或黑色锦囊牌无效,然后将此【杀】或黑色锦囊牌置于使用者的武将牌旁,若如此做,当前回合结束后,使用者获得使用者武将牌旁的这些牌。', + jie:'嫉恶', + jie_info:'锁定技,当你使用红色【杀】造成伤害时,此伤害+1。', + dahe:'大喝', + dahe2:'大喝', + dahe2_bg:'喝', + dahe_info:'出牌阶段限一次,你可以与一名其他角色拼点。若你赢,该角色不能使用或打出不为♥花色的【闪】直到回合结束,且你可将该角色拼点的牌交给场上一名体力不多于你的角色。若你没赢,你须展示手牌并弃置其中的一张。', + yinling:'银铃', + yinling_bg:'锦', + yinling_info:'出牌阶段,若你的“锦”小于四张,你可以弃置一张黑色牌并指定一名其他角色。若如此做,你将其的一张牌置于你的武将牌上,称为“锦”。', + junwei:'军威', + junwei2:'军威', + junwei_info:'结束阶段开始时,你可以移去三张“锦”。若如此做,你须指定一名角色并令其选择一项:1.展示一张【闪】,然后你将此【闪】交给一名其他角色。2.该角色失去1点体力,然后你将其装备区内的一张牌移出游戏。该角色的回合结束后,将以此法移出游戏的装备牌移回原处。', + yanxiao:'言笑', + yanxiao2:'言笑', + yanxiao_info:'出牌阶段,你可以将一张♦牌置于一名角色的武将牌上。武将牌上有〖言笑〗牌的角色下个判定阶段开始时,获得〖言笑〗牌及其判定区里的所有牌。', + anxian:'安娴', + anxian_info:'当你使用【杀】对目标角色造成伤害时,你可以防止此伤害,令其弃置一张手牌,然后你摸一张牌;当你成为【杀】的目标后,你可以弃置一张手牌,令此【杀】对你无效,然后此【杀】的使用者摸一张牌。', + xingwu:'星舞', + xingwu_info:'弃牌阶段开始时,你可以将一张与你本回合使用的牌颜色均不同的手牌置于武将牌上:若你有至少三张“星舞”牌,你移去“星舞”牌并选择一名男性角色,该角色受到2点伤害并弃置其装备区的所有牌', + luoyan:'落雁', + luoyan_info:'锁定技。若你的武将牌上有“星舞牌”,你拥有“天香”和“流离”', + yinbing:'引兵', + yinbing_info:'结束阶段开始时,你可以将至少一张非基本牌置于武将牌上。每当你受到【杀】或【决斗】的伤害后,你移去一张「引兵」牌。', + juedi:'绝地', + juedi_info:'锁定技,准备阶段,若你的武将牌上有「引兵」牌,你选择一项:1.移去「引兵」牌,将手牌补至体力上限数;2.将「引兵」牌交给一名体力值不大于你的其他角色,其回复1点体力并摸等量的牌。', + kuangfu:'狂斧', + kuangfu_info:'当你使用【杀】造成伤害时,你可以选择一项:弃置其装备区内的一张牌,或将其装备区内的一张牌移动到你的装备区内。', + xintan:'心惔', + xintan_info:'出牌阶段限一次,你可以移去两张「焚」并选择一名角色,该角色失去一点体力。', + fentian:'焚天', + fentian_info:'锁定技,结束阶段开始时,若你的手牌数少于体力值,你须选择一名攻击范围内的角色,将其一张牌置于你的武将牌上,称为「焚」。锁定技,你的攻击范围+X(X为「焚」的数量)', + zhiri:'炙日', + zhiri_info:'觉醒技,准备阶段开始时,若你的「焚」的数量不小于3,你减1点体力上限,然后获得技能〖心惔〗', + meibu:'魅步', + meibu_info:'其他角色的出牌阶段开始时,若你不在其攻击范围内,你可以令该角色的锦囊牌均视为【杀】,直到该角色以此法使用了一张【杀】或回合结束。若如此做,则直到回合结束,视为你在其攻击范围内。', + mumu:'穆穆', + mumu_info:'出牌阶段限一次,你可以弃置一张【杀】或黑色锦囊牌,然后选择一项:弃置场上的一张武器牌,然后摸一张牌;或将场上的一张防具牌移动到你的装备区里(可替换原防具)。', + zhanyi:'战意', + zhanyi_basic_sha:'战杀', + zhanyi_basic_jiu:'战酒', + zhanyi_basic_tao:'战桃', + zhanyi_info:'出牌阶段限一次,你可以弃置一张牌并失去1点体力,然后根据你弃置的牌获得以下效果直到回合结束:基本牌,你可以将一张基本牌当作【杀】、【酒】或【桃】使用;锦囊牌,摸两张牌且你使用的牌无距离限制;装备牌,你使用【杀】指定目标角色后,其弃置两张牌。', + nuzhan:'怒斩', + nuzhan2:'怒斩', + nuzhan_info:'锁定技,你使用的由一张锦囊牌转化的【杀】不计入出牌阶段的次数限制;锁定技,你使用的由一张装备牌转化的【杀】的伤害值基数+1', + danji:'单骑', + danji_info:'觉醒技,准备阶段开始时,若你的手牌数大于你的体力值且本局游戏的主公不为刘备,你减1点体力上限,然后获得〖马术〗和〖怒斩〗', + jieyuan:'竭缘', + jieyuan_more:'竭缘', + jieyuan_less:'竭缘', + jieyuan_info:'当你对一名其他角色造成伤害时,若其体力值大于或等于你的体力值,你可弃置一张黑色手牌,令此伤害+1;当你受到一名其他角色造成的伤害时,若其体力值大于或等于你的体力值,你可弃置一张红色手牌,令此伤害-1。', + fenxin:'焚心', + fenxin_old:'焚心', + fenxin_info:'锁定技,一名其他角色死亡后,若其身份为:忠臣,你本局内发动〖竭缘〗减少伤害时无视体力值限制;反贼,你本局内发动〖竭缘〗增加伤害时无视体力值限制;内奸,你本局内选择发动〖竭缘〗的牌时无颜色限制。', + fenxin_old_info:'限定技,当你杀死一名非主公角色时,你可以与其交换未翻开的身份牌。(你的身份为主公时不能发动此技能)', + qingyi:'轻逸', + qingyi1:'轻逸', + qingyi2:'轻逸', + qingyi_info:'你可以跳过判定阶段和摸牌阶段。若如此做,视为对一名角色使用了一张无距离限制的【杀】。', + xiandeng:'先登', + xiandeng_info:'锁定技,出牌阶段,你使用的第一张【杀】不计入次数且无距离限制。', + shulv:'熟虑', + shulv_info:'出牌阶段限一次,若你的手牌数大于体力值,则你可以弃置一张牌并摸一张牌。', + xisheng:'牺牲', + xisheng_info:'每名其他角色的回合限一次,你可以将两张牌当做【桃】使用。', + yuhua:'羽化', + yuhua_info:'锁定技,弃牌阶段内,你的非基本牌不计入手牌上限。', + qirang:'祈禳', + qirang_info:'当有装备牌进入你的装备区时,你可以随机获得牌堆中的一张锦囊牌。', + biluan:'避乱', + biluan_info:'摸牌阶段开始时,若有与你距离不大于1的其他角色,你可以放弃摸牌。若如此做,本局内其他角色计算与你的距离时+X。(X为势力数)', + lixia:'礼下', + lixia_info:'锁定技,其他角色的结束阶段开始时,若你不在其攻击范围内,你摸一张牌或令其摸一张牌。本局内其他角色计算与你的距离时-1。', + rebiluan:'避乱', + rebiluan2:'避乱', + rebiluan_info:'结束阶段开始时,若有与你距离不大于1的其他角色,你可以弃置一张牌。若如此做,本局内其他角色计算与你的距离时+X。(X为场上角色数且至多为4)', + relixia:'礼下', + relixia_info:'锁定技,其他角色的结束阶段开始时,若你不在其攻击范围内,你选择一至两项:1.摸一张牌;2.其摸两张牌;3.其回复1点体力。本局内其他角色计算与你的距离时-X(X为你选择的选项数)。', + yishe:'义舍', + yishe_bg:'米', + yishe_info:'结束阶段开始时,若你的武将牌上没有「米」,则你可以摸两张牌。若如此做,你将两张牌置于武将牌上,称为「米」;当有「米」移至其他区域后,若你的武将牌上没有「米」,则你回复1点体力。', + bushi:'布施', + midao:'米道', + bushi_info:'当你受到1点伤害后,或其他角色受到你造成的1点伤害后,受到伤害的角色可以获得你的一张「米」', + midao_info:'一名角色的判定牌生效前,你可以打出一张「米」代替之。', + fengpo:'凤魄', + fengpo_info:'当你于出牌阶段内使用第一张【杀】或【决斗】指定目标后,若目标角色数为1,你可以选择一项:1.摸X张牌;2.令此牌的伤害值基数+X。(X为其手牌中方牌的数量)', + chenqing:'陈情', + chenqing_info:'每轮限一次,当一名角色处于濒死状态时,你可以令另一名其他角色摸四张牌,然后其弃置四张牌。若其以此法弃置的四张牌花色各不相同,则视为该角色对濒死的角色使用一张【桃】。', + mozhi:'默识', + mozhi_info:'结束阶段开始时,你可以将一张手牌当作你本回合出牌阶段内使用的第一张基本或普通锦囊牌使用。然后,你可以将一张手牌当做你本回合出牌阶段内使用的第二张基本或普通锦囊牌使用。(你不能通过此技能使用【酒】)', + ranshang:'燃殇', + ranshang2:'燃殇', + ranshang_info:'锁定技,当你受到1点火焰伤害后,你获得1枚“燃”标记;结束阶段开始时,你失去X点体力(X为“燃”标记的数量)', + hanyong:'悍勇', + hanyong_info:'当你使用【南蛮入侵】或【万箭齐发】时,若你的体力值小于游戏轮数,你可以令此牌的伤害值基数+1。', + + yicong:'义从', + yongsi:'庸肆', + yongsi1:'庸肆', + yongsi2:'庸肆', + bifa:'笔伐', + bifa2:'笔伐', + songci:'颂词', + baobian:'豹变', + lihun:'离魂', + chongzhen:'冲阵', + chongzhen1:'冲阵', + chongzhen2:'冲阵', + yuanhu:'援护', + tianming:'天命', + mizhao:'密诏', + duwu:'黩武', + mingzhe:'明哲', + huanshi:'缓释', + hongyuan:'弘援', + aocai:'傲才', + aocai2:'傲才', + aocai2_backup:'傲才', + aocai3:'傲才', + huxiao:'虎啸', + huxiao3:'虎啸', + xueji:'雪恨', + wuji:'武继', + shushen:'淑慎', + shenzhi:'神智', + xiongyi:'雄异', + junbing:'郡兵', + junbing2:'郡兵', + quji:'去疾', + sijian:'死谏', + suishi:'随势', + suishi2:'随势', + xiaoguo:'骁果', + duanxie:'断绁', + fenming:'奋命', + guixiu:'闺秀', + cunsi:'存嗣', + yongjue:'勇决', + hengzheng:'横征', + shengxi:'生息', + shoucheng:'守成', + shangyi:'尚义', + zniaoxiang:'鸟翔', + zhendu:'鸩毒', + qiluan:'戚乱', + qiluan2:'戚乱', + qiluan3:'戚乱', + shenxian:'甚贤', + oldshenxian:'甚贤', + qiangwu:'枪舞', + moukui:'谋溃', + moukui2:'谋溃', + lirang:'礼让', + mingshi:'名士', + liangzhu:'良助', + kaikang:'慷忾', + wangzun:'妄尊', + tongji:'同疾', + kuiwei:'溃围', + kuiwei2:'溃围', + yanzheng:'严整', + zhoufu:'咒缚', + zhoufu2:'咒缚', + zhoufu3:'咒缚', + yingbin:'影兵', + reyingbing:'影兵', + rezhoufu:'咒缚', + rezhoufu2:'咒缚', + fenxun:'奋迅', + fenxun2:'奋迅', + spmengjin:'猛进', + xiemu:'协穆', + xiemu2:'协穆', + oldxiemu:'协穆', + naman:'纳蛮', + zuixiang:'醉乡', + manjuan:'漫卷', + taichen:'抬榇', + jilei:'鸡肋', + jilei2:'鸡肋', + jilei2_bg:'肋', + fulu:'符箓', + fuji:'助祭', + yawang:'雅望', + xunzhi:'殉志', + fanxiang:'返乡', + fanxiang_info:'觉醒技,准备阶段开始时,若场上有已受伤且你发动过〖良助〗的选项二的角色,则你加1点体力上限并回复1点体力,失去技能〖良助〗并获得技能〖枭姬〗', + xunzhi_info:'准备阶段开始时,若你的上家和下家与你的体力值均不相等,你可以失去1点体力。若如此做,你本局内手牌上限+2。', + yawang_info:'锁定技,摸牌阶段开始时,你改为摸X张牌,然后你于本回合的出牌阶段内至多使用X张牌(X为与你体力值相等的角色数)', + fuji_info:'当一名角色造成雷属性伤害时,你可以令其进行判定,若结果为黑色,此伤害+1;若结果为红色,该角色获得判定牌。', + fulu_info:'当你声明使用普通【杀】时,你可以将此【杀】改为雷【杀】。', + jilei_info:'当你受到有来源的伤害后,你可以声明一种牌的类别。若如此做,你令伤害来源不能使用、打出或弃置此类别的手牌,直到其下个回合开始。', + danlao:'啖酪', + danlao_info:'当你成为一张指定了多个目标的【杀】或普通锦囊牌的目标时,你可以摸一张牌,令此牌对你无效。', + gongao:'功獒', + zhuiji:'追击', + chouhai:'仇海', + chouhai_info:'锁定技,当你受到伤害时,若你没有手牌,此伤害+1。', + rechouhai:'仇海', + rechouhai_info:'锁定技,当你受到渠道为【杀】的伤害时,若你没有手牌,此伤害+1。', + guiming:'归命', + guiming_info:'主公技,锁定技,你将残蚀描述中的“已受伤角色”改为“已受伤角色或其他吴势力角色”', + chixin:'赤心', + chixin1:'赤心', + chixin2:'赤心', + chixin_info:'你可以将♦牌当作【杀】或【闪】使用或打出。出牌阶段,你对在你攻击范围内且本回合内未成为过你使用的【杀】的目标的角色使用的【杀】没有次数限制。', + suiren:'随仁', + suiren_info:'限定技,准备阶段开始时,你可以失去技能〖义从〗,然后加1点体力上限并回复1点体力,然后令一名角色摸三张牌。', + canshi:'残蚀', + canshi2:'残蚀', + canshi_info:'摸牌阶段开始时,你可以改为摸X张牌(X为已受伤的角色数),若如此做,当你于此回合内使用基本牌或锦囊牌时,你弃置一张牌。', + recanshi:'残蚀', + recanshi2:'残蚀', + recanshi_info:'摸牌阶段开始时,你可以多摸X张牌(X为已受伤的角色数),若如此做,当你于此回合内使用【杀】或锦囊牌时,你弃置一张牌。', + zhuiji_info:'锁定技,你与体力值不大于你的角色的距离视为1。', + kunfen:'困奋', + kunfen_info:'锁定技,结束阶段开始时,你失去1点体力,然后摸两张牌。', + fengliang:'逢亮', + fengliang_info:'觉醒技,当你进入濒死状态时,你减1点体力上限,将体力值回复至2点,获得技能〖挑衅〗并将〖困奋〗改为非锁定技。', + oldcihuai:'刺槐', + oldcihuai2:'刺槐', + oldcihuai_info:'出牌阶段开始时,你可以展示手牌。若其中没有【杀】,则当你于此阶段内手牌数变化之前/有角色死亡之前需要使用【杀】时,你可以使用无对应实体牌的【杀】。', + cihuai:'刺槐', + cihuai_info:'出牌阶段开始时,若你的手牌中没有【杀】,则你可以展示你的手牌,视为对一名角色使用一张【杀】。', + gongao_info:'锁定技,当一名角色死亡后,你增加一点体力上限,回复一点体力。', + juyi:'举义', + juyi_info:'觉醒技,准备阶段开始时,若你已受伤且体力上限大于存活角色数,你须将手牌摸至体力上限,然后获得技能〖崩坏〗和〖威重〗。', + weizhong:'威重', + weizhong_info:'锁定技,当你的体力上限增加或减少时,你摸一张牌。', + taichen_info:'出牌阶段限一次,你可以失去1点体力,视为对一名角色使用一张【杀】。(不计入出牌阶段的使用次数限制)', + manjuan_info:'其他角色的牌因弃置而进入弃牌堆后,你可以弃置一张花色与之不同的牌,然后获得此牌。', + xinmanjuan:'漫卷', + xinmanjuan_info:'锁定技,当你不因【漫卷】或【醉乡】而获得牌时,你将此牌置入弃牌堆。然后若此时处于你的回合内,则你可以从弃牌堆中选择获得一张与此牌点数相同的其他牌。', + zuixiang_info:'限定技,准备阶段开始时,你可以展示牌堆顶的3张牌并置于你的武将牌上。你不能使用或打出与该些牌同类的牌,所有同类牌对你无效。之后的每个准备阶段,你须重复展示一次,直到这些牌中任意两张点数相同。然后,你获得这些牌。', + naman_info:'当其他角色打出的【杀】进入弃牌堆时,你可以获得之。', + xiemu_info:'出牌阶段限一次,你可以弃置一张【杀】并选择一个势力。若如此做,直到你的下回合开始时,当你成为该势力的其他角色使用的黑色牌的目标后,你摸两张牌。', + oldxiemu_info:'当你成为其他角色使用的黑色牌的目标后,你可以弃置一张【杀】,然后摸两张牌。', + spmengjin_info:'当你使用【杀】指定目标后,你可以弃置目标角色的一张牌。', + fenxun_info:'出牌阶段限一次,你可以弃置一张牌并选择一名其他角色,你于本回合内至其的距离视为1。', + rezhoufu_info:'出牌阶段限一次,你可以用一张牌对一名其他角色施“咒”。当有“咒”的角色判定时,将“咒”作为判定牌;一名角色的回合结束时,你令本回合移除过“咒”的角色各失去1点体力', + reyingbing_info:'锁定技,有“咒”的角色使用与“咒”颜色相同的牌时,你摸一张牌;若这是你第二次因该“咒”摸牌,你获得该"咒"。', + yingbin_info:'锁定技,有“咒”的角色使用与“咒”花色相同的牌时,你摸一张牌;当你因同一名角色的同一张“咒”的效果摸第二张牌时,移去该“咒”。', + zhoufu_info:'出牌阶段限一次,你可以将一张手牌置于一名没有“咒”的其他角色的武将牌旁,称为“咒”。当有“咒”的角色判定时,其改为将“咒”作为判定牌;一名角色的回合结束时,若有角色于此回合因判定而移除过“咒”,则你令这些角色各失去1点体力。', + yanzheng_info:'若你的手牌数大于你的体力值,则你可以将你装备区内的牌当作【无懈可击】使用。', + kuiwei_info:'结束阶段开始时,你可以摸2+X张牌并记录X,然后将你的武将牌翻面(X为场上所有角色装备区内武器牌数目之和)。你的下个摸牌阶段开始时,你弃置X张牌。', + tongji_info:'锁定技。若你的手牌数大于你的体力值,则攻击范围包含你的其他角色使用【杀】时不能指定你以外的角色为目标。', + wangzun_info:'其他角色的准备阶段开始时,你可以摸一张牌。若如此做,该角色此回合的手牌上限-1。然后你不能再发动〖妄尊〗直到回合开始。', + kaikang_info:'当一名角色成为【杀】的目标后,若你至该角色的距离为1,你可以摸一张牌。若如此做,你交给其一张牌并展示之。若为装备牌,该角色可以使用此牌。', + liangzhu_info:'当一名角色于其出牌阶段内回复体力时,你可以选择一项:1、摸一张牌;2、令该角色摸两张牌。', + mingshi_info:'当你受到伤害时,若伤害来源的体力值大于你,你可以弃置一张黑色手牌,令伤害值-1。', + lirang_info:'当你的牌因弃置而置入弃牌堆后,你可以将其中的任意张牌交给其他角色。', + moukui_info:'当你使用【杀】指定目标后,你可以选择一项:摸一张牌,或弃置其一张牌。若如此做,当此【杀】被【闪】抵消时,目标角色弃置你的一张牌。 ', + qiangwu_info:'出牌阶段,你可以进行判定。若如此做,直到回合结束,你使用点数小于判定结果的【杀】时不受距离限制,且你使用点数大于判定结果的【杀】时不计入出牌阶段的使用次数限制。', + shenxian_info:'每名角色的回合限一次,你的回合外,当有其他角色因弃置而失去基本牌时,你可以摸一张牌。', + oldshenxian_info:'你的回合外,每当有其他角色因弃置而失去基本牌时,你可以摸一张牌。', + qiluan_info:'一名角色的回合结束时,你可以摸3X+Y张牌。(X为你本回合内杀死过的角色数,Y为本回合内其他角色杀死过的角色数)', + //qiluan_info_guozhan:'一名角色的回合结束时,若你于回合内杀死过角色,则你可以摸三张牌。', + zhendu_info:'一名角色的出牌阶段开始时,你可以弃置一张手牌,视为该角色使用了一张【酒】。若该角色不是你,你对其造成一点伤害。', + //zhendu_info_guozhan:'其他角色的出牌阶段开始时,你可以弃置一张手牌,视为该角色使用了一张【酒】。若如此做,你对其造成一点伤害。', + shangyi_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后弃置其中的一张黑色牌。', + zniaoxiang_info:'锁定技,当你使用【杀】指定目标后,你令目标角色响应此【杀】所需要使用的【闪】的数目+1。', + shoucheng_info:'当一名其他角色于其回合外失去手牌时,若其没有手牌,则你可令该角色摸一张牌。', + shengxi_info:'弃牌阶段开始时,若你本回合内未造成过伤害,则你可以摸两张牌。', + hengzheng_info:'摸牌阶段开始时,若你的体力值为1或你没有手牌,则你可以放弃摸牌,改为获得每名其他角色区域内的一张牌。', + cunsi_info:'限定技,出牌阶段,你可以将所有手牌交给一名男性角色。该角色获得技能【勇决】,然后你将武将牌翻面。', + yongjue_info:'每回合限一次。当其他角色于回合内使用的【杀】结算完成后,若你不是此【杀】的目标角色,则你可以获得之。', + guixiu_info:'当你成为【杀】的目标后,若你的手牌数小于体力值,则你可以摸一张牌。', + fenming_info:'结束阶段开始时,若你处于横置状态,你可以弃置所有处于横置状态的角色的各一张牌。', + duanxie_info:'出牌阶段限一次,你可以令一名其他角色横置,若如此做,你横置。', + xiaoguo_info:'其他角色的结束阶段开始时,你可以弃置一张基本牌,令该角色选择一项:1.弃置一张装备牌,然后你摸一张牌;2.受到你对其造成的1点伤害。', + sijian_info:'当你失去最后的手牌时,你可以弃置一名其他角色的一张牌。', + suishi_info:'当其他角色进入濒死状态时,伤害来源可以令你摸一张牌;当其他角色死亡时,伤害来源可以令你失去1点体力', + quji_info:'出牌阶段限一次,你可以弃置X张牌(X为你已损失的体力值),然后令至多X名已受伤的角色各回复1点体力。若你以此法弃置的牌中有黑色牌,你失去一点体力。', + junbing_info:'一名角色的结束阶段开始时,若其手牌数不大于1,该角色可以摸一张牌。若如此做,该角色将所有手牌交给你,然后你交给其等量的牌。', + xiongyi_info:'限定技,出牌阶段,你可以选择至多三名角色,这些角色各摸三张牌;若你选择的角色数不超过2,你回复1点体力', + xiongyi_info_guozhan:'限定技,出牌阶段,你可以令与你势力相同的所有角色各摸三张牌,然后若你的势力是角色最少的势力(或之一),则你回复1点体力。', + shenzhi_info:'准备阶段开始时,你可以弃置所有手牌。若你以此法弃置的牌数不小于X,你回复1点体力(X为你的体力值)。', + shushen_info:'当你回复1点体力时,你可以令一名其他角色选择回复1点体力或摸两张牌。', + wuji_info:'觉醒技,结束阶段开始时,若你于此回合内造成过3点或更多伤害,你加1点体力上限并回复1点体力,失去〖虎啸〗,然后从场上、牌堆或弃牌堆中获得【青龙偃月刀】', + xueji_info:'出牌阶段限一次,你可以弃置一张红色牌,然后选择至多X名角色,横置这些角色并对其中一名角色造成1点火焰伤害。(X为你已损失的体力值且至少为1)', + huxiao_info:'锁定技,当你造成火属性伤害时,该角色摸一张牌。然后,你于此回合内对其使用牌没有次数限制。', + aocai_info:'当你于回合外需要使用或打出一张基本牌时,你可以观看牌堆顶的两张牌。若你观看的牌中有此牌,你可以使用打出之。', + hongyuan_info:'摸牌阶段,你可以少摸一张牌并指定至多两名其他角色。若如此做,这些角色各摸一张牌。', + hongyuan_info_combat:'摸牌阶段,你可以少摸一张牌。若如此做,其他友方角色各摸一张牌。', + huanshi_info:'一名角色的判定牌生效前,你可令其观看你的手牌。若如此做,该角色选择你的一张牌,你打出此牌代替之。', + mingzhe_info:'当你于回合外使用或打出红色牌,或因弃置失去一张红色牌后,你可以摸一张牌。', + duwu_info:'出牌阶段,你可以弃置X张牌对你攻击范围内的一名其他角色造成1点伤害(X为该角色的体力值)。若该角色因此法进入濒死状态,则你于濒死状态结算后失去1点体力,且本回合不能再发动〖黩武〗。', + tianming_info:'当你成为【杀】的目标时,你可以弃置两张牌(不足则全弃,无牌则不弃),然后摸两张牌;若此时全场体力值最多的角色仅有一名且不是你,该角色也可以如此做。', + mizhao_info:'出牌阶段限一次,你可以将所有手牌交给一名其他角色。若如此做,你令该角色与你指定的另一名有手牌的角色拼点,视为拼点赢的角色对没赢的角色使用一张【杀】。', + yuanhu_info:'结束阶段开始时,你可以将一张装备牌置于一名角色的装备区里,然后根据此装备牌的类型执行以下对应效果。武器牌:弃置该角色距离1以内的一名角色区域中的一张牌;防具牌:该角色摸一张牌;坐骑牌:该角色回复1点体力。', + lihun_info:'出牌阶段限一次,你可以弃置一张牌并选择一名其他男性角色。若如此做,你将武将牌翻面并获得其所有手牌。出牌阶段结束时,你交给其X张牌。(X为该角色的体力值)', + chongzhen_info:'当你发动〖龙胆〗使用或打出一张牌时,你可以获得对方的一张手牌。', + bifa_info:'结束阶段开始时,你可以将一张手牌移出游戏并指定一名其他角色。该角色的准备阶段开始时,其观看你移出游戏的牌并选择一项:交给你一张与此牌类型相同的手牌并获得此牌;或将此牌置入弃牌堆,然后失去1点体力。', + songci_info:'出牌阶段,你可以选择一项:令一名手牌数小于其体力值的角色摸两张牌;或令一名手牌数大于其体力值的角色弃置两张牌。每局游戏每名角色限一次。', + yongsi_info:'锁定技,摸牌阶段,你多摸X张牌。弃牌阶段开始时,你弃置X张牌。(X为场上势力数)', + yicong_info:'锁定技,当你的体力值大于2时,你计算与其他角色的距离时-1;当你的体力值不大于2时,其他角色计算与你的距离时+1。', + baobian_info:'锁定技,若你的体力值为3或更少,你视为拥有技能〖挑衅〗;若你的体力值为2或更少;你视为拥有技能〖咆哮〗;若你的体力值为1,你视为拥有技能〖神速〗。', + bingzhao:'秉诏', + bingzhao_info:'主公技,游戏开始时,你选择一个其他势力。当你对该势力的角色发动〖骨疽〗时,其可令你额外摸一张牌。', + sp_gongsunzan:'SP公孙瓒', + sp_simazhao:'SP司马昭', + sp_wangyuanji:'SP王元姬', + sp_xinxianying:'SP辛宪英', + sp_liuxie:'SP刘协', + spyicong_info:'弃牌阶段结束时,你可以将任意张牌置于你的武将牌上,称为「扈」。每有一张「扈」,其他角色与你计算距离时便+1。', + spyicong:'义从', + sptuji:'突骑', + sptuji_info:'准备开始时,你将所有「扈」置于弃牌堆,然后你本回合内计算与其他角色的距离时-X。若X不大于1,你摸一张牌。(X为以此法进入弃牌堆的「扈」的数量)', + sphuangen:'皇恩', + sphuangen_info:'一名角色使用锦囊牌指定目标时,若此牌的目标数大于1,则你可以令此牌对其中的至多X个目标无效,然后摸一张牌。(X为你的体力值)', + sphantong:'汉统', + sphantong_gain:'汉统', + sphantong_info:'当你的牌因弃牌阶段的游戏规则要求而进入弃牌堆后,你可以将这些牌置于你的武将牌上,称为「诏」。一名角色的回合开始时,你可以弃置一张「诏」并获得〖护驾〗/〖激将〗/〖救援〗/〖血裔〗中的一个技能直至当前回合结束。', + spzhaoxin:'昭心', + spzhaoxin_info:'摸牌阶段结束时,你可以展示所有手牌,然后视为使用一张【杀】。', + splanggu:'狼顾', + splanggu_rewrite:'狼顾', + splanggu_info:'当你受到有来源的伤害后,你可以进行判定(此判定结果生效前,你可以打出一张手牌替换判定牌)。然后你可以观看伤害来源的手牌并弃置其中的任意张与判定结果花色相同的牌。', + spfuluan:'扶乱', + spfuluan_info:'出牌阶段限一次,你可以弃置三张花色相同的牌并选择攻击范围内的一名角色。若如此做,该角色翻面且你不能使用【杀】直到回合结束', + spshude:'淑德', + spshude_info:'结束阶段开始时,你可以将手牌补至体力上限。', + spmingjian:'明鉴', + spmingjian_info:'一名角色的回合开始时,你可以选择一项:①弃置一张牌,然后其跳过本回合的判定阶段。②将一张手牌置于其武将牌上,然后其本回合内进行判定时不触发「判定结果生效前」的时机,且其回合结束时将此牌置入弃牌堆。', + spyinzhi:'隐智', + spyinzhi_info:'当你受到1点伤害后,你可以展示牌堆顶的两张牌。若其中有黑桃牌,则你可以进行至多X次「令一名角色获得伤害来源的一张手牌」的步骤,然后获得其余的牌。(X为其中黑桃牌的数量)', + sunshao:'孙邵', + bizheng:'弼政', + bizheng_info:'摸牌阶段结束时,你可以令一名其他角色摸两张牌。然后,若你的手牌数大于体力上限,你弃置两张牌。若其的手牌数大于体力上限,其弃置两张牌。', + yidian:'佚典', + yidian_info:'当你使用牌选择目标时,若弃牌堆中没有与此牌名称相同的牌,则你可以为此牌增加一个目标(无距离限制)。', + xinlianji:'连计', + xinlianji_info:'出牌阶段限一次,你可以弃置一张手牌,令其使用牌堆中的一张随机武器牌,然后选择一项:对你指定的一名角色使用【杀】,或令你将其装备区里的武器牌交给任意角色。', + xinmoucheng:'谋逞', + xinmoucheng_info:'觉醒技,准备阶段,若你已经发动了3次以上的〖连计〗,则你失去〖连计〗并获得〖矜功〗。', + xinjingong:'矜功', + xinjingong_info:'出牌阶段限一次,你可以将一张【杀】或装备牌当做三张随机锦囊牌中的一张使用。', + caiyang:'蔡阳', + yinka:'印卡', + zhangling:'张陵', + zlhuji:'虎骑', + zlhuji_info:'锁定技,你与其他角色的距离-1,你于回合外受到伤害后进行判定,若结果为红色,视为你对伤害来源使用一张【杀】(无视距离)。', + zlshoufu:'授符', + zlshoufu2:'授符', + zlshoufu_info:'出牌阶段限一次,你可摸一张牌,然后将一张手牌置于一名没有【箓】的角色的武将牌上,称为【箓】;其不能使用和打出与【箓】同类型的牌。该角色受伤后,或于弃牌阶段弃置至少2张与【箓】同类型的牌后,将【箓】置入弃牌堆。', + ol_zhangchangpu:'OL张昌蒲', + olxingshen:'省身', + olxingshen_info:'当你受到伤害后,你可以随机摸两张牌。若如此做,你获得X个“省”,且下一次发动〖严教〗展示牌时移去所有“省”并多展示等量的牌。(X为你已损失的体力值,且你至多拥有6个“省”)', + caoshuang:'曹爽', + tuogu:'托孤', + tuogu_info:'限定技,一名角色死亡时,你可以令其选择其武将牌上的一个技能(主公技,限定技,觉醒技等特殊技能除外),然后你获得其选择的技能。', + shanzhuan:'擅专', + shanzhuan_info:'当你对其他角色造成伤害后,你可以将其判定区的一张牌置于其的判定区。若此牌不为延时锦囊牌且此牌为:红色,此牌视为【乐不思蜀】;黑色,此牌视为【兵粮寸断】。', + + sp_default:"常规", + sp_zhongdan:"忠胆英杰", + sp_star:"桌游志·SP", + sp_guozhan:"国战", + sp_guozhan2:"国战移植", + sp_others:"其他", + sp_single:'新1v1', + sp_sticker:'桌游志·贴纸', + }, + }; +}); diff --git a/character/sp2.js b/character/sp2.js index 6f1bf6b47..31b9cabd4 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + caoxing:['male','qun',4,['cxliushi','zhanwan'],['unseen']], re_maliang:['male','shu',3,['rexiemu','heli'],['unseen']], ol_yujin:['male','wei',4,['rezhenjun']], ol_xinxianying:['female','wei',3,['caishi','zhongjian']], @@ -58,12 +59,69 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_zizouqi:["mangyachang","xugong","zhangchangpu"], sp_sbfm:["lisu","xinpi","zhangwen"], sp_shengun:["puyuan","guanlu","gexuan","xushao"], - sp_baigei:['re_panfeng','xingdaorong'], + sp_baigei:['re_panfeng','xingdaorong','caoxing'], sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"], sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','liuzan','re_sunluyu','caobuxing','ol_xinxianying','ol_yujin','re_maliang'], } }, skill:{ + cxliushi:{ + enable:'phaseUse', + filter:function(event,player){ + return player.countCards('he',{suit:'heart'})>0; + }, + filterCard:{suit:'heart'}, + position:'he', + filterTarget:function(card,player,target){ + return player.canUse('sha',target); + }, + discard:false, + prepare:'throw', + content:function(){ + "step 0" + cards[0].fix(); + ui.cardPile.insertBefore(cards[0],ui.cardPile.firstChild); + game.updateRoundNumber(); + player.useCard({name:'sha',isCard:true},false,targets); + "step 1" + if(target.getHistory('damage',function(evt){ + var evt2=evt.getParent('useCard'); + return evt.card==evt2.card&&evt2.getParent()==event; + }).length){ + target.addSkill('cxliushi2'); + target.addMark('cxliushi2',1,false); + } + }, + }, + cxliushi2:{ + mod:{ + maxHandcard:function(player,num){ + return num-player.countMark('cxliushi2'); + }, + }, + onremove:true, + intro:{ + content:'手牌上限-#', + }, + }, + zhanwan:{ + trigger:{global:'phaseDiscardEnd'}, + forced:true, + filter:function(event,player){ + return event.player.hasSkill('cxliushi2')&&event.player.getHistory('lose',function(evt){ + if(evt.type=='discard'&&evt.getParent('phaseDiscard')==event) return true; + }).length>0; + }, + logTarget:'player', + content:function(){ + trigger.player.removeSkill('cxliushi2'); + var num=0; + trigger.player.getHistory('lose',function(evt){ + if(evt.type=='discard'&&evt.getParent('phaseDiscard')==trigger) num+=evt.cards2.length; + }); + player.draw(num); + }, + }, rexiemu:{ audio:2, trigger:{player:'phaseJieshuBegin'}, @@ -1474,7 +1532,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }).length>0 }); if(player==target&&bool) player.draw(2); - else if(player!=target&&!bool) player.chooseToDiscard('he',2,true); + else if(player!=target&&!bool) player.chooseToDiscard('h',2,true); }, ai:{ order:function(){ @@ -4500,7 +4558,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' if(result.bool){ player.logSkill('xinfu_bijing'); - player.showCards(result.cards); + //player.showCards(result.cards); player.storage.xinfu_bijing=result.cards[0]; } }, @@ -5186,7 +5244,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "xinfu_tunan":"图南", "xinfu_tunan_info":"出牌阶段限一次,你可以展示牌堆顶的一张牌并选择一名其他角色,然后该角色选择一项:使用此牌(无距离限制);或将此牌当普通【杀】使用。", "xinfu_bijing":"闭境", - "xinfu_bijing_info":"结束阶段,你可以展示一张手牌并标记为“闭境”。若你于回合外失去“闭境”牌,则当前回合角色的弃牌阶段开始时,其需弃置两张牌。你的准备阶段,弃置手牌中的“闭境”牌。", + "xinfu_bijing_info":"结束阶段,你可以选择一张手牌并标记为“闭境”。若你于回合外失去“闭境”牌,则当前回合角色的弃牌阶段开始时,其需弃置两张牌。你的准备阶段,弃置手牌中的“闭境”牌。", "xinfu_zhenxing":"镇行", "xinfu_zhenxing_info":"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的至多三张牌,然后你获得其中与其余牌花色均不相同的一张牌。", "xinfu_qianxin":"遣信", @@ -5357,7 +5415,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ wlcuorui_info:'出牌阶段开始时,你可以弃置你或队友区域里的一张牌。若如此做,你选择一项:1.弃置对手装备区里至多两张与此牌颜色相同的牌;2.展示对手的共计两张手牌,然后获得其中与此牌颜色相同的牌。', re_panfeng:'潘凤', xinkuangfu:'狂斧', - xinkuangfu_info:'出牌阶段限一次,你可选择:1,弃置装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】造成伤害,你摸两张牌。2,弃置一名其他角色装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】未造成伤害,你弃置两张牌。', + xinkuangfu_info:'出牌阶段限一次,你可选择:1,弃置装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】造成伤害,你摸两张牌。2,弃置一名其他角色装备区里的一张牌,你使用无对应实体牌的普【杀】。若此【杀】未造成伤害,你弃置两张手牌。', xingdaorong:'邢道荣', xuxie:'虚猲', xuxie_info:'出牌阶段开始时,你可以减1点体力上限并选择所有与你距离为1的角色,弃置这些角色的各一张牌或令这些角色各摸一张牌。出牌阶段结束时,若你的体力上限为全场最少,则你加1点体力上限。', @@ -5423,7 +5481,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rexiemu_info:'结束阶段,若全场没有“协穆”标记,你可以选择一名角色获得“协穆”标记直到你的下回合开始。你或该角色在各自的回合外使用或打出手牌时,你与其各摸一张牌(每回合限一次)。', heli:'贺励', heli_info:'出牌阶段限一次,你可以选择手牌数比你少的一名其他角色。该角色展示所有手牌,然后每缺少一种类型的牌,便从牌堆中随机获得一张此类型的牌。', - + caoxing:'曹性', + cxliushi:'流矢', + cxliushi2:'流矢', + cxliushi_info:'出牌阶段,你可以将一张红桃牌置于牌堆顶,视为对一名角色使用一张不计入次数的【杀】。若此【杀】造成伤害,该角色手牌上限永久-1。', + zhanwan:'斩腕', + zhanwan_info:'锁定技,受到【流矢】效果影响的角色若弃牌阶段有弃牌,你摸等量的牌,然后移除【流矢】的效果。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", diff --git a/character/standard.js b/character/standard.js index e501a47f0..6363dde94 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1,2816 +1,2836 @@ -'use strict'; -game.import('character',function(lib,game,ui,get,ai,_status){ - return { - name:'standard', - connect:true, - characterSort:{ - standard:{ - standard_2008:["caocao","simayi","xiahoudun","zhangliao","xuzhu","guojia","zhenji","liubei","guanyu","zhangfei","zhugeliang","zhaoyun","machao","huangyueying","sunquan","ganning","lvmeng","huanggai","zhouyu","daqiao","luxun","sunshangxiang","huatuo","lvbu","diaochan",], - standard_2013:["huaxiong","re_yuanshu"], - standard_2019:["gongsunzan","xf_yiji"], - }, - }, - character:{ - caocao:['male','wei',4,['jianxiong','hujia'],['zhu']], - simayi:['male','wei',3,['fankui','guicai']], - xiahoudun:['male','wei',4,['ganglie']], - zhangliao:['male','wei',4,['tuxi']], - xuzhu:['male','wei',4,['luoyi']], - guojia:['male','wei',3,['tiandu','yiji']], - zhenji:['female','wei',3,['luoshen','qingguo']], - liubei:['male','shu',4,['rende','jijiang'],['zhu']], - guanyu:['male','shu',4,['wusheng']], - zhangfei:['male','shu',4,['paoxiao']], - zhugeliang:['male','shu',3,['guanxing','kongcheng']], - zhaoyun:['male','shu',4,['longdan']], - machao:['male','shu',4,['mashu','tieji']], - huangyueying:['female','shu',3,['jizhi','qicai']], - sunquan:['male','wu',4,['zhiheng','jiuyuan'],['zhu']], - ganning:['male','wu',4,['qixi']], - lvmeng:['male','wu',4,['keji']], - huanggai:['male','wu',4,['kurou']], - zhouyu:['male','wu',3,['yingzi','fanjian']], - daqiao:['female','wu',3,['guose','liuli']], - luxun:['male','wu',3,['qianxun','lianying']], - sunshangxiang:['female','wu',3,['xiaoji','jieyin']], - huatuo:['male','qun',3,['qingnang','jijiu']], - lvbu:['male','qun',4,['wushuang']], - diaochan:['female','qun',3,['lijian','biyue']], - huaxiong:['male','qun',6,['yaowu']], - gongsunzan:['male','qun',4,['yicong']], - - xf_yiji:["male","shu",3,["xinfu_jijie","xinfu_jiyuan"],[]], - re_yuanshu:['male','qun',4,['wangzun','tongji']], - }, - characterIntro:{ - liubei:'先主姓刘,讳备,字玄德,涿郡涿县人,汉景帝子中山靖王胜之后也。以仁德治天下。', - guanyu:'字云长,本字长生,并州河东解州人。五虎上将之首,爵至汉寿亭侯,谥曰“壮缪侯”。被奉为“关圣帝君”,崇为“武圣”。', - zhangfei:'字翼德,涿郡人,燕颔虎须,豹头环眼。有诗云:“长坂坡头杀气生,横枪立马眼圆睁。一声好似轰雷震,独退曹家百万兵”。', - zhugeliang:'字孔明,号卧龙,琅琊阳都人,蜀汉丞相。在世时被封为武乡侯,谥曰忠武侯。著有《出师表》、《诫子书》等。怀不世之才,以空城戏司马,能观星象而通鬼神。', - zhaoyun:'字子龙,常山真定人。身长八尺,姿颜雄伟。长坂坡单骑救阿斗,先主云:“子龙一身都是胆也。”', - machao:'字孟起,扶风茂陵人。面如冠玉,目如流星,虎体猿臂,彪腹狼腰,声雄力猛。因衣着讲究,举止非凡,故人称“锦马超”。麾铁骑,捻金枪。', - huangyueying:'荆州沔南白水人,沔阳名士黄承彦之女,诸葛亮之妻,诸葛瞻之母。容貌甚丑,而有奇才:上通天文,下察地理,韬略近于诸书无所不晓,诸葛亮在南阳闻其贤而迎娶。', - sunquan:'吴大帝,字仲谋,吴郡富春县人。统领吴与蜀魏三足鼎立,制衡天下。', - ganning:'字兴霸,巴郡临江人,祖籍荆州南阳郡。为人勇猛刚强,忠心耿耿,勇往无前。曾带兵百人于二更奇袭曹营,大挫其锐气。', - lvmeng:'字子明,汝南富陂人。陈寿评曰:“吕蒙勇而有谋断,识军计,谲郝普,擒关羽,最其妙者。初虽轻果妄杀,终于克己,有国士之量,岂徒武将而已乎!”', - huanggai:'字公覆,零陵郡泉陵县人。官至偏将军、武陵太守。以苦肉计骗曹孟德,亲往诈降,火烧战船,重创敌军。', - zhouyu:'字公瑾,庐江舒县人,任东吴三军大都督,雄姿英发,人称“美周郎”。赤壁之战前,巧用反间计杀了精通水战的叛将蔡瑁、张允。', - daqiao:'庐江皖县人,为乔公长女,孙策之妻,小乔之姊。与小乔并称为“江东二乔”,容貌国色流离。', - luxun:'本名陆议,字伯言,吴郡吴县人。历任东吴大都督、丞相。吴大帝孙权兄孙策之婿,世代为江东大族。以谦逊之书麻痹关羽,夺取荆州,又有火烧连营大破蜀军。', - sunshangxiang:'孙夫人,乃孙权之妹。刘备定荆州,孙权进妹与其结姻,重固盟好。孙夫人才捷刚猛,有诸兄之风。后人为其立庙,号曰“枭姬庙”。', - caocao:'魏武帝曹操,字孟德,小名阿瞒、吉利,沛国谯人。精兵法,善诗歌,乃治世之能臣,乱世之奸雄也。', - simayi:'晋宣帝,字仲达,河内温人。曾任职过曹魏的大都督,太尉,太傅。少有奇节,聪明多大略,博学洽闻,伏膺儒教,世之鬼才也。', - xiahoudun:'字元让,沛国谯人。有拔矢啖睛之勇,性格勇猛刚烈。', - zhangliao:'字文远,魏雁门马邑人。官至前将军、征东将军、晋阳侯。武功高强,又谋略过人,多次建立奇功,以800人突袭孙权十万大军,皆望风披靡。', - xuzhu:'字仲康,谯国谯县人。和典韦一同统率着曹操的亲卫队“虎卫军”。因为他十分勇猛,所以有“虎痴”的绰号。曾有裸衣斗马超之举。', - guojia:'字奉孝,颍川阳翟人,官至军师祭酒。惜天妒英才,英年早逝。有诗云:“良计环环不遗策,每临制变满座惊”。', - zhenji:'中山无极人,别称甄洛或甄宓,庙号文昭甄皇后。魏文帝曹丕的正室。懂诗文,有倾国倾城之貌,《洛神赋》即是曹植为她所作。', - huatuo:'字元化,一名旉,沛国谯人,“建安三神医”之一。集平生之所得著《青囊经》,现已失传。', - lvbu:'字奉先,五原郡九原县人。三国第一猛将,曾独力战刘关张三人,其武力世之无双。时人语曰:“人中有吕布,马中有赤兔。”', - diaochan:'中国古代四大美女之一,有闭月羞花之貌。司徒王允之义女,由王允授意施行连环计,离间董卓、吕布,借布手除卓。后貂蝉成为吕布的妾。', - huaxiong:'董卓旗下名将,自荐抵抗山东地区反对董卓的诸侯联军于汜水关前,他先后斩杀济北相鲍信之弟鲍忠和孙坚部将祖茂、以及袁术部将俞涉和韩馥手下潘凤等人,最后关东联军派出关羽与之一对一决斗而被杀。', - - xf_yiji:"伊籍,字机伯,生卒年不详,兖州山阳郡(今山东金乡县)人,三国时期蜀汉官员。年少时依附于同乡刘表。刘备落难到荆州时,伊籍时常拜访,托请刘备照顾。建安十三年(208年),刘表病死,伊籍便转投刘备,一起渡江南下。建安十六年(211年),刘备入蜀帮助刘璋,伊籍亦有跟随。随后刘备和刘璋双方决裂。建安十九年(214年),刘备平定益州,任命伊籍为左将军从事中郎,其待遇次于简雍、孙乾等。后升任昭文将军,并与诸葛亮、法正、刘巴、李严共同编制《蜀科》。", - }, - perfectPair:{ - xiahoudun:['xiahouyuan'], - zhenji:['caopi'], - caocao:['xuzhu','dianwei','bianfuren'], - huangzhong:['weiyan'], - zhugeliang:['huangyueying','jiangwei','jiangfei'], - liubei:['guanyu','zhangfei','ganfuren'], - zhaoyun:['liushan'], - daqiao:['xiaoqiao'], - zhouyu:['huanggai','xiaoqiao'], - sunquan:['zhoutai'], - lvbu:['diaochan'], - machao:['madai','mayunlu'], - zhangliao:['zangba'], - ganning:['lingtong'], - }, - skill:{ - hujia:{ - audio:2, - audioname:['re_caocao'], - unique:true, - zhuSkill:true, - trigger:{player:['chooseToRespondBefore','chooseToUseBefore']}, - filter:function(event,player){ - if(event.responded) return false; - if(player.storage.hujiaing) return false; - if(!player.hasZhuSkill('hujia')) return false; - if(!event.filterCard({name:'shan'},player,event)) return false; - return game.hasPlayer(function(current){ - return current!=player&¤t.group=='wei'; - }); - }, - check:function(event,player){ - if(get.damageEffect(player,event.player,player)>=0) return false; - return true; - }, - content:function(){ - "step 0" - if(event.current==undefined) event.current=player.next; - if(event.current==player){ - event.finish(); - } - else if(event.current.group=='wei'){ - if((event.current==game.me&&!_status.auto)||( - get.attitude(event.current,player)>2)|| - event.current.isOnline()){ - player.storage.hujiaing=true; - var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张闪?',{name:'shan'}); - next.set('ai',function(){ - var event=_status.event; - return (get.attitude(event.player,event.source)-2); - }); - next.set('skillwarn','替'+get.translation(player)+'打出一张闪'); - next.autochoose=lib.filter.autoRespondShan; - next.set('source',player); - } - } - "step 1" - player.storage.hujiaing=false; - if(result.bool){ - event.finish(); - trigger.result={bool:true,card:{name:'shan',isCard:true}}; - trigger.responded=true; - trigger.animate=false; - if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ - event.current.ai.shown+=0.3; - if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; - } - } - else{ - event.current=event.current.next; - event.goto(0); - } - }, - ai:{ - respondShan:true, - skillTagFilter:function(player){ - if(player.storage.hujiaing) return false; - if(!player.hasZhuSkill('hujia')) return false; - return game.hasPlayer(function(current){ - return current!=player&¤t.group=='wei'; - }); - }, - }, - }, - jianxiong:{ - audio:2, - trigger:{player:'damageEnd'}, - filter:function(event,player){ - return get.itemtype(event.cards)=='cards'&&get.position(event.cards[0],true)=='o'; - }, - content:function(){ - player.gain(trigger.cards,'gain2'); - }, - ai:{ - maixie:true, - maixie_hp:true, - effect:{ - target:function(card,player,target){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; - if(get.tag(card,'damage')) return [1,0.55]; - } - } - } - }, - fankui:{ - audio:2, - trigger:{player:'damageEnd'}, - direct:true, - filter:function(event,player){ - return (event.source&&event.source.countGainableCards(player,'he')&&event.num>0&&event.source!=player); - }, - content:function(){ - player.gainPlayerCard(get.prompt('fankui',trigger.source),trigger.source,get.buttonValue,'he').set('logSkill',['fankui',trigger.source]); - }, - ai:{ - maixie_defend:true, - effect:{ - target:function(card,player,target){ - if(player.countCards('he')>1&&get.tag(card,'damage')){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-1.5]; - if(get.attitude(target,player)<0) return [1,1]; - } - } - } - } - }, - guicai:{ - audio:2, - trigger:{global:'judge'}, - direct:true, - filter:function(event,player){ - return player.countCards(get.mode()=='guozhan'?'he':'h')>0; - }, - content:function(){ - "step 0" - player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ - get.translation(trigger.player.judging[0])+','+get.prompt('guicai'),get.mode()=='guozhan'?'he':'h',function(card){ - var player=_status.event.player; - var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); - if(mod2!='unchanged') return mod2; - var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); - if(mod!='unchanged') return mod; - return true; - }).set('ai',function(card){ - var trigger=_status.event.getTrigger(); - var player=_status.event.player; - var judging=_status.event.judging; - var result=trigger.judge(card)-trigger.judge(judging); - var attitude=get.attitude(player,trigger.player); - if(attitude==0||result==0) return 0; - if(attitude>0){ - return result-get.value(card)/2; - } - else{ - return -result-get.value(card)/2; - } - }).set('judging',trigger.player.judging[0]); - "step 1" - if(result.bool){ - player.respond(result.cards,'guicai','highlight','noOrdering'); - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - if(trigger.player.judging[0].clone){ - trigger.player.judging[0].clone.classList.remove('thrownhighlight'); - game.broadcast(function(card){ - if(card.clone){ - card.clone.classList.remove('thrownhighlight'); - } - },trigger.player.judging[0]); - game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); - } - game.cardsDiscard(trigger.player.judging[0]); - trigger.player.judging[0]=result.cards[0]; - trigger.orderingCards.addArray(result.cards); - game.log(trigger.player,'的判定牌改为',result.cards[0]); - game.delay(2); - } - }, - ai:{ - rejudge:true, - tag:{ - rejudge:1, - } - } - }, - ganglie:{ - audio:2, - trigger:{player:'damageEnd'}, - filter:function(event,player){ - return (event.source!=undefined); - }, - check:function(event,player){ - return (get.attitude(player,event.source)<=0); - }, - logTarget:'source', - content:function(){ - "step 0" - player.judge(function(card){ - if(get.suit(card)=='heart') return -2; - return 2; - }) - "step 1" - if(result.judge<2){ - event.finish();return; - } - trigger.source.chooseToDiscard(2).set('ai',function(card){ - if(card.name=='tao') return -10; - if(card.name=='jiu'&&_status.event.player.hp==1) return -10; - return get.unuseful(card)+2.5*(5-get.owner(card).hp); - }); - "step 2" - if(result.bool==false){ - trigger.source.damage(); - } - }, - ai:{ - maixie_defend:true, - effect:{ - target:function(card,player,target){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; - return 0.8; - // if(get.tag(card,'damage')&&get.damageEffect(target,player,player)>0) return [1,0,0,-1.5]; - } - } - } - }, - ganglie_three:{ - audio:'ganglie', - trigger:{player:'damageEnd'}, - direct:true, - content:function(){ - "step 0" - player.chooseTarget(get.prompt2('ganglie_three'),function(card,player,target){ - return target.isEnemyOf(player); - }).set('ai',function(target){ - return -get.attitude(_status.event.player,target)/(1+target.countCards('h')); - }); - "step 1" - if(result.bool){ - event.target=result.targets[0]; - player.logSkill('ganglie_three',target); - } - else event.finish(); - "step 2" - player.judge(function(card){ - if(get.suit(card)=='heart') return -2; - return 2; - }) - "step 3" - if(result.judge<2){ - event.finish();return; - } - target.chooseToDiscard(2).set('ai',function(card){ - if(card.name=='tao') return -10; - if(card.name=='jiu'&&_status.event.player.hp==1) return -10; - return get.unuseful(card)+2.5*(5-get.owner(card).hp); - }); - "step 4" - if(result.bool==false){ - target.damage(); - } - }, - ai:{ - maixie_defend:true, - effect:{ - target:function(card,player,target){ - if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; - return 0.8; - // if(get.tag(card,'damage')&&get.damageEffect(target,player,player)>0) return [1,0,0,-1.5]; - } - } - } - }, - tuxi:{ - audio:2, - trigger:{player:'phaseDrawBegin1'}, - direct:true, - filter:function(event,player){ - return !event.numFixed; - }, - content:function(){ - "step 0" - var check; - var i,num=game.countPlayer(function(current){ - return current!=player&¤t.countCards('h')&&get.attitude(player,current)<=0; - }); - check=(num>=2); - player.chooseTarget(get.prompt('tuxi'),'获得其他一至两名角色的各一张手牌',[1,2],function(card,player,target){ - return target.countCards('h')>0&&player!=target; - },function(target){ - if(!_status.event.aicheck) return 0; - var att=get.attitude(_status.event.player,target); - if(target.hasSkill('tuntian')) return att/10; - return 1-att; - }).set('aicheck',check); - "step 1" - if(result.bool){ - player.logSkill('tuxi',result.targets); - player.gainMultiple(result.targets); - trigger.changeToZero(); - } - else{ - event.finish(); - } - "step 2" - game.delay(); - }, - ai:{ - threaten:2, - expose:0.3 - } - }, - luoyi:{ - audio:2, - trigger:{player:'phaseDrawBegin2'}, - check:function(event,player){ - if(player.countCards('h')<3) return false; - if(!player.hasSha()) return false; - return game.hasPlayer(function(current){ - return get.attitude(player,current)<0&&player.canUse('sha',current); - }); - }, - filter:function(event,player){ - return !event.numFixed&&event.num>0; - }, - content:function(){ - player.addTempSkill('luoyi2','phaseJieshuBegin'); - trigger.num--; - } - }, - luoyi2:{ - trigger:{source:'damageBegin1'}, - filter:function(event){ - return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.notLink(); - }, - forced:true, - content:function(){ - trigger.num++; - }, - ai:{ - damageBonus:true - } - }, - tiandu:{ - audio:2, - audioname:['re_guojia','xizhicai','gz_nagisa'], - trigger:{player:'judgeEnd'}, - frequent:function(event){ - if(event.result.card.name=='du') return false; - //if(get.mode()=='guozhan') return false; - return true; - }, - check:function(event){ - if(event.result.card.name=='du') return false; - return true; - }, - filter:function(event,player){ - return get.position(event.result.card,true)=='o'; - }, - content:function(){ - player.gain(trigger.result.card,'gain2'); - } - }, - yiji:{ - audio:2, - trigger:{player:'damageEnd'}, - frequent:true, - filter:function(event){ - return (event.num>0) - }, - content:function(){ - "step 0" - event.count=trigger.num; - "step 1" - event.count--; - event.cards=get.cards(2); - "step 2" - 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.goto(5); - } - "step 3" - if(result.bool){ - for(var i=0;i0){ - return att/(1+target.countCards('h')); - } - else{ - return att/100; - } - }).set('enemy',get.value(event.togive[0],player,'raw')<0); - } - "step 4" - 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(2); - } - "step 5" - if(event.count>0) player.chooseBool(get.prompt2(event.name)).set('frequentSkill',event.name); - else event.finish(); - "step 6" - if(result.bool){ - player.logSkill(event.name); - 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]; - } - } - } - } - }, - luoshen:{ - audio:2, - trigger:{player:'phaseZhunbeiBegin'}, - frequent:true, - content:function(){ - "step 0" - if(event.cards==undefined) event.cards=[]; - var next=player.judge(function(card){ - if(get.color(card)=='black') return 1.5; - return -1.5; - }); - if(get.mode()!='guozhan'&&!player.hasSkillTag('rejudge')) next.set('callback',function(){ - if(event.judgeResult.color=='black'&&get.position(card,true)=='o') player.gain(card,'gain2'); - }); - else next.set('callback',function(){ - if(event.judgeResult.color=='black') event.getParent().orderingCards.remove(card); - }); - "step 1" - if(result.judge>0){ - event.cards.push(result.card); - player.chooseBool('是否再次发动【洛神】?').set('frequentSkill','luoshen'); - } - else{ - for(var i=0;i0){ - event.cards.push(result.card); - if(lib.config.autoskilllist.contains('luoshen')){ - player.chooseBool('是否再次发动【洛神】?'); - } - else{ - event._result={bool:true}; - } - } - else{ - for(var i=0;i1) return 0; - if(ui.selected.cards.length&&ui.selected.cards[0].name=='du') return 0; - if(!ui.selected.cards.length&&card.name=='du') return 20; - var player=get.owner(card); - var num=0; - var evt2=_status.event.getParent(); - var num=0; - player.getHistory('lose',function(evt){ - if(evt.getParent().skill=='rende'&&evt.getParent(3)==evt2) num+=evt.cards.length; - }); - if(player.hp==player.maxHp||num>1||player.countCards('h')<=1){ - if(ui.selected.cards.length){ - return -1; - } - var players=game.filterPlayer(); - for(var i=0;i=3&& - get.attitude(players[i],player)>=3){ - return 11-get.value(card); - } - } - if(player.countCards('h')>player.hp) return 10-get.value(card); - if(player.countCards('h')>2) return 6-get.value(card); - return -1; - } - return 10-get.value(card); - }, - content:function(){ - target.gain(cards,player,'giveAuto'); - var evt2=event.getParent(3); - var num=0; - player.getHistory('lose',function(evt){ - if(evt.getParent(2).name=='rende'&&evt.getParent(5)==evt2) num+=evt.cards.length; - }); - if(num<2&&num+cards.length>1) player.recover(); - }, - ai:{ - order:function(skill,player){ - if(player.hp1){ - return 10; - } - return 1; - }, - result:{ - target:function(player,target){ - if(target.hasSkillTag('nogain')) return 0; - if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ - if(target.hasSkillTag('nodu')) return 0; - return -10; - } - if(target.hasJudge('lebu')) return 0; - var nh=target.countCards('h'); - var np=player.countCards('h'); - if(player.hp==player.maxHp||player.storage.rende<0||player.countCards('h')<=1){ - if(nh>=np-1&&np<=player.hp&&!target.hasSkill('haoshi')) return 0; - } - return Math.max(1,5-nh); - } - }, - effect:{ - target:function(card,player,target){ - if(player==target&&get.type(card)=='equip'){ - if(player.countCards('e',{subtype:get.subtype(card)})){ - var players=game.filterPlayer(); - for(var i=0;i0){ - return 0; - } - } - } - } - } - }, - threaten:0.8 - } - }, - rende1:{ - trigger:{player:'phaseUseBegin'}, - silent:true, - content:function(){ - player.storage.rende=0; - } - }, - jijiang:{ - audio:'jijiang1', - audioname:['liushan','re_liubei','re_liushan','ol_liushan'], - unique:true, - group:['jijiang1','jijiang2'], - zhuSkill:true, - }, - jijiang1:{ - audio:2, - audioname:['liushan','re_liubei','re_liushan','ol_liushan'], - trigger:{player:'chooseToRespondBegin'}, - check:function(event){ - if(event.jijiang) return false; - return true; - }, - filter:function(event,player){ - if(event.responded) return false; - if(player.storage.jijianging) return false; - if(!player.hasZhuSkill('jijiang')) return false; - if(!event.filterCard({name:'sha'},player,event)) return false; - return game.hasPlayer(function(current){ - return current!=player&¤t.group=='shu'; - }); - }, - content:function(){ - "step 0" - if(event.current==undefined) event.current=player.next; - if(event.current==player){ - event.finish(); - } - else if(event.current.group=='shu'){ - player.storage.jijianging=true; - var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'}); - next.set('ai',function(){ - var event=_status.event; - return (get.attitude(event.player,event.source)-2); - }); - next.set('source',player); - next.set('jijiang',true); - next.set('skillwarn','替'+get.translation(player)+'打出一张杀'); - next.noOrdering=true; - next.autochoose=lib.filter.autoRespondSha; - } - else{ - event.current=event.current.next; - event.redo(); - } - "step 1" - player.storage.jijianging=false; - if(result.bool){ - event.finish(); - trigger.result=result; - trigger.responded=true; - trigger.animate=false; - if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ - event.current.ai.shown+=0.3; - if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; - } - } - else{ - event.current=event.current.next; - event.goto(0); - } - } - }, - jijiang2:{ - audio:'jijiang1', - audioname:['liushan','re_liubei','re_liushan','ol_liushan'], - enable:'chooseToUse', - prompt:'选择一名目标角色。若有其他蜀势力角色打出【杀】响应,则视为你对其使用此【杀】。', - filter:function(event,player){ - if(event.filterCard&&!event.filterCard({name:'sha'},player,event)) return false; - if(!player.hasZhuSkill('jijiang')) return false; - if(player.hasSkill('jijiang3')) return false; - if(!lib.filter.cardUsable({name:'sha'},player)) return false; - return game.hasPlayer(function(current){ - return current!=player&¤t.group=='shu'; - }); - }, - filterTarget:function(card,player,target){ - if(_status.event._backup&& - typeof _status.event._backup.filterTarget=='function'&& - !_status.event._backup.filterTarget({name:'sha'},player,target)){ - return false; - } - return player.canUse({name:'sha'},target); - }, - content:function(){ - "step 0" - if(event.current==undefined) event.current=player.next; - if(event.current==player){ - player.addSkill('jijiang3'); - event.getParent(2).step=0; - event.finish(); - } - else if(event.current.group=='shu'){ - var next=event.current.chooseToRespond('是否替'+get.translation(player)+'对'+get.translation(target)+'使用一张杀', - function(card,player,event){ - event=event||_status.event; - return card.name=='sha'&&event.source.canUse(card,event.target); - }); - next.set('ai',function(card){ - var event=_status.event; - return get.effect(event.target,card,event.source,event.player); - }); - next.set('source',player); - next.set('target',target); - next.set('jijiang',true); - next.set('skillwarn','替'+get.translation(player)+'打出一张杀'); - next.noOrdering=true; - next.autochoose=lib.filter.autoRespondSha; - } - else{ - event.current=event.current.next; - event.redo(); - } - "step 1" - if(result.bool){ - event.finish(); - if(result.cards&&result.cards.length){ - player.useCard({name:'sha',isCard:true},result.cards,target).animate=false; - } - else{ - player.useCard({name:'sha',isCard:true},target).animate=false; - } - if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ - event.current.ai.shown+=0.3; - if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; - } - } - else{ - event.current=event.current.next; - event.goto(0); - } - }, - ai:{ - respondSha:true, - skillTagFilter:function(player){ - if(!player.hasZhuSkill('jijiang')) return false; - return game.hasPlayer(function(current){ - return current!=player&¤t.group=='shu'; - }); - }, - result:{ - target:function(player,target){ - if(player.hasSkill('jijiang3')) return 0; - return get.effect(target,{name:'sha'},player,target); - } - }, - order:function(){ - return get.order({name:'sha'})-0.1; - }, - } - }, - jijiang3:{ - trigger:{global:['useCardAfter','useSkillAfter','phaseAfter']}, - silent:true, - filter:function(event){ - return event.skill!='jijiang2'&&event.skill!='qinwang2'; - }, - content:function(){ - player.removeSkill('jijiang3'); - } - }, - wusheng:{ - audio:2, - audioname2:{old_guanzhang:'old_fuhun'}, - audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo'], - enable:['chooseToRespond','chooseToUse'], - filterCard:function(card,player){ - if(get.zhu(player,'shouyue')) return true; - return get.color(card)=='red'; - }, - position:'he', - viewAs:{name:'sha'}, - viewAsFilter:function(player){ - if(get.zhu(player,'shouyue')){ - if(!player.countCards('he')) return false; - } - else{ - if(!player.countCards('he',{color:'red'})) return false; - } - }, - prompt:'将一张红色牌当杀使用或打出', - check:function(card){return 4-get.value(card)}, - ai:{ - skillTagFilter:function(player){ - if(get.zhu(player,'shouyue')){ - if(!player.countCards('he')) return false; - } - else{ - if(!player.countCards('he',{color:'red'})) return false; - } - }, - respondSha:true, - } - }, - zhongyi:{ - audio:2, - enable:'phaseUse', - limited:true, - skillAnimation:true, - animationColor:'orange', - filterCard:true, - position:'he', - filter:function(event,player){ - return player.countCards('he')>0; - }, - toStorage:true, - discard:false, - content:function(){ - player.awakenSkill('zhongyi'); - player.addTempSkill('zhongyi2','roundStart'); - player.markAuto('zhongyi2',cards); - }, - }, - zhongyi2:{ - trigger:{global:'damageBegin1'}, - forced:true, - popup:false, - logTarget:'source', - filter:function(event,player){ - return event.getParent().name=='sha'&&event.source&&event.source.isFriendOf(player); - }, - content:function(){trigger.num++}, - intro:{content:'cards',onunmark:'throw'}, - }, - paoxiao:{ - audio:2, - firstDo:true, - audioname2:{old_guanzhang:'old_fuhun'}, - audioname:['re_zhangfei','guanzhang','xiahouba'], - 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){ - if(card.name=='sha') return Infinity; - } - }, - ai:{ - unequip:true, - skillTagFilter:function(player,tag,arg){ - if(!get.zhu(player,'shouyue')) return false; - if(arg&&arg.name=='sha') return true; - return false; - } - } - }, - xinguanxing:{ - audio:'guanxing', - // alter:true, - trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']}, - frequent:true, - filter:function(event,player,name){ - if(name=='phaseJieshuBegin'){ - return player.hasSkill('xinguanxing_on'); - } - return true; - }, - content:function(){ - 'step 0' - if(get.is.altered('xinguanxing')){ - event.num=game.countPlayer()<4?3:5; - } - else{ - event.num=Math.min(5,game.countPlayer()); - } - event.cards=get.cards(event.num); - event.chosen=[]; - event.num1=0; - event.num2=0; - event.bottom=-1; - 'step 1' - var js=player.getCards('j'); - var pos; - var choice=-1; - var getval=function(card,pos){ - if(js[pos]){ - return (get.judge(js[pos]))(card); - } - else if(event.triggername=='phaseJieshuBegin'&&get.attitude(player,player.getNext())<=0){ - return 11.5-get.value(card,player); - } - else{ - return get.value(card,player); - } - }; - event.discard=false; - var minval=6; - for(pos=0;posmax){ - choice=j; - max=current; - } - } - if(event.bottom<0){ - if(!js[pos]){ - if(max=0&&event.bottom<=pos){ - choice=pos; - event.discard=true;break; - } - if(choice!=-1){ - break; - } - } - player.chooseCardButton('观星:选择要移动的牌',event.cards).set('filterButton',function(button){ - return !_status.event.chosen.contains(button.link); - }).set('chosen',event.chosen).set('ai',function(button){ - return button.link==_status.event.choice?1:0; - }).set('choice',event.cards[choice]); - event.pos=pos; - 'step 2' - if(result.bool){ - var card=result.links[0]; - var index=event.cards.indexOf(card); - event.card=card; - event.chosen.push(card); - event.cards.remove(event.card); - var controlai=event.pos||0; - if(event.discard){ - controlai=event.cards.length+1; - } - var buttons=event.cards.slice(0); - player.chooseControl(function(){ - return _status.event.controlai; - }).set('controlai',controlai).set('sortcard',buttons).set('tosort',card); - } - else{ - event.goto(4); - } - 'step 3' - if(typeof result.index=='number'){ - if(result.index>event.cards.length){ - ui.cardPile.appendChild(event.card); - event.num2++; - } - else{ - event.cards.splice(result.index,0,event.card); - } - event.num--; - if(event.num>0){ - event.goto(1); - } - } - 'step 4' - while(event.cards.length){ - ui.cardPile.insertBefore(event.cards.pop(),ui.cardPile.firstChild); - event.num1++; - } - var js=player.getCards('j'); - if(js.length==1){ - if((get.judge(js[0]))(ui.cardPile.firstChild)<0){ - player.addTempSkill('guanxing_fail'); - } - } - player.popup(get.cnNumber(event.num1)+'上'+get.cnNumber(event.num2)+'下'); - game.log(player,'将','#y'+get.cnNumber(event.num1)+'张牌','置于牌堆顶,','#y'+get.cnNumber(event.num2)+'张牌','置于牌堆底'); - if(event.triggername=='phaseZhunbeiBegin'&&get.is.altered('xinguanxing')&&event.num1==0){ - player.addTempSkill('xinguanxing_on'); - } - }, - subSkill:{ - on:{} - } - }, - guanxing_oldnew:{ - audio:2, - audioname:['jiangwei'], - trigger:{player:'phaseZhunbeiBegin'}, - frequent:true, - content:function(){ - 'step 0' - event.num=Math.min(5,game.countPlayer()); - if(event.name!='yizhi'&&player.hasSkill('yizhi')) event.num=5; - event.cards=get.cards(event.num); - event.chosen=[]; - event.num1=0; - event.num2=0; - 'step 1' - var js=player.getCards('j'); - var pos; - var choice=-1; - var getval=function(card,pos){ - if(js[pos]){ - return (get.judge(js[pos]))(card); - } - else{ - return get.value(card); - } - }; - for(pos=0;posmax){ - choice=j; - max=current; - } - } - if(choice!=-1){ - break; - } - } - player.chooseCardButton('观星:选择要移动的牌',event.cards).set('filterButton',function(button){ - return !_status.event.chosen.contains(button.link); - }).set('chosen',event.chosen).set('ai',function(button){ - return button.link==_status.event.choice?1:0; - }).set('choice',event.cards[choice]); - event.pos=pos; - 'step 2' - if(result.bool){ - var card=result.links[0]; - var index=event.cards.indexOf(card); - event.card=card; - event.chosen.push(card); - event.cards.remove(event.card); - var buttons=event.cards.slice(0); - player.chooseControl(function(){ - return _status.event.controlai; - }).set('controlai',event.pos||0).set('sortcard',buttons).set('tosort',card); - } - else{ - event.goto(4); - } - 'step 3' - if(typeof result.index=='number'){ - if(result.index>event.cards.length){ - ui.cardPile.appendChild(event.card); - event.num2++; - } - else{ - event.cards.splice(result.index,0,event.card); - } - event.num--; - if(event.num>0){ - event.goto(1); - } - } - 'step 4' - while(event.cards.length){ - ui.cardPile.insertBefore(event.cards.pop(),ui.cardPile.firstChild); - event.num1++; - } - var js=player.getCards('j'); - if(js.length==1){ - if((get.judge(js[0]))(ui.cardPile.firstChild)<0){ - player.addTempSkill('guanxing_fail'); - } - } - player.popup(get.cnNumber(event.num1)+'上'+get.cnNumber(event.num2)+'下'); - game.log(player,'将','#y'+get.cnNumber(event.num1)+'张牌','置于牌堆顶,','#y'+get.cnNumber(event.num2)+'张牌','置于牌堆底'); - }, - ai:{ - guanxing:true - } - }, - guanxing_fail:{}, - guanxing:{ - audio:2, - audioname:['jiangwei','re_jiangwei','re_zhugeliang'], - trigger:{player:'phaseZhunbeiBegin'}, - frequent:true, - content:function(){ - "step 0" - if(player.isUnderControl()){ - game.modeSwapPlayer(player); - } - var num=Math.min(5,game.countPlayer()); - if(player.hasSkill('yizhi')&&player.hasSkill('guanxing')){ - num=5; - } - var cards=get.cards(num); - event.cards=cards; - var switchToAuto=function(){ - _status.imchoosing=false; - if(event.dialog) event.dialog.close(); - if(event.control) event.control.close(); - var top=[]; - var judges=player.getCards('j'); - var stopped=false; - if(!player.hasWuxie()){ - for(var i=0;i=8; - })){ - return 8-get.value(card); - } - return 6-get.value(card) - }, - delay:0, - content:function(){ - 'step 0' - if(!player.hasSkill('xinzhiheng_delay')) game.delayx(); - 'step 1' - player.draw(cards.length); - }, - group:'xinzhiheng_draw', - subSkill:{ - draw:{ - trigger:{player:'loseEnd'}, - silent:true, - filter:function(event,player){ - if(event.getParent(2).skill!='xinzhiheng') return false; - if(!get.is.altered('xinzhiheng')) return false; - if(player.countCards('h')) return false; - for(var i=0;i0) return false; - if(event.player.group!='wu') return false; - return true; - }, - content:function(){ - player.recover(); - }, - global:'xinjiuyuan2', - }, - xinjiuyuan2:{ - audio:'jiuyuan', - forceaudio:true, - trigger:{player:'taoBegin'}, - filter:function(event,player){ - if(!get.is.altered('xinjiuyuan')) return false; - if(player.group!='wu') return false; - return game.hasPlayer(function(target){ - return player!=target&&target.isDamaged()&&target.hp0); - } - else{ - event.finish(); - } - 'step 2' - if(result.bool){ - player.logSkill('xinjiuyuan',event.current); - event.current.recover(); - player.draw(); - } - event.goto(1); - } - }, - qixi:{ - audio:2, - audioname:['re_ganning','re_heqi'], - enable:'chooseToUse', - filterCard:function(card){ - return get.color(card)=='black'; - }, - position:'he', - viewAs:{name:'guohe'}, - viewAsFilter:function(player){ - if(!player.countCards('he',{color:'black'})) return false; - }, - prompt:'将一张黑色牌当过河拆桥使用', - check:function(card){return 4-get.value(card)} - }, - keji:{ - audio:2, - audioname:['re_lvmeng','sp_lvmeng'], - trigger:{player:'phaseDiscardBefore'}, - frequent:function(event,player){ - return player.needsToDiscard(); - }, - filter:function(event,player){ - if(player.getHistory('skipped').contains('phaseUse')) return true; - var history=player.getHistory('useCard').concat(player.getHistory('respond')); - for(var i=0;i=player.hp-1) return -1; - if(player.hp<3) return -1; - return 1; - } - } - } - }, - yingzi:{ - audio:2, - audioname:['sp_lvmeng'], - trigger:{player:'phaseDrawBegin2'}, - frequent:true, - filter:function(event,player){ - return !event.numFixed; - }, - content:function(){ - trigger.num++; - }, - ai:{ - threaten:1.3 - } - }, - fanjian:{ - audio:2, - enable:'phaseUse', - usable:1, - filter:function(event,player){ - return player.countCards('h')>0; - }, - filterTarget:function(card,player,target){ - return player!=target; - }, - content:function(){ - "step 0" - target.chooseControl('heart2','diamond2','club2','spade2').set('ai',function(event){ - switch(Math.floor(Math.random()*6)){ - case 0:return 'heart2'; - case 1:case 4:case 5:return 'diamond2'; - case 2:return 'club2'; - case 3:return 'spade2'; - } - }); - "step 1" - game.log(target,'选择了'+get.translation(result.control)); - event.choice=result.control; - target.popup(event.choice); - event.card=player.getCards('h').randomGet(); - target.gain(event.card,player,'give'); - game.delay(); - "step 2" - if(get.suit(event.card)+'2'!=event.choice) target.damage('nocard'); - }, - ai:{ - order:1, - result:{ - target:function(player,target){ - var eff=get.damageEffect(target,player); - if(eff>=0) return 1+eff; - var value=0,i; - var cards=player.getCards('h'); - for(i=0;i0; - }, - enable:'chooseToUse', - filterCard:function(card){ - return get.suit(card)=='diamond'; - }, - position:'he', - viewAs:{name:'lebu'}, - prompt:'将一张方片牌当乐不思蜀使用', - check:function(card){return 6-get.value(card)}, - ai:{ - threaten:1.5 - } - }, - liuli:{ - audio:2, - audioname:['re_daqiao','daxiaoqiao'], - 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 player.inRange(current)&¤t!=event.player&& - current!=player&&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(player.inRange(target)&&target!=trigger.source){ - if(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('liuli'), - 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); - } - }, - ai:{ - effect:{ - target:function(card,player,target){ - if(target.countCards('he')==0) return; - if(card.name!='sha') return; - var min=1; - var friend=get.attitude(player,target)>0; - var vcard={name:'shacopy',nature:card.nature,suit:card.suit}; - var players=game.filterPlayer(); - for(var i=0;i0){ - if(!player.canUse(card,players[0])){ - return [0,0.1]; - } - min=0; - } - } - } - return min; - } - } - } - }, - qianxun:{ - mod:{ - targetEnabled:function(card,player,target,now){ - if(card.name=='shunshou'||card.name=='lebu') return false; - } - }, - audio:2, - }, - lianying:{ - audio:2, - trigger:{player:'loseAfter'}, - frequent:true, - filter:function(event,player){ - if(player.countCards('h')) return false; - return event.hs&&event.hs.length>0; - }, - content:function(){ - player.draw(); - }, - ai:{ - threaten:0.8, - effect:{ - target:function(card){ - if(card.name=='guohe'||card.name=='liuxinghuoyu') return 0.5; - } - }, - noh:true, - skillTagFilter:function(player,tag){ - if(tag=='noh'){ - if(player.countCards('h')!=1) return false; - } - } - } - }, - xiaoji:{ - audio:2, - audioname:['sp_sunshangxiang','re_sunshangxiang'], - trigger:{player:'loseAfter'}, - frequent:true, - filter:function(event,player){ - return event.es&&event.es.length>0; - }, - content:function(){ - "step 0" - event.count=trigger.es.length; - "step 1" - event.count--; - player.draw(2); - "step 2" - if(event.count>0){ - player.chooseBool(get.prompt2('xiaoji')).set('frequentSkill','xiaoji').ai=lib.filter.all; - } - "step 3" - if(result.bool){ - player.logSkill('xiaoji'); - event.goto(1); - } - }, - ai:{ - noe:true, - reverseEquip:true, - effect:{ - target:function(card,player,target,current){ - if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; - } - } - } - }, - jieyin:{ - audio:2, - enable:'phaseUse', - filterCard:true, - usable:1, - selectCard:2, - check:function(card){ - var player=get.owner(card); - if(player.countCards('h')>player.hp) - return 8-get.value(card) - if(player.hp=target.maxHp) return false; - if(target==player) return false; - return true; - }, - content:function(){ - player.recover(); - target.recover(); - }, - ai:{ - order:5.5, - result:{ - player:function(player){ - if(player.hpplayer.hp) return 0 - return -1; - }, - target:4 - }, - threaten:2, - } - }, - xinjieyin:{ - group:['xinjieyin_old','xinjieyin_new'], - // alter:true, - subSkill:{ - new:{ - audio:'jieyin', - enable:'phaseUse', - filterCard:true, - usable:1, - position:'he', - filter:function(event,player){ - if(!get.is.altered('xinjieyin')) return false; - return player.countCards('he')>0; - }, - check:function(card){ - var player=_status.event.player; - if(get.position(card)=='e'){ - var subtype=get.subtype(card); - if(!game.hasPlayer(function(current){ - return current!=player&¤t.hp!=player.hp&&get.attitude(player,current)>0&&!current.countCards('e',{subtype:subtype}); - })){ - return 0; - } - if(player.countCards('h',{subtype:subtype})) return 20-get.value(card); - return 10-get.value(card); - } - else{ - if(player.countCards('e')) return 0; - if(player.countCards('h',{type:'equip'})) return 0; - return 8-get.value(card); - } - }, - filterTarget:function(card,player,target){ - if(target.sex!='male') return false; - var card=ui.selected.cards[0]; - if(!card) return false; - if(get.position(card)=='e'&&target.countCards('e',{subtype:get.subtype(card)})) return false; - return true; - }, - discard:false, - delay:0, - lose:false, - content:function(){ - 'step 0' - if(get.position(cards[0])=='e'){ - player.$give(cards,target); - target.equip(cards[0]); - } - else{ - player.discard(cards); - } - 'step 1' - if(player.hp>target.hp){ - player.draw(); - if(target.isDamaged()) target.recover(); - } - else if(player.hptarget.hp){ - if(target.isHealthy()){ - if(!player.needsToDiscard(1)||goon()) return 0.1; - return 0; - } - return 1; - } - return 0; - } - } - } - }, - old:{ - audio:'jieyin', - enable:'phaseUse', - filterCard:true, - usable:1, - selectCard:2, - filter:function(event,player){ - if(get.is.altered('xinjieyin')) return false; - return player.countCards('h')>=2; - }, - check:function(card){ - var player=get.owner(card); - if(player.countCards('h')>player.hp) - return 8-get.value(card) - if(player.hp=target.maxHp) return false; - if(target==player) return false; - return true; - }, - content:function(){ - player.recover(); - target.recover(); - }, - ai:{ - order:5.5, - result:{ - player:function(player){ - if(player.hpplayer.hp) return 0 - return -1; - }, - target:4 - } - } - } - }, - ai:{ - threaten:2.3 - } - }, - qingnang:{ - audio:2, - enable:'phaseUse', - filterCard:true, - usable:1, - check:function(card){ - return 9-get.value(card) - }, - filterTarget:function(card,player,target){ - if(target.hp>=target.maxHp) return false; - return true; - }, - content:function(){ - target.recover(); - }, - ai:{ - order:9, - result:{ - target:function(player,target){ - if(target.hp==1) return 5; - if(player==target&&player.countCards('h')>player.hp) return 5; - return 2; - } - }, - threaten:2 - } - }, - jijiu:{ - audio:2, - audioname:['re_huatuo'], - enable:'chooseToUse', - filter:function(event,player){ - return _status.currentPhase!=player; - }, - filterCard:function(card){ - return get.color(card)=='red'; - }, - position:'he', - viewAs:{name:'tao'}, - prompt:'将一张红色牌当桃使用', - check:function(card){return 15-get.value(card)}, - ai:{ - skillTagFilter:function(player){ - return player.countCards('he',{color:'red'})>0&&_status.currentPhase!=player; - }, - threaten:1.5, - save:true, - respondTao:true, - } - }, - wushuang:{ - shaRelated:true, - audio:2, - audioname:['re_lvbu','shen_lvbu'], - forced:true, - locked:true, - group:['wushuang1','wushuang2'] - }, - wushuang1:{ - audio:'wushuang', - audioname:['re_lvbu','shen_lvbu'], - trigger:{player:'useCardToPlayered'}, - forced:true, - filter:function(event,player){ - return event.card.name=='sha'&&!event.getParent().directHit.contains(event.target); - }, - //priority:-1, - logTarget:'target', - content:function(){ - var id=trigger.target.playerid; - var map=trigger.getParent().customArgs; - if(!map[id]) map[id]={}; - if(typeof map[id].shanRequired=='number'){ - map[id].shanRequired++; - } - else{ - map[id].shanRequired=2; - } - } - }, - wushuang2:{ - audio:'wushuang', - audioname:['re_lvbu','shen_lvbu'], - trigger:{player:'useCardToPlayered',target:'useCardToTargeted'}, - forced:true, - logTarget:function(trigger,player){ - return player==trigger.player?trigger.target:trigger.player - }, - filter:function(event,player){ - return event.card.name=='juedou'; - }, - //priority:-1, - content:function(){ - var id=(player==trigger.player?trigger.target:trigger.player)['playerid']; - var idt=trigger.target.playerid; - var map=trigger.getParent().customArgs; - if(!map[idt]) map[idt]={}; - if(!map[idt].shaReq) map[idt].shaReq={}; - if(!map[idt].shaReq[id]) map[idt].shaReq[id]=1; - map[idt].shaReq[id]++; - }, - ai:{ - result:{ - target:function(card,player,target){ - if(card.name=='juedou'&&target.countCards('h')>0) return [1,0,0,-1]; - } - } - } - }, - zhanshen:{ - audio:2, - trigger:{player:'phaseZhunbeiBegin'}, - forced:true, - skillAnimation:true, - animationColor:'gray', - filter:function(event,player){ - return player.isDamaged()&&game.dead.filter(function(target){ - return target.isFriendOf(player); - }).length>0 - }, - content:function(){ - player.awakenSkill('zhanshen'); - var card=player.getEquip(1); - if(card) player.discard(card); - player.loseMaxHp(); - player.addSkill('mashu'); - player.addSkill('shenji'); - }, - derivation:['mashu','shenji'], - }, - shenji:{ - mod:{ - selectTarget:function(card,player,range){ - if(range[1]==-1) return; - if(card.name=='sha') range[1]+=2; - }, - cardUsable:function(card,player,num){ - if(card.name=='sha') return num+1; - } - }, - }, - lijian:{ - audio:2, - audioname:['re_diaochan'], - enable:'phaseUse', - usable:1, - filter:function(event,player){ - return game.countPlayer(function(current){ - return current!=player&¤t.sex=='male'; - })>1; - }, - check:function(card){return 10-get.value(card)}, - filterCard:true, - position:'he', - filterTarget:function(card,player,target){ - if(player==target) return false; - if(target.sex!='male') return false; - if(ui.selected.targets.length==1){ - return target.canUse({name:'juedou'},ui.selected.targets[0]); - } - return true; - }, - targetprompt:['先出杀','后出杀'], - selectTarget:2, - multitarget:true, - content:function(){ - targets[1].useCard({name:'juedou',isCard:true},'nowuxie',targets[0],'noai').animate=false; - game.delay(0.5); - }, - ai:{ - order:8, - result:{ - target:function(player,target){ - if(ui.selected.targets.length==0){ - return -3; - } - else{ - return get.effect(target,{name:'juedou'},ui.selected.targets[0],target); - } - } - }, - expose:0.4, - threaten:3, - } - }, - biyue:{ - audio:2, - trigger:{player:'phaseJieshuBegin'}, - frequent:true, - content:function(){ - player.draw(); - }, - }, - xinbiyue:{ - audio:'biyue', - trigger:{player:'phaseJieshuBegin'}, - frequent:true, - // alter:true, - content:function(){ - var num=1; - if(get.is.altered('xinbiyue')&&!player.countCards('h')){ - num=2; - } - player.draw(num); - }, - }, - yaowu:{ - trigger:{player:'damageBegin3'}, - //priority:1, - audio:2, - filter:function(event){ - if(event.card&&(event.card.name=='sha')){ - if(get.color(event.card)=='red') return true; - } - return false; - }, - forced:true, - check:function(){ - return false; - }, - content:function(){ - trigger.source.chooseDrawRecover(true); - }, - ai:{ - effect:{ - target:function(card,player,target,current){ - if(card.name=='sha'&&(get.color(card)=='red')){ - return [1,-2]; - } - } - } - } - }, - "new_jiangchi":{ - audio:"jiangchi", - trigger:{ - player:"phaseDrawEnd", - }, - 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.prompt('new_jiangchi')).set('prompt2',get.translation('new_jiangchi_info')); - "step 1" - if(result.control=='弃牌'){ - player.chooseToDiscard(true,'he'); - player.addTempSkill('jiangchi2','phaseUseEnd'); - player.logSkill('new_jiangchi'); - } - else if(result.control=='摸牌'){ - player.draw(); - player.addTempSkill('jiangchi3','phaseUseEnd'); - player.logSkill('new_jiangchi'); - } - }, - }, - "xinfu_jijie":{ - enable:"phaseUse", - usable:1, - audio:2, - //filter:function(){ - //return ui.cardPile.hasChildNodes(); - //}, - content:function (){ - 'step 0' - //event.card=ui.cardPile.lastChild; - event.card=get.bottomCards()[0]; - var content=['牌堆底的一张牌',[event.card]]; - game.log(player,'观看了牌堆底的一张牌'); - player.chooseControl('ok').set('dialog',content); - 'step 1' - player.chooseTarget('选择获得此牌的角色').set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(_status.event.du){ - if(target.hasSkillTag('nodu')) return 0.5; - return -att; - } - if(att>0){ - if(_status.event.player!=target) att+=2; - return att+Math.max(0,5-target.countCards('h')); - } - return att; - }).set('du',event.card.name=='du').set('same',event.same); - 'step 2' - if(result.bool){ - event.target=result.targets[0]; - player.line(event.target,'green'); - player.give(event.card,event.target); - } - else ui.cardPile.appendChild(event.card); - game.updateRoundNumber(); - }, - ai:{ - order:7.2, - result:{ - player:1, - }, - }, - }, - "xinfu_jiyuan":{ - trigger:{ - global:"dying", - source:"gainAfter", - }, - //priority:6, - audio:2, - filter:function (event,player){ - if(event.name=='dying') return true; - return event.player!=player&&event.bySelf!=true; - }, - check:function (event,player){ - return get.attitude(player,event.player)>0; - }, - logTarget:"player", - content:function (){ - trigger.player.draw(); - }, - }, - }, - translate:{ - caocao:'曹操', - hujia:'护驾', - hujia_info:'主公技,当你需要使用或打出一张【闪】时,你可以令其他魏势力角色选择是否打出一张【闪】。若有角色响应,则你视为使用或打出了一张【闪】。', - jianxiong:'奸雄', - jianxiong_info:'当你受到伤害后,你可以获得对你造成伤害的牌。', - - simayi:'司马懿', - fankui:'反馈', - fankui_info:'当你受到伤害后,你可以获得伤害来源的一张牌。', - guicai:'鬼才', - guicai_info:'一名角色的判定牌生效前,你可以打出一张手牌代替之。', - guicai_info_guozhan:'一名角色的判定牌生效前,你可以打出一张牌代替之。', - - xiahoudun:'夏侯惇', - zhangliao:'张辽', - xuzhu:'许褚', - guojia:'郭嘉', - zhenji:'甄姬', - liubei:'刘备', - guanyu:'关羽', - zhangfei:'张飞', - zhugeliang:'诸葛亮', - zhaoyun:'赵云', - machao:'马超', - huangyueying:'黄月英', - sunquan:'孙权', - ganning:'甘宁', - lvmeng:'吕蒙', - huanggai:'黄盖', - zhouyu:'周瑜', - daqiao:'大乔', - luxun:'陆逊', - sunshangxiang:'孙尚香', - huatuo:'华佗', - lvbu:'吕布', - diaochan:'貂蝉', - huaxiong:'华雄', - "xf_yiji":"伊籍", - re_yuanshu:'袁术', - caozhang:'曹彰', - - ganglie:'刚烈', - tuxi:'突袭', - luoyi:'裸衣', - luoyi2:'裸衣', - tiandu:'天妒', - yiji:'遗计', - luoshen:'洛神', - xinluoshen:'洛神', - qingguo:'倾国', - rende:'仁德', - jijiang:'激将', - jijiang1:'激将', - jijiang2:'激将', - wusheng:'武圣', - paoxiao:'咆哮', - guanxing:'观星', - kongcheng:'空城', - kongcheng1:'空城', - longdan:'龙胆', - longdan1:'龙胆', - longdan2:'龙胆', - mashu:'马术', - mashu2:'马术', - feiying:'飞影', - tieji:'铁骑', - jizhi:'集智', - qicai:'奇才', - zhiheng:'制衡', - jiuyuan:'救援', - qixi:'奇袭', - keji:'克己', - kurou:'苦肉', - yingzi:'英姿', - fanjian:'反间', - guose:'国色', - liuli:'流离', - qianxun:'谦逊', - lianying:'连营', - xiaoji:'枭姬', - jieyin:'结姻', - xinjieyin:'结姻', - qingnang:'青囊', - jijiu:'急救', - wushuang:'无双', - wushuang1:'无双', - wushuang2:'无双', - lijian:'离间', - biyue:'闭月', - xinbiyue:'闭月', - pileTop:'牌堆顶', - pileBottom:'牌堆底', - ganglie_info:'当你受到伤害后,你可以进行判定。若结果不为红桃,则伤害来源须弃置两张手牌,否则受到来自你的一点伤害。', - tuxi_info:'摸牌阶段,你可以改为获得至多两名其他角色的各一张手牌。', - luoyi_info:'摸牌阶段,你可以少摸一张牌。若如此做,当你本回合内使用【杀】或【决斗】造成伤害时,此伤害+1。', - tiandu_info:'当你的判定牌生效后,你可以获得之。', - yiji_info:'当你受到一点伤害后,你可以观看牌堆顶的两张牌,然后将其分配给任意角色。', - luoshen_info:'准备阶段,你可以进行判定。若结果为黑色,你获得判定牌。你可重复此流程,直到出现红色的判定结果。', - luoshen_info_guozhan:'准备阶段,你可以进行一次判定。若结果为黑色,则可以继续判定,直到出现红色的判定牌。然后你获得所有黑色的判定牌。(判定结果为黑色的牌在此过程中不会进入弃牌堆)', - xinluoshen_info:'准备阶段,你可以进行一定判定,若为黑色则可以继续判定,直到出现红色。然后你获得所有黑色的判定牌', - xinluoshen_info_alter:'准备阶段,你可以进行一定判定,若为黑色则可以继续判定,直到出现红色。然后你获得所有黑色的判定牌。你通过洛神获得的牌,不计入当前回合的手牌上限', - qingguo_info:'你可以将一张黑色手牌当做【闪】使用或打出。', - rende_info:'出牌阶段,你可以将任意张手牌交给其他角色。当你以此法于一回合内给出第二张牌时,你回复1点体力。', - jijiang_info:'主公技,当你需要使用或打出【杀】时,你可以令其他蜀势力角色依次选择是否打出一张【杀】。若有角色响应,则你视为使用或打出了此【杀】。', - wusheng_info:'你可以将一张红色牌当做【杀】使用或打出。', - paoxiao_info:'锁定技,出牌阶段,你使用【杀】没有数量限制。', - guanxing_info:'准备阶段,你可以观看牌堆顶的X张牌,并将其以任意顺序置于牌堆项或牌堆底。(X为存活角色数且至多为5)', - xinguanxing:'观星', - xinguanxing_info:'准备阶段,你可以观看牌堆顶的x张牌,并将其以任意顺序置于牌堆项或牌堆底,x为存活角色个数且不超过5', - xinguanxing_info_alter:'准备阶段,你可以观看牌堆顶的5张牌(存活角色小于4时改为3张),并将其以任意顺序置于牌堆项或牌堆底,如果你把观星的牌都放在牌堆底,你可以在结束阶段再进行1次观星', - kongcheng_info:'锁定技,当你没有手牌时,你不能成为【杀】或【决斗】的目标。', - longdan_info:'你可以将【杀】当做【闪】,或将【闪】当做【杀】使用或打出。', - mashu_info:'锁定技,你计算与其他角色的距离时-1。', - mashu2_info:'锁定技,你计算与其他角色的距离时-1。', - feiying_info:'锁定技,其他角色计算与你的距离时+1。', - tieji_info:'当你使用【杀】指定目标后,你可以进行判定。若结果为红色,则此【杀】不可被闪避。', - jizhi_info:'当你使用非转化的普通锦囊牌时,你可以摸一张牌。', - xinjizhi:'集智', - xinjizhi_info:'当你使用非转化的普通锦囊牌时,你可以摸一张牌。', - xinjizhi_info_alter:'每当你使用一张非转化的锦囊牌,可以摸一张牌,如果摸到的是基本牌,你可以弃置这张牌,然后本回合手牌上限+1', - xinqicai:'奇才', - xinqicai_info:'锁定技,你使用锦囊牌无距离限制。', - xinqicai_info_alter:'锁定技,你使用的锦囊牌无距离限制,你装备区内的牌不能被弃置', - qicai_info:'锁定技,你使用锦囊牌无距离限制。', - zhiheng_info:'出牌阶段一次,你可以弃置任意张牌,然后摸等量的牌。', - xinzhiheng:'制衡', - xinzhiheng_info:'出牌阶段限1次,你可以弃置任意张牌并摸等量的牌', - xinzhiheng_info_alter:'出牌阶段限1次,你可以弃置任意张牌并摸等量的牌,如果在发动制衡时弃置了所有手牌,你额外摸一张牌', - jiuyuan_info:'主公技,锁定技,其他吴势力角色对你使用的【桃】的回复值+1。', - xinjiuyuan:'救援', - xinjiuyuan_info:'主公技,锁定技,濒死阶段,吴势力角色对你使用的[桃]额外回复一点体力', - xinjiuyuan_info_alter:'主公技,其他吴国角色对自己使用【桃】时,如果他的体力值大于你,他可以选择让你回复1点体力,然后他摸1张牌', - qixi_info:'你可以将一张黑色牌当做【过河拆桥】使用。', - keji_info:'弃牌阶段开始时,若你于本回合的出牌阶段内没有过使用或打出过【杀】,则你可以跳过此阶段。', - kurou_info:'出牌阶段,你可以失去一点体力,然后摸两张牌。', - yingzi_info:'摸牌阶段,你可以多摸一张牌。', - fanjian_info:'出牌阶段限一次,你可以令一名角色选择一种花色并展示你的一张手牌,若选择的花色与展示的不同,该角色受到来自你的一点伤害。然后该角色获得展示的牌。', - guose_info:'你可以将一张方片手牌当做【乐不思蜀】使用。', - liuli_info:'当你成为【杀】的目标时,你可以弃置一张牌并将此【杀】转移给攻击范围内的一名其他角色(不能是此【杀】的使用者)。', - qianxun_info:'锁定技,你不能成为【顺手牵羊】和【乐不思蜀】的目标。', - lianying_info:'当你失去最后的手牌时,你可以摸一张牌。', - xiaoji_info:'当你失去一张装备区内的牌后,你可以摸两张牌。', - jieyin_info:'出牌阶段限一次,你可以弃置两张手牌并选择一名已经受伤的男性角色。你与其各回复一点体力。', - xinjieyin_info:'出牌阶段,你可以弃置两张牌并选择1名已经受伤的男性角色,你与其各回复一点体力,每阶段限一次', - xinjieyin_old_info:'出牌阶段,你可以弃置两张牌并选择1名已经受伤的男性角色,你与其各回复一点体力。每阶段限一次。', - xinjieyin_new_info:'出牌阶段限1次,你可以选择一名男性角色,弃置一张手牌或将一张装备牌置于其装备区,你与其体力较高的角色摸一张牌,体力值较低的角色回复1点体力', - xinjieyin_info_alter:'出牌阶段限1次,你可以选择一名男性角色,弃置一张手牌或将一张装备牌置于其装备区,你与其体力较高的角色摸一张牌,体力值较低的角色回复1点体力', - qingnang_info:'出牌阶段限一次,你可以弃置一张手牌并令一名角色回复一点体力。', - jijiu_info:'你的回合外,你可以将一张红色牌当做【桃】使用。', - wushuang_info:'锁定技,当你使用【杀】或【决斗】指定目标后,你令此牌需要依次使用或打出两张【闪】或【杀】响应。', - lijian_info:'出牌阶段限一次,你可以弃置一张牌,视为一名男性角色对另一名男性角色使用一张【决斗】(不可被【无懈可击】响应)。', - biyue_info:'结束阶段,你可以摸一张牌。', - xinbiyue_info:'结束阶段,你可以摸一张牌', - xinbiyue_info_alter:'结束阶段,你可以摸一张牌,如果你没有手牌,改为摸2张牌', - yaowu:'耀武', - yaowu_info:'锁定技,一名角色使用红色【杀】对你造成伤害时,该角色回复1点体力或摸一张牌。', - "new_jiangchi":"将驰", - "new_jiangchi_info":"摸牌阶段结束时,你可以选择一项:1、摸一张牌,若如此做,你本回合内不能使用或打出【杀】。 2、弃置一张牌,若如此做,出牌阶段你使用【杀】无距离限制且你可以额外使用一张【杀】,直到回合结束。", - "xinfu_jijie":"机捷", - "xinfu_jijie_info":"出牌阶段限一次。你可以观看牌堆底的一张牌,然后将其交给一名角色。", - "xinfu_jiyuan":"急援", - "xinfu_jiyuan_info":"当一名角色进入濒死状态时,或你交给一名其他角色牌时,你可以令其摸一张牌。", - ganglie_three:'刚烈', - ganglie_three_info:'当你受到伤害后,你可令一名敌方角色判定。若结果不为♥,其弃置两张牌或受到来自你的1点伤害。', - zhongyi:'忠义', - zhongyi2:'忠义', - zhongyi_info:'限定技,出牌阶段,你可以将一张牌置于武将牌上。你的武将牌上有〖忠义〗牌时,己方角色使用【杀】造成的伤害+1。下轮游戏开始时,你将〖忠义〗牌置入弃牌堆。', - zhanshen:'战神', - zhanshen_info:'觉醒技,准备阶段,若场上有已死亡的其他己方角色且你已受伤,则你弃置装备区的武器牌,减1点体力上限,获得技能〖马术〗和〖神戟〗', - shenji:'神戟', - shenji_info:'锁定技,你使用【杀】指定的目标数上限+2,次数上限+1', - - standard_2008:"2008版标准包", - standard_2013:"2013版标准包", - standard_2019:"2019版标准包", - }, - }; -}); +'use strict'; +game.import('character',function(lib,game,ui,get,ai,_status){ + return { + name:'standard', + connect:true, + characterSort:{ + standard:{ + standard_2008:["caocao","simayi","xiahoudun","zhangliao","xuzhu","guojia","zhenji","liubei","guanyu","zhangfei","zhugeliang","zhaoyun","machao","huangyueying","sunquan","ganning","lvmeng","huanggai","zhouyu","daqiao","luxun","sunshangxiang","huatuo","lvbu","diaochan",], + standard_2013:["huaxiong","re_yuanshu"], + standard_2019:["gongsunzan","xf_yiji"], + }, + }, + character:{ + caocao:['male','wei',4,['jianxiong','hujia'],['zhu']], + simayi:['male','wei',3,['fankui','guicai']], + xiahoudun:['male','wei',4,['ganglie']], + zhangliao:['male','wei',4,['tuxi']], + xuzhu:['male','wei',4,['luoyi']], + guojia:['male','wei',3,['tiandu','yiji']], + zhenji:['female','wei',3,['luoshen','qingguo']], + liubei:['male','shu',4,['rende','jijiang'],['zhu']], + guanyu:['male','shu',4,['wusheng']], + zhangfei:['male','shu',4,['paoxiao']], + zhugeliang:['male','shu',3,['guanxing','kongcheng']], + zhaoyun:['male','shu',4,['longdan']], + machao:['male','shu',4,['mashu','tieji']], + huangyueying:['female','shu',3,['jizhi','qicai']], + sunquan:['male','wu',4,['zhiheng','jiuyuan'],['zhu']], + ganning:['male','wu',4,['qixi']], + lvmeng:['male','wu',4,['keji']], + huanggai:['male','wu',4,['kurou']], + zhouyu:['male','wu',3,['yingzi','fanjian']], + daqiao:['female','wu',3,['guose','liuli']], + luxun:['male','wu',3,['qianxun','lianying']], + sunshangxiang:['female','wu',3,['xiaoji','jieyin']], + huatuo:['male','qun',3,['qingnang','jijiu']], + lvbu:['male','qun',4,['wushuang']], + diaochan:['female','qun',3,['lijian','biyue']], + huaxiong:['male','qun',6,['yaowu']], + gongsunzan:['male','qun',4,['yicong']], + + xf_yiji:["male","shu",3,["xinfu_jijie","xinfu_jiyuan"],[]], + re_yuanshu:['male','qun',4,['wangzun','tongji']], + }, + characterIntro:{ + liubei:'先主姓刘,讳备,字玄德,涿郡涿县人,汉景帝子中山靖王胜之后也。以仁德治天下。', + guanyu:'字云长,本字长生,并州河东解州人。五虎上将之首,爵至汉寿亭侯,谥曰“壮缪侯”。被奉为“关圣帝君”,崇为“武圣”。', + zhangfei:'字翼德,涿郡人,燕颔虎须,豹头环眼。有诗云:“长坂坡头杀气生,横枪立马眼圆睁。一声好似轰雷震,独退曹家百万兵”。', + zhugeliang:'字孔明,号卧龙,琅琊阳都人,蜀汉丞相。在世时被封为武乡侯,谥曰忠武侯。著有《出师表》、《诫子书》等。怀不世之才,以空城戏司马,能观星象而通鬼神。', + zhaoyun:'字子龙,常山真定人。身长八尺,姿颜雄伟。长坂坡单骑救阿斗,先主云:“子龙一身都是胆也。”', + machao:'字孟起,扶风茂陵人。面如冠玉,目如流星,虎体猿臂,彪腹狼腰,声雄力猛。因衣着讲究,举止非凡,故人称“锦马超”。麾铁骑,捻金枪。', + huangyueying:'荆州沔南白水人,沔阳名士黄承彦之女,诸葛亮之妻,诸葛瞻之母。容貌甚丑,而有奇才:上通天文,下察地理,韬略近于诸书无所不晓,诸葛亮在南阳闻其贤而迎娶。', + sunquan:'吴大帝,字仲谋,吴郡富春县人。统领吴与蜀魏三足鼎立,制衡天下。', + ganning:'字兴霸,巴郡临江人,祖籍荆州南阳郡。为人勇猛刚强,忠心耿耿,勇往无前。曾带兵百人于二更奇袭曹营,大挫其锐气。', + lvmeng:'字子明,汝南富陂人。陈寿评曰:“吕蒙勇而有谋断,识军计,谲郝普,擒关羽,最其妙者。初虽轻果妄杀,终于克己,有国士之量,岂徒武将而已乎!”', + huanggai:'字公覆,零陵郡泉陵县人。官至偏将军、武陵太守。以苦肉计骗曹孟德,亲往诈降,火烧战船,重创敌军。', + zhouyu:'字公瑾,庐江舒县人,任东吴三军大都督,雄姿英发,人称“美周郎”。赤壁之战前,巧用反间计杀了精通水战的叛将蔡瑁、张允。', + daqiao:'庐江皖县人,为乔公长女,孙策之妻,小乔之姊。与小乔并称为“江东二乔”,容貌国色流离。', + luxun:'本名陆议,字伯言,吴郡吴县人。历任东吴大都督、丞相。吴大帝孙权兄孙策之婿,世代为江东大族。以谦逊之书麻痹关羽,夺取荆州,又有火烧连营大破蜀军。', + sunshangxiang:'孙夫人,乃孙权之妹。刘备定荆州,孙权进妹与其结姻,重固盟好。孙夫人才捷刚猛,有诸兄之风。后人为其立庙,号曰“枭姬庙”。', + caocao:'魏武帝曹操,字孟德,小名阿瞒、吉利,沛国谯人。精兵法,善诗歌,乃治世之能臣,乱世之奸雄也。', + simayi:'晋宣帝,字仲达,河内温人。曾任职过曹魏的大都督,太尉,太傅。少有奇节,聪明多大略,博学洽闻,伏膺儒教,世之鬼才也。', + xiahoudun:'字元让,沛国谯人。有拔矢啖睛之勇,性格勇猛刚烈。', + zhangliao:'字文远,魏雁门马邑人。官至前将军、征东将军、晋阳侯。武功高强,又谋略过人,多次建立奇功,以800人突袭孙权十万大军,皆望风披靡。', + xuzhu:'字仲康,谯国谯县人。和典韦一同统率着曹操的亲卫队“虎卫军”。因为他十分勇猛,所以有“虎痴”的绰号。曾有裸衣斗马超之举。', + guojia:'字奉孝,颍川阳翟人,官至军师祭酒。惜天妒英才,英年早逝。有诗云:“良计环环不遗策,每临制变满座惊”。', + zhenji:'中山无极人,别称甄洛或甄宓,庙号文昭甄皇后。魏文帝曹丕的正室。懂诗文,有倾国倾城之貌,《洛神赋》即是曹植为她所作。', + huatuo:'字元化,一名旉,沛国谯人,“建安三神医”之一。集平生之所得著《青囊经》,现已失传。', + lvbu:'字奉先,五原郡九原县人。三国第一猛将,曾独力战刘关张三人,其武力世之无双。时人语曰:“人中有吕布,马中有赤兔。”', + diaochan:'中国古代四大美女之一,有闭月羞花之貌。司徒王允之义女,由王允授意施行连环计,离间董卓、吕布,借布手除卓。后貂蝉成为吕布的妾。', + huaxiong:'董卓旗下名将,自荐抵抗山东地区反对董卓的诸侯联军于汜水关前,他先后斩杀济北相鲍信之弟鲍忠和孙坚部将祖茂、以及袁术部将俞涉和韩馥手下潘凤等人,最后关东联军派出关羽与之一对一决斗而被杀。', + + xf_yiji:"伊籍,字机伯,生卒年不详,兖州山阳郡(今山东金乡县)人,三国时期蜀汉官员。年少时依附于同乡刘表。刘备落难到荆州时,伊籍时常拜访,托请刘备照顾。建安十三年(208年),刘表病死,伊籍便转投刘备,一起渡江南下。建安十六年(211年),刘备入蜀帮助刘璋,伊籍亦有跟随。随后刘备和刘璋双方决裂。建安十九年(214年),刘备平定益州,任命伊籍为左将军从事中郎,其待遇次于简雍、孙乾等。后升任昭文将军,并与诸葛亮、法正、刘巴、李严共同编制《蜀科》。", + }, + perfectPair:{ + xiahoudun:['xiahouyuan'], + zhenji:['caopi'], + caocao:['xuzhu','dianwei','bianfuren'], + huangzhong:['weiyan'], + zhugeliang:['huangyueying','jiangwei','jiangfei'], + liubei:['guanyu','zhangfei','ganfuren'], + zhaoyun:['liushan'], + daqiao:['xiaoqiao'], + zhouyu:['huanggai','xiaoqiao'], + sunquan:['zhoutai'], + lvbu:['diaochan'], + machao:['madai','mayunlu'], + zhangliao:['zangba'], + ganning:['lingtong'], + }, + skill:{ + hujia:{ + audio:2, + audioname:['re_caocao'], + unique:true, + zhuSkill:true, + trigger:{player:['chooseToRespondBefore','chooseToUseBefore']}, + filter:function(event,player){ + if(event.responded) return false; + if(player.storage.hujiaing) return false; + if(!player.hasZhuSkill('hujia')) return false; + if(!event.filterCard({name:'shan'},player,event)) return false; + return game.hasPlayer(function(current){ + return current!=player&¤t.group=='wei'; + }); + }, + check:function(event,player){ + if(get.damageEffect(player,event.player,player)>=0) return false; + return true; + }, + content:function(){ + "step 0" + if(event.current==undefined) event.current=player.next; + if(event.current==player){ + event.finish(); + } + else if(event.current.group=='wei'){ + if((event.current==game.me&&!_status.auto)||( + get.attitude(event.current,player)>2)|| + event.current.isOnline()){ + player.storage.hujiaing=true; + var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张闪?',{name:'shan'}); + next.set('ai',function(){ + var event=_status.event; + return (get.attitude(event.player,event.source)-2); + }); + next.set('skillwarn','替'+get.translation(player)+'打出一张闪'); + next.autochoose=lib.filter.autoRespondShan; + next.set('source',player); + } + } + "step 1" + player.storage.hujiaing=false; + if(result.bool){ + event.finish(); + trigger.result={bool:true,card:{name:'shan',isCard:true}}; + trigger.responded=true; + trigger.animate=false; + if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ + event.current.ai.shown+=0.3; + if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; + } + } + else{ + event.current=event.current.next; + event.goto(0); + } + }, + ai:{ + respondShan:true, + skillTagFilter:function(player){ + if(player.storage.hujiaing) return false; + if(!player.hasZhuSkill('hujia')) return false; + return game.hasPlayer(function(current){ + return current!=player&¤t.group=='wei'; + }); + }, + }, + }, + jianxiong:{ + audio:2, + trigger:{player:'damageEnd'}, + filter:function(event,player){ + return get.itemtype(event.cards)=='cards'&&get.position(event.cards[0],true)=='o'; + }, + content:function(){ + player.gain(trigger.cards,'gain2'); + }, + ai:{ + maixie:true, + maixie_hp:true, + effect:{ + target:function(card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; + if(get.tag(card,'damage')) return [1,0.55]; + } + } + } + }, + fankui:{ + audio:2, + trigger:{player:'damageEnd'}, + direct:true, + filter:function(event,player){ + return (event.source&&event.source.countGainableCards(player,'he')&&event.num>0&&event.source!=player); + }, + content:function(){ + player.gainPlayerCard(get.prompt('fankui',trigger.source),trigger.source,get.buttonValue,'he').set('logSkill',['fankui',trigger.source]); + }, + ai:{ + maixie_defend:true, + effect:{ + target:function(card,player,target){ + if(player.countCards('he')>1&&get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-1.5]; + if(get.attitude(target,player)<0) return [1,1]; + } + } + } + } + }, + guicai:{ + audio:2, + trigger:{global:'judge'}, + direct:true, + filter:function(event,player){ + return player.countCards(get.mode()=='guozhan'?'he':'h')>0; + }, + content:function(){ + "step 0" + player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ + get.translation(trigger.player.judging[0])+','+get.prompt('guicai'),get.mode()=='guozhan'?'he':'h',function(card){ + var player=_status.event.player; + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + if(mod!='unchanged') return mod; + return true; + }).set('ai',function(card){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + var judging=_status.event.judging; + var result=trigger.judge(card)-trigger.judge(judging); + var attitude=get.attitude(player,trigger.player); + if(attitude==0||result==0) return 0; + if(attitude>0){ + return result-get.value(card)/2; + } + else{ + return -result-get.value(card)/2; + } + }).set('judging',trigger.player.judging[0]); + "step 1" + if(result.bool){ + player.respond(result.cards,'guicai','highlight','noOrdering'); + } + else{ + event.finish(); + } + "step 2" + if(result.bool){ + if(trigger.player.judging[0].clone){ + trigger.player.judging[0].clone.classList.remove('thrownhighlight'); + game.broadcast(function(card){ + if(card.clone){ + card.clone.classList.remove('thrownhighlight'); + } + },trigger.player.judging[0]); + game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); + } + game.cardsDiscard(trigger.player.judging[0]); + trigger.player.judging[0]=result.cards[0]; + trigger.orderingCards.addArray(result.cards); + game.log(trigger.player,'的判定牌改为',result.cards[0]); + game.delay(2); + } + }, + ai:{ + rejudge:true, + tag:{ + rejudge:1, + } + } + }, + ganglie:{ + audio:2, + trigger:{player:'damageEnd'}, + filter:function(event,player){ + return (event.source!=undefined); + }, + check:function(event,player){ + return (get.attitude(player,event.source)<=0); + }, + logTarget:'source', + content:function(){ + "step 0" + player.judge(function(card){ + if(get.suit(card)=='heart') return -2; + return 2; + }) + "step 1" + if(result.judge<2){ + event.finish();return; + } + trigger.source.chooseToDiscard(2).set('ai',function(card){ + if(card.name=='tao') return -10; + if(card.name=='jiu'&&_status.event.player.hp==1) return -10; + return get.unuseful(card)+2.5*(5-get.owner(card).hp); + }); + "step 2" + if(result.bool==false){ + trigger.source.damage(); + } + }, + ai:{ + maixie_defend:true, + effect:{ + target:function(card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; + return 0.8; + // if(get.tag(card,'damage')&&get.damageEffect(target,player,player)>0) return [1,0,0,-1.5]; + } + } + } + }, + ganglie_three:{ + audio:'ganglie', + trigger:{player:'damageEnd'}, + direct:true, + content:function(){ + "step 0" + player.chooseTarget(get.prompt2('ganglie_three'),function(card,player,target){ + return target.isEnemyOf(player); + }).set('ai',function(target){ + return -get.attitude(_status.event.player,target)/(1+target.countCards('h')); + }); + "step 1" + if(result.bool){ + event.target=result.targets[0]; + player.logSkill('ganglie_three',target); + } + else event.finish(); + "step 2" + player.judge(function(card){ + if(get.suit(card)=='heart') return -2; + return 2; + }) + "step 3" + if(result.judge<2){ + event.finish();return; + } + target.chooseToDiscard(2).set('ai',function(card){ + if(card.name=='tao') return -10; + if(card.name=='jiu'&&_status.event.player.hp==1) return -10; + return get.unuseful(card)+2.5*(5-get.owner(card).hp); + }); + "step 4" + if(result.bool==false){ + target.damage(); + } + }, + ai:{ + maixie_defend:true, + effect:{ + target:function(card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; + return 0.8; + // if(get.tag(card,'damage')&&get.damageEffect(target,player,player)>0) return [1,0,0,-1.5]; + } + } + } + }, + tuxi:{ + audio:2, + trigger:{player:'phaseDrawBegin1'}, + direct:true, + filter:function(event,player){ + return !event.numFixed; + }, + content:function(){ + "step 0" + var check; + var i,num=game.countPlayer(function(current){ + return current!=player&¤t.countCards('h')&&get.attitude(player,current)<=0; + }); + check=(num>=2); + player.chooseTarget(get.prompt('tuxi'),'获得其他一至两名角色的各一张手牌',[1,2],function(card,player,target){ + return target.countCards('h')>0&&player!=target; + },function(target){ + if(!_status.event.aicheck) return 0; + var att=get.attitude(_status.event.player,target); + if(target.hasSkill('tuntian')) return att/10; + return 1-att; + }).set('aicheck',check); + "step 1" + if(result.bool){ + player.logSkill('tuxi',result.targets); + player.gainMultiple(result.targets); + trigger.changeToZero(); + } + else{ + event.finish(); + } + "step 2" + game.delay(); + }, + ai:{ + threaten:2, + expose:0.3 + } + }, + luoyi:{ + audio:2, + trigger:{player:'phaseDrawBegin2'}, + check:function(event,player){ + if(player.countCards('h')<3) return false; + if(!player.hasSha()) return false; + return game.hasPlayer(function(current){ + return get.attitude(player,current)<0&&player.canUse('sha',current); + }); + }, + filter:function(event,player){ + return !event.numFixed&&event.num>0; + }, + content:function(){ + player.addTempSkill('luoyi2','phaseJieshuBegin'); + trigger.num--; + } + }, + luoyi2:{ + trigger:{source:'damageBegin1'}, + filter:function(event){ + return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.notLink(); + }, + forced:true, + content:function(){ + trigger.num++; + }, + ai:{ + damageBonus:true + } + }, + tiandu:{ + audio:2, + audioname:['re_guojia','xizhicai','gz_nagisa'], + trigger:{player:'judgeEnd'}, + frequent:function(event){ + if(event.result.card.name=='du') return false; + //if(get.mode()=='guozhan') return false; + return true; + }, + check:function(event){ + if(event.result.card.name=='du') return false; + return true; + }, + filter:function(event,player){ + return get.position(event.result.card,true)=='o'; + }, + content:function(){ + player.gain(trigger.result.card,'gain2'); + } + }, + yiji:{ + audio:2, + trigger:{player:'damageEnd'}, + frequent:true, + filter:function(event){ + return (event.num>0) + }, + content:function(){ + "step 0" + event.count=trigger.num; + "step 1" + event.count--; + event.cards=get.cards(2); + "step 2" + 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.goto(5); + } + "step 3" + if(result.bool){ + for(var i=0;i0){ + return att/(1+target.countCards('h')); + } + else{ + return att/100; + } + }).set('enemy',get.value(event.togive[0],player,'raw')<0); + } + "step 4" + 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(2); + } + "step 5" + if(event.count>0) player.chooseBool(get.prompt2(event.name)).set('frequentSkill',event.name); + else event.finish(); + "step 6" + if(result.bool){ + player.logSkill(event.name); + 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]; + } + } + } + } + }, + luoshen:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + frequent:true, + content:function(){ + "step 0" + if(event.cards==undefined) event.cards=[]; + var next=player.judge(function(card){ + if(get.color(card)=='black') return 1.5; + return -1.5; + }); + if(get.mode()!='guozhan'&&!player.hasSkillTag('rejudge')) next.set('callback',function(){ + if(event.judgeResult.color=='black'&&get.position(card,true)=='o') player.gain(card,'gain2'); + }); + else next.set('callback',function(){ + if(event.judgeResult.color=='black') event.getParent().orderingCards.remove(card); + }); + "step 1" + if(result.judge>0){ + event.cards.push(result.card); + player.chooseBool('是否再次发动【洛神】?').set('frequentSkill','luoshen'); + } + else{ + for(var i=0;i0){ + event.cards.push(result.card); + if(lib.config.autoskilllist.contains('luoshen')){ + player.chooseBool('是否再次发动【洛神】?'); + } + else{ + event._result={bool:true}; + } + } + else{ + for(var i=0;i1) return 0; + if(ui.selected.cards.length&&ui.selected.cards[0].name=='du') return 0; + if(!ui.selected.cards.length&&card.name=='du') return 20; + var player=get.owner(card); + var num=0; + var evt2=_status.event.getParent(); + var num=0; + player.getHistory('lose',function(evt){ + if(evt.getParent().skill=='rende'&&evt.getParent(3)==evt2) num+=evt.cards.length; + }); + if(player.hp==player.maxHp||num>1||player.countCards('h')<=1){ + if(ui.selected.cards.length){ + return -1; + } + var players=game.filterPlayer(); + for(var i=0;i=3&& + get.attitude(players[i],player)>=3){ + return 11-get.value(card); + } + } + if(player.countCards('h')>player.hp) return 10-get.value(card); + if(player.countCards('h')>2) return 6-get.value(card); + return -1; + } + return 10-get.value(card); + }, + content:function(){ + target.gain(cards,player,'giveAuto'); + var evt2=event.getParent(3); + var num=0; + player.getHistory('lose',function(evt){ + if(evt.getParent(2).name=='rende'&&evt.getParent(5)==evt2) num+=evt.cards.length; + }); + if(num<2&&num+cards.length>1) player.recover(); + }, + ai:{ + order:function(skill,player){ + if(player.hp1){ + return 10; + } + return 1; + }, + result:{ + target:function(player,target){ + if(target.hasSkillTag('nogain')) return 0; + if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ + if(target.hasSkillTag('nodu')) return 0; + return -10; + } + if(target.hasJudge('lebu')) return 0; + var nh=target.countCards('h'); + var np=player.countCards('h'); + if(player.hp==player.maxHp||player.storage.rende<0||player.countCards('h')<=1){ + if(nh>=np-1&&np<=player.hp&&!target.hasSkill('haoshi')) return 0; + } + return Math.max(1,5-nh); + } + }, + effect:{ + target:function(card,player,target){ + if(player==target&&get.type(card)=='equip'){ + if(player.countCards('e',{subtype:get.subtype(card)})){ + var players=game.filterPlayer(); + for(var i=0;i0){ + return 0; + } + } + } + } + } + }, + threaten:0.8 + } + }, + rende1:{ + trigger:{player:'phaseUseBegin'}, + silent:true, + content:function(){ + player.storage.rende=0; + } + }, + jijiang:{ + audio:'jijiang1', + audioname:['liushan','re_liubei','re_liushan','ol_liushan'], + unique:true, + group:['jijiang1','jijiang2'], + zhuSkill:true, + }, + jijiang1:{ + audio:2, + audioname:['liushan','re_liubei','re_liushan','ol_liushan'], + trigger:{player:'chooseToRespondBegin'}, + check:function(event){ + if(event.jijiang) return false; + return true; + }, + filter:function(event,player){ + if(event.responded) return false; + if(player.storage.jijianging) return false; + if(!player.hasZhuSkill('jijiang')) return false; + if(!event.filterCard({name:'sha'},player,event)) return false; + return game.hasPlayer(function(current){ + return current!=player&¤t.group=='shu'; + }); + }, + content:function(){ + "step 0" + if(event.current==undefined) event.current=player.next; + if(event.current==player){ + event.finish(); + } + else if(event.current.group=='shu'){ + player.storage.jijianging=true; + var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'}); + next.set('ai',function(){ + var event=_status.event; + return (get.attitude(event.player,event.source)-2); + }); + next.set('source',player); + next.set('jijiang',true); + next.set('skillwarn','替'+get.translation(player)+'打出一张杀'); + next.noOrdering=true; + next.autochoose=lib.filter.autoRespondSha; + } + else{ + event.current=event.current.next; + event.redo(); + } + "step 1" + player.storage.jijianging=false; + if(result.bool){ + event.finish(); + trigger.result=result; + trigger.responded=true; + trigger.animate=false; + if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ + event.current.ai.shown+=0.3; + if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; + } + } + else{ + event.current=event.current.next; + event.goto(0); + } + } + }, + jijiang2:{ + audio:'jijiang1', + audioname:['liushan','re_liubei','re_liushan','ol_liushan'], + enable:'chooseToUse', + prompt:'选择一名目标角色。若有其他蜀势力角色打出【杀】响应,则视为你对其使用此【杀】。', + filter:function(event,player){ + if(event.filterCard&&!event.filterCard({name:'sha'},player,event)) return false; + if(!player.hasZhuSkill('jijiang')) return false; + if(player.hasSkill('jijiang3')) return false; + if(!lib.filter.cardUsable({name:'sha'},player)) return false; + return game.hasPlayer(function(current){ + return current!=player&¤t.group=='shu'; + }); + }, + filterTarget:function(card,player,target){ + if(_status.event._backup&& + typeof _status.event._backup.filterTarget=='function'&& + !_status.event._backup.filterTarget({name:'sha'},player,target)){ + return false; + } + return player.canUse({name:'sha'},target); + }, + content:function(){ + "step 0" + if(event.current==undefined) event.current=player.next; + if(event.current==player){ + player.addSkill('jijiang3'); + event.getParent(2).step=0; + event.finish(); + } + else if(event.current.group=='shu'){ + var next=event.current.chooseToRespond('是否替'+get.translation(player)+'对'+get.translation(target)+'使用一张杀', + function(card,player,event){ + event=event||_status.event; + return card.name=='sha'&&event.source.canUse(card,event.target); + }); + next.set('ai',function(card){ + var event=_status.event; + return get.effect(event.target,card,event.source,event.player); + }); + next.set('source',player); + next.set('target',target); + next.set('jijiang',true); + next.set('skillwarn','替'+get.translation(player)+'打出一张杀'); + next.noOrdering=true; + next.autochoose=lib.filter.autoRespondSha; + } + else{ + event.current=event.current.next; + event.redo(); + } + "step 1" + if(result.bool){ + event.finish(); + if(result.cards&&result.cards.length){ + player.useCard({name:'sha',isCard:true},result.cards,target).animate=false; + } + else{ + player.useCard({name:'sha',isCard:true},target).animate=false; + } + if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ + event.current.ai.shown+=0.3; + if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; + } + } + else{ + event.current=event.current.next; + event.goto(0); + } + }, + ai:{ + respondSha:true, + skillTagFilter:function(player){ + if(!player.hasZhuSkill('jijiang')) return false; + return game.hasPlayer(function(current){ + return current!=player&¤t.group=='shu'; + }); + }, + result:{ + target:function(player,target){ + if(player.hasSkill('jijiang3')) return 0; + return get.effect(target,{name:'sha'},player,target); + } + }, + order:function(){ + return get.order({name:'sha'})-0.1; + }, + } + }, + jijiang3:{ + trigger:{global:['useCardAfter','useSkillAfter','phaseAfter']}, + silent:true, + filter:function(event){ + return event.skill!='jijiang2'&&event.skill!='qinwang2'; + }, + content:function(){ + player.removeSkill('jijiang3'); + } + }, + wusheng:{ + audio:2, + audioname2:{old_guanzhang:'old_fuhun'}, + audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo'], + enable:['chooseToRespond','chooseToUse'], + filterCard:function(card,player){ + if(get.zhu(player,'shouyue')) return true; + return get.color(card)=='red'; + }, + position:'he', + viewAs:{name:'sha'}, + viewAsFilter:function(player){ + if(get.zhu(player,'shouyue')){ + if(!player.countCards('he')) return false; + } + else{ + if(!player.countCards('he',{color:'red'})) return false; + } + }, + prompt:'将一张红色牌当杀使用或打出', + check:function(card){return 4-get.value(card)}, + ai:{ + skillTagFilter:function(player){ + if(get.zhu(player,'shouyue')){ + if(!player.countCards('he')) return false; + } + else{ + if(!player.countCards('he',{color:'red'})) return false; + } + }, + respondSha:true, + } + }, + zhongyi:{ + audio:2, + enable:'phaseUse', + limited:true, + skillAnimation:true, + animationColor:'orange', + filterCard:true, + position:'he', + filter:function(event,player){ + return player.countCards('he')>0; + }, + toStorage:true, + discard:false, + content:function(){ + player.awakenSkill('zhongyi'); + player.addTempSkill('zhongyi2','roundStart'); + player.markAuto('zhongyi2',cards); + }, + }, + zhongyi2:{ + trigger:{global:'damageBegin1'}, + forced:true, + popup:false, + logTarget:'source', + filter:function(event,player){ + return event.getParent().name=='sha'&&event.source&&event.source.isFriendOf(player); + }, + content:function(){trigger.num++}, + intro:{content:'cards',onunmark:'throw'}, + }, + paoxiao:{ + audio:2, + firstDo:true, + audioname2:{old_guanzhang:'old_fuhun'}, + audioname:['re_zhangfei','guanzhang','xiahouba'], + 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){ + if(card.name=='sha') return Infinity; + } + }, + ai:{ + unequip:true, + skillTagFilter:function(player,tag,arg){ + if(!get.zhu(player,'shouyue')) return false; + if(arg&&arg.name=='sha') return true; + return false; + } + } + }, + xinguanxing:{ + audio:'guanxing', + // alter:true, + trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']}, + frequent:true, + filter:function(event,player,name){ + if(name=='phaseJieshuBegin'){ + return player.hasSkill('xinguanxing_on'); + } + return true; + }, + content:function(){ + 'step 0' + if(get.is.altered('xinguanxing')){ + event.num=game.countPlayer()<4?3:5; + } + else{ + event.num=Math.min(5,game.countPlayer()); + } + event.cards=get.cards(event.num); + event.chosen=[]; + event.num1=0; + event.num2=0; + event.bottom=-1; + 'step 1' + var js=player.getCards('j'); + var pos; + var choice=-1; + var getval=function(card,pos){ + if(js[pos]){ + return (get.judge(js[pos]))(card); + } + else if(event.triggername=='phaseJieshuBegin'&&get.attitude(player,player.getNext())<=0){ + return 11.5-get.value(card,player); + } + else{ + return get.value(card,player); + } + }; + event.discard=false; + var minval=6; + for(pos=0;posmax){ + choice=j; + max=current; + } + } + if(event.bottom<0){ + if(!js[pos]){ + if(max=0&&event.bottom<=pos){ + choice=pos; + event.discard=true;break; + } + if(choice!=-1){ + break; + } + } + player.chooseCardButton('观星:选择要移动的牌',event.cards).set('filterButton',function(button){ + return !_status.event.chosen.contains(button.link); + }).set('chosen',event.chosen).set('ai',function(button){ + return button.link==_status.event.choice?1:0; + }).set('choice',event.cards[choice]); + event.pos=pos; + 'step 2' + if(result.bool){ + var card=result.links[0]; + var index=event.cards.indexOf(card); + event.card=card; + event.chosen.push(card); + event.cards.remove(event.card); + var controlai=event.pos||0; + if(event.discard){ + controlai=event.cards.length+1; + } + var buttons=event.cards.slice(0); + player.chooseControl(function(){ + return _status.event.controlai; + }).set('controlai',controlai).set('sortcard',buttons).set('tosort',card); + } + else{ + event.goto(4); + } + 'step 3' + if(typeof result.index=='number'){ + if(result.index>event.cards.length){ + ui.cardPile.appendChild(event.card); + event.num2++; + } + else{ + event.cards.splice(result.index,0,event.card); + } + event.num--; + if(event.num>0){ + event.goto(1); + } + } + 'step 4' + while(event.cards.length){ + ui.cardPile.insertBefore(event.cards.pop(),ui.cardPile.firstChild); + event.num1++; + } + var js=player.getCards('j'); + if(js.length==1){ + if((get.judge(js[0]))(ui.cardPile.firstChild)<0){ + player.addTempSkill('guanxing_fail'); + } + } + player.popup(get.cnNumber(event.num1)+'上'+get.cnNumber(event.num2)+'下'); + game.log(player,'将','#y'+get.cnNumber(event.num1)+'张牌','置于牌堆顶,','#y'+get.cnNumber(event.num2)+'张牌','置于牌堆底'); + if(event.triggername=='phaseZhunbeiBegin'&&get.is.altered('xinguanxing')&&event.num1==0){ + player.addTempSkill('xinguanxing_on'); + } + }, + subSkill:{ + on:{} + } + }, + guanxing_oldnew:{ + audio:2, + audioname:['jiangwei'], + trigger:{player:'phaseZhunbeiBegin'}, + frequent:true, + content:function(){ + 'step 0' + event.num=Math.min(5,game.countPlayer()); + if(event.name!='yizhi'&&player.hasSkill('yizhi')) event.num=5; + event.cards=get.cards(event.num); + event.chosen=[]; + event.num1=0; + event.num2=0; + 'step 1' + var js=player.getCards('j'); + var pos; + var choice=-1; + var getval=function(card,pos){ + if(js[pos]){ + return (get.judge(js[pos]))(card); + } + else{ + return get.value(card); + } + }; + for(pos=0;posmax){ + choice=j; + max=current; + } + } + if(choice!=-1){ + break; + } + } + player.chooseCardButton('观星:选择要移动的牌',event.cards).set('filterButton',function(button){ + return !_status.event.chosen.contains(button.link); + }).set('chosen',event.chosen).set('ai',function(button){ + return button.link==_status.event.choice?1:0; + }).set('choice',event.cards[choice]); + event.pos=pos; + 'step 2' + if(result.bool){ + var card=result.links[0]; + var index=event.cards.indexOf(card); + event.card=card; + event.chosen.push(card); + event.cards.remove(event.card); + var buttons=event.cards.slice(0); + player.chooseControl(function(){ + return _status.event.controlai; + }).set('controlai',event.pos||0).set('sortcard',buttons).set('tosort',card); + } + else{ + event.goto(4); + } + 'step 3' + if(typeof result.index=='number'){ + if(result.index>event.cards.length){ + ui.cardPile.appendChild(event.card); + event.num2++; + } + else{ + event.cards.splice(result.index,0,event.card); + } + event.num--; + if(event.num>0){ + event.goto(1); + } + } + 'step 4' + while(event.cards.length){ + ui.cardPile.insertBefore(event.cards.pop(),ui.cardPile.firstChild); + event.num1++; + } + var js=player.getCards('j'); + if(js.length==1){ + if((get.judge(js[0]))(ui.cardPile.firstChild)<0){ + player.addTempSkill('guanxing_fail'); + } + } + player.popup(get.cnNumber(event.num1)+'上'+get.cnNumber(event.num2)+'下'); + game.log(player,'将','#y'+get.cnNumber(event.num1)+'张牌','置于牌堆顶,','#y'+get.cnNumber(event.num2)+'张牌','置于牌堆底'); + }, + ai:{ + guanxing:true + } + }, + guanxing_fail:{}, + guanxing:{ + audio:2, + audioname:['jiangwei','re_jiangwei','re_zhugeliang'], + trigger:{player:'phaseZhunbeiBegin'}, + frequent:true, + content:function(){ + "step 0" + if(player.isUnderControl()){ + game.modeSwapPlayer(player); + } + var num=Math.min(5,game.countPlayer()); + if(player.hasSkill('yizhi')&&player.hasSkill('guanxing')){ + num=5; + } + var cards=get.cards(num); + event.cards=cards; + var switchToAuto=function(){ + _status.imchoosing=false; + if(event.dialog) event.dialog.close(); + if(event.control) event.control.close(); + var top=[]; + var judges=player.getCards('j'); + var stopped=false; + if(!player.hasWuxie()){ + for(var i=0;i=8; + })){ + return 8-get.value(card); + } + return 6-get.value(card) + }, + delay:0, + content:function(){ + 'step 0' + if(!player.hasSkill('xinzhiheng_delay')) game.delayx(); + 'step 1' + player.draw(cards.length); + }, + group:'xinzhiheng_draw', + subSkill:{ + draw:{ + trigger:{player:'loseEnd'}, + silent:true, + filter:function(event,player){ + if(event.getParent(2).skill!='xinzhiheng') return false; + if(!get.is.altered('xinzhiheng')) return false; + if(player.countCards('h')) return false; + for(var i=0;i0) return false; + if(event.player.group!='wu') return false; + return true; + }, + content:function(){ + player.recover(); + }, + global:'xinjiuyuan2', + }, + xinjiuyuan2:{ + audio:'jiuyuan', + forceaudio:true, + trigger:{player:'taoBegin'}, + filter:function(event,player){ + if(!get.is.altered('xinjiuyuan')) return false; + if(player.group!='wu') return false; + return game.hasPlayer(function(target){ + return player!=target&&target.isDamaged()&&target.hp0); + } + else{ + event.finish(); + } + 'step 2' + if(result.bool){ + player.logSkill('xinjiuyuan',event.current); + event.current.recover(); + player.draw(); + } + event.goto(1); + } + }, + qixi:{ + audio:2, + audioname:['re_ganning','re_heqi'], + enable:'chooseToUse', + filterCard:function(card){ + return get.color(card)=='black'; + }, + position:'he', + viewAs:{name:'guohe'}, + viewAsFilter:function(player){ + if(!player.countCards('he',{color:'black'})) return false; + }, + prompt:'将一张黑色牌当过河拆桥使用', + check:function(card){return 4-get.value(card)} + }, + keji:{ + audio:2, + audioname:['re_lvmeng','sp_lvmeng'], + trigger:{player:'phaseDiscardBefore'}, + frequent:function(event,player){ + return player.needsToDiscard(); + }, + filter:function(event,player){ + if(player.getHistory('skipped').contains('phaseUse')) return true; + var history=player.getHistory('useCard').concat(player.getHistory('respond')); + for(var i=0;i=player.hp-1) return -1; + if(player.hp<3) return -1; + return 1; + } + } + } + }, + yingzi:{ + audio:2, + audioname:['sp_lvmeng'], + trigger:{player:'phaseDrawBegin2'}, + frequent:true, + filter:function(event,player){ + return !event.numFixed; + }, + content:function(){ + trigger.num++; + }, + ai:{ + threaten:1.3 + } + }, + fanjian:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('h')>0; + }, + filterTarget:function(card,player,target){ + return player!=target; + }, + content:function(){ + "step 0" + target.chooseControl('heart2','diamond2','club2','spade2').set('ai',function(event){ + switch(Math.floor(Math.random()*6)){ + case 0:return 'heart2'; + case 1:case 4:case 5:return 'diamond2'; + case 2:return 'club2'; + case 3:return 'spade2'; + } + }); + "step 1" + game.log(target,'选择了'+get.translation(result.control)); + event.choice=result.control; + target.popup(event.choice); + event.card=player.getCards('h').randomGet(); + target.gain(event.card,player,'give'); + game.delay(); + "step 2" + if(get.suit(event.card)+'2'!=event.choice) target.damage('nocard'); + }, + ai:{ + order:1, + result:{ + target:function(player,target){ + var eff=get.damageEffect(target,player); + if(eff>=0) return 1+eff; + var value=0,i; + var cards=player.getCards('h'); + for(i=0;i0; + }, + enable:'chooseToUse', + filterCard:function(card){ + return get.suit(card)=='diamond'; + }, + position:'he', + viewAs:{name:'lebu'}, + prompt:'将一张方片牌当乐不思蜀使用', + check:function(card){return 6-get.value(card)}, + ai:{ + threaten:1.5 + } + }, + liuli:{ + audio:2, + audioname:['re_daqiao','daxiaoqiao'], + 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 player.inRange(current)&¤t!=event.player&& + current!=player&&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(player.inRange(target)&&target!=trigger.source){ + if(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('liuli'), + 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); + } + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(target.countCards('he')==0) return; + if(card.name!='sha') return; + var min=1; + var friend=get.attitude(player,target)>0; + var vcard={name:'shacopy',nature:card.nature,suit:card.suit}; + var players=game.filterPlayer(); + for(var i=0;i0){ + if(!player.canUse(card,players[0])){ + return [0,0.1]; + } + min=0; + } + } + } + return min; + } + } + } + }, + qianxun:{ + mod:{ + targetEnabled:function(card,player,target,now){ + if(card.name=='shunshou'||card.name=='lebu') return false; + } + }, + audio:2, + }, + lianying:{ + audio:2, + trigger:{player:'loseAfter'}, + frequent:true, + filter:function(event,player){ + if(player.countCards('h')) return false; + return event.hs&&event.hs.length>0; + }, + content:function(){ + player.draw(); + }, + ai:{ + threaten:0.8, + effect:{ + target:function(card){ + if(card.name=='guohe'||card.name=='liuxinghuoyu') return 0.5; + } + }, + noh:true, + skillTagFilter:function(player,tag){ + if(tag=='noh'){ + if(player.countCards('h')!=1) return false; + } + } + } + }, + xiaoji:{ + audio:2, + audioname:['sp_sunshangxiang','re_sunshangxiang'], + trigger:{player:'loseAfter'}, + frequent:true, + filter:function(event,player){ + return event.es&&event.es.length>0; + }, + content:function(){ + "step 0" + event.count=trigger.es.length; + "step 1" + event.count--; + player.draw(2); + "step 2" + if(event.count>0){ + player.chooseBool(get.prompt2('xiaoji')).set('frequentSkill','xiaoji').ai=lib.filter.all; + } + "step 3" + if(result.bool){ + player.logSkill('xiaoji'); + event.goto(1); + } + }, + ai:{ + noe:true, + reverseEquip:true, + effect:{ + target:function(card,player,target,current){ + if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; + } + } + } + }, + jieyin:{ + audio:2, + enable:'phaseUse', + filterCard:true, + usable:1, + selectCard:2, + check:function(card){ + var player=get.owner(card); + if(player.countCards('h')>player.hp) + return 8-get.value(card) + if(player.hp=target.maxHp) return false; + if(target==player) return false; + return true; + }, + content:function(){ + player.recover(); + target.recover(); + }, + ai:{ + order:5.5, + result:{ + player:function(player){ + if(player.hpplayer.hp) return 0 + return -1; + }, + target:4 + }, + threaten:2, + } + }, + xinjieyin:{ + group:['xinjieyin_old','xinjieyin_new'], + // alter:true, + subSkill:{ + new:{ + audio:'jieyin', + enable:'phaseUse', + filterCard:true, + usable:1, + position:'he', + filter:function(event,player){ + if(!get.is.altered('xinjieyin')) return false; + return player.countCards('he')>0; + }, + check:function(card){ + var player=_status.event.player; + if(get.position(card)=='e'){ + var subtype=get.subtype(card); + if(!game.hasPlayer(function(current){ + return current!=player&¤t.hp!=player.hp&&get.attitude(player,current)>0&&!current.countCards('e',{subtype:subtype}); + })){ + return 0; + } + if(player.countCards('h',{subtype:subtype})) return 20-get.value(card); + return 10-get.value(card); + } + else{ + if(player.countCards('e')) return 0; + if(player.countCards('h',{type:'equip'})) return 0; + return 8-get.value(card); + } + }, + filterTarget:function(card,player,target){ + if(target.sex!='male') return false; + var card=ui.selected.cards[0]; + if(!card) return false; + if(get.position(card)=='e'&&target.countCards('e',{subtype:get.subtype(card)})) return false; + return true; + }, + discard:false, + delay:0, + lose:false, + content:function(){ + 'step 0' + if(get.position(cards[0])=='e'){ + player.$give(cards,target); + target.equip(cards[0]); + } + else{ + player.discard(cards); + } + 'step 1' + if(player.hp>target.hp){ + player.draw(); + if(target.isDamaged()) target.recover(); + } + else if(player.hptarget.hp){ + if(target.isHealthy()){ + if(!player.needsToDiscard(1)||goon()) return 0.1; + return 0; + } + return 1; + } + return 0; + } + } + } + }, + old:{ + audio:'jieyin', + enable:'phaseUse', + filterCard:true, + usable:1, + selectCard:2, + filter:function(event,player){ + if(get.is.altered('xinjieyin')) return false; + return player.countCards('h')>=2; + }, + check:function(card){ + var player=get.owner(card); + if(player.countCards('h')>player.hp) + return 8-get.value(card) + if(player.hp=target.maxHp) return false; + if(target==player) return false; + return true; + }, + content:function(){ + player.recover(); + target.recover(); + }, + ai:{ + order:5.5, + result:{ + player:function(player){ + if(player.hpplayer.hp) return 0 + return -1; + }, + target:4 + } + } + } + }, + ai:{ + threaten:2.3 + } + }, + qingnang:{ + audio:2, + enable:'phaseUse', + filterCard:true, + usable:1, + check:function(card){ + return 9-get.value(card) + }, + filterTarget:function(card,player,target){ + if(target.hp>=target.maxHp) return false; + return true; + }, + content:function(){ + target.recover(); + }, + ai:{ + order:9, + result:{ + target:function(player,target){ + if(target.hp==1) return 5; + if(player==target&&player.countCards('h')>player.hp) return 5; + return 2; + } + }, + threaten:2 + } + }, + jijiu:{ + audio:2, + audioname:['re_huatuo'], + enable:'chooseToUse', + filter:function(event,player){ + return _status.currentPhase!=player; + }, + filterCard:function(card){ + return get.color(card)=='red'; + }, + position:'he', + viewAs:{name:'tao'}, + prompt:'将一张红色牌当桃使用', + check:function(card){return 15-get.value(card)}, + ai:{ + skillTagFilter:function(player){ + return player.countCards('he',{color:'red'})>0&&_status.currentPhase!=player; + }, + threaten:1.5, + save:true, + respondTao:true, + } + }, + wushuang:{ + shaRelated:true, + audio:2, + audioname:['re_lvbu','shen_lvbu'], + forced:true, + locked:true, + group:['wushuang1','wushuang2'] + }, + wushuang1:{ + audio:'wushuang', + audioname:['re_lvbu','shen_lvbu'], + trigger:{player:'useCardToPlayered'}, + forced:true, + filter:function(event,player){ + return event.card.name=='sha'&&!event.getParent().directHit.contains(event.target); + }, + //priority:-1, + logTarget:'target', + content:function(){ + var id=trigger.target.playerid; + var map=trigger.getParent().customArgs; + if(!map[id]) map[id]={}; + if(typeof map[id].shanRequired=='number'){ + map[id].shanRequired++; + } + else{ + map[id].shanRequired=2; + } + } + }, + wushuang2:{ + audio:'wushuang', + audioname:['re_lvbu','shen_lvbu'], + trigger:{player:'useCardToPlayered',target:'useCardToTargeted'}, + forced:true, + logTarget:function(trigger,player){ + return player==trigger.player?trigger.target:trigger.player + }, + filter:function(event,player){ + return event.card.name=='juedou'; + }, + //priority:-1, + content:function(){ + var id=(player==trigger.player?trigger.target:trigger.player)['playerid']; + var idt=trigger.target.playerid; + var map=trigger.getParent().customArgs; + if(!map[idt]) map[idt]={}; + if(!map[idt].shaReq) map[idt].shaReq={}; + if(!map[idt].shaReq[id]) map[idt].shaReq[id]=1; + map[idt].shaReq[id]++; + }, + ai:{ + result:{ + target:function(card,player,target){ + if(card.name=='juedou'&&target.countCards('h')>0) return [1,0,0,-1]; + } + } + } + }, + zhanshen:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + skillAnimation:true, + animationColor:'gray', + filter:function(event,player){ + return player.isDamaged()&&game.dead.filter(function(target){ + return target.isFriendOf(player); + }).length>0 + }, + content:function(){ + player.awakenSkill('zhanshen'); + var card=player.getEquip(1); + if(card) player.discard(card); + player.loseMaxHp(); + player.addSkill('mashu'); + player.addSkill('shenji'); + }, + derivation:['mashu','shenji'], + }, + shenji:{ + mod:{ + selectTarget:function(card,player,range){ + if(range[1]==-1) return; + if(card.name=='sha') range[1]+=2; + }, + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+1; + } + }, + }, + lijian:{ + audio:2, + audioname:['re_diaochan'], + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return game.countPlayer(function(current){ + return current!=player&¤t.sex=='male'; + })>1; + }, + check:function(card){return 10-get.value(card)}, + filterCard:true, + position:'he', + filterTarget:function(card,player,target){ + if(player==target) return false; + if(target.sex!='male') return false; + if(ui.selected.targets.length==1){ + return target.canUse({name:'juedou'},ui.selected.targets[0]); + } + return true; + }, + targetprompt:['先出杀','后出杀'], + selectTarget:2, + multitarget:true, + content:function(){ + targets[1].useCard({name:'juedou',isCard:true},'nowuxie',targets[0],'noai').animate=false; + game.delay(0.5); + }, + ai:{ + order:8, + result:{ + target:function(player,target){ + if(ui.selected.targets.length==0){ + return -3; + } + else{ + return get.effect(target,{name:'juedou'},ui.selected.targets[0],target); + } + } + }, + expose:0.4, + threaten:3, + } + }, + biyue:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + frequent:true, + content:function(){ + player.draw(); + }, + }, + xinbiyue:{ + audio:'biyue', + trigger:{player:'phaseJieshuBegin'}, + frequent:true, + // alter:true, + content:function(){ + var num=1; + if(get.is.altered('xinbiyue')&&!player.countCards('h')){ + num=2; + } + player.draw(num); + }, + }, + yaowu:{ + trigger:{player:'damageBegin3'}, + //priority:1, + audio:2, + filter:function(event){ + if(event.card&&(event.card.name=='sha')){ + if(get.color(event.card)=='red') return true; + } + return false; + }, + forced:true, + check:function(){ + return false; + }, + content:function(){ + trigger.source.chooseDrawRecover(true); + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(card.name=='sha'&&(get.color(card)=='red')){ + return [1,-2]; + } + } + } + } + }, + "new_jiangchi":{ + audio:"jiangchi", + trigger:{ + player:"phaseDrawEnd", + }, + 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('new_jiangchi')); + "step 1" + if(result.control=='弃牌'){ + player.chooseToDiscard(true,'he'); + player.addTempSkill('jiangchi2','phaseUseEnd'); + player.logSkill('new_jiangchi'); + } + else if(result.control=='摸牌'){ + player.draw(); + player.addTempSkill('new_jiangchi3','phaseEnd'); + player.logSkill('new_jiangchi'); + } + }, + }, + new_jiangchi3:{ + mod:{ + cardEnabled:function(card){ + if(card.name=='sha') return false; + }, + cardRespondable:function(card){ + if(card.name=='sha') return false; + }, + ignoredHandcard:function(card,player){ + if(get.name(card)=='sha'){ + return true; + } + }, + cardDiscardable:function(card,player,name){ + if(name=='phaseDiscard'&&get.name(card)=='sha'){ + return false; + } + }, + }, + }, + "xinfu_jijie":{ + enable:"phaseUse", + usable:1, + audio:2, + //filter:function(){ + //return ui.cardPile.hasChildNodes(); + //}, + content:function (){ + 'step 0' + //event.card=ui.cardPile.lastChild; + event.card=get.bottomCards()[0]; + var content=['牌堆底的一张牌',[event.card]]; + game.log(player,'观看了牌堆底的一张牌'); + player.chooseControl('ok').set('dialog',content); + 'step 1' + player.chooseTarget('选择获得此牌的角色').set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(_status.event.du){ + if(target.hasSkillTag('nodu')) return 0.5; + return -att; + } + if(att>0){ + if(_status.event.player!=target) att+=2; + return att+Math.max(0,5-target.countCards('h')); + } + return att; + }).set('du',event.card.name=='du').set('same',event.same); + 'step 2' + if(result.bool){ + event.target=result.targets[0]; + player.line(event.target,'green'); + player.give(event.card,event.target); + } + else ui.cardPile.appendChild(event.card); + game.updateRoundNumber(); + }, + ai:{ + order:7.2, + result:{ + player:1, + }, + }, + }, + "xinfu_jiyuan":{ + trigger:{ + global:"dying", + source:"gainAfter", + }, + //priority:6, + audio:2, + filter:function (event,player){ + if(event.name=='dying') return true; + return event.player!=player&&event.bySelf!=true; + }, + check:function (event,player){ + return get.attitude(player,event.player)>0; + }, + logTarget:"player", + content:function (){ + trigger.player.draw(); + }, + }, + }, + translate:{ + caocao:'曹操', + hujia:'护驾', + hujia_info:'主公技,当你需要使用或打出一张【闪】时,你可以令其他魏势力角色选择是否打出一张【闪】。若有角色响应,则你视为使用或打出了一张【闪】。', + jianxiong:'奸雄', + jianxiong_info:'当你受到伤害后,你可以获得对你造成伤害的牌。', + + simayi:'司马懿', + fankui:'反馈', + fankui_info:'当你受到伤害后,你可以获得伤害来源的一张牌。', + guicai:'鬼才', + guicai_info:'一名角色的判定牌生效前,你可以打出一张手牌代替之。', + guicai_info_guozhan:'一名角色的判定牌生效前,你可以打出一张牌代替之。', + + xiahoudun:'夏侯惇', + zhangliao:'张辽', + xuzhu:'许褚', + guojia:'郭嘉', + zhenji:'甄姬', + liubei:'刘备', + guanyu:'关羽', + zhangfei:'张飞', + zhugeliang:'诸葛亮', + zhaoyun:'赵云', + machao:'马超', + huangyueying:'黄月英', + sunquan:'孙权', + ganning:'甘宁', + lvmeng:'吕蒙', + huanggai:'黄盖', + zhouyu:'周瑜', + daqiao:'大乔', + luxun:'陆逊', + sunshangxiang:'孙尚香', + huatuo:'华佗', + lvbu:'吕布', + diaochan:'貂蝉', + huaxiong:'华雄', + "xf_yiji":"伊籍", + re_yuanshu:'袁术', + caozhang:'曹彰', + + ganglie:'刚烈', + tuxi:'突袭', + luoyi:'裸衣', + luoyi2:'裸衣', + tiandu:'天妒', + yiji:'遗计', + luoshen:'洛神', + xinluoshen:'洛神', + qingguo:'倾国', + rende:'仁德', + jijiang:'激将', + jijiang1:'激将', + jijiang2:'激将', + wusheng:'武圣', + paoxiao:'咆哮', + guanxing:'观星', + kongcheng:'空城', + kongcheng1:'空城', + longdan:'龙胆', + longdan1:'龙胆', + longdan2:'龙胆', + mashu:'马术', + mashu2:'马术', + feiying:'飞影', + tieji:'铁骑', + jizhi:'集智', + qicai:'奇才', + zhiheng:'制衡', + jiuyuan:'救援', + qixi:'奇袭', + keji:'克己', + kurou:'苦肉', + yingzi:'英姿', + fanjian:'反间', + guose:'国色', + liuli:'流离', + qianxun:'谦逊', + lianying:'连营', + xiaoji:'枭姬', + jieyin:'结姻', + xinjieyin:'结姻', + qingnang:'青囊', + jijiu:'急救', + wushuang:'无双', + wushuang1:'无双', + wushuang2:'无双', + lijian:'离间', + biyue:'闭月', + xinbiyue:'闭月', + pileTop:'牌堆顶', + pileBottom:'牌堆底', + ganglie_info:'当你受到伤害后,你可以进行判定。若结果不为红桃,则伤害来源须弃置两张手牌,否则受到来自你的一点伤害。', + tuxi_info:'摸牌阶段,你可以改为获得至多两名其他角色的各一张手牌。', + luoyi_info:'摸牌阶段,你可以少摸一张牌。若如此做,当你本回合内使用【杀】或【决斗】造成伤害时,此伤害+1。', + tiandu_info:'当你的判定牌生效后,你可以获得之。', + yiji_info:'当你受到一点伤害后,你可以观看牌堆顶的两张牌,然后将其分配给任意角色。', + luoshen_info:'准备阶段,你可以进行判定。若结果为黑色,你获得判定牌。你可重复此流程,直到出现红色的判定结果。', + luoshen_info_guozhan:'准备阶段,你可以进行一次判定。若结果为黑色,则可以继续判定,直到出现红色的判定牌。然后你获得所有黑色的判定牌。(判定结果为黑色的牌在此过程中不会进入弃牌堆)', + xinluoshen_info:'准备阶段,你可以进行一定判定,若为黑色则可以继续判定,直到出现红色。然后你获得所有黑色的判定牌', + xinluoshen_info_alter:'准备阶段,你可以进行一定判定,若为黑色则可以继续判定,直到出现红色。然后你获得所有黑色的判定牌。你通过洛神获得的牌,不计入当前回合的手牌上限', + qingguo_info:'你可以将一张黑色手牌当做【闪】使用或打出。', + rende_info:'出牌阶段,你可以将任意张手牌交给其他角色。当你以此法于一回合内给出第二张牌时,你回复1点体力。', + jijiang_info:'主公技,当你需要使用或打出【杀】时,你可以令其他蜀势力角色依次选择是否打出一张【杀】。若有角色响应,则你视为使用或打出了此【杀】。', + wusheng_info:'你可以将一张红色牌当做【杀】使用或打出。', + paoxiao_info:'锁定技,出牌阶段,你使用【杀】没有数量限制。', + guanxing_info:'准备阶段,你可以观看牌堆顶的X张牌,并将其以任意顺序置于牌堆项或牌堆底。(X为存活角色数且至多为5)', + xinguanxing:'观星', + xinguanxing_info:'准备阶段,你可以观看牌堆顶的x张牌,并将其以任意顺序置于牌堆项或牌堆底,x为存活角色个数且不超过5', + xinguanxing_info_alter:'准备阶段,你可以观看牌堆顶的5张牌(存活角色小于4时改为3张),并将其以任意顺序置于牌堆项或牌堆底,如果你把观星的牌都放在牌堆底,你可以在结束阶段再进行1次观星', + kongcheng_info:'锁定技,当你没有手牌时,你不能成为【杀】或【决斗】的目标。', + longdan_info:'你可以将【杀】当做【闪】,或将【闪】当做【杀】使用或打出。', + mashu_info:'锁定技,你计算与其他角色的距离时-1。', + mashu2_info:'锁定技,你计算与其他角色的距离时-1。', + feiying_info:'锁定技,其他角色计算与你的距离时+1。', + tieji_info:'当你使用【杀】指定目标后,你可以进行判定。若结果为红色,则此【杀】不可被闪避。', + jizhi_info:'当你使用非转化的普通锦囊牌时,你可以摸一张牌。', + xinjizhi:'集智', + xinjizhi_info:'当你使用非转化的普通锦囊牌时,你可以摸一张牌。', + xinjizhi_info_alter:'每当你使用一张非转化的锦囊牌,可以摸一张牌,如果摸到的是基本牌,你可以弃置这张牌,然后本回合手牌上限+1', + xinqicai:'奇才', + xinqicai_info:'锁定技,你使用锦囊牌无距离限制。', + xinqicai_info_alter:'锁定技,你使用的锦囊牌无距离限制,你装备区内的牌不能被弃置', + qicai_info:'锁定技,你使用锦囊牌无距离限制。', + zhiheng_info:'出牌阶段一次,你可以弃置任意张牌,然后摸等量的牌。', + xinzhiheng:'制衡', + xinzhiheng_info:'出牌阶段限1次,你可以弃置任意张牌并摸等量的牌', + xinzhiheng_info_alter:'出牌阶段限1次,你可以弃置任意张牌并摸等量的牌,如果在发动制衡时弃置了所有手牌,你额外摸一张牌', + jiuyuan_info:'主公技,锁定技,其他吴势力角色对你使用的【桃】的回复值+1。', + xinjiuyuan:'救援', + xinjiuyuan_info:'主公技,锁定技,濒死阶段,吴势力角色对你使用的[桃]额外回复一点体力', + xinjiuyuan_info_alter:'主公技,其他吴国角色对自己使用【桃】时,如果他的体力值大于你,他可以选择让你回复1点体力,然后他摸1张牌', + qixi_info:'你可以将一张黑色牌当做【过河拆桥】使用。', + keji_info:'弃牌阶段开始时,若你于本回合的出牌阶段内没有过使用或打出过【杀】,则你可以跳过此阶段。', + kurou_info:'出牌阶段,你可以失去一点体力,然后摸两张牌。', + yingzi_info:'摸牌阶段,你可以多摸一张牌。', + fanjian_info:'出牌阶段限一次,你可以令一名角色选择一种花色并展示你的一张手牌,若选择的花色与展示的不同,该角色受到来自你的一点伤害。然后该角色获得展示的牌。', + guose_info:'你可以将一张方片手牌当做【乐不思蜀】使用。', + liuli_info:'当你成为【杀】的目标时,你可以弃置一张牌并将此【杀】转移给攻击范围内的一名其他角色(不能是此【杀】的使用者)。', + qianxun_info:'锁定技,你不能成为【顺手牵羊】和【乐不思蜀】的目标。', + lianying_info:'当你失去最后的手牌时,你可以摸一张牌。', + xiaoji_info:'当你失去一张装备区内的牌后,你可以摸两张牌。', + jieyin_info:'出牌阶段限一次,你可以弃置两张手牌并选择一名已经受伤的男性角色。你与其各回复一点体力。', + xinjieyin_info:'出牌阶段,你可以弃置两张牌并选择1名已经受伤的男性角色,你与其各回复一点体力,每阶段限一次', + xinjieyin_old_info:'出牌阶段,你可以弃置两张牌并选择1名已经受伤的男性角色,你与其各回复一点体力。每阶段限一次。', + xinjieyin_new_info:'出牌阶段限1次,你可以选择一名男性角色,弃置一张手牌或将一张装备牌置于其装备区,你与其体力较高的角色摸一张牌,体力值较低的角色回复1点体力', + xinjieyin_info_alter:'出牌阶段限1次,你可以选择一名男性角色,弃置一张手牌或将一张装备牌置于其装备区,你与其体力较高的角色摸一张牌,体力值较低的角色回复1点体力', + qingnang_info:'出牌阶段限一次,你可以弃置一张手牌并令一名角色回复一点体力。', + jijiu_info:'你的回合外,你可以将一张红色牌当做【桃】使用。', + wushuang_info:'锁定技,当你使用【杀】或【决斗】指定目标后,你令此牌需要依次使用或打出两张【闪】或【杀】响应。', + lijian_info:'出牌阶段限一次,你可以弃置一张牌,视为一名男性角色对另一名男性角色使用一张【决斗】(不可被【无懈可击】响应)。', + biyue_info:'结束阶段,你可以摸一张牌。', + xinbiyue_info:'结束阶段,你可以摸一张牌', + xinbiyue_info_alter:'结束阶段,你可以摸一张牌,如果你没有手牌,改为摸2张牌', + yaowu:'耀武', + yaowu_info:'锁定技,一名角色使用红色【杀】对你造成伤害时,该角色回复1点体力或摸一张牌。', + "new_jiangchi":"将驰", + "new_jiangchi_info":"摸牌阶段结束时,你可以选择一项:1、摸一张牌,若如此做,你本回合内不能使用或打出【杀】且【杀】不计入手牌上限。 2、弃置一张牌,若如此做,出牌阶段你使用【杀】无距离限制且你可以额外使用一张【杀】,直到回合结束。", + "xinfu_jijie":"机捷", + "xinfu_jijie_info":"出牌阶段限一次。你可以观看牌堆底的一张牌,然后将其交给一名角色。", + "xinfu_jiyuan":"急援", + "xinfu_jiyuan_info":"当一名角色进入濒死状态时,或你交给一名其他角色牌时,你可以令其摸一张牌。", + ganglie_three:'刚烈', + ganglie_three_info:'当你受到伤害后,你可令一名敌方角色判定。若结果不为♥,其弃置两张牌或受到来自你的1点伤害。', + zhongyi:'忠义', + zhongyi2:'忠义', + zhongyi_info:'限定技,出牌阶段,你可以将一张牌置于武将牌上。你的武将牌上有〖忠义〗牌时,己方角色使用【杀】造成的伤害+1。下轮游戏开始时,你将〖忠义〗牌置入弃牌堆。', + zhanshen:'战神', + zhanshen_info:'觉醒技,准备阶段,若场上有已死亡的其他己方角色且你已受伤,则你弃置装备区的武器牌,减1点体力上限,获得技能〖马术〗和〖神戟〗', + shenji:'神戟', + shenji_info:'锁定技,你使用【杀】指定的目标数上限+2,次数上限+1', + + standard_2008:"2008版标准包", + standard_2013:"2013版标准包", + standard_2019:"2019版标准包", + }, + }; +}); diff --git a/game/asset.js b/game/asset.js index db93019ab..ba707062f 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.103', + 'v1.9.103.2', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -3235,6 +3235,7 @@ window.noname_asset_list=[ 'image/character/xin_xusheng.jpg', 'image/character/key_kaori.jpg', 'image/character/key_shiori.jpg', + 'image/character/ol_dongzhuo.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', diff --git a/game/game.js b/game/game.js index 67d0a2012..06d52ec82 100644 --- a/game/game.js +++ b/game/game.js @@ -16285,7 +16285,25 @@ game.playerMap[this.playerid]=this; return this; }, + emotion:function(pack,id){ + var str=''; + lib.element.player.say.call(this,str); + game.broadcast(function(id,str){ + if(lib.playerOL[id]){ + lib.playerOL[id].say(str); + } + else if(game.connectPlayers){ + for(var i=0;i=lib.configOL.number-1){ + if(num>=lib.configOL.number-1){ alert('至少要有两名玩家才能开始游戏!'); return; } @@ -44061,7 +44102,6 @@ for(var j=1;j<=lib.emotionList[this.pack];j++){ var emotionButton=ui.create.div('.card.fullskin','',function(){ var player=game.me; - var str=''; if(!player){ if(game.connectPlayers){ if(game.online){ @@ -44078,10 +44118,10 @@ } if(!player) return; if(game.online){ - game.send('chat',game.onlineID,str); + game.send('emotion',game.onlineID,this.pack,this.emotionID); } else{ - lib.element.player.chat.call(player,str); + lib.element.player.emotion.apply(player,[this.pack,this.emotionID]); } }); emotionButton.emotionID=j; @@ -50800,7 +50840,153 @@ } return eff; } - return get.effect.apply(this,arguments); + var result=get.result(card,eventskill); + var result1=result.player_use||result.player,result2=result.target_use||result.target; + if(typeof result1=='function') result1=result1(player,target,card,isLink); + if(typeof result2=='function') result2=result2(player,target,card,isLink); + + if(typeof result1!='number') result1=0; + if(typeof result2!='number') result2=0; + var temp1,temp2,temp3,temp01=0,temp02=0,threaten=1; + var skills1=player.getSkills().concat(lib.skill.global); + game.expandSkills(skills1); + var zerotarget=false,zeroplayer=false; + for(var i=0;i3) result2*=0.5; + if(target.hp==4) result2*=0.9; + if(target.hp==5) result2*=0.8; + if(target.hp>5) result2*=0.6; + } + else{ + result2+=temp02; + result1+=temp01; + } + if(zeroplayer) result1=0; + if(zerotarget) result2=0; + var final=0; + if(player2){ + final=(result1*get.attitude(player2,player)+(target?result2*get.attitude(player2,target):0)); + } + else final=(result1*get.attitude(player,player)+(target?result2*get.attitude(player,target):0)); + if(!isLink&&get.tag(card,'natureDamage')&&target.isLinked()&&!zerotarget){ + game.countPlayer(function(current){ + if(current!=target&¤t.isLinked()) final+=get.effect(current,card,player,player2,true); + }) + } + return final; }, effect:function(target,card,player,player2,isLink){ var event=_status.event; @@ -50865,10 +51051,22 @@ if(temp2&&temp2.threaten) temp3=temp2.threaten; else temp3=undefined; if(temp2&&typeof temp2.effect=='function'){ - temp2=temp2.effect(card,player,target,result2,isLink); + if(!player.hasSkillTag('ignoreSkill',true,{ + card:card, + target:target, + skill:skills2[i], + isLink:isLink, + })) temp2=temp2.effect(card,player,target,result2,isLink); + else temp2=undefined; } else if(temp2&&typeof temp2.effect=='object'&&typeof temp2.effect.target=='function'){ - temp2=temp2.effect.target(card,player,target,result2,isLink); + if(!player.hasSkillTag('ignoreSkill',true,{ + card:card, + target:target, + skill:skills2[i], + isLink:isLink, + })) temp2=temp2.effect.target(card,player,target,result2,isLink); + else temp2=undefined; } else temp2=undefined; if(typeof temp2=='object'){ diff --git a/game/update.js b/game/update.js index 4c600f213..12f973c06 100644 --- a/game/update.js +++ b/game/update.js @@ -1,11 +1,8 @@ window.noname_update={ - version:'1.9.103.1', - update:'1.9.103', + version:'1.9.103.2', + update:'1.9.103.1', changeLog:[ - 'SP仲村由理', - '美坂栞、美坂香里', - '新神关羽', - '武将分包调整', + '界董卓', 'bug修复', ], @@ -13,7 +10,7 @@ window.noname_update={ //'card/extra.js', //'card/huanlekapai.js', //'card/sp.js', - //'card/standard.js', + 'card/standard.js', //'card/swd.js', //'card/mtg.js', //'card/gujian.js', @@ -28,15 +25,15 @@ window.noname_update={ //'character/gujian.js', //'character/gwent.js', //'character/hearth.js', - //'character/mobile.js', + 'character/mobile.js', //'character/mtg.js', //'character/old.js', - //'character/refresh.js', + 'character/refresh.js', 'character/shenhua.js', - //'character/sp.js', - //'character/sp2.js', + 'character/sp.js', + 'character/sp2.js', //'character/tw.js', - //'character/standard.js', + 'character/standard.js', //'character/swd.js', //'character/xianjian.js', //'character/xinghuoliaoyuan.js', @@ -45,14 +42,14 @@ window.noname_update={ //'extension/boss/extension.js', //'layout/default/layout.css', //'layout/nova/layout.css', - //'mode/identity.js', + 'mode/identity.js', //'mode/doudizhu.js', //'mode/guozhan.js', //'mode/chess.js', //'mode/tafang.js', //'mode/single.js', - //'mode/stone.js', - //'mode/brawl.js', + 'mode/stone.js', + 'mode/brawl.js', //'mode/versus.js', //'mode/boss.js', 'game/game.js', diff --git a/image/character/ol_dongzhuo.jpg b/image/character/ol_dongzhuo.jpg new file mode 100644 index 000000000..f6e66d740 Binary files /dev/null and b/image/character/ol_dongzhuo.jpg differ diff --git a/mode/brawl.js b/mode/brawl.js index 98be46e7c..c4d4e0136 100644 --- a/mode/brawl.js +++ b/mode/brawl.js @@ -3240,6 +3240,25 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ }, }, }, + { + name:'Day Game', + place:[false,true,true,false], + character:['key_yuzuru','sp_key_kanade','key_ayato','key_hinata'], + lib:{ + character:{ + key_yuzuru:['male','key',4,['hinata_qiulve','kurou']], + sp_key_kanade:['female','key',3,['hinata_qiulve','benxi'],[]], + key_ayato:['male','key',3,['hinata_qiulve','retieji']], + key_hinata:['female','key',4,['hinata_qiulve','hinata_ehou']], + }, + translate:{ + key_yuzuru:'新秀球王', + sp_key_kanade:'学生会长', + key_ayato:'副会长', + key_hinata:'球队领袖', + }, + }, + }, ] game.liangjunduilei=list; game.chooseCharacterTwo=function(){ diff --git a/mode/identity.js b/mode/identity.js index 54c6d09ee..fcd1b4968 100644 --- a/mode/identity.js +++ b/mode/identity.js @@ -1079,7 +1079,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ list.remove('shen'); if(list.length) player.group=function(){ if(_status.mode!='zhong'&&game.zhu&&game.zhu.group){ - if(['re_zhangjiao','liubei','re_liubei','caocao','re_caocao','sunquan','re_sunquan','zhangjiao','sp_zhangjiao','caopi','re_caopi','liuchen','caorui','sunliang','sunxiu','sunce','re_sunben','ol_liushan','re_liushan','key_akane'].contains(game.zhu.name)) return game.zhu.group; + if(['re_zhangjiao','liubei','re_liubei','caocao','re_caocao','sunquan','re_sunquan','zhangjiao','sp_zhangjiao','caopi','re_caopi','liuchen','caorui','sunliang','sunxiu','sunce','re_sunben','ol_liushan','re_liushan','key_akane','dongzhuo','re_dongzhuo','ol_dongzhuo'].contains(game.zhu.name)) return game.zhu.group; if(game.zhu.name=='sunhao'&&player.identity=='zhong') return 'wu'; if(game.zhu.name=='yl_yuanshu'){ if(player.identity=='zhong') list.remove('qun');