diff --git a/card/extra.js b/card/extra.js index 0987284ea..45e9753b7 100644 --- a/card/extra.js +++ b/card/extra.js @@ -959,8 +959,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ muniu_skill:'木牛', muniu_skill7:'木牛流马', muniu_skill_bg:'辎', - muniu_info:'出牌阶段限一次,你可以将一张手牌扣置于你装备区里的【木牛流马】下,若如此做,你可以将此装备移动到一名其他角色的装备区里;你可以将此装备牌下的牌如手牌般使用或打出。', - muniu_skill_info:'出牌阶段限一次,你可以将一张手牌扣置于你装备区里的【木牛流马】下,若如此做,你可以将此装备移动到一名其他角色的装备区里;你可以将此装备牌下的牌如手牌般使用或打出。', + muniu_info:'①出牌阶段限一次,你可以将一张手牌扣置于你装备区里的【木牛流马】下,然后你可以将【木牛流马】移动到一名其他角色的装备区里。②你可以将【木牛流马】下的牌如手牌般使用或打出。③当你失去装备区的【木牛流马】后,你刷新〖木牛流马①〗的使用次数限制。若此牌不是因置入其他角色的装备区而失去的,则你将【木牛流马】下的所有牌置入弃牌堆。', + muniu_skill_info:'将一张手牌扣置于你装备区里的【木牛流马】下,然后可以将此装备移动到一名其他角色的装备区里。', }, list:[ ["heart",4,"sha","fire"], diff --git a/card/standard.js b/card/standard.js index 47fc47a32..e4826567f 100644 --- a/card/standard.js +++ b/card/standard.js @@ -83,6 +83,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ global:'icesha_skill', range:{attack:1}, selectTarget:1, + cardPrompt:function(card){ + if(card.nature=='stab') return '出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,且在此之后需弃置一张手牌(没有则不弃)。否则你对其造成1点伤害。'; + if(lib.linked.contains(card.nature)) return '出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,否则你对其造成1点'+get.translation(card.nature)+'属性伤害。'; + return '出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,否则你对其造成1点伤害。'; + }, yingbian_prompt:function(card){ var str=''; if(get.cardtag(card,'yingbian_hit')){ @@ -211,6 +216,17 @@ game.import('card',function(lib,game,ui,get,ai,_status){ target.damage(get.nature(event.card),event.baseDamage+event.extraDamage); event.result={bool:true} event.trigger('shaDamage'); + event.finish(); + } + else{ + event.trigger('shaMiss'); + } + "step 6" + if((!result||!result.bool)&&!event.unhurt){ + target.damage(get.nature(event.card),event.baseDamage+event.extraDamage); + event.result={bool:true} + event.trigger('shaDamage'); + event.finish(); } else{ event.result={bool:false} @@ -1856,16 +1872,25 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, content:function(){ if(!_status.qinglong_guozhan) _status.qinglong_guozhan=[]; - _status.qinglong_guozhan=[]; _status.qinglong_guozhan.add(trigger); game.countPlayer2(function(current){ current.addTempSkill('qinglong_guozhan_mingzhi'); }); + game.broadcast(function(list){ + _status.qinglong_guozhan=list; + },_status.qinglong_guozhan.map(function(i){ + return {targets:i.targets}; + })) var next=game.createEvent('qinglong_guozhan'); event.next.remove(next); trigger.after.add(next); next.setContent(function(){ _status.qinglong_guozhan.remove(event.parent); + game.broadcast(function(list){ + _status.qinglong_guozhan=list; + },_status.qinglong_guozhan.map(function(i){ + return {targets:i.targets}; + })); }); } }, @@ -2775,7 +2800,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ hanbing_skill_info:'当你使用杀造成伤害时,你可以防止此伤害,改为依次弃置目标角色的两张牌。', renwang_info:'锁定技,黑色的杀对你无效', renwang_skill_info:'锁定技,黑色的杀对你无效', - sha_info:'出牌阶段,对攻击范围内的一名角色使用,令其使用一张【闪】,否则受到一点伤害。', + sha_info:'出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,否则你对其造成1点伤害。', shan_info:'抵消一张【杀】', tao_info:'出牌阶段,对自己使用,回复一点体力。', bagua_info:'当你需要使用或打出一张【闪】时,你可以进行一次判定,若判定结果为红色,视为你使用或打出了一张【闪】。', diff --git a/card/yongjian.js b/card/yongjian.js index a8d5f32fb..83e65e3c5 100644 --- a/card/yongjian.js +++ b/card/yongjian.js @@ -333,7 +333,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ direct:true, equipSkill:true, filter:function(event,player){ - return event.card&&event.card.name=='sha'&&event.getParent().name=='sha'&&player.countCards('h')>0; + return event.card&&event.card.name=='sha'&&event.getParent().name=='sha'&&player.isDamaged()&&player.countCards('h')>0; }, content:function(){ 'step 0' @@ -649,7 +649,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ tuixinzhifu:'推心置腹', tuixinzhifu_info:'出牌阶段,对一名距离为1的其他角色使用。你获得其区域内的至多两张牌,然后交给其等量的牌。', yitianjian:'倚天剑', - yitianjian_info:'当你因执行【杀】的效果而造成伤害后,你可弃置一张手牌,然后回复1点体力。', + yitianjian_info:'当你因执行【杀】的效果而造成伤害后,若你已受伤,则你可弃置一张手牌,然后回复1点体力。', qixingbaodao:'七星宝刀', qixingbaodao_info:'锁定技。当此牌进入你的装备区后,你弃置装备区和判定区内的所有其他牌。', duanjian:'断剑', @@ -727,7 +727,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ ['diamond',10,'tuixinzhifu'], ['diamond',11,'tao',null,['gifts']], ['diamond',12,'shan'], - ['diamond',13,'','stab'], + ['diamond',13,'sha','stab'], ], } }); diff --git a/character/diy.js b/character/diy.js index 64f6f5772..c1e00d365 100755 --- a/character/diy.js +++ b/character/diy.js @@ -906,9 +906,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var type=get.type(i); if((type=='basic'||type=='trick')) list.push([type,'',i]); if(i=='sha'){ - list.push([type,'',i,'fire']); - list.push([type,'',i,'thunder']); - list.push([type,'',i,'ice']); + for(var j of lib.inpile_nature) list.push([type,'',i,j]); } } if(list.length){ @@ -2394,9 +2392,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(event.filterCard({name:name,isCard:true},player,event)){ list.push([type,'',name]); if(name=='sha'){ - list.push([type,'',name,'fire']); - list.push([type,'',name,'thunder']); - list.push([type,'',name,'ice']); + for(var j of lib.inpile_nature) list.push([type,'',i,j]); } } } @@ -4000,9 +3996,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var type=get.type(i); if(type=='basic'||type=='trick') list.push([type,'',i]); if(i=='sha'){ - list.push([type,'',i,'fire']); - list.push([type,'',i,'thunder']); - list.push([type,'',i,'ice']); + for(var j of lib.inpile_nature) list.push([type,'',i,j]); } } player.chooseButton(['是否视为使用一张基本牌或普通锦囊牌?',[list,'vcard']]).set('filterButton',function(button){ @@ -7077,12 +7071,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var name=lib.inpile[i]; if(name=='du'||name=='shan') continue; if(name=='sha'){ - list.addArray([ - ['基本','','sha'], - ['基本','','sha','fire'], - ['基本','','sha','thunder'], - ['基本','','sha','ice'], - ]); + list.push(['基本','','sha']); + for(var j of lib.inpile_nature) list.push(['基本','',name,j]); } else if(get.type(name)=='basic'){ list.push(['基本','',name]); @@ -7343,9 +7333,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(name=='boss_mengpohuihun') continue; if(name=='sha'){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + for(var j of lib.inpile_nature) list.push(['基本','',name,j]); } else if(get.type(name)=='trick') list.push(['锦囊','',name]); else if(get.type(name)=='basic') list.push(['基本','',name]); @@ -9936,9 +9924,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.storage.junktaoluan.contains(name)) continue; if(name=='sha'){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + for(var j of lib.inpile_nature) list.push(['基本','',name,j]); } else if(get.type(name)=='trick') list.push(['锦囊','',name]); else if(get.type(name)=='basic') list.push(['基本','',name]); diff --git a/character/extra.js b/character/extra.js index 6a683dbbb..05f98df17 100755 --- a/character/extra.js +++ b/character/extra.js @@ -4005,9 +4005,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, forced:true, filter:function(event,player){ - if(player.isLinked()) return false; - if(event.name=='link') return true; - return (event.name!='phase'||game.phaseNumber==0); + if(event.name=='link') return player.isLinked(); + return (event.name!='phase'||game.phaseNumber==0)&&!player.isLinked(); }, content:function(){ if(trigger.name!='link') player.link(true); diff --git a/character/mobile.js b/character/mobile.js index 7155f0607..ed259177e 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -3467,23 +3467,42 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'damageBegin2'}, forced:true, filter:function(event,player){ - if(!event.card||get.color(event.card)=='none') return false; + if(!event.card||get.suit(event.card)=='none') return false; var all=player.getAllHistory('damage'); if(!all.length) return false; - return all[all.length-1].card&&get.color(all[all.length-1].card)==get.color(event.card); + return all[all.length-1].card&&get.suit(all[all.length-1].card)==get.suit(event.card); }, content:function(){ trigger.cancel(); }, + group:'mjmouzhi_mark', + intro:{content:'上次受到伤害的花色:$'}, ai:{ effect:{ target:function(card,player,target){ if(get.tag(card,'damage')){ - var color=get.color(card); + var color=get.suit(card); if(color=='none') return; var all=target.getAllHistory('damage'); if(!all.length||!all[all.length-1].card) return; - if(get.color(all[all.length-1].card)==color) return 'zerotarget'; + if(get.suit(all[all.length-1].card)==color) return 'zerotarget'; + } + }, + }, + }, + subSkill:{ + mark:{ + trigger:{player:'damage'}, + silent:true, + firstDo:true, + content:function(){ + if(!trigger.card||get.suit(trigger.card)=='none') player.unmarkSkill('mjmouzhi'); + else{ + player.markSkill('mjmouzhi'); + game.broadcastAll(function(player,suit){ + if(player.marks.mjmouzhi) player.marks.mjmouzhi.firstChild.innerHTML=get.translation(suit); + player.storage.mjmouzhi=suit; + },player,get.suit(trigger.card)) } }, }, @@ -6170,9 +6189,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var name=lib.inpile[i]; if(name=='sha'){ if(event.filterCard({name:name},player,event)) list.push(['基本','','sha']); - if(event.filterCard({name:name,nature:'fire'},player,event)) list.push(['基本','','sha','fire']); - if(event.filterCard({name:name,nature:'thunder'},player,event)) list.push(['基本','','sha','thunder']); - if((get.mode()!='guozhan'||_status.mode=='yingbian')&&event.filterCard({name:name,nature:'ice'},player,event)) list.push(['基本','','sha','ice']); + for(var j of lib.inpile_nature){ + if(event.filterCard({name:name,nature:j},player,event)) list.push(['基本','','sha',j]); + } } else if(get.type2(name)=='trick'&&event.filterCard({name:name},player,event)) list.push(['锦囊','',name]); else if(get.type(name)=='basic'&&event.filterCard({name:name},player,event)) list.push(['基本','',name]); @@ -10834,9 +10853,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var list=[]; if(event.filterCard({name:'sha'},player,event)){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } if(event.filterCard({name:'tao'},player,event)){ list.push(['基本','','tao']); @@ -11656,9 +11673,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var list=[]; if(event.filterCard({name:'sha'},player,event)){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } if(event.filterCard({name:'shan'},player,event)){ list.push(['基本','','shan']); @@ -13577,7 +13592,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mjchenshi_target:'陈势', mjchenshi_info:'当有角色使用【兵临城下】指定第一个目标后,其可交给你一张牌,并将牌堆的顶三张牌中所有不为【杀】的牌置入弃牌堆;当有角色成为【兵临城下】的目标后,其可交给你一张牌,然后将牌堆顶三张牌中所有的【杀】置入弃牌堆。', mjmouzhi:'谋识', - mjmouzhi_info:'锁定技,当你受到伤害时,若伤害渠道对应的牌和你上次受到的伤害颜色相同,则你防止此伤害。', + mjmouzhi_info:'锁定技,当你受到伤害时,若伤害渠道对应的牌和你上次受到的伤害花色相同,则你防止此伤害。', zhangzhongjing:'张机', jishi:'济世', jishi_info:'锁定技。①当你使用的牌结算完成后,若你未因此牌造成过伤害,则你将此牌对应的所有实体牌置于仁库中。②当有牌不因溢出而离开仁库时,你摸一张牌。', diff --git a/character/offline.js b/character/offline.js index 164ae290c..1fb30a806 100644 --- a/character/offline.js +++ b/character/offline.js @@ -90,8 +90,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ for(var i of lib.inpile){ if(i!='du'&&get.type(i)=='basic'&&event.filterCard({name:i,cards:hs},player,event)) vcards.push(['基本','',i]); if(i=='sha'){ - var list=['fire','thunder','ice']; - for(var j of list){ + for(var j of lib.inpile_nature){ if(event.filterCard({name:i,nature:j,cards:hs},player,event)) vcards.push(['基本','',i,j]); } } @@ -242,9 +241,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return player.canUse('sha',current); })){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + } + for(var i of lib.inpile_nature){ + if(lib.filter.cardUsable({name:'sha',nature:i},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){ + return player.canUse({name:'sha',nature:i},current); + })){ + list.push(['基本','','sha',i]); + } } if(lib.filter.cardUsable({name:'tao'},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){ return player.canUse('tao',current); diff --git a/character/rank.js b/character/rank.js index a1098a6e8..7d03e1afa 100644 --- a/character/rank.js +++ b/character/rank.js @@ -909,6 +909,8 @@ window.noname_character_rank={ 'sp_chendong', 'sp_zongyu', 'yangyan', + 'zuofen', + 're_kanze', ], bm:[ 'diy_xizhenxihong', @@ -1762,6 +1764,7 @@ window.noname_character_rank={ 'fuqian', 'yangyan', 'yangzhi', + 'zuofen', ], junk:[ 'sunshao', diff --git a/character/refresh.js b/character/refresh.js index 141d80355..4ca9bbd9b 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -2253,7 +2253,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var ai2=function(target){ var player=_status.event.player; if(get.attitude(player,target)<=0) return 0; - var list=[null,'fire','thunder','ice','juedou']; + var list=[null,'juedou'].concat(lib.inpile_nature); if(target.hasSkill('ayato_zenshen')) list.push('kami'); var num=Math.max.apply(Math,list.map(function(i){ if(i=='juedou') return target.getUseValue({name:'juedou',isCard:true},false); @@ -2293,7 +2293,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return target!=player&&target!=_status.event.target; },'选择'+get.translation(target)+'使用【杀】或【决斗】的目标',true).set('target',target).set('ai',function(target){ var evt=_status.event; - var list=[null,'fire','thunder','ice','juedou']; + var list=[null,'juedou'].concat(lib.inpile_nature); if(evt.target.hasSkill('ayato_zenshen')) list.push('kami') return Math.max.apply(Math,list.map(function(i){ var card={name:'sha',isCard:true}; @@ -2309,9 +2309,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.target2=target2; player.line(target2); game.log(player,'选择了',target2); - var list=[null,'fire','thunder','ice']; + var list=lib.inpile_nature.slice(0); + list.unshift(null); var vcards=[]; - if(target.hasSkill('ayato_zenshen')) list.push('kami'); + if(target.hasSkill('ayato_zenshen')) list.add('kami'); for(var i of list){ if(target.canUse({name:'sha',isCard:true,nature:i},target2,false)) vcards.push(['基本','','sha',i]); } @@ -2321,6 +2322,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ else event._result={index:1}; } else if(!target.countCards('h')){ + event.vcards=vcards; event._result={index:0}; } else{ @@ -5858,7 +5860,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(i=='shan'||i=='wuxie') continue; var type=get.type(i); if((type=='basic'||type=='trick')&&event.filterCard({name:i},player,event)) return true; - if(i=='sha'&&(event.filterCard({name:i,nature:'ice'},player,event)||event.filterCard({name:i,nature:'fire'},player,event)||event.filterCard({name:i,nature:'thunder'},player,event))) return true; + if(i=='sha'){ + for(var j of lib.inpile_nature){ + if(event.filterCard({name:i,nature:j},player,event)) return true; + } + } } return false; }, @@ -5870,9 +5876,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var type=get.type(i); if(type=='basic'||type=='trick') list.push([type,'',i]); if(i=='sha'){ - list.push([type,'',i,'fire']); - list.push([type,'',i,'thunder']); - list.push([type,'',i,'ice']); + for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } } return ui.create.dialog('蛊惑',[list,'vcard']); @@ -7959,9 +7963,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return player.canUse('sha',current); })){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + } + for(var i of lib.inpile_nature){ + if(lib.filter.cardUsable({name:'sha',nature:i},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){ + return player.canUse({name:'sha',nature:i},current); + })){ + list.push(['基本','','sha',i]); + } } if(lib.filter.cardUsable({name:'tao'},player,event.getParent('chooseToUse'))&&game.hasPlayer(function(current){ return player.canUse('tao',current); diff --git a/character/shenhua.js b/character/shenhua.js index 36db6b137..981e6a909 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -7038,9 +7038,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(name=='wuxie') continue; if(name=='sha'){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } else if(get.type(name)=='trick') list.push(['锦囊','',name]); else if(get.type(name)=='basic') list.push(['基本','',name]); diff --git a/character/sp.js b/character/sp.js index c0f5f993f..6476624b3 100755 --- a/character/sp.js +++ b/character/sp.js @@ -5,10 +5,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ sp:{ - sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang','sp_zhangliao','wolongfengchu','ol_xinxianying','panshu','huangzu','huangchengyan','gaogan','duxi','ol_dengzhi','ol_wangrong'], - sp_tongque:["liuxie","lingju","fuwan","sp_fuwan","sp_fuhuanghou","sp_jiben"], + sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","bianfuren"], + sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi'], + sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun"], + sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao"], + sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan'], + sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng"], + sp_liesi:['mizhu'], + sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao'], + sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang'], + sp_wanglang:['wanglang'], + sp_tongque:["sp_fuwan","sp_fuhuanghou","sp_jiben"], sp_zhongdan:["cuiyan","huangfusong"], - sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan","sp_mifangfushiren","bianfuren"], sp_guozhan2:["mateng","tianfeng","sp_dongzhuo","jiangfei","jiangqing","liqueguosi","lvfan","cuimao","jiling","zhangren","zongyu"], //sp_single:["niujin"], sp_others:["hanba","caiyang"], @@ -16,12 +24,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterFilter:{}, character:{ + zuofen:['female','jin',3,['zhaosong','lisi']], ol_wangrong:['female','qun',3,['olfengzi','oljizhan','olfusong']], ol_dengzhi:['male','shu',3,['olxiuhao','olsujian']], bianfuren:['female','wei',3,['fuwei','yuejian']], duxi:['male','wei',3,['quxi','bixiong']], gaogan:['male','qun',4,['juguan']], - sp_mifangfushiren:['male','shu',4,['mffengshi']], huangchengyan:['male','qun',3,['guanxu','yashi']], huangzu:['male','qun',4,['wangong']], panshu:['female','wu',3,['weiyi','jinzhi']], @@ -144,13 +152,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //kaisa:["male","western",4,["zhengfu"]], }, characterIntro:{ + zuofen:'左芬(约253年-300年4月23日),出土墓志作左棻,字兰芝,齐国临淄(今山东临淄)人,西晋诗人。少好学,善属文。为晋武帝贵人。今存诗、赋、颂、赞、诔等20余篇,大都为应诏而作,《离思赋》最著名。原有集,已失传。', duxi:'杜袭(生卒年不详),字子绪,颍川郡定陵县(今河南省襄城县)人。三国时期魏国重臣,东汉末年颍川“四大名士”之一,济阴太守杜根的孙子。建安初年,投奔司空曹操,历任西鄂县令、议郎、丞相军咨祭酒、魏王侍中、丞相长史、驸马都尉。魏文帝时期,出任督军粮御史、尚书,累封武平亭侯。魏明帝时期,担任大将军曹真和司马懿的军师,抵御蜀国进攻,拜太中大夫,受封平阳乡侯。卒于任上,获赠少府,谥号为定。', gaogan:'高干(?~206年),字元才,陈留郡圉县(今河南杞县圉镇)人。东汉末年并州割据将领,蜀郡太守高躬之子、大将军袁绍外甥。出身陈留高氏,才志弘邈,文武秀出。早年联合荀谌游说韩馥让出冀州牧。袁绍平定河北后,以为并州牧。官渡之战时,在西线配合作战。因曹操早有准备,没有实质进展。袁绍死后,袁谭、袁尚与曹操大战于黎阳郡时,联合郭援攻打平阳郡,为马腾为首关中将领所败,郭援为庞德所斩。袁尚败走中山郡后,出降于曹操,仍为并州刺史。建安十年,兴兵反曹,固守壶关,成功抵挡乐进进攻。得知曹操亲征后,留下别将守城,亲往匈奴呼厨泉求救,没有成功。引兵攻略河东郡,屡为钟繇、张既所败。建安十一年,投奔荆州刘表。途经上洛时,为上洛都尉捕斩之。', huangchengyan:'黄承彦,生卒年不详,汉末三国时期沔阳名士,诸葛亮岳父,黄月英之父。南郡大士蔡讽的女婿,与襄阳名士上层社会圈子:庞统(凤雏)、庞德公、司马徽、徐庶等人交好。《襄阳记》:黄承彦者,高爽开列,为沔阳名士,谓诸葛孔明曰:“闻君择妇,身有丑女,黄头黑色,而才堪配。”孔明许,即载送之。时人以为笑乐,乡里为之谚曰:“莫作孔明择妇,正得阿承丑女。”', panshu:'潘淑(?-252年),会稽句章(今浙江省宁波市)人,是吴大帝孙权的皇后,吴少帝孙亮的母亲。和孙权是中国历代帝后中年龄差距较大的一对。潘淑少时与姐姐俱没入织室,容媚有宠,拜为夫人,生有一子孙亮。赤乌十三年(250年),孙权立孙亮为皇太子,翌年(251年)立潘淑为皇后。神凤元年(252年)暴崩,合葬蒋陵。世称潘淑为江东绝色,有神女之称。', jiben:'吉本(?—218年),东汉末年太医令。建安二十三年春正月,时金祎自以世为汉臣,睹汉祚将移,谓可季兴,乃喟然发愤,遂与太医令本、少府耿纪、司直韦晃、本子邈、邈弟穆等结谋攻许,杀曹公长史王必,南援刘备。后必营,必与典农中郎将严匡讨斩之。在《三国演义》中,吉本在此为吉平或吉太,因字称平,故又唤作吉平。曾参与董承等人刺杀曹操的计划,并企图在为曹操治病时毒死曹操,但被曹操识破而遭处刑。之后其子吉邈和吉穆都参与了由耿纪和韦晃等人所发动的反叛曹操的行动,但都失败被杀。', zongyu:'宗预(?-264年),字德艳 ,荆州南阳郡安众县(今河南省南阳市)人。三国时期蜀汉官员、将领。曾随张飞入蜀助平益州,又受辟为丞相诸葛亮手下主簿,升任参军、右中郎将。诸葛亮逝世后,宗预受命出使孙吴,得到孙权的赞赏。迁后将军,出督永安,又升任征西大将军,并受封关内侯。公元258年(景耀元年),因病回成都,受任镇军大将军。蜀汉灭亡后,宗预随后主刘禅徙往洛阳,在中途病逝。宗预为人坦率耿直,多次出使孙吴并深得孙权的敬重,为吴、汉两国同盟的巩固作出了一定的贡献。', - mifangfushiren:'麋芳(生卒年不详),字子方,东海郡朐县(今江苏省连云港市)人。汉末三国时期蜀国将领,刘备糜夫人的兄弟。麋芳本为徐州牧陶谦部下,曾被曹操表为彭城相。后来辞官,随刘备从徐州辗转至邺城、汝南、新野、长坂坡、江夏等地,奔波多年。傅士仁(生卒年不详),字君义,幽州广阳郡(今北京市)人,刘备手下将领。受到刘备的重用,但被关羽轻慢。
刘备称汉中王时,糜芳为南郡太守,但受到关羽的轻慢。后来,因未完成供给军资的任务而被关羽责骂,心中不安。吕蒙袭取荆州时,将已经投降的傅士仁展示给糜芳,麋芳于是选择投降,导致关羽兵败被杀。此后,在吴国担任将军,并且为吴征伐。', mengda:'孟达(?-228),字子度,本字子敬,因刘备的叔父名叫刘子敬,为避讳而改字。扶风郡郿人,三国时期人物。本为刘璋属下,后降刘备。关羽围樊城、襄阳时因不发兵救关羽而触怒刘备,于是投奔曹魏。此后,劝降刘封,未果。在魏官至散骑常侍、建武将军,封平阳亭侯。此后又欲反曹魏而归蜀汉,事败而死。', wolongfengchu:'沙比武将,懒得复制粘贴,自己去看诸葛亮和庞统的介绍吧。', caoshuang:'曹爽(?-249年2月9日),字昭伯,沛国谯县(今安徽亳州市)人。三国时期魏国权臣,大司马曹真长子。曹爽体态肥胖,凭借宗室身份,出入宫廷,交好太子曹叡。魏明帝即位,起家员外散骑侍郎,累迁城门校尉、散骑常侍,转武卫将军。太和五年(231年),袭封邵陵侯。景初三年(239年),魏明帝曹叡病危,拜大将军、假黄钺,与司马懿并为托孤大臣。少帝曹芳即位,加侍中,改封武安侯。势倾四海,声震天下。任用私人,专权乱政,侵吞公产。伐蜀失败,虚耗国力。起居逾制,软禁郭太后。正始十年,太傅司马懿发动高平陵政变,掌握魏国大权。曹爽失去大将军职务,以谋反之罪处死,夷灭三族。', @@ -393,6 +401,205 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //左棻 + zhaosong:{ + trigger:{global:'phaseDrawAfter'}, + logTarget:'player', + filter:function(event,player){ + if(player==event.player||!event.player.countCards('h')) return false; + var types=['basic','trick','equip']; + for(var i of types){ + if(event.player.hasMark('zhaosong_'+i)) return false; + } + return true; + }, + prompt2:'令其交给你一张手牌,并根据类型获得对应的标记', + content:function(){ + 'step 0' + event.target=trigger.player; + event.target.chooseCard('h',true,get.translation(player)+'发动了【诏颂】;请交给其一张手牌'); + 'step 1' + if(result.bool){ + var card=result.cards[0]; + player.gain(card,target,'give'); + var type=get.type2(card,target); + if(lib.skill['zhaosong_'+type]){ + target.addSkill('zhaosong_'+type); + target.addMark('zhaosong_'+type); + } + } + }, + subSkill:{ + basic:{ + marktext:'颂', + intro:{ + name:'诏颂(颂)', + name2:'颂', + content:'当你使用【杀】选择唯一目标时,你可移去“颂”,并为此【杀】增加至多两个目标。然后若此【杀】造成的伤害小于2,你失去1点体力。', + }, + trigger:{player:'useCard2'}, + direct:true, + charlotte:true, + onremove:true, + filter:function(event,player){ + return player.hasMark('zhaosong_basic')&&event.card.name=='sha'&& + event.targets.length==1&&game.hasPlayer(function(current){ + return current!=player&¤t!=event.targets[0]&&lib.filter.targetEnabled2(event.card,player,current); + }); + }, + content:function(){ + 'step 0' + player.chooseTarget([1,2],'是否弃置“颂”标记?','为'+get.translation(trigger.card)+'增加至多两个目标',function(card,player,target){ + var evt=_status.event.getTrigger(); + return target!=player&&target!=evt.targets[0]&&lib.filter.targetEnabled2(evt.card,player,target); + }).set('ai',function(target){ + var evt=_status.event.getTrigger(); + return get.effect(target,evt.card,evt.player,evt.player); + }); + 'step 1' + if(result.bool){ + if(player!=event.player&&!player.isOnline()) game.delayx(); + player.addTempSkill('zhaosong_shaloss'); + } + else event.finish(); + 'step 2' + var targets=result.targets; + player.logSkill('zhaosong_basic',targets); + player.removeMark('zhaosong_basic',1); + player.removeSkill('zhaosong_basic'); + trigger.targets.addArray(targets); + trigger.zhaosong_basic=true; + }, + }, + shaloss:{ + trigger:{player:'useCardAfter'}, + forced:true, + charlotte:true, + filter:function(event,player){ + if(!event.zhaosong_basic) return false; + var num=0; + player.getHistory('sourceDamage',function(evt){ + if(evt.card==event.card) num+=evt.num; + }); + return num<2; + }, + content:function(){ + player.loseHp(); + }, + }, + trick:{ + marktext:'诔', + intro:{ + name:'诏颂(诔)', + name2:'诔', + content:'当你进入濒死状态时,你可移去“诔”并减1点体力上限,然后将体力回复至1点并摸一张牌。', + }, + trigger:{player:'dying'}, + prompt:'是否弃置“诔”标记?', + prompt2:'减1点体力上限,然后回复体力至1点并摸一张牌。', + charlotte:true, + onremove:true, + filter:function(event,player){ + return player.hasMark('zhaosong_trick')&&player.hp<1; + }, + check:function(event,player){ + if(player.maxHp<2||player.countCards('h',function(card){ + var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + if(mod2!='unchanged') return mod2; + var mod=game.checkMod(card,player,event.player,'unchanged','cardSavable',player); + if(mod!='unchanged') return mod; + var savable=get.info(card).savable; + if(typeof savable=='function') savable=savable(card,player,event.player); + return savable; + })>=1+event.num-event.player.hp) return false; + return true; + }, + content:function(){ + 'step 0' + player.removeMark('zhaosong_trick',1); + player.removeSkill('zhaosong_trick'); + player.loseMaxHp(); + 'step 1' + if(player.hp<1) player.recover(1-player.hp); + player.draw(); + }, + }, + equip:{ + marktext:'赋', + intro:{ + name:'诏颂(赋)', + name2:'赋', + content:'出牌阶段开始时,你可移去“赋”并弃置一名角色区域内的一张牌,然后可以令其摸一张牌。', + }, + trigger:{player:'phaseUseBegin'}, + direct:true, + charlotte:true, + onremove:true, + filter:function(event,player){ + return player.hasMark('zhaosong_equip')&&game.hasPlayer(function(current){ + return current.hasCard(function(card){ + return lib.filter.canBeDiscarded(card,player,current); + },'hej'); + }); + }, + content:function(){ + 'step 0' + player.chooseTarget('是否弃置“赋”标记?','弃置一名角色区域内的一张牌,然后可以令其摸一张牌',function(card,player,current){ + return current.hasCard(function(card){ + return lib.filter.canBeDiscarded(card,player,current); + },'hej'); + }).set('ai',function(target){ + var player=_status.event.player,att=get.attitude(player,target)>0?2:1; + return get.effect(target,{name:'guohe_copy'},player,player)*att; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('zhaosong_equip',target); + player.removeMark('zhaosong_equip',1); + player.removeSkill('zhaosong_equip'); + player.discardPlayerCard(target,true,'hej'); + } + else event.finish(); + 'step 2' + if(target.isIn()){ + player.chooseBool('是否令'+get.translation(target)+'摸一张牌?').set('ai',function(){ + var evt=_status.event.getParent(); + return get.attitude(evt.player,evt.target)>0; + }); + } + else event.finish(); + 'step 3' + if(result.bool) target.draw(); + }, + }, + }, + }, + lisi:{ + audio:2, + trigger:{player:'useCardAfter'}, + direct:true, + filter:function(event,player){ + if(player==_status.currentPhase||!event.cards.filterInD().length) return false; + var hs=player.countCards('h'); + return game.hasPlayer(function(current){ + return current!=player&¤t.countCards('h')<=hs; + }); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('lisi'),'将'+get.translation(trigger.cards.filterInD())+'交给一名手牌数不大于你的其他角色',function(card,player,target){ + return target!=player&&target.countCards('h')<=player.countCards('h'); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('lisi',target); + target.gain(trigger.cards.filterInD(),'gain2'); + } + }, + }, //王荣 olfengzi:{ audio:2, @@ -1189,63 +1396,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.cancel(); }, }, - //糜芳傅士仁 - mffengshi:{ - audio:2, - audioname:['sp_mifangfushiren'], - trigger:{ - player:'useCardToPlayered', - target:'useCardToTargeted', - }, - direct:true, - preHidden:true, - filter:function(event,player){ - if(event.player==event.target||event.targets.length!=1) return false; - if(player!=event.player&&!player.hasSkill('mffengshi')) return false; - return event.player.countCards('h')>event.target.countCards('h')&&event.target.countCards('he')>0; - }, - content:function(){ - 'step 0' - event.source=trigger.player; - event.target=(player==trigger.target?trigger.player:trigger.target); - var str; - if(player==trigger.player) str='弃置自己的和该角色'; - else str='令其弃置其与你的'; - var next=trigger.player.chooseBool('是否对'+get.translation(trigger.target)+'发动【锋势】?',str+'的各一张牌,然后令'+get.translation(trigger.card)+'的伤害+1').set('ai',function(){ - var player=_status.event.getParent().player; - var target=_status.event.getParent().target; - var viewer=_status.event.player; - if(viewer==player){ - if(get.attitude(viewer,target)>=0) return false; - if(player.countCards('he',(card)=>get.value(card,player)<5)) return true; - var card=_status.event.getTrigger().card; - if((get.tag(card,'damage')||target.countCards('he',(card)=>get.value(card,target)>6))&&player.countCards('he',(card)=>get.value(card,player)<7)) return true; - return false; - } - else{ - if(get.attitude(viewer,player)>=0) return false; - if(!get.tag(card,'damage')) return false; - if(viewer.countCards('he')>player.countCards('he')) return true; - if(viewer.countCards('he',(card)=>get.value(card,target)>6)) return false; - return true; - } - }); - if(player==next.player) next.setHiddenSkill('mffengshi'); - 'step 1' - if(result.bool){ - if(player==source) player.logSkill('mffengshi',target); - else{ - player.logSkill('mffengshi'); - source.line(player,'green'); - } - if(get.tag(trigger.card,'damage')) trigger.getParent().baseDamage++; - player.chooseToDiscard('he',true); - } - else event.finish(); - 'step 2' - if(target.countDiscardableCards(player,'he')>0) player.discardPlayerCard(target,'he',true); - }, - }, //黄承彦 guanxu:{ enable:'phaseUse', @@ -1488,9 +1638,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.type(i)=='basic'&&event.filterCard({name:i},player,event)){ list.push(['基本','',i]); if(i=='sha'){ - list.push(['基本','',i,'fire']); - list.push(['基本','',i,'thunder']); - list.push(['基本','',i,'ice']); + for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } } } @@ -2185,9 +2333,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(event.filterCard({name:name,isCard:true},player,event)){ list.push([type,'',name]); if(name=='sha'){ - list.push([type,'',name,'fire']); - list.push([type,'',name,'thunder']); - list.push([type,'',name,'ice']); + for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } } } @@ -11449,11 +11595,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{global:'useCardToTargeted'}, filter:function(event,player){ - return event.card.name=='sha'&&get.distance(player,event.target)<=1; + return event.card.name=='sha'&&get.distance(player,event.target)<=1&&event.target.isIn(); }, check:function(event,player){ return get.attitude(player,event.target)>=0; }, + logTarget:'target', content:function(){ "step 0" player.draw(); @@ -12431,13 +12578,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var cards=player.getCards('h'); target.gain(cards,player,'giveAuto'); event.num=cards.length; - game.delay(); "step 3" - target.chooseCard('选择还给'+get.translation(player)+'的牌',true,event.num); - game.delay(0.2); + var he=target.getCards('he'); + if(!he.length) event.finish(); + else if(he.length<=num) event._result={cards:he}; + else target.chooseCard('选择还给'+get.translation(player)+'的牌',true,event.num,'he'); "step 4" player.gain(result.cards,target,'giveAuto'); - game.delay(); }, audio:2, }, @@ -15264,7 +15411,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dongbai:'OL董白', zhaoxiang:'赵襄', heqi:'贺齐', - kanze:'阚泽', + kanze:'OL阚泽', dongyun:'董允', mazhong:'马忠', huangfusong:'皇甫嵩', @@ -15926,9 +16073,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ guanxu_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后你可将其中一张手牌与牌堆顶5张牌中的一张交换。若如此做,你弃置其手牌中3张花色相同的牌。', yashi:'雅士', yashi_info:'当你受到一次伤害后,你可选择一项:1. 令伤害来源的非锁定技无效直到其下个回合开始;2. 对一名其他角色发动〖观虚〗。', - sp_mifangfushiren:'糜芳傅士仁', - mffengshi:'锋势', - mffengshi_info:'当你使用牌指定唯一目标后,或成为其他角色使用牌的唯一目标后,若此牌使用者的手牌数大于此牌目标的手牌数,则此牌的使用者可令你弃置自己和对方的各一张牌,并令此牌的伤害值+1。', olwuniang:'武娘', olwuniang_info:'每回合限一次,当你于回合内使用的【杀】结算完成后,若此【杀】对应的目标数为1,则你可以令目标角色选择是否对你使用使用【杀】。你于其选择结算完成后摸一张牌,且本回合内使用【杀】的次数上限+1。', olxushen:'许身', @@ -15963,8 +16107,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ oljizhan_info:'摸牌阶段开始时,你可以放弃摸牌。你展示牌堆顶的一张牌,并猜测牌堆顶的下一张牌点数大于或小于此牌。若你猜对,你可继续重复此流程。然后你获得以此法展示的所有牌。', olfusong:'赋颂', olfusong_info:'当你死亡时,你可以选择一名体力上限大于你的其他角色。其选择获得〖吉占〗或〖丰姿〗。', + zuofen:'左棻', + zhaosong:'诏颂', + zhaosong_info:'一名其他角色的摸牌阶段结束时,若其没有因〖诏颂〗而获得的标记,则你可令其正面向上交给你一张手牌。根据此牌的类型,该角色获得对应的标记和效果:
锦囊牌:“诔”标记。当拥有者进入濒死状态时,其可弃置所有“诔”,减1点体力上限,将体力回复至1点并摸1张牌。
装备牌:“赋”标记。拥有者的出牌阶段开始时,其可弃置所有“赋”,弃置一名角色区域内的一张牌,然后可令其摸一张牌。
基本牌:“颂”标记。当使用者使用仅指定一个目标的【杀】时,其可弃置“颂”,为此【杀】增加至多两个目标。然后若此【杀】造成的伤害小于2,其失去1点体力。', + lisi:'离思', + lisi_info:'每当你于回合外使用牌的置入弃牌堆时,你可将其交给一名手牌数不大于你的其他角色。', - sp_default:"常规", + sp_tianji:'天极·皇室宗亲', + sp_sibi:'四弼·辅国文曲', + sp_tianzhu:'天柱·势冠一方', + sp_nvshi:'女史·留史巾帼', + sp_shaowei:'少微·能人异士', + sp_huben:'虎贲·勇冠三军', + sp_liesi:'列肆·豪商巨贾', + sp_default:"天同·同名异势", + sp_qifu:'灯愿·祈福武将', + sp_wanglang:'八萬·饶舌凤鹛', sp_tongque:"铜雀台", sp_zhongdan:"忠胆英杰", sp_guozhan:"国战", diff --git a/character/sp2.js b/character/sp2.js index 46f288974..0878e48fe 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + sp_mifangfushiren:['male','shu',4,['mffengshi']], + re_kanze:['male','wu',3,['xiashu','rekuanshi']], re_nanhualaoxian:['male','qun',4,['gongxiu','jinghe']], zhouyi:['female','wu',3,['zhukou','mengqing']], lvlingqi:['female','qun',4,['guowu','zhuangrong']], @@ -106,10 +108,51 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'], sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'], sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin'], - sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','liangxing','re_niujin','re_dongzhao','re_dongcheng','yangwan','heyan','re_panshu','zhanghu','dufuren','zhouyi','re_nanhualaoxian','lvlingqi'], + sp_binglin:['re_niujin',"sp_mifangfushiren"], + sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','liangxing','re_dongzhao','re_dongcheng','yangwan','heyan','re_panshu','zhanghu','dufuren','zhouyi','re_nanhualaoxian','lvlingqi','re_kanze'], } }, skill:{ + //阚泽 + rekuanshi:{ + audio:'kuanshi', + trigger:{player:'phaseJieshuBegin'}, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('rekuanshi')).set('animate',false).set('ai',function(target){ + var att=get.attitude(player,target); + if(target.hp<3) att/=1.5; + return att; + }); + 'step 1' + if(result.bool){ + player.logSkill('rekuanshi'); + player.addTempSkill('rekuanshi_effect',{player:'phaseBegin'}); + player.storage.rekuanshi_effect=result.targets[0]; + game.delayx(); + } + }, + subSkill:{ + effect:{ + audio:'kuanshi', + trigger:{global:'damageEnd'}, + forced:true, + charlotte:true, + logTarget:'player', + filter:function(event,player){ + if(event.player!=player.storage.rekuanshi_effect||event.player.isHealthy()) return false; + var history=event.player.getHistory('damage',null,event),num=0; + for(var i of history) num+=i.num; + return num>1&&(num-event.num)<2; + }, + content:function(){ + trigger.player.recover(); + player.removeSkill('rekuanshi_effect'); + } + }, + }, + }, //南华老仙 jinghe:{ enable:'phaseUse', @@ -10287,7 +10330,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player:"enterGame", }, forced:true, - filter:function(){ + filter:function(event){ return game.players.length>1&&(event.name!='phase'||game.phaseNumber==0); }, content:function(){ @@ -10426,6 +10469,63 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, + //糜芳傅士仁 + mffengshi:{ + audio:2, + audioname:['sp_mifangfushiren'], + trigger:{ + player:'useCardToPlayered', + target:'useCardToTargeted', + }, + direct:true, + preHidden:true, + filter:function(event,player){ + if(event.player==event.target||event.targets.length!=1) return false; + if(player!=event.player&&!player.hasSkill('mffengshi')) return false; + return event.player.countCards('h')>event.target.countCards('h')&&event.target.countCards('he')>0; + }, + content:function(){ + 'step 0' + event.source=trigger.player; + event.target=(player==trigger.target?trigger.player:trigger.target); + var str; + if(player==trigger.player) str='弃置自己的和该角色'; + else str='令其弃置其与你的'; + var next=trigger.player.chooseBool('是否对'+get.translation(trigger.target)+'发动【锋势】?',str+'的各一张牌,然后令'+get.translation(trigger.card)+'的伤害+1').set('ai',function(){ + var player=_status.event.getParent().player; + var target=_status.event.getParent().target; + var viewer=_status.event.player; + if(viewer==player){ + if(get.attitude(viewer,target)>=0) return false; + if(player.countCards('he',(card)=>get.value(card,player)<5)) return true; + var card=_status.event.getTrigger().card; + if((get.tag(card,'damage')||target.countCards('he',(card)=>get.value(card,target)>6))&&player.countCards('he',(card)=>get.value(card,player)<7)) return true; + return false; + } + else{ + if(get.attitude(viewer,player)>=0) return false; + if(!get.tag(card,'damage')) return false; + if(viewer.countCards('he')>player.countCards('he')) return true; + if(viewer.countCards('he',(card)=>get.value(card,target)>6)) return false; + return true; + } + }); + if(player==next.player) next.setHiddenSkill('mffengshi'); + 'step 1' + if(result.bool){ + if(player==source) player.logSkill('mffengshi',target); + else{ + player.logSkill('mffengshi'); + source.line(player,'green'); + } + if(get.tag(trigger.card,'damage')) trigger.getParent().baseDamage++; + player.chooseToDiscard('he',true); + } + else event.finish(); + 'step 2' + if(target.countDiscardableCards(player,'he')>0) player.discardPlayerCard(target,'he',true); + }, + }, }, card:{ pyzhuren_heart:{ @@ -10575,6 +10675,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dufuren:'杜夫人(生卒年不详),东汉末年至三国时人。有异色,原为吕布将秦宜禄之妻,生子秦朗。后为曹操纳为妾,又生曹林、曹衮、金乡公主。', lvlingqi:'吕玲绮,虚拟人物,源于日本光荣株式会社(现光荣特库摩公司)旗下游戏《真·三国无双》系列,初次登场于《真三国无双7:猛将传》。吕布的女儿,寂寥而威风凛凛的战姬,发挥着不亚于父亲的武艺,非常勇敢地身先士卒立于前线。虽然有着能够直面困难的坚强意志,却由于过去的经历而有着非常害怕孤独的一面。', zhouyi:'周夷,游卡桌游旗下产品《三国杀》自行杜撰的人物。设定为周瑜的妹妹,和周瑜一同征战。', + mifangfushiren:'麋芳(生卒年不详),字子方,东海郡朐县(今江苏省连云港市)人。汉末三国时期蜀国将领,刘备糜夫人的兄弟。麋芳本为徐州牧陶谦部下,曾被曹操表为彭城相。后来辞官,随刘备从徐州辗转至邺城、汝南、新野、长坂坡、江夏等地,奔波多年。傅士仁(生卒年不详),字君义,幽州广阳郡(今北京市)人,刘备手下将领。受到刘备的重用,但被关羽轻慢。
刘备称汉中王时,糜芳为南郡太守,但受到关羽的轻慢。后来,因未完成供给军资的任务而被关羽责骂,心中不安。吕蒙袭取荆州时,将已经投降的傅士仁展示给糜芳,麋芳于是选择投降,导致关羽兵败被杀。此后,在吴国担任将军,并且为吴征伐。', }, characterTitle:{ wulan:'#b对决限定武将', @@ -10654,6 +10755,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gexuan:['gexuan','tw_gexuan'], panshu:['panshu','re_panshu'], nanhualaoxian:['re_nanhualaoxian','nanhualaoxian'], + kanze:['re_kanze','kanze'], }, translate:{ lijue:"李傕", @@ -11175,7 +11277,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yise:'异色', yise_info:'其他角色获得你的牌后,若这些牌中:有红色牌,你可令其回复1点体力;有黑色牌,其下次受到【杀】造成的伤害时,此伤害+1。', shunshi:'顺世', - shunshi_info:'准备阶段开始时,或当你受到伤害后,你可将一张牌交给一名其他角色并获得如下效果直到你的回合结束:摸牌阶段的额定摸牌数+1,使用【杀】的次数上限+1,手牌上限+1。', + shunshi_info:'准备阶段开始时,或当你受到伤害后,你可将一张牌交给一名不为伤害来源的其他角色并获得如下效果直到你的回合结束:摸牌阶段的额定摸牌数+1,使用【杀】的次数上限+1,手牌上限+1。', lvlingqi:'吕玲绮', guowu:'帼舞', guowu_info:'出牌阶段开始时,你可以展示全部手牌,根据你展示的类型数,你获得对应效果:至少一类,从弃牌堆获得一张【杀】;至少两类,此阶段使用牌无距离限制;至少三类,此阶段使用【杀】或普通锦囊牌可以多指定两个目标。', @@ -11213,6 +11315,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ nhguanyue_info:'结束阶段,你可以观看牌堆顶两张牌,然后获得其中—张,另一张放回牌堆顶。', nhyanzheng:'言政', nhyanzheng_info:'准备阶段,若你的手牌数大于1,你可以保留一张手牌并弃置其余的牌,然后选择至多等于弃牌数量的角色,对这些角色各造成1点伤害。', + re_kanze:'阚泽', + rekuanshi:'宽释', + rekuanshi_info:'结束阶段,你可以选择一名角色。你获得如下一次性效果直到你下回合开始:当其于一回合内受到第2点伤害后,其回复1点体力。', + sp_mifangfushiren:'糜芳傅士仁', + mffengshi:'锋势', + mffengshi_info:'当你使用牌指定唯一目标后,或成为其他角色使用牌的唯一目标后,若此牌使用者的手牌数大于此牌目标的手牌数,则此牌的使用者可令你弃置自己和对方的各一张牌,并令此牌的伤害值+1。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", @@ -11228,6 +11336,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_caizijiaren:'才子佳人', sp_qihuan:'戚宦之争', sp_zhongyuan:'中原狼烟', + sp_binglin:'兵临城下', sp_decade:'其他新服武将', }, }; diff --git a/character/standard.js b/character/standard.js index f1b06387d..2daf3c9f0 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2213,7 +2213,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 4-get.value(card) }, filterTarget:function(card,player,target){ - if(!target.hasSex('female')) return false; + if(!target.hasSex('male')) return false; if(target.hp>=target.maxHp) return false; if(target==player) return false; return true; diff --git a/character/yijiang.js b/character/yijiang.js index 18d3ecc7a..91e5149b7 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -1240,9 +1240,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.storage.xintaoluan.contains(name)) continue; if(name=='sha'){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } else if(get.type(name)=='trick') list.push(['锦囊','',name]); else if(get.type(name)=='basic') list.push(['基本','',name]); @@ -3932,9 +3930,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.storage.taoluan&&player.storage.taoluan.contains(name)) continue; if(name=='sha'){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } else if(get.type(name)=='trick') list.push(['锦囊','',name]); else if(get.type(name)=='basic') list.push(['基本','',name]); @@ -4501,9 +4497,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var name=lib.inpile[i]; if(name=='sha'){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } else if(get.type(name)=='basic') list.push(['基本','',name]); else if(player.countMark('xindanxin')>0&&get.type(name)=='trick') list.push(['锦囊','',name]); @@ -4595,8 +4589,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }}; if(event.filterCard(card,player,event)) list.push([type,'',i]); if(i=='sha'){ - var natures=['fire','thunder','ice']; - for(var j of natures){ + for(var j of lib.inpile_nature){ card.nature=j; if(event.filterCard(card,player,event)) list.push([type,'',i,j]); } @@ -7335,9 +7328,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var list=[]; if(!player.storage.huomo.sha&&event.filterCard({name:'sha'},player,event)){ list.push(['基本','','sha']); - list.push(['基本','','sha','fire']); - list.push(['基本','','sha','thunder']); - list.push(['基本','','sha','ice']); + for(var j of lib.inpile_nature) list.push(['基本','','sha',j]); } if(!player.storage.huomo.tao&&event.filterCard({name:'tao'},player,event)){ list.push(['基本','','tao']); diff --git a/character/yingbian.js b/character/yingbian.js index f8d168d4e..86bc2df81 100644 --- a/character/yingbian.js +++ b/character/yingbian.js @@ -6,7 +6,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ character:{ yangzhi:['female','jin',3,['wanyi','maihuo']], yangyan:['female','jin',3,['xuanbei','xianwan']], - zuofen:['female','jin',3,['zhaosong','lisi'],['unseen']], ol_huaxin:['male','wei',3,['caozhao','olxibing']], zhongyan:['female','jin',3,['bolan','yifa']], weiguan:['male','jin',3,['zhongyun','shenpin']], @@ -38,13 +37,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, enable:'phaseUse', filter:function(event,player){ - return player.hasCard(function(i){ + return player.getStorage('wanyi2').length<4&&player.hasCard(function(i){ return get.is.yingbian(i); },'hs'); }, chooseButton:{ - dialog:function(){ - return ui.create.dialog('婉嫕',[['zhujinqiyuan','chuqibuyi','shuiyanqijunx','dongzhuxianji'],'vcard'],'unseen'); + dialog:function(event,player){ + var list=['zhujinqiyuan','chuqibuyi','shuiyanqijunx','dongzhuxianji']; + list.removeArray(player.getStorage('wanyi2')) + return ui.create.dialog('婉嫕',[list,'vcard'],'hidden'); }, filter:function(button,player){ return lib.filter.filterCard({name:button.link[2]},player,_status.event.getParent()); @@ -66,6 +67,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 1/Math.max(1,get.value(card)); }, position:'hs', + onuse:function(links,player){ + if(!player.storage.wanyi2) player.storage.wanyi2=[]; + player.storage.wanyi2.add(links.card.name); + player.addTempSkill('wanyi2'); + }, } }, prompt:function(links){ @@ -75,6 +81,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ subSkill:{backup:{}}, ai:{order:8,result:{player:1}}, }, + wanyi2:{onremove:true}, maihuo:{ audio:2, trigger:{target:'useCardToTargeted'}, @@ -84,6 +91,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.cards.filterInD().length>0&&event.targets.length==1&& event.player.isIn()&&(!event.player.storage.maihuo_effect||!event.player.storage.maihuo_effect.length); }, + prompt2:function(event){ + return '令'+get.translation(event.card)+'暂时对你无效'; + }, check:function(event,player){ return get.effect(player,event.card,event.player,player)<0; }, @@ -102,15 +112,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, charlotte:true, filter:function(event,player){ - if(!player.storage.maihuo_effect||!player.storage.maihuo_effect.length) return false; - var card=player.storage.maihuo_effect[0]; - if(card.name!='sha') card=get.autoViewAs({ - name:'sha', - isCard:true, - },player.storage.maihuo_effect); - var target=player.storage.maihuo_target; - if(!card||!target||!target.isIn()||!player.canUse(card,target,false)) return false; - return true; + return player.storage.maihuo_effect&&player.storage.maihuo_effect.length>0; }, content:function(){ var card=player.storage.maihuo_effect[0]; @@ -119,8 +121,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ isCard:true, },player.storage.maihuo_effect); var target=player.storage.maihuo_target; - player.useCard(card,target,player.storage.maihuo_effect,false); - delete player.storage.maihuo_effect; + if(target.isIn()&&player.canUse(card,target,null,true)){ + player.useCard(card,target,player.storage.maihuo_effect); + delete player.storage.maihuo_effect; + } player.removeSkill('maihuo_effect'); }, intro:{ @@ -171,7 +175,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'useCardAfter'}, usable:1, filter:function(event,player){ - return event.card.yingbian&&event.cards.filterInD().length>0; + return (event.card.yingbian||get.is.yingbian(event.card))&&event.cards.filterInD().length>0; }, direct:true, content:function(){ @@ -304,204 +308,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, - zhaosong:{ - trigger:{global:'phaseUseBegin'}, - logTarget:'player', - filter:function(event,player){ - if(player==event.player||!event.player.countCards('h')) return false; - var types=['basic','trick','equip']; - for(var i of types){ - if(event.player.hasMark('zhaosong_'+i)) return false; - } - return true; - }, - prompt2:'令其交给你一张手牌,并根据类型获得对应的标记', - content:function(){ - 'step 0' - event.target=trigger.player; - event.target.chooseCard('h',true,get.translation(player)+'发动了【诏颂】;请交给其一张手牌'); - 'step 1' - if(result.bool){ - var card=result.cards[0]; - player.gain(card,target,'give'); - var type=get.type2(card,target); - if(lib.skill['zhaosong_'+type]){ - target.addSkill('zhaosong_'+type); - target.addMark('zhaosong_'+type); - } - } - }, - subSkill:{ - basic:{ - marktext:'颂', - intro:{ - name:'诏颂(颂)', - name2:'颂', - content:'当你使用【杀】选择唯一目标时,你可移去“颂”,并为此【杀】增加至多两个目标。然后若此【杀】造成的伤害小于2,你失去1点体力。', - }, - trigger:{player:'useCard2'}, - direct:true, - charlotte:true, - onremove:true, - filter:function(event,player){ - return player.hasMark('zhaosong_basic')&&event.card.name=='sha'&& - event.targets.length==1&&game.hasPlayer(function(current){ - return current!=player&¤t!=event.targets[0]&&lib.filter.targetEnabled2(event.card,player,current); - }); - }, - content:function(){ - 'step 0' - player.chooseTarget([1,2],'是否弃置“颂”标记?','为'+get.translation(trigger.card)+'增加至多两个目标',function(card,player,target){ - var evt=_status.event.getTrigger(); - return target!=player&&target!=evt.targets[0]&&lib.filter.targetEnabled2(evt.card,player,target); - }).set('ai',function(target){ - var evt=_status.event.getTrigger(); - return get.effect(target,evt.card,evt.player,evt.player); - }); - 'step 1' - if(result.bool){ - if(player!=event.player&&!player.isOnline()) game.delayx(); - player.addTempSkill('zhaosong_shaloss'); - } - else event.finish(); - 'step 2' - var targets=result.targets; - player.logSkill('zhaosong_basic',targets); - player.removeMark('zhaosong_basic',1); - player.removeSkill('zhaosong_basic'); - trigger.targets.addArray(targets); - trigger.zhaosong_basic=true; - }, - }, - shaloss:{ - trigger:{player:'useCardAfter'}, - forced:true, - charlotte:true, - filter:function(event,player){ - if(!event.zhaosong_basic) return false; - var num=0; - player.getHistory('sourceDamage',function(evt){ - if(evt.card==event.card) num+=evt.num; - }); - return num<2; - }, - content:function(){ - player.loseHp(); - }, - }, - trick:{ - marktext:'诔', - intro:{ - name:'诏颂(诔)', - name2:'诔', - content:'当你进入濒死状态时,你可移去“诔”并减1点体力上限,然后将体力回复至1点并摸一张牌。', - }, - trigger:{player:'dying'}, - prompt:'是否弃置“诔”标记?', - prompt2:'减1点体力上限,然后回复体力至1点并摸一张牌。', - charlotte:true, - onremove:true, - filter:function(event,player){ - return player.hasMark('zhaosong_trick')&&player.hp<1; - }, - check:function(event,player){ - if(player.maxHp<2||player.countCards('h',function(card){ - var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); - if(mod2!='unchanged') return mod2; - var mod=game.checkMod(card,player,event.player,'unchanged','cardSavable',player); - if(mod!='unchanged') return mod; - var savable=get.info(card).savable; - if(typeof savable=='function') savable=savable(card,player,event.player); - return savable; - })>=1+event.num-event.player.hp) return false; - return true; - }, - content:function(){ - 'step 0' - player.removeMark('zhaosong_trick',1); - player.removeSkill('zhaosong_trick'); - player.loseMaxHp(); - 'step 1' - if(player.hp<1) player.recover(1-player.hp); - player.draw(); - }, - }, - equip:{ - marktext:'赋', - intro:{ - name:'诏颂(赋)', - name2:'赋', - content:'出牌阶段开始时,你可移去“赋”并弃置一名角色区域内的一张牌,然后可以令其摸一张牌。', - }, - trigger:{player:'phaseUseBegin'}, - direct:true, - charlotte:true, - onremove:true, - filter:function(event,player){ - return player.hasMark('zhaosong_equip')&&game.hasPlayer(function(current){ - return current.hasCard(function(card){ - return lib.filter.canBeDiscarded(card,player,current); - },'hej'); - }); - }, - content:function(){ - 'step 0' - player.chooseTarget('是否弃置“赋”标记?','弃置一名角色区域内的一张牌,然后可以令其摸一张牌',function(card,player,current){ - return current.hasCard(function(card){ - return lib.filter.canBeDiscarded(card,player,current); - },'hej'); - }).set('ai',function(target){ - var player=_status.event.player,att=get.attitude(player,target)>0?2:1; - return get.effect(target,{name:'guohe_copy'},player,player)*att; - }); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - event.target=target; - player.logSkill('zhaosong_equip',target); - player.removeMark('zhaosong_equip',1); - player.removeSkill('zhaosong_equip'); - player.discardPlayerCard(target,true,'hej'); - } - else event.finish(); - 'step 2' - if(target.isIn()){ - player.chooseBool('是否令'+get.translation(target)+'摸一张牌?').set('ai',function(){ - var evt=_status.event.getParent(); - return get.attitude(evt.player,evt.target)>0; - }); - } - else event.finish(); - 'step 3' - if(result.bool) target.draw(); - }, - }, - }, - }, - lisi:{ - audio:2, - trigger:{player:'useCardAfter'}, - direct:true, - filter:function(event,player){ - if(player==_status.currentPhase||!event.cards.filterInD().length) return false; - var hs=player.countCards('h'); - return game.hasPlayer(function(current){ - return current!=player&¤t.countCards('h')<=hs; - }); - }, - content:function(){ - 'step 0' - player.chooseTarget(get.prompt('lisi'),'将'+get.translation(trigger.cards.filterInD())+'交给一名手牌数不大于你的其他角色',function(card,player,target){ - return target!=player&&target.countCards('h')<=player.countCards('h'); - }); - 'step 1' - if(result.bool){ - var target=result.targets[0]; - player.logSkill('lisi',target); - target.gain(trigger.cards.filterInD(),'gain2'); - } - }, - }, caozhao:{ audio:2, enable:'phaseUse', @@ -1417,6 +1223,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return num>target.hp||num手牌'); @@ -52644,7 +52655,13 @@ } } } - if(lib.translate[name+'_info']){ + if(lib.card[name].cardPrompt){ + var str=lib.card[name].cardPrompt(node.link||node),placetext=uiintro.add('
'+str+'
'); + if(str.indexOf('
'+lib.translate[name+'_info']+'
'); if(lib.translate[name+'_info'].indexOf('
1; + return event.player!=player&&(event.player.countCards('h')>1||event.player.countCards('e')>1); }, content:function(){ 'step 0' @@ -7516,8 +7516,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ boss_zuijiu:{ trigger:{source:'damageBegin1'}, filter:function(event){ - return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&& - event.parent.name!='_lianhuan'&&event.parent.name!='_lianhuan2'; + return event.card&&event.card.name=='sha'&&event.getParent().name=='sha'; }, forced:true, content:function(){ @@ -9402,7 +9401,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ boss_mengtai:'萌态', boss_mengtai_info:'锁定技,若你的出牌阶段被跳过,你跳过本回合的弃牌阶段;若你的摸牌阶段被跳过,结束阶段开始时,你摸三张牌', boss_ruizhi:'睿智', - boss_ruizhi_info:'锁定技,其他角色的准备阶段开始时,其选择一张手牌和一张装备区里的牌,然后弃置其余的牌', + boss_ruizhi_info:'锁定技,其他角色的准备阶段开始时,其选择一张手牌和一张装备区里的牌,然后弃置其余的牌。', boss_jingjue:'警觉', boss_jingjue_info:'每当你于回合外失去牌时,你可以进行一次判定,若结果为红色,你回复1点体力', boss_renxing:'任性', @@ -9436,7 +9435,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ boss_danshu_info:'每当你于回合外失去牌时,你可以进行一次判定,若结果为红色,你回复1点体力', boss_zuijiu:'醉酒', - boss_zuijiu_info:'锁定技,你的【杀】额外造成1点伤害', + boss_zuijiu_info:'锁定技,你因【杀】造成伤害时,此伤害+1。', boss_taiping:'太平', boss_taiping_info:'锁定技,摸牌阶段摸牌时,你的摸牌数量+2', boss_suoming:'索命', diff --git a/mode/brawl.js b/mode/brawl.js index 700a5ddba..e7bee2412 100644 --- a/mode/brawl.js +++ b/mode/brawl.js @@ -1604,12 +1604,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ player1=this.player1; player2=this.player2; } - var rect1=player1.getBoundingClientRect(); - var rect2=player2.getBoundingClientRect(); - var left1=rect1.left+rect1.width/2-ui.arena.offsetLeft; - var left2=rect2.left+rect2.width/2-ui.arena.offsetLeft; - var top1=rect1.top+rect1.height/2-ui.arena.offsetTop; - var top2=rect2.top+rect2.height/2-ui.arena.offsetTop; var createCard=function(wuxie){ var card; @@ -1628,7 +1622,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } var func=function(){ - game.linexy([left1,top1,left2,top2]); + game.linexy([ + player1.getLeft()+player1.offsetWidth/2, + player1.getTop()+player1.offsetHeight/2, + player2.getLeft()+player2.offsetWidth/2, + player2.getTop()+player2.offsetHeight/2, + ],node); var card=createCard(true); card.style.left='43px'; card.style.top='58px'; @@ -1660,7 +1659,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ setTimeout(function(){ if(!node.showcaseinterval) return; player2.node.count.innerHTML='1'; - game.linexy([left2,top2,left1,top1]); + game.linexy([ + player2.getLeft()+player2.offsetWidth/2, + player2.getTop()+player2.offsetHeight/2, + player1.getLeft()+player1.offsetWidth/2, + player1.getTop()+player1.offsetHeight/2, + ],node); var card=createCard(true); card.style.left='auto'; card.style.right='43px'; @@ -2917,7 +2921,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ else{ player1=this.player1; } - var rect1=player1.getBoundingClientRect(); var func=function(){ var player2=ui.create.player(null,true).init('caiyang'); player2.node.marks.remove(); @@ -2932,32 +2935,34 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ ui.refresh(player2); player2.style.opacity=1; player2.style.transform='scale(0.9)'; - var rect2=player2.getBoundingClientRect(); - var left1=rect1.left+rect1.width/2-ui.arena.offsetLeft; - var left2=rect2.left+rect2.width/2-ui.arena.offsetLeft; - var top1=rect1.top+rect1.height/2-ui.arena.offsetTop; - var top2=rect2.top+rect2.height/2-ui.arena.offsetTop; setTimeout(function(){ if(!player2) return; - game.linexy([left1,top1,left2,top2]); - var popup=ui.create.div('.damage'); - popup.innerHTML='-1'; - popup.dataset.nature='soil'; - player2.appendChild(popup); - ui.refresh(popup); - popup.classList.add('damageadded'); - popup.listenTransition(function(){ - setTimeout(function(){ - popup.delete(); - },200); - }); + game.linexy([ + player1.getLeft()+player1.offsetWidth/2, + player1.getTop()+player1.offsetHeight/2, + player2.getLeft()+player2.offsetWidth/2, + player2.getTop()+player2.offsetHeight/2, + ],node); + setTimeout(function(){ + var popup=ui.create.div('.damage'); + popup.innerHTML='-1'; + popup.dataset.nature='soil'; + player2.appendChild(popup); + ui.refresh(popup); + popup.classList.add('damageadded'); + popup.listenTransition(function(){ + setTimeout(function(){ + popup.delete(); + },300); + }); + },250) },600); setTimeout(function(){ if(!player2) return; player2.style.transition='all 0.5s'; player2.style.transform='scale(1.2)'; player2.delete(); - },1100); + },1200); }; node.showcaseinterval=setInterval(func,2600); func(); @@ -3487,8 +3492,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ ].randomGet(); } if(init){ - player1=ui.create.player(null,true).init(list[0]); - player2=ui.create.player(null,true).init(list[1]); + player1=ui.create.player(null,true); + player2=ui.create.player(null,true); player1.node.marks.remove(); player1.node.hp.remove(); player2.node.marks.remove(); @@ -3513,8 +3518,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } var player3,player4; if(init){ - player3=ui.create.player(null,true).init(list[3]); - player4=ui.create.player(null,true).init(list[2]); + player3=ui.create.player(null,true); + player4=ui.create.player(null,true); player3.node.marks.remove(); player3.node.hp.remove(); player4.node.marks.remove(); @@ -3537,6 +3542,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ player3=this.player3; player4=this.player4; } + player1.init(list[0]); + player2.init(list[1]); + player3.init(list[3]); + player4.init(list[2]); }, intro:['双方使用特定的武将,搭配特定的技能,还原特定的经典场景'], content:{ diff --git a/mode/guozhan.js b/mode/guozhan.js index 02eb57327..455b0e605 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -3379,8 +3379,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } var switchToAuto=function(){ _status.imchoosing=false; - var listn=['普通','fire','thunder']; - if(_status.mode=='yingbian') listn.add('ice'); + var listn=['普通'].concat(lib.inpile_nature); event._result={ bool:true, suit:lib.suit.randomGet(), @@ -3430,8 +3429,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ table2.style.margin='0'; table2.style.width='100%'; table2.style.position='relative'; - var listn=['普通','fire','thunder']; - if(_status.mode=='yingbian') listn.add('ice'); + var listn=['普通'].concat(lib.inpile_nature); for(var i=0;i