diff --git a/audio/die/clan_wuqiao.mp3 b/audio/die/clan_wuqiao.mp3 new file mode 100644 index 000000000..d64ef37a6 Binary files /dev/null and b/audio/die/clan_wuqiao.mp3 differ diff --git a/character/sp.js b/character/sp.js index 17fc196fb..37e9b070b 100755 --- a/character/sp.js +++ b/character/sp.js @@ -46,7 +46,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ lvboshe:['male','qun',4,['olfushi','oldongdao']], ol_luyusheng:['female','wu',3,['olcangxin','olrunwei']], caoxi:['male','wei',3,['olgangshu','oljianxuan']], - ol_pengyang:['male','shu',3,['olqifan','oltuishi','nzry_cunmu']], + ol_pengyang:['male','shu',3,['olxiaofan','oltuishi','nzry_cunmu']], ol_qianzhao:['male','wei',4,['olweifu','olkuansai']], niujin:['male','wei',4,['olcuorui','liewei']], hejin:['male','qun',4,['mouzhu','olyanhuo']], @@ -2537,8 +2537,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, check:function(card){ var player=_status.event.player; - if(player.hasSkill('hezhong')){ - if(player.countCards('h')-ui.selected.cards.length>1) return 1/(get.value(card)||0.5); + if(player.hasSkill('hezhong')&&(!(player.hasSkill('hezhong_0')&&player.hasSkill('hezhong_1')))){ + if(player.countCards('h')-ui.selected.cards.length>2) return 1/(get.value(card)||0.5); return 0; } if(ui.selected.cards.length{ var player=_status.event.player; - if(player.hasSkill('hezhong')&&player.countCards('h')-ui.selected.cards.length>1) return 1/(get.value(card)||0.5); + if(player.hasSkill('hezhong')&&(!(player.hasSkill('hezhong_0')&&player.hasSkill('hezhong_1')))&&player.countCards('h')-ui.selected.cards.length>2) return 1/(get.value(card)||0.5); if(!player.hasSkill('hezhong')&&ui.selected.cards.lengthgame.getGlobalHistory('useCard').reduce((list,evt)=>list.add(get.type2(evt.card)),[]).length, + getNum:(player)=>player.getHistory('useCard').reduce((list,evt)=>list.add(get.type2(evt.card)),[]).length, filter:function(event,player){ - if(event.responded||event.type=='wuxie'||event.olqifan) return false; + if(event.responded||event.type=='wuxie'||event.olxiaofan) return false; for(var i of lib.inpile){ if(i!='wuxie'&&event.filterCard(get.autoViewAs({name:i},'unsure'),player,event)) return true; } @@ -3342,8 +3342,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ 'step 0' var evt=event.getParent(2); - evt.set('olqifan',true); - var cards=get.bottomCards(lib.skill.olqifan.getNum()+1,true); + evt.set('olxiaofan',true); + var cards=get.bottomCards(lib.skill.olxiaofan.getNum(player)+1,true); var aozhan=player.hasSkill('aozhan'); player.chooseButton(['嚣翻:选择要使用的牌',cards]).set('filterButton',function(button){ return _status.event.cards.includes(button.link); @@ -3380,11 +3380,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ },evt.player,evt)?'sha':'shan'; } game.broadcastAll(function(result,name){ - lib.skill.olqifan_backup.viewAs={name:name,cards:[result],isCard:true}; + lib.skill.olxiaofan_backup.viewAs={name:name,cards:[result],isCard:true}; },card,name); - evt.set('_backupevent','olqifan_backup'); + evt.set('_backupevent','olxiaofan_backup'); evt.set('openskilldialog',('请选择'+get.translation(card)+'的目标')) - evt.backup('olqifan_backup'); + evt.backup('olxiaofan_backup'); } evt.goto(0); }, @@ -3406,8 +3406,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, }, - olqifan_backup:{ - sourceSkill:'olqifan', + olxiaofan_backup:{ + sourceSkill:'olxiaofan', precontent:function(){ delete event.result.skill; var name=event.result.card.name,cards=event.result.card.cards.slice(0); @@ -3418,9 +3418,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.result.card=card; var id=get.id(); player.when('chooseToUseAfter').filter((evt)=>evt==event.getParent()).then(()=>{ - var num=lib.skill.olqifan.getNum(),pos=('jeh').slice(0,num); + var num=lib.skill.olxiaofan.getNum(player),pos=('jeh').slice(0,num); if(num>0&&player.countCards(pos)>0){ - event.maxNum=Math.min(3,lib.skill.olqifan.getNum()); + event.maxNum=Math.min(3,num); event.num=0; } else event.finish(); @@ -3490,7 +3490,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'useCard1'}, filter:function(event,player){ if(!event.targets||!event.targets.length) return false; - return event.targets.some(target=>player.countCards('h')+event.cards.length>target.countCards('h')); + let num=0; + if(event.cards&&event.cards.length){ + const history=player.getHistory('lose',evt=>{ + if(evt.getParent()!=event) return false; + return event.cards.some(card=>evt.hs.includes(card)); + }); + if(history.length) num+=event.cards.filter(card=>history[0].hs.includes(card)).length; + } + return event.targets.some(target=>player.countCards('h')+num>target.countCards('h')+(target==player?num:0)); }, forced:true, popup:false, @@ -18754,8 +18762,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ var num; var mode=get.mode(); - if(mode=='identity'){ - if(_status.mode=='purple') num=player.getEnemies().length; + if(mode=='identity'||mode=='doudizhu'){ + if(mode=='identity'&&_status.mode=='purple') num=player.getEnemies().length; else num=get.population('fan'); } else if(mode=='versus'){ @@ -26879,6 +26887,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ hongde_info:'当你一次获得或失去至少两张牌后,你可以令一名其他角色摸一张牌。', dingpan:'定叛', dingpan_info_identity:'出牌阶段限X次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。(X为场上存活的反贼数)', + dingpan_info_doudizhu:'出牌阶段限X次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。(X为场上存活的农民数)', dingpan_info_versus_two:'出牌阶段限X次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。(X为场上存活的最大阵营角色数)', dingpan_info_versus:'出牌阶段限X次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。(X为场上存活的敌方角色数)', dingpan_info:'出牌阶段限一次,你可以令一名装备区里有牌的角色摸一张牌,然后其选择一项:1.令你弃置其装备区里的一张牌;2.获得其装备区里的所有牌,若如此做,你对其造成1点伤害。', @@ -27665,8 +27674,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ oljianxuan:'谏旋', oljianxuan_info:'当你受到伤害后,你可以令一名角色摸一张牌,然后若其手牌数等于你〖刚述①〗中的任意一项对应的数值,其重复此流程。', ol_pengyang:'彭羕', - olqifan:'嚣翻', - olqifan_info:'当你需要使用不为【无懈可击】的牌时,你可以观看牌堆底的X+1张牌并使用其中的一张。此牌结算结束时,你依次弃置以下前X个区域中的所有牌:⒈判定区、⒉装备区、⒊手牌区(X为本回合使用过的牌中包含的类型数)。', + olxiaofan:'嚣翻', + olxiaofan_info:'当你需要使用不为【无懈可击】的牌时,你可以观看牌堆底的X+1张牌并使用其中的一张。此牌结算结束时,你依次弃置以下前X个区域中的所有牌:⒈判定区、⒉装备区、⒊手牌区(X为本回合你使用过的牌中包含的类型数)。', oltuishi:'侻失', oltuishi_info:'锁定技。①你不能使用【无懈可击】。②当你使用点数为字母的牌时,你令此牌无效并摸一张牌,且你对手牌数小于你的角色使用的下一张牌无距离和次数限制。', ol_tw_zhangji:'张既', diff --git a/character/yijiang.js b/character/yijiang.js index 3c2bf8e4e..e9e65ae50 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -5569,37 +5569,43 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, qinqing:{ audio:2, - mode:['identity','versus'], + mode:['identity','versus','doudizhu'], available:function(mode){ if(mode=='versus'&&_status.mode!='four') return false; if(mode=='identity'&&_status.mode=='purple') return false; }, + getZhu:(player)=>{ + if(get.mode=='doudizhu') return game.findPlayer(i=>i.identity=='zhu'); + return get.zhu(player); + }, trigger:{player:'phaseJieshuBegin'}, direct:true, filter:function(event,player){ - var zhu=get.zhu(player); - if(!zhu||!zhu.isZhu) return false; + var zhu=get.info('qinqing').getZhu(player); + if(!zhu||(get.mode!='doudizhu'&&!zhu.isZhu)) return false; return game.hasPlayer(function(current){ return current!=zhu&¤t.inRange(zhu); }); }, content:function(){ 'step 0' + event.zhu=get.info('qinqing').getZhu(player); player.chooseTarget(get.prompt2('qinqing'),[1,Infinity],function(card,player,target){ - var zhu=get.zhu(player); + var zhu=get.event('zhu'); if(target==zhu) return false; return target.inRange(zhu); }).set('ai',function(target){ - var he=target.countCards('he') + var he=target.countCards('he'); + var zhu=get.event('zhu'); if(get.attitude(_status.event.player,target)>0){ if(he==0) return 1; - if(target.countCards('h')>get.zhu(player).countCards('h')) return 1; + if(target.countCards('h')>zhu.countCards('h')) return 1; } else{ if(he>0) return 1; } return 0; - }); + }).set('zhu',event.zhu); 'step 1' if(result.bool){ event.targets=result.targets.slice(0).sortBySeat(); @@ -5620,9 +5626,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 3' var num=0; - var zhu=get.zhu(player); - if(zhu){ - var nh=zhu.countCards('h'); + if(event.zhu){ + var nh=event.zhu.countCards('h'); for(var i=0;inh){ num++; @@ -14151,6 +14156,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jiyu_info:'出牌阶段限一次,你可以令一名角色弃置一张手牌。若如此做,你不能使用与之相同花色的牌,直到回合结束。若其以此法弃置的牌为黑桃,你翻面并令其失去1点体力。若你有未被〖讥谀〗限制的手牌,则你可以继续发动此技能,但不能选择本回合已经选择过的目标。', qinqing:'寝情', qinqing_info:'结束阶段,你可以选择任意名攻击范围内含有主公的角色,然后弃置这些角色各一张牌并令其摸一张牌(无牌则不弃),若如此做,你摸X张牌(X为其中手牌比主公多的角色数)。', + qinqing_info_doudizhu:'结束阶段,你可以选择任意名攻击范围内含有地主的角色,然后弃置这些角色各一张牌并令其摸一张牌(无牌则不弃),若如此做,你摸X张牌(X为其中手牌比地主多的角色数)。', huisheng:'贿生', huisheng_info:'当你受到其他角色对你造成的伤害时,你可以令其观看你任意数量的牌并令其选择一项:1.获得这些牌中的一张,防止此伤害,然后你不能再对其发动〖贿生〗;2.弃置等量的牌。', jishe:'极奢',