diff --git a/card/extra.js b/card/extra.js index 3a741d060..e4e2cac5c 100644 --- a/card/extra.js +++ b/card/extra.js @@ -807,7 +807,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(card.name=='nanman'||card.name=='wanjian') return 'zerotarget'; if(card.name=='sha'){ var equip1=player.getEquip(1); - if(equip1&&equip1.name=='zhuque') return 2; + if(equip1&&equip1.name=='zhuque') return 1.9; if(equip1&&equip1.name=='qinggang') return 1; if(!card.nature) return 'zerotarget'; } @@ -835,7 +835,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ effect:{ target:function(card,player,target,current){ if(card.name=='sha'){ - if(card.nature=='fire'||player.hasSkill('zhuque_skill')) return 2; + if(card.nature=='fire') return 2; + if(player.hasSkill('zhuque_skill')) return 1.9; } if(get.tag(card,'fireDamage')&¤t<0) return 2; } @@ -878,16 +879,22 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, zhuque_skill:{ - trigger:{player:'useCardToBefore'}, + trigger:{player:'useCard1'}, priority:7, filter:function(event,player){ if(event.card.name=='sha'&&!event.card.nature) return true; }, audio:true, check:function(event,player){ - var eff1=get.effect(event.target,event.card,player,player); - var eff2=get.effect(event.target,{name:'sha',nature:'fire',suit:get.suit(event.card),number:get.number(event.card)},player,player); - return eff2>eff1; + var eff=0; + for(var i=0;i0; }, content:function(){ trigger.card.nature='fire'; diff --git a/card/guozhan.js b/card/guozhan.js index f47321366..983a69647 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -156,8 +156,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(player.hasSkill('xietianzi')) return false; if(_status.currentPhase!=player) return false; var evt=event||_status.event; - var evt2=evt.getParent('chooseToUse'); - return evt.type=='phase'||evt2.type=='phase'; + if(evt.name!='chooseToUse') evt=evt.getParent('chooseToUse'); + return evt.type=='phase'; }, filterTarget:function(card,player,target){ return player==target; @@ -376,7 +376,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ fullskin:true, audio:true, type:'trick', - enable:true, + enable:function(){ + return game.hasPlayer(function(current){ + return current.isUnseen(); + }); + }, mode:['guozhan'], global:['g_chiling1','g_chiling2','g_chiling3'], filterTarget:function(card,player,target){ @@ -760,9 +764,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, }, minguangkai_cancel:{ - trigger:{target:'useCardToBefore'}, + trigger:{target:'useCardToTarget'}, forced:true, - priority:15, check:function(event,player){ return get.effect(event.target,event.card,event.player,player)<0; }, @@ -861,14 +864,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){ } }, feilongduofeng:{ - trigger:{player:'shaBegin'}, - priority:7, + trigger:{player:'useCardToPlayered'}, logTarget:'target', check:function(event,player){ return get.attitude(player,event.target)<=0; }, filter:function(event,player){ - return event.target.countCards('he'); + return event.card.name=='sha'&&event.target.countCards('he'); }, content:function(){ trigger.target.chooseToDiscard('he',true); diff --git a/card/sp.js b/card/sp.js index 498356a95..223109397 100644 --- a/card/sp.js +++ b/card/sp.js @@ -481,10 +481,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, }, zhungangshuo:{ - trigger:{player:'shaBegin'}, + trigger:{player:'useCardToPlayered'}, logTarget:'target', filter:function(event,player){ - return event.player.countCards('h')||player.countCards('h'); + return event.card.name=='sha'&&(event.player.countCards('h')||player.countCards('h')); }, check:function(event,player){ var target=event.target; diff --git a/card/standard.js b/card/standard.js index 4bc32a09f..4cd8f9ed0 100644 --- a/card/standard.js +++ b/card/standard.js @@ -1489,11 +1489,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, }, cixiong_skill:{ - trigger:{player:'shaBegin'}, - priority:7, + trigger:{player:'useCardToPlayered'}, audio:true, logTarget:'target', filter:function(event,player){ + if(event.card.name!='sha') return false; if(player.sex=='male'&&event.target.sex=='female') return true; if(player.sex=='female'&&event.target.sex=='male') return true; return false; diff --git a/character/extra.js b/character/extra.js index 4e73fbc48..ba4ba02cd 100755 --- a/character/extra.js +++ b/character/extra.js @@ -143,7 +143,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.range={ 手牌区:['h','e','j'], 装备区:['e','h','j'], - 判定区:['j','e','h'], + 判定区:['j','h','e'], }[result.control||'手牌区']; "step 3" if(num0; + return event.card.name=='sha'&&event.target.countCards('he')>0; }, check:function(event,player){ return get.attitude(player,event.target)<0; diff --git a/character/old.js b/character/old.js index 211e2419c..c2ce143f9 100755 --- a/character/old.js +++ b/character/old.js @@ -4,18 +4,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'old', characterSort:{ old:{ - old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_zhoutai","old_caoren"], + old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_zhoutai","old_caoren","xiahouyuan","xiaoqiao","huangzhong","weiyan","xuhuang","pangde"], old_refresh:["old_zhangfei","old_huatuo"], old_yijiang1:["masu","xushu","fazheng","yujin","xin_yujin","old_xusheng","old_lingtong","ol_yujin"], old_yijiang2:["old_madai","old_zhonghui","old_wangyi","old_guanzhang","ol_liaohua"], old_yijiang3:["liru","old_zhuran","ol_zhuran","ol_manchong","ol_guohuai"], - old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan"], + old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan","ol_wuyi"], old_yijiang5:["old_caoxiu","old_quancong","old_zhuzhi"], - old_yijiang67:["ol_xinxianying","ol_zhangrang"], + old_yijiang67:["ol_xinxianying","ol_zhangrang","ol_liuyu"], old_sp:["old_caochun","old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo"], }, }, character:{ + xuhuang:['male','wei',4,['gzduanliang']], + pangde:['male','qun',4,['mashu','mengjin']], + xiahouyuan:['male','wei',4,['shensu']], + huangzhong:['male','shu',4,['liegong']], + weiyan:['male','shu',4,['kuanggu']], + xiaoqiao:['female','wu',3,['tianxiang','hongyan']], yuji:['male','qun',3,['old_guhuo'],['forbidai']], zhangjiao:['male','qun',3,['leiji','guidao','huangtian'],['zhu']], old_zhoutai:['male','wu',4,['gzbuqu']], @@ -59,6 +65,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_guansuo:['male','shu',4,['zhengnan','xiefang']], ol_manchong:['male','wei',3,['yuce','junxing']], ol_guohuai:['male','wei',4,['jingce']], + ol_wuyi:['male','shu',4,['benxi']], + ol_liuyu:['male','qun',2,['zongzuo','zhige']], }, characterFilter:{ old_lingju:function(mode){ @@ -865,6 +873,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_guansuo:'OL关索', ol_manchong:'OL满宠', ol_guohuai:'OL郭淮', + ol_wuyi:'OL吴懿', + ol_liuyu:'OL刘虞', old_fuhun:'父魂', old_fuhun_info:'摸牌阶段开始时,你可以放弃摸牌,改为从牌堆顶亮出两张牌并获得之,若亮出的牌颜色不同,你获得技能“武圣”、“咆哮”,直到回合结束。', diff --git a/character/refresh.js b/character/refresh.js index 891a075e9..08c0851e0 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -1436,39 +1436,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rejiuyuan2:{ audio:'jiuyuan', forceaudio:true, - trigger:{player:'taoBegin'}, + trigger:{player:'useCardToPlayer'}, filter:function(event,player){ + if(event.card.name!='tao') return false; if(player.group!='wu') return false; if(event.target!=player) return false; return game.hasPlayer(function(target){ - return player!=target&&target.isDamaged()&&target.hp0); - } - else{ - event.finish(); - } - 'step 2' if(result.bool){ - trigger.cancel(); - player.logSkill('rejiuyuan',event.current); - event.current.recover(); + var target=result.targets[0]; + player.logSkill('rejiuyuan2',target); + trigger.getParent().targets.remove(player); + trigger.getParent().targets.push(target); player.draw(); } - event.goto(1); } }, rezhiheng:{ @@ -2653,10 +2645,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ retieji:{ audio:2, audioname:['boss_lvbu3'], - trigger:{player:'shaBegin'}, + trigger:{player:'useCardToPlayered'}, check:function(event,player){ return get.attitude(player,event.target)<0; }, + filter:function(event,player){ + return event.card.name=='sha'; + }, logTarget:'target', content:function(){ "step 0" @@ -2678,7 +2673,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }).set('num',num).set('suit',suit); "step 2" if(!result.bool){ - trigger.directHit=true; + trigger.getParent().directHit.add(trigger.target); } } }, @@ -2935,9 +2930,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ unique:true, mark:true, limited:true, - trigger:{global:'useCard'}, + trigger:{global:'useCardToPlayered'}, priority:5, filter:function(event,player){ + if(event.getParent().triggeredTargets3.length>1) return false; if(get.type(event.card)!='trick') return false; if(get.info(event.card).multitarget) return false; if(event.targets.length<2) return false; @@ -2952,7 +2948,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "step 0" player.chooseTarget(get.prompt('fenwei'), [1,trigger.targets.length],function(card,player,target){ - var evt=_status.event.getTrigger(); + var evt=_status.event.getTrigger().getParent(); return evt.targets.contains(target)&&!evt.excluded.contains(target); }).set('ai',function(target){ var trigger=_status.event.getTrigger(); @@ -2966,7 +2962,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.awakenSkill('fenwei'); player.logSkill('fenwei',result.targets); player.storage.fenwei=true; - trigger.excluded.addArray(result.targets); + trigger.getParent.excluded.addArray(result.targets); game.delay(); } }, diff --git a/character/shenhua.js b/character/shenhua.js index fdcdbf3fe..d6d3caec2 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -6,20 +6,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connectBanned:['zuoci'], characterSort:{ shenhua:{ - shenhua_feng:['caoren','xiahouyuan','huangzhong','weiyan','xiaoqiao','zhoutai','sp_zhangjiao','re_yuji'], - shenhua_huo:['dianwei','xunyu','pangtong','sp_zhugeliang','taishici','yanwen','re_yuanshao','pangde'], - shenhua_lin:['caopi','xuhuang','menghuo','zhurong','re_lusu','sunjian','dongzhuo','jiaxu'], + shenhua_feng:['caoren','re_xiahouyuan','re_huangzhong','re_weiyan','re_xiaoqiao','zhoutai','sp_zhangjiao','re_yuji'], + shenhua_huo:['dianwei','xunyu','pangtong','sp_zhugeliang','taishici','yanwen','re_yuanshao','re_pangde'], + shenhua_lin:['caopi','re_xuhuang','menghuo','zhurong','re_lusu','sunjian','dongzhuo','jiaxu'], shenhua_shan:['dengai','zhanghe','liushan','jiangwei','zhangzhang','sunce','caiwenji','zuoci'], shenhua_yin:['wangji','kuailiangkuaiyue','yanyan','wangping','sunliang','luji','xuyou','yl_luzhi'], shenhua_lei:['haozhao','guanqiujian','chendao','zhugezhan','lukang','zhoufei','zhangxiu','yl_yuanshu'], }, }, character:{ - xiahouyuan:['male','wei',4,['xinshensu']], + re_xiahouyuan:['male','wei',4,['xinshensu']], caoren:['male','wei',4,['xinjushou','xinjiewei']], - huangzhong:['male','shu',4,['xinliegong']], - weiyan:['male','shu',4,['xinkuanggu','qimou']], - xiaoqiao:['female','wu',3,['retianxiang','hongyan']], + re_huangzhong:['male','shu',4,['xinliegong']], + re_weiyan:['male','shu',4,['xinkuanggu','qimou']], + re_xiaoqiao:['female','wu',3,['retianxiang','hongyan']], zhoutai:['male','wu',4,['buqu','fenji']], sp_zhangjiao:['male','qun',3,['releiji','guidao','huangtian'],['zhu']], re_yuji:["male","qun",3,["xinfu_guhuo"],["forbidai"]], @@ -33,12 +33,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ taishici:['male','wu',4,['tianyi']], yanwen:['male','qun',4,['shuangxiong']], re_yuanshao:['male','qun',4,['luanji','xueyi'],['zhu']], - pangde:['male','qun',4,['mashu','jianchu']], + re_pangde:['male','qun',4,['mashu','jianchu']], menghuo:['male','shu',4,['huoshou','zaiqi']], zhurong:['female','shu',4,['juxiang','lieren']], caopi:['male','wei',3,['xingshang','fangzhu','songwei'],['zhu']], - xuhuang:['male','wei',4,['duanliang','jiezi']], + re_xuhuang:['male','wei',4,['duanliang','jiezi']], re_lusu:['male','wu',3,['haoshi','dimeng']], sunjian:['male','wu',4,['gzyinghun']], dongzhuo:['male','qun',8,['jiuchi','roulin','benghuai','baonue'],['zhu']], @@ -422,17 +422,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "xinfu_fuyin":{ usable:1, trigger:{ - target:"useCardToBefore", + target:"useCardToTargeted", }, forced:true, - priority:6, audio:2, filter:function (event,player){ if(event.player.countCards('h')1&&player.countCards('he')>0; + return get.type(event.card)=='trick'&&event.targets.length>1&&player.countCards('he')>0; }, content:function(){ 'step 0' @@ -1030,37 +1029,43 @@ game.import('character',function(lib,game,ui,get,ai,_status){ '1':{ audio:2, trigger:{ - global:'shaBegin' + target:'useCardToTargeted' }, + prompt2:'当你成为其他角色【杀】的目标后,你可以与其各摸一张牌,然后其本回合内不能再对你使用牌。', filter:function (event,player){ - return event.targets&&event.targets.contains(player)&&(player.storage.nzry_juzhan1==false||player.storage.nzry_juzhan1==undefined); + return event.card.name=='sha'&&(player.storage.nzry_juzhan1==false||player.storage.nzry_juzhan1==undefined); }, + logTarget:'player', content:function(){ game.asyncDraw([player,trigger.player]); trigger.player.storage.nzry_juzhan=true; player.storage.nzry_juzhan1=true; + player.addTempSkill('nzry_juzhanx'); }, }, '2':{ audio:2, trigger:{ - player:'shaBegin' + player:'useCardToPlayered' }, + prompt2:'当你使用【杀】指定一名角色为目标后,你可以获得其一张牌,然后你本回合内不能再对其使用牌', filter:function (event,player){ - return player.storage.nzry_juzhan1==true; + return event.card.name=='sha'&&event.player.countGainableCards(player,'he')>0&&player.storage.nzry_juzhan1==true; }, check:function (event,player){ return event.player.countCards('he')>0&&event.targets&&event.targets.length==1; }, + logTarget:'target', content:function(){ player.gainPlayerCard(trigger.targets[0],'he',true); player.storage.nzry_juzhan1=false; + trigger.target.addTempSkill('nzry_juzhanx'); trigger.target.storage.nzry_juzhan2=true; }, }, }, }, - "_nzry_juzhan":{ + "nzry_juzhanx":{ mod:{ targetEnabled:function(card,player,target){ if(target.storage.nzry_juzhan2==true) return false; @@ -1772,10 +1777,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'nzry_jianxiang':{ audio:2, trigger:{ - global:'useCard', + target:'useCardToTargeted', }, filter:function (event,player){ - return event.player!=player&&event.targets&&event.targets.contains(player); + return event.player!=player; }, direct:true, content:function(){ @@ -1787,12 +1792,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }; "step 1" if(result.bool){ - player.line(result.targets); - player.logSkill('nzry_jianxiang'); + player.logSkill('nzry_jianxiang',result.targets); result.targets[0].draw(); - }else{ - event.finish(); - }; + } }, }, "nzry_shenshi":{ @@ -1988,12 +1990,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, jianchu:{ audio:2, - trigger:{player:'shaBegin'}, - filter:function(event){ - return event.target.countCards('he')>0; + trigger:{player:'useCardToPlayered'}, + filter:function(event,player){ + return event.card.name=='sha'&&event.target.countDiscardableCards(player,'he')>0; }, direct:true, - priority:8, content:function(){ 'step 0' player.discardPlayerCard(trigger.target,get.prompt('jianchu',trigger.target)).set('ai',function(button){ @@ -2004,7 +2005,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' if(result.bool&&result.links&&result.links.length){ if(get.type(result.links[0])=='equip'){ - trigger.directHit=true; + trigger.getParent().directHit.add(trigger.target); } else if(trigger.cards){ trigger.target.gain(trigger.cards,'gain2','log'); @@ -2544,7 +2545,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, xiangle:{ audio:2, - trigger:{target:'useCardToBefore'}, + trigger:{target:'useCardToTargeted'}, forced:true, filter:function(event,player){ return event.card.name=='sha'; @@ -2562,7 +2563,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }).set('eff',eff); "step 1" if(result.bool==false){ - trigger.cancel(); + trigger.getParent().excluded.add(player); } }, ai:{ @@ -4693,7 +4694,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 5-get.useful(card); }, content:function(){ + 'step 0' player.draw(); + 'step 1' + game.cardsDiscard(cards); }, discard:false, prompt:'将一张梅花牌置入弃牌堆并摸一张牌', @@ -6587,7 +6591,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhurong:'祝融', menghuo:'孟获', caopi:'曹丕', - xuhuang:'徐晃', + re_xuhuang:'徐晃', lusu:'旧鲁肃', sunjian:'孙坚', dongzhuo:'董卓', @@ -6646,7 +6650,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ taishici:'太史慈', yanwen:'颜良文丑', yuanshao:'旧袁绍', - pangde:'庞德', + re_pangde:'庞德', huoji:'火计', bazhen:'八阵', kanpo:'看破', @@ -6682,12 +6686,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xueyi_info:'主公技,锁定技,场上每有一名其他群雄角色存活,你的手牌上限便+2。', mengjin_info:'当你使用的【杀】被【闪】抵消时,你可以弃置目标角色的一张牌。', - xiahouyuan:'夏侯渊', + re_xiahouyuan:'夏侯渊', + re_huangzhong:'黄忠', + re_weiyan:'魏延', + re_xiaoqiao:'小乔', + + gz_xiahouyuan:'夏侯渊', + gz_huangzhong:'黄忠', + gz_weiyan:'魏延', + gz_xiaoqiao:'小乔', + gz_xuhuang:'徐晃', + gz_pangde:'庞德', + + xuhuang:'旧徐晃', + pangde:'旧庞德', + xiahouyuan:'旧夏侯渊', caoren:'曹仁', - huangzhong:'黄忠', + huangzhong:'旧黄忠', sp_zhangjiao:'张角', - weiyan:'魏延', - xiaoqiao:'小乔', + weiyan:'旧魏延', + xiaoqiao:'旧小乔', zhoutai:'周泰', zhangjiao:'旧张角', yuji:'于吉', @@ -6737,6 +6755,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ guhuo_info:'每名角色的回合限一次,你可以扣置一张手牌当一张基本牌或普通锦囊牌使用或打出。其他角色依次选择是否质疑。一旦有其他角色质疑则翻开此牌:若为假则此牌作废,若为真,则质疑角色获得技能“缠怨”(锁定技,你不能质疑于吉,只要你的体力值为1,你失去你的武将技能)', fenji_info:'每当一名角色的手牌于回合外被其他角色弃置或获得时,你可以失去1点体力,然后令该角色摸两张牌。', + gzduanliang:'断粮', + gzduanliang_info:'你可以将一张黑色基本牌或黑色装备牌当【兵粮寸断】使用;你可以对距离为2的角色使用【兵粮寸断】', + shenhua_feng:'神话再临•风', shenhua_huo:'神话再临•火', shenhua_lin:'神话再临•林', diff --git a/character/sp.js b/character/sp.js index 58f4735c4..36a8db66c 100755 --- a/character/sp.js +++ b/character/sp.js @@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ sp:{ - sp_default:["caoying","simahui","baosanniang","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","guansuo","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","wenyang"], + sp_default:["caoying","simahui","baosanniang","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","guansuo","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","wenyang","guanlu","gexuan"], sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"], sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"], sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"], @@ -18,6 +18,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + guanlu:['male','wei',3,['tuiyan','busuan','mingjie']], + gexuan:['male','wu',3,['lianhua','zhafu']], wenyang:['male','wei',5,['xinlvli','choujue']], mangyachang:["male","qun",4,["spjiedao"],[]], xugong:["male","wu",3,["biaozhao","yechou"],[]], @@ -155,6 +157,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //kaisa:["male","western",4,["zhengfu"]], }, characterIntro:{ + guanlu:"管辂(209年-256年),字公明,平原(今山东德州平原县)人。三国时期曹魏术士。年八九岁,便喜仰观星辰。成人后,精通《周易》,善于卜筮、相术,习鸟语,相传每言辄中,出神入化。体性宽大,常以德报怨。正元初,为少府丞。北宋时被追封为平原子。管辂是历史上著名的术士,被后世奉为卜卦观相的祖师。", + gexuan:"葛玄(164年-244年),汉族,吴丹阳郡句容县都乡吉阳里人(今句容市),祖籍山东琅琊,三国著名高道,道教灵宝派祖师。字孝先,号仙翁,被尊称为“葛天师”。道教尊为葛仙翁,又称太极仙翁,与张道陵、许逊、萨守坚共为四大天师。为汉下邳僮侯葛艾后裔,祖葛矩,安平太守,黄门郎;从祖葛弥,豫章第五郡太守。父葛焉,字德儒,州主簿,山阴令,散骑常侍,大尚书。随左慈学道,得《太清丹经》、《黄帝九鼎神丹经》、《金液丹经》等道经。曾采药海山,吴嘉禾二年(233年),在閤皂山修道建庵,筑坛立炉,修炼九转金丹。喜好遨游山川,去过括苍山、南岳山、罗浮山。编撰《灵宝经诰》,精研上清、灵宝等道家真经,并嘱弟子世世箓传。", wenyang:"文俶(238年—291年),一作文淑,字次骞,小名阿鸯,世称文鸯,谯郡(今安徽亳州市)人。魏末晋初名将,曹魏扬州刺史文钦之子。骁勇善战,依附大将军曹爽,效忠于王室。司马师废黜皇帝曹芳后,随父联合毌丘俭于淮南起兵勤王。兵败之后,向南投奔吴国。诸葛诞发动淮南叛乱,奉命率军驰援。双方发生内讧,父亲为诸葛诞所害,遂降于司马昭,封关内侯。西晋建立后,任平虏护军。咸宁三年(277年),拜平西将军、都督凉秦雍州三州军事,大破鲜卑首领秃发树机能,名震天下,迁使持节、护东夷校尉、监辽东军事。八王之乱中,为诸葛诞外孙、东安王司马繇所诬杀,惨遭灭族,时年五十四岁。", jianggan:"蒋干,字子翼,汉末三国时期的人物,九江(治今安徽寿县)人。历史上的蒋干是当时的名士、辩论家。而罗贯中在历史小说《三国演义》中则将蒋干刻画成了被周瑜所愚弄的小丑形象。", zhangchangpu:"钟会的母亲。《母夫人张氏传》:夫人张氏,字昌蒲,太原兹氏人,太傅定陵成侯之命妇也。", @@ -556,6 +560,207 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //管辂和葛玄 + lianhua:{ + audio:2, + init:function(player,skill){ + if(!player.storage[skill]) player.storage[skill]={ + red:0,black:0, + } + }, + marktext:'丹', + intro:{ + name:'丹血', + markcount:function(storage){ + return storage.red+storage.black; + }, + content:function(storage){ + return '共有'+(storage.red+storage.black)+'个标记'; + }, + }, + trigger:{global:'damage'}, + forced:true, + filter:function(event,player){ + return event.player!=player&&_status.currentPhase!=player; + }, + content:function(){ + player.storage.lianhua[player.getFriends().contains(trigger.player)?'red':'black']++; + player.markSkill('lianhua'); + }, + group:'lianhua_harmonia', + subSkill:{ + harmonia:{ + forced:true, + audio:'lianhua', + sub:true, + trigger:{player:'phaseBegin'}, + forced:true, + content:function(){ + var cards=[]; + var cards2=[]; + var skill=''; + var red=player.storage.lianhua.red; + var black=player.storage.lianhua.black; + player.storage.lianhua={red:0,black:0}; + player.unmarkSkill('lianhua'); + if(red+black<4){ + cards=['tao']; + skill='reyingzi'; + } + else if(red>black){ + cards=['wuzhong']; + skill='reguanxing'; + } + else if(red0) return 1 + return -5/(target.countCards('h')+1); + }, + }, + }, + }, + busuan_angelbeats:{ + trigger:{player:'drawBefore'}, + forced:true, + filter:function(event,player){ + return event.getParent().name=='phaseDraw'; + }, + onremove:true, + content:function(){ + trigger.cancel(); + 'step 0' + var list=player.storage['busuan_angelbeats']; + var cards=[]; + for(var i=0;i0; @@ -6452,7 +6664,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, autodelay:true, content:function(){ - trigger.targets.add(player); + trigger.getParent().targets.add(player); trigger.player.line(player,'green'); } }, @@ -6642,10 +6854,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, qizhi:{ audio:2, - trigger:{player:'useCard'}, + trigger:{ + player:'useCardToPlayered' + }, direct:true, filter:function(event,player){ if(!event.targets) return false; + if(event.getParent().triggeredTargets3.length>1) return false; if(_status.currentPhase!=player) return false; var type=get.type(event.card,'trick'); if(type!='basic'&&type!='trick') return false; @@ -6995,9 +7210,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, zhenwei:{ audio:2, - trigger:{global:'useCardToBefore'}, + trigger:{ + global:'useCardToTarget' + }, direct:true, - priority:5, filter:function(event,player){ if(player==event.target||player==event.player) return false; if(!player.countCards('he')) return false; @@ -7060,12 +7276,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "step 2" if(result.control=='转移'){ player.draw(); - trigger.target=player; - trigger.targets.length=0; - trigger.targets.push(player); + trigger.getParent().targets.push(player); trigger.untrigger(); - trigger.trigger('useCardToBefore'); - trigger.trigger(trigger.card.name+'Before'); trigger.player.line(player); } else{ @@ -7081,7 +7293,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.player.markSkill('zhenwei2'); event.trigger("addCardToStorage"); } - trigger.cancel(); + trigger.getParent().excluded.add(trigger.target); trigger.player.addSkill('zhenwei2'); } game.delay(); @@ -8927,8 +9139,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, fengpo:{ audio:2, - trigger:{player:['shaBegin','juedouBegin']}, + trigger:{ + player:'useCardToPlayered', + }, filter:function(event,player){ + if(!['sha','juedou'].contains(event.card.name)) return false; if(player.hasSkill('fengpo3')) return false; return player.isPhaseUsing()&&event.target&&event.targets&&event.targets.length==1; }, @@ -8945,10 +9160,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.draw(nd); } else{ - if(typeof trigger.extraDamage!='number'){ - trigger.extraDamage=0; + var trigger2=trigger.getParent(); + if(typeof trigger2.extraDamage!='number'){ + trigger2.extraDamage=0; } - trigger.extraDamage+=nd; + trigger2.extraDamage+=nd; } } } @@ -9320,17 +9536,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, danlao:{ - priority:9, audio:2, filter:function(event,player){ - return event.player!=player&&!event.excluded.contains(player)&&get.type(event.card)=='trick'&&event.targets&&event.targets.length>1&&event.targets.contains(player); + return event.player!=player&&get.type(event.card)=='trick'&&event.targets&&event.targets.length>1; }, check:function(event,player){ return get.tag(event.card,'multineg')||get.effect(player,event.card,event.player,player)<=0; }, - trigger:{global:'useCard'}, + trigger:{target:'useCardToTargeted'}, content:function(){ - trigger.excluded.add(player); + trigger.getParent().excluded.add(player); player.draw(); }, ai:{ @@ -9934,14 +10149,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, kaikang:{ audio:2, - trigger:{global:'shaBegin'}, + trigger:{global:'useCardToTargeted'}, filter:function(event,player){ - return get.distance(player,event.target)<=1; + return event.card.name=='sha'&&get.distance(player,event.target)<=1; }, check:function(event,player){ return get.attitude(player,event.target)>=0; }, - priority:7, content:function(){ "step 0" player.draw(); @@ -10182,7 +10396,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, moukui:{ - trigger:{player:'shaBegin'}, + trigger:{player:'useCardToPlayered'}, direct:true, audio:2, content:function(){ @@ -11852,7 +12066,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ logTarget:'source', prompt2:'每当你发动“龙胆”使用或打出一张手牌时,你可以立即获得对方的一张手牌。', content:function(){ - player.gainPlayerCard(trigger.target,'h',true); + player.gainPlayerCard(trigger.source,'h',true); } }, lihun:{ @@ -11987,7 +12201,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, tianming:{ audio:2, - trigger:{target:'shaBegin'}, + trigger:{target:'useCardToTargeted'}, check:function(event,player){ var cards=player.getCards('h'); if(cards.length<=2){ @@ -11997,6 +12211,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } return true; }, + filter:function(event,player){ + return event.card.name=='sha'; + }, content:function(){ "step 0" player.chooseToDiscard(2,true,'he'); @@ -12432,7 +12649,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jianggan:"蒋干", wenyang:'文鸯', diy_wenyang:'文鸯', + guanlu:'管辂', + gexuan:'葛玄', + tuiyan:'推演', + tuiyan_info:'出牌阶段开始时,你可以观看牌堆顶的两张牌。', + busuan:'卜算', + busuan_info:'出牌阶段限一次,你可以选择一名其他角色,然后选择至多两张不同的卡牌名称(限基本牌或锦囊牌)。该角色下次摸牌阶段摸牌时,改为从牌堆或弃牌堆中获得你选择的牌。', + busuan_angelbeats:'卜算', + mingjie:'命戒', + mingjie_info:'结束阶段,你可以摸一张牌,若此牌为红色,你可以重复此流程直到摸到黑色牌或摸到第三张牌。当你以此法摸到黑色牌时,你失去1点体力。', + lianhua:'炼化', + lianhua_info:'你的回合外,每当有其他角色受到伤害后,你获得一个“丹血”标记 (该角色与你阵营一致为红色,不一致为黑色,此颜色对玩家不可见)直到你的准备阶段开始。准备阶段,根据你获得的“丹血”标记的数量和颜色,你获得相应的游戏牌以及获得相应技能直到回合结束。3枚或以下:“英姿”和【桃】;超过3枚且红色“丹血”较多:“观星”和【无中生有】;超过3枚且黑色“丹血”较多:“直言”和【顺手牵羊】;超过3枚且红色和黑色一样多:【杀】、【决斗】和“攻心”。', + zhafu:'札符', + zhafu_info:' 限定技,出牌阶段,你可以选择一名其他角色。该角色的下一个弃牌阶段开始时,其选择保留一张手牌,然后将其余的手牌交给你。', xinlvli:'膂力', xinlvli_info:'每回合限一次,当你造成伤害后,你可选择:1,若你的体力值大于你的手牌数,你摸X张牌;2,若你的手牌数大于你的体力值且你已受伤,你回复X点体力(X为你的手牌数与体力值之差)。', lvli:'膂力', @@ -12633,7 +12863,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ bingzheng:'秉正', bingzheng_info:'出牌阶段结束时,你可以令手牌数不等于体力值的一名角色弃置一张手牌或摸一张牌。然后若其手牌数等于体力值,你摸一张牌,且可以交给该角色一张牌', sheyan:'舍宴', - sheyan_info:'当你成为一张普通锦囊牌的目标时(借刀杀人等带有指向目标的锦囊除外),你可以为此牌增加一个目标或减少一个目标(目标数至少为一)', + sheyan_info:'当你成为一张普通锦囊牌的目标时(借刀杀人等带有指向目标的锦囊除外),你可以为此牌增加一个目标或令其对其中一个目标无效。(有效目标数至少为一)', fuman:'抚蛮', fuman2:'抚蛮', fuman_info:'出牌阶段,你可以将一张【杀】交给一名本回合未获得过“抚蛮”牌的其他角色,然后其于下个回合结束之前使用“抚蛮”牌时,你摸一张牌', diff --git a/character/standard.js b/character/standard.js index c0e4daed4..09720e035 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1426,10 +1426,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, tieji:{ audio:2, - trigger:{player:'shaBegin'}, + trigger:{player:'useCardToPlayered'}, check:function(event,player){ return get.attitude(player,event.target)<=0; }, + filter:function(event,player){ + return event.card.name=='sha'; + }, logTarget:'target', content:function(){ "step 0" @@ -1444,7 +1447,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); "step 1" if(result.bool){ - trigger.directHit=true; + trigger.getParent().directHit.add(trigger.target); } } }, @@ -1829,10 +1832,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liuli:{ audio:2, audioname:['re_daqiao','daxiaoqiao'], - trigger:{target:'shaBefore'}, + trigger:{target:'useCardToTarget'}, direct:true, - priority:5, filter:function(event,player){ + if(event.card.name!='sha') return false; if(player.countCards('he')==0) return false; return game.hasPlayer(function(current){ return get.distance(player,current,'attack')<=1&¤t!=event.player&& @@ -1846,6 +1849,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filterCard:lib.filter.cardDiscardable, filterTarget:function(card,player,target){ var trigger=_status.event.getTrigger(); + if(trigger.targets.contains(target)) return false; if(get.distance(player,target,'attack')<=1&& target!=trigger.player){ if(player.canUse(trigger.card,target)) return true; @@ -1875,24 +1879,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); "step 1" if(result.bool){ - player.discard(result.cards); var target=result.targets[0]; player.logSkill(event.name,target); - trigger.target=target; + player.discard(result.cards); var evt=trigger.getParent(); - if(evt&&evt.targets&&evt.num){ - trigger.targets[evt.num]=target; - evt.targets[evt.num]=target; - } + evt.targets.remove(player); + evt.targets.push(target); } - else{ - event.finish(); - } - "step 2" - trigger.untrigger(); - trigger.trigger('useCardToBefore'); - trigger.trigger('shaBefore'); - game.delay(); }, ai:{ effect:{ diff --git a/character/xinghuoliaoyuan.js b/character/xinghuoliaoyuan.js index 79103f7fb..296b49134 100755 --- a/character/xinghuoliaoyuan.js +++ b/character/xinghuoliaoyuan.js @@ -1036,10 +1036,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ usable:1, audio:2, trigger:{ - player:"useCard", + 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; @@ -2253,11 +2254,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "xinfu_zhennan":{ audio:2, trigger:{ - global:"useCard", + target:"useCardToTargeted", }, filter:function (event,player){ - if(event.card.name!='nanman') return false; - return event.targets.contains(player); + return event.card.name=='nanman'; }, direct:true, content:function (){ @@ -2861,11 +2861,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, audio:2, trigger:{ - player:"useCard", + player:"useCardToPlayered", }, frequent:true, filter:function (event,player){ if(player!=_status.currentPhase) return false; + if(event.getParent().triggeredTargets>1) return false; if(get.type(event.card)=='equip'&&get.subtype(event.card)!='equip1') return false; if(event.targets.contains(player)) return true; return false; @@ -3778,11 +3779,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "xinfu_tushe":{ audio:2, trigger:{ - player:"useCard", + player:"useCardToPlayered", }, frequent:true, filter:function (event,player){ if(get.type(event.card)=='equip') return false; + if(event.getParent().triggeredTargets>1) return false; return event.targets.length>0&&!player.countCards('h',{type:'basic',}); }, content:function (){ diff --git a/character/yijiang.js b/character/yijiang.js index b531ce526..6e859161b 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -195,7 +195,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xindanshou:{ audio:'danshou', trigger:{ - global:['useCard','phaseEnd','phaseBefore'] + global:['phaseEnd','phaseBefore'], + player:'useCardToTargeted', }, forced:true, popup:false, @@ -251,7 +252,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ group:['xinbenxi_summer','xinbenxi_damage'], audio:'benxi', trigger:{ - player:'useCard', + player:'useCard2', }, forced:true, mod:{ @@ -463,7 +464,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var pe=player.countCards('h'); var te=target.countCards('h'); if(s.contains('大于')&&pe>te) return false; - if((s.contains('等于')||te==0)&&pe==te) return false; + if((s.contains('等于')||target.countCards('he')==0)&&pe==te) return false; if(s.contains('小于')&&pe2&&!player.hasSha(); + }; + } + else event._result={bool:true}; + 'step 1' + if(!result.bool){ + event.finish(); + return; + } + player.loseHp(); + 'step 2' + var card=get.cardPile(function(card){ + return card.name=='sha'; + }); + if(card) player.gain(card,'gain2'); + 'step 3' + game.updateRoundNumber(); + }, + }, + }, }, xinjunxing:{ inherit:'junxing', @@ -1109,6 +1135,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return _status.event.player.hasSkill('xincaishi_0')?[1,2]:[1,1]; }, check:function(){return 1}, + discard:false, + lose:false, content:function(){ 'step 0' event.suits=[]; @@ -1773,12 +1801,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ subSkill:{ use:{ audio:"zhuandui", - trigger:{player:'shaBegin'}, + trigger:{player:'useCardToPlayered'}, check:function(event,player){ return get.attitude(player,event.target)<0; }, filter:function(event,player){ - return player.canCompare(event.target); + return event.card.name=='sha'&&player.canCompare(event.target); }, logTarget:'target', content:function(){ @@ -1786,18 +1814,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.chooseToCompare(trigger.target); 'step 1' if(result.bool){ - trigger.directHit=true; + trigger.getParent().directHit.add(trigger.target); } } }, respond:{ audio:"zhuandui", - trigger:{target:'shaBegin'}, + trigger:{target:'useCardToTargeted'}, check:function(event,player){ return get.effect(player,event.card,event.player,player)<0; }, filter:function(event,player){ - return player.canCompare(event.player); + return event.card.name=='sha'&&player.canCompare(event.player); }, logTarget:'player', content:function(){ @@ -1805,7 +1833,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.chooseToCompare(trigger.player); 'step 1' if(result.bool){ - trigger.cancel(); + trigger.getParent().excluded.add(player); } } } @@ -1862,7 +1890,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, jianzheng:{ audio:2, - trigger:{global:'useCard'}, + trigger:{global:'useCardToPlayer'}, filter:function(event,player){ if(!player.countCards('h')) return false; return event.player!=player&&event.card.name=='sha'&&!event.targets.contains(player)&& @@ -1905,8 +1933,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "step 1" if(result.bool&&result.cards){ event.card=result.cards[0]; - trigger.targets.length=0; - trigger.untrigger(); + trigger.getParent().targets=[]; } else{ event.finish(); @@ -1928,13 +1955,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(event.card){ event.card.fix(); ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild); + game.updateRoundNumber(); } "step 5" if(get.color(trigger.card)!='black'){ - trigger.targets.push(player); + trigger.getParent().targets.push(player); trigger.player.line(player); game.delay(); - trigger.trigger('useCard'); } } }, @@ -2230,7 +2257,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, bizhuan:{ audio:2, - trigger:{player:'useCardAfter',target:'useCardToBegin'}, + trigger:{player:'useCardAfter',target:'useCardToTargeted'}, filter:function(event,player){ if(event.name!='useCard'&&event.player==event.target) return false; if(player.storage.bizhuan.length>=4) return false; @@ -2934,7 +2961,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, red2:{}, red:{ - trigger:{player:'useCard'}, + trigger:{player:'useCard2'}, direct:true, mark:true, onremove:true, @@ -5108,7 +5135,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, benxi:{ audio:2, - trigger:{player:'useCard'}, + trigger:{player:'useCard2'}, forced:true, filter:function(event,player){ return player.isPhaseUsing(); @@ -6262,8 +6289,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, zuoding:{ - trigger:{global:'useCard'}, + trigger:{global:'useCardToPlayered'}, filter:function(event,player){ + if(event.getParent().triggeredTargets.length>1) return false; return !player.hasSkill('zuoding2')&&get.suit(event.card)=='spade'&& _status.currentPhase==event.player&&event.targets&&event.targets.length&& event.player!=player; @@ -6836,20 +6864,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, xinpojun:{ - trigger:{player:'shaBegin'}, + trigger:{player:'useCardToPlayered'}, direct:true, filter:function(event,player){ - return player.isPhaseUsing()&&event.target.hp>0&&event.target.countCards('he')>0; + return event.card.name=='sha'&&player.isPhaseUsing()&&event.target.hp>0&&event.target.countCards('he')>0; }, audio:2, - logTarget:'target', content:function(){ 'step 0' player.choosePlayerCard(trigger.target,'he', - [1,Math.min(trigger.target.countCards('he'),trigger.target.hp)],get.prompt('pojun',trigger.target)); + [1,Math.min(trigger.target.countCards('he'),trigger.target.hp)],get.prompt('xinpojun',trigger.target)); 'step 1' if(result.bool&&result.links.length){ - player.logSkill('xinpojun'); + player.logSkill('xinpojun',trigger.target); if(trigger.target.storage.xinpojun2){ trigger.target.storage.xinpojun2=trigger.target.storage.xinpojun2.concat(result.links); } @@ -7472,7 +7499,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, qiaoshui3:{ - trigger:{player:'useCard'}, + trigger:{player:'useCard2'}, direct:true, filter:function(event,player){ var type=get.type(event.card); @@ -7831,7 +7858,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, chanhui:{ audio:2, - trigger:{player:'useCard'}, + trigger:{player:'useCardToPlayer'}, filter:function(event,player){ if(_status.currentPhase!=player) return false; if(player.hasSkill('chanhui2')) return false; @@ -7873,13 +7900,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(result.bool){ player.gain(result.cards,event.target,'giveAuto'); trigger.untrigger(); - trigger.player=event.target; - trigger.trigger('useCard'); + trigger.getParent().player=event.target; game.log(event.target,'成为了',trigger.card,'的使用者'); } else{ game.log(event.target,'成为了',trigger.card,'的额外目标'); - trigger.targets.push(event.target); + trigger.getParent().targets.push(event.target); } } }, @@ -8207,13 +8233,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, qiuyuan:{ audio:2, - trigger:{target:'shaBefore'}, + trigger:{target:'useCardToTarget'}, direct:true, - priority:11, + filter:function(event,player){ + return event.card.name=='sha'; + }, content:function(){ "step 0" player.chooseTarget(get.prompt2('qiuyuan'),function(card,player,target){ - return target!=player&&_status.event.getTrigger().player.canUse('sha',target,false); + return target!=player&&!_status.event.getTrigger().targets.contains(target)&&_status.event.getTrigger().player.canUse('sha',target,false); }).set('ai',function(target){ var trigger=_status.event.getTrigger(); var player=_status.event.player; @@ -8239,7 +8267,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ game.delay(); } else{ - trigger.targets.push(event.target); + trigger.getParent().targets.push(event.target); game.log(event.target,'成为了额外目标'); } }, @@ -8762,7 +8790,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhenlie:{ audio:2, filter:function(event,player){ - return event.player!=player&&event.targets&&event.targets.contains(player)&&(!event.excluded||!event.excluded.contains(player))&&event.card&&(event.card.name=='sha'||get.type(event.card)=='trick'); + return event.player!=player&&event.card&&(event.card.name=='sha'||get.type(event.card)=='trick'); }, logTarget:'player', check:function(event,player){ @@ -8787,13 +8815,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } return false; }, - priority:10, - trigger:{global:'useCard'}, + trigger:{target:'useCardToTargeted'}, content:function(){ "step 0" player.loseHp(); "step 1" - trigger.excluded.add(player); + trigger.getParent().excluded.add(player); "step 2" if(trigger.player.countCards('he')){ player.discardPlayerCard(trigger.player,'he',true); @@ -9017,13 +9044,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ check:function(){return false;}, content:function(){ trigger.cancel(); - var ex=0; - if(trigger.card&&trigger.card.name=='sha'){ - if(player.hasSkill('jiu')) ex++; - if(player.hasSkill('luoyi2')) ex++; - if(player.hasSkill('reluoyi2')) ex++; - } - trigger.player.loseHp(trigger.num+ex); + trigger.player.loseHp(trigger.num); }, ai:{ jueqing:true @@ -10804,7 +10825,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ kuangbi:'匡弼', kuangbi_info:'出牌阶段限一次,你可以选择一名有牌的其他角色,该角色将其一至三张牌置于你的武将牌上。若如此做,你的下准备阶段,你获得武将牌上的所有牌,然后其摸等量的牌', xinzhige:'止戈', - xinzhige_info:'出牌阶段限一次,你可以令一名其他角色交给你一张【杀】或武器牌,否则其视为对你指定的另一名其攻击范围内的角色使用了一张【杀】。', + xinzhige_info:'出牌阶段限一次,你可以令一名攻击范围内含有你的其他角色交给你一张【杀】或武器牌,否则其视为对你指定的另一名其攻击范围内的角色使用了一张【杀】。', zhige:'止戈', zhige_info:'出牌阶段限一次,若你的手牌数大于你的体力值,你可以选择攻击范围内含有你的一名其他角色,除非该角色使用一张【杀】,否则其将其装备区里的一张牌交给你', xinzongzuo:'宗祚', @@ -10854,7 +10875,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dangxian:'当先', dangxian_info:'锁定技,准备阶段,你执行一个额外的出牌阶段', xindangxian:'当先', - xindangxian_info:'锁定技,准备阶段,你失去1点体力并从牌堆/弃牌堆中获得一张【杀】,然后执行一个额外的出牌阶段', + xindangxian_info:'锁定技,准备阶段,你执行一个额外的出牌阶段。此阶段开始时,你失去1点体力并从牌堆/弃牌堆中获得一张【杀】(若你已发动过【伏枥】,则可以不发动此效果)。', longyin:'龙吟', longyin_info:'每当一名角色在其出牌阶段使用【杀】时,你可弃置一张牌令此【杀】不计入出牌阶段使用次数,若此【杀】为红色,你摸一张牌', zhongyong:'忠勇', diff --git a/game/asset.js b/game/asset.js index 0a785d015..0176cf45a 100644 --- a/game/asset.js +++ b/game/asset.js @@ -2279,7 +2279,17 @@ window.noname_asset_list=[ 'image/character/ol_yujin.jpg', 'image/character/ol_zhangrang.jpg', 'image/character/ol_zhuran.jpg', - + 'image/character/ol_liuyu.jpg',' + 'image/character/ol_wuyi.jpg', + 'image/character/guanlu.jpg', + 'image/character/gexuan.jpg', + 'image/character/re_huangzhong.jpg', + 'image/character/re_pangde.jpg', + 'image/character/re_weiyan.jpg', + 'image/character/re_xiahouyuan.jpg', + 'image/character/re_xiaoqiao.jpg', + 'image/character/re_xuhuang.jpg', + 'image/character/baiwuchang.jpg', 'image/character/baosanniang.jpg', 'image/character/beimihu.jpg', diff --git a/game/game.js b/game/game.js index 39f881a36..6d53a8a0d 100644 --- a/game/game.js +++ b/game/game.js @@ -9497,6 +9497,9 @@ }, element:{ content:{ + emptyEvent:function(){ + event.trigger(event.name); + }, chooseUseTarget:function(){ 'step 0' if(cards&&get.itemtype(card)!='card'){ @@ -13243,6 +13246,11 @@ event.oncard(event.card,event.player); } event.excluded=[]; + event.directHit=[]; + event.trigger('useCard1'); + "step 1" + event.trigger('useCard2'); + "step 2" event.trigger('useCard'); event._oncancel=function(){ game.broadcastAll(function(id){ @@ -13310,7 +13318,7 @@ } } } - "step 1" + "step 3" var info=get.info(card); if(info.contentBefore){ var next=game.createEvent(card.name+'ContentBefore'); @@ -13332,23 +13340,97 @@ next.type='precard'; if(event.forceDie) next.forceDie=true; } - "step 2" - var info=get.info(card); - if(num==0&&targets.length>1){ - if(!info.multitarget){ - if(!event.fixedSeat){ - targets.sortBySeat(player); + "step 4" + event.sortTarget=function(animate){ + var info=get.info(card); + if(num==0&&targets.length>1){ + if(!info.multitarget){ + if(!event.fixedSeat){ + targets.sortBySeat(player); + } + if(animate) for(var i=0;i1){ + event.sortTarget(true); + } + var info=get.info(card); if(targets[num]&&targets[num].isDead()) return; if(targets[num]&&targets[num].isOut()) return; if(targets[num]&&targets[num].removed) return; @@ -13376,6 +13458,7 @@ event.targetDelay=false; } next.target=targets[num]; + if(next.target&&event.directHit.contains(next.target)) next.directHit=true; if(next.target&&!info.multitarget){ if(num==0&&targets.length>1){ // var ttt=next.target; @@ -13401,12 +13484,12 @@ game.delayx(0.5); } } - "step 3" + "step 10" if(!get.info(event.card).multitarget&&num