From c82fa9f28900e674c9647390c668a2bc8d264ef2 Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Wed, 25 Mar 2020 20:27:23 +0800 Subject: [PATCH] Add files via upload --- card/extra.js | 3 + card/standard.js | 7 +- card/zhulu.js | 23 +- character/diy.js | 4 + character/extra.js | 3 +- character/gujian.js | 1 + character/hearth.js | 2 +- character/mobile.js | 2380 +++++++++++++++----- character/refresh.js | 551 ++++- character/shenhua.js | 391 +++- character/sp.js | 3027 ++++++++++++++++++++------ character/standard.js | 68 + character/xinghuoliaoyuan.js | 3932 ---------------------------------- character/yijiang.js | 5 +- game/asset.js | 13 +- game/game.js | 19 +- game/update.js | 23 +- mode/identity.js | 2 +- 18 files changed, 5272 insertions(+), 5182 deletions(-) diff --git a/card/extra.js b/card/extra.js index 75ca9551b..7064c3826 100644 --- a/card/extra.js +++ b/card/extra.js @@ -121,6 +121,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(shas.length>1&&(player.getCardUsable('sha')>1||player.countCards('h','zhuge'))){ return 0; } + shas.sort(function(a,b){ + return get.order(b)-get.order(a); + }) var card; if(shas.length){ for(var i=0;i1) return -1; + if(target.countCards('e',function(card){ + return get.value(card)<=0; + })||target.hasSkillTag('noe')) return 1; return 0; }, }, @@ -466,7 +470,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){ ai:{ order:9.5, equipValue:function(card,player){ - if(get.position(card)=='e') return player.sex=='male'?(4/(1+player.countCards('he'))):0; + if(get.position(card)=='e'){ + if(player.sex!='male') return 0; + var num=player.countCards('he',function(cardx){ + return cardx!=card; + }); + if(num==0) return 0; + return 4/num; + } return 1; }, basic:{ @@ -479,7 +490,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ var val=0; var card=target.getEquip(2); if(card) val=get.value(card); - return -1-val; + var num=target.countCards('he',function(cardx){ + return cardx!=card + }); + if(num>0) val+=4/num; + return -val; } return 0; }, @@ -567,7 +582,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ result:{ keepAI:true, target:function(player,target){ - return -1-target.countCards('h'); + return -0.5-2*target.countCards('h'); }, }, } diff --git a/character/diy.js b/character/diy.js index 1e3896e66..7d762cecb 100755 --- a/character/diy.js +++ b/character/diy.js @@ -1656,6 +1656,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var check=function(list){ for(var i=0;i1) 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:["zhuge_skill"], + }, }, characterFilter:{}, skill:{ @@ -786,83 +947,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){}, }, - 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:{ - maxHandcard:function(player,num){ - return num+player.getDamagedHp(); - }, - }, - }, - 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'); - }, - }, - }, - }, rexushen:{ derivation:['new_rewusheng','xindangxian'], audio:'xinfu_xushen', @@ -987,317 +1071,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ target.draw(); }, }, - 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] - 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{ - 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); - }, - }, - }, - }, relianji:{ audio:'wylianji', enable:'phaseUse', @@ -1451,109 +1224,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } } - }, - relieren:{ - 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:{ - init:function(player,skill){ - player.storage[skill]=0; - }, - audio:2, - direct:true, - filter:function(event,player){ - return player.storage.rezaiqi>0; - }, - trigger:{ - player:'phaseDiscardEnd' - }, - content:function(){ - 'step 0' - player.chooseTarget([1,player.storage.rezaiqi],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;i0; + }, + 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, + //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.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; + }, + 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()){ + 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='令一名其他角色交给你一张牌'; + if(player.storage.choulve){ + str+='若其如此做,视为你使用【'+get.translation(player.storage.choulve)+'】'; + } + var goon=true; + if(player.storage.choulve){ + goon=game.hasPlayer(function(current){ + return player.canUse(player.storage.choulve,current)&&get.effect(current,player.storage.choulve,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)+'一张牌?', + player.storage.choulve?('若如此做,视为'+get.translation(player)+ + '使用【'+get.translation(player.storage.choulve)+'】'):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(player.storage.choulve){ + player.chooseUseTarget(player.storage.choulve,true,false); + } + } + }, + group:'choulve_damage', + subSkill:{ + damage:{ + trigger:{player:'damageEnd'}, + silent:true, + content:function(){ + if(trigger.card&&get.info(trigger.card).enable&&get.type(trigger.card)!='delay'){ + player.storage.choulve={name:trigger.card.name}; + } + } + } + } + }, + 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); + } + } + }, }, translate:{ + 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":"你于出牌阶段内使用【杀】无次数限制。", + 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:'清俭', @@ -1867,20 +3230,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ old_bulianshi:'手杀步练师', old_caochun:'旧曹纯', shenpei:'审配', - re_zhurong:'界祝融', - re_menghuo:'界孟获', re_wangyun:'手杀王允', - 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为你已损失的体力值)', relianji:'连计', relianji_info:'出牌阶段限一次,你可以选择两名其他角色。第一名角色随机使用牌堆中的一张武器牌,然后这名角色视为对另一名角色随机使用一张下列的牌名的牌:【决斗】、【火攻】、【南蛮入侵】、【万箭齐发】或普【杀】。然后若此牌造成伤害,你获得X枚“连计”标记(X为此次扣减的体力值点数)。', remoucheng:'谋逞', @@ -1910,10 +3260,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shouye_info:'每回合限一次。当其他角色使用牌指定你为唯一目标时,你可以与其进行【对策】。若你赢,则此牌对你无效,且你于此牌结算完成后获得其对应的所有实体牌。', liezhi:'烈直', liezhi_info:'准备阶段,你可以依次弃置至多两名角色区域内的各一张牌。若你受到过伤害,则〖烈直〗于你的下个回合无效。', - relieren:'烈刃', - relieren_info:'当你使用【杀】指定目标后,你可以和目标角色进行拼点。若你赢,你获得其一张牌。若你没赢,你获得对方的拼点牌,其获得你的拼点牌。', - rezaiqi:'再起', - rezaiqi_info:'弃牌阶段结束时,你可以令至多X名角色选择一项:1.摸一张牌,2.令你回复1点体力(X为本回合进入弃牌堆的红色牌数)', xinzhanyi:'战意', xinzhanyi_info:'出牌阶段限一次,你可以弃置一张牌并失去1点体力,然后根据你弃置的牌获得以下效果直到回合结束:基本牌,你可以将一张基本牌当作杀、酒或桃使用,且你本回合第一次以此法使用的牌的回复值/伤害值+1;锦囊牌,摸三张牌且你使用的牌不能被【无懈可击】响应;装备牌,你使用【杀】指定目标角色后,其弃置两张牌,然后你获得其中的一张。', @@ -1921,16 +3267,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinzhanyi_basic:'战意', xinzhanyi_equip:'战意', - re_dengai:'界邓艾', - re_jiangwei:'界姜维', - re_caiwenji:'界蔡文姬', - re_baosanniang:'手杀鲍三娘', - retuntian:'屯田', - retiaoxin:'挑衅', - rebeige:'悲歌', - retuntian_info:'当你于回合外失去牌时,你可以进行一次判定。若判定结果为♥,你获得此判定牌。否则你将此牌置于你的武将牌上,称之为【田】。锁定技,你计算与其他角色的距离时-X(X为你武将牌上【田】的数目)', - retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。', - rebeige_info:'当有角色受到【杀】造成的伤害后,你可以弃一张牌,并令其进行一次判定,若判定结果为:♥该角色回复X点体力(X为伤害点数);♦︎该角色摸三张牌;♣伤害来源弃两张牌;♠伤害来源将其武将牌翻面', meiyong:'姝勇', meiyong_info:'当你使用或打出【杀】时,你可以获得一名其他角色的一张牌,然后其摸一张牌。', rexushen:'许身', @@ -1939,14 +3275,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rezhennan_info:'当你成为其他角色使用的牌的目标后,若此牌的目标数大于该角色的体力值,则你可以弃置一张牌并对其造成1点伤害。', hujinding:'胡金定', - re_liushan:'手杀刘禅', - re_sunben:'界孙笨', - re_zhangzhang:'界张昭张纮', - rehunzi:'魂姿', - rehunzi_info:'觉醒技,准备阶段,若你的体力值不大于2,你减1点体力上限,并获得技能〖英姿〗和〖英魂〗。', - zhijian_info:'出牌阶段,你可以将手牌中的一张装备牌置于一名其他角色装备区里(不得替换原装备),然后摸一张牌。当你使用装备牌时,你可以摸一张牌。', - refangquan:'放权', - refangquan_info:'你可跳过你的出牌阶段,若如此做,你本回合的手牌上限+X(X为你已损失的体力值),且回合结束时,你可以弃置一张手牌并令一名其他角色进行一个额外的回合。', huaizi:'怀子', huaizi_info:'锁定技,你的手牌上限+X(X为你已损失的体力值)', renshi:'仁释', diff --git a/character/refresh.js b/character/refresh.js index b88858e76..06f804a61 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -242,6 +242,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, repojun:{ + shaRelated:true, audio:2, trigger:{player:'useCardToPlayered'}, direct:true, @@ -892,6 +893,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //if(name=='phaseBegin'&&game.phaseNumber==1) return false; return player.storage.rehuashen&&player.storage.rehuashen.character.length>0; }, + banned:['lisu','sp_xiahoudun'], addHuashen:function(player){ if(!player.storage.rehuashen) return; if(!_status.characterlist){ @@ -912,7 +914,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 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||player.storage.rehuashen.character.contains(name)) continue; + 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&&!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:{ + maxHandcard:function(player,num){ + return num+player.getDamagedHp(); + }, + }, + }, + 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] + 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{ + 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;i0; + }); }, content:function (){ trigger.getParent().excluded.add(player); }, }, - - "drlt_qianjie":{ group:["drlt_qianjie_1","drlt_qianjie_2","drlt_qianjie_3"], locked:true, @@ -2171,6 +2172,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, jianchu:{ + shaRelated:true, audio:2, audioname:['re_pangde'], trigger:{player:'useCardToPlayered'}, @@ -2658,6 +2660,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, xinliegong:{ + shaRelated:true, mod:{ targetInRange:function(card,player,target){ if(card.name=='sha'&&card.number){ @@ -3276,6 +3279,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, jiang:{ + shaRelated:true, audio:2, audioname:['sp_lvmeng','re_sunben','re_sunce'], trigger:{ @@ -4136,6 +4140,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, lieren:{ + shaRelated:true, audio:2, audioname:['boss_lvbu3'], trigger:{source:'damageSource'}, @@ -5541,6 +5546,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhuSkill:true, }, mengjin:{ + shaRelated:true, audio:2, trigger:{player:'shaMiss'}, //priority:-1, @@ -5821,6 +5827,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, liegong:{ + shaRelated:true, audio:2, audioname:['re_huangzhong'], trigger:{player:'useCardToPlayered'}, @@ -6661,6 +6668,366 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, huangtian3:{}, + "xinfu_guhuo":{ + derivation:["chanyuan"], + group:["guhuo_guess","guhuo_respond","guhuo_wuxie"], + enable:"chooseToUse", + filter:function (event,player){ + if(player.hasSkill('guhuo_phase'))return false; + if(!player.countCards('h')) return false; + var list=['sha','shan','tao','jiu','taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman']; + if(get.mode()=='guozhan'){ + list=list.concat(['xietianzi','shuiyanqijunx','lulitongxin','lianjunshengyan','chiling','diaohulishan','yuanjiao','huoshaolianying']); + } + for(var i=0;i0) return '不质疑'; + return Math.random()<0.5?'不质疑':'质疑'; + }); + } + 'step 2' + if(!result.control) result.control='不质疑'; + event.guessers[0].chat(result.control); + game.delay(1); + if(result.control=='不质疑'){ + game.log(event.guessers[0],'#g不质疑'); + event.guessers.remove(event.guessers[0]); + event.goto(1); + }else{ + game.log(event.guessers[0],'#y质疑'); + } + 'step 3' + game.broadcastAll(function(onEnd){ + _status.guhuoNode.listenTransition(onEnd); + },event.onEnd01); + 'step 4' + game.delay(3.2); + 'step 5' + if(!event.guessers.length) event.finish(); + 'step 6' + if(trigger.card.name==trigger.cards[0].name){ + event.guessers[0].popup('质疑错误','fire'); + event.guessers[0].addSkill('chanyuan'); + game.log(event.guessers[0],'获得了技能','#g【缠怨】'); + } + else{ + event.guessers[0].popup('质疑正确','wood'); + game.log(player,'使用的',trigger.card,'作废了'); + game.cardsDiscard(trigger.cards); + game.broadcastAll(ui.clear); + trigger.cancel(); + if(trigger.name=='useCard'&&trigger.parent) trigger.parent.goto(0); + } + game.delay(); + }, + }, + chanyuan:{ + //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;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.guessers.remove(event.guessers[0]); + event.goto(2); + }else{ + game.log(event.guessers[0],'#y质疑'); + } + "step 4" + game.broadcastAll(function(onEnd){ + _status.guhuoNode.listenTransition(onEnd); + },event.onEnd01); + "step 5" + game.delay(3.2); + if(!event.guessers.length) event.goto(7); + "step 6" + if(event.name==event.card.name){ + event.guessers[0].popup('质疑错误','fire'); + event.guessers[0].addSkill('chanyuan'); + game.log(event.guessers[0],'获得了技能','#g【缠怨】'); + } + else{ + event.guessers[0].popup('质疑正确','wood'); + game.log(player,'打出的','#y'+get.translation(event.name),'作废了'); + game.cardsDiscard(event.card); + event.finish(); + } + "step 7" + trigger.untrigger(); + trigger.responded=true; + trigger.result={bool:true,card:{name:event.name},cards:[event.card],noanimate:true}; + }, + ai:{ + order:4, + useful:-1, + value:-1, + }, + }, + "guhuo_wuxie":{ + log:false, + silent:true, + popup:false, + enable:"chooseToUse", + filterCard:true, + viewAsFilter:function (player){ + if(player.hasSkill('guhuo_phase'))return false; + return player.countCards('h')>0; + }, + viewAs:{ + name:"wuxie", + }, + check:function(card){ + if(card.name=='wuxie') return 1000; + return 0; + }, + prompt:"将一张手牌当无懈可击使用", + threaten:1.2, + }, + "guhuo_phase":{}, }, //废除装备栏时显示的卡牌 card:{ @@ -6746,7 +7113,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "nzry_kuizhu":"溃诛", "nzry_kuizhu_info":"弃牌阶段结束后,你可以选择一项:令至多X名角色各摸一张牌,或对任意名体力值之和为X的角色造成一点伤害,若不少于2名角色,你须受到一点伤害。(X为你此阶段弃置的牌数)", "nzry_zhizheng":"掣政", - "nzry_zhizheng_info":"锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色数,你可以弃置其中一名角色一张牌", + "nzry_zhizheng_info":"锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色的数量,则你弃置其中一名角色的一张牌。", "nzry_lijun1":"立军", "nzry_lijun":"立军", "nzry_lijun_info":"主公技,其他吴势力角色的回合限一次,其使用的【杀】结算后,可以将此【杀】交给你,然后你可以令其摸一张牌", @@ -7075,6 +7442,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gzduanliang:'断粮', gzduanliang_info:'你可以将一张黑色基本牌或黑色装备牌当【兵粮寸断】使用;你可以对距离为2的角色使用【兵粮寸断】', + "xinfu_guhuo":"蛊惑", + "xinfu_guhuo_info":"每名角色的回合限一次,你可以扣置一张手牌当做一张基本牌或普通锦囊牌使用或打出。其他角色依次选择是否质疑。一旦有其他角色质疑则翻开此牌:若为假则此牌作废,若为真,则质疑角色获得技能〖缠怨〗。", + "guhuo_guess":"蛊惑", + "guhuo_guess_info":"", + chanyuan:"缠怨", + "chanyuan_info":"锁定技,你不能质疑于吉,当你的体力值为1时,你的其他技能失效。", + "guhuo_respond":"蛊惑", + "guhuo_respond_info":"", + "guhuo_wuxie":"蛊惑", + "guhuo_wuxie_info":"", + "guhuo_phase":"蛊惑", + "guhuo_phase_info":"", shenhua_feng:'神话再临·风', shenhua_huo:'神话再临·火', diff --git a/character/sp.js b/character/sp.js index 2f2368b1c..32bdcdc7e 100755 --- a/character/sp.js +++ b/character/sp.js @@ -334,6 +334,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ hanba:['swd_muyun'], dongbai:['dongzhuo'], cuimao:['caopi'], + simazhao:['wangyuanji'], }, card:{ pyzhuren_heart:{ @@ -400,16 +401,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, }, - ly_piliche:{ - fullskin:true, - vanish:true, - derivation:'liuye', - type:'equip', - subtype:'equip1', - distance:{attackFrom:-8}, - skills:['ly_piliche'], - destroy:'polu' - }, wy_meirenji:{ fullskin:true, vanish:true, @@ -508,157 +499,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, - "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; - }, - onLose:function (){ - player.recover(); - player.draw(2); - }, - 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:["zhuge_skill"], - }, }, skill:{ //桌游志贴纸 @@ -2355,7 +2195,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ skill='gongxin'; } for(var i=0;i0; - }); - } - 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)+'一张牌?', - player.storage.choulve?('若如此做,视为'+get.translation(player)+ - '使用【'+get.translation(player.storage.choulve)+'】'):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(player.storage.choulve){ - player.chooseUseTarget(player.storage.choulve,true,false); - } - } - }, - group:'choulve_damage', - subSkill:{ - damage:{ - trigger:{player:'damageEnd'}, - silent:true, - content:function(){ - if(trigger.card&&get.info(trigger.card).enable&&get.type(trigger.card)!='delay'){ - player.storage.choulve={name:trigger.card.name}; - } - } - } - } - }, - 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); - } - } - }, shuimeng:{ audio:true, trigger:{player:'phaseUseAfter'}, @@ -5633,213 +5369,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ threaten:1.3 } }, - 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(); - } - }, - }, xinfenyue:{ enable:'phaseUse', audio:'fenyue', @@ -7768,19 +7297,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ delete player.storage.zhaolie; } }, - 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; - } - } - }, dingpan:{ enable:'phaseUse', filter:function(event,player){ @@ -10343,110 +9859,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.num++; } }, - 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); - } - } - }, jieyuan:{ group:['jieyuan_more','jieyuan_less'], subSkill:{ @@ -10755,67 +10167,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, }, - 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 0; - } - } - } - }, - 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); - } - }, qirang:{ audio:2, trigger:{player:'equipEnd'}, @@ -11180,6 +10531,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, fengpo:{ + shaRelated:true, audio:2, trigger:{ player:'useCardToPlayered', @@ -12783,6 +12135,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, }, zniaoxiang:{ + shaRelated:true, audio:2, trigger:{player:'useCardToPlayered'}, forced:true, @@ -14700,8 +14053,2352 @@ game.import('character',function(lib,game,ui,get,ai,_status){ else trigger.player.discard(event.card); } }, + "xinfu_langxi":{ + audio:2, + trigger:{ + player:"phaseZhunbeiBegin", + }, + direct:true, + content:function (){ + "step 0" + player.chooseTarget(get.prompt('xinfu_langxi'),'对一名体力值不大于你的其他角色造成0-2点随机伤害',function(card,player,target){ + return target.hp<=player.hp&&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){ + player.logSkill('xinfu_langxi',result.targets); + var num=[1,2,0].randomGet(); + if(get.isLuckyStar()) num=2; + player.line(result.targets[0],'green'); + result.targets[0].damage(num); + } + }, + }, + "xinfu_yisuan":{ + usable:1, + audio:2, + trigger:{ + player:"useCardEnd", + }, + check:function (event,player){ + return get.value(event.cards)+player.maxHp*2-18>0; + }, + filter:function (event,player){ + return player.isPhaseUsing()&&get.type(event.card)=='trick'&&event.cards.filterInD().length>0; + }, + content:function (){ + player.loseMaxHp(); + player.gain(trigger.cards.filterInD(),'gain2','log'); + }, + }, + "xinfu_xingluan":{ + usable:1, + audio:2, + trigger:{ + player:"useCardAfter", + }, + filter:function (event,player){ + if(!player.isPhaseUsing()) return false; + if(get.type(event.card)==undefined) return false; + return (event.targets&&event.targets.length==1); + }, + content:function (){ + var card=get.cardPile2(function(card){ + return card.number==6; + }); + if(!card){ + player.chat('无牌可得了吗'); + game.log('但是牌堆里面已经没有点数为6的牌了!'); + event.finish(); + return; + } + player.gain(card,'gain2'); + }, + }, + "xinfu_lveming":{ + init:function (player){ + player.storage.xinfu_lveming=0; + }, + mark:true, + intro:{ + content:"已发动过#次", + }, + audio:2, + enable:"phaseUse", + usable:1, + filterTarget:function (card,player,target){ + return player!=target&&target.countCards('e')0; + }, + filterTarget:true, + selectTarget:1, + content:function (){ + "step 0" + player.awakenSkill('xinfu_tunjun'); + event.num=player.storage.xinfu_lveming; + event.toequip=[]; + "step 1" + var equip=get.cardPile(function(card){ + var bool1=true; + for(var i=0;i0) event.goto(1); + "step 3" + for (var i=0;itarget.getUseValue({name:'sha',cards:cards})?0:1); + } + else if(bool1){ + event.directindex=0; + } + else if(bool2){ + event.directindex=1; + } + else{ + ui.cardPile.insertBefore(card,ui.cardPile.firstChild); + event.finish(); + } + 'step 2' + var card=cards[0]; + if(result&&typeof event.directindex!='number'){ + event.directindex=result.index; + } + if(event.directindex==1){ + target.chooseUseTarget({name:'sha'},cards,true,false).viewAs=true; + } + else{ + target.chooseUseTarget(card,true,false,'nodistance'); + } + }, + ai:{ + order:7, + result:{ + target:1, + }, + }, + }, + "xinfu_bijing":{ + audio:2, + group:["xinfu_bijing_lose","xinfu_bijing_discard"], + subSkill:{ + lose:{ + trigger:{ + global:"phaseDiscardBegin", + }, + audio:'xinfu_bijing', + filter:function (event,player){ + if(!player.storage.xinfu_bijing) return false; + if(event.player==player) return false; + return player.getHistory('lose',function(evt){ + return evt.cards.contains(player.storage.xinfu_bijing); + }).length>0&&event.player.countCards('he')>0; + }, + forced:true, + logTarget:'player', + content:function (){ + trigger.player.chooseToDiscard(2,true,'he'); + }, + sub:true, + }, + discard:{ + trigger:{ + player:"phaseZhunbeiBegin", + }, + forced:true, + filter:function (event,player){ + if(!player.storage.xinfu_bijing)return false; + return player.getCards('h').contains(player.storage.xinfu_bijing); + }, + content:function (){ + player.discard(player.storage.xinfu_bijing); + delete player.storage.xinfu_bijing; + }, + sub:true, + }, + }, + trigger:{ + player:"phaseJieshuBegin", + }, + direct:true, + filter:function (player,event){ + return event.countCards('h')>0; + }, + content:function (){ + 'step 0' + player.chooseCard(get.prompt2('xinfu_bijing'),'h').set('ai',function(card){ + if(card.name=='shan') return 6; + return 6-get.value(card); + }); + 'step 1' + if(result.bool){ + player.logSkill('xinfu_bijing'); + player.showCards(result.cards); + player.storage.xinfu_bijing=result.cards[0]; + } + }, + }, + "xinfu_zhenxing":{ + audio:2, + trigger:{ + player:["damageEnd","phaseJieshuBegin"], + }, + direct:true, + content:function (){ + 'step 0' + player.chooseControl('一张','两张','三张','cancel2').set('prompt',get.prompt2('xinfu_zhenxing')).set('',function(){return 0}); + 'step 1' + if(result.control=='cancel2') event.finish(); + else{ + player.logSkill('xinfu_zhenxing'); + event.num={一张:1,两张:2,三张:3}[result.control]; + }; + 'step 2' + event.cards=get.cards(num); + player.chooseButton(['【镇行】:请选择要获得的牌',event.cards]).set('filterButton',function(button){ + for(var i=0;i=0;i--){ + if(result.bool&&result.links.contains(event.cards[i])){ + player.gain(event.cards[i],'gain2'); + } + else{ + event.cards[i].fix(); + ui.cardPile.insertBefore(event.cards[i],ui.cardPile.childNodes[0]); + } + } + game.updateRoundNumber(); + }, + }, + "xinfu_qianxin":{ + audio:2, + group:["xinfu_qianxin2"], + enable:"phaseUse", + usable:1, + onChooseToUse:function(event){ + if(!game.online){ + var num1=game.players.length-1; + var player=event.player; + var num2=ui.cardPile.childElementCount; + var num3=num2; + if(num1>num2) num3=0; + else if(!player.storage.xinfu_qianxin){} + else{ + for(var i=0;i0; + }, + filterTarget:function (card,player,target){ + return target!=player; + }, + filterCard:true, + selectCard:function (){ + var num1=game.players.length-1; + var num2=_status.event.qianxinNum; + return [1,Math.floor(num2/num1)]; + }, + discard:false, + check:function (){ + return -1; + }, + delay:false, + content:function (){ + 'step 0' + player.$throw(cards.length); + player.storage.xinfu_qianxin=cards.slice(0); + player.storage.xinfu_qianxin2=target; + var num1=game.players.length; + var num2=ui.cardPile.childElementCount; + for(var i=0;i=4){ + event._result={index:1}; + } + else{ + trigger.player.chooseControl().set('choiceList',[ + '令'+get.translation(player)+'将手牌摸至四张', + '令自己本回合的手牌上限-2' + ]).set('ai',function(){ + var player=_status.event.player; + var source=_status.event.getParent().player; + if(get.attitude(player,source)>0) return 0; + if(player.hp-player.countCards('h')>1) return 1; + return [0,1].randomGet(); + }) + } + 'step 1' + if(result.index==0){ + player.drawTo(4); + } + else{ + trigger.player.addTempSkill('xinfu_qianxin2_dis'); + } + }, + }, + "xinfu_fuhai":{ + subSkill:{ + next:{}, + previous:{}, + }, + audio:2, + group:["fuhai_clear"], + intro:{ + content:"已指定过#个目标", + }, + enable:"phaseUse", + filter:function (event,player){ + if(player.hasSkill('xinfu_fuhai_next')&&player.hasSkill('xinfu_fuhai_previous')) return false; + return player.countCards('h')>0; + }, + filterTarget:function (card,player,target){ + if(![player.next,player.previous].contains(target)||target.countCards('h')==0) return false; + if(player.hasSkill('xinfu_fuhai_next')) return target==player.previous; + if(player.hasSkill('xinfu_fuhai_previous')) return target==player.next; + return true; + }, + line:false, + content:function (){ + 'step 0' + event.side=target==player.next?'next':'previous'; + event.current=target; + if(!player.storage.xinfu_fuhai) player.storage.xinfu_fuhai=1; + player.addTempSkill('xinfu_fuhai_'+event.side,'phaseUseAfter'); + 'step 1' + if(player.countCards('h')==0||event.current.countCards('h')==0||event.current==player){ + event.finish(); + return; + } + var next=event.current[event.side]; + if(get.attitude(event.current,player)>0){ + if(get.attitude(next,target)<=0||next.countCards('h')==0||player.countCards('h')==1){ + event.stopm=true; + event.stopt=true + } + else{ + event.stopm=false; + event.stopt=false; + } + } + else{ + if(get.attitude(next,target)>=0){ + event.stopt=true; + event.stopm=false; + } + else{ + event.stopt=false; + event.stopm=false; + } + } + player.markSkill('xinfu_fuhai'); + player.line(event.current,'green'); + player.chooseCard('请选择要展示的牌',true).set('ai',function(card){ + if(_status.event.stop) return 14-get.number(card); + return get.number(card) + }).set('stop',event.stopm); + 'step 2' + event.mes=result.cards[0]; + player.showCards(event.mes); + 'step 3' + event.current.chooseCard('请选择要展示的牌',true).set('ai',function(card){ + if(_status.event.stop) return get.number(card); + return 14-get.number(card); + }).set('stop',event.stopt); + 'step 4' + event.tes=result.cards[0]; + event.current.showCards(event.tes); + 'step 5' + var num1=get.number(event.mes); + var num2=get.number(event.tes); + if(num10&&event.current.countCards('h')>0&&event.current!=player) event.goto(1); + } + }, + ai:{ + order:1, + result:{ + player:function(player,target){ + var hs=player.countCards('h'); + var side=target==player.next?'next':'previous'; + var current=player; + for(var i=0;i0) return 1; + } + return 0; + }, + }, + }, + }, + "fuhai_clear":{ + trigger:{ + player:"phaseAfter", + }, + forced:true, + silent:true, + popup:false, + filter:function (event,player){ + return player.storage.xinfu_fuhai!=undefined; + }, + content:function (){ + player.unmarkSkill('xinfu_fuhai'); + delete player.storage.xinfu_fuhai; + }, + }, + "xz_xunxun":{ + filter:function (event,player){ + var num=game.countPlayer(function(current){ + return current.isDamaged(); + }); + return num>=1&&!player.hasSkill('xunxun'); + }, + audio:2, + trigger:{ + player:"phaseDrawBegin1", + }, + //priority:10, + content:function (){ + "step 0" + event.cards=get.cards(4); + player.chooseCardButton(true,event.cards,2,'选择两张牌置于牌堆顶').set('ai',ai.get.buttonValue); + "step 1" + if(result.bool){ + var choice=[]; + for(var i=0;i=1){ + str='
  • 视为拥有技能“恂恂”'; + } + if(num>=2){ + str+=';使用装备牌时摸一张牌'; + } + if(num>=3){ + str+=';始终跳过弃牌阶段'; + } + return str; + }, + }, + trigger:{ + player:"useCard", + }, + forced:true, + filter:function (event,player){ + if(get.type(event.card)!='equip') return false; + var num=game.countPlayer(function(current){ + return current.isDamaged(); + }); + return num>=2; + }, + content:function (){ + player.draw(); + }, + }, + "xinfu_xingzhao2":{ + audio:true, + trigger:{ + player:"phaseDiscardBefore", + }, + forced:true, + filter:function (event,player){ + var num=game.countPlayer(function(current){ + return current.isDamaged(); + }); + return num>=3; + }, + content:function (){ + trigger.cancel(); + game.log(player,'跳过了弃牌阶段'); + }, + }, + "xinfu_dianhu":{ + audio:2, + trigger:{ + global:"gameDrawAfter", + }, + forced:true, + filter:function (){ + return game.players.length>1; + }, + content:function (){ + 'step 0' + player.chooseTarget('选择【点虎】的目标',lib.translate.xinfu_dianhu_info,true,function(card,player,target){ + return target!=player&&!target.hasSkill('xinfu_dianhu2'); + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(att<0) return -att+3; + return Math.random(); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + game.log(target,'成为了','【点虎】','的目标'); + target.storage.xinfu_dianhu2=player; + target.addSkill('xinfu_dianhu2'); + } + }, + }, + "xinfu_dianhu2":{ + mark:"character", + intro:{ + content:"当你受到来自$的伤害或回复体力后,$摸一张牌", + }, + nopop:true, + trigger:{ + player:["damageAfter","recoverAfter"], + }, + forced:true, + popup:false, + filter:function (event,player){ + if(player.storage.xinfu_dianhu2&&player.storage.xinfu_dianhu2.isIn()){ + if(event.name=='damage') return event.source==player.storage.xinfu_dianhu2; + return true; + }; + }, + content:function (){ + 'step 0' + var target=player.storage.xinfu_dianhu2; + target.logSkill('xinfu_dianhu'); + target.draw(); + }, + onremove:true, + }, + "xinfu_jianji":{ + audio:2, + enable:"phaseUse", + usable:1, + filterTarget:function (card,player,target){ + return target!=player; + }, + content:function (){ + 'step 0' + target.draw(); + 'step 1' + var card=result[0]; + if(card&&game.hasPlayer(function(current){ + return target.canUse(card,current); + })&&get.owner(card)==target){ + target.chooseToUse({ + prompt:'是否使用'+get.translation(card)+'?', + filterCard:function(cardx,player,target){ + return cardx==_status.event.cardx; + }, + cardx:card, + }); + } + }, + ai:{ + order:7.5, + result:{ + target:1, + }, + }, + }, + "xinfu_lianpian":{ + audio:2, + usable:3, + trigger:{ + player:"useCardToPlayered", + }, + frequent:true, + filter:function (event,player){ + if(!event.targets||!event.targets.length|| + event.getParent().triggeredTargets3.length>1||!event.isPhaseUsing()) return false; + var evt=player.getLastUsed(1); + if(!evt||!evt.targets||!evt.targets.length||!evt.isPhaseUsing()) return false; + for(var i=0;i0; + })){ + return num+10; + } + } + }, + }, + ai:{ + effect:{ + player:function(card,player,target){ + var evt=player.getLastUsed(); + if(evt&&evt.targets.contains(target)&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)&&player.isPhaseUsing()) return [1.5,0]; + } + }, + }, + }, + "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; + player.line('water',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; + 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"], + subSkill:{ + phase:{ + charlotte:true, + sub:true, + }, + off:{ + charlotte:true, + sub:true, + }, + }, + audio:3, + trigger:{ + player:"phaseZhunbeiBegin", + }, + forced:true, + direct:true, + filter:function (event,player){ + if(player.hasSkill('xinfu_jianjie_off')) return false; + return !game.hasPlayer(function(current){ + return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan'); + }); + }, + content:function (){ + "step 0" + player.addTempSkill('xinfu_jianjie_phase'); + player.addSkill('xinfu_jianjie_off'); + 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(!game.hasPlayer(function(current){ + return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan'); + })) return false; + return !player.hasSkill('xinfu_jianjie_phase'); + }, + 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", + 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('h',{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, + 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()) num=3; + player.line(result.targets[0],'fire'); + result.targets[0].damage(num); + } + }, + }, + "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'); + 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若点数相同,你对其造成2点伤害;
    若点数不同,则你随机获得其区域内的一张牌。", + "xinfu_tunjun":"屯军", + "xinfu_tunjun_info":"限定技,出牌阶段,你可以选择一名角色,令其随机使用牌堆中的X张装备牌。(X为你发动过“掠命”的次数)", + "xinfu_tanbei":"贪狈", + "xinfu_tanbei_info":"出牌阶段限一次,你可以令一名其他角色选择一项:
    1.令你随机获得其区域内的一张牌,本回合内你不能对其使用牌。
    2.令你此回合内对其使用牌没有次数与距离限制。", + "xinfu_sidao":"伺盗", + xinfu_sidaox:'伺盗', + "xinfu_sidao_info":"出牌阶段限一次,当你对一名其他角色连续使用两张牌后,你可以将一张手牌当做【顺手牵羊】对其使用。", + "tanbei_effect1":"贪狈", + "tanbei_effect1_info":"", + "tanbei_effect2":"贪狈", + "tanbei_effect2_info":"", + + "xinfu_tunan":"图南", + "xinfu_tunan_info":"出牌阶段限一次,你可以展示牌堆顶的一张牌并选择一名其他角色,然后该角色选择一项:使用此牌(无距离限制);或将此牌当普通【杀】使用。", + "xinfu_bijing":"闭境", + "xinfu_bijing_info":"结束阶段,你可以展示一张手牌并标记为“闭境”。若你于回合外失去“闭境”牌,则当前回合角色的弃牌阶段开始时,其需弃置两张牌。你的准备阶段,弃置手牌中的“闭境”牌。", + "xinfu_zhenxing":"镇行", + "xinfu_zhenxing_info":"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的至多三张牌,然后你获得其中与其余牌花色均不相同的一张牌。", + "xinfu_qianxin":"遣信", + "xinfu_qianxin_info":"出牌阶段限一次,若牌堆中没有“信”,你可以选择一名角色并将任意张手牌放置于牌堆中X倍数的位置(X为存活人数),称为“信”。该角色的弃牌阶段开始时,若其手牌区内有于本回合内获得过的“信”,其选择一项:令你将手牌摸至四张;本回合手牌上限-2。", + "qianxin_effect":"遣信", + "qianxin_effect_info":"", + "xinfu_qianxin2":"遣信", + "xinfu_qianxin2_info":"", + + "xinfu_fuhai":"浮海", + "xinfu_fuhai_info":"出牌阶段每个方向限一次,你可以展示一张手牌并选择上家或下家。该角色展示一张手牌,若你展示的牌点数大于等于其展示的牌点数,你弃置你展示的牌,然后继续对其上家或下家重复此流程;若你展示的牌点数小于该展示角色牌的点数,则该角色弃置其展示的牌,然后你与其各摸X张牌(X为你此回合内发动此技能选择的角色数),且你此阶段内不能再发动〖浮海〗。", + "fuhai_clear":"浮海", + "fuhai_clear_info":"", + + "xz_xunxun":"恂恂", + "xz_xunxun_info":"摸牌阶段,你可以观看牌堆顶的四张牌,然后将其中的两张牌置于牌堆顶,并将其余的牌以任意顺序置于牌堆底。", + "xinfu_xingzhao":"兴棹", + "xinfu_xingzhao_info":"锁定技,若场上的已受伤角色合计为:1个以上,你视为拥有技能〖恂恂〗;2个以上,当你使用装备牌时,摸一张牌;3个以上,弃牌阶段开始时,你跳过此阶段。", + "xinfu_xingzhao2":"兴棹", + "xinfu_xingzhao2_info":"", + "xinfu_dianhu":"点虎", + "xinfu_dianhu_info":"锁定技,游戏开始时,你选择一名其他角色。当其受到来自你的伤害后或回复体力后,你摸一张牌。", + "xinfu_dianhu2":"点虎", + "xinfu_dianhu2_info":"", + "xinfu_jianji":"谏计", + "xinfu_jianji_info":"出牌阶段限一次,你可以令一名其他角色摸一张牌。然后该角色可以使用此牌。", + "xinfu_lianpian":"联翩", + "xinfu_lianpian_info":"出牌阶段限三次。当你对一名角色连续使用牌时,你可以摸一张牌,然后可以将一张牌交给该角色。", + + "xinfu_lingren":"凌人", + "xinfu_lingren_info":"每回合限一次。当你于出牌阶段使用带有「伤害」这一标签的基本牌或普通锦囊牌指定目标后,你可以猜测其中的一个目标的手牌中是否有基本牌,锦囊牌或装备牌。若你猜中的项目数:≥1,此牌对该角色的伤害+1;≥2,你摸两张牌;≥3,你获得技能〖奸雄〗和〖行殇〗直到下回合开始。", + "lingren_adddamage":"凌人", + "lingren_adddamage_info":"", + "lingren_jianxiong":"奸雄", + "lingren_jianxiong_info":"当你受到伤害后,你可以获得对你造成伤害的牌并摸一张牌。", + "lingren_xingshang":"行殇", + "lingren_xingshang_info":"当有角色死亡后,你可以选择一项:1.回复一点体力。2.获得该角色的所有牌。", + "xinfu_fujian":"伏间", + "xinfu_fujian_info":"锁定技,结束阶段开始时,你观看一名随机的其他角色的随机X张手牌。(X为场上手牌最少的角色的手牌数)", + "xinfu_xionghuo":"凶镬", + "xinfu_xionghuo_info":"游戏开始时,你获得3个“暴戾”标记。出牌阶段,你可以交给一名其他角色一个“暴戾”标记,你对有“暴戾”标记的角色造成伤害时,此伤害+1。有“暴戾”的其他角色的出牌阶段开始时,其移去所有“暴戾”标记并随机执行一项:1.受到1点火焰伤害且本回合不能对你使用【杀】;2.失去1点体力且本回合手牌上限-1;3.你随机获得其一张手牌和一张装备区的牌。", + xionghuo:"凶镬", + "xionghuo_info":"", + "xionghuo_disable":"凶镬", + "xionghuo_disable_info":"", + "xionghuo_low":"凶镬", + "xionghuo_low_info":"", + "xinfu_shajue":"杀绝", + "xinfu_shajue_info":"锁定技,其他角色进入濒死状态时,若其体力值小于0,则你获得一个“暴戾”标记,并获得使其进入濒死状态的牌。", + "xinfu_jianjie":"荐杰", + "xinfu_jianjie_info":"你的第一个准备阶段,你令两名其他角色分别获得龙印与凤印;出牌阶段限一次(你的第一个回合除外),或当拥有龙印、凤印的角色死亡时,你可以转移龙印、凤印。", + "xinfu_jianjie1":"荐杰", + "xinfu_jianjie1_info":"", + "smh_huoji":"火计", + "smh_huoji_info":"", + "smh_lianhuan":"连环", + "smh_lianhuan_info":"", + "xinfu_jianjie2":"荐杰", + "xinfu_jianjie2_info":"", + "smh_lianhuan1":"连铸", + "smh_lianhuan1_info":"", + "smh_yeyan":"业炎", + "smh_yeyan_info":"", + "xinfu_yinshi":"隐士", + "xinfu_yinshi_info":"锁定技,若你没有龙印、凤印且装备区的防具栏为空,则当你受到的属性伤害火锦囊牌造成的伤害时,防止此伤害。", + "xinfu_chenghao":"称好", + "xinfu_chenghao_info":"当一名角色受到属性伤害后,若其存活且其武将牌横置且是伤害传导的起点,则你可以观看牌堆顶的X张牌并分配给任意角色。(X为横置的角色数量且包含该角色)", + "jianjie_faq":"关于龙凤印", + "jianjie_faq_info":"龙印效果:视为拥有〖火计〗。凤印效果:视为拥有〖连环〗。(均一回合限使用三次) 龙凤印齐全:视为拥有〖业炎〗,〖业炎〗发动后移除龙凤印。", + "xinfu_wuniang":"武娘", + "xinfu_wuniang_info":"当你使用或打出【杀】时,你可以获得一名其他角色的一张牌。若如此做,该角色和场上所有的“关索”各摸一张牌。", + "xinfu_xushen":"许身", + "xinfu_xushen_info":"限定技,当一名男性角色使用【桃】令你脱离濒死状态时,若场上没有“关索”,则其可以将自己的一张武将牌变更为“关索”。然后你回复一点体力,并获得技能〖镇南〗。", + "xinfu_zhennan":"镇南", + "xinfu_zhennan_info":"当你成为【南蛮入侵】的目标时,你可以对一名其他角色造成1-3点随机伤害。", + "xinfu_falu":"法箓", + "xinfu_falu_info":"锁定技,游戏开始时,你获得「紫薇」「后土」「玉清」「勾陈」标记各一个。当你的牌因弃置而进入弃牌堆后,根据这些牌的花色,你获得对应的标记:黑桃,你获得1枚「紫薇」;梅花,你获得1枚「后土」;红桃,你获得1枚「玉清」;方块,你获得1枚「勾陈」。(每种标记限拥有1个)", + "xinfu_dianhua":"点化", + "xinfu_dianhua_info":"准备阶段或结束阶段,你可以观看牌堆顶的X张牌(X为你的「紫薇」「后土」「玉清」「勾陈」标记数的总和)。若如此做,你将这些牌以任意顺序放回牌堆顶。", + "xinfu_zhenyi":"真仪", + "xinfu_zhenyi_info":"你可以在以下时机弃置相应的标记来发动以下效果:一名角色的判定牌生效前,你可以弃置一枚「紫薇」,然后将判定结果改为黑桃5或红桃5;当你处于濒死状态时,你可以弃置一枚「后土」,然后将你的一张手牌当【桃】使用;当你造成伤害时,你可以弃置一枚「玉清」,然后你进行一次判定。若结果为黑色,此伤害+1;当你受到属性伤害后,你可以弃置一张「勾陈」,然后你从牌堆中随机获得三种类型的牌各一张。", + "zhenyi_spade":"真仪", + "zhenyi_spade_info":"", + "zhenyi_club":"真仪", + "zhenyi_club_info":"", + "zhenyi_heart":"真仪", + "zhenyi_heart_info":"", + "xinfu_yanyu":"燕语", + "xinfu_yanyu_info":"一名角色的出牌阶段开始时,你可以弃置一张牌。若如此做,则该出牌阶段内,当有与你弃置的牌类别相同的其他牌进入弃牌堆时,你可令任意一名角色获得此牌。每阶段以此法获得的牌不能超过三张。", + "xinfu_yanyu2":"燕语", + "xinfu_yanyu2_info":"", + "xinfu_xiaode":"孝德", + "xinfu_xiaode_info":"其他角色死亡后,你可以声明该角色武将牌上的一个不为主公技或觉醒技的技能。若如此做,你获得此技能且不能再发动〖孝德〗直到你的回合结束。", zhangren:'张任', zoushi:'邹氏', zangba:'臧霸', @@ -15058,12 +16755,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yingyuan_info:'当你于回合内使用的牌结算完成后,你可以将其交给一名其他角色(相同牌名的牌每回合限一次)。', xinyingyuan:'应援', xinyingyuan_info:'当你于回合内使用一张牌后,你可以令一名其他角色从牌堆获得一张与该牌类型相同的牌(每种类型的牌每回合限一次)。', - ly_piliche:'霹雳车', - ly_piliche_info:'当你对其他角色造成伤害后,若造成伤害的牌不为延时锦囊牌,你可以弃置其装备区里的防具牌与+1坐骑牌;当你失去此装备时,销毁之。', - polu:'破橹', - polu_info:'锁定技,回合开始时,若你的装备区里没有【霹雳车】,你使用之;当你受到1点伤害后,若你的装备区里没有【霹雳车】,你摸一张牌。', - choulve:'筹略', - choulve_info:'出牌阶段开始时,你可以令一名其他角色交给你一张牌,若其如此做,视为你使用上一张对你过造成伤害且不为延时锦囊牌的牌。', qianya:'谦雅', qianya_info:'当你成为锦囊牌的目标后,你可以将任意张手牌交给一名其他角色。', shuimeng:'说盟', @@ -15096,16 +16787,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jingong2:'矜功', jingong_backup:'矜功', jingong_info:'出牌阶段限一次,你可以将一张装备牌或【杀】当做一张随机锦囊牌使用(三选一,其中一张为【美人计】或【笑里藏刀】),然后本回合的结束阶段,若你于本回合内未造成过伤害,你失去1点体力', - zhaohuo:'招祸', - zhaohuo_info:'锁定技,当其他角色进入濒死状态时,你将体力上限调整为1点。若你的体力上限因此减少,则你摸一张牌。(X为你以此法减少的体力上限)', - yixiang:'义襄', - yixiang_info:'每名角色的回合限一次,当你成为一名角色使用牌的目标后,若该角色的体力值大于你的体力值,你可以随机获得牌堆里的一张你没有的基本牌。', - yirang:'揖让', - yirang_info:'出牌阶段开始时,你可以将所有非基本牌交给一名体力上限大于你的其他角色,然后调整体力上限至与该角色相同并回复X点体力(X为你以此法交给其的牌的类别数)。', - kuangcai:'狂才', - kuangcai_info:'出牌阶段开始时,你可以令你此阶段内的主动出牌时间变为5秒。若如此做,你于此阶段内使用牌没距离和次数限制,且每当你于此阶段内使用牌时,你摸一张牌且主动出牌时间-1秒。若主动出牌时间减至0,则你结束出牌阶段。', - shejian:'舌剑', - shejian_info:'弃牌阶段结束时,若你于此阶段弃置的所有牌花色均不相同,则你可以弃置一名其他角色的一张牌。', fenyue:'奋钺', fenyue2:'奋钺', fenyue2_bg:'钺', @@ -15286,10 +16967,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ nuzhan_info:'锁定技,你使用的由一张锦囊牌转化的【杀】不计入出牌阶段的次数限制;锁定技,你使用的由一张装备牌转化的【杀】的伤害值基数+1', danji:'单骑', danji_info:'觉醒技,准备阶段开始时,若你的手牌数大于你的体力值且本局游戏的主公不为刘备,你减1点体力上限,然后获得〖马术〗和〖怒斩〗', - tunchu:'屯储', - tunchu_info:'摸牌阶段,若你没有「粮」,你可以多摸两张牌。若如此做,摸牌阶段结束时,你可以将任意张手牌置于你的武将上,称为「粮」,只要你的武将牌上有「粮」,你便不能使用【杀】', - shuliang:'输粮', - shuliang_info:'一名角色的结束阶段开始时,若其手牌数少于体力值,你可以移去一张「粮」,然后该角色摸两张牌', jieyuan:'竭缘', jieyuan_more:'竭缘', jieyuan_less:'竭缘', @@ -15298,8 +16975,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ fenxin_old:'焚心', fenxin_info:'锁定技,一名其他角色死亡后,若其身份为:忠臣,你本局内发动〖竭缘〗减少伤害时无视体力值限制;反贼,你本局内发动〖竭缘〗增加伤害时无视体力值限制;内奸,你本局内选择发动〖竭缘〗的牌时无颜色限制。', fenxin_old_info:'限定技,当你杀死一名非主公角色时,你可以与其交换未翻开的身份牌。(你的身份为主公时不能发动此技能)', - shixin:'释衅', - shixin_info:'锁定技,当你受到火属性伤害时,你防止此伤害。', qingyi:'轻逸', qingyi1:'轻逸', qingyi2:'轻逸', @@ -15310,8 +16985,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shulv_info:'出牌阶段限一次,若你的手牌数大于体力值,则你可以弃置一张牌并摸一张牌。', xisheng:'牺牲', xisheng_info:'每名其他角色的回合限一次,你可以将两张牌当做【桃】使用。', - dujin:'独进', - dujin_info:'摸牌阶段,你可以多摸X+1张牌。(X为你装备区里牌数的一半且向下取整)', yuhua:'羽化', yuhua_info:'锁定技,弃牌阶段内,你的非基本牌不计入手牌上限。', qirang:'祈禳', @@ -15423,16 +17096,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jilei2_bg:'肋', fulu:'符箓', fuji:'助祭', - fenyin:'奋音', yawang:'雅望', xunzhi:'殉志', - yingjian:'影箭', fanxiang:'返乡', fanxiang_info:'觉醒技,准备阶段开始时,若场上有已受伤且你发动过〖良助〗的选项二的角色,则你加1点体力上限并回复1点体力,失去技能〖良助〗并获得技能〖枭姬〗', - yingjian_info:'准备阶段开始时,你可以视为使用一张无距离限制的【杀】。', xunzhi_info:'准备阶段开始时,若你的上家和下家与你的体力值均不相等,你可以失去1点体力。若如此做,你本局内手牌上限+2。', yawang_info:'锁定技,摸牌阶段开始时,你改为摸X张牌,然后你于本回合的出牌阶段内至多使用X张牌(X为与你体力值相等的角色数)', - fenyin_info:'你的回合内,当你使用牌时,若此牌与你于此回合内使用的上一张牌的颜色不同,则你可以摸一张牌。', fuji_info:'当一名角色造成雷属性伤害时,你可以令其进行判定,若结果为黑色,此伤害+1;若结果为红色,该角色获得判定牌。', fulu_info:'当你声明使用普通【杀】时,你可以将此【杀】改为雷【杀】。', jilei_info:'当你受到有来源的伤害后,你可以声明一种牌的类别。若如此做,你令伤害来源不能使用、打出或弃置此类别的手牌,直到其下个回合开始。', diff --git a/character/standard.js b/character/standard.js index b4a91356f..f566b1777 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1482,6 +1482,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, tieji:{ audio:2, + shaRelated:true, trigger:{player:'useCardToPlayered'}, check:function(event,player){ return get.attitude(player,event.target)<=0; @@ -2277,6 +2278,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, wushuang:{ + shaRelated:true, audio:2, audioname:['re_lvbu','shen_lvbu'], forced:true, @@ -2464,6 +2466,68 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, }, + "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:'曹操', @@ -2624,6 +2688,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yaowu_info:'锁定技,当任意一名角色使用红色【杀】对你造成伤害时,该角色回复1点体力或摸一张牌。', "new_jiangchi":"将驰", "new_jiangchi_info":"摸牌阶段结束时,你可以选择一项:1、摸一张牌,若如此做,你本回合内不能使用或打出【杀】。 2、弃置一张牌,若如此做,出牌阶段你使用【杀】无距离限制且你可以额外使用一张【杀】,直到回合结束。", + "xinfu_jijie":"机捷", + "xinfu_jijie_info":"出牌阶段限一次。你可以观看牌堆底的一张牌,然后将其交给一名角色。", + "xinfu_jiyuan":"急援", + "xinfu_jiyuan_info":"当一名角色进入濒死状态时,或你交给一名其他角色牌时,你可以令其摸一张牌。", standard_2008:"2008版标准包", standard_2013:"2013版标准包", diff --git a/character/xinghuoliaoyuan.js b/character/xinghuoliaoyuan.js index 795ed2374..c39ee8470 100755 --- a/character/xinghuoliaoyuan.js +++ b/character/xinghuoliaoyuan.js @@ -40,2236 +40,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pangtong:['zhugejin'], taishici:['liuyao','kongrong'], //zhaotongzhaoguang:['zhaoyun','mayunlu'], - simazhao:['wangyuanji'], }, skill:{ - "xinfu_langxi":{ - audio:2, - trigger:{ - player:"phaseZhunbeiBegin", - }, - direct:true, - content:function (){ - "step 0" - player.chooseTarget(get.prompt('xinfu_langxi'),'对一名体力值不大于你的其他角色造成0-2点随机伤害',function(card,player,target){ - return target.hp<=player.hp&&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){ - player.logSkill('xinfu_langxi',result.targets); - var num=[1,2,0].randomGet(); - if(get.isLuckyStar()) num=2; - player.line(result.targets[0],'green'); - result.targets[0].damage(num); - } - }, - }, - "xinfu_yisuan":{ - usable:1, - audio:2, - trigger:{ - player:"useCardEnd", - }, - check:function (event,player){ - return get.value(event.card)-player.maxHp*2-18>0; - }, - filter:function (event,player){ - return player.isPhaseUsing()&&event.cards.filterInD().length>0; - }, - content:function (){ - player.loseMaxHp(); - player.gain(trigger.cards.filterInD(),'gain2','log'); - }, - }, - "xinfu_xingluan":{ - usable:1, - audio:2, - trigger:{ - player:"useCardAfter", - }, - filter:function (event,player){ - if(!player.isPhaseUsing()) return false; - if(get.type(event.card)==undefined) return false; - return (event.targets&&event.targets.length==1); - }, - content:function (){ - var card=get.cardPile2(function(card){ - return card.number==6; - }); - if(!card){ - player.chat('无牌可得了吗'); - game.log('但是牌堆里面已经没有点数为6的牌了!'); - event.finish(); - return; - } - player.gain(card,'gain2'); - }, - }, - "xinfu_lveming":{ - init:function (player){ - player.storage.xinfu_lveming=0; - }, - mark:true, - intro:{ - content:"已发动过#次", - }, - audio:2, - enable:"phaseUse", - usable:1, - filterTarget:function (card,player,target){ - return player!=target&&target.countCards('e')0; - }, - filterTarget:true, - selectTarget:1, - content:function (){ - "step 0" - player.awakenSkill('xinfu_tunjun'); - event.num=player.storage.xinfu_lveming; - event.toequip=[]; - "step 1" - var equip=get.cardPile(function(card){ - var bool1=true; - for(var i=0;i0) event.goto(1); - "step 3" - for (var i=0;itarget.getUseValue({name:'sha',cards:cards})?0:1); - } - else if(bool1){ - event.directindex=0; - } - else if(bool2){ - event.directindex=1; - } - else{ - ui.cardPile.insertBefore(card,ui.cardPile.firstChild); - event.finish(); - } - 'step 2' - var card=cards[0]; - if(result&&typeof event.directindex!='number'){ - event.directindex=result.index; - } - if(event.directindex==1){ - target.chooseUseTarget({name:'sha'},cards,true,false).viewAs=true; - } - else{ - target.chooseUseTarget(card,true,false,'nodistance'); - } - }, - ai:{ - order:7, - result:{ - target:1, - }, - }, - }, - "xinfu_bijing":{ - audio:2, - group:["xinfu_bijing_lose","xinfu_bijing_discard"], - subSkill:{ - lose:{ - trigger:{ - global:"phaseDiscardBegin", - }, - audio:'xinfu_bijing', - filter:function (event,player){ - if(!player.storage.xinfu_bijing) return false; - if(event.player==player) return false; - return player.getHistory('lose',function(evt){ - return evt.cards.contains(player.storage.xinfu_bijing); - }).length>0&&event.player.countCards('he')>0; - }, - forced:true, - logTarget:'player', - content:function (){ - trigger.player.chooseToDiscard(2,true,'he'); - }, - sub:true, - }, - discard:{ - trigger:{ - player:"phaseZhunbeiBegin", - }, - forced:true, - filter:function (event,player){ - if(!player.storage.xinfu_bijing)return false; - return player.getCards('h').contains(player.storage.xinfu_bijing); - }, - content:function (){ - player.discard(player.storage.xinfu_bijing); - delete player.storage.xinfu_bijing; - }, - sub:true, - }, - }, - trigger:{ - player:"phaseJieshuBegin", - }, - direct:true, - filter:function (player,event){ - return event.countCards('h')>0; - }, - content:function (){ - 'step 0' - player.chooseCard(get.prompt2('xinfu_bijing'),'h').set('ai',function(card){ - if(card.name=='shan') return 6; - return 6-get.value(card); - }); - 'step 1' - if(result.bool){ - player.logSkill('xinfu_bijing'); - player.showCards(result.cards); - player.storage.xinfu_bijing=result.cards[0]; - } - }, - }, - "xinfu_zhenxing":{ - audio:2, - trigger:{ - player:["damageEnd","phaseJieshuBegin"], - }, - direct:true, - content:function (){ - 'step 0' - player.chooseControl('一张','两张','三张','cancel2').set('prompt',get.prompt2('xinfu_zhenxing')).set('',function(){return 0}); - 'step 1' - if(result.control=='cancel2') event.finish(); - else{ - player.logSkill('xinfu_zhenxing'); - event.num={一张:1,两张:2,三张:3}[result.control]; - }; - 'step 2' - event.cards=get.cards(num); - player.chooseButton(['【镇行】:请选择要获得的牌',event.cards]).set('filterButton',function(button){ - for(var i=0;i=0;i--){ - if(result.bool&&result.links.contains(event.cards[i])){ - player.gain(event.cards[i],'gain2'); - } - else{ - event.cards[i].fix(); - ui.cardPile.insertBefore(event.cards[i],ui.cardPile.childNodes[0]); - } - } - game.updateRoundNumber(); - }, - }, - "xinfu_qianxin":{ - audio:2, - group:["xinfu_qianxin2"], - enable:"phaseUse", - usable:1, - onChooseToUse:function(event){ - if(!game.online){ - var num1=game.players.length-1; - var player=event.player; - var num2=ui.cardPile.childElementCount; - var num3=num2; - if(num1>num2) num3=0; - else if(!player.storage.xinfu_qianxin){} - else{ - for(var i=0;i0; - }, - filterTarget:function (card,player,target){ - return target!=player; - }, - filterCard:true, - selectCard:function (){ - var num1=game.players.length-1; - var num2=_status.event.qianxinNum; - return [1,Math.floor(num2/num1)]; - }, - discard:false, - check:function (){ - return -1; - }, - delay:false, - content:function (){ - 'step 0' - player.$throw(cards.length); - player.storage.xinfu_qianxin=cards.slice(0); - player.storage.xinfu_qianxin2=target; - var num1=game.players.length; - var num2=ui.cardPile.childElementCount; - for(var i=0;i=4){ - event._result={index:1}; - } - else{ - trigger.player.chooseControl().set('choiceList',[ - '令'+get.translation(player)+'将手牌摸至四张', - '令自己本回合的手牌上限-2' - ]).set('ai',function(){ - var player=_status.event.player; - var source=_status.event.getParent().player; - if(get.attitude(player,source)>0) return 0; - if(player.hp-player.countCards('h')>1) return 1; - return [0,1].randomGet(); - }) - } - 'step 1' - if(result.index==0){ - player.drawTo(4); - } - else{ - trigger.player.addTempSkill('xinfu_qianxin2_dis'); - } - }, - }, - "xinfu_fuhai":{ - subSkill:{ - next:{}, - previous:{}, - }, - audio:2, - group:["fuhai_clear"], - intro:{ - content:"已指定过#个目标", - }, - enable:"phaseUse", - filter:function (event,player){ - if(player.hasSkill('xinfu_fuhai_next')&&player.hasSkill('xinfu_fuhai_previous')) return false; - return player.countCards('h')>0; - }, - filterTarget:function (card,player,target){ - if(![player.next,player.previous].contains(target)||target.countCards('h')==0) return false; - if(player.hasSkill('xinfu_fuhai_next')) return target==player.previous; - if(player.hasSkill('xinfu_fuhai_previous')) return target==player.next; - return true; - }, - line:false, - content:function (){ - 'step 0' - event.side=target==player.next?'next':'previous'; - event.current=target; - if(!player.storage.xinfu_fuhai) player.storage.xinfu_fuhai=1; - player.addTempSkill('xinfu_fuhai_'+event.side,'phaseUseAfter'); - 'step 1' - if(player.countCards('h')==0||event.current.countCards('h')==0||event.current==player){ - event.finish(); - return; - } - var next=event.current[event.side]; - if(get.attitude(event.current,player)>0){ - if(get.attitude(next,target)<=0||next.countCards('h')==0||player.countCards('h')==1){ - event.stopm=true; - event.stopt=true - } - else{ - event.stopm=false; - event.stopt=false; - } - } - else{ - if(get.attitude(next,target)>=0){ - event.stopt=true; - event.stopm=false; - } - else{ - event.stopt=false; - event.stopm=false; - } - } - player.markSkill('xinfu_fuhai'); - player.line(event.current,'green'); - player.chooseCard('请选择要展示的牌',true).set('ai',function(card){ - if(_status.event.stop) return 14-get.number(card); - return get.number(card) - }).set('stop',event.stopm); - 'step 2' - event.mes=result.cards[0]; - player.showCards(event.mes); - 'step 3' - event.current.chooseCard('请选择要展示的牌',true).set('ai',function(card){ - if(_status.event.stop) return get.number(card); - return 14-get.number(card); - }).set('stop',event.stopt); - 'step 4' - event.tes=result.cards[0]; - event.current.showCards(event.tes); - 'step 5' - var num1=get.number(event.mes); - var num2=get.number(event.tes); - if(num10&&event.current.countCards('h')>0&&event.current!=player) event.goto(1); - } - }, - ai:{ - order:1, - result:{ - player:function(player,target){ - var hs=player.countCards('h'); - var side=target==player.next?'next':'previous'; - var current=player; - for(var i=0;i0) return 1; - } - return 0; - }, - }, - }, - }, - "fuhai_clear":{ - trigger:{ - player:"phaseAfter", - }, - forced:true, - silent:true, - popup:false, - filter:function (event,player){ - return player.storage.xinfu_fuhai!=undefined; - }, - content:function (){ - player.unmarkSkill('xinfu_fuhai'); - delete player.storage.xinfu_fuhai; - }, - }, - "xz_xunxun":{ - filter:function (event,player){ - var num=game.countPlayer(function(current){ - return current.isDamaged(); - }); - return num>=1&&!player.hasSkill('xunxun'); - }, - audio:2, - trigger:{ - player:"phaseDrawBegin1", - }, - //priority:10, - content:function (){ - "step 0" - event.cards=get.cards(4); - player.chooseCardButton(true,event.cards,2,'选择两张牌置于牌堆顶').set('ai',ai.get.buttonValue); - "step 1" - if(result.bool){ - var choice=[]; - for(var i=0;i=1){ - str='
  • 视为拥有技能“恂恂”'; - } - if(num>=2){ - str+=';使用装备牌时摸一张牌'; - } - if(num>=3){ - str+=';始终跳过弃牌阶段'; - } - return str; - }, - }, - trigger:{ - player:"useCard", - }, - forced:true, - filter:function (event,player){ - if(get.type(event.card)!='equip') return false; - var num=game.countPlayer(function(current){ - return current.isDamaged(); - }); - return num>=2; - }, - content:function (){ - player.draw(); - }, - }, - "xinfu_xingzhao2":{ - audio:true, - trigger:{ - player:"phaseDiscardBefore", - }, - forced:true, - filter:function (event,player){ - var num=game.countPlayer(function(current){ - return current.isDamaged(); - }); - return num>=3; - }, - content:function (){ - trigger.cancel(); - game.log(player,'跳过了弃牌阶段'); - }, - }, - "xinfu_dianhu":{ - audio:2, - trigger:{ - global:"gameDrawAfter", - }, - forced:true, - filter:function (){ - return game.players.length>1; - }, - content:function (){ - 'step 0' - player.chooseTarget('选择【点虎】的目标',lib.translate.xinfu_dianhu_info,true,function(card,player,target){ - return target!=player&&!target.hasSkill('xinfu_dianhu2'); - }).set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(att<0) return -att+3; - return Math.random(); - }); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - player.line(target,'green'); - game.log(target,'成为了','【点虎】','的目标'); - target.storage.xinfu_dianhu2=player; - target.addSkill('xinfu_dianhu2'); - } - }, - }, - "xinfu_dianhu2":{ - mark:"character", - intro:{ - content:"当你受到来自$的伤害或回复体力后,$摸一张牌", - }, - nopop:true, - trigger:{ - player:["damageAfter","recoverAfter"], - }, - forced:true, - popup:false, - filter:function (event,player){ - if(player.storage.xinfu_dianhu2&&player.storage.xinfu_dianhu2.isIn()){ - if(event.name=='damage') return event.source==player.storage.xinfu_dianhu2; - return true; - }; - }, - content:function (){ - 'step 0' - var target=player.storage.xinfu_dianhu2; - target.logSkill('xinfu_dianhu'); - target.draw(); - }, - onremove:true, - }, - "xinfu_jianji":{ - audio:2, - enable:"phaseUse", - usable:1, - filterTarget:function (card,player,target){ - return target!=player; - }, - content:function (){ - 'step 0' - target.draw(); - 'step 1' - var card=result[0]; - if(card&&game.hasPlayer(function(current){ - return target.canUse(card,current); - })&&get.owner(card)==target){ - target.chooseToUse({ - prompt:'是否使用'+get.translation(card)+'?', - filterCard:function(cardx,player,target){ - return cardx==_status.event.cardx; - }, - cardx:card, - }); - } - }, - ai:{ - order:7.5, - result:{ - target:1, - }, - }, - }, - "xinfu_lianpian":{ - audio:2, - usable:3, - trigger:{ - player:"useCardToPlayered", - }, - frequent:true, - filter:function (event,player){ - if(!event.targets||!event.targets.length|| - event.getParent().triggeredTargets3.length>1||!event.isPhaseUsing()) return false; - var evt=player.getLastUsed(1); - if(!evt||!evt.targets||!evt.targets.length||!evt.isPhaseUsing()) return false; - for(var i=0;i0; - })){ - return num+10; - } - } - }, - }, - ai:{ - effect:{ - player:function(card,player,target){ - var evt=player.getLastUsed(); - if(evt&&evt.targets.contains(target)&&(!player.storage.counttrigger||!player.storage.counttrigger.xinfu_lianpian||!player.storage.counttrigger.xinfu_lianpian<3)&&player.isPhaseUsing()) return [1.5,0]; - } - }, - }, - }, - "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; - player.line('water',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; - 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"], - subSkill:{ - phase:{ - charlotte:true, - sub:true, - }, - off:{ - charlotte:true, - sub:true, - }, - }, - audio:3, - trigger:{ - player:"phaseZhunbeiBegin", - }, - forced:true, - direct:true, - filter:function (event,player){ - if(player.hasSkill('xinfu_jianjie_off')) return false; - return !game.hasPlayer(function(current){ - return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan'); - }); - }, - content:function (){ - "step 0" - player.addTempSkill('xinfu_jianjie_phase'); - player.addSkill('xinfu_jianjie_off'); - 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(!game.hasPlayer(function(current){ - return current.hasSkill('smh_huoji')||current.hasSkill('smh_lianhuan'); - })) return false; - return !player.hasSkill('xinfu_jianjie_phase'); - }, - 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", - 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('h',{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, - 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()) num=3; - player.line(result.targets[0],'fire'); - result.targets[0].damage(num); - } - }, - }, - "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'); - 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;i0) return '不质疑'; - return Math.random()<0.5?'不质疑':'质疑'; - }); - } - 'step 2' - if(!result.control) result.control='不质疑'; - event.guessers[0].chat(result.control); - game.delay(1); - if(result.control=='不质疑'){ - game.log(event.guessers[0],'#g不质疑'); - event.guessers.remove(event.guessers[0]); - event.goto(1); - }else{ - game.log(event.guessers[0],'#y质疑'); - } - 'step 3' - game.broadcastAll(function(onEnd){ - _status.guhuoNode.listenTransition(onEnd); - },event.onEnd01); - 'step 4' - game.delay(3.2); - 'step 5' - if(!event.guessers.length) event.finish(); - 'step 6' - if(trigger.card.name==trigger.cards[0].name){ - event.guessers[0].popup('质疑错误','fire'); - event.guessers[0].addSkill('chanyuan'); - game.log(event.guessers[0],'获得了技能','#g【缠怨】'); - } - else{ - event.guessers[0].popup('质疑正确','wood'); - game.log(player,'使用的',trigger.card,'作废了'); - game.cardsDiscard(trigger.cards); - game.broadcastAll(ui.clear); - trigger.cancel(); - if(trigger.name=='useCard'&&trigger.parent) trigger.parent.goto(0); - } - game.delay(); - }, - }, - chanyuan:{ - //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;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.guessers.remove(event.guessers[0]); - event.goto(2); - }else{ - game.log(event.guessers[0],'#y质疑'); - } - "step 4" - game.broadcastAll(function(onEnd){ - _status.guhuoNode.listenTransition(onEnd); - },event.onEnd01); - "step 5" - game.delay(3.2); - if(!event.guessers.length) event.goto(7); - "step 6" - if(event.name==event.card.name){ - event.guessers[0].popup('质疑错误','fire'); - event.guessers[0].addSkill('chanyuan'); - game.log(event.guessers[0],'获得了技能','#g【缠怨】'); - } - else{ - event.guessers[0].popup('质疑正确','wood'); - game.log(player,'打出的','#y'+get.translation(event.name),'作废了'); - game.cardsDiscard(event.card); - event.finish(); - } - "step 7" - trigger.untrigger(); - trigger.responded=true; - trigger.result={bool:true,card:{name:event.name},cards:[event.card],noanimate:true}; - }, - ai:{ - order:4, - useful:-1, - value:-1, - }, - }, - "guhuo_wuxie":{ - log:false, - silent:true, - popup:false, - enable:"chooseToUse", - filterCard:true, - viewAsFilter:function (player){ - if(player.hasSkill('guhuo_phase'))return false; - return player.countCards('h')>0; - }, - viewAs:{ - name:"wuxie", - }, - check:function(card){ - if(card.name=='wuxie') return 1000; - return 0; - }, - prompt:"将一张手牌当无懈可击使用", - threaten:1.2, - }, - "guhuo_phase":{}, - "xinfu_pingcai":{ - "wolong_card":function (){ - 'step 0' - var ingame=game.hasPlayer(function(current){ - return ['sp_zhugeliang','re_zhugeliang'].contains(current.name)||['sp_zhugeliang','re_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" - event.dialog=ui.create.dialog(get.translation(player)+'正在擦拭宝物...'); - event.videoId=lib.status.videoId++; - game.broadcast('createDialog',event.videoId,get.translation(player)+'正在擦拭宝物...'); - game.delay(14); - event.card=result.links[0]; - "step 2" - 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; - }, - save:true, - result:{ - player:function (player){ - return 10; - }, - }, - }, - }, - "xinfu_qiaosi":{ - enable:"phaseUse", - usable:1, - content:function (){ - 'step 0' - if(get.isLuckyStar()){ - 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, - }, - }, - }, - - "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(); - }, - }, - "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, - //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.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", - }, }, translate:{ xinghuoliaoyuan:'星火燎原', - "xinfu_langxi":"狼袭", - "xinfu_langxi_info":"准备阶段,你可以对一名体力小于或等于你的其他角色造成0~2点随机伤害。", - "xinfu_yisuan":"亦算", - "xinfu_yisuan_info":"每回合限一次。当你于出牌阶段使用的锦囊牌进入弃牌堆时,你可以减1点体力上限,从弃牌堆中获得之。", - "xinfu_xingluan":"兴乱", - "xinfu_xingluan_info":"每回合限一次。当你于出牌阶段使用的仅指定一个目标的牌结算完成后,你可以从牌堆中随机获得一张点数为6的牌。", - "xinfu_lveming":"掠命", - "xinfu_lveming_info":"出牌阶段限一次,你可以选择一名装备区装备比你少的角色,令其选择一个点数,然后你进行判定:
    若点数相同,你对其造成2点伤害;
    若点数不同,则你随机获得其区域内的一张牌。", - "xinfu_tunjun":"屯军", - "xinfu_tunjun_info":"限定技,出牌阶段,你可以选择一名角色,令其随机使用牌堆中的X张装备牌。(X为你发动过“掠命”的次数)", - "xinfu_tanbei":"贪狈", - "xinfu_tanbei_info":"出牌阶段限一次,你可以令一名其他角色选择一项:
    1.令你随机获得其区域内的一张牌,本回合内你不能对其使用牌。
    2.令你此回合内对其使用牌没有次数与距离限制。", - "xinfu_sidao":"伺盗", - xinfu_sidaox:'伺盗', - "xinfu_sidao_info":"出牌阶段限一次,当你对一名其他角色连续使用两张牌后,你可以将一张手牌当做【顺手牵羊】对其使用。", - "tanbei_effect1":"贪狈", - "tanbei_effect1_info":"", - "tanbei_effect2":"贪狈", - "tanbei_effect2_info":"", - - "xinfu_tunan":"图南", - "xinfu_tunan_info":"出牌阶段限一次,你可以展示牌堆顶的一张牌并选择一名其他角色,然后该角色选择一项:使用此牌(无距离限制);或将此牌当普通【杀】使用。", - "xinfu_bijing":"闭境", - "xinfu_bijing_info":"结束阶段,你可以展示一张手牌并标记为“闭境”。若你于回合外失去“闭境”牌,则当前回合角色的弃牌阶段开始时,其需弃置两张牌。你的准备阶段,弃置手牌中的“闭境”牌。", - "xinfu_zhenxing":"镇行", - "xinfu_zhenxing_info":"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的至多三张牌,然后你获得其中与其余牌花色均不相同的一张牌。", - "xinfu_qianxin":"遣信", - "xinfu_qianxin_info":"出牌阶段限一次,若牌堆中没有“信”,你可以选择一名角色并将任意张手牌放置于牌堆中X倍数的位置(X为存活人数),称为“信”。该角色的弃牌阶段开始时,若其手牌区内有于本回合内获得过的“信”,其选择一项:令你将手牌摸至四张;本回合手牌上限-2。", - "qianxin_effect":"遣信", - "qianxin_effect_info":"", - "xinfu_qianxin2":"遣信", - "xinfu_qianxin2_info":"", - - "xinfu_fuhai":"浮海", - "xinfu_fuhai_info":"出牌阶段每个方向限一次,你可以展示一张手牌并选择上家或下家。该角色展示一张手牌,若你展示的牌点数大于等于其展示的牌点数,你弃置你展示的牌,然后继续对其上家或下家重复此流程;若你展示的牌点数小于该展示角色牌的点数,则该角色弃置其展示的牌,然后你与其各摸X张牌(X为你此回合内发动此技能选择的角色数),且你此阶段内不能再发动〖浮海〗。", - "fuhai_clear":"浮海", - "fuhai_clear_info":"", - - "xz_xunxun":"恂恂", - "xz_xunxun_info":"摸牌阶段,你可以观看牌堆顶的四张牌,然后将其中的两张牌置于牌堆顶,并将其余的牌以任意顺序置于牌堆底。", - "xinfu_xingzhao":"兴棹", - "xinfu_xingzhao_info":"锁定技,若场上的已受伤角色合计为:1个以上,你视为拥有技能〖恂恂〗;2个以上,当你使用装备牌时,摸一张牌;3个以上,弃牌阶段开始时,你跳过此阶段。", - "xinfu_xingzhao2":"兴棹", - "xinfu_xingzhao2_info":"", - "xinfu_dianhu":"点虎", - "xinfu_dianhu_info":"锁定技,游戏开始时,你选择一名其他角色。当其受到来自你的伤害后或回复体力后,你摸一张牌。", - "xinfu_dianhu2":"点虎", - "xinfu_dianhu2_info":"", - "xinfu_jianji":"谏计", - "xinfu_jianji_info":"出牌阶段限一次,你可以令一名其他角色摸一张牌。然后该角色可以使用此牌。", - "xinfu_lianpian":"联翩", - "xinfu_lianpian_info":"出牌阶段限三次。当你对一名角色连续使用牌时,你可以摸一张牌,然后可以将一张牌交给该角色。", - - "xinfu_lingren":"凌人", - "xinfu_lingren_info":"每回合限一次。当你于出牌阶段使用带有「伤害」这一标签的基本牌或普通锦囊牌指定目标后,你可以猜测其中的一个目标的手牌中是否有基本牌,锦囊牌或装备牌。若你猜中的项目数:≥1,此牌对该角色的伤害+1;≥2,你摸两张牌;≥3,你获得技能〖奸雄〗和〖行殇〗直到下回合开始。", - "lingren_adddamage":"凌人", - "lingren_adddamage_info":"", - "lingren_jianxiong":"奸雄", - "lingren_jianxiong_info":"当你受到伤害后,你可以获得对你造成伤害的牌并摸一张牌。", - "lingren_xingshang":"行殇", - "lingren_xingshang_info":"当有角色死亡后,你可以选择一项:1.回复一点体力。2.获得该角色的所有牌。", - "xinfu_fujian":"伏间", - "xinfu_fujian_info":"锁定技,结束阶段开始时,你观看一名随机的其他角色的随机X张手牌。(X为场上手牌最少的角色的手牌数)", - "xinfu_xionghuo":"凶镬", - "xinfu_xionghuo_info":"游戏开始时,你获得3个“暴戾”标记。出牌阶段,你可以交给一名其他角色一个“暴戾”标记,你对有“暴戾”标记的角色造成伤害时,此伤害+1。有“暴戾”的其他角色的出牌阶段开始时,其移去所有“暴戾”标记并随机执行一项:1.受到1点火焰伤害且本回合不能对你使用【杀】;2.失去1点体力且本回合手牌上限-1;3.你随机获得其一张手牌和一张装备区的牌。", - xionghuo:"凶镬", - "xionghuo_info":"", - "xionghuo_disable":"凶镬", - "xionghuo_disable_info":"", - "xionghuo_low":"凶镬", - "xionghuo_low_info":"", - "xinfu_shajue":"杀绝", - "xinfu_shajue_info":"锁定技,其他角色进入濒死状态时,若其体力值小于0,则你获得一个“暴戾”标记,并获得使其进入濒死状态的牌。", - "xinfu_jianjie":"荐杰", - "xinfu_jianjie_info":"你的第一个准备阶段,你令两名其他角色分别获得龙印与凤印;出牌阶段限一次(你的第一个回合除外),或当拥有龙印、凤印的角色死亡时,你可以转移龙印、凤印。", - "xinfu_jianjie1":"荐杰", - "xinfu_jianjie1_info":"", - "smh_huoji":"火计", - "smh_huoji_info":"", - "smh_lianhuan":"连环", - "smh_lianhuan_info":"", - "xinfu_jianjie2":"荐杰", - "xinfu_jianjie2_info":"", - "smh_lianhuan1":"连铸", - "smh_lianhuan1_info":"", - "smh_yeyan":"业炎", - "smh_yeyan_info":"", - "xinfu_yinshi":"隐士", - "xinfu_yinshi_info":"锁定技,若你没有龙印、凤印且装备区的防具栏为空,则当你受到的属性伤害火锦囊牌造成的伤害时,防止此伤害。", - "xinfu_chenghao":"称好", - "xinfu_chenghao_info":"当一名角色受到属性伤害后,若其存活且其武将牌横置且是伤害传导的起点,则你可以观看牌堆顶的X张牌并分配给任意角色。(X为横置的角色数量且包含该角色)", - "jianjie_faq":"关于龙凤印", - "jianjie_faq_info":"龙印效果:视为拥有〖火计〗。凤印效果:视为拥有〖连环〗。(均一回合限使用三次) 龙凤印齐全:视为拥有〖业炎〗,〖业炎〗发动后移除龙凤印。", - "xinfu_wuniang":"武娘", - "xinfu_wuniang_info":"当你使用或打出【杀】时,你可以获得一名其他角色的一张牌。若如此做,该角色和场上所有的“关索”各摸一张牌。", - "xinfu_xushen":"许身", - "xinfu_xushen_info":"限定技,当一名男性角色使用【桃】令你脱离濒死状态时,若场上没有“关索”,则其可以将自己的一张武将牌变更为“关索”。然后你回复一点体力,并获得技能〖镇南〗。", - "xinfu_zhennan":"镇南", - "xinfu_zhennan_info":"当你成为【南蛮入侵】的目标时,你可以对一名其他角色造成1-3点随机伤害。", - "xinfu_falu":"法箓", - "xinfu_falu_info":"锁定技,游戏开始时,你获得「紫薇」「后土」「玉清」「勾陈」标记各一个。当你的牌因弃置而进入弃牌堆后,根据这些牌的花色,你获得对应的标记:黑桃,你获得1枚「紫薇」;梅花,你获得1枚「后土」;红桃,你获得1枚「玉清」;方块,你获得1枚「勾陈」。(每种标记限拥有1个)", - "xinfu_dianhua":"点化", - "xinfu_dianhua_info":"准备阶段或结束阶段,你可以观看牌堆顶的X张牌(X为你的「紫薇」「后土」「玉清」「勾陈」标记数的总和)。若如此做,你将这些牌以任意顺序放回牌堆顶。", - "xinfu_zhenyi":"真仪", - "xinfu_zhenyi_info":"你可以在以下时机弃置相应的标记来发动以下效果:一名角色的判定牌生效前,你可以弃置一枚「紫薇」,然后将判定结果改为黑桃5或红桃5;当你处于濒死状态时,你可以弃置一枚「后土」,然后将你的一张手牌当【桃】使用;当你造成伤害时,你可以弃置一枚「玉清」,然后你进行一次判定。若结果为黑色,此伤害+1;当你受到属性伤害后,你可以弃置一张「勾陈」,然后你从牌堆中随机获得三种类型的牌各一张。", - "zhenyi_spade":"真仪", - "zhenyi_spade_info":"", - "zhenyi_club":"真仪", - "zhenyi_club_info":"", - "zhenyi_heart":"真仪", - "zhenyi_heart_info":"", - "xinfu_yanyu":"燕语", - "xinfu_yanyu_info":"一名角色的出牌阶段开始时,你可以弃置一张牌。若如此做,则该出牌阶段内,当有与你弃置的牌类别相同的其他牌进入弃牌堆时,你可令任意一名角色获得此牌。每阶段以此法获得的牌不能超过三张。", - "xinfu_yanyu2":"燕语", - "xinfu_yanyu2_info":"", - "xinfu_xiaode":"孝德", - "xinfu_xiaode_info":"其他角色死亡后,你可以声明该角色武将牌上的一个不为主公技或觉醒技的技能。若如此做,你获得此技能且不能再发动〖孝德〗直到你的回合结束。", "sp_taishici":"SP太史慈", wangcan:"王粲", @@ -5397,108 +1567,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "xinfu_tushe_info":"当你使用非装备牌指定目标后,若你没有基本牌,则你可以摸X张牌。(X为此牌指定的目标数)", "xinfu_limu":"立牧", "xinfu_limu_info":"出牌阶段限一次,你可以将一张♦牌当做【乐不思蜀】对自己使用,然后回复1点体力。只要你的判定区内有牌,你对攻击范围内的其他角色使用牌便没有次数和距离限制。", - - "xinfu_guhuo":"蛊惑", - "xinfu_guhuo_info":"每名角色的回合限一次,你可以扣置一张手牌当做一张基本牌或普通锦囊牌使用或打出。其他角色依次选择是否质疑。一旦有其他角色质疑则翻开此牌:若为假则此牌作废,若为真,则质疑角色获得技能〖缠怨〗。", - "guhuo_guess":"蛊惑", - "guhuo_guess_info":"", - chanyuan:"缠怨", - "chanyuan_info":"锁定技,你不能质疑于吉,当你的体力值为1时,你的其他技能失效。", - "guhuo_respond":"蛊惑", - "guhuo_respond_info":"", - "guhuo_wuxie":"蛊惑", - "guhuo_wuxie_info":"", - "guhuo_phase":"蛊惑", - "guhuo_phase_info":"", - - "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为骰子的点数)", - "xinfu_jijie":"机捷", - "xinfu_jijie_info":"出牌阶段限一次。你可以观看牌堆底的一张牌,然后将其交给一名角色。", - "xinfu_jiyuan":"急援", - "xinfu_jiyuan_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":"你于出牌阶段内使用【杀】无次数限制。", - 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角色对应区域。", }, }; }); diff --git a/character/yijiang.js b/character/yijiang.js index c073534bf..47b69b698 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -1865,6 +1865,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, zhuandui:{ + shaRelated:true, audio:2, group:['zhuandui_respond','zhuandui_use'], subSkill:{ @@ -5634,6 +5635,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, longyin:{ + shaRelated:true, trigger:{global:'useCard'}, direct:true, filter:function(event,player){ @@ -5935,7 +5937,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 2' var num2=0,players=game.filterPlayer(); for(var i=0;i