diff --git a/character/jsrg.js b/character/jsrg.js index 60c79dd37..1f2045e47 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -170,6 +170,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player:'phaseBegin', }, forced:true, + popup:false, forceDie:true, onremove:true, filter:function(event,player){ @@ -178,10 +179,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } return player.getStorage('jsrgqingzi_clear').length>0; }, - logTarget:function(event,player){ - if(event.name!='phase') return event.player; - return player.getStorage('jsrgqingzi_clear'); - }, content:function(){ 'step 0' var targets=player.getStorage('jsrgqingzi_clear'); @@ -205,7 +202,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(targets.length>0){ event.redo(); } - else{ + else if(!storage.length){ player.removeSkill('jsrgqingzi_clear'); } }, diff --git a/character/mobile.js b/character/mobile.js index e8767e99e..9cb1718b7 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -4385,7 +4385,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinjianying:{ audio:2, subfrequent:['draw'], - group:['xinjianying_draw'], enable:'phaseUse', usable:1, filter:function(event,player){ @@ -4433,8 +4432,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, backup:function(links,player){ var next={ - audio:'jianying', - audioname:['xin_jushou'], + audio:'xinjianying', filterCard:true, popname:true, position:'he', @@ -4460,6 +4458,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, result:{player:7}, }, + group:['xinjianying_draw','jianying_mark'], + init:function(player){ + if(player.isPhaseUsing()){ + var evt=_status.event.getParent('phaseUse'); + var history=player.getHistory('useCard',function(evt2){ + return evt2.getParent('phaseUse')==evt; + }); + if(history.length){ + var trigger=history[history.length-1]; + player.storage.jianying_mark=trigger.card; + player.markSkill('jianying_mark'); + game.broadcastAll(function(player,suit){ + if(player.marks.jianying_mark) player.marks.jianying_mark.firstChild.innerHTML=get.translation(suit); + },player,get.suit(trigger.card,player)); + player.when('phaseUseAfter').then(()=>{ + player.unmarkSkill('jianying_mark'); + delete player.storage.jianying_mark; + }); + } + } + }, + onremove:function(player){ + player.unmarkSkill('jianying_mark'); + delete player.storage.jianying_mark; + }, subSkill:{ draw:{inherit:'jianying',audio:'xinjianying'}, }, diff --git a/character/refresh.js b/character/refresh.js index 95a1f1a0c..e7fa54d9e 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -3269,6 +3269,60 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ player.draw(); }, + group:'dcjianying_mark', + init:function(player){ + var history=player.getAllHistory('useCard'); + if(history.length){ + var trigger=history[history.length-1]; + if(get.suit(trigger.card,player)=='none'||typeof get.number(trigger.card,player)!='number') return; + player.storage.dcjianying_mark=trigger.card; + player.markSkill('dcjianying_mark'); + game.broadcastAll(function(player,suit){ + if(player.marks.dcjianying_mark) player.marks.dcjianying_mark.firstChild.innerHTML=get.translation(suit); + },player,get.suit(trigger.card,player)); + } + }, + onremove:function(player){ + player.unmarkSkill('dcjianying_mark'); + delete player.storage.dcjianying_mark; + }, + subSkill:{ + mark:{ + charlotte:true, + trigger:{player:'useCard1'}, + forced:true, + popup:false, + firstDo:true, + content:function(){ + if(get.suit(trigger.card,player)=='none'||typeof get.number(trigger.card,player)!='number') player.unmarkSkill('dcjianying_mark'); + else{ + player.storage.dcjianying_mark=trigger.card; + player.markSkill('dcjianying_mark'); + game.broadcastAll(function(player,suit){ + if(player.marks.dcjianying_mark) player.marks.dcjianying_mark.firstChild.innerHTML=get.translation(suit); + },player,get.suit(trigger.card,player)); + } + }, + intro:{ + markcount:function(card,player){ + var num=get.number(card,player); + var list=[1,11,12,13]; + if(list.contains(num)) return ['A','J','Q','K'][list.indexOf(num)]; + return parseFloat(num); + }, + content:function(card,player){ + var suit=get.suit(card,player); + var num=get.number(card,player); + var str='
  • 上一张牌的花色:'+get.translation(suit); + str+='
  • 上一张牌的点数:'; + var list=[1,11,12,13]; + if(list.contains(num)) str+=['A(1)','J(11)','Q(12)','K(13)'][list.indexOf(num)]; + else str+=parseFloat(num); + return str; + }, + }, + }, + }, }, //十周年步练师 dcanxu:{ diff --git a/character/shiji.js b/character/shiji.js index 07eb16e1e..fdd77add4 100644 --- a/character/shiji.js +++ b/character/shiji.js @@ -1464,8 +1464,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'useCard1'}, forced:true, filter:function(event,player){ - return event.card.name=='sha'&&event.cards.length==1&&player.getHistory('useCard',function(evt){ - return evt.card.name=='sha'&&evt.cards.length==1; + if(event.card.name!='sha'||!event.cards||event.cards.length!=1) return false; + var evt=event.getParent('phaseUse'); + return evt&&evt.player==player&&player.getHistory('useCard',function(evt2){ + return evt2.card.name=='sha'&&evt.cards&&evt.cards.length==1&&evt2.getParent('phaseUse')==evt; }).indexOf(event)==0; }, content:function(){ @@ -3241,7 +3243,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, }, - group:['yizhu_use','yizhu_discard'], + group:'yizhu_use', subSkill:{ use:{ audio:'yizhu', @@ -3258,7 +3260,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return get.effect(event.targets[0],event.card,event.player,player)<0; }, prompt2:function(event,player){ - return '令'+get.translation(event.card)+'无效并可重新使用'; + return '令'+get.translation(event.card)+'无效'; }, content:function(){ trigger.cancel(); @@ -3269,26 +3271,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); player.unmarkAuto('yizhu',list); game.delayx(); - player.chooseUseTarget(trigger.card,trigger.cards,false,'nothrow'); - }, - }, - discard:{ - trigger:{ - global:['loseAfter','cardsDiscardAfter','loseAsyncAfter','equipAfter'], - }, - forced:true, - locked:false, - filter:function(event,player){ - return player.storage.yizhu&&player.storage.yizhu.length&&event.getd().filter(function(i){ - return player.storage.yizhu.contains(i); - }).length>0; - }, - content:function(){ - var list=trigger.getd().filter(function(i){ - return player.storage.yizhu.contains(i); - }); - player.unmarkAuto('yizhu',list); - player.draw(); }, }, }, @@ -6487,7 +6469,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ heji:'合击', heji_info:'当有角色使用的【决斗】或红色【杀】结算完成后,若此牌对应的目标数为1,则你可以对相同的目标使用一张【杀】或【决斗】(无距离和次数限制)。若你以此法使用的牌不为转化牌,则你从牌堆中随机获得一张红色牌。', liubing:'流兵', - liubing_info:'锁定技。①当你声明使用【杀】后,若此牌是你本回合使用的第一张有唯一对应实体牌的【杀】,则你将此牌的花色改为♦。②其他角色于其出牌阶段内使用的非转化黑色杀结算结束后,若此【杀】未造成伤害,则你获得之。', + liubing_info:'锁定技。①你于出牌阶段使用的第一张有唯一对应实体牌的【杀】的花色视为♦。②其他角色于其出牌阶段内使用的非转化黑色杀结算结束后,若此【杀】未造成伤害,则你获得之。', sp_mifuren:'手杀糜夫人', spcunsi:'存嗣', spcunsi2:'存嗣', @@ -6598,7 +6580,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rehuaibi_info:'主公技,锁定技,你的手牌上限+X(X为你因〖邀虎〗选择势力的角色数量)。', qiaogong:'桥公', yizhu:'遗珠', - yizhu_info:'①结束阶段,你摸两张牌,然后将两张牌随机插入牌堆前2X张牌的位置中(X为角色数,选择牌的牌名对其他角色可见)。②当有其他角色使用“遗珠”牌指定唯一目标时,你可清除对应的“遗珠”标记并取消此目标,然后你可使用此牌。③当有“遗珠”牌进入弃牌堆后,你摸一张牌并清除对应的“遗珠”标记。', + yizhu_info:'①结束阶段,你摸两张牌,然后将两张牌随机插入牌堆前2X张牌的位置中(X为角色数,选择牌的牌名对其他角色可见)。②其他角色使用“遗珠”牌指定唯一目标时,你可以取消此目标,然后你清除对应的“遗珠”标记。', luanchou:'鸾俦', luanchou_info:'出牌阶段限一次,你可令两名角色获得“姻”标记并清除原有标记。拥有“姻”标记的角色视为拥有技能〖共患〗。', gonghuan:'共患', diff --git a/character/xianding.js b/character/xianding.js index 8e7a2258b..ca9f0ddbd 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -7188,6 +7188,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var number=get.number(card,false); game.log(player,'将','#y'+get.strNumber(number),'记录为','#g“圆环之弧”'); player.markAuto('dcgeyuan_homura',[number]); + player.markSkill('dcgeyuan'); if(player.getStorage('dcgeyuan').length>player.getStorage('dcgeyuan_homura').length){ if(cards.length>0) event.redo(); else event.finish() @@ -7235,6 +7236,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var num1=list[0],num2=list[list.length-1]; player.storage.dcgeyuan_homura=[]; game.log(player,'清空了','#g“圆环之弧”'); + player.markSkill('dcgeyuan'); if(player.getStorage('dcgeyuan').length>3){ player.unmarkAuto('dcgeyuan',[num1,num2]); game.log(player,'从','#g“圆环之理”','中移除了','#y'+get.strNumber(num1),'和','#y'+get.strNumber(num2)); @@ -7308,6 +7310,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, intro:{ name:'圆环之理', + markcount:function(storage,player){ + if(!player.storage.dcgeyuan||!player.getStorage('dcgeyuan_homura').length) return 0; + var list=player.storage.dcgeyuan.filter(i=>lib.skill.dcgeyuan.filterNumber(player,i)); + if(!list.length) return 0; + list=list.map(num=>{ + var list=[1,10,11,12,13]; + if(list.contains(num)) return ['A','X','J','Q','K'][list.indexOf(num)]; + return parseFloat(num); + }); + return list.reduce((str,num)=>{ + return str+num; + },''); + }, mark:function(dialog,storage,player){ dialog.content.style['overflow-x']='visible'; var list=storage; diff --git a/character/yijiang.js b/character/yijiang.js index 3b0ab80c9..e376d5c5e 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -13627,6 +13627,76 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ player.draw(); }, + group:'jianying_mark', + init:function(player){ + if(player.isPhaseUsing()){ + var evt=_status.event.getParent('phaseUse'); + var history=player.getHistory('useCard',function(evt2){ + return evt2.getParent('phaseUse')==evt; + }); + if(history.length){ + var trigger=history[history.length-1]; + if(get.suit(trigger.card,player)=='none'||typeof get.number(trigger.card,player)!='number') return; + player.storage.jianying_mark=trigger.card; + player.markSkill('jianying_mark'); + game.broadcastAll(function(player,suit){ + if(player.marks.jianying_mark) player.marks.jianying_mark.firstChild.innerHTML=get.translation(suit); + },player,get.suit(trigger.card,player)); + player.when('phaseUseAfter').then(()=>{ + player.unmarkSkill('jianying_mark'); + delete player.storage.jianying_mark; + }); + } + } + }, + onremove:function(player){ + player.unmarkSkill('jianying_mark'); + delete player.storage.jianying_mark; + }, + subSkill:{ + mark:{ + charlotte:true, + trigger:{player:'useCard1'}, + filter:function(event,player){ + return player.isPhaseUsing(); + }, + forced:true, + popup:false, + firstDo:true, + content:function(){ + if(get.suit(trigger.card,player)=='none'||typeof get.number(trigger.card,player)!='number') player.unmarkSkill('jianying_mark'); + else{ + player.storage.jianying_mark=trigger.card; + player.markSkill('jianying_mark'); + game.broadcastAll(function(player,suit){ + if(player.marks.jianying_mark) player.marks.jianying_mark.firstChild.innerHTML=get.translation(suit); + },player,get.suit(trigger.card,player)); + player.when('phaseUseAfter').then(()=>{ + player.unmarkSkill('jianying_mark'); + delete player.storage.jianying_mark; + }); + } + }, + intro:{ + markcount:function(card,player){ + var num=get.number(card,player); + var list=[1,11,12,13]; + if(list.contains(num)) return ['A','J','Q','K'][list.indexOf(num)]; + return parseFloat(num); + }, + content:function(card,player){ + var suit=get.suit(card,player); + var num=get.number(card,player); + var str='
  • 上一张牌的花色:'+get.translation(suit); + str+='
  • 上一张牌的点数:'; + var list=[1,11,12,13]; + if(list.contains(num)) str+=['A(1)','J(11)','Q(12)','K(13)'][list.indexOf(num)]; + else str+=parseFloat(num); + return str; + }, + }, + }, + }, }, zzhenggong:{ trigger:{player:'damageEnd'},