diff --git a/character/mobile.js b/character/mobile.js index 809ad0188..1d4ef75f0 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -797,7 +797,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ onremove:true, audio:'twjiaohua', enable:'phaseUse', - usable:3, + usable:2, chooseButton:{ dialog:function(event,player){ return ui.create.dialog('###教化###选择一种牌的类型,令一名角色从牌堆获得此类型的一张牌'); @@ -1069,18 +1069,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{global:'phaseJieshuBegin'}, filter:function(event,player){ - if(!game.hasPlayer(target=>target.countCards('e',card=>get.subtype(card)!='equip5')<3||target.isLinked()||target.isTurnedOver()||target.isDamaged())) return false; return player.getHistory('damage').length; }, direct:true, content:function(){ 'step 0' - player.chooseTarget(get.prompt2('mbquesong'),(card,player,target)=>{ - return target.countCards('e',card=>get.subtype(card)!='equip5')<3||target.isLinked()||target.isTurnedOver()||target.isDamaged(); - }).set('ai',target=>{ + player.chooseTarget(get.prompt2('mbquesong')).set('ai',target=>{ var player=_status.event.player; if(get.attitude(player,target)<=0) return 0; - var len=Math.max(1,3-target.countCards('e',card=>get.subtype(card)!='equip5')),hp=target.getHp(); + var len=lib.skill.mbquesong.getNum(target),hp=target.getHp(); return len+target.isTurnedOver()*2+1.5*Math.min(4,target.getDamagedHp())/(hp+1); }); 'step 1' @@ -1088,7 +1085,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var target=result.targets[0]; event.target=target; player.logSkill('mbquesong',target); - var len=Math.max(1,3-target.countCards('e',card=>get.subtype(card)!='equip5')); + var len=lib.skill.mbquesong.getNum(target); if(target.isHealthy()) event._result={index:0}; else{ target.chooseControl().set('choiceList',[ @@ -1107,12 +1104,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ target.recover(); event.finish(); } - else target.draw(Math.max(1,3-target.countCards('e',card=>get.subtype(card)!='equip5'))); + else target.draw(lib.skill.mbquesong.getNum(target)); 'step 3' target.link(false); 'step 4' target.turnOver(false); }, + getNum:function(player){ + return Math.max(1,4+player.countCards('e')); + }, ai:{ expose:0.2, maixie:true, @@ -15601,7 +15601,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mbhuiyao:'慧夭', mbhuiyao_info:'出牌阶段限一次。你可以受到1点无来源伤害,然后你选择一名其他角色,令其视为对另一名角色造成过1点伤害。', mbquesong:'雀颂', - mbquesong_info:'一名角色的结束阶段,若你于本回合受到过伤害,你可以令一名角色选择一项:1.摸X张牌并复原武将牌(X为3-其装备区非宝物牌牌数,且X至少为1);2.回复1点体力。', + mbquesong_info:'一名角色的结束阶段,若你于本回合受到过伤害,你可以令一名角色选择一项:1.摸X张牌并复原武将牌(X为4+其装备区牌数,且X至少为1);2.回复1点体力。', xin_yuanshao:'手杀界袁绍', xin_yuanshao_prefix:'手杀界', re_baosanniang:'手杀鲍三娘', @@ -15645,7 +15645,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liwei:'李遗', jiaohua:'教化', jiaohua_backup:'教化', - jiaohua_info:'出牌阶段限三次,你可以选择一个未被〖教化〗记录过的牌的类型,令一名角色从牌堆中获得一张此类型的牌,然后记录此类型,若基本、锦囊、装备均已被你发动〖教化〗记录,则你清空〖教化〗记录。', + jiaohua_info:'出牌阶段限两次,你可以选择一个未被〖教化〗记录过的牌的类型,令一名角色从牌堆中获得一张此类型的牌,然后记录此类型,若基本、锦囊、装备均已被你发动〖教化〗记录,则你清空〖教化〗记录。', laimin:'来敏', laishou:'来寿', laishou_info:'锁定技。①当你受到伤害值大于等于你的体力值的伤害时,若你的体力上限小于9,你防止此伤害并增加等量体力上限。②准备阶段,若你的体力上限不小于9,你死亡。', diff --git a/character/shiji.js b/character/shiji.js index bf622f0dd..49ba9a114 100644 --- a/character/shiji.js +++ b/character/shiji.js @@ -6527,7 +6527,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhouchu:['jin_zhouchu','zhouchu','tw_zhouchu'], liuzhang:['liuzhang','tw_liuzhang'], chenzhen:['sp_chenzhen','tw_chenzhen'], - feiyi:['feiyi','tw_feiyi'], + feiyi:['ol_feiyi','feiyi','tw_feiyi'], wangling:['wangling','tw_wangling'], qiaogong:['qiaogong','tw_qiaogong'], sp_chendong:['sp_chendong','tw_chendong','chendong'], @@ -6611,7 +6611,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ spwanwei_info:'每轮累计限一次。①出牌阶段,你可选择一名其他角色。②当有其他角色处于濒死状态时。你可令该角色回复X+1点体力(至少回复至1),然后你失去X点体力。(X为你的体力值)', spyuejian:'约俭', spyuejian_info:'锁定技,你的手牌上限基数等于你的体力上限。当你处于濒死状态时,你可弃置两张牌,然后回复1点体力。', - feiyi:'费祎', + feiyi:'手杀费祎', + feiyi_prefix:'手杀', reshengxi:'生息', reshengxi_info:'结束阶段,若你于本回合内未造成过伤害,则你可摸两张牌。', fyjianyu:'谏喻', diff --git a/character/sp.js b/character/sp.js index 2a19225af..e1fa63409 100755 --- a/character/sp.js +++ b/character/sp.js @@ -34,7 +34,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_dingshangwan:['female','wei',3,['olfudao','olfengyan']], zhangyan:['male','qun',4,['olsuji','ollangdao']], ol_tw_zhangji:['male','wei',3,['skill_zhangji_A','skill_zhangji_B'],['unseen']], - ol_feiyi:['male','shu',3,['skill_feiyi_A','skill_feiyi_B'],['unseen']], + ol_feiyi:['male','shu',3,['yanru','hezhong']], lvboshe:['male','qun',4,['olfushi','oldongdao']], ol_luyusheng:['female','wu',3,['olcangxin','olrunwei']], caoxi:['male','wei',3,['olgangshu','oljianxuan']], @@ -1424,24 +1424,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, //费祎 - skill_feiyi_A:{ + yanru:{ audio:2, enable:'phaseUse', filter:function(event,player){ var num=player.countCards('h')%2; - if(num==0&&!player.countCards('h')) return false; - return !player.hasSkill('skill_feiyi_A_'+num); + return !player.hasSkill('yanru_'+num); }, filterCard:function(card,player){ - return player.countCards('h')%2==0; + if(player.countCards('h')&&player.countCards('h')%2==0) return lib.filter.cardDiscardable(card,player); + return false; }, selectCard:function(){ var player=_status.event.player; - if(player.countCards('h')%2==0) return [player.countCards('h')/2,Infinity]; + if(player.countCards('h')&&player.countCards('h')%2==0) return [player.countCards('h')/2,Infinity]; return -1; }, + prompt:function(){ + var player=_status.event.player; + return [ + (player.countCards('h')?'弃置至少一半的手牌,然后':'')+'摸三张牌', + '摸三张牌,然后弃置至少一半的手牌', + + ][player.countCards('h')%2]; + }, check:function(card){ - if(player.hasSkill('skill_feiyi_B')){ + if(player.hasSkill('hezhong')){ if(player.countCards('h')-ui.selected.cards.length>1) return 1/(get.value(card)||0.5); return 0; } @@ -1449,20 +1457,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 0; }, complexCard:true, + discard:false, + lose:false, delay:0, content:function(){ 'step 0' - player.addTempSkill('skill_feiyi_A_'+(cards.length?'0':'1'),'phaseUseAfter'); - if(cards.length){ - player.draw(3) - event.finish(); - } - else player.draw(3); + var bool=player.countCards('h')%2; + if(cards) player.discard(cards); + player.addTempSkill('yanru_'+bool,'phaseUseAfter'); + player.draw(3); + if(!bool) event.finish(); 'step 1' - player.chooseToDiscard('h','技能:弃置至少一半手牌',[Math.floor(player.countCards('h')/2),Infinity],true).set('ai',card=>{ + player.chooseToDiscard('h','宴如:弃置至少一半手牌',[Math.floor(player.countCards('h')/2),Infinity],true).set('ai',card=>{ var player=_status.event.player; - if(player.hasSkill('skill_feiyi_B')&&player.countCards('h')-ui.selected.cards.length>1) return 1/(get.value(card)||0.5); - if(!player.hasSkill('skill_feiyi_B')&&ui.selected.cards.length1) return 1/(get.value(card)||0.5); + if(!player.hasSkill('hezhong')&&ui.selected.cards.length0; }, prompt2:function(event,player){ var str='展示最后一张手牌并摸一张牌'; - if(!player.hasSkill('skill_feiyi_B_0')||!player.hasSkill('skill_feiyi_B_0')){ + if(!player.hasSkill('hezhong_0')||!player.hasSkill('hezhong_0')){ str+=',然后令本回合使用点数'; - if(!player.hasSkill('skill_feiyi_B_0')) str+='大于'; - if(!player.hasSkill('skill_feiyi_B_0')&&!player.hasSkill('skill_feiyi_B_0')) str+='或'; - if(!player.hasSkill('skill_feiyi_B_1')) str+='小于'; + if(!player.hasSkill('hezhong_0')) str+='大于'; + if(!player.hasSkill('hezhong_0')&&!player.hasSkill('hezhong_0')) str+='或'; + if(!player.hasSkill('hezhong_1')) str+='小于'; str+=get.number(player.getCards('h')[0],player); - str+='的牌额外结算一次'; + str+='的普通锦囊牌额外结算一次'; } return str; }, @@ -1507,23 +1517,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 1' player.draw(); 'step 2' - if(player.hasSkill('skill_feiyi_B_0')) event._result={index:1}; - else if(player.hasSkill('skill_feiyi_B_1')) event._result={index:0}; + if(player.hasSkill('hezhong_0')) event._result={index:1}; + else if(player.hasSkill('hezhong_1')) event._result={index:0}; else{ player.chooseControl().set('choiceList',[ - '本回合使用点数大于'+num+'的牌额外结算一次', - '本回合使用点数小于'+num+'的牌额外结算一次', + '本回合使用点数大于'+num+'的普通锦囊牌额外结算一次', + '本回合使用点数小于'+num+'的普通锦囊牌额外结算一次', ]).set('ai',()=>{ var player=_status.event.player; var num=_status.event.player; if(player.getCards('h').reduce(function(num,card){ - return num=(get.number(card,player)||0); + return num+(get.number(card,player)||0); },0)>num*2) return 0; return 1; }).set('num',num); } 'step 3' - var skill='skill_feiyi_B_'+result.index; + var skill='hezhong_'+result.index; player.addTempSkill(skill); player.markAuto(skill,[num]); }, @@ -1531,42 +1541,70 @@ game.import('character',function(lib,game,ui,get,ai,_status){ '0':{ charlotte:true, onremove:true, - marktext:'技', + marktext:'>', intro:{ - markcount:()=>0, - content:'使用点数大于$的牌额外结算一次', + markcount:(list)=>{ + var list2=[1,11,12,13]; + return list.reduce((str,num)=>{ + if(list2.includes(num)) return str+['A','J','Q','K'][list2.indexOf(num)]; + return str+parseFloat(num); + },''); + }, + content:'使用点数大于$的普通锦囊牌额外结算一次', }, - audio:'skill_feiyi_B', + audio:'hezhong', trigger:{player:'useCard'}, filter:function(event,player){ + if(get.type(event.card)!='trick') return false; var num=get.number(event.card,player); - return typeof num=='number'&&player.getStorage('skill_feiyi_B_0').some(numx=>num>numx); + return typeof num=='number'&&player.getStorage('hezhong_0').some(numx=>num>numx); }, forced:true, content:function(){ trigger.effectCount++; game.log(trigger.card,'额外结算一次'); }, + ai:{ + effect:{ + player:function(card,player,target){ + if(card.name=='tiesuo') return 'zerotarget'; + }, + }, + }, }, '1':{ charlotte:true, onremove:true, - marktext:'能', + marktext:'<', intro:{ - markcount:()=>0, - content:'使用点数小于$的牌额外结算一次', + markcount:(list)=>{ + var list2=[1,11,12,13]; + return list.reduce((str,num)=>{ + if(list2.includes(num)) return str+['A','J','Q','K'][list2.indexOf(num)]; + return str+parseFloat(num); + },''); + }, + content:'使用点数小于$的普通锦囊牌额外结算一次', }, - audio:'skill_feiyi_B', + audio:'hezhong', trigger:{player:'useCard'}, filter:function(event,player){ + if(get.type(event.card)!='trick') return false; var num=get.number(event.card,player); - return typeof num=='number'&&player.getStorage('skill_feiyi_B_1').some(numx=>numnumlib.group.contains(group)||group=='key'); - if(group) lib.character[i][1]=group; + var group=lib.character[i][4].find(group=>lib.group.contains(group)||group=='key'||group.startsWith('gzgroup:')); + if(group){ + if(group.startsWith('gzgroup:')) lib.character[i][1]=group.slice(8); + else lib.character[i][1]=group; + } else lib.character[i][1]='qun'; } else lib.character[i][1]='qun';