diff --git a/card/extra.js b/card/extra.js index 1c3e5e74d..b9edaa5da 100644 --- a/card/extra.js +++ b/card/extra.js @@ -446,7 +446,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ priority:6, audio:true, filter:function(event,player){ - if(event.player.hasSkillTag('unequip',false,event.card)) return false; + if(event.player.hasSkillTag('unequip',false,{ + name:event.card?event.card.name:null, + target:player, + card:event.card + })) return false; if(event.card.name=='nanman') return true; if(event.card.name=='wanjian') return true; if(event.card.name=='sha'&&!event.card.nature) return true; @@ -457,7 +461,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ ai:{ effect:{ target:function(card,player,target,current){ - if(player.hasSkillTag('unequip',false,card)) return; + if(player.hasSkillTag('unequip',false,{ + name:card?card.name:null, + target:player, + card:card + })) return; if(card.name=='nanman'||card.name=='wanjian') return 'zerotarget'; if(card.name=='sha'){ var equip1=player.getEquip(1); @@ -496,7 +504,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ audio:true, filter:function(event,player){ if(event.num<=1) return false; - if(event.source&&event.source.hasSkillTag('unequip',false,event.card)) return false; + if(event.source&&event.source.hasSkillTag('unequip',false,{ + name:event.card?event.card.name:null, + target:player, + card:event.card + })) return false; return true; }, priority:-10, diff --git a/card/guozhan.js b/card/guozhan.js index aac46a918..604fcf195 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -912,8 +912,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, taipingyaoshu:{ trigger:{player:'damageBefore'}, - filter:function(event){ - if(event.source&&event.source.hasSkillTag('unequip',false,event.card)) return false; + filter:function(event,player){ + if(event.source&&event.source.hasSkillTag('unequip',false,{ + name:event.card?event.card.name:null, + target:player, + card:event.card + })) return false; if(event.nature) return true; }, forced:true, @@ -925,7 +929,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ nothunder:true, effect:{ target:function(card,player,target,current){ - if(player.hasSkillTag('unequip',false,card)) return; + if(player.hasSkillTag('unequip',false,{ + name:card?card.name:null, + target:player, + card:card + })) return; if(get.tag(card,'natureDamage')) return 'zerotarget'; if(card.name=='tiesuo'){ return [0,0]; @@ -1147,7 +1155,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ trigger:{player:'damageBefore'}, // forced:true, filter:function(event,player){ - if(event.source&&event.source.hasSkillTag('unequip',false,event.card)) return false; + if(event.source&&event.source.hasSkillTag('unequip',false,{ + name:event.card?event.card.name:null, + target:player, + card:event.card + })) return false; return event.num>=player.hp; }, content:function(){ diff --git a/card/standard.js b/card/standard.js index 72a004292..a9d78d0f2 100644 --- a/card/standard.js +++ b/card/standard.js @@ -1392,8 +1392,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){ forced:true, priority:6, audio:true, - filter:function(event){ - if(event.player.hasSkillTag('unequip',false,event.card)) return false; + filter:function(event,player){ + 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.color(event.card)=='black') }, content:function(){ @@ -1402,7 +1406,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ ai:{ effect:{ target:function(card,player){ - if(player.hasSkillTag('unequip',false,card)) return; + if(player.hasSkillTag('unequip',false,{ + name:card?card.name:null, + target:player, + card:card + })) return; if(card.name=='sha'&&get.color(card)=='black') return 'zerotarget'; } } @@ -1621,7 +1629,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(!event.filterCard({name:'shan'})) return false; if(!lib.filter.cardRespondable({name:'sha'},player,event)) return false; var evt=event.getParent(); - if(evt.player&&evt.player.hasSkillTag('unequip',false,evt.card)) return false; + if(evt.player&&evt.player.hasSkillTag('unequip',false,{ + name:evt.card?evt.card.name:null, + target:player, + card:evt.card + })) return false; return true; }, audio:true, @@ -1642,7 +1654,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ ai:{ effect:{ target:function(card,player,target,effect){ - if(player.hasSkillTag('unequip',false,card)) return; + if(player.hasSkillTag('unequip',false,{ + name:card?card.name:null, + target:player, + card:card + })) return; if(get.tag(card,'respondShan')) return 0.5; } } diff --git a/card/swd.js b/card/swd.js index 23ad4e146..da291c0fa 100644 --- a/card/swd.js +++ b/card/swd.js @@ -3544,7 +3544,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ forced:true, priority:15, filter:function(event,player){ - if(event.source&&event.source.hasSkillTag('unequip',false,event.card)) return false; + if(event.source&&event.source.hasSkillTag('unequip',false,{ + name:event.card?event.card.name:null, + target:player, + card:event.card + })) return false; return get.type(event.card,'trick')=='trick'; }, content:function(){ @@ -3554,7 +3558,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ notrick:true, effect:{ target:function(card,player,target,current){ - if(player.hasSkillTag('unequip',false,card)) return; + if(player.hasSkillTag('unequip',false,{ + name:card?card.name:null, + target:player, + card:card + })) return; if(get.type(card)=='trick'&&get.tag(card,'damage')){ return 'zeroplayertarget'; } @@ -4720,7 +4728,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ trigger:{player:'damageBegin'}, forced:true, filter:function(event,player){ - if(event.source&&event.source.hasSkillTag('unequip',false,event.card)) return false; + if(event.source&&event.source.hasSkillTag('unequip',false,{ + name:event.card?event.card.name:null, + target:player, + card:event.card + })) return false; if(Math.random()>1/3) return false; return true; }, diff --git a/card/yunchou.js b/card/yunchou.js index 6dcdb4df1..763b657b8 100644 --- a/card/yunchou.js +++ b/card/yunchou.js @@ -809,8 +809,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){ toulianghuanzhu_ai2:{}, suolianjia:{ trigger:{player:'damageBefore'}, - filter:function(event){ - if(event.source&&event.source.hasSkillTag('unequip',false,event.card)) return; + filter:function(event,player){ + if(event.source&&event.source.hasSkillTag('unequip',false,{ + name:event.card?event.card.name:null, + target:player, + card:event.card + })) return; if(event.nature) return true; }, forced:true, @@ -822,7 +826,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ nothunder:true, effect:{ target:function(card,player,target,current){ - if(player.hasSkillTag('unequip',false,card)) return; + if(player.hasSkillTag('unequip',false,{ + name:card?card.name:null, + target:player, + card:card + })) return; if(get.tag(card,'natureDamage')) return 'zerotarget'; if(card.name=='tiesuo'){ return [0,0]; diff --git a/character/extra.js b/character/extra.js index abb3ae6ae..214fa6785 100644 --- a/character/extra.js +++ b/character/extra.js @@ -10,7 +10,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shen_zhouyu:['male','shen',4,['yeyan','qinyin'],['wu']], shen_simayi:['male','shen',4,['renjie','sbaiyin','lianpo'],['wei']], shen_caocao:['male','shen',3,['guixin','feiying'],['wei']], - shen_lvbu:['male','shen',5,['baonu','wuqian','shenfen'],['qun']], + shen_lvbu:['male','shen',5,['baonu','wumou','ol_wuqian','ol_shenfen'],['qun']], }, characterIntro:{ shen_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。', @@ -19,6 +19,126 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shen_zhugeliang:'字孔明、号卧龙,汉族,琅琊阳都人,三国时期蜀汉丞相、杰出的政治家、军事家、发明家、文学家。在世时被封为武乡侯,死后追谥忠武侯,后来东晋政权推崇诸葛亮军事才能,特追封他为武兴王。诸葛亮为匡扶蜀汉政权,呕心沥血、鞠躬尽瘁、死而后已。其代表作有《前出师表》、《后出师表》、《诫子书》等。曾发明木牛流马等,并改造连弩,可一弩十矢俱发。于234年在宝鸡五丈原逝世。', }, skill:{ + ol_shenfen:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return player.storage.baonu>=6; + }, + skillAnimation:true, + animationColor:'metal', + content:function(){ + "step 0" + player.storage.baonu-=6; + player.syncStorage('baonu'); + player.updateMarks('baonu'); + event.targets=game.filterPlayer(); + event.targets.remove(player); + event.targets.sort(lib.sort.seat); + event.targets2=event.targets.slice(0); + player.line(event.targets,'green'); + "step 1" + if(event.targets.length){ + event.targets.shift().damage(); + event.redo(); + } + "step 2" + if(event.targets2.length){ + var cur=event.targets2.shift(); + if(cur&&cur.countCards('he')){ + cur.chooseToDiscard('he',true,4); + } + event.redo(); + } + }, + ai:{ + combo:'baonu', + order:10, + result:{ + player:function(player){ + return game.countPlayer(function(current){ + if(current!=player){ + return get.sgn(get.damageEffect(current,player,player)); + } + }); + } + } + } + }, + ol_wuqian:{ + audio:2, + enable:'phaseUse', + derivation:'wushuang', + filter:function(event,player){ + return player.storage.baonu>=2; + }, + filterTarget:function(card,player,target){ + return target!=player; + }, + content:function(){ + player.storage.baonu-=2; + player.syncStorage('baonu'); + player.updateMarks('baonu'); + player.addTempSkill('wushuang'); + player.storage.ol_wuqian_target=target; + player.addTempSkill('ol_wuqian_target'); + target.addTempSkill('ol_wuqian_targeted'); + var list=game.filterPlayer(); + for(var i=0;i0){ + player.chooseControl('选项一','选项二').set('prompt','无谋

1:弃置一枚[暴]标记

2:受到一点伤害

').ai=function(){ + if(player.storage.baonu>6) return '选项一'; + if(player.hp+player.num('h','tao')>3) return '选项二'; + return '选项一'; + }; + } + else{ + player.loseHp(); + event.finish(); + } + 'step 1' + if(result.control=='选项一'){ + player.storage.baonu--; + player.syncStorage('baonu'); + player.updateMarks('baonu'); + } + else{ + player.loseHp(); + } + }, + }, qinyin:{ audio:2, trigger:{player:'phaseDiscardEnd'}, @@ -482,14 +602,130 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, wuhun:{ + trigger:{ + player:'damageEnd', + }, + alter:true, + filter:function (event,player){ + if(event.source==undefined) return false + if(!get.is.altered('wuhun')) return false + return true; + }, + forced:true, + init:function (player){ + for(var i=0;itarget.storage.wuhun_mark){ + return false; + } + } + return true; + }).set('ai',function(target){ + return -ai.get.attitude(_status.event.player,target); + }); + "step 1" + player.line(result.targets[0],'fire'); + result.targets[0].addSkill('wuhun3') + }, + ai:{ + threaten:0.5, + effect:{ + target:function (card,player,target,current){ + if(get.tag(card,'damage')){ + if(player.hasSkill('jueqing')) return [1,-5]; + var hasfriend=false; + for(var i=0;i=0){ + hasfriend=true;break; + } + } + if(!hasfriend) return; + if(player.hp>2&&ai.get.attitude(player,target)<=0) return [0,2]; + return [1,0,0,-player.hp]; + } + }, + }, + }, + }, + wuhun3:{ + audio:3, + trigger:{ + global:'dieAfter', + }, + forced:true, + content:function (){ + "step 0" + player.judge(function(card){ + if(card.name=='tao'||card.name=='taoyuan') return 2; + return -2; + }) + "step 1" + if(result.judge==2){ + player.die(); + } + player.removeSkill('wuhun3'); + }, + }, + wuhun4:{ + trigger:{ + player:'dieAfter', + }, + forced:true, + popup:false, + content:function (){ + for(var i=0;i