'use strict'; character.standard={ connect:true, character:{ caocao:['male','wei',4,['hujia','jianxiong'],['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']], }, 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:'中国古代四大美女之一,有闭月羞花之貌。司徒王允之义女,由王允授意施行连环计,离间董卓、吕布,借布手除卓。后貂蝉成为吕布的妾。', }, perfectPair:{ xiahoudun:['xiahouyuan'], zhenji:['caopi'], caocao:['xuzhu','dianwei'], huangzhong:['weiyan'], zhugeliang:['huangyueying'], liubei:['guanyu','zhangfei','ganfuren'], zhaoyun:['liushan'], daqiao:['xiaoqiao'], zhouyu:['huanggai','xiaoqiao'], sunquan:['zhoutai'], lvbu:['diaochan'], machao:['madai','mayunlu'], zhangliao:['zangba'] }, skill:{ hujia:{ audio:2, unique:true, zhuSkill:true, trigger:{player:'chooseToRespondBegin'}, 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'})==false) return false; return game.hasPlayer(function(current){ return current!=player&¤t.group=='wei'; }); }, check:function(event,player){ if(ai.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)||( ai.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 (ai.get.attitude(event.player,event.source)-2); }); next.autochoose=lib.filter.autoRespondShan; next.set('source',player); } } "step 1" player.storage.hujiaing=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); } }, }, jianxiong:{ audio:2, trigger:{player:'damageEnd'}, filter:function(event,player){ return get.itemtype(event.cards)=='cards'&&get.position(event.cards[0])=='d'; }, content:function(){ player.gain(trigger.cards); player.$gain2(trigger.cards); }, ai:{ maixie:true, maixie_hp:true, effect:{ target:function(card,player){ if(player.hasSkillTag('jueqing')) return [1,-1]; if(get.tag(card,'damage')) return [1,0.5]; } } } }, fankui:{ audio:2, trigger:{player:'damageEnd'}, direct:true, filter:function(event,player){ return (event.source&&event.source.countCards('he')&&event.source!=player); }, content:function(){ player.gainPlayerCard(get.prompt('fankui',trigger.source),trigger.source,ai.get.buttonValue,'he').set('logSkill',['fankui',trigger.source]); }, ai:{ effect:{ target:function(card,player,target){ if(player.countCards('he')>1&&get.tag(card,'damage')){ if(player.hasSkillTag('jueqing')) return [1,-1.5]; if(ai.get.attitude(target,player)<0) return [1,1]; } } } } }, guicai:{ audio:2, trigger:{global:'judge'}, direct:true, filter:function(event,player){ return player.countCards('h')>0; }, content:function(){ "step 0" player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ get.translation(trigger.player.judging[0])+','+get.prompt('guicai')).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=ai.get.attitude(player,trigger.player); if(attitude==0||result==0) return 0; if(attitude>0){ return result-ai.get.value(card)/2; } else{ return -result-ai.get.value(card)/2; } }).set('judging',trigger.player.judging[0]); "step 1" if(result.bool){ player.respond(result.cards,'highlight'); } else{ event.finish(); } "step 2" if(result.bool){ player.logSkill('guicai'); 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])); } ui.discardPile.appendChild(trigger.player.judging[0]); trigger.player.judging[0]=result.cards[0]; if(!get.owner(result.cards[0],'judge')){ trigger.position.appendChild(result.cards[0]); } game.log(trigger.player,'的判定牌改为',result.cards[0]); game.delay(2); } }, ai:{ tag:{ rejudge:1, } } }, ganglie:{ audio:2, trigger:{player:'damageEnd'}, filter:function(event,player){ return (event.source!=undefined); }, check:function(event,player){ return (ai.get.attitude(player,event.source)<=0); }, 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 ai.get.unuseful(card)+2.5*(5-get.owner(card).hp); }); "step 2" if(result.bool==false){ trigger.source.damage(); } }, ai:{ result:{ target:function(card,player,target){ if(player.hasSkillTag('jueqing')) return [1,-1]; if(get.tag(card,'damage')&&ai.get.damageEffect(target,player,player)>0) return [1,0,0,-1.5]; } } } }, tuxi:{ audio:2, trigger:{player:'phaseDrawBefore'}, direct:true, content:function(){ "step 0" var check; var i,num=game.countPlayer(function(current){ return current!=player&¤t.countCards('h')&&ai.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=ai.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.finish(); trigger.untrigger(); } else{ event.finish(); } "step 2" game.delay(); }, ai:{ threaten:2, expose:0.3 } }, luoyi:{ audio:2, trigger:{player:'phaseDrawBegin'}, check:function(event,player){ if(player.countCards('h')<3) return false; if(!player.hasSha()) return false; return game.hasPlayer(function(current){ return ai.get.attitude(player,current)<0&&player.canUse('sha',current); }); }, content:function(){ player.addTempSkill('luoyi2','phaseEnd'); trigger.num--; } }, luoyi2:{ trigger:{source:'damageBegin'}, filter:function(event){ return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.notLink(); }, forced:true, content:function(){ trigger.num++; } }, tiandu:{ audio:2, trigger:{player:'judgeEnd'}, frequent:'check', check:function(event){ if(event.result.card.name=='du') return false; return true; }, filter:function(event,player){ if(get.owner(event.result.card)){ return false; } if(event.nogain&&event.nogain(event.result.card)){ return false; } return true; }, content:function(){ player.gain(trigger.result.card); player.$gain2(trigger.result.card); } }, yiji:{ audio:2, trigger:{player:'damageEnd'}, frequent:true, filter:function(event){ return (event.num>0) }, content:function(){ "step 0" player.draw(2*trigger.num); "step 1" event.cards=result; "step 2" 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=ai.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); player.$give(result.cards.length,result.targets[0]); for(var i=0;i=4) return [1,get.tag(card,'damage')*2]; if(target.hp==3) return [1,get.tag(card,'damage')*1.5]; if(target.hp==2) return [1,get.tag(card,'damage')*0.5]; } } } } }, luoshen:{ audio:2, trigger:{player:'phaseBegin'}, frequent:true, content:function(){ "step 0" if(event.cards==undefined) event.cards=[]; player.judge(function(card){ if(get.color(card)=='black') return 1.5; return -1.5; },ui.special); "step 1" if(result.judge>0){ 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); if(player.hp==player.maxHp||player.storage.rende<0||player.countCards('h')<=1){ if(ui.selected.cards.length){ return -1; } var players=game.filterPlayer(); for(var i=0;i=3&& ai.get.attitude(players[i],player)>=3){ return 11-ai.get.value(card); } } if(player.countCards('h')>player.hp) return 10-ai.get.value(card); if(player.countCards('h')>2) return 6-ai.get.value(card); return -1; } return 10-ai.get.value(card); }, content:function(){ target.gain(cards,player); if(typeof player.storage.rende!='number'){ player.storage.rende=0; } if(player.storage.rende>=0){ player.storage.rende+=cards.length; if(player.storage.rende>=2){ player.recover(); player.storage.rende=-1; } } }, ai:{ order:function(skill,player){ if(player.hp1){ return 10; } return 1; }, result:{ target:function(player,target){ if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ if(target.hasSkillTag('nodu')) return 0; return -10; } if(target.num('j','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.get('s').contains('haoshi')) return 0; } return Math.max(1,5-nh); } }, effect:{ target:function(card,player,target){ if(player==target&&get.type(card)=='equip'){ if(player.num('e',{subtype:get.subtype(card)})){ var players=game.filterPlayer(); for(var i=0;i0){ return 0; } } } } } }, threaten:0.8 } }, rende1:{ trigger:{player:'phaseUseBegin'}, forced:true, popup:false, silent:true, content:function(){ player.storage.rende=0; } }, jijiang:{ unique:true, group:['jijiang1','jijiang2'], zhuSkill:true, }, jijiang1:{ audio:2, audioname:['liushan'], trigger:{player:'chooseToRespondBegin'}, 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)==false) 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 (ai.get.attitude(event.player,event.source)-2); }); next.set('source',player); next.autochoose=lib.filter.autoRespondSha; } else{ event.current=event.current.next; event.redo(); } "step 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:2, audioname:['liushan'], enable:'chooseToUse', 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 ai.get.effect(event.target,card,event.source,event.player); }); next.set('source',player); next.set('target',target); next.autochoose=lib.filter.autoRespondSha; } else{ event.current=event.current.next; event.redo(); } "step 1" if(result.bool){ event.finish(); if(result.cards&&result.cards.length==1&&result.cards[0].name=='sha'){ player.useCard(result.cards[0],target).animate=false; } else{ player.useCard({name:'sha'},target).animate=false; } if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ event.current.ai.shown+=0.3; if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; } } else{ event.current=event.current.next; event.goto(0); } }, ai:{ result:{ target:function(player,target){ if(player.hasSkill('jijiang3')) return 0; return ai.get.effect(target,{name:'sha'},player,target); } }, order:function(){ return ai.get.order({name:'sha'})-0.1; }, } }, jijiang3:{ trigger:{global:['useCardAfter','useSkillAfter','phaseAfter']}, forced:true, popup:false, silent:true, filter:function(event){ return event.skill!='jijiang2'&&event.skill!='qinwang2'; }, content:function(){ player.removeSkill('jijiang3'); } }, wusheng:{ audio:3, 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-ai.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, } }, paoxiao:{ 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; } } }, guanxing:{ audio:2, audioname:['jiangwei'], trigger:{player:'phaseBegin'}, 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.node.judges.childNodes; var stopped=false; if(!player.countCards('h','wuxie')){ for(var i=0;i0) return false; if(event.player.group!='wu') return false; return true; }, content:function(){ player.recover(); } }, qixi:{ audio:4, 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-ai.get.value(card)} }, keji:{ audio:4, trigger:{player:'phaseDiscardBefore'}, filter:function(event,player){ return (get.cardCount({name:'sha'},player)==0); }, content:function(){ trigger.untrigger(); trigger.finish(); } }, kurou:{ audio:4, enable:'phaseUse', prompt:'失去一点体力并摸两张牌', content:function(){ "step 0" player.loseHp(1); "step 1" player.draw(2); }, ai:{ basic:{ order:1 }, result:{ player:function(player){ if(player.countCards('h')>=player.hp-1) return -1; if(player.hp<3) return -1; return 1; } } } }, yingzi:{ audio:2, trigger:{player:'phaseDrawBegin'}, frequent:true, 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); player.$give(event.card,target); 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=ai.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-ai.get.value(card)}, ai:{ threaten:1.5 } }, liuli:{ audio:2, trigger:{target:'shaBefore'}, direct:true, priority:5, filter:function(event,player){ if(player.countCards('he')==0) return false; return game.hasPlayer(function(current){ return get.distance(player,current,'attack')<=1&¤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.getTrigger(); if(get.distance(player,target,'attack')<=1&& target!=trigger.player&&target!=player){ if(player.canUse(trigger.card,target)) return true; } return false; }, ai1:function(card){ return ai.get.unuseful(card)+9; }, ai2:function(target){ if(_status.event.player.countCards('h','shan')){ return -ai.get.attitude(_status.event.player,target); } if(ai.get.attitude(_status.event.player,target)<5){ return 6-ai.get.attitude(_status.event.player,target); } if(_status.event.player.hp==1&&player.countCards('h','shan')==0){ return 10-ai.get.attitude(_status.event.player,target); } if(_status.event.player.hp==2&&player.countCards('h','shan')==0){ return 8-ai.get.attitude(_status.event.player,target); } return -1; }, prompt:get.prompt('liuli') }); "step 1" if(result.bool){ player.discard(result.cards); player.logSkill(event.name,result.targets); trigger.target=result.targets[0]; trigger.targets.remove(player); trigger.targets.push(result.targets[0]); } else{ event.finish(); } "step 2" trigger.untrigger(); trigger.trigger('useCardToBefore'); trigger.trigger('shaBefore'); game.delay(); }, ai:{ effect:{ target:function(card,player,target){ if(target.countCards('he')==0) return; if(card.name!='sha') return; var min=1; var friend=ai.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; } }, }, lianying:{ audio:2, trigger:{player:'loseEnd'}, frequent:true, filter:function(event,player){ if(player.countCards('h')) return false; for(var i=0;iplayer.hp) return 8-ai.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, } }, qingnang:{ audio:2, enable:'phaseUse', filterCard:true, usable:1, check:function(card){ return 9-ai.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, 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-ai.get.value(card)}, ai:{ skillTagFilter:function(player){ return player.countCards('he',{color:'red'})>0&&_status.currentPhase!=player; }, threaten:1.5, save:true, } }, wushuang:{ forced:true, group:['wushuang1','wushuang2'] }, wushuang1:{ audio:2, trigger:{player:'shaBegin'}, forced:true, filter:function(event,player){ return !event.directHit; }, content:function(){ "step 0" var next=trigger.target.chooseToRespond({name:'shan'}); next.autochoose=lib.filter.autoRespondShan; next.set('ai',function(card){ if(_status.event.player.countCards('h','shan')>1){ return ai.get.unuseful2(card); } return -1; }); "step 1" if(result.bool==false){ trigger.untrigger(); trigger.directHit=true; } } }, wushuang2:{ audio:2, trigger:{player:'juedou',target:'juedou'}, forced:true, filter:function(event,player){ return event.turn!=player; }, content:function(){ "step 0" var next=trigger.turn.chooseToRespond({name:'sha'}); next.autochoose=lib.filter.autoRespondSha; next.ai=function(card){ if(ai.get.attitude(trigger.turn,player)<0&&trigger.turn.countCards('h','sha')>1){ return ai.get.unuseful2(card); } return -1; }; "step 1" if(result.bool==false){ trigger.directHit=true; } }, ai:{ result:{ target:function(card,player,target){ if(card.name=='juedou'&&target.countCards('h')>0) return [1,0,0,-1]; } } } }, lijian:{ audio:2, 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-ai.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'},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 ai.get.effect(target,{name:'juedou'},ui.selected.targets[0],target); } } }, expose:0.4, threaten:3, } }, biyue:{ audio:2, trigger:{player:'phaseEnd'}, frequent:true, content:function(){ player.draw(); }, }, }, translate:{ 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:'貂蝉', hujia:'护驾', jianxiong:'奸雄', fankui:'反馈', guicai:'鬼才', ganglie:'刚烈', tuxi:'突袭', luoyi:'裸衣', luoyi2:'裸衣', tiandu:'天妒', yiji:'遗计', luoshen:'洛神', qingguo:'倾国', rende:'仁德', jijiang:'激将', jijiang1:'激将', jijiang2:'激将', wusheng:'武圣', paoxiao:'咆哮', guanxing:'观星', kongcheng:'空城', kongcheng1:'空城', longdan:'龙胆', longdan1:'龙胆', longdan2:'龙胆', mashu:'马术', feiying:'飞影', tieji:'铁骑', jizhi:'集智', qicai:'奇才', zhiheng:'制衡', jiuyuan:'救援', qixi:'奇袭', keji:'克己', kurou:'苦肉', yingzi:'英姿', fanjian:'反间', guose:'国色', liuli:'流离', qianxun:'谦逊', lianying:'连营', xiaoji:'枭姬', jieyin:'结姻', qingnang:'青囊', jijiu:'急救', wushuang:'无双', wushuang1:'无双', wushuang2:'无双', lijian:'离间', biyue:'闭月', pileTop:'牌堆顶', pileBottom:'牌堆底', hujia_info:'主公技,魏势力角色可以替你打出[闪]', jianxiong_info:'你可以立即获得对你造成伤害的牌', fankui_info:'当你受到伤害时,可以获得伤害来源的一张牌', guicai_info:'在任意角色的判定牌生效前,你可以打出一张手牌代替之', ganglie_info:'每当你受到一次伤害,可进行一次判定,若结果不为红桃,则伤害来源须弃置两张手牌或受到来自你的一点伤害', tuxi_info:'摸牌阶段,你可以改为从1~2名其他角色各抽取一张手牌', luoyi_info:'摸牌阶段,你可以少摸一张牌,若如此做,你本回合内[杀]或[决斗]造成的伤害+1', tiandu_info:'你可以立即获得你的判定牌', yiji_info:'每当你受到一点伤害,可以观看牌堆顶的两张牌,并将其交给任意1~2名角色', luoshen_info:'准备阶段,你可以进行一定判定,若为黑色则可以继续判定,直到出现红色。然后你获得所有黑色的判定牌', qingguo_info:'你可以将一张黑色手牌当[闪]使用或打出', rende_info:'出牌阶段,你可以将任意手牌送给其他角色,若送出的手牌不少于两张,你回复一点体力', jijiang_info:'主公技,蜀势力角色可以帮你使用或打出[杀]', wusheng_info:'你可以将一张红色牌当[杀]使用', paoxiao_info:'出牌阶段,你使用[杀]无数量限制', guanxing_info:'准备阶段,你可以观看牌堆顶的x张牌,并将其以任意顺序置于牌堆项或牌堆底,x为存活角色个数且不超过5', kongcheng_info:'锁定技,当你没有手牌时,不能成为[杀]或[决斗]的目标', longdan_info:'你可以将[杀]当[闪],或[闪]当[杀]使用或打出', mashu_info:'锁定技,你的进攻距离+1', feiying_info:'锁定技,你的防御距离+1', tieji_info:'当你使用一张[杀]时,可进行一次判定,若为红色则此[杀]不可闪避', jizhi_info:'每当你使用一张非转化的普通锦囊牌,可以摸一张牌', qicai_info:'锁定技,你使用的锦囊牌无距离限制', zhiheng_info:'出牌阶段,你可以弃置任意张牌并摸等量的牌,每阶段限1次', jiuyuan_info:'主公技,锁定技,濒死阶段,吴势力角色对你使用的[桃]额外回复一点体力', qixi_info:'你可以将一张黑色牌当[过河拆桥]使用', keji_info:'若你在出牌阶段没有使用[杀],则可跳过弃牌阶段', kurou_info:'出牌阶段,你可以流失一点体力并摸两张牌', yingzi_info:'摸牌阶段,你可以额外摸一张牌', fanjian_info:'出牌阶段,你可以令一名角色选择一种花色并展示你的一张手牌,若选择的花色与展示的不同,该角色受到来自你的一点伤害。结算结束后该角色获得展示的牌。每阶段限1次', guose_info:'你可以将一张方片花色的手牌当[乐不思蜀]使用', liuli_info:'当你成为[杀]的目标时,可以弃置一张牌将其转移给攻击范围内的一名其他角色,此角色不能是[杀]的使用者', qianxun_info:'锁定技,你不能成为[顺手牵羊]和[乐不思蜀]的目标', lianying_info:'每当你失去最后一张手牌,可摸一张牌', xiaoji_info:'每当你失去一张装备牌,可以摸两张牌', jieyin_info:'出牌阶段,你可以弃置两张牌并选择1名已经受伤的男性角色,你与其各回复一点体力,每阶段限一次', qingnang_info:'出牌阶段,你可以弃置一张手牌令一名角色回复一点体力,每阶段限一次', jijiu_info:'回合外,你可以将一张红色牌当[桃]使用', wushuang_info:'锁定技,你使用的[杀]或[决斗]需要两张[闪]或[杀]响应', lijian_info:'出牌阶段,你可以弃一张牌,视为一名男性角色对另一名男性角色使用一张[决斗],每阶段限一次', biyue_info:'结束阶段,你可以摸一张牌', }, }