From 49c09b49e70d47bedddc582766150b21e83d7377 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Thu, 30 Nov 2023 22:26:45 +0800 Subject: [PATCH 001/302] =?UTF-8?q?=E6=9D=80ai?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/standard.js | 97 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 64 insertions(+), 33 deletions(-) diff --git a/card/standard.js b/card/standard.js index be39d7805..6b7abd19b 100644 --- a/card/standard.js +++ b/card/standard.js @@ -252,10 +252,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, canLink:function(player,target,card){ if(!target.isLinked()&&!player.hasSkill('wutiesuolian_skill')) return false; - if(target.mayHaveShan()&&!player.hasSkillTag('directHit_ai',true,{ - target:target, - card:card, - },true)) return false; if(player.hasSkill('jueqing')||player.hasSkill('gangzhi')||target.hasSkill('gangzhi')) return false; return true; }, @@ -264,42 +260,77 @@ game.import('card',function(lib,game,ui,get,ai,_status){ value:[5,3,1], }, order:function(item,player){ - if(player.hasSkillTag('presha',true,null,true)) return 10; - if(game.hasNature(item,'linked')){ - if(game.hasPlayer(function(current){ - return current!=player&¤t.isLinked()&&player.canUse(item,current,null,true)&&get.effect(current,item,player,player)>0&&lib.card.sha.ai.canLink(player,current,item); - })&&game.countPlayer(function(current){ - return current.isLinked()&&get.damageEffect(current,player,player,get.nature(item))>0; - })>1) return 3.1; - return 3; + let res=3.2; + if(player.hasSkillTag('presha',true,null,true)) res=10; + if(get.itemtype(player)!=='player') return res; + let uv=player.getUseValue(item,true); + if(uv<=0) return res; + let ignore=get.copy(ui.selected.cards),used=player.getCardUsable('sha')-1.5,ph=player.getCards('hs'); + ignore.add(item); + if(typeof item==='object'&&item.cards) ignore.addArray(item.cards); + for(let i of ph){ + if(ignore.includes(i)||get.name(i)!=='sha'||!lib.filter.cardEnabled(i,player)) continue; + let usev=player.getUseValue(i,true); + if(usev<=0||used*(usev-uv)>0) continue; + if(used*(uv-usev)!==0) return res-0.15; + let na=get.natureList(uv),nb=get.natureList(usev); + if(used*(na.length-nb.length)>0) return res-0.15; + if(na.length&&na.length===nb.length&&na[0]!==nb[0]){ + let natures=['thunder','fire','ice','kami']; + if(used*(natures.indexOf(na[0])-natures.indexOf(nb[0]))>0) return res-0.15; + } + if(get.number(item)>get.number(i)) return res-0.15; } - return 3.05; + return res; }, result:{ target:function(player,target,card,isLink){ - var eff=function(){ - if(!isLink&&player.hasSkill('jiu')){ - if(!target.hasSkillTag('filterDamage',null,{ - player:player, - card:card, - jiu:true, - })){ - if(get.attitude(player,target)>0){ - return -7; - } - else{ - return -4; - } - } - return -0.5; + if(target._sha_result_temp) return -1.5; + target._sha_result_temp=true; + let basic=1,eff=-1.5,zhu=target.isZhu&&target.identityShown; + if(!target.hasSkillTag('filterDamage',null,{ + player:player, + card:card, + jiu:player.hasSkill('jiu'), + })&&(player.hasSkill('jiu')||player.hasSkillTag('damageBonus',true,{ + target:target, + card:card + }))){ + if(target.hp<2) basic=5; + else if(target.hp===2) basic=3; + else basic=2; + } + else if(target.hp<2) basic*=3; + if(zhu) eff*=Math.max(1,9/target.hp/target.hp); + if(isLink){ + let rate=_status.event.getTempCache('sha_result','mayShan'); + delete target._sha_result_temp; + if(typeof rate==='boolean'||typeof rate==='number'){ + if(!rate) return basic*eff*1.3; + if(rate>=1) return eff; + return basic*eff*(1.3-0.9*rate); } - return -1.5; - }(); - if(!isLink&&target.mayHaveShan()&&!player.hasSkillTag('directHit_ai',true,{ + return basic*eff; + } + let mayShan; + if(player.hasSkillTag('directHit_ai',true,{ target:target, card:card, - },true)) return eff/1.2; - return eff; + },true)||game.hasNature(card,'stab')&&target.countCards('he')<2&&!target.hasSkillTag('noh')) mayShan=false; + else{ + let temp=target.getKnownCards(player); + if(temp.some(i=>{ + let name=get.name(i,target); + if(name==='shan'||name==='hufu') return lib.filter.cardEnabled(i,target,'forceEnable'); + return false; + })) mayShan=true; + else mayShan=1-Math.pow(0.7,(target.hasSkillTag('respondShan',true,'use',true)?1:0)+target.countCards('hs')-temp.length); + } + _status.event.putTempCache('sha_result','mayShan',mayShan); + delete target._sha_result_temp; + if(!mayShan) return basic*eff; + if(mayShan>=1) return eff; + return basic*eff*(1.3-0.9*mayShan); }, }, tag:{ From 7e01a6068a5feb6401c2dff78403135a75a4bdc3 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Sat, 2 Dec 2023 00:40:44 +0800 Subject: [PATCH 002/302] bugfix --- character/sp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/sp.js b/character/sp.js index 0dbf0d90d..39a5dedbd 100755 --- a/character/sp.js +++ b/character/sp.js @@ -8155,7 +8155,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, check:function(button){ let player=_status.event.player,hs=player.getCards('h',card=>{ - return get.name(card)!==button.link[2]&&(!button.link[3]||get.hasNature(card,button.link[3])); + return get.name(card)!==button.link[2]&&(!button.link[3]||game.hasNature(card,button.link[3])); }),bool=false,map={}; for(let i of hs){ let color=get.color(i); From d51551f73424c4a7062f716de5f61bd792d40f57 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Sat, 2 Dec 2023 15:45:50 +0800 Subject: [PATCH 003/302] Revert "bugfix" This reverts commit 7e01a6068a5feb6401c2dff78403135a75a4bdc3. --- character/sp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/sp.js b/character/sp.js index 39a5dedbd..0dbf0d90d 100755 --- a/character/sp.js +++ b/character/sp.js @@ -8155,7 +8155,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, check:function(button){ let player=_status.event.player,hs=player.getCards('h',card=>{ - return get.name(card)!==button.link[2]&&(!button.link[3]||game.hasNature(card,button.link[3])); + return get.name(card)!==button.link[2]&&(!button.link[3]||get.hasNature(card,button.link[3])); }),bool=false,map={}; for(let i of hs){ let color=get.color(i); From b9d27a128ac341a966055632f3430431d891db5c Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Sat, 2 Dec 2023 15:53:47 +0800 Subject: [PATCH 004/302] =?UTF-8?q?=E5=A4=A7=E5=B9=85=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=9D=80order=E5=92=8C=E9=85=92result=EF=BC=8Cbug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 杀的order时间复杂度降下来了,基本可以避免用一卡一的情况了; 同时也降低了酒的result时间复杂度 --- card/extra.js | 64 +++++++++++++++++++++++++++++++++--------------- card/standard.js | 35 +++++++++++++++----------- 2 files changed, 65 insertions(+), 34 deletions(-) diff --git a/card/extra.js b/card/extra.js index 5fdfcdf0b..e77ed3ee9 100644 --- a/card/extra.js +++ b/card/extra.js @@ -123,34 +123,58 @@ game.import('card',function(lib,game,ui,get,ai,_status){ return 0; }, result:{ - target:(player,target)=>{ + target:(player,target,card)=>{ if(target&&target.isDying()) return 2; if(!target || target._jiu_temp || !target.isPhaseUsing()) return 0; - if(!target.getCardUsable('sha') || lib.config.mode==='stone'&&!player.isMin()&&player.getActCount()+1>=player.actcount) return 0; - let shas = player.getCards('hs',card=>get.name(card)==='sha'&&!ui.selected.cards.includes(card)), card; - if(!shas.length || !target.hasSha() || shas.length>1&&(target.getCardUsable('sha')>1 || target.countCards('hs','zhuge'))) return 0; - target._jiu_temp = true; - shas.sort((a,b)=>get.order(b)-get.order(a)); - for(let i=0; i{ - return get.attitude(target,current)<0&&target.canUse(shas[i],current,null,true)&&!current.hasSkillTag('filterDamage',null,{ + let usable=target.getCardUsable('sha'); + if(!usable || lib.config.mode==='stone'&&!player.isMin()&&player.getActCount()+1>=player.actcount || !target.mayHaveSha(player,'use',card)) return 0; + let effs=_status.event.getTempCache('jiu_result','effs'); + if(effs&&effs[card.cardid]){ + for(let i in effs){ + if(effs[i].target&&effs[i].target.isIn()&&effs[i].eff>0) return 1; + } + return 0; + } + effs={}; + let shas=target.getCards('hs',i=>{ + if(get.name(i)!=='sha' || ui.selected.cards.includes(i)) return false; + effs[i.cardid]={ + target:null, + eff:0 + }; + return true; + }),eff,id; + for(let i of shas){ + id=i.cardid; + if(!lib.filter.filterCard(i,target)) continue; + game.filterPlayer(current=>{ + if(get.attitude(target,current)>=0 || !target.canUse(i,current,null,true) || current.hasSkillTag('filterDamage',null,{ player:target, - card:shas[i], + card:i, jiu:true - })&&get.effect(current,shas[i],target)>0; + })) return false; + eff=get.effect(current,i,target,player); + if(eff<=effs[id].eff) return false; + effs[id].target=current; + effs[id].eff=eff; + return false; }); - if(!tars.length) continue; - tars.sort((a,b)=>{ - return get.effect(b,shas[i],target)-get.effect(a,shas[i],target); - }); - if(!tars[0].mayHaveShan(player,'use') || target.hasSkillTag('directHit_ai',true,{ - target:tars[0], - card:shas[i] - },true) || target.needsToDiscard()>Math.max(0,3-target.hp)){ + if(effs[id].target&&(target.hasSkillTag('directHit_ai',true,{ + target:effs[id].target, + card:i + },true) || target.needsToDiscard()>Math.max(0,3-target.hp) || !effs[id].target.mayHaveShan(player,'use'))){ + if(card.cardid){ + effs[card.cardid]={target:null}; + _status.event.putTempCache('jiu_result','effs',effs); + } delete target._jiu_temp; return 1; } + delete effs[id]; + } + if(card.cardid){ + effs[card.cardid]={target:null}; + _status.event.putTempCache('jiu_result','effs',effs); } delete target._jiu_temp; return 0; diff --git a/card/standard.js b/card/standard.js index 6b7abd19b..e98d1875c 100644 --- a/card/standard.js +++ b/card/standard.js @@ -263,23 +263,25 @@ game.import('card',function(lib,game,ui,get,ai,_status){ let res=3.2; if(player.hasSkillTag('presha',true,null,true)) res=10; if(get.itemtype(player)!=='player') return res; - let uv=player.getUseValue(item,true); - if(uv<=0) return res; + /*let uv=player.getUseValue(item,true); + if(uv<=0) return res;*/ let ignore=get.copy(ui.selected.cards),used=player.getCardUsable('sha')-1.5,ph=player.getCards('hs'); ignore.add(item); if(typeof item==='object'&&item.cards) ignore.addArray(item.cards); + let na=get.natureList(item),number=get.number(item),natures=['thunder','fire','ice','kami'],nb; for(let i of ph){ if(ignore.includes(i)||get.name(i)!=='sha'||!lib.filter.cardEnabled(i,player)) continue; - let usev=player.getUseValue(i,true); - if(usev<=0||used*(usev-uv)>0) continue; - if(used*(uv-usev)!==0) return res-0.15; - let na=get.natureList(uv),nb=get.natureList(usev); + nb=get.natureList(i); + if(na.length===nb.length&&(!na.length||na[0]===nb[0])){ + if(number>get.number(i)) return res-0.15; + continue; + } if(used*(na.length-nb.length)>0) return res-0.15; - if(na.length&&na.length===nb.length&&na[0]!==nb[0]){ - let natures=['thunder','fire','ice','kami']; + if(na.length===nb.length){ if(used*(natures.indexOf(na[0])-natures.indexOf(nb[0]))>0) return res-0.15; } - if(get.number(item)>get.number(i)) return res-0.15; + /*usev=player.getUseValue(i,true); + if(usev>0&&used*(uv-usev)>0) return res-0.15;*/ } return res; }, @@ -304,6 +306,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(zhu) eff*=Math.max(1,9/target.hp/target.hp); if(isLink){ let rate=_status.event.getTempCache('sha_result','mayShan'); + if(rate&&rate.card===card) rate=rate.rate; delete target._sha_result_temp; if(typeof rate==='boolean'||typeof rate==='number'){ if(!rate) return basic*eff*1.3; @@ -326,7 +329,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){ })) mayShan=true; else mayShan=1-Math.pow(0.7,(target.hasSkillTag('respondShan',true,'use',true)?1:0)+target.countCards('hs')-temp.length); } - _status.event.putTempCache('sha_result','mayShan',mayShan); + _status.event.putTempCache('sha_result','mayShan',{ + card:card, + rate:mayShan + }); delete target._sha_result_temp; if(!mayShan) return basic*eff; if(mayShan>=1) return eff; @@ -1875,12 +1881,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){ return num+get.value(i,player); },0); }, - target:(player,target)=>{ + target:(player,target,card)=>{ let targets=get.copy(ui.selected.targets); if(_status.event.preTarget) targets.add(_status.event.preTarget); if(targets.length){ - let preTarget=targets.lastItem,pre=_status.event.getTempCache('jiedao_result',preTarget); - if(pre&&pre.target.isIn()) return target===pre.target?pre.eff:0; + let preTarget=targets.lastItem,pre=_status.event.getTempCache('jiedao_result',preTarget.playerid); + if(pre&&pre.card===card&&pre.target.isIn()) return target===pre.target?pre.eff:0; return get.effect(target,{name:'sha'},preTarget,player)/get.attitude(player,target); } let arms=(target.hasSkillTag('noe')?0.32:-0.15)*target.getEquips(1).reduce((num,i)=>{ @@ -1896,7 +1902,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){ },-100); if(!addTar) return arms; sha/=get.attitude(player,target); - _status.event.putTempCache('jiedao_result',target,{ + _status.event.putTempCache('jiedao_result',target.playerid,{ + card:card, target:addTar, eff:sha }); From 3674ef68a6d5eb1cd68f332ecd35aca1f21c96c0 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Sat, 2 Dec 2023 17:56:10 +0800 Subject: [PATCH 005/302] =?UTF-8?q?=E6=8B=89=E6=8B=A2=E4=BA=BA=E5=BF=83ai?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mode/guozhan.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mode/guozhan.js b/mode/guozhan.js index 2985b2ef7..32535a784 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -13354,7 +13354,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ var target=targets.shift(); event.target=target; source.line(target,'green'); - target.chooseBool('是否响应'+get.translation(source)+'发起的【拉拢人心】?','将势力改为'+event.text).set('choice',Math.random()<=0.98);//反骨[doge] + target.chooseBool('是否响应'+get.translation(source)+'发起的【拉拢人心】?','将势力改为'+event.text).set('ai',_status.event.choice).set('choice',function(){ + let fs=target.getFriends(true).length; + if(game.players.length<=2*fs) return false; + if(source.getFriends(true).length+fs>game.players.length/2) return true; + if(target.isDamaged()||target.countCards('h')<4) return false; + return true; + }()); 'step 6' if(result.bool){ target.chat('加入'); From 9a80519cc87bf982d64354e1ffbde853e9b7478f Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Sun, 3 Dec 2023 15:05:23 +0800 Subject: [PATCH 006/302] =?UTF-8?q?=E4=BC=98=E5=8C=96=E3=80=90=E6=8C=AF?= =?UTF-8?q?=E9=9E=98=E3=80=91ai?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/jsrg.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/character/jsrg.js b/character/jsrg.js index 628d6cc20..5f4ead068 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -5376,11 +5376,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ effect:{ target:function(card,player,target){ if(player._jsrgzhenqiao_aiChecking) return; - if(target==player&&get.subtype(card)=='equip1'&&!player.getEquip(1)){ - player._jsrgzhenqiao_aiChecking=true; - var eff=get.effect(target,card,player,player); - delete player._jsrgzhenqiao_aiChecking; - if(eff<3) return 'zerotarget'; + if(target===player&&get.subtype(card)==='equip1'&&!player.getEquip(1)){ + if(card.name!=='zhuge'||target.getCardUsable('sha')||!target.needsToDiscard()) return; + if(target.countCards('hs',i=>{ + return get.name(i)==='sha'&&lib.filter.cardEnabled(i,target); + })>1) return 'zeroplayertarget'; } } } From e20fb882196678ffdba9b66242153792803f22ff Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Mon, 4 Dec 2023 17:27:51 +0800 Subject: [PATCH 007/302] =?UTF-8?q?=E7=8C=9C=E6=9D=80=E7=8C=9C=E9=97=AA?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E4=B8=9A=E5=8A=A1=E6=8B=93=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增形参rvt: return value type 可选'count'(估算数量) 'odds'(估算有的概率,可能是布尔值) ‘bool'(默认猜有无) --- game/game.js | 74 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 26 deletions(-) diff --git a/game/game.js b/game/game.js index 65f37e630..8eec61474 100644 --- a/game/game.js +++ b/game/game.js @@ -28790,20 +28790,20 @@ new Promise(resolve=>{ if(this.hasSkillTag('respondShan',true,null,true)) return true; return this.hasUsableCard('shan'); } - mayHaveSha(viewer,type,ignore){ - if((this.hp>2||!this.isZhu&&this.hp>1)&&this.hasSkillTag('respondSha',true,type,true)) return true; + mayHaveSha(viewer,type,ignore,rvt){ + //rvt: return value type 'count', 'odds', 'bool'(default) + let count=0; + if((this.hp>2||!this.isZhu&&this.hp>1)&&this.hasSkillTag('respondSha',true,type,true)){ + if(rvt==='count') count++; + else return true; + } if(get.itemtype(viewer)!=='player') viewer=_status.event.player; let cards,selected=get.copy(ui.selected.cards); if(get.itemtype(ignore)==='cards') selected.addArray(ignore); else if(get.itemtype(ignore)==='card') selected.add(ignore); - /*if(this===viewer||get.itemtype(viewer)==='player'&&viewer.hasSkillTag('viewHandcard',null,this,true)) cards=this.getCards('h'); - else cards=this.getShownCards();*/ - if(this === viewer || get.itemtype(viewer) == 'player'){ - cards = this.getKnownCards(viewer); - }else{ - cards = this.getShownCards(); - } - if(cards.some(card=>{ + if(this === viewer || get.itemtype(viewer) == 'player') cards = this.getKnownCards(viewer); + else cards = this.getShownCards(); + count+=cards.filter(card=>{ if(selected.includes(card)) return false; let name=get.name(card,this); if(name=='sha'||name=='hufu'||name=='yuchanqian'){ @@ -28812,25 +28812,36 @@ new Promise(resolve=>{ return true; } return false; - })) return true; + }).length; + if(count&&rvt!=='count') return true; let hs=this.getCards('hs').filter(i=>!cards.includes(i)&&!selected.includes(i)).length; - if(hs===0) return false; - return Math.pow(hs+(this.isPhaseUsing()?6:4),2)>100*_status.event.getRand('mayHaveSha'); + if(!hs){ + if(rvt==='count') return count; + return false; + } + if(rvt==='count'){ + if(this.isPhaseUsing()) return count+hs/4; + return count+hs/4.8; + } + if(this.isPhaseUsing()) count+=Math.pow(2+hs,2)/40; + else count+=-1.5*Math.log(1-hs/10); + if(rvt==='odds') return Math.min(1,count); + return count>_status.event.getRand('mayHaveSha'+hs+this.playerid); } - mayHaveShan(viewer,type,ignore){ - if((this.hp>2||!this.isZhu&&this.hp>1)&&this.hasSkillTag('respondShan',true,type,true)) return true; + mayHaveShan(viewer,type,ignore,rvt){ + //rvt: return value type 'count', 'odds', 'bool'(default) + let count=0; + if((this.hp>2||!this.isZhu&&this.hp>1)&&this.hasSkillTag('respondShan',true,type,true)){ + if(rvt==='count') count++; + else return true; + } if(get.itemtype(viewer)!=='player') viewer=_status.event.player; let cards,selected=get.copy(ui.selected.cards); if(get.itemtype(ignore)==='cards') selected.addArray(ignore); else if(get.itemtype(ignore)==='card') selected.add(ignore); - /*if(this===viewer||get.itemtype(viewer)==='player'&&viewer.hasSkillTag('viewHandcard',null,this,true)) cards=this.getCards('h'); - else cards=this.getShownCards();*/ - if(this === viewer || get.itemtype(viewer) == 'player'){ - cards = this.getKnownCards(viewer); - }else{ - cards = this.getShownCards(); - } - if(cards.some(card=>{ + if(this === viewer || get.itemtype(viewer) == 'player') cards = this.getKnownCards(viewer); + else cards = this.getShownCards(); + count+=cards.filter(card=>{ if(selected.includes(card)) return false; let name=get.name(card,this); if(name==='shan'||name==='hufu'){ @@ -28839,10 +28850,21 @@ new Promise(resolve=>{ return true; } return false; - })) return true; + }).length; + if(count&&rvt!=='count') return true; let hs=this.getCards('hs').filter(i=>!cards.includes(i)&&!selected.includes(i)).length; - if(hs===0) return false; - return Math.pow(hs+(this.isPhaseUsing()?3:5),2)>100*_status.event.getRand('mayHaveShan'); + if(!hs){ + if(rvt==='count') return count; + return false; + } + if(rvt==='count'){ + if(this.isPhaseUsing()) return count+hs/6; + return count+hs/3.5; + } + if(this.isPhaseUsing()) count+=-1.5*Math.log(1-hs/10); + else count+=2*hs/(5+hs); + if(rvt==='odds') return Math.min(1,count); + return count>_status.event.getRand('mayHaveShan'+hs+this.playerid); } hasCard(name,position){ if(typeof name=='function'){ From 92877ce163d16a652048d5575582da95df942d79 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Mon, 4 Dec 2023 18:09:47 +0800 Subject: [PATCH 008/302] =?UTF-8?q?ai=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/extra.js | 51 +++++++++++++++++++-------------------------------- 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/card/extra.js b/card/extra.js index e77ed3ee9..d85e983b8 100644 --- a/card/extra.js +++ b/card/extra.js @@ -128,53 +128,40 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(!target || target._jiu_temp || !target.isPhaseUsing()) return 0; let usable=target.getCardUsable('sha'); if(!usable || lib.config.mode==='stone'&&!player.isMin()&&player.getActCount()+1>=player.actcount || !target.mayHaveSha(player,'use',card)) return 0; - let effs=_status.event.getTempCache('jiu_result','effs'); - if(effs&&effs[card.cardid]){ - for(let i in effs){ - if(effs[i].target&&effs[i].target.isIn()&&effs[i].eff>0) return 1; - } - return 0; - } - effs={}; - let shas=target.getCards('hs',i=>{ + let effs={order:0},temp; + target.getCards('hs',i=>{ if(get.name(i)!=='sha' || ui.selected.cards.includes(i)) return false; + temp=get.order(i,target); + if(tempeffs.order) effs={order:temp}; effs[i.cardid]={ + card:i, target:null, eff:0 }; - return true; - }),eff,id; - for(let i of shas){ - id=i.cardid; - if(!lib.filter.filterCard(i,target)) continue; + }); + delete effs.order; + for(let i in effs){ + if(!lib.filter.filterCard(effs[i].card,target)) continue; game.filterPlayer(current=>{ - if(get.attitude(target,current)>=0 || !target.canUse(i,current,null,true) || current.hasSkillTag('filterDamage',null,{ + if(get.attitude(target,current)>=0 || !target.canUse(effs[i].card,current,null,true) || current.hasSkillTag('filterDamage',null,{ player:target, - card:i, + card:effs[i].card, jiu:true })) return false; - eff=get.effect(current,i,target,player); - if(eff<=effs[id].eff) return false; - effs[id].target=current; - effs[id].eff=eff; + temp=get.effect(current,effs[i].card,target,player); + if(temp<=effs[i].eff) return false; + effs[i].target=current; + effs[i].eff=temp; return false; }); - if(effs[id].target&&(target.hasSkillTag('directHit_ai',true,{ - target:effs[id].target, + if(effs[i].target&&(target.hasSkillTag('directHit_ai',true,{ + target:effs[i].target, card:i - },true) || target.needsToDiscard()>Math.max(0,3-target.hp) || !effs[id].target.mayHaveShan(player,'use'))){ - if(card.cardid){ - effs[card.cardid]={target:null}; - _status.event.putTempCache('jiu_result','effs',effs); - } + },true) || target.needsToDiscard()>Math.max(0,3-target.hp) || !effs[i].target.mayHaveShan(player,'use'))){ delete target._jiu_temp; return 1; } - delete effs[id]; - } - if(card.cardid){ - effs[card.cardid]={target:null}; - _status.event.putTempCache('jiu_result','effs',effs); } delete target._jiu_temp; return 0; From f3efb6af89282088802e0e6b8995c0d5b7ff989e Mon Sep 17 00:00:00 2001 From: Spmario233 Date: Mon, 4 Dec 2023 20:54:47 +0800 Subject: [PATCH 009/302] Update asset.js --- game/asset.js | 3960 ++++++++++++++++++++++++------------------------- 1 file changed, 1980 insertions(+), 1980 deletions(-) diff --git a/game/asset.js b/game/asset.js index f62319521..d82f53af8 100644 --- a/game/asset.js +++ b/game/asset.js @@ -6546,1985 +6546,1985 @@ window.noname_asset_list=[ /*card image end*/ /*character image begin*/ - 'image/card/ahuinan.jpg', - 'image/card/baiwuchang.jpg', - 'image/card/baosanniang.jpg', - 'image/card/baoxin.jpg', - 'image/card/beimihu.jpg', - 'image/card/bianfuren.jpg', - 'image/card/bianxi.jpg', - 'image/card/boss_zhaoyun.jpg', - 'image/card/bulianshi.jpg', - 'image/card/buzhi.jpg', - 'image/card/caifuren.jpg', - 'image/card/caimaozhangyun.jpg', - 'image/card/caiwenji.jpg', - 'image/card/caiyang.jpg', - 'image/card/caiyong.jpg', - 'image/card/caizhenji.jpg', - 'image/card/caoang.jpg', - 'image/card/caoanmin.jpg', - 'image/card/caobuxing.jpg', - 'image/card/caocao.jpg', - 'image/card/caochong.jpg', - 'image/card/caochun.jpg', - 'image/card/caohong.jpg', - 'image/card/caohua.jpg', - 'image/card/caojie.jpg', - 'image/card/caojinyu.jpg', - 'image/card/caomao.jpg', - 'image/card/caopi.jpg', - 'image/card/caoren.jpg', - 'image/card/caorui.jpg', - 'image/card/caoshuang.jpg', - 'image/card/caosong.jpg', - 'image/card/caoxi.jpg', - 'image/card/caoxiancaohua.jpg', - 'image/card/caoxing.jpg', - 'image/card/caoxiu.jpg', - 'image/card/caoying.jpg', - 'image/card/caozhang.jpg', - 'image/card/caozhen.jpg', - 'image/card/caozhi.jpg', - 'image/card/cenhun.jpg', - 'image/card/cheliji.jpg', - 'image/card/chendao.jpg', - 'image/card/chendeng.jpg', - 'image/card/chendong.jpg', - 'image/card/chengbing.jpg', - 'image/card/chengjichengcui.jpg', - 'image/card/chengong.jpg', - 'image/card/chengpu.jpg', - 'image/card/chengui.jpg', - 'image/card/chengyu.jpg', - 'image/card/chenjiao.jpg', - 'image/card/chenlin.jpg', - 'image/card/chenqun.jpg', - 'image/card/chenshi.jpg', - 'image/card/chentai.jpg', - 'image/card/chunyuqiong.jpg', - 'image/card/clan_hanrong.jpg', - 'image/card/clan_hanshao.jpg', - 'image/card/clan_wanghun.jpg', - 'image/card/clan_wangling.jpg', - 'image/card/clan_wanglun.jpg', - 'image/card/clan_wangyun.jpg', - 'image/card/clan_wuban.jpg', - 'image/card/clan_wukuang.jpg', - 'image/card/clan_wuxian.jpg', - 'image/card/clan_xuncai.jpg', - 'image/card/clan_xuncan.jpg', - 'image/card/clan_xunchen.jpg', - 'image/card/clan_xunshu.jpg', - 'image/card/clan_xunyou.jpg', - 'image/card/clan_zhonghui.jpg', - 'image/card/clan_zhongyan.jpg', - 'image/card/clan_zhongyu.jpg', - 'image/card/cuimao.jpg', - 'image/card/cuiyan.jpg', - 'image/card/daqiao.jpg', - 'image/card/daxiaoqiao.jpg', - 'image/card/db_key_hina.jpg', - 'image/card/db_key_liyingxia.jpg', - 'image/card/db_wenyang.jpg', - 'image/card/dc_bulianshi.jpg', - 'image/card/dc_caiyang.jpg', - 'image/card/dc_caocao.jpg', - 'image/card/dc_caozhi.jpg', - 'image/card/dc_chenqun.jpg', - 'image/card/dc_daxiaoqiao.jpg', - 'image/card/dc_dongzhao.jpg', - 'image/card/dc_duyu.jpg', - 'image/card/dc_fuwan.jpg', - 'image/card/dc_ganfuren.jpg', - 'image/card/dc_gaolan.jpg', - 'image/card/dc_gongsunzan.jpg', - 'image/card/dc_guansuo.jpg', - 'image/card/dc_huangchengyan.jpg', - 'image/card/dc_huanghao.jpg', - 'image/card/dc_huangquan.jpg', - 'image/card/dc_huangzu.jpg', - 'image/card/dc_huban.jpg', - 'image/card/dc_hujinding.jpg', - 'image/card/dc_huojun.jpg', - 'image/card/dc_jiachong.jpg', - 'image/card/dc_jiben.jpg', - 'image/card/dc_jikang.jpg', - 'image/card/dc_jiling.jpg', - 'image/card/dc_jsp_guanyu.jpg', - 'image/card/dc_liru.jpg', - 'image/card/dc_liuba.jpg', - 'image/card/dc_liubei.jpg', - 'image/card/dc_liuye.jpg', - 'image/card/dc_liuyu.jpg', - 'image/card/dc_luotong.jpg', - 'image/card/dc_lvkuanglvxiang.jpg', - 'image/card/dc_mengda.jpg', - 'image/card/dc_mifuren.jpg', - 'image/card/dc_ruiji.jpg', - 'image/card/dc_shixie.jpg', - 'image/card/dc_sp_jiaxu.jpg', - 'image/card/dc_sp_machao.jpg', - 'image/card/dc_sunhanhua.jpg', - 'image/card/dc_sunquan.jpg', - 'image/card/dc_sunru.jpg', - 'image/card/dc_sunziliufang.jpg', - 'image/card/dc_tengfanglan.jpg', - 'image/card/dc_wangchang.jpg', - 'image/card/dc_wangjun.jpg', - 'image/card/dc_wangyun.jpg', - 'image/card/dc_wuban.jpg', - 'image/card/dc_xiahouba.jpg', - 'image/card/dc_xujing.jpg', - 'image/card/dc_xushu.jpg', - 'image/card/dc_yangbiao.jpg', - 'image/card/dc_yanghu.jpg', - 'image/card/dc_yuejiu.jpg', - 'image/card/dc_zhangmancheng.jpg', - 'image/card/dc_zhaotongzhaoguang.jpg', - 'image/card/dc_zhaoxiang.jpg', - 'image/card/dc_zhaoyǎn.jpg', - 'image/card/dc_zhouxuān.jpg', - 'image/card/dc_zhuling.jpg', - 'image/card/ddd_baosanniang.jpg', - 'image/card/ddd_caomao.jpg', - 'image/card/ddd_caoshuang.jpg', - 'image/card/ddd_dingfeng.jpg', - 'image/card/ddd_guanning.jpg', - 'image/card/ddd_handang.jpg', - 'image/card/ddd_jianshuo.jpg', - 'image/card/ddd_kebineng.jpg', - 'image/card/ddd_liangxi.jpg', - 'image/card/ddd_lie.jpg', - 'image/card/ddd_liuba.jpg', - 'image/card/ddd_liuhong.jpg', - 'image/card/ddd_liuye.jpg', - 'image/card/ddd_sunliang.jpg', - 'image/card/ddd_wangkanglvkai.jpg', - 'image/card/ddd_wuzhi.jpg', - 'image/card/ddd_xiahouxuan.jpg', - 'image/card/ddd_xianglang.jpg', - 'image/card/ddd_xinxianying.jpg', - 'image/card/ddd_xuelingyun.jpg', - 'image/card/ddd_xujing.jpg', - 'image/card/ddd_yujin.jpg', - 'image/card/ddd_zhangkai.jpg', - 'image/card/ddd_zhaoang.jpg', - 'image/card/ddd_zhenji.jpg', - 'image/card/ddd_zhouchu.jpg', - 'image/card/default_silhouette_female.jpg', - 'image/card/default_silhouette_male.jpg', - 'image/card/dengai.jpg', - 'image/card/dengzhi.jpg', - 'image/card/dengzhong.jpg', - 'image/card/dianwei.jpg', - 'image/card/diaochan.jpg', - 'image/card/dingfeng.jpg', - 'image/card/dingshangwan.jpg', - 'image/card/dingyuan.jpg', - 'image/card/diy_caiwenji.jpg', - 'image/card/diy_feishi.jpg', - 'image/card/diy_hanlong.jpg', - 'image/card/diy_huangzhong.jpg', - 'image/card/diy_liufu.jpg', - 'image/card/diy_liuyan.jpg', - 'image/card/diy_liuzan.jpg', - 'image/card/diy_lukang.jpg', - 'image/card/diy_menghuo.jpg', - 'image/card/diy_tianyu.jpg', - 'image/card/diy_weiyan.jpg', - 'image/card/diy_wenyang.jpg', - 'image/card/diy_xizhenxihong.jpg', - 'image/card/diy_xuhuang.jpg', - 'image/card/diy_yangyi.jpg', - 'image/card/diy_yuji.jpg', - 'image/card/diy_zaozhirenjun.jpg', - 'image/card/diy_zhenji.jpg', - 'image/card/diy_zhouyu.jpg', - 'image/card/dongbai.jpg', - 'image/card/dongcheng.jpg', - 'image/card/dongguiren.jpg', - 'image/card/dongtuna.jpg', - 'image/card/dongwan.jpg', - 'image/card/dongxie.jpg', - 'image/card/dongyun.jpg', - 'image/card/dongzhao.jpg', - 'image/card/dongzhuo.jpg', - 'image/card/duanjiong.jpg', - 'image/card/duanqiaoxiao.jpg', - 'image/card/duanwei.jpg', - 'image/card/dufuren.jpg', - 'image/card/duji.jpg', - 'image/card/dukui.jpg', - 'image/card/duosidawang.jpg', - 'image/card/duxi.jpg', - 'image/card/duyu.jpg', - 'image/card/fanchou.jpg', - 'image/card/fanjiangzhangda.jpg', - 'image/card/fanyufeng.jpg', - 'image/card/fazheng.jpg', - 'image/card/feiyao.jpg', - 'image/card/feiyi.jpg', - 'image/card/fengfang.jpg', - 'image/card/fengfangnv.jpg', - 'image/card/fengxi.jpg', - 'image/card/fuhuanghou.jpg', - 'image/card/fuqian.jpg', - 'image/card/furong.jpg', - 'image/card/furongfuqian.jpg', - 'image/card/fuwan.jpg', - 'image/card/ganfuren.jpg', - 'image/card/ganfurenmifuren.jpg', - 'image/card/ganning.jpg', - 'image/card/gaogan.jpg', - 'image/card/gaolan.jpg', - 'image/card/gaoshun.jpg', - 'image/card/gaoxiang.jpg', - 'image/card/gexuan.jpg', - 'image/card/gjqt_aruan.jpg', - 'image/card/gjqt_bailitusu.jpg', - 'image/card/gjqt_beiluo.jpg', - 'image/card/gjqt_cenying.jpg', - 'image/card/gjqt_chuqi.jpg', - 'image/card/gjqt_fanglansheng.jpg', - 'image/card/gjqt_fengqingxue.jpg', - 'image/card/gjqt_hongyu.jpg', - 'image/card/gjqt_ouyangshaogong.jpg', - 'image/card/gjqt_wenrenyu.jpg', - 'image/card/gjqt_xiangling.jpg', - 'image/card/gjqt_xiayize.jpg', - 'image/card/gjqt_xieyi.jpg', - 'image/card/gjqt_xunfang.jpg', - 'image/card/gjqt_yanjiaxieyi.jpg', - 'image/card/gjqt_yinqianshang.jpg', - 'image/card/gjqt_yuewuyi.jpg', - 'image/card/gjqt_yunwuyue.jpg', - 'image/card/gongsundu.jpg', - 'image/card/gongsunkang.jpg', - 'image/card/gongsunyuan.jpg', - 'image/card/gongsunzan.jpg', - 'image/card/guanhai.jpg', - 'image/card/guanlu.jpg', - 'image/card/guanning.jpg', - 'image/card/guānning.jpg', - 'image/card/guanping.jpg', - 'image/card/guanqiujian.jpg', - 'image/card/guansuo.jpg', - 'image/card/guanxingzhangbao.jpg', - 'image/card/guanyinping.jpg', - 'image/card/guanyu.jpg', - 'image/card/guanzhang.jpg', - 'image/card/guohuai.jpg', - 'image/card/guohuanghou.jpg', - 'image/card/guojia.jpg', - 'image/card/guosi.jpg', - 'image/card/guotufengji.jpg', - 'image/card/guozhao.jpg', - 'image/card/guyong.jpg', - 'image/card/gw_aigeleisi.jpg', - 'image/card/gw_aimin.jpg', - 'image/card/gw_airuiting.jpg', - 'image/card/gw_aisinie.jpg', - 'image/card/gw_aokeweisite.jpg', - 'image/card/gw_bierna.jpg', - 'image/card/gw_bulanwang.jpg', - 'image/card/gw_dagong.jpg', - 'image/card/gw_diandian.jpg', - 'image/card/gw_enxier.jpg', - 'image/card/gw_falanxisika.jpg', - 'image/card/gw_feilafanruide.jpg', - 'image/card/gw_fenghuang.jpg', - 'image/card/gw_fuertaisite.jpg', - 'image/card/gw_fulisi.jpg', - 'image/card/gw_gaier.jpg', - 'image/card/gw_haizhiyezhu.jpg', - 'image/card/gw_haluo.jpg', - 'image/card/gw_hanmuduoer.jpg', - 'image/card/gw_hengsaite.jpg', - 'image/card/gw_huoge.jpg', - 'image/card/gw_jieluote.jpg', - 'image/card/gw_kaerweite.jpg', - 'image/card/gw_kairuisi.jpg', - 'image/card/gw_kanbi.jpg', - 'image/card/gw_kaxier.jpg', - 'image/card/gw_kuite.jpg', - 'image/card/gw_laduoweide.jpg', - 'image/card/gw_lanbote.jpg', - 'image/card/gw_laomaotou.jpg', - 'image/card/gw_laomaotou2.jpg', - 'image/card/gw_linjing.jpg', - 'image/card/gw_luobo.jpg', - 'image/card/gw_luoqi.jpg', - 'image/card/gw_meizi.jpg', - 'image/card/gw_mieren.jpg', - 'image/card/gw_nitelila.jpg', - 'image/card/gw_nvyemo.jpg', - 'image/card/gw_oudimu.jpg', - 'image/card/gw_puxila.jpg', - 'image/card/gw_qigaiwang.jpg', - 'image/card/gw_sanhanya.jpg', - 'image/card/gw_saqiya.jpg', - 'image/card/gw_saqiya1.jpg', - 'image/card/gw_saqiya2.jpg', - 'image/card/gw_shanhu.jpg', - 'image/card/gw_shasixiwusi.jpg', - 'image/card/gw_telisi.jpg', - 'image/card/gw_xigedelifa.jpg', - 'image/card/gw_xili.jpg', - 'image/card/gw_yenaifa.jpg', - 'image/card/gw_yioufeisi.jpg', - 'image/card/gw_yioufeisisp.jpg', - 'image/card/gw_yisilinni.jpg', - 'image/card/gw_zhangyujushou.jpg', - 'image/card/gw_zhuoertan.jpg', - 'image/card/gz_caohong.jpg', - 'image/card/gz_caopi.jpg', - 'image/card/gz_chengong.jpg', - 'image/card/gz_dengai.jpg', - 'image/card/gz_dengzhi.jpg', - 'image/card/gz_dianwei.jpg', - 'image/card/gz_diaochan.jpg', - 'image/card/gz_dingfeng.jpg', - 'image/card/gz_fazheng.jpg', - 'image/card/gz_fengxi.jpg', - 'image/card/gz_ganfuren.jpg', - 'image/card/gz_gongsunyuan.jpg', - 'image/card/gz_guanyu.jpg', - 'image/card/gz_guohuai.jpg', - 'image/card/gz_guojia.jpg', - 'image/card/gz_hetaihou.jpg', - 'image/card/gz_huangyueying.jpg', - 'image/card/gz_huangzhong.jpg', - 'image/card/gz_huangzu.jpg', - 'image/card/gz_jiangwei.jpg', - 'image/card/gz_jiaxu.jpg', - 'image/card/gz_lingtong.jpg', - 'image/card/gz_liuba.jpg', - 'image/card/gz_liuqi.jpg', - 'image/card/gz_lukang.jpg', - 'image/card/gz_luxun.jpg', - 'image/card/gz_lvbu.jpg', - 'image/card/gz_lvlingqi.jpg', - 'image/card/gz_madai.jpg', - 'image/card/gz_masu.jpg', - 'image/card/gz_miheng.jpg', - 'image/card/gz_panfeng.jpg', - 'image/card/gz_panjun.jpg', - 'image/card/gz_pengyang.jpg', - 'image/card/gz_re_xushu.jpg', - 'image/card/gz_re_yuanshao.jpg', - 'image/card/gz_shamoke.jpg', - 'image/card/gz_shixie.jpg', - 'image/card/gz_simazhao.jpg', - 'image/card/gz_sp_zhugeliang.jpg', - 'image/card/gz_sunce.jpg', - 'image/card/gz_sunjian.jpg', - 'image/card/gz_sunshangxiang.jpg', - 'image/card/gz_tangzi.jpg', - 'image/card/gz_wangping.jpg', - 'image/card/gz_wenqin.jpg', - 'image/card/gz_wuguotai.jpg', - 'image/card/gz_wujing.jpg', - 'image/card/gz_xf_sufei.jpg', - 'image/card/gz_xiahouba.jpg', - 'image/card/gz_xiahouyuan.jpg', - 'image/card/gz_xiaoqiao.jpg', - 'image/card/gz_xunyou.jpg', - 'image/card/gz_xusheng.jpg', - 'image/card/gz_xuyou.jpg', - 'image/card/gz_yanbaihu.jpg', - 'image/card/gz_yangwan.jpg', - 'image/card/gz_yuanshu.jpg', - 'image/card/gz_yuejin.jpg', - 'image/card/gz_yuji.jpg', - 'image/card/gz_yujin.jpg', - 'image/card/gz_zhanglu.jpg', - 'image/card/gz_zhangxiu.jpg', - 'image/card/gz_zhenji.jpg', - 'image/card/gz_zhonghui.jpg', - 'image/card/gz_zhouyu.jpg', - 'image/card/gz_zhugeke.jpg', - 'image/card/gz_zhugeliang.jpg', - 'image/card/gz_zhuling.jpg', - 'image/card/gz_zuoci.jpg', - 'image/card/hanba.jpg', - 'image/card/handang.jpg', - 'image/card/hanfu.jpg', - 'image/card/hanhaoshihuan.jpg', - 'image/card/hanlong.jpg', - 'image/card/hanmeng.jpg', - 'image/card/hansui.jpg', - 'image/card/haomeng.jpg', - 'image/card/haopu.jpg', - 'image/card/haozhao.jpg', - 'image/card/heiwuchang.jpg', - 'image/card/hejin.jpg', - 'image/card/heqi.jpg', - 'image/card/hetaihou.jpg', - 'image/card/heyan.jpg', - 'image/card/hhzz_kanade.jpg', - 'image/card/hhzz_shiona.jpg', - 'image/card/hhzz_takaramono1.jpg', - 'image/card/hhzz_takaramono2.jpg', - 'image/card/hs_aedwin.jpg', - 'image/card/hs_aerfusi.jpg', - 'image/card/hs_aiqinvyao.jpg', - 'image/card/hs_alakir.jpg', - 'image/card/hs_alextrasza.jpg', - 'image/card/hs_alleria.jpg', - 'image/card/hs_amala.jpg', - 'image/card/hs_anduin.jpg', - 'image/card/hs_anomalus.jpg', - 'image/card/hs_antonidas.jpg', - 'image/card/hs_ashamoer.jpg', - 'image/card/hs_aya.jpg', - 'image/card/hs_baiguyoulong.jpg', - 'image/card/hs_bannabusi.jpg', - 'image/card/hs_barnes.jpg', - 'image/card/hs_bchillmaw.jpg', - 'image/card/hs_bilanyoulong.jpg', - 'image/card/hs_bingshuangnvwang.jpg', - 'image/card/hs_blingtron.jpg', - 'image/card/hs_bolvar.jpg', - 'image/card/hs_brann.jpg', - 'image/card/hs_duyaxinshi.jpg', - 'image/card/hs_enzoth.jpg', - 'image/card/hs_fachaotuteng.jpg', - 'image/card/hs_fandral.jpg', - 'image/card/hs_fengjianhuanfengzhe.jpg', - 'image/card/hs_fenjie.jpg', - 'image/card/hs_finley.jpg', - 'image/card/hs_fuding.jpg', - 'image/card/hs_guldan.jpg', - 'image/card/hs_hajiasha.jpg', - 'image/card/hs_hallazeal.jpg', - 'image/card/hs_heifengqishi.jpg', - 'image/card/hs_hemite.jpg', - 'image/card/hs_hudunren.jpg', - 'image/card/hs_huolituteng.jpg', - 'image/card/hs_huzhixiannv.jpg', - 'image/card/hs_jaina.jpg', - 'image/card/hs_jgarrosh.jpg', - 'image/card/hs_jiawodun.jpg', - 'image/card/hs_jiaziruila.jpg', - 'image/card/hs_jinglinglong.jpg', - 'image/card/hs_kaituozhe.jpg', - 'image/card/hs_kalimosi.jpg', - 'image/card/hs_kazhakusi.jpg', - 'image/card/hs_kchromaggus.jpg', - 'image/card/hs_kcthun.jpg', - 'image/card/hs_khadgar.jpg', - 'image/card/hs_lafamu.jpg', - 'image/card/hs_laila.jpg', - 'image/card/hs_laxiao.jpg', - 'image/card/hs_lazi.jpg', - 'image/card/hs_liadrin.jpg', - 'image/card/hs_loatheb.jpg', - 'image/card/hs_lreno.jpg', - 'image/card/hs_lrexxar.jpg', - 'image/card/hs_lrhonin.jpg', - 'image/card/hs_magni.jpg', - 'image/card/hs_malfurion.jpg', - 'image/card/hs_malorne.jpg', - 'image/card/hs_malygos.jpg', - 'image/card/hs_manyututeng.jpg', - 'image/card/hs_medivh.jpg', - 'image/card/hs_mijiaojisi.jpg', - 'image/card/hs_mojinbaozi.jpg', - 'image/card/hs_morgl.jpg', - 'image/card/hs_nate.jpg', - 'image/card/hs_neptulon.jpg', - 'image/card/hs_nozdormu.jpg', - 'image/card/hs_nuogefu.jpg', - 'image/card/hs_pengpeng.jpg', - 'image/card/hs_pyros.jpg', - 'image/card/hs_pyros1.jpg', - 'image/card/hs_pyros2.jpg', - 'image/card/hs_ronghejuren.jpg', - 'image/card/hs_ruanniguai.jpg', - 'image/card/hs_sainaliusi.jpg', - 'image/card/hs_sapphiron.jpg', - 'image/card/hs_selajin.jpg', - 'image/card/hs_selajin2.jpg', - 'image/card/hs_shaku.jpg', - 'image/card/hs_shanlingjuren.jpg', - 'image/card/hs_shifazhe.jpg', - 'image/card/hs_shirencao.jpg', - 'image/card/hs_shizugui.jpg', - 'image/card/hs_shuiwenxuejia.jpg', - 'image/card/hs_siwangxianzhi.jpg', - 'image/card/hs_siwangzhiyi.jpg', - 'image/card/hs_sthrall.jpg', - 'image/card/hs_taisi.jpg', - 'image/card/hs_tanghangu.jpg', - 'image/card/hs_tgolem.jpg', - 'image/card/hs_totemic.jpg', - 'image/card/hs_trueheart.jpg', - 'image/card/hs_tuoqi.jpg', - 'image/card/hs_tyrande.jpg', - 'image/card/hs_waleera.jpg', - 'image/card/hs_walian.jpg', - 'image/card/hs_wolazi.jpg', - 'image/card/hs_wujiyuansu.jpg', - 'image/card/hs_wuther.jpg', - 'image/card/hs_wuyaowang.jpg', - 'image/card/hs_wvelen.jpg', - 'image/card/hs_xialikeer.jpg', - 'image/card/hs_xiangyaqishi.jpg', - 'image/card/hs_xsylvanas.jpg', - 'image/card/hs_xuanzhuanjijia.jpg', - 'image/card/hs_xuefashi.jpg', - 'image/card/hs_xukongzhiying.jpg', - 'image/card/hs_yangyanwageli.jpg', - 'image/card/hs_yashaji.jpg', - 'image/card/hs_yelinchulong.jpg', - 'image/card/hs_yelinlonghou.jpg', - 'image/card/hs_yelise.jpg', - 'image/card/hs_yinggencao.jpg', - 'image/card/hs_yngvar.jpg', - 'image/card/hs_yogg.jpg', - 'image/card/hs_ysera.jpg', - 'image/card/hs_yuhuozhe.jpg', - 'image/card/hs_zhanzhenggushu.jpg', - 'image/card/hs_zhihuanhua.jpg', - 'image/card/hs_zhishigushu.jpg', - 'image/card/hs_zhouzhuo.jpg', - 'image/card/huaman.jpg', - 'image/card/huanfan.jpg', - 'image/card/huangchengyan.jpg', - 'image/card/huangfusong.jpg', - 'image/card/huanggai.jpg', - 'image/card/huanghao.jpg', - 'image/card/huangjinleishi.jpg', - 'image/card/huangyueying.jpg', - 'image/card/huangzhong.jpg', - 'image/card/huangzu.jpg', - 'image/card/huatuo.jpg', - 'image/card/huaxin.jpg', - 'image/card/huaxiong.jpg', - 'image/card/huban.jpg', - 'image/card/hucheer.jpg', - 'image/card/hujinding.jpg', - 'image/card/huojun.jpg', - 'image/card/huzhao.jpg', - 'image/card/jiachong.jpg', - 'image/card/jiakui.jpg', - 'image/card/jiangfei.jpg', - 'image/card/jianggan.jpg', - 'image/card/jiangqing.jpg', - 'image/card/jiangwei.jpg', - 'image/card/jianyong.jpg', - 'image/card/jiaxu.jpg', - 'image/card/jikang.jpg', - 'image/card/jiling.jpg', - 'image/card/jin_guohuai.jpg', - 'image/card/jin_jiachong.jpg', - 'image/card/jin_simashi.jpg', - 'image/card/jin_simayi.jpg', - 'image/card/jin_simazhao.jpg', - 'image/card/jin_wangyuanji.jpg', - 'image/card/jin_xiahouhui.jpg', - 'image/card/jin_yanghu.jpg', - 'image/card/jin_yanghuiyu.jpg', - 'image/card/jin_zhangchunhua.jpg', - 'image/card/jin_zhouchu.jpg', - 'image/card/jsp_caoren.jpg', - 'image/card/jsp_guanyu.jpg', - 'image/card/jsp_huangyueying.jpg', - 'image/card/jsp_liubei.jpg', - 'image/card/jsp_zhaoyun.jpg', - 'image/card/jsrg_caocao.jpg', - 'image/card/jsrg_chendeng.jpg', - 'image/card/jsrg_chunyuqiong.jpg', - 'image/card/jsrg_dongbai.jpg', - 'image/card/jsrg_fanjiangzhangda.jpg', - 'image/card/jsrg_guanyu.jpg', - 'image/card/jsrg_guojia.jpg', - 'image/card/jsrg_hansui.jpg', - 'image/card/jsrg_hejin.jpg', - 'image/card/jsrg_huangfusong.jpg', - 'image/card/jsrg_huangzhong.jpg', - 'image/card/jsrg_kongrong.jpg', - 'image/card/jsrg_liubei.jpg', - 'image/card/jsrg_liuhong.jpg', - 'image/card/jsrg_liuyan.jpg', - 'image/card/jsrg_lougui.jpg', - 'image/card/jsrg_lvbu.jpg', - 'image/card/jsrg_machao.jpg', - 'image/card/jsrg_nanhualaoxian.jpg', - 'image/card/jsrg_pangtong.jpg', - 'image/card/jsrg_qiaoxuan.jpg', - 'image/card/jsrg_sunce.jpg', - 'image/card/jsrg_sunjian.jpg', - 'image/card/jsrg_sunshangxiang.jpg', - 'image/card/jsrg_wangyun.jpg', - 'image/card/jsrg_xiahouen.jpg', - 'image/card/jsrg_xiahourong.jpg', - 'image/card/jsrg_xugong.jpg', - 'image/card/jsrg_xushao.jpg', - 'image/card/jsrg_xuyou.jpg', - 'image/card/jsrg_yangbiao.jpg', - 'image/card/jsrg_zhangchu.jpg', - 'image/card/jsrg_zhangfei.jpg', - 'image/card/jsrg_zhanghe.jpg', - 'image/card/jsrg_zhangliao.jpg', - 'image/card/jsrg_zhangren.jpg', - 'image/card/jsrg_zhenji.jpg', - 'image/card/jsrg_zhujun.jpg', - 'image/card/jsrg_zoushi.jpg', - 'image/card/jun_caocao.jpg', - 'image/card/jun_liubei.jpg', - 'image/card/jun_sunquan.jpg', - 'image/card/jun_zhangjiao.jpg', - 'image/card/junk_duanwei.jpg', - 'image/card/junk_huangyueying.jpg', - 'image/card/junk_lidian.jpg', - 'image/card/junk_liubei.jpg', - 'image/card/junk_simayi.jpg', - 'image/card/junk_sunquan.jpg', - 'image/card/junk_xuyou.jpg', - 'image/card/junk_zhangrang.jpg', - 'image/card/kaisa.jpg', - 'image/card/kanze.jpg', - 'image/card/kebineng.jpg', - 'image/card/key_abyusa.jpg', - 'image/card/key_akane.jpg', - 'image/card/key_akiko.jpg', - 'image/card/key_ao.jpg', - 'image/card/key_asara.jpg', - 'image/card/key_ayato.jpg', - 'image/card/key_chihaya.jpg', - 'image/card/key_doruji.jpg', - 'image/card/key_erika.jpg', - 'image/card/key_fuuko.jpg', - 'image/card/key_godan.jpg', - 'image/card/key_harukakanata.jpg', - 'image/card/key_haruko.jpg', - 'image/card/key_hina.jpg', - 'image/card/key_hinata.jpg', - 'image/card/key_hiroto.jpg', - 'image/card/key_hisako.jpg', - 'image/card/key_inari.jpg', - 'image/card/key_iriya.jpg', - 'image/card/key_iwasawa.jpg', - 'image/card/key_jojiro.jpg', - 'image/card/key_kagari.jpg', - 'image/card/key_kamome.jpg', - 'image/card/key_kano.jpg', - 'image/card/key_kaori.jpg', - 'image/card/key_kengo.jpg', - 'image/card/key_kiyu.jpg', - 'image/card/key_komari.jpg', - 'image/card/key_kotarou.jpg', - 'image/card/key_kotomi.jpg', - 'image/card/key_kotori.jpg', - 'image/card/key_kud.jpg', - 'image/card/key_kyoko.jpg', - 'image/card/key_kyou.jpg', - 'image/card/key_kyouko.jpg', - 'image/card/key_kyousuke.jpg', - 'image/card/key_lucia.jpg', - 'image/card/key_masato.jpg', - 'image/card/key_mia.jpg', - 'image/card/key_michiru.jpg', - 'image/card/key_midori.jpg', - 'image/card/key_miki.jpg', - 'image/card/key_minagi.jpg', - 'image/card/key_mio.jpg', - 'image/card/key_misa.jpg', - 'image/card/key_misuzu.jpg', - 'image/card/key_nagisa.jpg', - 'image/card/key_nao.jpg', - 'image/card/key_noda.jpg', - 'image/card/key_rei.jpg', - 'image/card/key_riki.jpg', - 'image/card/key_rin.jpg', - 'image/card/key_rumi.jpg', - 'image/card/key_ryoichi.jpg', - 'image/card/key_sakuya.jpg', - 'image/card/key_sasami.jpg', - 'image/card/key_satomi.jpg', - 'image/card/key_saya.jpg', - 'image/card/key_seira.jpg', - 'image/card/key_shiina.jpg', - 'image/card/key_shiki.jpg', - 'image/card/key_shiori.jpg', - 'image/card/key_shiorimiyuki.jpg', - 'image/card/key_shiroha.jpg', - 'image/card/key_shizuku.jpg', - 'image/card/key_shizuru.jpg', - 'image/card/key_sunohara.jpg', - 'image/card/key_tenzen.jpg', - 'image/card/key_tomoya.jpg', - 'image/card/key_tomoyo.jpg', - 'image/card/key_tsumugi.jpg', - 'image/card/key_umi.jpg', - 'image/card/key_ushio.jpg', - 'image/card/key_yoshino.jpg', - 'image/card/key_youta.jpg', - 'image/card/key_yui.jpg', - 'image/card/key_yuiko.jpg', - 'image/card/key_yukine.jpg', - 'image/card/key_yukito.jpg', - 'image/card/key_yuri.jpg', - 'image/card/key_yusa.jpg', - 'image/card/key_yuu.jpg', - 'image/card/key_yuuki.jpg', - 'image/card/key_yuzuru.jpg', - 'image/card/kongrong.jpg', - 'image/card/kuailiangkuaiyue.jpg', - 'image/card/kuaiqi.jpg', - 'image/card/laimin.jpg', - 'image/card/laiyinger.jpg', - 'image/card/le_shen_jiaxu.jpg', - 'image/card/leibo.jpg', - 'image/card/leitong.jpg', - 'image/card/liangxing.jpg', - 'image/card/liaohua.jpg', - 'image/card/libai.jpg', - 'image/card/licaiwei.jpg', - 'image/card/lifeng.jpg', - 'image/card/lijue.jpg', - 'image/card/lingcao.jpg', - 'image/card/lingju.jpg', - 'image/card/lingtong.jpg', - 'image/card/liqueguosi.jpg', - 'image/card/liru.jpg', - 'image/card/lisu.jpg', - 'image/card/litong.jpg', - 'image/card/liuba.jpg', - 'image/card/liubei.jpg', - 'image/card/liubian.jpg', - 'image/card/liubiao.jpg', - 'image/card/liuchen.jpg', - 'image/card/liucheng.jpg', - 'image/card/liuchongluojun.jpg', - 'image/card/liufeng.jpg', - 'image/card/liuhong.jpg', - 'image/card/liuhui.jpg', - 'image/card/liupi.jpg', - 'image/card/liuqi.jpg', - 'image/card/liushan.jpg', - 'image/card/liuxie.jpg', - 'image/card/liuyan.jpg', - 'image/card/liuyao.jpg', - 'image/card/liuye.jpg', - 'image/card/liuyong.jpg', - 'image/card/liuyu.jpg', - 'image/card/liuzan.jpg', - 'image/card/liuzhang.jpg', - 'image/card/liwan.jpg', - 'image/card/liwei.jpg', - 'image/card/liyan.jpg', - 'image/card/liyixiejing.jpg', - 'image/card/longwang.jpg', - 'image/card/longyufei.jpg', - 'image/card/luji.jpg', - 'image/card/lukai.jpg', - 'image/card/lukang.jpg', - 'image/card/luotong.jpg', - 'image/card/luoxian.jpg', - 'image/card/lushi.jpg', - 'image/card/luxun.jpg', - 'image/card/luyi.jpg', - 'image/card/luyusheng.jpg', - 'image/card/luzhi.jpg', - 'image/card/lvboshe.jpg', - 'image/card/lvbu.jpg', - 'image/card/lvdai.jpg', - 'image/card/lvfan.jpg', - 'image/card/lvkai.jpg', - 'image/card/lvkuanglvxiang.jpg', - 'image/card/lvlingqi.jpg', - 'image/card/lvmeng.jpg', - 'image/card/lvqian.jpg', - 'image/card/machao.jpg', - 'image/card/macheng.jpg', - 'image/card/madai.jpg', - 'image/card/majun.jpg', - 'image/card/maliang.jpg', - 'image/card/malingli.jpg', - 'image/card/mamian.jpg', - 'image/card/mamidi.jpg', - 'image/card/manchong.jpg', - 'image/card/mangyachang.jpg', - 'image/card/masu.jpg', - 'image/card/mateng.jpg', - 'image/card/maxiumatie.jpg', - 'image/card/mayuanyi.jpg', - 'image/card/mayunlu.jpg', - 'image/card/mazhong.jpg', - 'image/card/mb_sunluyu.jpg', - 'image/card/mengda.jpg', - 'image/card/menghuo.jpg', - 'image/card/mengjie.jpg', - 'image/card/mengyou.jpg', - 'image/card/mifangfushiren.jpg', - 'image/card/mifuren.jpg', - 'image/card/miheng.jpg', - 'image/card/mizhu.jpg', - 'image/card/mp_liuling.jpg', - 'image/card/mtg_ayeni.jpg', - 'image/card/mtg_jiding.jpg', - 'image/card/mtg_jiesi.jpg', - 'image/card/mtg_lilianna.jpg', - 'image/card/mtg_nisha.jpg', - 'image/card/mtg_qianzhuo.jpg', - 'image/card/mushun.jpg', - 'image/card/nanhualaoxian.jpg', - 'image/card/nashime.jpg', - 'image/card/new_caoren.jpg', - 'image/card/nezha.jpg', - 'image/card/nianshou.jpg', - 'image/card/niufu.jpg', - 'image/card/niujin.jpg', - 'image/card/niutou.jpg', - 'image/card/noname.jpg', - 'image/card/noname_machao.png', - 'image/card/noname_sunce.png', - 'image/card/ns_caimao.jpg', - 'image/card/ns_caoanmin.jpg', - 'image/card/ns_caocao.jpg', - 'image/card/ns_caocaosp.jpg', - 'image/card/ns_caoshuang.jpg', - 'image/card/ns_chendao.jpg', - 'image/card/ns_chengpu.jpg', - 'image/card/ns_chentai.jpg', - 'image/card/ns_duangui.jpg', - 'image/card/ns_duji.jpg', - 'image/card/ns_fanchou.jpg', - 'image/card/ns_guanlu.jpg', - 'image/card/ns_huamulan.jpg', - 'image/card/ns_huangchengyan.jpg', - 'image/card/ns_huangwudie.jpg', - 'image/card/ns_huangzu.jpg', - 'image/card/ns_jiaxu.jpg', - 'image/card/ns_jinke.jpg', - 'image/card/ns_lijue.jpg', - 'image/card/ns_limi.jpg', - 'image/card/ns_lisu.jpg', - 'image/card/ns_liuzhang.jpg', - 'image/card/ns_luyusheng.jpg', - 'image/card/ns_lvmeng.jpg', - 'image/card/ns_lvzhi.jpg', - 'image/card/ns_masu.jpg', - 'image/card/ns_mengyou.jpg', - 'image/card/ns_nanhua.jpg', - 'image/card/ns_nanhua_left.jpg', - 'image/card/ns_nanhua_right.jpg', - 'image/card/ns_ruanji.jpg', - 'image/card/ns_shenpei.jpg', - 'image/card/ns_simazhao.jpg', - 'image/card/ns_sunchensunjun.jpg', - 'image/card/ns_sundeng.jpg', - 'image/card/ns_sunjian.jpg', - 'image/card/ns_sunyi.jpg', - 'image/card/ns_wangyue.jpg', - 'image/card/ns_wangyun.jpg', - 'image/card/ns_wenchou.jpg', - 'image/card/ns_xinnanhua.jpg', - 'image/card/ns_xinxianying.jpg', - 'image/card/ns_yanghu.jpg', - 'image/card/ns_yangyi.jpg', - 'image/card/ns_yanliang.jpg', - 'image/card/ns_yuanxi.jpg', - 'image/card/ns_yuji.jpg', - 'image/card/ns_yujisp.jpg', - 'image/card/ns_zanghong.jpg', - 'image/card/ns_zhangbao.jpg', - 'image/card/ns_zhangji.jpg', - 'image/card/ns_zhangning.jpg', - 'image/card/ns_zhangwei.jpg', - 'image/card/ns_zhangxiu.jpg', - 'image/card/ns_zhonglimu.jpg', - 'image/card/ns_zhugeliang.jpg', - 'image/card/ns_zuoci.jpg', - 'image/card/ol_bianfuren.jpg', - 'image/card/ol_caiwenji.jpg', - 'image/card/ol_chendeng.jpg', - 'image/card/ol_dengai.jpg', - 'image/card/ol_dengzhi.jpg', - 'image/card/ol_dianwei.jpg', - 'image/card/ol_dingshangwan.jpg', - 'image/card/ol_dingyuan.jpg', - 'image/card/ol_dongzhao.jpg', - 'image/card/ol_dongzhuo.jpg', - 'image/card/ol_feiyi.jpg', - 'image/card/ol_furong.jpg', - 'image/card/ol_guohuai.jpg', - 'image/card/ol_huangzhong.jpg', - 'image/card/ol_huaxin.jpg', - 'image/card/ol_huaxiong.jpg', - 'image/card/ol_huban.jpg', - 'image/card/ol_jiangwei.jpg', - 'image/card/ol_jianyong.jpg', - 'image/card/ol_lingtong.jpg', - 'image/card/ol_lisu.jpg', - 'image/card/ol_liuba.jpg', - 'image/card/ol_liushan.jpg', - 'image/card/ol_liuyu.jpg', - 'image/card/ol_liwan.jpg', - 'image/card/ol_lusu.jpg', - 'image/card/ol_luyusheng.jpg', - 'image/card/ol_maliang.jpg', - 'image/card/ol_mengda.jpg', - 'image/card/ol_pangde.jpg', - 'image/card/ol_pangtong.jpg', - 'image/card/ol_pengyang.jpg', - 'image/card/ol_puyuan.jpg', - 'image/card/ol_qianzhao.jpg', - 'image/card/ol_sp_zhugeliang.jpg', - 'image/card/ol_sunjian.jpg', - 'image/card/ol_wanglang.jpg', - 'image/card/ol_wangrong.jpg', - 'image/card/ol_weiyan.jpg', - 'image/card/ol_wenqin.jpg', - 'image/card/ol_xiahouyuan.jpg', - 'image/card/ol_xiaoqiao.jpg', - 'image/card/ol_xinxianying.jpg', - 'image/card/ol_xuhuang.jpg', - 'image/card/ol_xunyu.jpg', - 'image/card/ol_yangyi.jpg', - 'image/card/ol_yanwen.jpg', - 'image/card/ol_yuanshao.jpg', - 'image/card/ol_yuanshu.jpg', - 'image/card/ol_yujin.jpg', - 'image/card/ol_zhangchangpu.jpg', - 'image/card/ol_zhangliao.jpg', - 'image/card/ol_zhangrang.jpg', - 'image/card/ol_zhangyì.jpg', - 'image/card/ol_zhangzhang.jpg', - 'image/card/ol_zhouqun.jpg', - 'image/card/ol_zhujun.jpg', - 'image/card/ol_zhuling.jpg', - 'image/card/ol_zhurong.jpg', - 'image/card/old_bulianshi.jpg', - 'image/card/old_caocao.jpg', - 'image/card/old_caochong.jpg', - 'image/card/old_caochun.jpg', - 'image/card/old_caoren.jpg', - 'image/card/old_caorui.jpg', - 'image/card/old_caoxiu.jpg', - 'image/card/old_caozhen.jpg', - 'image/card/old_chendao.jpg', - 'image/card/old_chenqun.jpg', - 'image/card/old_dingfeng.jpg', - 'image/card/old_fuhuanghou.jpg', - 'image/card/old_gaoshun.jpg', - 'image/card/old_guanqiujian.jpg', - 'image/card/old_guanyinping.jpg', - 'image/card/old_guanyu.jpg', - 'image/card/old_guanzhang.jpg', - 'image/card/old_handang.jpg', - 'image/card/old_huangfusong.jpg', - 'image/card/old_huanghao.jpg', - 'image/card/old_huatuo.jpg', - 'image/card/old_huaxiong.jpg', - 'image/card/old_jiakui.jpg', - 'image/card/old_lingju.jpg', - 'image/card/old_lingtong.jpg', - 'image/card/old_liubiao.jpg', - 'image/card/old_liuzan.jpg', - 'image/card/old_liyan.jpg', - 'image/card/old_machao.jpg', - 'image/card/old_madai.jpg', - 'image/card/old_majun.jpg', - 'image/card/old_maliang.jpg', - 'image/card/old_quancong.jpg', - 'image/card/old_re_lidian.jpg', - 'image/card/old_shen_zhaoyun.jpg', - 'image/card/old_shixie.jpg', - 'image/card/old_wanglang.jpg', - 'image/card/old_wangyi.jpg', - 'image/card/old_wangyun.jpg', - 'image/card/old_xiaoqiao.jpg', - 'image/card/old_xusheng.jpg', - 'image/card/old_yangyan.jpg', - 'image/card/old_yangzhi.jpg', - 'image/card/old_yuanshu.jpg', - 'image/card/old_zhangfei.jpg', - 'image/card/old_zhangxingcai.jpg', - 'image/card/old_zhaoyun.jpg', - 'image/card/old_zhonghui.jpg', - 'image/card/old_zhoutai.jpg', - 'image/card/old_zhugezhan.jpg', - 'image/card/old_zhuhuan.jpg', - 'image/card/old_zhuran.jpg', - 'image/card/old_zhuzhi.jpg', - 'image/card/oldre_liubiao.jpg', - 'image/card/ow_ana.jpg', - 'image/card/ow_banzang.jpg', - 'image/card/ow_baolei.jpg', - 'image/card/ow_chanyata.jpg', - 'image/card/ow_dva.jpg', - 'image/card/ow_falaozhiying.jpg', - 'image/card/ow_heibaihe.jpg', - 'image/card/ow_heiying.jpg', - 'image/card/ow_kuangshu.jpg', - 'image/card/ow_laiyinhate.jpg', - 'image/card/ow_liekong.jpg', - 'image/card/ow_luba.jpg', - 'image/card/ow_luxiao.jpg', - 'image/card/ow_maikelei.jpg', - 'image/card/ow_mei.jpg', - 'image/card/ow_orisa.jpg', - 'image/card/ow_shibing.jpg', - 'image/card/ow_sishen.jpg', - 'image/card/ow_tianshi.jpg', - 'image/card/ow_tuobiang.jpg', - 'image/card/ow_wensidun.jpg', - 'image/card/ow_yuanshi.jpg', - 'image/card/ow_zhaliya.jpg', - 'image/card/ow_zhixuzhiguang.jpg', - 'image/card/pal_anu.jpg', - 'image/card/pal_changqing.jpg', - 'image/card/pal_hanlingsha.jpg', - 'image/card/pal_jiangcheng.jpg', - 'image/card/pal_jiangyunfan.jpg', - 'image/card/pal_jingtian.jpg', - 'image/card/pal_jushifang.jpg', - 'image/card/pal_leiyuange.jpg', - 'image/card/pal_linyueru.jpg', - 'image/card/pal_liumengli.jpg', - 'image/card/pal_lixiaoyao.jpg', - 'image/card/pal_longkui.jpg', - 'image/card/pal_longkuigui.jpg', - 'image/card/pal_longyou.jpg', - 'image/card/pal_luozhaoyan.jpg', - 'image/card/pal_mingxiu.jpg', - 'image/card/pal_muchanglan.jpg', - 'image/card/pal_murongziying.jpg', - 'image/card/pal_nangonghuang.jpg', - 'image/card/pal_shenqishuang.jpg', - 'image/card/pal_sumei.jpg', - 'image/card/pal_tangyurou.jpg', - 'image/card/pal_wangpengxu.jpg', - 'image/card/pal_wangxiaohu.jpg', - 'image/card/pal_wenhui.jpg', - 'image/card/pal_xia.jpg', - 'image/card/pal_xiahoujinxuan.jpg', - 'image/card/pal_xianqing.jpg', - 'image/card/pal_xiaoman.jpg', - 'image/card/pal_xingxuan.jpg', - 'image/card/pal_xuanxiao.jpg', - 'image/card/pal_xuejian.jpg', - 'image/card/pal_yuejinzhao.jpg', - 'image/card/pal_yueqi.jpg', - 'image/card/pal_yuntianhe.jpg', - 'image/card/pal_zhaoliner.jpg', - 'image/card/pal_zixuan.jpg', - 'image/card/panfeng.jpg', - 'image/card/pangde.jpg', - 'image/card/pangdegong.jpg', - 'image/card/panghui.jpg', - 'image/card/pangtong.jpg', - 'image/card/panjun.jpg', - 'image/card/panshu.jpg', - 'image/card/panzhangmazhong.jpg', - 'image/card/pe_mengda.jpg', - 'image/card/pe_sunchen.jpg', - 'image/card/pe_wangyun.jpg', - 'image/card/pe_wenqin.jpg', - 'image/card/pe_zhonghui.jpg', - 'image/card/peixiu.jpg', - 'image/card/peiyuanshao.jpg', - 'image/card/pengyang.jpg', - 'image/card/pk_sp_duyu.jpg', - 'image/card/prp_zhugeliang.jpg', - 'image/card/ps_caopi.jpg', - 'image/card/ps_caozhi.jpg', - 'image/card/ps_guanyu.jpg', - 'image/card/ps_jiaxu.jpg', - 'image/card/ps_jin_simayi.jpg', - 'image/card/ps_lvbu.jpg', - 'image/card/ps_machao.jpg', - 'image/card/ps_shen_machao.jpg', - 'image/card/ps_simayi.jpg', - 'image/card/ps_zhugeliang.jpg', - 'image/card/ps1059_guojia.jpg', - 'image/card/ps1062_zhouyu.jpg', - 'image/card/ps2063_zhaoyun.jpg', - 'image/card/ps2066_zhugeliang.jpg', - 'image/card/ps2067_zhaoyun.jpg', - 'image/card/ps2068_simayi.jpg', - 'image/card/ps2070_guojia.jpg', - 'image/card/ps2080_zhouyu.jpg', - 'image/card/pujing.jpg', - 'image/card/puyuan.jpg', - 'image/card/qianzhao.jpg', - 'image/card/qiaogong.jpg', - 'image/card/qiaorui.jpg', - 'image/card/qiaozhou.jpg', - 'image/card/qinghegongzhu.jpg', - 'image/card/qinlang.jpg', - 'image/card/qinmi.jpg', - 'image/card/qinyilu.jpg', - 'image/card/qiuliju.jpg', - 'image/card/quancong.jpg', - 'image/card/quanhuijie.jpg', - 'image/card/quhuang.jpg', - 'image/card/quyi.jpg', - 'image/card/re_baosanniang.jpg', - 'image/card/re_bulianshi.jpg', - 'image/card/re_caifuren.jpg', - 'image/card/re_caiwenji.jpg', - 'image/card/re_caiyong.jpg', - 'image/card/re_caocao.jpg', - 'image/card/re_caochong.jpg', - 'image/card/re_caopi.jpg', - 'image/card/re_caoxiu.jpg', - 'image/card/re_caozhang.jpg', - 'image/card/re_caozhen.jpg', - 'image/card/re_caozhi.jpg', - 'image/card/re_chendeng.jpg', - 'image/card/re_chengong.jpg', - 'image/card/re_chengpu.jpg', - 'image/card/re_chenqun.jpg', - 'image/card/re_chunyuqiong.jpg', - 'image/card/re_daqiao.jpg', - 'image/card/re_dengai.jpg', - 'image/card/re_dengzhi.jpg', - 'image/card/re_dianwei.jpg', - 'image/card/re_diaochan.jpg', - 'image/card/re_dongbai.jpg', - 'image/card/re_dongcheng.jpg', - 'image/card/re_dongzhuo.jpg', - 'image/card/re_duji.jpg', - 'image/card/re_fazheng.jpg', - 'image/card/re_fengfangnv.jpg', - 'image/card/re_fuhuanghou.jpg', - 'image/card/re_ganning.jpg', - 'image/card/re_gaoshun.jpg', - 'image/card/re_gongsunyuan.jpg', - 'image/card/re_gongsunzan.jpg', - 'image/card/re_guanping.jpg', - 'image/card/re_guanqiujian.jpg', - 'image/card/re_guanyu.jpg', - 'image/card/re_guanzhang.jpg', - 'image/card/re_guohuai.jpg', - 'image/card/re_guohuanghou.jpg', - 'image/card/re_guojia.jpg', - 'image/card/re_guotufengji.jpg', - 'image/card/re_guyong.jpg', - 'image/card/re_handang.jpg', - 'image/card/re_hanhaoshihuan.jpg', - 'image/card/re_hansui.jpg', - 'image/card/re_hejin.jpg', - 'image/card/re_heqi.jpg', - 'image/card/re_huanggai.jpg', - 'image/card/re_huangyueying.jpg', - 'image/card/re_huangzhong.jpg', - 'image/card/re_huatuo.jpg', - 'image/card/re_huaxiong.jpg', - 'image/card/re_hucheer.jpg', - 'image/card/re_jiangwei.jpg', - 'image/card/re_jianyong.jpg', - 'image/card/re_jiaxu.jpg', - 'image/card/re_jikang.jpg', - 'image/card/re_jsp_huangyueying.jpg', - 'image/card/re_jsp_pangtong.jpg', - 'image/card/re_jushou.jpg', - 'image/card/re_kanze.jpg', - 'image/card/re_liaohua.jpg', - 'image/card/re_lidian.jpg', - 'image/card/re_lingtong.jpg', - 'image/card/re_liru.jpg', - 'image/card/re_liubei.jpg', - 'image/card/re_liubiao.jpg', - 'image/card/re_liuchen.jpg', - 'image/card/re_liufeng.jpg', - 'image/card/re_liushan.jpg', - 'image/card/re_liuzan.jpg', - 'image/card/re_lusu.jpg', - 'image/card/re_luxun.jpg', - 'image/card/re_lvbu.jpg', - 'image/card/re_lvmeng.jpg', - 'image/card/re_machao.jpg', - 'image/card/re_madai.jpg', - 'image/card/re_maliang.jpg', - 'image/card/re_manchong.jpg', - 'image/card/re_masu.jpg', - 'image/card/re_mazhong.jpg', - 'image/card/re_menghuo.jpg', - 'image/card/re_miheng.jpg', - 'image/card/re_nanhualaoxian.jpg', - 'image/card/re_niujin.jpg', - 'image/card/re_panfeng.jpg', - 'image/card/re_pangde.jpg', - 'image/card/re_pangdegong.jpg', - 'image/card/re_pangtong.jpg', - 'image/card/re_panshu.jpg', - 'image/card/re_panzhangmazhong.jpg', - 'image/card/re_quancong.jpg', - 'image/card/re_quyi.jpg', - 'image/card/re_simayi.jpg', - 'image/card/re_sp_taishici.jpg', - 'image/card/re_sp_zhugeliang.jpg', - 'image/card/re_sunben.jpg', - 'image/card/re_sunce.jpg', - 'image/card/re_sundeng.jpg', - 'image/card/re_sunjian.jpg', - 'image/card/re_sunluban.jpg', - 'image/card/re_sunluyu.jpg', - 'image/card/re_sunquan.jpg', - 'image/card/re_sunshangxiang.jpg', - 'image/card/re_sunxiu.jpg', - 'image/card/re_sunyi.jpg', - 'image/card/re_taishici.jpg', - 'image/card/re_taoqian.jpg', - 'image/card/re_wangyi.jpg', - 'image/card/re_wangyun.jpg', - 'image/card/re_weiwenzhugezhi.jpg', - 'image/card/re_weiyan.jpg', - 'image/card/re_wenpin.jpg', - 'image/card/re_wuguotai.jpg', - 'image/card/re_wuyi.jpg', - 'image/card/re_xiahoudun.jpg', - 'image/card/re_xiahoushi.jpg', - 'image/card/re_xiahouyuan.jpg', - 'image/card/re_xiaoqiao.jpg', - 'image/card/re_xinxianying.jpg', - 'image/card/re_xugong.jpg', - 'image/card/re_xuhuang.jpg', - 'image/card/re_xunchen.jpg', - 'image/card/re_xunyou.jpg', - 'image/card/re_xunyu.jpg', - 'image/card/re_xusheng.jpg', - 'image/card/re_xushu.jpg', - 'image/card/re_xuzhu.jpg', - 'image/card/re_yanwen.jpg', - 'image/card/re_yuanshao.jpg', - 'image/card/re_yuanshu.jpg', - 'image/card/re_yufan.jpg', - 'image/card/re_yuji.jpg', - 'image/card/re_yujin.jpg', - 'image/card/re_zhangbao.jpg', - 'image/card/re_zhangchunhua.jpg', - 'image/card/re_zhangfei.jpg', - 'image/card/re_zhanggong.jpg', - 'image/card/re_zhanghe.jpg', - 'image/card/re_zhangjiao.jpg', - 'image/card/re_zhangliang.jpg', - 'image/card/re_zhangliao.jpg', - 'image/card/re_zhangsong.jpg', - 'image/card/re_zhangyi.jpg', - 'image/card/re_zhangzhang.jpg', - 'image/card/re_zhaoyun.jpg', - 'image/card/re_zhenji.jpg', - 'image/card/re_zhonghui.jpg', - 'image/card/re_zhongyao.jpg', - 'image/card/re_zhoucang.jpg', - 'image/card/re_zhouyu.jpg', - 'image/card/re_zhugeliang.jpg', - 'image/card/re_zhuhuan.jpg', - 'image/card/re_zhuran.jpg', - 'image/card/re_zhurong.jpg', - 'image/card/re_zhuzhi.jpg', - 'image/card/re_zoushi.jpg', - 'image/card/re_zuoci.jpg', - 'image/card/ruanhui.jpg', - 'image/card/ruanji.jpg', - 'image/card/ruanyu.jpg', - 'image/card/ruiji.jpg', - 'image/card/sb_caocao.jpg', - 'image/card/sb_caoren.jpg', - 'image/card/sb_chengong.jpg', - 'image/card/sb_daqiao.jpg', - 'image/card/sb_diaochan.jpg', - 'image/card/sb_fazheng.jpg', - 'image/card/sb_ganning.jpg', - 'image/card/sb_huanggai.jpg', - 'image/card/sb_huangzhong.jpg', - 'image/card/sb_huaxiong.jpg', - 'image/card/sb_jiangwei.jpg', - 'image/card/sb_liubei.jpg', - 'image/card/sb_liubiao.jpg', - 'image/card/sb_lvmeng.jpg', - 'image/card/sb_machao.jpg', - 'image/card/sb_menghuo.jpg', - 'image/card/sb_pangtong.jpg', - 'image/card/sb_sunce.jpg', - 'image/card/sb_sunquan.jpg', - 'image/card/sb_sunshangxiang.jpg', - 'image/card/sb_xiahoushi.jpg', - 'image/card/sb_xiaoqiao.jpg', - 'image/card/sb_xuhuang.jpg', - 'image/card/sb_yl_luzhi.jpg', - 'image/card/sb_yuanshao.jpg', - 'image/card/sb_yujin.jpg', - 'image/card/sb_zhangfei.jpg', - 'image/card/sb_zhanghe.jpg', - 'image/card/sb_zhangjiao.jpg', - 'image/card/sb_zhaoyun.jpg', - 'image/card/sb_zhenji.jpg', - 'image/card/sb_zhouyu.jpg', - 'image/card/sb_zhurong.jpg', - 'image/card/scs_bilan.jpg', - 'image/card/scs_bilan_dead.jpg', - 'image/card/scs_duangui.jpg', - 'image/card/scs_duangui_dead.jpg', - 'image/card/scs_gaowang.jpg', - 'image/card/scs_gaowang_dead.jpg', - 'image/card/scs_guosheng.jpg', - 'image/card/scs_guosheng_dead.jpg', - 'image/card/scs_hankui.jpg', - 'image/card/scs_hankui_dead.jpg', - 'image/card/scs_lisong.jpg', - 'image/card/scs_lisong_dead.jpg', - 'image/card/scs_sunzhang.jpg', - 'image/card/scs_sunzhang_dead.jpg', - 'image/card/scs_xiayun.jpg', - 'image/card/scs_xiayun_dead.jpg', - 'image/card/scs_zhangrang.jpg', - 'image/card/scs_zhangrang_dead.jpg', - 'image/card/scs_zhaozhong.jpg', - 'image/card/scs_zhaozhong_dead.jpg', - 'image/card/shamoke.jpg', - 'image/card/shen_caocao.jpg', - 'image/card/shen_caopi.jpg', - 'image/card/shen_dengai.jpg', - 'image/card/shen_dianwei.jpg', - 'image/card/shen_diaochan.jpg', - 'image/card/shen_ganning.jpg', - 'image/card/shen_guanyu.jpg', - 'image/card/shen_guojia.jpg', - 'image/card/shen_jiangwei.jpg', - 'image/card/shen_jiaxu.jpg', - 'image/card/shen_liubei.jpg', - 'image/card/shen_luxun.jpg', - 'image/card/shen_lvbu.jpg', - 'image/card/shen_lvmeng.jpg', - 'image/card/shen_machao.jpg', - 'image/card/shen_simayi.jpg', - 'image/card/shen_sunce.jpg', - 'image/card/shen_sunquan.jpg', - 'image/card/shen_taishici.jpg', - 'image/card/shen_xunyu.jpg', - 'image/card/shen_zhangfei.jpg', - 'image/card/shen_zhangjiao.jpg', - 'image/card/shen_zhangliao.jpg', - 'image/card/shen_zhaoyun.jpg', - 'image/card/shen_zhenji.jpg', - 'image/card/shen_zhouyu.jpg', - 'image/card/shen_zhugeliang.jpg', - 'image/card/shenpei.jpg', - 'image/card/shibao.jpg', - 'image/card/shibing1.jpg', - 'image/card/shibing2.jpg', - 'image/card/shichangshi.jpg', - 'image/card/shichangshi_dead.jpg', - 'image/card/shixie.jpg', - 'image/card/shiyi.jpg', - 'image/card/simafu.jpg', - 'image/card/simahui.jpg', - 'image/card/simalang.jpg', - 'image/card/simashi.jpg', - 'image/card/simayi.jpg', - 'image/card/simazhao.jpg', - 'image/card/simazhou.jpg', - 'image/card/sp_bianfuren.jpg', - 'image/card/sp_caiwenji.jpg', - 'image/card/sp_caoren.jpg', - 'image/card/sp_caosong.jpg', - 'image/card/sp_chendong.jpg', - 'image/card/sp_chenzhen.jpg', - 'image/card/sp_cuiyan.jpg', - 'image/card/sp_daqiao.jpg', - 'image/card/sp_diaochan.jpg', - 'image/card/sp_dongzhuo.jpg', - 'image/card/sp_duyu.jpg', - 'image/card/sp_fuhuanghou.jpg', - 'image/card/sp_fuwan.jpg', - 'image/card/sp_ganning.jpg', - 'image/card/sp_gaolan.jpg', - 'image/card/sp_gongsunzan.jpg', - 'image/card/sp_huaman.jpg', - 'image/card/sp_huangfusong.jpg', - 'image/card/sp_huaxin.jpg', - 'image/card/sp_jianggan.jpg', - 'image/card/sp_jiangqing.jpg', - 'image/card/sp_jiangwan.jpg', - 'image/card/sp_jiangwei.jpg', - 'image/card/sp_jiaxu.jpg', - 'image/card/sp_jiben.jpg', - 'image/card/sp_key_kanade.jpg', - 'image/card/sp_key_yuri.jpg', - 'image/card/sp_kongrong.jpg', - 'image/card/sp_liubei.jpg', - 'image/card/sp_liuqi.jpg', - 'image/card/sp_liuxie.jpg', - 'image/card/sp_lvfan.jpg', - 'image/card/sp_lvmeng.jpg', - 'image/card/sp_machao.jpg', - 'image/card/sp_maojie.jpg', - 'image/card/sp_menghuo.jpg', - 'image/card/sp_mifangfushiren.jpg', - 'image/card/sp_mifuren.jpg', - 'image/card/sp_mushun.jpg', - 'image/card/sp_ol_zhanghe.jpg', - 'image/card/sp_pangde.jpg', - 'image/card/sp_pangtong.jpg', - 'image/card/sp_pengyang.jpg', - 'image/card/sp_shenpei.jpg', - 'image/card/sp_simazhao.jpg', - 'image/card/sp_sufei.jpg', - 'image/card/sp_sunshangxiang.jpg', - 'image/card/sp_sunshao.jpg', - 'image/card/sp_taishici.jpg', - 'image/card/sp_wangcan.jpg', - 'image/card/sp_wangshuang.jpg', - 'image/card/sp_wangyuanji.jpg', - 'image/card/sp_xiahoudun.jpg', - 'image/card/sp_xiahoushi.jpg', - 'image/card/sp_xinpi.jpg', - 'image/card/sp_xinxianying.jpg', - 'image/card/sp_xujing.jpg', - 'image/card/sp_xunchen.jpg', - 'image/card/sp_xuyou.jpg', - 'image/card/sp_yanghu.jpg', - 'image/card/sp_yangwan.jpg', - 'image/card/sp_zhangchangpu.jpg', - 'image/card/sp_zhangfei.jpg', - 'image/card/sp_zhanghe.jpg', - 'image/card/sp_zhangjiao.jpg', - 'image/card/sp_zhangliao.jpg', - 'image/card/sp_zhangwen.jpg', - 'image/card/sp_zhaoyun.jpg', - 'image/card/sp_zhugeliang.jpg', - 'image/card/sp_zhujun.jpg', - 'image/card/sp_zongyu.jpg', - 'image/card/star_caoren.jpg', - 'image/card/star_yuanshu.jpg', - 'image/card/std_panfeng.jpg', - 'image/card/sunce.jpg', - 'image/card/sunchen.jpg', - 'image/card/sundeng.jpg', - 'image/card/sunhanhua.jpg', - 'image/card/sunhao.jpg', - 'image/card/sunhong.jpg', - 'image/card/sunhuan.jpg', - 'image/card/sunjian.jpg', - 'image/card/sunlang.jpg', - 'image/card/sunli.jpg', - 'image/card/sunliang.jpg', - 'image/card/sunlingluan.jpg', - 'image/card/sunluban.jpg', - 'image/card/sunluyu.jpg', - 'image/card/sunqian.jpg', - 'image/card/sunquan.jpg', - 'image/card/sunru.jpg', - 'image/card/sunshangxiang.jpg', - 'image/card/sunshao.jpg', - 'image/card/sunwukong.jpg', - 'image/card/sunxiu.jpg', - 'image/card/sunyang.jpg', - 'image/card/sunyi.jpg', - 'image/card/sunyu.jpg', - 'image/card/sunziliufang.jpg', - 'image/card/swd_anka.jpg', - 'image/card/swd_chenfu.jpg', - 'image/card/swd_chengyaojin.jpg', - 'image/card/swd_chenjingchou.jpg', - 'image/card/swd_cheyun.jpg', - 'image/card/swd_chunyuheng.jpg', - 'image/card/swd_duanmeng.jpg', - 'image/card/swd_duguningke.jpg', - 'image/card/swd_duopeng.jpg', - 'image/card/swd_fengtianling.jpg', - 'image/card/swd_fengyu.jpg', - 'image/card/swd_fu.jpg', - 'image/card/swd_fuyan.jpg', - 'image/card/swd_guyue.jpg', - 'image/card/swd_haidapang.jpg', - 'image/card/swd_hanlong.jpg', - 'image/card/swd_hanluo.jpg', - 'image/card/swd_hengai.jpg', - 'image/card/swd_huanglei.jpg', - 'image/card/swd_huanyuanzhi.jpg', - 'image/card/swd_huiyan.jpg', - 'image/card/swd_hupo.jpg', - 'image/card/swd_huyue.jpg', - 'image/card/swd_huzhongxian.jpg', - 'image/card/swd_jialanduo.jpg', - 'image/card/swd_jiangwu.jpg', - 'image/card/swd_jiangziya.jpg', - 'image/card/swd_jiliang.jpg', - 'image/card/swd_jipeng.jpg', - 'image/card/swd_jiting.jpg', - 'image/card/swd_jiuyou.jpg', - 'image/card/swd_kama.jpg', - 'image/card/swd_kangnalishi.jpg', - 'image/card/swd_kendi.jpg', - 'image/card/swd_lanmoshen.jpg', - 'image/card/swd_lanyin.jpg', - 'image/card/swd_lilian.jpg', - 'image/card/swd_linyue.jpg', - 'image/card/swd_luchengxuan.jpg', - 'image/card/swd_maixing.jpg', - 'image/card/swd_miles.jpg', - 'image/card/swd_moye.jpg', - 'image/card/swd_murongshi.jpg', - 'image/card/swd_muyue.jpg', - 'image/card/swd_muyun.jpg', - 'image/card/swd_nicole.jpg', - 'image/card/swd_qi.jpg', - 'image/card/swd_qiner.jpg', - 'image/card/swd_qinshubao.jpg', - 'image/card/swd_quxian.jpg', - 'image/card/swd_rongshuang.jpg', - 'image/card/swd_septem.jpg', - 'image/card/swd_shangzhang.jpg', - 'image/card/swd_shanxiaoxiao.jpg', - 'image/card/swd_shaowei.jpg', - 'image/card/swd_shuijing.jpg', - 'image/card/swd_shuwaner.jpg', - 'image/card/swd_sikongyu.jpg', - 'image/card/swd_situqiang.jpg', - 'image/card/swd_tuobayuer.jpg', - 'image/card/swd_tuwei.jpg', - 'image/card/swd_wangsiyue.jpg', - 'image/card/swd_weida.jpg', - 'image/card/swd_wushi.jpg', - 'image/card/swd_xiaohuanglong.jpg', - 'image/card/swd_xiarou.jpg', - 'image/card/swd_xiyan.jpg', - 'image/card/swd_xuanyuanjiantong.jpg', - 'image/card/swd_xuanyuanjianxian.jpg', - 'image/card/swd_yeyaxi.jpg', - 'image/card/swd_youzhao.jpg', - 'image/card/swd_yuchiyanhong.jpg', - 'image/card/swd_yuli.jpg', - 'image/card/swd_yunhu.jpg', - 'image/card/swd_yuwentuo.jpg', - 'image/card/swd_yuxiaoxue.jpg', - 'image/card/swd_zhanggao.jpg', - 'image/card/swd_zhaoyun.jpg', - 'image/card/swd_zhiyin.jpg', - 'image/card/swd_zhuoshanzhu.jpg', - 'image/card/swd_zidashu.jpg', - 'image/card/swd_ziqiao.jpg', - 'image/card/tadun.jpg', - 'image/card/taishici.jpg', - 'image/card/tangji.jpg', - 'image/card/tangzi.jpg', - 'image/card/taoqian.jpg', - 'image/card/taoshen.jpg', - 'image/card/tengfanglan.jpg', - 'image/card/tenggongzhu.jpg', - 'image/card/tengyin.jpg', - 'image/card/tianfeng.jpg', - 'image/card/tianyu.jpg', - 'image/card/tongyuan.jpg', - 'image/card/tw_baoxin.jpg', - 'image/card/tw_beimihu.jpg', - 'image/card/tw_bianfuren.jpg', - 'image/card/tw_bingyuan.jpg', - 'image/card/tw_caoang.jpg', - 'image/card/tw_caocao.jpg', - 'image/card/tw_caohong.jpg', - 'image/card/tw_caoxiu.jpg', - 'image/card/tw_caozhao.jpg', - 'image/card/tw_chendong.jpg', - 'image/card/tw_chengpu.jpg', - 'image/card/tw_chenzhen.jpg', - 'image/card/tw_daxiaoqiao.jpg', - 'image/card/tw_dengzhi.jpg', - 'image/card/tw_dingfeng.jpg', - 'image/card/tw_dongzhao.jpg', - 'image/card/tw_fanchou.jpg', - 'image/card/tw_feiyi.jpg', - 'image/card/tw_fengxí.jpg', - 'image/card/tw_furong.jpg', - 'image/card/tw_fuwan.jpg', - 'image/card/tw_gexuan.jpg', - 'image/card/tw_gongsunfan.jpg', - 'image/card/tw_guanqiujian.jpg', - 'image/card/tw_guohuai.jpg', - 'image/card/tw_guyong.jpg', - 'image/card/tw_handang.jpg', - 'image/card/tw_haomeng.jpg', - 'image/card/tw_hejin.jpg', - 'image/card/tw_hucheer.jpg', - 'image/card/tw_huchuquan.jpg', - 'image/card/tw_huojun.jpg', - 'image/card/tw_jiangji.jpg', - 'image/card/tw_jiangqing.jpg', - 'image/card/tw_jianshuo.jpg', - 'image/card/tw_jiling.jpg', - 'image/card/tw_liufuren.jpg', - 'image/card/tw_liuhong.jpg', - 'image/card/tw_liuzhang.jpg', - 'image/card/tw_liwei.jpg', - 'image/card/tw_madai.jpg', - 'image/card/tw_maliang.jpg', - 'image/card/tw_mateng.jpg', - 'image/card/tw_mayunlu.jpg', - 'image/card/tw_menghuo.jpg', - 'image/card/tw_niufudongxie.jpg', - 'image/card/tw_niujin.jpg', - 'image/card/tw_ol_sunjian.jpg', - 'image/card/tw_puyangxing.jpg', - 'image/card/tw_qiaogong.jpg', - 'image/card/tw_qiaorui.jpg', - 'image/card/tw_re_caohong.jpg', - 'image/card/tw_re_fazheng.jpg', - 'image/card/tw_shen_guanyu.jpg', - 'image/card/tw_shen_lvmeng.jpg', - 'image/card/tw_sunyi.jpg', - 'image/card/tw_tianyu.jpg', - 'image/card/tw_wangcan.jpg', - 'image/card/tw_wangchang.jpg', - 'image/card/tw_wangling.jpg', - 'image/card/tw_weixu.jpg', - 'image/card/tw_wujing.jpg', - 'image/card/tw_xiahouba.jpg', - 'image/card/tw_xiahouen.jpg', - 'image/card/tw_xiahoushang.jpg', - 'image/card/tw_xuezong.jpg', - 'image/card/tw_xujing.jpg', - 'image/card/tw_xunchen.jpg', - 'image/card/tw_yangang.jpg', - 'image/card/tw_yangyi.jpg', - 'image/card/tw_yanxiang.jpg', - 'image/card/tw_yl_luzhi.jpg', - 'image/card/tw_yufuluo.jpg', - 'image/card/tw_yujin.jpg', - 'image/card/tw_zangba.jpg', - 'image/card/tw_zhangfei.jpg', - 'image/card/tw_zhanghong.jpg', - 'image/card/tw_zhangji.jpg', - 'image/card/tw_zhangmancheng.jpg', - 'image/card/tw_zhangnan.jpg', - 'image/card/tw_zhangning.jpg', - 'image/card/tw_zhangzhao.jpg', - 'image/card/tw_zhaoxiang.jpg', - 'image/card/tw_zhouchu.jpg', - 'image/card/tw_zhugeguo.jpg', - 'image/card/tw_zongyu.jpg', - 'image/card/tw_zumao.jpg', - 'image/card/vtb_xiaojiu.jpg', - 'image/card/vtb_xiaole.jpg', - 'image/card/vtb_xiaosha.jpg', - 'image/card/vtb_xiaoshan.jpg', - 'image/card/vtb_xiaotao.jpg', - 'image/card/wangcan.jpg', - 'image/card/wangfuzhaolei.jpg', - 'image/card/wangguan.jpg', - 'image/card/wangji.jpg', - 'image/card/wangjun.jpg', - 'image/card/wanglang.jpg', - 'image/card/wanglie.jpg', - 'image/card/wangling.jpg', - 'image/card/wangping.jpg', - 'image/card/wangrong.jpg', - 'image/card/wangshuang.jpg', - 'image/card/wangtao.jpg', - 'image/card/wangwei.jpg', - 'image/card/wangxiang.jpg', - 'image/card/wangyan.jpg', - 'image/card/wangyi.jpg', - 'image/card/wangyuanji.jpg', - 'image/card/wangyue.jpg', - 'image/card/wangyun.jpg', - 'image/card/wanniangongzhu.jpg', - 'image/card/weiguan.jpg', - 'image/card/weiwenzhugezhi.jpg', - 'image/card/weiyan.jpg', - 'image/card/weizi.jpg', - 'image/card/wenpin.jpg', - 'image/card/wenqin.jpg', - 'image/card/wenyang.jpg', - 'image/card/wolongfengchu.jpg', - 'image/card/wu_luxun.jpg', - 'image/card/wu_zhugeliang.jpg', - 'image/card/wu_zhutiexiong.jpg', - 'image/card/wuanguo.jpg', - 'image/card/wuban.jpg', - 'image/card/wufan.jpg', - 'image/card/wuguotai.jpg', - 'image/card/wujing.jpg', - 'image/card/wulan.jpg', - 'image/card/wutugu.jpg', - 'image/card/wuxian.jpg', - 'image/card/wuyan.jpg', - 'image/card/wuyi.jpg', - 'image/card/xf_huangquan.jpg', - 'image/card/xf_sufei.jpg', - 'image/card/xf_tangzi.jpg', - 'image/card/xf_yiji.jpg', - 'image/card/xia_dianwei.jpg', - 'image/card/xia_liyàn.jpg', - 'image/card/xia_lusu.jpg', - 'image/card/xia_tongyuan.jpg', - 'image/card/xia_wangyue.jpg', - 'image/card/xia_xiahouzie.jpg', - 'image/card/xia_xushu.jpg', - 'image/card/xia_zhaoe.jpg', - 'image/card/xiahouba.jpg', - 'image/card/xiahoudun.jpg', - 'image/card/xiahoujie.jpg', - 'image/card/xiahoulingnv.jpg', - 'image/card/xiahoumao.jpg', - 'image/card/xiahoushi.jpg', - 'image/card/xiahouxuan.jpg', - 'image/card/xiahouyuan.jpg', - 'image/card/xiangchong.jpg', - 'image/card/xianglang.jpg', - 'image/card/xiaoqiao.jpg', - 'image/card/xiaoyuehankehan.jpg', - 'image/card/xielingyu.jpg', - 'image/card/xin_baosanniang.jpg', - 'image/card/xin_caifuren.jpg', - 'image/card/xin_caoxiu.jpg', - 'image/card/xin_caozhang.jpg', - 'image/card/xin_caozhen.jpg', - 'image/card/xin_chengpu.jpg', - 'image/card/xin_fazheng.jpg', - 'image/card/xin_fuhuanghou.jpg', - 'image/card/xin_gaoshun.jpg', - 'image/card/xin_gongsunzan.jpg', - 'image/card/xin_guohuai.jpg', - 'image/card/xin_guozhao.jpg', - 'image/card/xin_guyong.jpg', - 'image/card/xin_handang.jpg', - 'image/card/xin_hansui.jpg', - 'image/card/xin_jianyong.jpg', - 'image/card/xin_jushou.jpg', - 'image/card/xin_liaohua.jpg', - 'image/card/xin_lingtong.jpg', - 'image/card/xin_liru.jpg', - 'image/card/xin_liubiao.jpg', - 'image/card/xin_mamidi.jpg', - 'image/card/xin_masu.jpg', - 'image/card/xin_panzhangmazhong.jpg', - 'image/card/xin_quancong.jpg', - 'image/card/xin_sunliang.jpg', - 'image/card/xin_sunluban.jpg', - 'image/card/xin_sunxiu.jpg', - 'image/card/xin_wuguotai.jpg', - 'image/card/xin_wuyi.jpg', - 'image/card/xin_xiahoudun.jpg', - 'image/card/xin_xusheng.jpg', - 'image/card/xin_xushu.jpg', - 'image/card/xin_yuanshao.jpg', - 'image/card/xin_yufan.jpg', - 'image/card/xin_yuji.jpg', - 'image/card/xin_yujin.jpg', - 'image/card/xin_zhangfei.jpg', - 'image/card/xin_zhangyi.jpg', - 'image/card/xin_zhonghui.jpg', - 'image/card/xin_zhoucang.jpg', - 'image/card/xin_zhoutai.jpg', - 'image/card/xin_zhuhuan.jpg', - 'image/card/xin_zhuran.jpg', - 'image/card/xin_zhuzhi.jpg', - 'image/card/xinchang.jpg', - 'image/card/xingdaorong.jpg', - 'image/card/xinpi.jpg', - 'image/card/xinping.jpg', - 'image/card/xinxianying.jpg', - 'image/card/xizheng.jpg', - 'image/card/xizhicai.jpg', - 'image/card/xuangongzhu.jpg', - 'image/card/xuelingyun.jpg', - 'image/card/xuezong.jpg', - 'image/card/xugong.jpg', - 'image/card/xuhuang.jpg', - 'image/card/xujing.jpg', - 'image/card/xunchen.jpg', - 'image/card/xunyou.jpg', - 'image/card/xunyu.jpg', - 'image/card/xurong.jpg', - 'image/card/xushao.jpg', - 'image/card/xusheng.jpg', - 'image/card/xushi.jpg', - 'image/card/xushu.jpg', - 'image/card/xuyou.jpg', - 'image/card/xuzhu.jpg', - 'image/card/yanbaihu.jpg', - 'image/card/yanfuren.jpg', - 'image/card/yangbiao.jpg', - 'image/card/yangfu.jpg', - 'image/card/yanghong.jpg', - 'image/card/yanghuiyu.jpg', - 'image/card/yangwan.jpg', - 'image/card/yangxiu.jpg', - 'image/card/yangyan.jpg', - 'image/card/yangyi.jpg', - 'image/card/yangzhi.jpg', - 'image/card/yanjun.jpg', - 'image/card/yanpu.jpg', - 'image/card/yanrou.jpg', - 'image/card/yanwen.jpg', - 'image/card/yanyan.jpg', - 'image/card/yeshiwen.jpg', - 'image/card/yinfuren.jpg', - 'image/card/yj_caoang.jpg', - 'image/card/yj_caocao.jpg', - 'image/card/yj_caohong.jpg', - 'image/card/yj_dongzhuo.jpg', - 'image/card/yj_ganning.jpg', - 'image/card/yj_huangzhong.jpg', - 'image/card/yj_jiaxu.jpg', - 'image/card/yj_jushou.jpg', - 'image/card/yj_liru.jpg', - 'image/card/yj_qiaozhou.jpg', - 'image/card/yj_sufei.jpg', - 'image/card/yj_weiyan.jpg', - 'image/card/yj_xuhuang.jpg', - 'image/card/yj_xuyou.jpg', - 'image/card/yj_zhangfei.jpg', - 'image/card/yj_zhanghe.jpg', - 'image/card/yj_zhangliao.jpg', - 'image/card/yj_zhenji.jpg', - 'image/card/yj_zhoubuyi.jpg', - 'image/card/yl_luzhi.jpg', - 'image/card/yl_yuanshu.jpg', - 'image/card/yongjian_ganning.jpg', - 'image/card/yuanhuan.jpg', - 'image/card/yuanji.jpg', - 'image/card/yuanshu.jpg', - 'image/card/yuantanyuanshang.jpg', - 'image/card/yuantanyuanxiyuanshang.jpg', - 'image/card/yue_caiwenji.jpg', - 'image/card/yue_zhoufei.jpg', - 'image/card/yuechen.jpg', - 'image/card/yuejin.jpg', - 'image/card/yuejiu.jpg', - 'image/card/yufan.jpg', - 'image/card/yuji.jpg', - 'image/card/yujin.jpg', - 'image/card/yujin_yujin.jpg', - 'image/card/yxs_aijiyanhou.jpg', - 'image/card/yxs_baosi.jpg', - 'image/card/yxs_bole.jpg', - 'image/card/yxs_caocao.jpg', - 'image/card/yxs_chengjisihan.jpg', - 'image/card/yxs_chengyaojin.jpg', - 'image/card/yxs_diaochan.jpg', - 'image/card/yxs_direnjie.jpg', - 'image/card/yxs_fuermosi.jpg', - 'image/card/yxs_goujian.jpg', - 'image/card/yxs_guiguzi.jpg', - 'image/card/yxs_handingdun.jpg', - 'image/card/yxs_huamulan.jpg', - 'image/card/yxs_jinke.jpg', - 'image/card/yxs_kaisa.jpg', - 'image/card/yxs_lanlinwang.jpg', - 'image/card/yxs_libai.jpg', - 'image/card/yxs_lishimin.jpg', - 'image/card/yxs_luban.jpg', - 'image/card/yxs_luobinhan.jpg', - 'image/card/yxs_luocheng.jpg', - 'image/card/yxs_luzhishen.jpg', - 'image/card/yxs_lvzhi.jpg', - 'image/card/yxs_meixi.jpg', - 'image/card/yxs_mingchenghuanghou.jpg', - 'image/card/yxs_mozi.jpg', - 'image/card/yxs_nandinggeer.jpg', - 'image/card/yxs_napolun.jpg', - 'image/card/yxs_qinqiong.jpg', - 'image/card/yxs_sunwu.jpg', - 'image/card/yxs_tangbohu.jpg', - 'image/card/yxs_wangzhaojun.jpg', - 'image/card/yxs_weizhongxian.jpg', - 'image/card/yxs_wuzetian.jpg', - 'image/card/yxs_xiangyu.jpg', - 'image/card/yxs_xiaoqiao.jpg', - 'image/card/yxs_yangguang.jpg', - 'image/card/yxs_yangyuhuan.jpg', - 'image/card/yxs_yingzheng.jpg', - 'image/card/yxs_yuefei.jpg', - 'image/card/yxs_yujix.jpg', - 'image/card/yxs_zhangsanfeng.jpg', - 'image/card/yxs_zhaoyong.jpg', - 'image/card/yxs_zhuyuanzhang.jpg', - 'image/card/zangba.jpg', - 'image/card/zerong.jpg', - 'image/card/zhangbao.jpg', - 'image/card/zhangchangpu.jpg', - 'image/card/zhangchu.jpg', - 'image/card/zhangchunhua.jpg', - 'image/card/zhangfei.jpg', - 'image/card/zhangfen.jpg', - 'image/card/zhanggong.jpg', - 'image/card/zhanghe.jpg', - 'image/card/zhangheng.jpg', - 'image/card/zhanghu.jpg', - 'image/card/zhanghua.jpg', - 'image/card/zhanghuyuechen.jpg', - 'image/card/zhangji.jpg', - 'image/card/zhangjiao.jpg', - 'image/card/zhangjinyun.jpg', - 'image/card/zhangkai.jpg', - 'image/card/zhangliang.jpg', - 'image/card/zhangliao.jpg', - 'image/card/zhangling.jpg', - 'image/card/zhanglu.jpg', - 'image/card/zhangmiao.jpg', - 'image/card/zhangning.jpg', - 'image/card/zhangqiying.jpg', - 'image/card/zhangrang.jpg', - 'image/card/zhangren.jpg', - 'image/card/zhangshiping.jpg', - 'image/card/zhangsong.jpg', - 'image/card/zhangwen.jpg', - 'image/card/zhangxingcai.jpg', - 'image/card/zhangxiu.jpg', - 'image/card/zhangxuan.jpg', - 'image/card/zhangxun.jpg', - 'image/card/zhangyan.jpg', - 'image/card/zhangyao.jpg', - 'image/card/zhangyi.jpg', - 'image/card/zhangyì.jpg', - 'image/card/zhangzhang.jpg', - 'image/card/zhangzhi.jpg', - 'image/card/zhangzhongjing.jpg', - 'image/card/zhaoang.jpg', - 'image/card/zhaotongzhaoguang.jpg', - 'image/card/zhaoxiang.jpg', - 'image/card/zhaoyan.jpg', - 'image/card/zhaoyǎn.jpg', - 'image/card/zhaoyun.jpg', - 'image/card/zhaozhi.jpg', - 'image/card/zhaozhong.jpg', - 'image/card/zhenghun.jpg', - 'image/card/zhengxuan.jpg', - 'image/card/zhenji.jpg', - 'image/card/zhonghui.jpg', - 'image/card/zhongyan.jpg', - 'image/card/zhongyao.jpg', - 'image/card/zhoubuyi.jpg', - 'image/card/zhoucang.jpg', - 'image/card/zhouchu.jpg', - 'image/card/zhoufang.jpg', - 'image/card/zhoufei.jpg', - 'image/card/zhouqun.jpg', - 'image/card/zhoushan.jpg', - 'image/card/zhoutai.jpg', - 'image/card/zhouyi.jpg', - 'image/card/zhouyu.jpg', - 'image/card/zhugedan.jpg', - 'image/card/zhugeguo.jpg', - 'image/card/zhugejin.jpg', - 'image/card/zhugeke.jpg', - 'image/card/zhugeliang.jpg', - 'image/card/zhugeruoxue.jpg', - 'image/card/zhugeshang.jpg', - 'image/card/zhugezhan.jpg', - 'image/card/zhuhuan.jpg', - 'image/card/zhujianping.jpg', - 'image/card/zhujun.jpg', - 'image/card/zhuling.jpg', - 'image/card/zhuran.jpg', - 'image/card/zhurong.jpg', - 'image/card/zhutiexiong.jpg', - 'image/card/zhuzhi.jpg', - 'image/card/zongyu.jpg', - 'image/card/zoushi.jpg', - 'image/card/zumao.jpg', - 'image/card/zuoci.jpg', - 'image/card/zuofen.jpg', + 'image/character/ahuinan.jpg', + 'image/character/baiwuchang.jpg', + 'image/character/baosanniang.jpg', + 'image/character/baoxin.jpg', + 'image/character/beimihu.jpg', + 'image/character/bianfuren.jpg', + 'image/character/bianxi.jpg', + 'image/character/boss_zhaoyun.jpg', + 'image/character/bulianshi.jpg', + 'image/character/buzhi.jpg', + 'image/character/caifuren.jpg', + 'image/character/caimaozhangyun.jpg', + 'image/character/caiwenji.jpg', + 'image/character/caiyang.jpg', + 'image/character/caiyong.jpg', + 'image/character/caizhenji.jpg', + 'image/character/caoang.jpg', + 'image/character/caoanmin.jpg', + 'image/character/caobuxing.jpg', + 'image/character/caocao.jpg', + 'image/character/caochong.jpg', + 'image/character/caochun.jpg', + 'image/character/caohong.jpg', + 'image/character/caohua.jpg', + 'image/character/caojie.jpg', + 'image/character/caojinyu.jpg', + 'image/character/caomao.jpg', + 'image/character/caopi.jpg', + 'image/character/caoren.jpg', + 'image/character/caorui.jpg', + 'image/character/caoshuang.jpg', + 'image/character/caosong.jpg', + 'image/character/caoxi.jpg', + 'image/character/caoxiancaohua.jpg', + 'image/character/caoxing.jpg', + 'image/character/caoxiu.jpg', + 'image/character/caoying.jpg', + 'image/character/caozhang.jpg', + 'image/character/caozhen.jpg', + 'image/character/caozhi.jpg', + 'image/character/cenhun.jpg', + 'image/character/cheliji.jpg', + 'image/character/chendao.jpg', + 'image/character/chendeng.jpg', + 'image/character/chendong.jpg', + 'image/character/chengbing.jpg', + 'image/character/chengjichengcui.jpg', + 'image/character/chengong.jpg', + 'image/character/chengpu.jpg', + 'image/character/chengui.jpg', + 'image/character/chengyu.jpg', + 'image/character/chenjiao.jpg', + 'image/character/chenlin.jpg', + 'image/character/chenqun.jpg', + 'image/character/chenshi.jpg', + 'image/character/chentai.jpg', + 'image/character/chunyuqiong.jpg', + 'image/character/clan_hanrong.jpg', + 'image/character/clan_hanshao.jpg', + 'image/character/clan_wanghun.jpg', + 'image/character/clan_wangling.jpg', + 'image/character/clan_wanglun.jpg', + 'image/character/clan_wangyun.jpg', + 'image/character/clan_wuban.jpg', + 'image/character/clan_wukuang.jpg', + 'image/character/clan_wuxian.jpg', + 'image/character/clan_xuncai.jpg', + 'image/character/clan_xuncan.jpg', + 'image/character/clan_xunchen.jpg', + 'image/character/clan_xunshu.jpg', + 'image/character/clan_xunyou.jpg', + 'image/character/clan_zhonghui.jpg', + 'image/character/clan_zhongyan.jpg', + 'image/character/clan_zhongyu.jpg', + 'image/character/cuimao.jpg', + 'image/character/cuiyan.jpg', + 'image/character/daqiao.jpg', + 'image/character/daxiaoqiao.jpg', + 'image/character/db_key_hina.jpg', + 'image/character/db_key_liyingxia.jpg', + 'image/character/db_wenyang.jpg', + 'image/character/dc_bulianshi.jpg', + 'image/character/dc_caiyang.jpg', + 'image/character/dc_caocao.jpg', + 'image/character/dc_caozhi.jpg', + 'image/character/dc_chenqun.jpg', + 'image/character/dc_daxiaoqiao.jpg', + 'image/character/dc_dongzhao.jpg', + 'image/character/dc_duyu.jpg', + 'image/character/dc_fuwan.jpg', + 'image/character/dc_ganfuren.jpg', + 'image/character/dc_gaolan.jpg', + 'image/character/dc_gongsunzan.jpg', + 'image/character/dc_guansuo.jpg', + 'image/character/dc_huangchengyan.jpg', + 'image/character/dc_huanghao.jpg', + 'image/character/dc_huangquan.jpg', + 'image/character/dc_huangzu.jpg', + 'image/character/dc_huban.jpg', + 'image/character/dc_hujinding.jpg', + 'image/character/dc_huojun.jpg', + 'image/character/dc_jiachong.jpg', + 'image/character/dc_jiben.jpg', + 'image/character/dc_jikang.jpg', + 'image/character/dc_jiling.jpg', + 'image/character/dc_jsp_guanyu.jpg', + 'image/character/dc_liru.jpg', + 'image/character/dc_liuba.jpg', + 'image/character/dc_liubei.jpg', + 'image/character/dc_liuye.jpg', + 'image/character/dc_liuyu.jpg', + 'image/character/dc_luotong.jpg', + 'image/character/dc_lvkuanglvxiang.jpg', + 'image/character/dc_mengda.jpg', + 'image/character/dc_mifuren.jpg', + 'image/character/dc_ruiji.jpg', + 'image/character/dc_shixie.jpg', + 'image/character/dc_sp_jiaxu.jpg', + 'image/character/dc_sp_machao.jpg', + 'image/character/dc_sunhanhua.jpg', + 'image/character/dc_sunquan.jpg', + 'image/character/dc_sunru.jpg', + 'image/character/dc_sunziliufang.jpg', + 'image/character/dc_tengfanglan.jpg', + 'image/character/dc_wangchang.jpg', + 'image/character/dc_wangjun.jpg', + 'image/character/dc_wangyun.jpg', + 'image/character/dc_wuban.jpg', + 'image/character/dc_xiahouba.jpg', + 'image/character/dc_xujing.jpg', + 'image/character/dc_xushu.jpg', + 'image/character/dc_yangbiao.jpg', + 'image/character/dc_yanghu.jpg', + 'image/character/dc_yuejiu.jpg', + 'image/character/dc_zhangmancheng.jpg', + 'image/character/dc_zhaotongzhaoguang.jpg', + 'image/character/dc_zhaoxiang.jpg', + 'image/character/dc_zhaoyǎn.jpg', + 'image/character/dc_zhouxuān.jpg', + 'image/character/dc_zhuling.jpg', + 'image/character/ddd_baosanniang.jpg', + 'image/character/ddd_caomao.jpg', + 'image/character/ddd_caoshuang.jpg', + 'image/character/ddd_dingfeng.jpg', + 'image/character/ddd_guanning.jpg', + 'image/character/ddd_handang.jpg', + 'image/character/ddd_jianshuo.jpg', + 'image/character/ddd_kebineng.jpg', + 'image/character/ddd_liangxi.jpg', + 'image/character/ddd_lie.jpg', + 'image/character/ddd_liuba.jpg', + 'image/character/ddd_liuhong.jpg', + 'image/character/ddd_liuye.jpg', + 'image/character/ddd_sunliang.jpg', + 'image/character/ddd_wangkanglvkai.jpg', + 'image/character/ddd_wuzhi.jpg', + 'image/character/ddd_xiahouxuan.jpg', + 'image/character/ddd_xianglang.jpg', + 'image/character/ddd_xinxianying.jpg', + 'image/character/ddd_xuelingyun.jpg', + 'image/character/ddd_xujing.jpg', + 'image/character/ddd_yujin.jpg', + 'image/character/ddd_zhangkai.jpg', + 'image/character/ddd_zhaoang.jpg', + 'image/character/ddd_zhenji.jpg', + 'image/character/ddd_zhouchu.jpg', + 'image/character/default_silhouette_female.jpg', + 'image/character/default_silhouette_male.jpg', + 'image/character/dengai.jpg', + 'image/character/dengzhi.jpg', + 'image/character/dengzhong.jpg', + 'image/character/dianwei.jpg', + 'image/character/diaochan.jpg', + 'image/character/dingfeng.jpg', + 'image/character/dingshangwan.jpg', + 'image/character/dingyuan.jpg', + 'image/character/diy_caiwenji.jpg', + 'image/character/diy_feishi.jpg', + 'image/character/diy_hanlong.jpg', + 'image/character/diy_huangzhong.jpg', + 'image/character/diy_liufu.jpg', + 'image/character/diy_liuyan.jpg', + 'image/character/diy_liuzan.jpg', + 'image/character/diy_lukang.jpg', + 'image/character/diy_menghuo.jpg', + 'image/character/diy_tianyu.jpg', + 'image/character/diy_weiyan.jpg', + 'image/character/diy_wenyang.jpg', + 'image/character/diy_xizhenxihong.jpg', + 'image/character/diy_xuhuang.jpg', + 'image/character/diy_yangyi.jpg', + 'image/character/diy_yuji.jpg', + 'image/character/diy_zaozhirenjun.jpg', + 'image/character/diy_zhenji.jpg', + 'image/character/diy_zhouyu.jpg', + 'image/character/dongbai.jpg', + 'image/character/dongcheng.jpg', + 'image/character/dongguiren.jpg', + 'image/character/dongtuna.jpg', + 'image/character/dongwan.jpg', + 'image/character/dongxie.jpg', + 'image/character/dongyun.jpg', + 'image/character/dongzhao.jpg', + 'image/character/dongzhuo.jpg', + 'image/character/duanjiong.jpg', + 'image/character/duanqiaoxiao.jpg', + 'image/character/duanwei.jpg', + 'image/character/dufuren.jpg', + 'image/character/duji.jpg', + 'image/character/dukui.jpg', + 'image/character/duosidawang.jpg', + 'image/character/duxi.jpg', + 'image/character/duyu.jpg', + 'image/character/fanchou.jpg', + 'image/character/fanjiangzhangda.jpg', + 'image/character/fanyufeng.jpg', + 'image/character/fazheng.jpg', + 'image/character/feiyao.jpg', + 'image/character/feiyi.jpg', + 'image/character/fengfang.jpg', + 'image/character/fengfangnv.jpg', + 'image/character/fengxi.jpg', + 'image/character/fuhuanghou.jpg', + 'image/character/fuqian.jpg', + 'image/character/furong.jpg', + 'image/character/furongfuqian.jpg', + 'image/character/fuwan.jpg', + 'image/character/ganfuren.jpg', + 'image/character/ganfurenmifuren.jpg', + 'image/character/ganning.jpg', + 'image/character/gaogan.jpg', + 'image/character/gaolan.jpg', + 'image/character/gaoshun.jpg', + 'image/character/gaoxiang.jpg', + 'image/character/gexuan.jpg', + 'image/character/gjqt_aruan.jpg', + 'image/character/gjqt_bailitusu.jpg', + 'image/character/gjqt_beiluo.jpg', + 'image/character/gjqt_cenying.jpg', + 'image/character/gjqt_chuqi.jpg', + 'image/character/gjqt_fanglansheng.jpg', + 'image/character/gjqt_fengqingxue.jpg', + 'image/character/gjqt_hongyu.jpg', + 'image/character/gjqt_ouyangshaogong.jpg', + 'image/character/gjqt_wenrenyu.jpg', + 'image/character/gjqt_xiangling.jpg', + 'image/character/gjqt_xiayize.jpg', + 'image/character/gjqt_xieyi.jpg', + 'image/character/gjqt_xunfang.jpg', + 'image/character/gjqt_yanjiaxieyi.jpg', + 'image/character/gjqt_yinqianshang.jpg', + 'image/character/gjqt_yuewuyi.jpg', + 'image/character/gjqt_yunwuyue.jpg', + 'image/character/gongsundu.jpg', + 'image/character/gongsunkang.jpg', + 'image/character/gongsunyuan.jpg', + 'image/character/gongsunzan.jpg', + 'image/character/guanhai.jpg', + 'image/character/guanlu.jpg', + 'image/character/guanning.jpg', + 'image/character/guānning.jpg', + 'image/character/guanping.jpg', + 'image/character/guanqiujian.jpg', + 'image/character/guansuo.jpg', + 'image/character/guanxingzhangbao.jpg', + 'image/character/guanyinping.jpg', + 'image/character/guanyu.jpg', + 'image/character/guanzhang.jpg', + 'image/character/guohuai.jpg', + 'image/character/guohuanghou.jpg', + 'image/character/guojia.jpg', + 'image/character/guosi.jpg', + 'image/character/guotufengji.jpg', + 'image/character/guozhao.jpg', + 'image/character/guyong.jpg', + 'image/character/gw_aigeleisi.jpg', + 'image/character/gw_aimin.jpg', + 'image/character/gw_airuiting.jpg', + 'image/character/gw_aisinie.jpg', + 'image/character/gw_aokeweisite.jpg', + 'image/character/gw_bierna.jpg', + 'image/character/gw_bulanwang.jpg', + 'image/character/gw_dagong.jpg', + 'image/character/gw_diandian.jpg', + 'image/character/gw_enxier.jpg', + 'image/character/gw_falanxisika.jpg', + 'image/character/gw_feilafanruide.jpg', + 'image/character/gw_fenghuang.jpg', + 'image/character/gw_fuertaisite.jpg', + 'image/character/gw_fulisi.jpg', + 'image/character/gw_gaier.jpg', + 'image/character/gw_haizhiyezhu.jpg', + 'image/character/gw_haluo.jpg', + 'image/character/gw_hanmuduoer.jpg', + 'image/character/gw_hengsaite.jpg', + 'image/character/gw_huoge.jpg', + 'image/character/gw_jieluote.jpg', + 'image/character/gw_kaerweite.jpg', + 'image/character/gw_kairuisi.jpg', + 'image/character/gw_kanbi.jpg', + 'image/character/gw_kaxier.jpg', + 'image/character/gw_kuite.jpg', + 'image/character/gw_laduoweide.jpg', + 'image/character/gw_lanbote.jpg', + 'image/character/gw_laomaotou.jpg', + 'image/character/gw_laomaotou2.jpg', + 'image/character/gw_linjing.jpg', + 'image/character/gw_luobo.jpg', + 'image/character/gw_luoqi.jpg', + 'image/character/gw_meizi.jpg', + 'image/character/gw_mieren.jpg', + 'image/character/gw_nitelila.jpg', + 'image/character/gw_nvyemo.jpg', + 'image/character/gw_oudimu.jpg', + 'image/character/gw_puxila.jpg', + 'image/character/gw_qigaiwang.jpg', + 'image/character/gw_sanhanya.jpg', + 'image/character/gw_saqiya.jpg', + 'image/character/gw_saqiya1.jpg', + 'image/character/gw_saqiya2.jpg', + 'image/character/gw_shanhu.jpg', + 'image/character/gw_shasixiwusi.jpg', + 'image/character/gw_telisi.jpg', + 'image/character/gw_xigedelifa.jpg', + 'image/character/gw_xili.jpg', + 'image/character/gw_yenaifa.jpg', + 'image/character/gw_yioufeisi.jpg', + 'image/character/gw_yioufeisisp.jpg', + 'image/character/gw_yisilinni.jpg', + 'image/character/gw_zhangyujushou.jpg', + 'image/character/gw_zhuoertan.jpg', + 'image/character/gz_caohong.jpg', + 'image/character/gz_caopi.jpg', + 'image/character/gz_chengong.jpg', + 'image/character/gz_dengai.jpg', + 'image/character/gz_dengzhi.jpg', + 'image/character/gz_dianwei.jpg', + 'image/character/gz_diaochan.jpg', + 'image/character/gz_dingfeng.jpg', + 'image/character/gz_fazheng.jpg', + 'image/character/gz_fengxi.jpg', + 'image/character/gz_ganfuren.jpg', + 'image/character/gz_gongsunyuan.jpg', + 'image/character/gz_guanyu.jpg', + 'image/character/gz_guohuai.jpg', + 'image/character/gz_guojia.jpg', + 'image/character/gz_hetaihou.jpg', + 'image/character/gz_huangyueying.jpg', + 'image/character/gz_huangzhong.jpg', + 'image/character/gz_huangzu.jpg', + 'image/character/gz_jiangwei.jpg', + 'image/character/gz_jiaxu.jpg', + 'image/character/gz_lingtong.jpg', + 'image/character/gz_liuba.jpg', + 'image/character/gz_liuqi.jpg', + 'image/character/gz_lukang.jpg', + 'image/character/gz_luxun.jpg', + 'image/character/gz_lvbu.jpg', + 'image/character/gz_lvlingqi.jpg', + 'image/character/gz_madai.jpg', + 'image/character/gz_masu.jpg', + 'image/character/gz_miheng.jpg', + 'image/character/gz_panfeng.jpg', + 'image/character/gz_panjun.jpg', + 'image/character/gz_pengyang.jpg', + 'image/character/gz_re_xushu.jpg', + 'image/character/gz_re_yuanshao.jpg', + 'image/character/gz_shamoke.jpg', + 'image/character/gz_shixie.jpg', + 'image/character/gz_simazhao.jpg', + 'image/character/gz_sp_zhugeliang.jpg', + 'image/character/gz_sunce.jpg', + 'image/character/gz_sunjian.jpg', + 'image/character/gz_sunshangxiang.jpg', + 'image/character/gz_tangzi.jpg', + 'image/character/gz_wangping.jpg', + 'image/character/gz_wenqin.jpg', + 'image/character/gz_wuguotai.jpg', + 'image/character/gz_wujing.jpg', + 'image/character/gz_xf_sufei.jpg', + 'image/character/gz_xiahouba.jpg', + 'image/character/gz_xiahouyuan.jpg', + 'image/character/gz_xiaoqiao.jpg', + 'image/character/gz_xunyou.jpg', + 'image/character/gz_xusheng.jpg', + 'image/character/gz_xuyou.jpg', + 'image/character/gz_yanbaihu.jpg', + 'image/character/gz_yangwan.jpg', + 'image/character/gz_yuanshu.jpg', + 'image/character/gz_yuejin.jpg', + 'image/character/gz_yuji.jpg', + 'image/character/gz_yujin.jpg', + 'image/character/gz_zhanglu.jpg', + 'image/character/gz_zhangxiu.jpg', + 'image/character/gz_zhenji.jpg', + 'image/character/gz_zhonghui.jpg', + 'image/character/gz_zhouyu.jpg', + 'image/character/gz_zhugeke.jpg', + 'image/character/gz_zhugeliang.jpg', + 'image/character/gz_zhuling.jpg', + 'image/character/gz_zuoci.jpg', + 'image/character/hanba.jpg', + 'image/character/handang.jpg', + 'image/character/hanfu.jpg', + 'image/character/hanhaoshihuan.jpg', + 'image/character/hanlong.jpg', + 'image/character/hanmeng.jpg', + 'image/character/hansui.jpg', + 'image/character/haomeng.jpg', + 'image/character/haopu.jpg', + 'image/character/haozhao.jpg', + 'image/character/heiwuchang.jpg', + 'image/character/hejin.jpg', + 'image/character/heqi.jpg', + 'image/character/hetaihou.jpg', + 'image/character/heyan.jpg', + 'image/character/hhzz_kanade.jpg', + 'image/character/hhzz_shiona.jpg', + 'image/character/hhzz_takaramono1.jpg', + 'image/character/hhzz_takaramono2.jpg', + 'image/character/hs_aedwin.jpg', + 'image/character/hs_aerfusi.jpg', + 'image/character/hs_aiqinvyao.jpg', + 'image/character/hs_alakir.jpg', + 'image/character/hs_alextrasza.jpg', + 'image/character/hs_alleria.jpg', + 'image/character/hs_amala.jpg', + 'image/character/hs_anduin.jpg', + 'image/character/hs_anomalus.jpg', + 'image/character/hs_antonidas.jpg', + 'image/character/hs_ashamoer.jpg', + 'image/character/hs_aya.jpg', + 'image/character/hs_baiguyoulong.jpg', + 'image/character/hs_bannabusi.jpg', + 'image/character/hs_barnes.jpg', + 'image/character/hs_bchillmaw.jpg', + 'image/character/hs_bilanyoulong.jpg', + 'image/character/hs_bingshuangnvwang.jpg', + 'image/character/hs_blingtron.jpg', + 'image/character/hs_bolvar.jpg', + 'image/character/hs_brann.jpg', + 'image/character/hs_duyaxinshi.jpg', + 'image/character/hs_enzoth.jpg', + 'image/character/hs_fachaotuteng.jpg', + 'image/character/hs_fandral.jpg', + 'image/character/hs_fengjianhuanfengzhe.jpg', + 'image/character/hs_fenjie.jpg', + 'image/character/hs_finley.jpg', + 'image/character/hs_fuding.jpg', + 'image/character/hs_guldan.jpg', + 'image/character/hs_hajiasha.jpg', + 'image/character/hs_hallazeal.jpg', + 'image/character/hs_heifengqishi.jpg', + 'image/character/hs_hemite.jpg', + 'image/character/hs_hudunren.jpg', + 'image/character/hs_huolituteng.jpg', + 'image/character/hs_huzhixiannv.jpg', + 'image/character/hs_jaina.jpg', + 'image/character/hs_jgarrosh.jpg', + 'image/character/hs_jiawodun.jpg', + 'image/character/hs_jiaziruila.jpg', + 'image/character/hs_jinglinglong.jpg', + 'image/character/hs_kaituozhe.jpg', + 'image/character/hs_kalimosi.jpg', + 'image/character/hs_kazhakusi.jpg', + 'image/character/hs_kchromaggus.jpg', + 'image/character/hs_kcthun.jpg', + 'image/character/hs_khadgar.jpg', + 'image/character/hs_lafamu.jpg', + 'image/character/hs_laila.jpg', + 'image/character/hs_laxiao.jpg', + 'image/character/hs_lazi.jpg', + 'image/character/hs_liadrin.jpg', + 'image/character/hs_loatheb.jpg', + 'image/character/hs_lreno.jpg', + 'image/character/hs_lrexxar.jpg', + 'image/character/hs_lrhonin.jpg', + 'image/character/hs_magni.jpg', + 'image/character/hs_malfurion.jpg', + 'image/character/hs_malorne.jpg', + 'image/character/hs_malygos.jpg', + 'image/character/hs_manyututeng.jpg', + 'image/character/hs_medivh.jpg', + 'image/character/hs_mijiaojisi.jpg', + 'image/character/hs_mojinbaozi.jpg', + 'image/character/hs_morgl.jpg', + 'image/character/hs_nate.jpg', + 'image/character/hs_neptulon.jpg', + 'image/character/hs_nozdormu.jpg', + 'image/character/hs_nuogefu.jpg', + 'image/character/hs_pengpeng.jpg', + 'image/character/hs_pyros.jpg', + 'image/character/hs_pyros1.jpg', + 'image/character/hs_pyros2.jpg', + 'image/character/hs_ronghejuren.jpg', + 'image/character/hs_ruanniguai.jpg', + 'image/character/hs_sainaliusi.jpg', + 'image/character/hs_sapphiron.jpg', + 'image/character/hs_selajin.jpg', + 'image/character/hs_selajin2.jpg', + 'image/character/hs_shaku.jpg', + 'image/character/hs_shanlingjuren.jpg', + 'image/character/hs_shifazhe.jpg', + 'image/character/hs_shirencao.jpg', + 'image/character/hs_shizugui.jpg', + 'image/character/hs_shuiwenxuejia.jpg', + 'image/character/hs_siwangxianzhi.jpg', + 'image/character/hs_siwangzhiyi.jpg', + 'image/character/hs_sthrall.jpg', + 'image/character/hs_taisi.jpg', + 'image/character/hs_tanghangu.jpg', + 'image/character/hs_tgolem.jpg', + 'image/character/hs_totemic.jpg', + 'image/character/hs_trueheart.jpg', + 'image/character/hs_tuoqi.jpg', + 'image/character/hs_tyrande.jpg', + 'image/character/hs_waleera.jpg', + 'image/character/hs_walian.jpg', + 'image/character/hs_wolazi.jpg', + 'image/character/hs_wujiyuansu.jpg', + 'image/character/hs_wuther.jpg', + 'image/character/hs_wuyaowang.jpg', + 'image/character/hs_wvelen.jpg', + 'image/character/hs_xialikeer.jpg', + 'image/character/hs_xiangyaqishi.jpg', + 'image/character/hs_xsylvanas.jpg', + 'image/character/hs_xuanzhuanjijia.jpg', + 'image/character/hs_xuefashi.jpg', + 'image/character/hs_xukongzhiying.jpg', + 'image/character/hs_yangyanwageli.jpg', + 'image/character/hs_yashaji.jpg', + 'image/character/hs_yelinchulong.jpg', + 'image/character/hs_yelinlonghou.jpg', + 'image/character/hs_yelise.jpg', + 'image/character/hs_yinggencao.jpg', + 'image/character/hs_yngvar.jpg', + 'image/character/hs_yogg.jpg', + 'image/character/hs_ysera.jpg', + 'image/character/hs_yuhuozhe.jpg', + 'image/character/hs_zhanzhenggushu.jpg', + 'image/character/hs_zhihuanhua.jpg', + 'image/character/hs_zhishigushu.jpg', + 'image/character/hs_zhouzhuo.jpg', + 'image/character/huaman.jpg', + 'image/character/huanfan.jpg', + 'image/character/huangchengyan.jpg', + 'image/character/huangfusong.jpg', + 'image/character/huanggai.jpg', + 'image/character/huanghao.jpg', + 'image/character/huangjinleishi.jpg', + 'image/character/huangyueying.jpg', + 'image/character/huangzhong.jpg', + 'image/character/huangzu.jpg', + 'image/character/huatuo.jpg', + 'image/character/huaxin.jpg', + 'image/character/huaxiong.jpg', + 'image/character/huban.jpg', + 'image/character/hucheer.jpg', + 'image/character/hujinding.jpg', + 'image/character/huojun.jpg', + 'image/character/huzhao.jpg', + 'image/character/jiachong.jpg', + 'image/character/jiakui.jpg', + 'image/character/jiangfei.jpg', + 'image/character/jianggan.jpg', + 'image/character/jiangqing.jpg', + 'image/character/jiangwei.jpg', + 'image/character/jianyong.jpg', + 'image/character/jiaxu.jpg', + 'image/character/jikang.jpg', + 'image/character/jiling.jpg', + 'image/character/jin_guohuai.jpg', + 'image/character/jin_jiachong.jpg', + 'image/character/jin_simashi.jpg', + 'image/character/jin_simayi.jpg', + 'image/character/jin_simazhao.jpg', + 'image/character/jin_wangyuanji.jpg', + 'image/character/jin_xiahouhui.jpg', + 'image/character/jin_yanghu.jpg', + 'image/character/jin_yanghuiyu.jpg', + 'image/character/jin_zhangchunhua.jpg', + 'image/character/jin_zhouchu.jpg', + 'image/character/jsp_caoren.jpg', + 'image/character/jsp_guanyu.jpg', + 'image/character/jsp_huangyueying.jpg', + 'image/character/jsp_liubei.jpg', + 'image/character/jsp_zhaoyun.jpg', + 'image/character/jsrg_caocao.jpg', + 'image/character/jsrg_chendeng.jpg', + 'image/character/jsrg_chunyuqiong.jpg', + 'image/character/jsrg_dongbai.jpg', + 'image/character/jsrg_fanjiangzhangda.jpg', + 'image/character/jsrg_guanyu.jpg', + 'image/character/jsrg_guojia.jpg', + 'image/character/jsrg_hansui.jpg', + 'image/character/jsrg_hejin.jpg', + 'image/character/jsrg_huangfusong.jpg', + 'image/character/jsrg_huangzhong.jpg', + 'image/character/jsrg_kongrong.jpg', + 'image/character/jsrg_liubei.jpg', + 'image/character/jsrg_liuhong.jpg', + 'image/character/jsrg_liuyan.jpg', + 'image/character/jsrg_lougui.jpg', + 'image/character/jsrg_lvbu.jpg', + 'image/character/jsrg_machao.jpg', + 'image/character/jsrg_nanhualaoxian.jpg', + 'image/character/jsrg_pangtong.jpg', + 'image/character/jsrg_qiaoxuan.jpg', + 'image/character/jsrg_sunce.jpg', + 'image/character/jsrg_sunjian.jpg', + 'image/character/jsrg_sunshangxiang.jpg', + 'image/character/jsrg_wangyun.jpg', + 'image/character/jsrg_xiahouen.jpg', + 'image/character/jsrg_xiahourong.jpg', + 'image/character/jsrg_xugong.jpg', + 'image/character/jsrg_xushao.jpg', + 'image/character/jsrg_xuyou.jpg', + 'image/character/jsrg_yangbiao.jpg', + 'image/character/jsrg_zhangchu.jpg', + 'image/character/jsrg_zhangfei.jpg', + 'image/character/jsrg_zhanghe.jpg', + 'image/character/jsrg_zhangliao.jpg', + 'image/character/jsrg_zhangren.jpg', + 'image/character/jsrg_zhenji.jpg', + 'image/character/jsrg_zhujun.jpg', + 'image/character/jsrg_zoushi.jpg', + 'image/character/jun_caocao.jpg', + 'image/character/jun_liubei.jpg', + 'image/character/jun_sunquan.jpg', + 'image/character/jun_zhangjiao.jpg', + 'image/character/junk_duanwei.jpg', + 'image/character/junk_huangyueying.jpg', + 'image/character/junk_lidian.jpg', + 'image/character/junk_liubei.jpg', + 'image/character/junk_simayi.jpg', + 'image/character/junk_sunquan.jpg', + 'image/character/junk_xuyou.jpg', + 'image/character/junk_zhangrang.jpg', + 'image/character/kaisa.jpg', + 'image/character/kanze.jpg', + 'image/character/kebineng.jpg', + 'image/character/key_abyusa.jpg', + 'image/character/key_akane.jpg', + 'image/character/key_akiko.jpg', + 'image/character/key_ao.jpg', + 'image/character/key_asara.jpg', + 'image/character/key_ayato.jpg', + 'image/character/key_chihaya.jpg', + 'image/character/key_doruji.jpg', + 'image/character/key_erika.jpg', + 'image/character/key_fuuko.jpg', + 'image/character/key_godan.jpg', + 'image/character/key_harukakanata.jpg', + 'image/character/key_haruko.jpg', + 'image/character/key_hina.jpg', + 'image/character/key_hinata.jpg', + 'image/character/key_hiroto.jpg', + 'image/character/key_hisako.jpg', + 'image/character/key_inari.jpg', + 'image/character/key_iriya.jpg', + 'image/character/key_iwasawa.jpg', + 'image/character/key_jojiro.jpg', + 'image/character/key_kagari.jpg', + 'image/character/key_kamome.jpg', + 'image/character/key_kano.jpg', + 'image/character/key_kaori.jpg', + 'image/character/key_kengo.jpg', + 'image/character/key_kiyu.jpg', + 'image/character/key_komari.jpg', + 'image/character/key_kotarou.jpg', + 'image/character/key_kotomi.jpg', + 'image/character/key_kotori.jpg', + 'image/character/key_kud.jpg', + 'image/character/key_kyoko.jpg', + 'image/character/key_kyou.jpg', + 'image/character/key_kyouko.jpg', + 'image/character/key_kyousuke.jpg', + 'image/character/key_lucia.jpg', + 'image/character/key_masato.jpg', + 'image/character/key_mia.jpg', + 'image/character/key_michiru.jpg', + 'image/character/key_midori.jpg', + 'image/character/key_miki.jpg', + 'image/character/key_minagi.jpg', + 'image/character/key_mio.jpg', + 'image/character/key_misa.jpg', + 'image/character/key_misuzu.jpg', + 'image/character/key_nagisa.jpg', + 'image/character/key_nao.jpg', + 'image/character/key_noda.jpg', + 'image/character/key_rei.jpg', + 'image/character/key_riki.jpg', + 'image/character/key_rin.jpg', + 'image/character/key_rumi.jpg', + 'image/character/key_ryoichi.jpg', + 'image/character/key_sakuya.jpg', + 'image/character/key_sasami.jpg', + 'image/character/key_satomi.jpg', + 'image/character/key_saya.jpg', + 'image/character/key_seira.jpg', + 'image/character/key_shiina.jpg', + 'image/character/key_shiki.jpg', + 'image/character/key_shiori.jpg', + 'image/character/key_shiorimiyuki.jpg', + 'image/character/key_shiroha.jpg', + 'image/character/key_shizuku.jpg', + 'image/character/key_shizuru.jpg', + 'image/character/key_sunohara.jpg', + 'image/character/key_tenzen.jpg', + 'image/character/key_tomoya.jpg', + 'image/character/key_tomoyo.jpg', + 'image/character/key_tsumugi.jpg', + 'image/character/key_umi.jpg', + 'image/character/key_ushio.jpg', + 'image/character/key_yoshino.jpg', + 'image/character/key_youta.jpg', + 'image/character/key_yui.jpg', + 'image/character/key_yuiko.jpg', + 'image/character/key_yukine.jpg', + 'image/character/key_yukito.jpg', + 'image/character/key_yuri.jpg', + 'image/character/key_yusa.jpg', + 'image/character/key_yuu.jpg', + 'image/character/key_yuuki.jpg', + 'image/character/key_yuzuru.jpg', + 'image/character/kongrong.jpg', + 'image/character/kuailiangkuaiyue.jpg', + 'image/character/kuaiqi.jpg', + 'image/character/laimin.jpg', + 'image/character/laiyinger.jpg', + 'image/character/le_shen_jiaxu.jpg', + 'image/character/leibo.jpg', + 'image/character/leitong.jpg', + 'image/character/liangxing.jpg', + 'image/character/liaohua.jpg', + 'image/character/libai.jpg', + 'image/character/licaiwei.jpg', + 'image/character/lifeng.jpg', + 'image/character/lijue.jpg', + 'image/character/lingcao.jpg', + 'image/character/lingju.jpg', + 'image/character/lingtong.jpg', + 'image/character/liqueguosi.jpg', + 'image/character/liru.jpg', + 'image/character/lisu.jpg', + 'image/character/litong.jpg', + 'image/character/liuba.jpg', + 'image/character/liubei.jpg', + 'image/character/liubian.jpg', + 'image/character/liubiao.jpg', + 'image/character/liuchen.jpg', + 'image/character/liucheng.jpg', + 'image/character/liuchongluojun.jpg', + 'image/character/liufeng.jpg', + 'image/character/liuhong.jpg', + 'image/character/liuhui.jpg', + 'image/character/liupi.jpg', + 'image/character/liuqi.jpg', + 'image/character/liushan.jpg', + 'image/character/liuxie.jpg', + 'image/character/liuyan.jpg', + 'image/character/liuyao.jpg', + 'image/character/liuye.jpg', + 'image/character/liuyong.jpg', + 'image/character/liuyu.jpg', + 'image/character/liuzan.jpg', + 'image/character/liuzhang.jpg', + 'image/character/liwan.jpg', + 'image/character/liwei.jpg', + 'image/character/liyan.jpg', + 'image/character/liyixiejing.jpg', + 'image/character/longwang.jpg', + 'image/character/longyufei.jpg', + 'image/character/luji.jpg', + 'image/character/lukai.jpg', + 'image/character/lukang.jpg', + 'image/character/luotong.jpg', + 'image/character/luoxian.jpg', + 'image/character/lushi.jpg', + 'image/character/luxun.jpg', + 'image/character/luyi.jpg', + 'image/character/luyusheng.jpg', + 'image/character/luzhi.jpg', + 'image/character/lvboshe.jpg', + 'image/character/lvbu.jpg', + 'image/character/lvdai.jpg', + 'image/character/lvfan.jpg', + 'image/character/lvkai.jpg', + 'image/character/lvkuanglvxiang.jpg', + 'image/character/lvlingqi.jpg', + 'image/character/lvmeng.jpg', + 'image/character/lvqian.jpg', + 'image/character/machao.jpg', + 'image/character/macheng.jpg', + 'image/character/madai.jpg', + 'image/character/majun.jpg', + 'image/character/maliang.jpg', + 'image/character/malingli.jpg', + 'image/character/mamian.jpg', + 'image/character/mamidi.jpg', + 'image/character/manchong.jpg', + 'image/character/mangyachang.jpg', + 'image/character/masu.jpg', + 'image/character/mateng.jpg', + 'image/character/maxiumatie.jpg', + 'image/character/mayuanyi.jpg', + 'image/character/mayunlu.jpg', + 'image/character/mazhong.jpg', + 'image/character/mb_sunluyu.jpg', + 'image/character/mengda.jpg', + 'image/character/menghuo.jpg', + 'image/character/mengjie.jpg', + 'image/character/mengyou.jpg', + 'image/character/mifangfushiren.jpg', + 'image/character/mifuren.jpg', + 'image/character/miheng.jpg', + 'image/character/mizhu.jpg', + 'image/character/mp_liuling.jpg', + 'image/character/mtg_ayeni.jpg', + 'image/character/mtg_jiding.jpg', + 'image/character/mtg_jiesi.jpg', + 'image/character/mtg_lilianna.jpg', + 'image/character/mtg_nisha.jpg', + 'image/character/mtg_qianzhuo.jpg', + 'image/character/mushun.jpg', + 'image/character/nanhualaoxian.jpg', + 'image/character/nashime.jpg', + 'image/character/new_caoren.jpg', + 'image/character/nezha.jpg', + 'image/character/nianshou.jpg', + 'image/character/niufu.jpg', + 'image/character/niujin.jpg', + 'image/character/niutou.jpg', + 'image/character/noname.jpg', + 'image/character/noname_machao.png', + 'image/character/noname_sunce.png', + 'image/character/ns_caimao.jpg', + 'image/character/ns_caoanmin.jpg', + 'image/character/ns_caocao.jpg', + 'image/character/ns_caocaosp.jpg', + 'image/character/ns_caoshuang.jpg', + 'image/character/ns_chendao.jpg', + 'image/character/ns_chengpu.jpg', + 'image/character/ns_chentai.jpg', + 'image/character/ns_duangui.jpg', + 'image/character/ns_duji.jpg', + 'image/character/ns_fanchou.jpg', + 'image/character/ns_guanlu.jpg', + 'image/character/ns_huamulan.jpg', + 'image/character/ns_huangchengyan.jpg', + 'image/character/ns_huangwudie.jpg', + 'image/character/ns_huangzu.jpg', + 'image/character/ns_jiaxu.jpg', + 'image/character/ns_jinke.jpg', + 'image/character/ns_lijue.jpg', + 'image/character/ns_limi.jpg', + 'image/character/ns_lisu.jpg', + 'image/character/ns_liuzhang.jpg', + 'image/character/ns_luyusheng.jpg', + 'image/character/ns_lvmeng.jpg', + 'image/character/ns_lvzhi.jpg', + 'image/character/ns_masu.jpg', + 'image/character/ns_mengyou.jpg', + 'image/character/ns_nanhua.jpg', + 'image/character/ns_nanhua_left.jpg', + 'image/character/ns_nanhua_right.jpg', + 'image/character/ns_ruanji.jpg', + 'image/character/ns_shenpei.jpg', + 'image/character/ns_simazhao.jpg', + 'image/character/ns_sunchensunjun.jpg', + 'image/character/ns_sundeng.jpg', + 'image/character/ns_sunjian.jpg', + 'image/character/ns_sunyi.jpg', + 'image/character/ns_wangyue.jpg', + 'image/character/ns_wangyun.jpg', + 'image/character/ns_wenchou.jpg', + 'image/character/ns_xinnanhua.jpg', + 'image/character/ns_xinxianying.jpg', + 'image/character/ns_yanghu.jpg', + 'image/character/ns_yangyi.jpg', + 'image/character/ns_yanliang.jpg', + 'image/character/ns_yuanxi.jpg', + 'image/character/ns_yuji.jpg', + 'image/character/ns_yujisp.jpg', + 'image/character/ns_zanghong.jpg', + 'image/character/ns_zhangbao.jpg', + 'image/character/ns_zhangji.jpg', + 'image/character/ns_zhangning.jpg', + 'image/character/ns_zhangwei.jpg', + 'image/character/ns_zhangxiu.jpg', + 'image/character/ns_zhonglimu.jpg', + 'image/character/ns_zhugeliang.jpg', + 'image/character/ns_zuoci.jpg', + 'image/character/ol_bianfuren.jpg', + 'image/character/ol_caiwenji.jpg', + 'image/character/ol_chendeng.jpg', + 'image/character/ol_dengai.jpg', + 'image/character/ol_dengzhi.jpg', + 'image/character/ol_dianwei.jpg', + 'image/character/ol_dingshangwan.jpg', + 'image/character/ol_dingyuan.jpg', + 'image/character/ol_dongzhao.jpg', + 'image/character/ol_dongzhuo.jpg', + 'image/character/ol_feiyi.jpg', + 'image/character/ol_furong.jpg', + 'image/character/ol_guohuai.jpg', + 'image/character/ol_huangzhong.jpg', + 'image/character/ol_huaxin.jpg', + 'image/character/ol_huaxiong.jpg', + 'image/character/ol_huban.jpg', + 'image/character/ol_jiangwei.jpg', + 'image/character/ol_jianyong.jpg', + 'image/character/ol_lingtong.jpg', + 'image/character/ol_lisu.jpg', + 'image/character/ol_liuba.jpg', + 'image/character/ol_liushan.jpg', + 'image/character/ol_liuyu.jpg', + 'image/character/ol_liwan.jpg', + 'image/character/ol_lusu.jpg', + 'image/character/ol_luyusheng.jpg', + 'image/character/ol_maliang.jpg', + 'image/character/ol_mengda.jpg', + 'image/character/ol_pangde.jpg', + 'image/character/ol_pangtong.jpg', + 'image/character/ol_pengyang.jpg', + 'image/character/ol_puyuan.jpg', + 'image/character/ol_qianzhao.jpg', + 'image/character/ol_sp_zhugeliang.jpg', + 'image/character/ol_sunjian.jpg', + 'image/character/ol_wanglang.jpg', + 'image/character/ol_wangrong.jpg', + 'image/character/ol_weiyan.jpg', + 'image/character/ol_wenqin.jpg', + 'image/character/ol_xiahouyuan.jpg', + 'image/character/ol_xiaoqiao.jpg', + 'image/character/ol_xinxianying.jpg', + 'image/character/ol_xuhuang.jpg', + 'image/character/ol_xunyu.jpg', + 'image/character/ol_yangyi.jpg', + 'image/character/ol_yanwen.jpg', + 'image/character/ol_yuanshao.jpg', + 'image/character/ol_yuanshu.jpg', + 'image/character/ol_yujin.jpg', + 'image/character/ol_zhangchangpu.jpg', + 'image/character/ol_zhangliao.jpg', + 'image/character/ol_zhangrang.jpg', + 'image/character/ol_zhangyì.jpg', + 'image/character/ol_zhangzhang.jpg', + 'image/character/ol_zhouqun.jpg', + 'image/character/ol_zhujun.jpg', + 'image/character/ol_zhuling.jpg', + 'image/character/ol_zhurong.jpg', + 'image/character/old_bulianshi.jpg', + 'image/character/old_caocao.jpg', + 'image/character/old_caochong.jpg', + 'image/character/old_caochun.jpg', + 'image/character/old_caoren.jpg', + 'image/character/old_caorui.jpg', + 'image/character/old_caoxiu.jpg', + 'image/character/old_caozhen.jpg', + 'image/character/old_chendao.jpg', + 'image/character/old_chenqun.jpg', + 'image/character/old_dingfeng.jpg', + 'image/character/old_fuhuanghou.jpg', + 'image/character/old_gaoshun.jpg', + 'image/character/old_guanqiujian.jpg', + 'image/character/old_guanyinping.jpg', + 'image/character/old_guanyu.jpg', + 'image/character/old_guanzhang.jpg', + 'image/character/old_handang.jpg', + 'image/character/old_huangfusong.jpg', + 'image/character/old_huanghao.jpg', + 'image/character/old_huatuo.jpg', + 'image/character/old_huaxiong.jpg', + 'image/character/old_jiakui.jpg', + 'image/character/old_lingju.jpg', + 'image/character/old_lingtong.jpg', + 'image/character/old_liubiao.jpg', + 'image/character/old_liuzan.jpg', + 'image/character/old_liyan.jpg', + 'image/character/old_machao.jpg', + 'image/character/old_madai.jpg', + 'image/character/old_majun.jpg', + 'image/character/old_maliang.jpg', + 'image/character/old_quancong.jpg', + 'image/character/old_re_lidian.jpg', + 'image/character/old_shen_zhaoyun.jpg', + 'image/character/old_shixie.jpg', + 'image/character/old_wanglang.jpg', + 'image/character/old_wangyi.jpg', + 'image/character/old_wangyun.jpg', + 'image/character/old_xiaoqiao.jpg', + 'image/character/old_xusheng.jpg', + 'image/character/old_yangyan.jpg', + 'image/character/old_yangzhi.jpg', + 'image/character/old_yuanshu.jpg', + 'image/character/old_zhangfei.jpg', + 'image/character/old_zhangxingcai.jpg', + 'image/character/old_zhaoyun.jpg', + 'image/character/old_zhonghui.jpg', + 'image/character/old_zhoutai.jpg', + 'image/character/old_zhugezhan.jpg', + 'image/character/old_zhuhuan.jpg', + 'image/character/old_zhuran.jpg', + 'image/character/old_zhuzhi.jpg', + 'image/character/oldre_liubiao.jpg', + 'image/character/ow_ana.jpg', + 'image/character/ow_banzang.jpg', + 'image/character/ow_baolei.jpg', + 'image/character/ow_chanyata.jpg', + 'image/character/ow_dva.jpg', + 'image/character/ow_falaozhiying.jpg', + 'image/character/ow_heibaihe.jpg', + 'image/character/ow_heiying.jpg', + 'image/character/ow_kuangshu.jpg', + 'image/character/ow_laiyinhate.jpg', + 'image/character/ow_liekong.jpg', + 'image/character/ow_luba.jpg', + 'image/character/ow_luxiao.jpg', + 'image/character/ow_maikelei.jpg', + 'image/character/ow_mei.jpg', + 'image/character/ow_orisa.jpg', + 'image/character/ow_shibing.jpg', + 'image/character/ow_sishen.jpg', + 'image/character/ow_tianshi.jpg', + 'image/character/ow_tuobiang.jpg', + 'image/character/ow_wensidun.jpg', + 'image/character/ow_yuanshi.jpg', + 'image/character/ow_zhaliya.jpg', + 'image/character/ow_zhixuzhiguang.jpg', + 'image/character/pal_anu.jpg', + 'image/character/pal_changqing.jpg', + 'image/character/pal_hanlingsha.jpg', + 'image/character/pal_jiangcheng.jpg', + 'image/character/pal_jiangyunfan.jpg', + 'image/character/pal_jingtian.jpg', + 'image/character/pal_jushifang.jpg', + 'image/character/pal_leiyuange.jpg', + 'image/character/pal_linyueru.jpg', + 'image/character/pal_liumengli.jpg', + 'image/character/pal_lixiaoyao.jpg', + 'image/character/pal_longkui.jpg', + 'image/character/pal_longkuigui.jpg', + 'image/character/pal_longyou.jpg', + 'image/character/pal_luozhaoyan.jpg', + 'image/character/pal_mingxiu.jpg', + 'image/character/pal_muchanglan.jpg', + 'image/character/pal_murongziying.jpg', + 'image/character/pal_nangonghuang.jpg', + 'image/character/pal_shenqishuang.jpg', + 'image/character/pal_sumei.jpg', + 'image/character/pal_tangyurou.jpg', + 'image/character/pal_wangpengxu.jpg', + 'image/character/pal_wangxiaohu.jpg', + 'image/character/pal_wenhui.jpg', + 'image/character/pal_xia.jpg', + 'image/character/pal_xiahoujinxuan.jpg', + 'image/character/pal_xianqing.jpg', + 'image/character/pal_xiaoman.jpg', + 'image/character/pal_xingxuan.jpg', + 'image/character/pal_xuanxiao.jpg', + 'image/character/pal_xuejian.jpg', + 'image/character/pal_yuejinzhao.jpg', + 'image/character/pal_yueqi.jpg', + 'image/character/pal_yuntianhe.jpg', + 'image/character/pal_zhaoliner.jpg', + 'image/character/pal_zixuan.jpg', + 'image/character/panfeng.jpg', + 'image/character/pangde.jpg', + 'image/character/pangdegong.jpg', + 'image/character/panghui.jpg', + 'image/character/pangtong.jpg', + 'image/character/panjun.jpg', + 'image/character/panshu.jpg', + 'image/character/panzhangmazhong.jpg', + 'image/character/pe_mengda.jpg', + 'image/character/pe_sunchen.jpg', + 'image/character/pe_wangyun.jpg', + 'image/character/pe_wenqin.jpg', + 'image/character/pe_zhonghui.jpg', + 'image/character/peixiu.jpg', + 'image/character/peiyuanshao.jpg', + 'image/character/pengyang.jpg', + 'image/character/pk_sp_duyu.jpg', + 'image/character/prp_zhugeliang.jpg', + 'image/character/ps_caopi.jpg', + 'image/character/ps_caozhi.jpg', + 'image/character/ps_guanyu.jpg', + 'image/character/ps_jiaxu.jpg', + 'image/character/ps_jin_simayi.jpg', + 'image/character/ps_lvbu.jpg', + 'image/character/ps_machao.jpg', + 'image/character/ps_shen_machao.jpg', + 'image/character/ps_simayi.jpg', + 'image/character/ps_zhugeliang.jpg', + 'image/character/ps1059_guojia.jpg', + 'image/character/ps1062_zhouyu.jpg', + 'image/character/ps2063_zhaoyun.jpg', + 'image/character/ps2066_zhugeliang.jpg', + 'image/character/ps2067_zhaoyun.jpg', + 'image/character/ps2068_simayi.jpg', + 'image/character/ps2070_guojia.jpg', + 'image/character/ps2080_zhouyu.jpg', + 'image/character/pujing.jpg', + 'image/character/puyuan.jpg', + 'image/character/qianzhao.jpg', + 'image/character/qiaogong.jpg', + 'image/character/qiaorui.jpg', + 'image/character/qiaozhou.jpg', + 'image/character/qinghegongzhu.jpg', + 'image/character/qinlang.jpg', + 'image/character/qinmi.jpg', + 'image/character/qinyilu.jpg', + 'image/character/qiuliju.jpg', + 'image/character/quancong.jpg', + 'image/character/quanhuijie.jpg', + 'image/character/quhuang.jpg', + 'image/character/quyi.jpg', + 'image/character/re_baosanniang.jpg', + 'image/character/re_bulianshi.jpg', + 'image/character/re_caifuren.jpg', + 'image/character/re_caiwenji.jpg', + 'image/character/re_caiyong.jpg', + 'image/character/re_caocao.jpg', + 'image/character/re_caochong.jpg', + 'image/character/re_caopi.jpg', + 'image/character/re_caoxiu.jpg', + 'image/character/re_caozhang.jpg', + 'image/character/re_caozhen.jpg', + 'image/character/re_caozhi.jpg', + 'image/character/re_chendeng.jpg', + 'image/character/re_chengong.jpg', + 'image/character/re_chengpu.jpg', + 'image/character/re_chenqun.jpg', + 'image/character/re_chunyuqiong.jpg', + 'image/character/re_daqiao.jpg', + 'image/character/re_dengai.jpg', + 'image/character/re_dengzhi.jpg', + 'image/character/re_dianwei.jpg', + 'image/character/re_diaochan.jpg', + 'image/character/re_dongbai.jpg', + 'image/character/re_dongcheng.jpg', + 'image/character/re_dongzhuo.jpg', + 'image/character/re_duji.jpg', + 'image/character/re_fazheng.jpg', + 'image/character/re_fengfangnv.jpg', + 'image/character/re_fuhuanghou.jpg', + 'image/character/re_ganning.jpg', + 'image/character/re_gaoshun.jpg', + 'image/character/re_gongsunyuan.jpg', + 'image/character/re_gongsunzan.jpg', + 'image/character/re_guanping.jpg', + 'image/character/re_guanqiujian.jpg', + 'image/character/re_guanyu.jpg', + 'image/character/re_guanzhang.jpg', + 'image/character/re_guohuai.jpg', + 'image/character/re_guohuanghou.jpg', + 'image/character/re_guojia.jpg', + 'image/character/re_guotufengji.jpg', + 'image/character/re_guyong.jpg', + 'image/character/re_handang.jpg', + 'image/character/re_hanhaoshihuan.jpg', + 'image/character/re_hansui.jpg', + 'image/character/re_hejin.jpg', + 'image/character/re_heqi.jpg', + 'image/character/re_huanggai.jpg', + 'image/character/re_huangyueying.jpg', + 'image/character/re_huangzhong.jpg', + 'image/character/re_huatuo.jpg', + 'image/character/re_huaxiong.jpg', + 'image/character/re_hucheer.jpg', + 'image/character/re_jiangwei.jpg', + 'image/character/re_jianyong.jpg', + 'image/character/re_jiaxu.jpg', + 'image/character/re_jikang.jpg', + 'image/character/re_jsp_huangyueying.jpg', + 'image/character/re_jsp_pangtong.jpg', + 'image/character/re_jushou.jpg', + 'image/character/re_kanze.jpg', + 'image/character/re_liaohua.jpg', + 'image/character/re_lidian.jpg', + 'image/character/re_lingtong.jpg', + 'image/character/re_liru.jpg', + 'image/character/re_liubei.jpg', + 'image/character/re_liubiao.jpg', + 'image/character/re_liuchen.jpg', + 'image/character/re_liufeng.jpg', + 'image/character/re_liushan.jpg', + 'image/character/re_liuzan.jpg', + 'image/character/re_lusu.jpg', + 'image/character/re_luxun.jpg', + 'image/character/re_lvbu.jpg', + 'image/character/re_lvmeng.jpg', + 'image/character/re_machao.jpg', + 'image/character/re_madai.jpg', + 'image/character/re_maliang.jpg', + 'image/character/re_manchong.jpg', + 'image/character/re_masu.jpg', + 'image/character/re_mazhong.jpg', + 'image/character/re_menghuo.jpg', + 'image/character/re_miheng.jpg', + 'image/character/re_nanhualaoxian.jpg', + 'image/character/re_niujin.jpg', + 'image/character/re_panfeng.jpg', + 'image/character/re_pangde.jpg', + 'image/character/re_pangdegong.jpg', + 'image/character/re_pangtong.jpg', + 'image/character/re_panshu.jpg', + 'image/character/re_panzhangmazhong.jpg', + 'image/character/re_quancong.jpg', + 'image/character/re_quyi.jpg', + 'image/character/re_simayi.jpg', + 'image/character/re_sp_taishici.jpg', + 'image/character/re_sp_zhugeliang.jpg', + 'image/character/re_sunben.jpg', + 'image/character/re_sunce.jpg', + 'image/character/re_sundeng.jpg', + 'image/character/re_sunjian.jpg', + 'image/character/re_sunluban.jpg', + 'image/character/re_sunluyu.jpg', + 'image/character/re_sunquan.jpg', + 'image/character/re_sunshangxiang.jpg', + 'image/character/re_sunxiu.jpg', + 'image/character/re_sunyi.jpg', + 'image/character/re_taishici.jpg', + 'image/character/re_taoqian.jpg', + 'image/character/re_wangyi.jpg', + 'image/character/re_wangyun.jpg', + 'image/character/re_weiwenzhugezhi.jpg', + 'image/character/re_weiyan.jpg', + 'image/character/re_wenpin.jpg', + 'image/character/re_wuguotai.jpg', + 'image/character/re_wuyi.jpg', + 'image/character/re_xiahoudun.jpg', + 'image/character/re_xiahoushi.jpg', + 'image/character/re_xiahouyuan.jpg', + 'image/character/re_xiaoqiao.jpg', + 'image/character/re_xinxianying.jpg', + 'image/character/re_xugong.jpg', + 'image/character/re_xuhuang.jpg', + 'image/character/re_xunchen.jpg', + 'image/character/re_xunyou.jpg', + 'image/character/re_xunyu.jpg', + 'image/character/re_xusheng.jpg', + 'image/character/re_xushu.jpg', + 'image/character/re_xuzhu.jpg', + 'image/character/re_yanwen.jpg', + 'image/character/re_yuanshao.jpg', + 'image/character/re_yuanshu.jpg', + 'image/character/re_yufan.jpg', + 'image/character/re_yuji.jpg', + 'image/character/re_yujin.jpg', + 'image/character/re_zhangbao.jpg', + 'image/character/re_zhangchunhua.jpg', + 'image/character/re_zhangfei.jpg', + 'image/character/re_zhanggong.jpg', + 'image/character/re_zhanghe.jpg', + 'image/character/re_zhangjiao.jpg', + 'image/character/re_zhangliang.jpg', + 'image/character/re_zhangliao.jpg', + 'image/character/re_zhangsong.jpg', + 'image/character/re_zhangyi.jpg', + 'image/character/re_zhangzhang.jpg', + 'image/character/re_zhaoyun.jpg', + 'image/character/re_zhenji.jpg', + 'image/character/re_zhonghui.jpg', + 'image/character/re_zhongyao.jpg', + 'image/character/re_zhoucang.jpg', + 'image/character/re_zhouyu.jpg', + 'image/character/re_zhugeliang.jpg', + 'image/character/re_zhuhuan.jpg', + 'image/character/re_zhuran.jpg', + 'image/character/re_zhurong.jpg', + 'image/character/re_zhuzhi.jpg', + 'image/character/re_zoushi.jpg', + 'image/character/re_zuoci.jpg', + 'image/character/ruanhui.jpg', + 'image/character/ruanji.jpg', + 'image/character/ruanyu.jpg', + 'image/character/ruiji.jpg', + 'image/character/sb_caocao.jpg', + 'image/character/sb_caoren.jpg', + 'image/character/sb_chengong.jpg', + 'image/character/sb_daqiao.jpg', + 'image/character/sb_diaochan.jpg', + 'image/character/sb_fazheng.jpg', + 'image/character/sb_ganning.jpg', + 'image/character/sb_huanggai.jpg', + 'image/character/sb_huangzhong.jpg', + 'image/character/sb_huaxiong.jpg', + 'image/character/sb_jiangwei.jpg', + 'image/character/sb_liubei.jpg', + 'image/character/sb_liubiao.jpg', + 'image/character/sb_lvmeng.jpg', + 'image/character/sb_machao.jpg', + 'image/character/sb_menghuo.jpg', + 'image/character/sb_pangtong.jpg', + 'image/character/sb_sunce.jpg', + 'image/character/sb_sunquan.jpg', + 'image/character/sb_sunshangxiang.jpg', + 'image/character/sb_xiahoushi.jpg', + 'image/character/sb_xiaoqiao.jpg', + 'image/character/sb_xuhuang.jpg', + 'image/character/sb_yl_luzhi.jpg', + 'image/character/sb_yuanshao.jpg', + 'image/character/sb_yujin.jpg', + 'image/character/sb_zhangfei.jpg', + 'image/character/sb_zhanghe.jpg', + 'image/character/sb_zhangjiao.jpg', + 'image/character/sb_zhaoyun.jpg', + 'image/character/sb_zhenji.jpg', + 'image/character/sb_zhouyu.jpg', + 'image/character/sb_zhurong.jpg', + 'image/character/scs_bilan.jpg', + 'image/character/scs_bilan_dead.jpg', + 'image/character/scs_duangui.jpg', + 'image/character/scs_duangui_dead.jpg', + 'image/character/scs_gaowang.jpg', + 'image/character/scs_gaowang_dead.jpg', + 'image/character/scs_guosheng.jpg', + 'image/character/scs_guosheng_dead.jpg', + 'image/character/scs_hankui.jpg', + 'image/character/scs_hankui_dead.jpg', + 'image/character/scs_lisong.jpg', + 'image/character/scs_lisong_dead.jpg', + 'image/character/scs_sunzhang.jpg', + 'image/character/scs_sunzhang_dead.jpg', + 'image/character/scs_xiayun.jpg', + 'image/character/scs_xiayun_dead.jpg', + 'image/character/scs_zhangrang.jpg', + 'image/character/scs_zhangrang_dead.jpg', + 'image/character/scs_zhaozhong.jpg', + 'image/character/scs_zhaozhong_dead.jpg', + 'image/character/shamoke.jpg', + 'image/character/shen_caocao.jpg', + 'image/character/shen_caopi.jpg', + 'image/character/shen_dengai.jpg', + 'image/character/shen_dianwei.jpg', + 'image/character/shen_diaochan.jpg', + 'image/character/shen_ganning.jpg', + 'image/character/shen_guanyu.jpg', + 'image/character/shen_guojia.jpg', + 'image/character/shen_jiangwei.jpg', + 'image/character/shen_jiaxu.jpg', + 'image/character/shen_liubei.jpg', + 'image/character/shen_luxun.jpg', + 'image/character/shen_lvbu.jpg', + 'image/character/shen_lvmeng.jpg', + 'image/character/shen_machao.jpg', + 'image/character/shen_simayi.jpg', + 'image/character/shen_sunce.jpg', + 'image/character/shen_sunquan.jpg', + 'image/character/shen_taishici.jpg', + 'image/character/shen_xunyu.jpg', + 'image/character/shen_zhangfei.jpg', + 'image/character/shen_zhangjiao.jpg', + 'image/character/shen_zhangliao.jpg', + 'image/character/shen_zhaoyun.jpg', + 'image/character/shen_zhenji.jpg', + 'image/character/shen_zhouyu.jpg', + 'image/character/shen_zhugeliang.jpg', + 'image/character/shenpei.jpg', + 'image/character/shibao.jpg', + 'image/character/shibing1.jpg', + 'image/character/shibing2.jpg', + 'image/character/shichangshi.jpg', + 'image/character/shichangshi_dead.jpg', + 'image/character/shixie.jpg', + 'image/character/shiyi.jpg', + 'image/character/simafu.jpg', + 'image/character/simahui.jpg', + 'image/character/simalang.jpg', + 'image/character/simashi.jpg', + 'image/character/simayi.jpg', + 'image/character/simazhao.jpg', + 'image/character/simazhou.jpg', + 'image/character/sp_bianfuren.jpg', + 'image/character/sp_caiwenji.jpg', + 'image/character/sp_caoren.jpg', + 'image/character/sp_caosong.jpg', + 'image/character/sp_chendong.jpg', + 'image/character/sp_chenzhen.jpg', + 'image/character/sp_cuiyan.jpg', + 'image/character/sp_daqiao.jpg', + 'image/character/sp_diaochan.jpg', + 'image/character/sp_dongzhuo.jpg', + 'image/character/sp_duyu.jpg', + 'image/character/sp_fuhuanghou.jpg', + 'image/character/sp_fuwan.jpg', + 'image/character/sp_ganning.jpg', + 'image/character/sp_gaolan.jpg', + 'image/character/sp_gongsunzan.jpg', + 'image/character/sp_huaman.jpg', + 'image/character/sp_huangfusong.jpg', + 'image/character/sp_huaxin.jpg', + 'image/character/sp_jianggan.jpg', + 'image/character/sp_jiangqing.jpg', + 'image/character/sp_jiangwan.jpg', + 'image/character/sp_jiangwei.jpg', + 'image/character/sp_jiaxu.jpg', + 'image/character/sp_jiben.jpg', + 'image/character/sp_key_kanade.jpg', + 'image/character/sp_key_yuri.jpg', + 'image/character/sp_kongrong.jpg', + 'image/character/sp_liubei.jpg', + 'image/character/sp_liuqi.jpg', + 'image/character/sp_liuxie.jpg', + 'image/character/sp_lvfan.jpg', + 'image/character/sp_lvmeng.jpg', + 'image/character/sp_machao.jpg', + 'image/character/sp_maojie.jpg', + 'image/character/sp_menghuo.jpg', + 'image/character/sp_mifangfushiren.jpg', + 'image/character/sp_mifuren.jpg', + 'image/character/sp_mushun.jpg', + 'image/character/sp_ol_zhanghe.jpg', + 'image/character/sp_pangde.jpg', + 'image/character/sp_pangtong.jpg', + 'image/character/sp_pengyang.jpg', + 'image/character/sp_shenpei.jpg', + 'image/character/sp_simazhao.jpg', + 'image/character/sp_sufei.jpg', + 'image/character/sp_sunshangxiang.jpg', + 'image/character/sp_sunshao.jpg', + 'image/character/sp_taishici.jpg', + 'image/character/sp_wangcan.jpg', + 'image/character/sp_wangshuang.jpg', + 'image/character/sp_wangyuanji.jpg', + 'image/character/sp_xiahoudun.jpg', + 'image/character/sp_xiahoushi.jpg', + 'image/character/sp_xinpi.jpg', + 'image/character/sp_xinxianying.jpg', + 'image/character/sp_xujing.jpg', + 'image/character/sp_xunchen.jpg', + 'image/character/sp_xuyou.jpg', + 'image/character/sp_yanghu.jpg', + 'image/character/sp_yangwan.jpg', + 'image/character/sp_zhangchangpu.jpg', + 'image/character/sp_zhangfei.jpg', + 'image/character/sp_zhanghe.jpg', + 'image/character/sp_zhangjiao.jpg', + 'image/character/sp_zhangliao.jpg', + 'image/character/sp_zhangwen.jpg', + 'image/character/sp_zhaoyun.jpg', + 'image/character/sp_zhugeliang.jpg', + 'image/character/sp_zhujun.jpg', + 'image/character/sp_zongyu.jpg', + 'image/character/star_caoren.jpg', + 'image/character/star_yuanshu.jpg', + 'image/character/std_panfeng.jpg', + 'image/character/sunce.jpg', + 'image/character/sunchen.jpg', + 'image/character/sundeng.jpg', + 'image/character/sunhanhua.jpg', + 'image/character/sunhao.jpg', + 'image/character/sunhong.jpg', + 'image/character/sunhuan.jpg', + 'image/character/sunjian.jpg', + 'image/character/sunlang.jpg', + 'image/character/sunli.jpg', + 'image/character/sunliang.jpg', + 'image/character/sunlingluan.jpg', + 'image/character/sunluban.jpg', + 'image/character/sunluyu.jpg', + 'image/character/sunqian.jpg', + 'image/character/sunquan.jpg', + 'image/character/sunru.jpg', + 'image/character/sunshangxiang.jpg', + 'image/character/sunshao.jpg', + 'image/character/sunwukong.jpg', + 'image/character/sunxiu.jpg', + 'image/character/sunyang.jpg', + 'image/character/sunyi.jpg', + 'image/character/sunyu.jpg', + 'image/character/sunziliufang.jpg', + 'image/character/swd_anka.jpg', + 'image/character/swd_chenfu.jpg', + 'image/character/swd_chengyaojin.jpg', + 'image/character/swd_chenjingchou.jpg', + 'image/character/swd_cheyun.jpg', + 'image/character/swd_chunyuheng.jpg', + 'image/character/swd_duanmeng.jpg', + 'image/character/swd_duguningke.jpg', + 'image/character/swd_duopeng.jpg', + 'image/character/swd_fengtianling.jpg', + 'image/character/swd_fengyu.jpg', + 'image/character/swd_fu.jpg', + 'image/character/swd_fuyan.jpg', + 'image/character/swd_guyue.jpg', + 'image/character/swd_haidapang.jpg', + 'image/character/swd_hanlong.jpg', + 'image/character/swd_hanluo.jpg', + 'image/character/swd_hengai.jpg', + 'image/character/swd_huanglei.jpg', + 'image/character/swd_huanyuanzhi.jpg', + 'image/character/swd_huiyan.jpg', + 'image/character/swd_hupo.jpg', + 'image/character/swd_huyue.jpg', + 'image/character/swd_huzhongxian.jpg', + 'image/character/swd_jialanduo.jpg', + 'image/character/swd_jiangwu.jpg', + 'image/character/swd_jiangziya.jpg', + 'image/character/swd_jiliang.jpg', + 'image/character/swd_jipeng.jpg', + 'image/character/swd_jiting.jpg', + 'image/character/swd_jiuyou.jpg', + 'image/character/swd_kama.jpg', + 'image/character/swd_kangnalishi.jpg', + 'image/character/swd_kendi.jpg', + 'image/character/swd_lanmoshen.jpg', + 'image/character/swd_lanyin.jpg', + 'image/character/swd_lilian.jpg', + 'image/character/swd_linyue.jpg', + 'image/character/swd_luchengxuan.jpg', + 'image/character/swd_maixing.jpg', + 'image/character/swd_miles.jpg', + 'image/character/swd_moye.jpg', + 'image/character/swd_murongshi.jpg', + 'image/character/swd_muyue.jpg', + 'image/character/swd_muyun.jpg', + 'image/character/swd_nicole.jpg', + 'image/character/swd_qi.jpg', + 'image/character/swd_qiner.jpg', + 'image/character/swd_qinshubao.jpg', + 'image/character/swd_quxian.jpg', + 'image/character/swd_rongshuang.jpg', + 'image/character/swd_septem.jpg', + 'image/character/swd_shangzhang.jpg', + 'image/character/swd_shanxiaoxiao.jpg', + 'image/character/swd_shaowei.jpg', + 'image/character/swd_shuijing.jpg', + 'image/character/swd_shuwaner.jpg', + 'image/character/swd_sikongyu.jpg', + 'image/character/swd_situqiang.jpg', + 'image/character/swd_tuobayuer.jpg', + 'image/character/swd_tuwei.jpg', + 'image/character/swd_wangsiyue.jpg', + 'image/character/swd_weida.jpg', + 'image/character/swd_wushi.jpg', + 'image/character/swd_xiaohuanglong.jpg', + 'image/character/swd_xiarou.jpg', + 'image/character/swd_xiyan.jpg', + 'image/character/swd_xuanyuanjiantong.jpg', + 'image/character/swd_xuanyuanjianxian.jpg', + 'image/character/swd_yeyaxi.jpg', + 'image/character/swd_youzhao.jpg', + 'image/character/swd_yuchiyanhong.jpg', + 'image/character/swd_yuli.jpg', + 'image/character/swd_yunhu.jpg', + 'image/character/swd_yuwentuo.jpg', + 'image/character/swd_yuxiaoxue.jpg', + 'image/character/swd_zhanggao.jpg', + 'image/character/swd_zhaoyun.jpg', + 'image/character/swd_zhiyin.jpg', + 'image/character/swd_zhuoshanzhu.jpg', + 'image/character/swd_zidashu.jpg', + 'image/character/swd_ziqiao.jpg', + 'image/character/tadun.jpg', + 'image/character/taishici.jpg', + 'image/character/tangji.jpg', + 'image/character/tangzi.jpg', + 'image/character/taoqian.jpg', + 'image/character/taoshen.jpg', + 'image/character/tengfanglan.jpg', + 'image/character/tenggongzhu.jpg', + 'image/character/tengyin.jpg', + 'image/character/tianfeng.jpg', + 'image/character/tianyu.jpg', + 'image/character/tongyuan.jpg', + 'image/character/tw_baoxin.jpg', + 'image/character/tw_beimihu.jpg', + 'image/character/tw_bianfuren.jpg', + 'image/character/tw_bingyuan.jpg', + 'image/character/tw_caoang.jpg', + 'image/character/tw_caocao.jpg', + 'image/character/tw_caohong.jpg', + 'image/character/tw_caoxiu.jpg', + 'image/character/tw_caozhao.jpg', + 'image/character/tw_chendong.jpg', + 'image/character/tw_chengpu.jpg', + 'image/character/tw_chenzhen.jpg', + 'image/character/tw_daxiaoqiao.jpg', + 'image/character/tw_dengzhi.jpg', + 'image/character/tw_dingfeng.jpg', + 'image/character/tw_dongzhao.jpg', + 'image/character/tw_fanchou.jpg', + 'image/character/tw_feiyi.jpg', + 'image/character/tw_fengxí.jpg', + 'image/character/tw_furong.jpg', + 'image/character/tw_fuwan.jpg', + 'image/character/tw_gexuan.jpg', + 'image/character/tw_gongsunfan.jpg', + 'image/character/tw_guanqiujian.jpg', + 'image/character/tw_guohuai.jpg', + 'image/character/tw_guyong.jpg', + 'image/character/tw_handang.jpg', + 'image/character/tw_haomeng.jpg', + 'image/character/tw_hejin.jpg', + 'image/character/tw_hucheer.jpg', + 'image/character/tw_huchuquan.jpg', + 'image/character/tw_huojun.jpg', + 'image/character/tw_jiangji.jpg', + 'image/character/tw_jiangqing.jpg', + 'image/character/tw_jianshuo.jpg', + 'image/character/tw_jiling.jpg', + 'image/character/tw_liufuren.jpg', + 'image/character/tw_liuhong.jpg', + 'image/character/tw_liuzhang.jpg', + 'image/character/tw_liwei.jpg', + 'image/character/tw_madai.jpg', + 'image/character/tw_maliang.jpg', + 'image/character/tw_mateng.jpg', + 'image/character/tw_mayunlu.jpg', + 'image/character/tw_menghuo.jpg', + 'image/character/tw_niufudongxie.jpg', + 'image/character/tw_niujin.jpg', + 'image/character/tw_ol_sunjian.jpg', + 'image/character/tw_puyangxing.jpg', + 'image/character/tw_qiaogong.jpg', + 'image/character/tw_qiaorui.jpg', + 'image/character/tw_re_caohong.jpg', + 'image/character/tw_re_fazheng.jpg', + 'image/character/tw_shen_guanyu.jpg', + 'image/character/tw_shen_lvmeng.jpg', + 'image/character/tw_sunyi.jpg', + 'image/character/tw_tianyu.jpg', + 'image/character/tw_wangcan.jpg', + 'image/character/tw_wangchang.jpg', + 'image/character/tw_wangling.jpg', + 'image/character/tw_weixu.jpg', + 'image/character/tw_wujing.jpg', + 'image/character/tw_xiahouba.jpg', + 'image/character/tw_xiahouen.jpg', + 'image/character/tw_xiahoushang.jpg', + 'image/character/tw_xuezong.jpg', + 'image/character/tw_xujing.jpg', + 'image/character/tw_xunchen.jpg', + 'image/character/tw_yangang.jpg', + 'image/character/tw_yangyi.jpg', + 'image/character/tw_yanxiang.jpg', + 'image/character/tw_yl_luzhi.jpg', + 'image/character/tw_yufuluo.jpg', + 'image/character/tw_yujin.jpg', + 'image/character/tw_zangba.jpg', + 'image/character/tw_zhangfei.jpg', + 'image/character/tw_zhanghong.jpg', + 'image/character/tw_zhangji.jpg', + 'image/character/tw_zhangmancheng.jpg', + 'image/character/tw_zhangnan.jpg', + 'image/character/tw_zhangning.jpg', + 'image/character/tw_zhangzhao.jpg', + 'image/character/tw_zhaoxiang.jpg', + 'image/character/tw_zhouchu.jpg', + 'image/character/tw_zhugeguo.jpg', + 'image/character/tw_zongyu.jpg', + 'image/character/tw_zumao.jpg', + 'image/character/vtb_xiaojiu.jpg', + 'image/character/vtb_xiaole.jpg', + 'image/character/vtb_xiaosha.jpg', + 'image/character/vtb_xiaoshan.jpg', + 'image/character/vtb_xiaotao.jpg', + 'image/character/wangcan.jpg', + 'image/character/wangfuzhaolei.jpg', + 'image/character/wangguan.jpg', + 'image/character/wangji.jpg', + 'image/character/wangjun.jpg', + 'image/character/wanglang.jpg', + 'image/character/wanglie.jpg', + 'image/character/wangling.jpg', + 'image/character/wangping.jpg', + 'image/character/wangrong.jpg', + 'image/character/wangshuang.jpg', + 'image/character/wangtao.jpg', + 'image/character/wangwei.jpg', + 'image/character/wangxiang.jpg', + 'image/character/wangyan.jpg', + 'image/character/wangyi.jpg', + 'image/character/wangyuanji.jpg', + 'image/character/wangyue.jpg', + 'image/character/wangyun.jpg', + 'image/character/wanniangongzhu.jpg', + 'image/character/weiguan.jpg', + 'image/character/weiwenzhugezhi.jpg', + 'image/character/weiyan.jpg', + 'image/character/weizi.jpg', + 'image/character/wenpin.jpg', + 'image/character/wenqin.jpg', + 'image/character/wenyang.jpg', + 'image/character/wolongfengchu.jpg', + 'image/character/wu_luxun.jpg', + 'image/character/wu_zhugeliang.jpg', + 'image/character/wu_zhutiexiong.jpg', + 'image/character/wuanguo.jpg', + 'image/character/wuban.jpg', + 'image/character/wufan.jpg', + 'image/character/wuguotai.jpg', + 'image/character/wujing.jpg', + 'image/character/wulan.jpg', + 'image/character/wutugu.jpg', + 'image/character/wuxian.jpg', + 'image/character/wuyan.jpg', + 'image/character/wuyi.jpg', + 'image/character/xf_huangquan.jpg', + 'image/character/xf_sufei.jpg', + 'image/character/xf_tangzi.jpg', + 'image/character/xf_yiji.jpg', + 'image/character/xia_dianwei.jpg', + 'image/character/xia_liyàn.jpg', + 'image/character/xia_lusu.jpg', + 'image/character/xia_tongyuan.jpg', + 'image/character/xia_wangyue.jpg', + 'image/character/xia_xiahouzie.jpg', + 'image/character/xia_xushu.jpg', + 'image/character/xia_zhaoe.jpg', + 'image/character/xiahouba.jpg', + 'image/character/xiahoudun.jpg', + 'image/character/xiahoujie.jpg', + 'image/character/xiahoulingnv.jpg', + 'image/character/xiahoumao.jpg', + 'image/character/xiahoushi.jpg', + 'image/character/xiahouxuan.jpg', + 'image/character/xiahouyuan.jpg', + 'image/character/xiangchong.jpg', + 'image/character/xianglang.jpg', + 'image/character/xiaoqiao.jpg', + 'image/character/xiaoyuehankehan.jpg', + 'image/character/xielingyu.jpg', + 'image/character/xin_baosanniang.jpg', + 'image/character/xin_caifuren.jpg', + 'image/character/xin_caoxiu.jpg', + 'image/character/xin_caozhang.jpg', + 'image/character/xin_caozhen.jpg', + 'image/character/xin_chengpu.jpg', + 'image/character/xin_fazheng.jpg', + 'image/character/xin_fuhuanghou.jpg', + 'image/character/xin_gaoshun.jpg', + 'image/character/xin_gongsunzan.jpg', + 'image/character/xin_guohuai.jpg', + 'image/character/xin_guozhao.jpg', + 'image/character/xin_guyong.jpg', + 'image/character/xin_handang.jpg', + 'image/character/xin_hansui.jpg', + 'image/character/xin_jianyong.jpg', + 'image/character/xin_jushou.jpg', + 'image/character/xin_liaohua.jpg', + 'image/character/xin_lingtong.jpg', + 'image/character/xin_liru.jpg', + 'image/character/xin_liubiao.jpg', + 'image/character/xin_mamidi.jpg', + 'image/character/xin_masu.jpg', + 'image/character/xin_panzhangmazhong.jpg', + 'image/character/xin_quancong.jpg', + 'image/character/xin_sunliang.jpg', + 'image/character/xin_sunluban.jpg', + 'image/character/xin_sunxiu.jpg', + 'image/character/xin_wuguotai.jpg', + 'image/character/xin_wuyi.jpg', + 'image/character/xin_xiahoudun.jpg', + 'image/character/xin_xusheng.jpg', + 'image/character/xin_xushu.jpg', + 'image/character/xin_yuanshao.jpg', + 'image/character/xin_yufan.jpg', + 'image/character/xin_yuji.jpg', + 'image/character/xin_yujin.jpg', + 'image/character/xin_zhangfei.jpg', + 'image/character/xin_zhangyi.jpg', + 'image/character/xin_zhonghui.jpg', + 'image/character/xin_zhoucang.jpg', + 'image/character/xin_zhoutai.jpg', + 'image/character/xin_zhuhuan.jpg', + 'image/character/xin_zhuran.jpg', + 'image/character/xin_zhuzhi.jpg', + 'image/character/xinchang.jpg', + 'image/character/xingdaorong.jpg', + 'image/character/xinpi.jpg', + 'image/character/xinping.jpg', + 'image/character/xinxianying.jpg', + 'image/character/xizheng.jpg', + 'image/character/xizhicai.jpg', + 'image/character/xuangongzhu.jpg', + 'image/character/xuelingyun.jpg', + 'image/character/xuezong.jpg', + 'image/character/xugong.jpg', + 'image/character/xuhuang.jpg', + 'image/character/xujing.jpg', + 'image/character/xunchen.jpg', + 'image/character/xunyou.jpg', + 'image/character/xunyu.jpg', + 'image/character/xurong.jpg', + 'image/character/xushao.jpg', + 'image/character/xusheng.jpg', + 'image/character/xushi.jpg', + 'image/character/xushu.jpg', + 'image/character/xuyou.jpg', + 'image/character/xuzhu.jpg', + 'image/character/yanbaihu.jpg', + 'image/character/yanfuren.jpg', + 'image/character/yangbiao.jpg', + 'image/character/yangfu.jpg', + 'image/character/yanghong.jpg', + 'image/character/yanghuiyu.jpg', + 'image/character/yangwan.jpg', + 'image/character/yangxiu.jpg', + 'image/character/yangyan.jpg', + 'image/character/yangyi.jpg', + 'image/character/yangzhi.jpg', + 'image/character/yanjun.jpg', + 'image/character/yanpu.jpg', + 'image/character/yanrou.jpg', + 'image/character/yanwen.jpg', + 'image/character/yanyan.jpg', + 'image/character/yeshiwen.jpg', + 'image/character/yinfuren.jpg', + 'image/character/yj_caoang.jpg', + 'image/character/yj_caocao.jpg', + 'image/character/yj_caohong.jpg', + 'image/character/yj_dongzhuo.jpg', + 'image/character/yj_ganning.jpg', + 'image/character/yj_huangzhong.jpg', + 'image/character/yj_jiaxu.jpg', + 'image/character/yj_jushou.jpg', + 'image/character/yj_liru.jpg', + 'image/character/yj_qiaozhou.jpg', + 'image/character/yj_sufei.jpg', + 'image/character/yj_weiyan.jpg', + 'image/character/yj_xuhuang.jpg', + 'image/character/yj_xuyou.jpg', + 'image/character/yj_zhangfei.jpg', + 'image/character/yj_zhanghe.jpg', + 'image/character/yj_zhangliao.jpg', + 'image/character/yj_zhenji.jpg', + 'image/character/yj_zhoubuyi.jpg', + 'image/character/yl_luzhi.jpg', + 'image/character/yl_yuanshu.jpg', + 'image/character/yongjian_ganning.jpg', + 'image/character/yuanhuan.jpg', + 'image/character/yuanji.jpg', + 'image/character/yuanshu.jpg', + 'image/character/yuantanyuanshang.jpg', + 'image/character/yuantanyuanxiyuanshang.jpg', + 'image/character/yue_caiwenji.jpg', + 'image/character/yue_zhoufei.jpg', + 'image/character/yuechen.jpg', + 'image/character/yuejin.jpg', + 'image/character/yuejiu.jpg', + 'image/character/yufan.jpg', + 'image/character/yuji.jpg', + 'image/character/yujin.jpg', + 'image/character/yujin_yujin.jpg', + 'image/character/yxs_aijiyanhou.jpg', + 'image/character/yxs_baosi.jpg', + 'image/character/yxs_bole.jpg', + 'image/character/yxs_caocao.jpg', + 'image/character/yxs_chengjisihan.jpg', + 'image/character/yxs_chengyaojin.jpg', + 'image/character/yxs_diaochan.jpg', + 'image/character/yxs_direnjie.jpg', + 'image/character/yxs_fuermosi.jpg', + 'image/character/yxs_goujian.jpg', + 'image/character/yxs_guiguzi.jpg', + 'image/character/yxs_handingdun.jpg', + 'image/character/yxs_huamulan.jpg', + 'image/character/yxs_jinke.jpg', + 'image/character/yxs_kaisa.jpg', + 'image/character/yxs_lanlinwang.jpg', + 'image/character/yxs_libai.jpg', + 'image/character/yxs_lishimin.jpg', + 'image/character/yxs_luban.jpg', + 'image/character/yxs_luobinhan.jpg', + 'image/character/yxs_luocheng.jpg', + 'image/character/yxs_luzhishen.jpg', + 'image/character/yxs_lvzhi.jpg', + 'image/character/yxs_meixi.jpg', + 'image/character/yxs_mingchenghuanghou.jpg', + 'image/character/yxs_mozi.jpg', + 'image/character/yxs_nandinggeer.jpg', + 'image/character/yxs_napolun.jpg', + 'image/character/yxs_qinqiong.jpg', + 'image/character/yxs_sunwu.jpg', + 'image/character/yxs_tangbohu.jpg', + 'image/character/yxs_wangzhaojun.jpg', + 'image/character/yxs_weizhongxian.jpg', + 'image/character/yxs_wuzetian.jpg', + 'image/character/yxs_xiangyu.jpg', + 'image/character/yxs_xiaoqiao.jpg', + 'image/character/yxs_yangguang.jpg', + 'image/character/yxs_yangyuhuan.jpg', + 'image/character/yxs_yingzheng.jpg', + 'image/character/yxs_yuefei.jpg', + 'image/character/yxs_yujix.jpg', + 'image/character/yxs_zhangsanfeng.jpg', + 'image/character/yxs_zhaoyong.jpg', + 'image/character/yxs_zhuyuanzhang.jpg', + 'image/character/zangba.jpg', + 'image/character/zerong.jpg', + 'image/character/zhangbao.jpg', + 'image/character/zhangchangpu.jpg', + 'image/character/zhangchu.jpg', + 'image/character/zhangchunhua.jpg', + 'image/character/zhangfei.jpg', + 'image/character/zhangfen.jpg', + 'image/character/zhanggong.jpg', + 'image/character/zhanghe.jpg', + 'image/character/zhangheng.jpg', + 'image/character/zhanghu.jpg', + 'image/character/zhanghua.jpg', + 'image/character/zhanghuyuechen.jpg', + 'image/character/zhangji.jpg', + 'image/character/zhangjiao.jpg', + 'image/character/zhangjinyun.jpg', + 'image/character/zhangkai.jpg', + 'image/character/zhangliang.jpg', + 'image/character/zhangliao.jpg', + 'image/character/zhangling.jpg', + 'image/character/zhanglu.jpg', + 'image/character/zhangmiao.jpg', + 'image/character/zhangning.jpg', + 'image/character/zhangqiying.jpg', + 'image/character/zhangrang.jpg', + 'image/character/zhangren.jpg', + 'image/character/zhangshiping.jpg', + 'image/character/zhangsong.jpg', + 'image/character/zhangwen.jpg', + 'image/character/zhangxingcai.jpg', + 'image/character/zhangxiu.jpg', + 'image/character/zhangxuan.jpg', + 'image/character/zhangxun.jpg', + 'image/character/zhangyan.jpg', + 'image/character/zhangyao.jpg', + 'image/character/zhangyi.jpg', + 'image/character/zhangyì.jpg', + 'image/character/zhangzhang.jpg', + 'image/character/zhangzhi.jpg', + 'image/character/zhangzhongjing.jpg', + 'image/character/zhaoang.jpg', + 'image/character/zhaotongzhaoguang.jpg', + 'image/character/zhaoxiang.jpg', + 'image/character/zhaoyan.jpg', + 'image/character/zhaoyǎn.jpg', + 'image/character/zhaoyun.jpg', + 'image/character/zhaozhi.jpg', + 'image/character/zhaozhong.jpg', + 'image/character/zhenghun.jpg', + 'image/character/zhengxuan.jpg', + 'image/character/zhenji.jpg', + 'image/character/zhonghui.jpg', + 'image/character/zhongyan.jpg', + 'image/character/zhongyao.jpg', + 'image/character/zhoubuyi.jpg', + 'image/character/zhoucang.jpg', + 'image/character/zhouchu.jpg', + 'image/character/zhoufang.jpg', + 'image/character/zhoufei.jpg', + 'image/character/zhouqun.jpg', + 'image/character/zhoushan.jpg', + 'image/character/zhoutai.jpg', + 'image/character/zhouyi.jpg', + 'image/character/zhouyu.jpg', + 'image/character/zhugedan.jpg', + 'image/character/zhugeguo.jpg', + 'image/character/zhugejin.jpg', + 'image/character/zhugeke.jpg', + 'image/character/zhugeliang.jpg', + 'image/character/zhugeruoxue.jpg', + 'image/character/zhugeshang.jpg', + 'image/character/zhugezhan.jpg', + 'image/character/zhuhuan.jpg', + 'image/character/zhujianping.jpg', + 'image/character/zhujun.jpg', + 'image/character/zhuling.jpg', + 'image/character/zhuran.jpg', + 'image/character/zhurong.jpg', + 'image/character/zhutiexiong.jpg', + 'image/character/zhuzhi.jpg', + 'image/character/zongyu.jpg', + 'image/character/zoushi.jpg', + 'image/character/zumao.jpg', + 'image/character/zuoci.jpg', + 'image/character/zuofen.jpg', /*character image end*/ 'image/emotion/shibing_emotion/1.gif', @@ -8783,7 +8783,7 @@ window.noname_asset_list=[ 'image/mode/boss/boss_zhuyan.jpg', 'image/mode/boss/boss_zhuyin.jpg', 'image/mode/boss/boss_zuoci.jpg', - + 'image/mode/chess/card/chess_chuzhang.png', 'image/mode/chess/card/chess_shezhang.png', 'image/mode/chess/character/chess_beimingjukun.jpg', From 3bf33acedac4f02af40cf3c035aa9353660a250d Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Tue, 5 Dec 2023 01:03:27 +0800 Subject: [PATCH 010/302] =?UTF-8?q?=E6=98=9F=E8=91=A3=E5=8D=93=E3=80=81?= =?UTF-8?q?=E5=BC=A0=E8=87=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/sp2.js | 177 +++++++++++++++++++++++++++++- character/xianding.js | 69 +++++++++++- image/character/star_dongzhuo.jpg | Bin 0 -> 50360 bytes 3 files changed, 244 insertions(+), 2 deletions(-) create mode 100644 image/character/star_dongzhuo.jpg diff --git a/character/sp2.js b/character/sp2.js index fd190e554..6b15b2a59 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + star_dongzhuo:['male','qun',5,['star_dz_a','star_dz_b','star_dz_c'],['zhu']], star_yuanshu:['male','qun',4,['starcanxi','starpizhi','starzhonggu'],['zhu']], star_caoren:['male','wei',4,['starsujun','starlifeng']], mp_liuling:['male','jin',3,['mpjiusong','mpmaotao','mpbishi'],['doublegroup:wei:qun:jin']], @@ -109,12 +110,178 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_xuzhou:['re_taoqian','caosong','zhangmiao','qiuliju'], sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin','re_dongcheng'], sp_xiaohu:['haomeng','yanfuren','yanrou','dc_zhuling'], - sp_star:['star_caoren','star_yuanshu'], + sp_star:['star_caoren','star_yuanshu','star_dongzhuo'], mini_qixian:['mp_liuling'], sp_decade:['caobuxing','re_maliang','dc_jikang'], } }, skill:{ + //星董卓 + star_dz_a:{ + audio:2, + trigger:{source:'damageBegin1'}, + filter:function(event,player){ + return !event.player.getHistory('damage').length&&player.getHistory('useCard').length>=event.player.getHp(); + }, + forced:true, + logTarget:'player', + content:function(){ + trigger.num++; + }, + }, + star_dz_b:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + filter:function(event,player){ + return player.getHp()>0; + }, + direct:true, + content:function*(event,map){ + var player=map.player; + var str=get.cnNumber(player.getHp()); + var choiceList=[ + '令至多'+str+'名体力值大于等于你的角色各失去1点体力', + '令至多'+str+'名手牌数大于等于你的角色各弃置一张手牌', + ],list=['cancel2']; + if(game.hasPlayer(target=>{ + if(target==player) return player.countCards('h',card=>lib.filter.cardDiscardable(card,player)); + return target.countCards('h')>=Math.max(1,player.countCards('h')); + })) list.unshift('弃牌'); + else choiceList[1]=''+choiceList[1]+''; + list.unshift('扣血'); + var result=yield player.chooseControl(list).set('prompt','###'+get.prompt('star_dz_b')+'###选择其中一项令任意名符合条件的角色执行,然后你摸等量的牌,回合结束时,若这些角色中有本回合未受到过伤害的角色,则你失去1点体力').set('ai',()=>{ + var player=_status.event.player; + var controls=_status.event.controls.slice(); + var cards=player.getCards('hes',card=>get.tag(card,'damage')&&player.hasValueTarget(card)); + var cardx=cards.filter(card=>get.name(card)=='sha'); + cardx.sort((a,b)=>player.getUseValue(b)-player.getUseValue(a)); + cardx=cardx.slice(Math.min(cardx.length,player.getCardUsable('sha')),cardx.length); + cards.removeArray(cardx); + var targets1=game.filterPlayer(target=>get.attitude(player,target)<0&&target.getHp()>=player.getHp()&&get.effect(target,{name:'losehp'},player,player)>0&&cards.some(card=>player.canUse(card,target))); + _status.star_dz_b_check=true; + var targets2=game.filterPlayer(target=>get.attitude(player,target)<0&&target.countCards('h')>=Math.max(1,player.countCards('h'))&&get.effect(target,{name:'guohe_copy2'},player,player)>0&&cards.some(card=>player.canUse(card,target))); + delete _status.star_dz_b_check; + [targets1,targets2].forEach(list=>{ + list.sort((a,b)=>get.damageEffect(b)-get.damageEffect(a)); + list=list.slice(0,Math.min(player.getHp(),cards.length)); + }); + if(!controls.includes('弃牌')) return 1-get.sgn(targets1.length); + return Math.max(0,get.sgn(targets2.length-targets1.length)); + }).set('choiceList',choiceList); + if(result.control!='cancel2'){ + var choice=result.index; + var result2=yield player.chooseTarget([1,player.getHp()],'请选择【技能】的目标','令至多'+str+'名'+(choice?'手牌数':'体力值')+'大于你的角色各'+(choice?'弃置一张手牌':'失去1点体力'),(card,player,target)=>{ + var name=_status.event.card.name; + if(name=='guohe_copy2'){ + if(target==player) return player.countCards('h',card=>lib.filter.cardDiscardable(card,player)); + return target.countCards('h')>=Math.max(1,player.countCards('h')); + } + return target.getHp()>=player.getHp(); + }).set('ai',target=>{ + var player=_status.event.player; + if(get.attitude(player,target)>=0) return 0; + return get.effect(target,_status.event.card,player,player); + }).set('card',{name:choice?'guohe_copy2':'loseHp'}); + if(result2.bool){ + var targets=result2.targets.sortBySeat(); + player.logSkill('star_dz_b',targets); + targets.forEach(target=>{ + target.addTempSkill('star_dz_b_threaten'); + if(choice) target.chooseToDiscard('h',true); + else target.loseHp(); + }); + player.draw(targets.length); + player.when('phaseEnd').then(()=>{ + targets.forEach(target=>target.removeSkill('star_dz_b_threaten')); + var targetx=targets.filter(target=>!target.getHistory('damage').length); + if(targetx.length){ + targetx.forEach(target=>target.chat('乐')); + player.popup('杯具'); + player.loseHp(); + return; + } + player.popup('洗具'); + }).vars({targets:targets}); + } + } + }, + global:'star_dz_b_check', + subSkill:{ + check:{ + mod:{ + canBeDiscarded:function(card,player,target){ + if(!_status.star_dz_b_check) return; + if(player.hasSkill('star_dz_b')&&get.position(card)!='h') return false; + }, + }, + }, + threaten:{ + charlotte:true, + trigger:{player:'damageEnd'}, + firstDo:true, + forced:true, + popup:false, + content:function(){ + player.removeSkill('star_dz_b_threaten'); + }, + ai:{threaten:114514+1919810}, + mark:true, + markimage:'image/card/sha.png', + intro:{content:'我还没受到伤害哟!'}, + }, + }, + }, + star_dz_c:{ + unique:true, + audio:2, + trigger:{global:'useCardAfter'}, + filter:function(event,player){ + return event.player!=player&&event.card.name=='jiu'&&player.isDamaged()&&event.player.group=='qun'; + }, + direct:true, + zhuSkill:true, + content:function*(event,map){ + var player=map.player,target=map.trigger.target; + var result=yield target.chooseBool(get.prompt('star_dz_c',player),'令'+get.translation(player)+'回复1点体力').set('choice',get.recoverEffect(player,target,target)>0); + if(result.bool){ + target.line(player); + player.logSkill('star_dz_c'); + player.recover(); + } + }, + global:'star_dz_c_global', + subSkill:{ + global:{ + audio:'star_dz_c', + forceaudio:true, + filter:function(event,player){ + if(!player.countCards('hes',card=>{ + if(get.position(card)=='h'&&_status.connectMode) return true; + return get.name(card)=='jiu'; + })) return false; + return event.type=='dying'&&event.dying&&event.dying!=player&&event.dying.hp<=0&&event.dying.hasZhuSkill('star_dz_c')&&player.group=='qun'; + }, + filterCard:function(card,player){ + return get.name(card)=='jiu'; + }, + check:()=>1, + viewAs:{name:'tao'}, + position:'hes', + prompt:function(){ + return '将一张【酒】当作【桃】对'+get.translation(_status.event.dying)+'使用'; + }, + ai:{ + save:true, + skillTagFilter:function(player,arg,target){ + if(!player.countCards('hes',card=>{ + if(get.position(card)=='h'&&_status.connectMode) return true; + return get.name(card)=='jiu'; + })||player==target||!target.hasSkill('star_dz_c')||player.group!='qun') return false; + }, + }, + }, + }, + }, //星袁术 starcanxi:{ audio:2, @@ -10989,6 +11156,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ starpizhi_info:'锁定技。①一名角色死亡后,若你拥有该角色对应的“玺角”标记,你失去之并摸X张牌。②结束阶段,你摸X张牌。(X为你本局游戏失去的“玺角”标记数)', starzhonggu:'冢骨', starzhonggu_info:'主公技,锁定技。摸牌阶段,若游戏轮数大于等于场上的群势力角色数,则你额外摸两张牌,否则你少摸一张牌。', + star_dongzhuo:'星董卓', + star_dongzhuo_prefix:'星', + star_dz_a:'技能', + star_dz_a_info:'锁定技。当你于回合内对一名其他角色造成伤害时,若其本回合未受到过伤害,且你本回合使用的牌数大于等于其体力值,则此伤害+1。', + star_dz_b:'技能', + star_dz_b_info:'准备阶段,你可以选择令至多X名体力值大于等于你的角色各失去1点体力或令至多X名手牌数大于等于你的角色各弃置一张手牌。若如此做,你摸等同于选择角色数的牌,且本回合结束时,若这些角色中存在本回合未受到过伤害的角色,则你失去1点体力。', + star_dz_c:'技能', + star_dz_c_info:'主公技。①其他群势力角色使用【酒】结算完毕后,其可以令你回复1点体力。②当你处于濒死状态时,其他群势力角色可以将【酒】当作【桃】对你使用。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", diff --git a/character/xianding.js b/character/xianding.js index 284da0d6f..2f9bcdd44 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'xianding', connect:true, character:{ + zhangjian:['male','qun',105,['dc_zj_a','dc_zj_b']], zhugeruoxue:['female','wei',3,['dcqiongying','dcnuanhui']], caoyi:['female','wei',4,['dcmiyi','dcyinjun']], malingli:['female','shu',3,['dclima','dcxiaoyin','dchuahuo']], @@ -100,11 +101,71 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'], sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun','zhoubuyi','dc_xujing'], sp2_qifu:['dc_guansuo','xin_baosanniang','dc_zhaoxiang'], - sp2_gaoshan:['wanglang','liuhui'], + sp2_gaoshan:['wanglang','liuhui','zhangjian'], sp2_wumiao:['wu_zhugeliang','wu_luxun'], } }, skill:{ + //张臶 + dc_zj_a:{ + audio:2, + trigger:{player:'damageBegin2'}, + filter:function(event,player){ + return event.getParent().type=='card'; + }, + forced:true, + content:function(){ + var num=get.number(trigger.card); + if(typeof num=='number'&&num>0) trigger.num=num; + else trigger.cancel(); + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'damage')&&typeof get.number(card)!='number') return 'zeroplayertarget'; + }, + }, + }, + }, + dc_zj_b:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + filter:function(event,player){ + return player.countDiscardableCards(player,'he'); + }, + direct:true, + content:function*(event,map){ + var player=map.player; + var result=yield player.chooseTarget(get.prompt2('dc_zj_b'),lib.filter.notMe).set('ai',target=>{ + var player=_status.event.player; + if(!player.hasFriend()) return 0; + return -game.countPlayer(current=>current.inRange(target)&&get.attitude(current,target)<0&&get.damageEffect(target,current,current)>0); + }); + if(result.bool){ + var target=result.targets[0]; + player.logSkill('dc_zj_b',target); + player.discard(player.getCards('he')).discarder=player; + target.addSkill('dc_zj_a'); + target.addSkill('dc_zj_b_threaten'); + player.when('phaseBegin').then(()=>{ + if(target.isIn()){ + target.removeSkill('dc_zj_a'); + target.removeSkill('dc_zj_b_threaten'); + } + }).vars({target:target}); + } + }, + subSkill:{ + //定要将你赶尽杀绝 + threaten:{ + charlotte:true, + mark:true, + marktext:'噩', + intro:{content:'已经开始汗流浃背了'}, + ai:{threaten:114514*1919810}, + }, + }, + }, //诸葛若雪 dcqiongying:{ audio:2, @@ -12691,6 +12752,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, characterIntro:{ + zhangjian:'张臶(136年-240年),字子明,钜鹿人。汉末三国时期隐士、音乐家,精通谶纬之学。张臶生活的年代从东汉一直到曹魏齐王时期,受到朝廷多次征召,一直回避,不愿做官。他活了一百零五岁,是三国时期有可靠记载的最长寿的人之一。', puyuan:'蒲元是三国时蜀汉杰出的工匠。为诸葛亮造刀三千口,并且制作木牛流马。后来姜维为他写过两部传记《蒲元传》《蒲元别传》。', guanlu:"管辂(209年-256年),字公明,平原(今山东德州平原县)人。三国时期曹魏术士。年八九岁,便喜仰观星辰。成人后,精通《周易》,善于卜筮、相术,习鸟语,相传每言辄中,出神入化。体性宽大,常以德报怨。正元初,为少府丞。北宋时被追封为平原子。管辂是历史上著名的术士,被后世奉为卜卦观相的祖师。", gexuan:"葛玄(164年-244年),汉族,吴丹阳郡句容县都乡吉阳里人(今句容市),祖籍山东琅琊,三国著名高道,道教灵宝派祖师。字孝先,号仙翁,被尊称为“葛天师”。道教尊为葛仙翁,又称太极仙翁,与张道陵、许逊、萨守坚共为四大天师。为汉下邳僮侯葛艾后裔,祖葛矩,安平太守,黄门郎;从祖葛弥,豫章第五郡太守。父葛焉,字德儒,州主簿,山阴令,散骑常侍,大尚书。随左慈学道,得《太清丹经》、《黄帝九鼎神丹经》、《金液丹经》等道经。曾采药海山,吴嘉禾二年(233年),在閤皂山修道建庵,筑坛立炉,修炼九转金丹。喜好遨游山川,去过括苍山、南岳山、罗浮山。编撰《灵宝经诰》,精研上清、灵宝等道家真经,并嘱弟子世世箓传。", @@ -13317,6 +13379,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcqiongying_info:'出牌阶段限一次。你可以移动场上的一张牌,然后你弃置一张与此牌花色相同的手牌(若没有该花色的手牌则改为展示所有手牌)。', dcnuanhui:'暖惠', dcnuanhui_info:'结束阶段,你可以选择一名装备区有牌的角色,其可以视为依次使用X张基本牌(X为其装备区牌数)。若其以此法使用了至少两张牌,其弃置装备区里的所有牌。', + zhangjian:'张臶', + dc_zj_a:'技能', + dc_zj_a_info:'锁定技。当你受到牌造成的伤害时,若此牌有点数,则你将此伤害值改为此牌点数,否则你防止此伤害。', + dc_zj_b:'技能', + dc_zj_b_info:'结束阶段,你可以弃置所有牌并令一名其他角色获得〖技能〗直到你的下个回合开始。', sp2_yinyu:'隐山之玉', sp2_huben:'百战虎贲', diff --git a/image/character/star_dongzhuo.jpg b/image/character/star_dongzhuo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0a3dfd182b486b759a8292b4dcd04ff5b0251fa2 GIT binary patch literal 50360 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 Jaxor9|Jh<1`l|o{ literal 0 HcmV?d00001 From d48cd0bcd6f4648b58e59c2d86255289c21107a4 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 14:19:00 +0800 Subject: [PATCH 011/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B0=8B=E6=94=BB?= =?UTF-8?q?=E7=AF=87=E6=A8=A1=E5=BC=8F=E9=80=89=E5=B0=86=E6=97=B6=E8=83=BD?= =?UTF-8?q?=E9=80=89=E5=B9=B3=E6=B0=91=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mode/identity.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mode/identity.js b/mode/identity.js index dbe1018b6..b3ebbe816 100644 --- a/mode/identity.js +++ b/mode/identity.js @@ -1507,7 +1507,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } else{ listi=['random','zhu','zhong','fan','nei']; - if(get.config('enable_commoner')) listi.push('commoner'); + if(get.config('enable_commoner')&&!event.stratagemMode) listi.push('commoner'); } for(var i=0;i Date: Tue, 5 Dec 2023 14:25:45 +0800 Subject: [PATCH 012/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AA=E5=BC=80?= =?UTF-8?q?=E5=90=AF=E5=B9=B3=E6=B0=91=EF=BC=8C=E8=BA=AB=E4=BB=BD=E6=A0=87?= =?UTF-8?q?=E8=AE=B0=E8=BF=98=E8=83=BD=E9=80=89=E5=B9=B3=E6=B0=91=E7=9A=84?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mode/identity.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/mode/identity.js b/mode/identity.js index dbe1018b6..2ca70b2ac 100644 --- a/mode/identity.js +++ b/mode/identity.js @@ -555,12 +555,22 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } } else{ - return { - fan:'反', - zhong:'忠', - nei:'内', - commoner:'民', - cai:'猜', + if(get.config('enable_commoner')){ + return { + fan:'反', + zhong:'忠', + nei:'内', + commoner:'民', + cai:'猜', + } + } + else{ + return { + fan:'反', + zhong:'忠', + nei:'内', + cai:'猜', + } } } }, From bc9c2dbd1013c6a4c97d61ecf385be6dddbf1760 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 14:31:14 +0800 Subject: [PATCH 013/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=9D=90=E9=AA=91=E6=A0=8F=E5=BC=80=E5=85=B3=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/game.js b/game/game.js index e7840298e..2a3a6393d 100644 --- a/game/game.js +++ b/game/game.js @@ -59128,7 +59128,7 @@ new Promise(resolve=>{ * 判断坐骑栏是否被合并 */ mountCombined:function(){ - if(lib.configOL){ + if(lib.configOL.mount_combine){ return lib.configOL.mount_combine; } else if(typeof _status.mountCombined!='boolean'){ From 1a6ded86d4e0f20bf22b7f68cb3d9f2b3d8f8366 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 19:03:36 +0800 Subject: [PATCH 014/302] minor fix for card --- card/gujian.js | 72 ++++----- card/gwent.js | 84 +++++------ card/hearth.js | 26 ++-- card/swd.js | 398 ++++++++++++++++++++++++------------------------- 4 files changed, 290 insertions(+), 290 deletions(-) diff --git a/card/gujian.js b/card/gujian.js index e4127e0b5..f6a37b985 100644 --- a/card/gujian.js +++ b/card/gujian.js @@ -1793,88 +1793,88 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, translate:{ jinlianzhu:'金莲珠', - jinlianzhu_info:'对一名即将受到伤害的角色使用,防止此伤害,并令伤害来源摸一张牌', + jinlianzhu_info:'对一名即将受到伤害的角色使用,防止此伤害,并令伤害来源摸一张牌。', shihuifen:'石灰粉', - shihuifen_info:'在一名其他角色的出牌阶段开始时对其使用,目标需打出一张闪,否则此阶段使用卡牌无法指定其他角色为目标', + shihuifen_info:'在一名其他角色的出牌阶段开始时对其使用,目标需打出一张闪,否则此阶段使用卡牌无法指定其他角色为目标。', liufengsan:'流风散', - liufengsan_info:'出牌阶段对一名角色使用,目标获得两张闪', + liufengsan_info:'出牌阶段对一名角色使用,目标获得两张闪。', liutouge:'六骰格', - liutouge_info:'出牌阶段对一名角色使用,若目标是敌人,对目标施加一个随机的负面效果;否则对目标施加一个随机的正面效果', + liutouge_info:'出牌阶段对一名角色使用,若目标是敌人,对目标施加一个随机的负面效果;否则对目标施加一个随机的正面效果。', longxugou:'龙须钩', - longxugou_info:'出牌阶段对一名装备区内有牌的其他角色使用,获得其装备区内的一张牌并装备之', + longxugou_info:'出牌阶段对一名装备区内有牌的其他角色使用,获得其装备区内的一张牌并装备之。', mianlijinzhen:'棉里针', - mianlijinzhen_info:'出牌阶段对一名体力值不小于你的角色使用,目标摸一张牌然后失去1点体力', + mianlijinzhen_info:'出牌阶段对一名体力值不小于你的角色使用,目标摸一张牌然后失去1点体力。', shenhuofeiya:'神火飞鸦', - shenhuofeiya_info:'出牌阶段对一名其他角色和其相邻角色使用,目标需打出一张闪,否则受到1点火属性伤害', + shenhuofeiya_info:'出牌阶段对一名其他角色和其相邻角色使用,目标需打出一张闪,否则受到1点火属性伤害。', // tuhunsha:'土魂砂', // tuhunsha_info:'土魂砂', // wenhuangsan:'瘟癀伞', // wenhuangsan_info:'瘟癀伞', qiankunbiao:'乾坤镖', - qiankunbiao_info:'随机弃置一名其他角色和其相邻角色的一张牌', + qiankunbiao_info:'随机弃置一名其他角色和其相邻角色的一张牌。', bingpotong:'天女散花', bingpotong_ab:'散花', - bingpotong_info:'出牌阶段对至多3名角色使用,你与每个目标依次同时展示一张手牌,若颜色相同,你弃置展示的手牌,目标失去1点体力并终止结算', + bingpotong_info:'出牌阶段对至多3名角色使用,你与每个目标依次同时展示一张手牌,若颜色相同,你弃置展示的手牌,目标失去1点体力并终止结算。', feibiao:'飞镖', - feibiao_info:'出牌阶段,对一名距离1以外的角色使用,令其弃置一张黑色手牌或失去1点体力', + feibiao_info:'出牌阶段,对一名距离1以外的角色使用,令其弃置一张黑色手牌或失去1点体力。', dinvxuanshuang:'帝女玄霜', dinvxuanshuang_skill:'帝女玄霜', - dinvxuanshuang_info:'对一名濒死状态的角色使用,目标回复1点体力,然后可以弃置任意张牌并摸等量的牌', + dinvxuanshuang_info:'对一名濒死状态的角色使用,目标回复1点体力,然后可以弃置任意张牌并摸等量的牌。', yunvyuanshen:'玉女元参', yunvyuanshen_skill:'玉女元参', - yunvyuanshen_info:'出牌阶段对一名角色使用,目标在下一次进入濒死状态时回复1点体力', + yunvyuanshen_info:'出牌阶段对一名角色使用,目标在下一次进入濒死状态时回复1点体力。', ziyangdan:'紫阳丹', - ziyangdan_info:'出牌阶段对一名角色使用,目标获得3点护甲,此后每个准备阶段失去1点护甲,直到首次失去所有护甲或累计以此法失去3点护甲', + ziyangdan_info:'出牌阶段对一名角色使用,目标获得3点护甲,此后每个准备阶段失去1点护甲,直到首次失去所有护甲或累计以此法失去3点护甲。', gjyuheng:'玉衡', gjyuheng_plus:'玉衡', gjyuheng_pro:'玉衡', gjyuheng_skill:'玉衡', gjyuheng_plus_skill:'玉衡', gjyuheng_pro_skill:'玉衡', - gjyuheng_info:'出牌阶段限一次,若敌方角色有黑桃手牌,你可以弃置一张黑桃手牌,然后获得一名随机敌方角色的一张随机黑桃手牌(此牌在本局游戏中第三次和第七次发动效果后,分别自动获得一次强化)', - gjyuheng_plus_info:'由普通玉衡强化得到,将玉衡技能描述中的“弃置一张黑桃手牌”改为“弃置一张黑色手牌”', - gjyuheng_pro_info:'由普通玉衡二次强化得到,将玉横技能描述中的“弃置一张黑桃手牌”改为“弃置一张黑色手牌”,并去掉使用次数限制', - gjyuheng_skill_info:'出牌阶段限一次,若敌方角色有黑桃手牌,你可以弃置一张黑桃手牌,然后获得一名随机敌方角色的一张随机黑桃手牌', - gjyuheng_plus_skill_info:'出牌阶段限一次,若敌方角色有黑桃手牌,你可以弃置一张黑色手牌,然后获得一名随机敌方角色的一张随机黑桃手牌', - gjyuheng_pro_skill_info:'出牌阶段限,若敌方角色有黑桃手牌,你可以弃置一张黑色手牌,然后获得一名随机敌方角色的一张随机黑桃手牌', + gjyuheng_info:'出牌阶段限一次,若敌方角色有黑桃手牌,你可以弃置一张黑桃手牌,然后获得一名随机敌方角色的一张随机黑桃手牌(此牌在本局游戏中第三次和第七次发动效果后,分别自动获得一次强化)。', + gjyuheng_plus_info:'由普通玉衡强化得到,将玉衡技能描述中的“弃置一张黑桃手牌”改为“弃置一张黑色手牌”。', + gjyuheng_pro_info:'由普通玉衡二次强化得到,将玉横技能描述中的“弃置一张黑桃手牌”改为“弃置一张黑色手牌”,并去掉使用次数限制。', + gjyuheng_skill_info:'出牌阶段限一次,若敌方角色有黑桃手牌,你可以弃置一张黑桃手牌,然后获得一名随机敌方角色的一张随机黑桃手牌。', + gjyuheng_plus_skill_info:'出牌阶段限一次,若敌方角色有黑桃手牌,你可以弃置一张黑色手牌,然后获得一名随机敌方角色的一张随机黑桃手牌。', + gjyuheng_pro_skill_info:'出牌阶段限,若敌方角色有黑桃手牌,你可以弃置一张黑色手牌,然后获得一名随机敌方角色的一张随机黑桃手牌。', shujinsan:'舒筋散', - shujinsan_info:'出牌阶段对任意角色使用,目标可弃置任意张牌,并摸等量的牌', + shujinsan_info:'出牌阶段对任意角色使用,目标可弃置任意张牌,并摸等量的牌。', mutoumianju:'木头面具', - mutoumianju_info:'出牌阶段限一次,你可以将一张手牌当作杀使用', + mutoumianju_info:'出牌阶段限一次,你可以将一张手牌当作杀使用。', mutoumianju_skill:'木杀', - mutoumianju_skill_info:'出牌阶段限一次,你可以将一张手牌当作杀使用', + mutoumianju_skill_info:'出牌阶段限一次,你可以将一张手牌当作杀使用。', heilonglinpian:'黑龙鳞片', - heilonglinpian_info:'出牌阶段对自己使用,获得1点护甲,直到下一回合开始,你的防御距离+1', + heilonglinpian_info:'出牌阶段对自己使用,获得1点护甲,直到下一回合开始,你的防御距离+1。', shatang:'沙棠', - shatang_info:'出牌阶段对一名角色使用,对目标造成1点火焰伤害,然后目标获得1点护甲', + shatang_info:'出牌阶段对一名角色使用,对目标造成1点火焰伤害,然后目标获得1点护甲。', food:'食物', chunbing:'春饼', - chunbing_info:'你的手牌上限+1,持续五回合', + chunbing_info:'你的手牌上限+1,持续五回合。', gudonggeng:'骨董羹', - gudonggeng_info:'当你下一次受到杀造成的伤害时,令伤害-1,持续三回合', + gudonggeng_info:'当你下一次受到杀造成的伤害时,令伤害-1,持续三回合。', yougeng:'酉羹', - yougeng_info:'准备阶段,若你的体力值为全场最少或之一,你回复1点体力,持续两回合', + yougeng_info:'准备阶段,若你的体力值为全场最少或之一,你回复1点体力,持续两回合。', liyutang:'鲤鱼汤', - liyutang_info:'结束阶段,若你的体力值为全场最少或之一,你获得1点护甲,持续两回合', + liyutang_info:'结束阶段,若你的体力值为全场最少或之一,你获得1点护甲,持续两回合。', mizhilianou:'蜜汁藕', - mizhilianou_info:'你可以将一张红桃牌当作桃使用,持续四回合', + mizhilianou_info:'你可以将一张红桃牌当作桃使用,持续四回合。', xiajiao:'虾饺', - xiajiao_info:'你在摸牌阶段额外摸一张牌,然后弃置一张牌,持续三回合', + xiajiao_info:'你在摸牌阶段额外摸一张牌,然后弃置一张牌,持续三回合。', tanhuadong:'昙花冻', - tanhuadong_info:'出牌阶段结束时,你摸一张牌,持续三回合', + tanhuadong_info:'出牌阶段结束时,你摸一张牌,持续三回合。', qingtuan:'青团', - qingtuan_info:'你在回合内使用首张杀时摸一张牌,持续两回合', + qingtuan_info:'你在回合内使用首张杀时摸一张牌,持续两回合。', luyugeng:'鲈鱼羹', - luyugeng_info:'出牌阶段限一次,你可以弃置一张基本牌并发现一张牌,持续三回合', + luyugeng_info:'出牌阶段限一次,你可以弃置一张基本牌并发现一张牌,持续三回合。', yuanbaorou:'元宝肉', - yuanbaorou_info:'你在出牌阶段可以额外使用一张杀,持续四回合', + yuanbaorou_info:'你在出牌阶段可以额外使用一张杀,持续四回合。', molicha:'茉莉茶', - molicha_info:'你不能成为其他角色的黑色牌的目标,持续四回合', + molicha_info:'你不能成为其他角色的黑色牌的目标,持续四回合。', mapodoufu:'麻婆豆腐', - mapodoufu_info:'结束阶段,你弃置一名随机敌人的一张随机牌,持续两回合', + mapodoufu_info:'结束阶段,你弃置一名随机敌人的一张随机牌,持续两回合。', }, list:[ ['spade',2,'tanhuadong'], diff --git a/card/gwent.js b/card/gwent.js index adf9094c2..306af8fac 100644 --- a/card/gwent.js +++ b/card/gwent.js @@ -2204,22 +2204,22 @@ game.import('card',function(lib,game,ui,get,ai,_status){ gw_youlanzhimeng:'幽蓝之梦', gw_guaiwuchaoxue:'怪物巢穴', - gw_guaiwuchaoxue_info:'出牌阶段限用一次,随机获得一个卖血技能直到下一回合开始;令一名随机敌方角色对你造成1点伤害,然后你回复1点体力', + gw_guaiwuchaoxue_info:'出牌阶段限用一次,随机获得一个卖血技能直到下一回合开始;令一名随机敌方角色对你造成1点伤害,然后你回复1点体力。', gw_baobaoshu:'雹暴术', - gw_baobaoshu_info:'天气牌,出牌阶段对至多两名角色使用,目标每使用一张基本牌或锦囊牌,需弃置一张牌,直到下一回合结束', + gw_baobaoshu_info:'天气牌,出牌阶段对至多两名角色使用,目标每使用一张基本牌或锦囊牌,需弃置一张牌,直到下一回合结束。', gw_baishuang:'白霜', - gw_baishuang_info:'天气牌,出牌阶段对至多三名角色使用,目标下个摸牌阶段摸牌数-1', + gw_baishuang_info:'天气牌,出牌阶段对至多三名角色使用,目标下个摸牌阶段摸牌数-1。', gw_nuhaifengbao:'怒海风暴', gw_nuhaifengbao_bg:'海', - gw_nuhaifengbao_info:'天气牌,出牌阶段对一名角色使用,目标在结束阶段随机弃置一张牌,持续2回合', + gw_nuhaifengbao_info:'天气牌,出牌阶段对一名角色使用,目标在结束阶段随机弃置一张牌,持续2回合。', gw_ganhan:'干旱', - gw_ganhan_info:'所有角色减少1点体力上限(不触发技能),然后结束出牌阶段', + gw_ganhan_info:'所有角色减少1点体力上限(不触发技能),然后结束出牌阶段。', gw_huangjiashenpan:'皇家审判', - gw_huangjiashenpan_info:'获得任意一张金卡法术(皇家审判除外),然后结束出牌阶段', + gw_huangjiashenpan_info:'获得任意一张金卡法术(皇家审判除外),然后结束出牌阶段。', gw_chongci:'冲刺', - gw_chongci_info:'弃置所有牌并随机获得一张非金法术牌,每弃置一张手牌,便随机获得一张类别相同的牌;每弃置一张装备区内的牌,随机装备一件类别相同的装备;获得潜行直到下一回合开始,然后结束出牌阶段', + gw_chongci_info:'弃置所有牌并随机获得一张非金法术牌,每弃置一张手牌,便随机获得一张类别相同的牌;每弃置一张装备区内的牌,随机装备一件类别相同的装备;获得潜行直到下一回合开始,然后结束出牌阶段。', gw_tunshi:'吞噬', - gw_tunshi_info:'随机移除一名敌方角色的一个随机技能,你获得此技能并减少1点体力和体力上限,被移除技能的角色增加1点体力和体力上限,然后结束出牌阶段', + gw_tunshi_info:'随机移除一名敌方角色的一个随机技能,你获得此技能并减少1点体力和体力上限,被移除技能的角色增加1点体力和体力上限,然后结束出牌阶段。', gw_dieyi:'蝶翼', gw_dieyi_equip1:'蝶翼·器', gw_dieyi_equip2:'蝶翼·衣', @@ -2227,73 +2227,73 @@ game.import('card',function(lib,game,ui,get,ai,_status){ gw_dieyi_equip4:'蝶翼·防', gw_dieyi_equip5:'蝶翼·宝', gw_dieyi_judge:'蝶翼·判', - gw_dieyi_equip1_info:'在你从装备区中失去此牌后,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌', - gw_dieyi_equip2_info:'在你从装备区中失去此牌后,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌', - gw_dieyi_equip3_info:'在你从装备区中失去此牌后,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌', - gw_dieyi_equip4_info:'在你从装备区中失去此牌后,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌', - gw_dieyi_equip5_info:'在你从装备区中失去此牌后,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌', - gw_dieyi_judge_info:'你在判定阶段移去此牌,并获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌', + gw_dieyi_equip1_info:'在你从装备区中失去此牌后,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌。', + gw_dieyi_equip2_info:'在你从装备区中失去此牌后,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌。', + gw_dieyi_equip3_info:'在你从装备区中失去此牌后,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌。', + gw_dieyi_equip4_info:'在你从装备区中失去此牌后,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌。', + gw_dieyi_equip5_info:'在你从装备区中失去此牌后,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌。', + gw_dieyi_judge_info:'你在判定阶段移去此牌,并获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌。', gw_hudiewu:'蝴蝶舞', - gw_hudiewu_info:'将其他角色在场上的所有牌替换为蝶翼(每当你失去一张蝶翼,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌),然后结束出牌阶段', + gw_hudiewu_info:'将其他角色在场上的所有牌替换为蝶翼(每当你失去一张蝶翼,你获得一枚“蝶翼”标记;在任意角色的结束阶段,你移去所有“蝶翼”标记,并随机弃置等量的牌),然后结束出牌阶段。', gw_yigeniyin:'伊格尼印', - gw_yigeniyin_info:'对敌方角色中体力值最高的一名随机角色造成1点火焰伤害,然后对场上体力值最高的所有角色各造成1点火焰伤害,然后结束出牌阶段', + gw_yigeniyin_info:'对敌方角色中体力值最高的一名随机角色造成1点火焰伤害,然后对场上体力值最高的所有角色各造成1点火焰伤害,然后结束出牌阶段。', gw_leizhoushu:'雷咒术', - gw_leizhoushu_info:'获得技能雷咒术(在每个准备阶段令全场牌数最多的所有其他角色各随机弃置一张牌,若目标不包含敌方角色,将一名随机敌方角色追加为额外目标,结算X次,X为本局获得此技能的次数),然后结束出牌阶段', + gw_leizhoushu_info:'获得技能雷咒术(在每个准备阶段令全场牌数最多的所有其他角色各随机弃置一张牌,若目标不包含敌方角色,将一名随机敌方角色追加为额外目标,结算X次,X为本局获得此技能的次数),然后结束出牌阶段。', gw_aerdeyin:'阿尔德印', gw_aerdeyin_bg:'印', - gw_aerdeyin_info:'对一名随机敌方角色造成1点伤害,若目标武将牌正面朝上,则将其翻面;新的一轮开始时,若目标武将牌正面朝上,则在当前回合结束后进行一个额外回合,否则将武将牌翻回正面', + gw_aerdeyin_info:'对一名随机敌方角色造成1点伤害,若目标武将牌正面朝上,则将其翻面;新的一轮开始时,若目标武将牌正面朝上,则在当前回合结束后进行一个额外回合,否则将武将牌翻回正面。', gw_xinsheng:'新生', - gw_xinsheng_info:'选择一名角色,随机观看12张武将牌,选择一张替代其武将牌,并令其增加1点体力,然后结束出牌阶段', + gw_xinsheng_info:'选择一名角色,随机观看12张武将牌,选择一张替代其武将牌,并令其增加1点体力,然后结束出牌阶段。', gw_zhongmozhizhan:'终末之战', - gw_zhongmozhizhan_info:'将所有角色区域内的所有牌置入弃牌堆(不触发技能),然后结束出牌阶段', + gw_zhongmozhizhan_info:'将所有角色区域内的所有牌置入弃牌堆(不触发技能),然后结束出牌阶段。', gw_butianshu:'卜天术', - gw_butianshu_info:'出牌阶段对任意角色使用,将任意一张延时锦囊牌置入其判定区', + gw_butianshu_info:'出牌阶段对任意角色使用,将任意一张延时锦囊牌置入其判定区。', gw_zhihuanjun:'致幻菌', - gw_zhihuanjun_info:'出牌阶段对一名已受伤角色使用,令其减少1点体力上限;若该角色仍处于受伤状态且手牌数小于体力上限,则重复此结算', + gw_zhihuanjun_info:'出牌阶段对一名已受伤角色使用,令其减少1点体力上限;若该角色仍处于受伤状态且手牌数小于体力上限,则重复此结算。', gw_niuquzhijing:'纽曲之镜', - gw_niuquzhijing_info:'令全场体力最多的角色减少1点体力和体力上限,体力最少的角色增加1点体力和体力上限(不触发技能),然后结束出牌阶段', + gw_niuquzhijing_info:'令全场体力最多的角色减少1点体力和体力上限,体力最少的角色增加1点体力和体力上限(不触发技能),然后结束出牌阶段。', gw_ansha:'暗杀', - gw_ansha_info:'令一名体力为1的随机敌方角立即死亡,然后结束出牌阶段', + gw_ansha_info:'令一名体力为1的随机敌方角立即死亡,然后结束出牌阶段。', gw_shizizhaohuan:'十字召唤', - gw_shizizhaohuan_info:'从牌堆中获得一张杀以及决斗、火攻、火烧连营、南蛮入侵四张牌中的随机一张', + gw_shizizhaohuan_info:'从牌堆中获得一张杀以及决斗、火攻、火烧连营、南蛮入侵四张牌中的随机一张。', gw_zuihouyuanwang:'最后愿望', - gw_zuihouyuanwang_info:'摸X张牌并弃置X张牌,X为存活角色数', + gw_zuihouyuanwang_info:'摸X张牌并弃置X张牌,X为存活角色数。', gw_zirankuizeng:'自然馈赠', - gw_zirankuizeng_info:'选择任意一张铜卡法术使用', + gw_zirankuizeng_info:'选择任意一张铜卡法术使用。', gw_poxiao:'破晓', - gw_poxiao_info:'选择一项:解除任意名角色的天气效果并移除其判定区内的牌,或随机获得一张铜卡法术(破晓除外)并展示之', + gw_poxiao_info:'选择一项:解除任意名角色的天气效果并移除其判定区内的牌,或随机获得一张铜卡法术(破晓除外)并展示之。', gw_zumoshoukao:'阻魔手铐', - gw_zumoshoukao_info:'令一名角色非锁定技失效直到下一回合结束', + gw_zumoshoukao_info:'令一名角色非锁定技失效直到下一回合结束。', gw_aozuzhilei:'奥祖之雷', - gw_aozuzhilei_info:'对一名体力值不小于你的角色造成1点雷属性伤害,然后该角色摸一张牌', + gw_aozuzhilei_info:'对一名体力值不小于你的角色造成1点雷属性伤害,然后该角色摸一张牌。', gw_zhuoshao:'灼烧', - gw_zhuoshao_info:'对任意名体力值为全场最高的角色使用,造成1点火属性伤害', + gw_zhuoshao_info:'对任意名体力值为全场最高的角色使用,造成1点火属性伤害。', gw_fuyuan:'复原', - gw_fuyuan_info:'对一名濒死状态角色使用,目标回复1点体力并摸一张牌', + gw_fuyuan_info:'对一名濒死状态角色使用,目标回复1点体力并摸一张牌。', gw_youer:'诱饵', gw_youer_bg:'饵', - gw_youer_info:'将一名其他角色的所有手牌移出游戏,然后摸一张牌,当前回合结束后该角色将以此法失去的牌收回手牌', + gw_youer_info:'将一名其他角色的所有手牌移出游戏,然后摸一张牌,当前回合结束后该角色将以此法失去的牌收回手牌。', gw_tongdi:'通敌', - gw_tongdi_info:'观看一名其他角色的手牌并获得其中一张,然后令目标获得一张杀', + gw_tongdi_info:'观看一名其他角色的手牌并获得其中一张,然后令目标获得一张杀。', gw_baoxueyaoshui:'暴雪药水', - gw_baoxueyaoshui_info:'令一名角色弃置两张手牌并摸一张牌', + gw_baoxueyaoshui_info:'令一名角色弃置两张手牌并摸一张牌。', gw_birinongwu:'蔽日浓雾', gw_birinongwu_bg:'雾', - gw_birinongwu_info:'天气牌,出牌阶段对一名角色及其相邻角色使用,目标不能使用杀直到下一个出牌阶段结束', + gw_birinongwu_info:'天气牌,出牌阶段对一名角色及其相邻角色使用,目标不能使用杀直到下一个出牌阶段结束。', gw_qinpendayu:'倾盆大雨', gw_qinpendayu_bg:'雨', - gw_qinpendayu_info:'天气牌,出牌阶段对一名角色及其相邻角色使用,目标手牌上限-1直到下一个弃牌阶段结束', + gw_qinpendayu_info:'天气牌,出牌阶段对一名角色及其相邻角色使用,目标手牌上限-1直到下一个弃牌阶段结束。', gw_ciguhanshuang:'刺骨寒霜', gw_ciguhanshuang_bg:'霜', - gw_ciguhanshuang_info:'天气牌,出牌阶段对一名角色及其相邻角色使用,目标下个摸牌阶段摸牌数-1', + gw_ciguhanshuang_info:'天气牌,出牌阶段对一名角色及其相邻角色使用,目标下个摸牌阶段摸牌数-1。', gw_wenyi:'瘟疫', - gw_wenyi_info:'令所有体力值为全场最少的角色随机弃置一张手牌;若没有手牌,改为失去1点体力', + gw_wenyi_info:'令所有体力值为全场最少的角色随机弃置一张手牌;若没有手牌,改为失去1点体力。', gw_yanziyaoshui:'燕子药水', - gw_yanziyaoshui_info:'令一名角色摸一张牌,若其手牌数为全场最少或之一,改为摸两张', + gw_yanziyaoshui_info:'令一名角色摸一张牌,若其手牌数为全场最少或之一,改为摸两张。', gw_shanbengshu:'山崩术', - gw_shanbengshu_info:'出牌阶段对自己使用,随机弃置两件敌方角色场上的装备', + gw_shanbengshu_info:'出牌阶段对自己使用,随机弃置两件敌方角色场上的装备。', gw_kunenfayin:'昆恩法印', - gw_kunenfayin_info:'出牌阶段对一名角色使用,目标防止所有非属性伤害,持续X个角色的回合(X为存活角色数且最多为5)', + gw_kunenfayin_info:'出牌阶段对一名角色使用,目标防止所有非属性伤害,持续X个角色的回合(X为存活角色数且最多为5)。', }, cardType:{ spell:0.5, diff --git a/card/hearth.js b/card/hearth.js index 997d38e8a..82600260f 100644 --- a/card/hearth.js +++ b/card/hearth.js @@ -690,33 +690,33 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, translate:{ linghunzhihuo:'灵魂之火', - linghunzhihuo_info:'对一名角色造成1点火焰伤害,然后随机弃置一张手牌', + linghunzhihuo_info:'对一名角色造成1点火焰伤害,然后随机弃置一张手牌。', shenenshu:'神恩术', - shenenshu_info:'出牌阶段对自己使用,将所有手牌(含此张)替换为基本牌', + shenenshu_info:'出牌阶段对自己使用,将所有手牌(含此张)替换为基本牌。', zhiliaobo:'治疗波', - zhiliaobo_info:'出牌阶段对一名受伤角色使用,目标进行一次判定,若结果为红色,则回复1点体力,否则获得1点护甲', + zhiliaobo_info:'出牌阶段对一名受伤角色使用,目标进行一次判定,若结果为红色,则回复1点体力,否则获得1点护甲。', yuansuhuimie:'元素毁灭', - yuansuhuimie_info:'对所有角色使用,令目标弃置0~2张牌,并受到2-X点雷电伤害,X为其弃置的手牌数', + yuansuhuimie_info:'对所有角色使用,令目标弃置0~2张牌,并受到2-X点雷电伤害,X为其弃置的手牌数。', xingjiegoutong:'星界沟通', - xingjiegoutong_info:'增加1点体力上限并回复1点体力,弃置你的所有手牌', + xingjiegoutong_info:'增加1点体力上限并回复1点体力,弃置你的所有手牌。', tanshezhiren:'弹射之刃', - tanshezhiren_info:'出牌阶段对自己使用,依次按敌方-友方-敌方-的顺序随机弃置阵营内一名随机角色的一张牌(目标不包含你),共结算X次,X为存活角色数,若X为偶数,改为X-1', + tanshezhiren_info:'出牌阶段对自己使用,依次按敌方-友方-敌方-的顺序随机弃置阵营内一名随机角色的一张牌(目标不包含你),共结算X次,X为存活角色数,若X为偶数,改为X-1。', chuansongmen:'传送门', - chuansongmen_info:'摸一张牌并展示,若发生在出牌阶段,你可以立即使用摸到的牌,若如此做,你将传送门收回手牌(每阶段最多收回2张传送门)', + chuansongmen_info:'摸一张牌并展示,若发生在出牌阶段,你可以立即使用摸到的牌,若如此做,你将传送门收回手牌(每阶段最多收回2张传送门)。', dunpaigedang:'盾牌格挡', - dunpaigedang_info:'获得1点护甲值,摸一张牌,然后弃置一张牌', + dunpaigedang_info:'获得1点护甲值,摸一张牌,然后弃置一张牌。', siwangchanrao:'死亡缠绕', - siwangchanrao_infox:'弃置一名其他角色的一张手牌,若其此时没有手牌,则你摸一张牌', + siwangchanrao_infox:'弃置一名其他角色的一张手牌,若其此时没有手牌,则你摸一张牌。', shihuawuqi:'石化武器', - shihuawuqi_infox:'本回合内攻击范围+1;若你手牌中没有杀,则从牌堆中获得一张杀', + shihuawuqi_infox:'本回合内攻击范围+1;若你手牌中没有杀,则从牌堆中获得一张杀。', shandianjian:'闪电箭', shandianjian_info:'目标角色展示一张手牌,然后若你能弃掉一张与所展示牌相同花色的手牌,则对该角色造成1点雷电伤害。', shijieshu:'视界术', - shijieshu_info:'目标从牌堆或弃牌堆中随机装备两张类别不同的装备牌,然后弃置一张牌', + shijieshu_info:'目标从牌堆或弃牌堆中随机装备两张类别不同的装备牌,然后弃置一张牌。', zhaomingdan:'照明弹', - zhaomingdan_info:'观看一名其他角色的手牌,并弃置其区域内的一张牌,然后其与你各摸一张牌', + zhaomingdan_info:'观看一名其他角色的手牌,并弃置其区域内的一张牌,然后其与你各摸一张牌。', jihuocard:'激活', - jihuocard_info:'摸一张牌,本回合手牌上限+2', + jihuocard_info:'摸一张牌,本回合手牌上限+2。', }, list:[ ['heart',2,'shenenshu'], diff --git a/card/swd.js b/card/swd.js index e70ce821e..b66e3a0f2 100644 --- a/card/swd.js +++ b/card/swd.js @@ -4952,340 +4952,340 @@ game.import('card',function(lib,game,ui,get,ai,_status){ g_hufu_sha:'符杀', g_hufu_shan:'符闪', g_hufu_jiu:'符酒', - hufu_info:'你可以将一张玉符当作杀、闪或酒使用或打出', + hufu_info:'你可以将一张玉符当作杀、闪或酒使用或打出。', // yihuajiemu:'移花接木', - // yihuajiemu_info:'对一名装备区内有宝物的角色使用,将其宝物牌转移至另一名角色', + // yihuajiemu_info:'对一名装备区内有宝物的角色使用,将其宝物牌转移至另一名角色。', liuxinghuoyu:'流星火羽', - liuxinghuoyu_info:'出牌阶段,对一名角色使用,令目标弃置两张牌,或受到1点火焰伤害', + liuxinghuoyu_info:'出牌阶段,对一名角色使用,令目标弃置两张牌,或受到1点火焰伤害。', g_yuchan_equip:'玉蝉', yuchanqian_duanzao:'玉蝉', - yuchanqian_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanqian_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanqian_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanqian_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanqian_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', + yuchanqian_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanqian_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanqian_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanqian_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanqian_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', yuchankun_duanzao:'玉蝉', - yuchankun_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchankun_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchankun_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchankun_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchankun_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', + yuchankun_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchankun_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchankun_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchankun_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchankun_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', yuchanzhen_duanzao:'玉蝉', - yuchanzhen_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanzhen_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanzhen_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanzhen_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanzhen_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', + yuchanzhen_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanzhen_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanzhen_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanzhen_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanzhen_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', yuchanxun_duanzao:'玉蝉', - yuchanxun_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanxun_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanxun_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanxun_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanxun_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', + yuchanxun_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanxun_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanxun_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanxun_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanxun_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', yuchankan_duanzao:'玉蝉', - yuchankan_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchankan_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchankan_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchankan_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchankan_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', + yuchankan_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchankan_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchankan_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchankan_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchankan_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', yuchanli_duanzao:'玉蝉', - yuchanli_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanli_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanli_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanli_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchanli_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', + yuchanli_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanli_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanli_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanli_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchanli_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', yuchangen_duanzao:'玉蝉', - yuchangen_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchangen_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchangen_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchangen_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchangen_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', + yuchangen_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchangen_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchangen_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchangen_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchangen_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', yuchandui_duanzao:'玉蝉', - yuchandui_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchandui_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchandui_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchandui_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', - yuchandui_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌', + yuchandui_equip1_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchandui_equip2_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchandui_equip3_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchandui_equip4_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', + yuchandui_equip5_info:'出牌阶段限一次,你可以弃置任意张基本牌并摸等量的牌。', yuchanqian:'乾玉蝉', - yuchanqian_info:'在你行动时可当作杀使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态', + yuchanqian_info:'在你行动时可当作杀使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态。', yuchankun:'坤玉蝉', - yuchankun_info:'在你行动时可当作草药使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态', + yuchankun_info:'在你行动时可当作草药使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态。', yuchanzhen:'震玉蝉', - yuchanzhen_info:'在你行动时可当作酒使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态', + yuchanzhen_info:'在你行动时可当作酒使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态。', yuchanxun:'巽玉蝉', - yuchanxun_info:'在你行动时可当作桃使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态', + yuchanxun_info:'在你行动时可当作桃使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态。', yuchankan:'坎玉蝉', - yuchankan_info:'在你行动时可当作神秘果使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态', + yuchankan_info:'在你行动时可当作神秘果使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态。', yuchanli:'离玉蝉', - yuchanli_info:'在你行动时可当作天仙酒使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态', + yuchanli_info:'在你行动时可当作天仙酒使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态。', yuchangen:'艮玉蝉', - yuchangen_info:'在你行动时可当作封印之蛋使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态', + yuchangen_info:'在你行动时可当作封印之蛋使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态。', yuchandui:'兑玉蝉', - yuchandui_info:'在你行动时可当作雪肌冰鲍使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态', + yuchandui_info:'在你行动时可当作雪肌冰鲍使用;可用于煅造装备;在你使用一张牌后,此牌会随机切换形态。', yangpijuan:'羊皮卷', - yangpijuan_info:'出牌阶段对自己使用,选择一种卡牌类别,发现一张该类别的卡牌', + yangpijuan_info:'出牌阶段对自己使用,选择一种卡牌类别,发现一张该类别的卡牌。', // pantao:'蟠桃', - // pantao_info:'出牌阶段对自己使用,或对濒死角色使用,目标回复2点体力并获得1点护甲', + // pantao_info:'出牌阶段对自己使用,或对濒死角色使用,目标回复2点体力并获得1点护甲。', shencaojie:'神草结', - shencaojie_info:'你的锦囊牌即将造成伤害时对目标使用,令此伤害+1;你即将受到锦囊牌伤害时对自己使用,令此伤害-1', + shencaojie_info:'你的锦囊牌即将造成伤害时对目标使用,令此伤害+1;你即将受到锦囊牌伤害时对自己使用,令此伤害-1。', yuruyi:'玉如意', yuruyi_ab:'如意', - yuruyi_info:'你有更高的机率摸到好牌', + yuruyi_info:'你有更高的机率摸到好牌。', fengyinzhidan:'封印之蛋', - fengyinzhidan_info:'随机使用两张普通锦囊牌(随机指定目标)', + fengyinzhidan_info:'随机使用两张普通锦囊牌(随机指定目标)。', shuchui:'鼠槌', - shuchui_info:'出牌阶段限一次,你可以指定一名攻击范围内的角色,依次将手牌中的至多3张杀对该角色使用,若杀造成了伤害,你摸一张牌', + shuchui_info:'出牌阶段限一次,你可以指定一名攻击范围内的角色,依次将手牌中的至多3张杀对该角色使用,若杀造成了伤害,你摸一张牌。', zhiluxiaohu:'指路小狐', - zhiluxiaohu_info:'出牌阶段对自己使用,视为对一名随机敌方角色使用一张杀,若此杀造成伤害,你摸一张牌', + zhiluxiaohu_info:'出牌阶段对自己使用,视为对一名随机敌方角色使用一张杀,若此杀造成伤害,你摸一张牌。', xuejibingbao:'雪肌冰鲍', - xuejibingbao_info:'出牌阶段对一名角色使用,该角色摸牌阶段摸牌数+1,持续2个回合', + xuejibingbao_info:'出牌阶段对一名角色使用,该角色摸牌阶段摸牌数+1,持续2个回合。', gouhunluo:'勾魂锣', - gouhunluo_info:'出牌阶段对一名角色使用,在3轮后你的准备阶段令该角色失去1点体力并弃置所有手牌', + gouhunluo_info:'出牌阶段对一名角色使用,在3轮后你的准备阶段令该角色失去1点体力并弃置所有手牌。', jiguan:'机关', jiqi:'祭器', qinglongzhigui:'青龙之圭', g_qinglongzhigui:'青龙之圭', - qinglongzhigui_info:'可用于煅造装备;此牌在你手牌中时,准备阶段,你摸两张牌然后弃置一张牌', + qinglongzhigui_info:'可用于煅造装备;此牌在你手牌中时,准备阶段,你摸两张牌然后弃置一张牌。', qinglongzhigui_duanzao:'云屏', - qinglongzhigui_equip1_info:'结束阶段,你摸一张牌', - qinglongzhigui_equip2_info:'结束阶段,你摸一张牌', - qinglongzhigui_equip3_info:'结束阶段,你摸一张牌', - qinglongzhigui_equip4_info:'结束阶段,你摸一张牌', - qinglongzhigui_equip5_info:'结束阶段,你摸一张牌', + qinglongzhigui_equip1_info:'结束阶段,你摸一张牌。', + qinglongzhigui_equip2_info:'结束阶段,你摸一张牌。', + qinglongzhigui_equip3_info:'结束阶段,你摸一张牌。', + qinglongzhigui_equip4_info:'结束阶段,你摸一张牌。', + qinglongzhigui_equip5_info:'结束阶段,你摸一张牌。', baishouzhihu:'白兽之琥', g_baishouzhihu:'白兽之琥', - baishouzhihu_info:'可用于煅造装备;此牌在你手牌中时,每当你弃置卡牌,你可以弃置一名其他角色的一张随机牌', + baishouzhihu_info:'可用于煅造装备;此牌在你手牌中时,每当你弃置卡牌,你可以弃置一名其他角色的一张随机牌。', baishouzhihu_duanzao:'风牙', - baishouzhihu_equip1_info:'结束阶段,你可以弃置一名其他角色的一张随机牌', - baishouzhihu_equip2_info:'结束阶段,你可以弃置一名其他角色的一张随机牌', - baishouzhihu_equip3_info:'结束阶段,你可以弃置一名其他角色的一张随机牌', - baishouzhihu_equip4_info:'结束阶段,你可以弃置一名其他角色的一张随机牌', - baishouzhihu_equip5_info:'结束阶段,你可以弃置一名其他角色的一张随机牌', + baishouzhihu_equip1_info:'结束阶段,你可以弃置一名其他角色的一张随机牌。', + baishouzhihu_equip2_info:'结束阶段,你可以弃置一名其他角色的一张随机牌。', + baishouzhihu_equip3_info:'结束阶段,你可以弃置一名其他角色的一张随机牌。', + baishouzhihu_equip4_info:'结束阶段,你可以弃置一名其他角色的一张随机牌。', + baishouzhihu_equip5_info:'结束阶段,你可以弃置一名其他角色的一张随机牌。', zhuquezhizhang:'朱雀之璋', g_zhuquezhizhang:'朱雀之璋', - zhuquezhizhang_info:'可用于煅造装备;此牌在你手牌中时,每当你受到其他角色造成的伤害,你对伤害来源造成1点火属性伤害', + zhuquezhizhang_info:'可用于煅造装备;此牌在你手牌中时,每当你受到其他角色造成的伤害,你对伤害来源造成1点火属性伤害。', zhuquezhizhang_duanzao:'炽翎', - zhuquezhizhang_equip1_info:'结束阶段,你可以弃置一张红色牌并对一名体力值不小于你的角色造成1点火属性伤害', - zhuquezhizhang_equip2_info:'结束阶段,你可以弃置一张红色牌并对一名体力值不小于你的角色造成1点火属性伤害', - zhuquezhizhang_equip3_info:'结束阶段,你可以弃置一张红色牌并对一名体力值不小于你的角色造成1点火属性伤害', - zhuquezhizhang_equip4_info:'结束阶段,你可以弃置一张红色牌并对一名体力值不小于你的角色造成1点火属性伤害', - zhuquezhizhang_equip5_info:'结束阶段,你可以弃置一张红色牌并对一名体力值不小于你的角色造成1点火属性伤害', + zhuquezhizhang_equip1_info:'结束阶段,你可以弃置一张红色牌并对一名体力值不小于你的角色造成1点火属性伤害。', + zhuquezhizhang_equip2_info:'结束阶段,你可以弃置一张红色牌并对一名体力值不小于你的角色造成1点火属性伤害。', + zhuquezhizhang_equip3_info:'结束阶段,你可以弃置一张红色牌并对一名体力值不小于你的角色造成1点火属性伤害。', + zhuquezhizhang_equip4_info:'结束阶段,你可以弃置一张红色牌并对一名体力值不小于你的角色造成1点火属性伤害。', + zhuquezhizhang_equip5_info:'结束阶段,你可以弃置一张红色牌并对一名体力值不小于你的角色造成1点火属性伤害。', xuanwuzhihuang:'玄武之璜', g_xuanwuzhihuang:'玄武之璜', xuanwuzhihuang_duanzao:'寒晶', - xuanwuzhihuang_info:'可用于煅造装备;此牌在你手牌中时,每当你造成伤害,你回复等量的体力', - xuanwuzhihuang_equip1_info:'结束阶段,你可以弃置一张红色牌并回复1点体力', - xuanwuzhihuang_equip2_info:'结束阶段,你可以弃置一张红色牌并回复1点体力', - xuanwuzhihuang_equip3_info:'结束阶段,你可以弃置一张红色牌并回复1点体力', - xuanwuzhihuang_equip4_info:'结束阶段,你可以弃置一张红色牌并回复1点体力', - xuanwuzhihuang_equip5_info:'结束阶段,你可以弃置一张红色牌并回复1点体力', + xuanwuzhihuang_info:'可用于煅造装备;此牌在你手牌中时,每当你造成伤害,你回复等量的体力。', + xuanwuzhihuang_equip1_info:'结束阶段,你可以弃置一张红色牌并回复1点体力。', + xuanwuzhihuang_equip2_info:'结束阶段,你可以弃置一张红色牌并回复1点体力。', + xuanwuzhihuang_equip3_info:'结束阶段,你可以弃置一张红色牌并回复1点体力。', + xuanwuzhihuang_equip4_info:'结束阶段,你可以弃置一张红色牌并回复1点体力。', + xuanwuzhihuang_equip5_info:'结束阶段,你可以弃置一张红色牌并回复1点体力。', huanglinzhicong:'黄麟之琮', g_huanglinzhicong:'黄麟之琮', huanglinzhicong_duanzao:'玄甲', - huanglinzhicong_info:'可用于煅造装备;此牌在你手牌中时,准备阶段,若你没有护甲,你获得1点护甲', - huanglinzhicong_equip1_info:'结束阶段,若你没有护甲,你可以弃置一张黑色牌并获得1点护甲', - huanglinzhicong_equip2_info:'结束阶段,若你没有护甲,你可以弃置一张黑色牌并获得1点护甲', - huanglinzhicong_equip3_info:'结束阶段,若你没有护甲,你可以弃置一张黑色牌并获得1点护甲', - huanglinzhicong_equip4_info:'结束阶段,若你没有护甲,你可以弃置一张黑色牌并获得1点护甲', - huanglinzhicong_equip5_info:'结束阶段,若你没有护甲,你可以弃置一张黑色牌并获得1点护甲', + huanglinzhicong_info:'可用于煅造装备;此牌在你手牌中时,准备阶段,若你没有护甲,你获得1点护甲。', + huanglinzhicong_equip1_info:'结束阶段,若你没有护甲,你可以弃置一张黑色牌并获得1点护甲。', + huanglinzhicong_equip2_info:'结束阶段,若你没有护甲,你可以弃置一张黑色牌并获得1点护甲。', + huanglinzhicong_equip3_info:'结束阶段,若你没有护甲,你可以弃置一张黑色牌并获得1点护甲。', + huanglinzhicong_equip4_info:'结束阶段,若你没有护甲,你可以弃置一张黑色牌并获得1点护甲。', + huanglinzhicong_equip5_info:'结束阶段,若你没有护甲,你可以弃置一张黑色牌并获得1点护甲。', cangchizhibi:'苍螭之璧', g_cangchizhibi:'苍螭之璧', cangchizhibi_duanzao:'灵枢', - cangchizhibi_info:'可用于煅造装备;此牌在你手牌中时,准备阶段,你可以选择至多3名角色横置或重置之', - cangchizhibi_equip1_info:'结束阶段,你可以横置或重置一名角色', - cangchizhibi_equip2_info:'结束阶段,你可以横置或重置一名角色', - cangchizhibi_equip3_info:'结束阶段,你可以横置或重置一名角色', - cangchizhibi_equip4_info:'结束阶段,你可以横置或重置一名角色', - cangchizhibi_equip5_info:'结束阶段,你可以横置或重置一名角色', + cangchizhibi_info:'可用于煅造装备;此牌在你手牌中时,准备阶段,你可以选择至多3名角色横置或重置之。', + cangchizhibi_equip1_info:'结束阶段,你可以横置或重置一名角色。', + cangchizhibi_equip2_info:'结束阶段,你可以横置或重置一名角色。', + cangchizhibi_equip3_info:'结束阶段,你可以横置或重置一名角色。', + cangchizhibi_equip4_info:'结束阶段,你可以横置或重置一名角色。', + cangchizhibi_equip5_info:'结束阶段,你可以横置或重置一名角色。', guisheqi:'龟蛇旗', - guisheqi_info:'出牌阶段对一名角色使用,目标获得1点护甲', + guisheqi_info:'出牌阶段对一名角色使用,目标获得1点护甲。', jiguanfeng:'机关蜂', - jiguanfeng_info:'出牌阶段对一名其他角色使用,目标需打出一张闪,否则非锁定技失效直到下一回合开始,并受到1点伤害', + jiguanfeng_info:'出牌阶段对一名其他角色使用,目标需打出一张闪,否则非锁定技失效直到下一回合开始,并受到1点伤害。', jiguanyuan:'机关鸢', - jiguanyuan_info:'出牌阶段对一名其他角色使用,你将此牌和一张其它牌置于一名其他角色的武将牌上,然后摸一张牌;该角色于下一结束阶段获得武将牌上的牌', + jiguanyuan_info:'出牌阶段对一名其他角色使用,你将此牌和一张其它牌置于一名其他角色的武将牌上,然后摸一张牌;该角色于下一结束阶段获得武将牌上的牌。', jiguantong:'机关火筒', jiguantong_ab:'火筒', - jiguantong_info:'出牌阶段对所有其他角色使用,目标弃置一张手牌,或受到1点火焰伤害;若没有人选择受到伤害,使用者摸一张牌', + jiguantong_info:'出牌阶段对所有其他角色使用,目标弃置一张手牌,或受到1点火焰伤害;若没有人选择受到伤害,使用者摸一张牌。', jiutiansuanchi:'九天算尺', - jiutiansuanchi_info:'每当你使用杀造成伤害,你可以弃置一张牌并展示受伤害角色的一张手牌,若此牌与你弃置的牌花色或点数相同,此杀的伤害+2', + jiutiansuanchi_info:'每当你使用杀造成伤害,你可以弃置一张牌并展示受伤害角色的一张手牌,若此牌与你弃置的牌花色或点数相同,此杀的伤害+2。', shenmiguo:'神秘果', - shenmiguo_info:'出牌阶段内,当你使用一张基本牌或普通锦囊牌后使用,令此牌再结算一次。每阶段限用一次', + shenmiguo_info:'出牌阶段内,当你使用一张基本牌或普通锦囊牌后使用,令此牌再结算一次。每阶段限用一次。', qinglianxindeng:'青莲心灯', - qinglianxindeng_info:'你防止锦囊牌造成的伤害', + qinglianxindeng_info:'你防止锦囊牌造成的伤害。', hslingjian_xuanfengzhiren_duanzao:'风刃', hslingjian_xuanfengzhiren_duanzao2:'风', - hslingjian_xuanfengzhiren_equip1_info:'每当你用杀造成一次伤害,受伤害角色随机弃置一张牌', - hslingjian_xuanfengzhiren_equip2_info:'每当你受到杀造成的伤害,伤害来源随机弃置一张牌', - hslingjian_xuanfengzhiren_equip3_info:'当你于回合外失去牌后,你本回合的防御距离+1', - hslingjian_xuanfengzhiren_equip4_info:'当你于回合内失去牌后,你本回合的进攻距离+1', - hslingjian_xuanfengzhiren_equip5_info:'出牌阶段限一次,你可以弃置一张牌,然后随机弃置一名其他角色的一张牌', + hslingjian_xuanfengzhiren_equip1_info:'每当你用杀造成一次伤害,受伤害角色随机弃置一张牌。', + hslingjian_xuanfengzhiren_equip2_info:'每当你受到杀造成的伤害,伤害来源随机弃置一张牌。', + hslingjian_xuanfengzhiren_equip3_info:'当你于回合外失去牌后,你本回合的防御距离+1。', + hslingjian_xuanfengzhiren_equip4_info:'当你于回合内失去牌后,你本回合的进攻距离+1。', + hslingjian_xuanfengzhiren_equip5_info:'出牌阶段限一次,你可以弃置一张牌,然后随机弃置一名其他角色的一张牌。', hslingjian_zhongxinghujia_duanzao:'重甲', hslingjian_zhongxinghujia_duanzao2:'护', - hslingjian_zhongxinghujia_equip1_info:'每当你用杀造成一次伤害,你可以随机装备一件防具牌', - hslingjian_zhongxinghujia_equip2_info:'每当你受到杀造成的伤害,你可以弃置伤害来源的防具牌', - hslingjian_zhongxinghujia_equip3_info:'当你的装备区内有防具牌时,你的防御距离+1', - hslingjian_zhongxinghujia_equip4_info:'当你的装备区内有防具牌时,你的进攻距离+1', - hslingjian_zhongxinghujia_equip5_info:'出牌阶段限一次,你可以弃置两张牌,然后令一名角色随机装备一件防具', + hslingjian_zhongxinghujia_equip1_info:'每当你用杀造成一次伤害,你可以随机装备一件防具牌。', + hslingjian_zhongxinghujia_equip2_info:'每当你受到杀造成的伤害,你可以弃置伤害来源的防具牌。', + hslingjian_zhongxinghujia_equip3_info:'当你的装备区内有防具牌时,你的防御距离+1。', + hslingjian_zhongxinghujia_equip4_info:'当你的装备区内有防具牌时,你的进攻距离+1。', + hslingjian_zhongxinghujia_equip5_info:'出牌阶段限一次,你可以弃置两张牌,然后令一名角色随机装备一件防具。', hslingjian_jinjilengdong_duanzao:'冰冻', hslingjian_jinjilengdong_duanzao2:'冰', - hslingjian_jinjilengdong_equip1_info:'每当你用杀造成一次伤害,你可以令目标摸两张牌并翻面', - hslingjian_jinjilengdong_equip2_info:'每当你受到杀造成的伤害,你可以令伤害来源摸两张牌并翻面', - hslingjian_jinjilengdong_equip3_info:'你的武将牌背面朝上时防御距离+2', - hslingjian_jinjilengdong_equip4_info:'你的武将牌背面朝上时进攻距离+2', - hslingjian_jinjilengdong_equip5_info:'回合结束后,若你的武将牌正面朝上,你可以与一名武将牌正面朝上的其他角色同时翻面,然后各摸两张牌', + hslingjian_jinjilengdong_equip1_info:'每当你用杀造成一次伤害,你可以令目标摸两张牌并翻面。', + hslingjian_jinjilengdong_equip2_info:'每当你受到杀造成的伤害,你可以令伤害来源摸两张牌并翻面。', + hslingjian_jinjilengdong_equip3_info:'你的武将牌背面朝上时防御距离+2。', + hslingjian_jinjilengdong_equip4_info:'你的武将牌背面朝上时进攻距离+2。', + hslingjian_jinjilengdong_equip5_info:'回合结束后,若你的武将牌正面朝上,你可以与一名武将牌正面朝上的其他角色同时翻面,然后各摸两张牌。', hslingjian_yinmilichang_duanzao:'隐力', hslingjian_yinmilichang_duanzao2:'隐', - hslingjian_yinmilichang_equip1_info:'每当你用杀造成一次伤害,你可以令一名其他角色获得潜行直到其下一回合开始', - hslingjian_yinmilichang_equip2_info:'每当你受到一次伤害,你本回合内获得潜行', - hslingjian_yinmilichang_equip3_info:'当你的体力值为1时,你的防御距离+1', - hslingjian_yinmilichang_equip4_info:'当你的体力值为1时,你的进攻距离+1', - hslingjian_yinmilichang_equip5_info:'当你没有手牌时,你不能成为杀或决斗的目标', + hslingjian_yinmilichang_equip1_info:'每当你用杀造成一次伤害,你可以令一名其他角色获得潜行直到其下一回合开始。', + hslingjian_yinmilichang_equip2_info:'每当你受到一次伤害,你本回合内获得潜行。', + hslingjian_yinmilichang_equip3_info:'当你的体力值为1时,你的防御距离+1。', + hslingjian_yinmilichang_equip4_info:'当你的体力值为1时,你的进攻距离+1。', + hslingjian_yinmilichang_equip5_info:'当你没有手牌时,你不能成为杀或决斗的目标。', hslingjian_xingtigaizao_duanzao:'移形', hslingjian_xingtigaizao_duanzao2:'形', - hslingjian_xingtigaizao_equip1_info:'每当你用杀造成一次伤害,你摸一张牌', - hslingjian_xingtigaizao_equip2_info:'每当你受到杀造成的伤害,你摸一张牌', - hslingjian_xingtigaizao_equip3_info:'你的防御距离+1,进攻距离-1', - hslingjian_xingtigaizao_equip4_info:'你的防御距离-1,进攻距离+1', - hslingjian_xingtigaizao_equip5_info:'你于摸牌阶段额外摸一张牌;你的手牌上限-1', + hslingjian_xingtigaizao_equip1_info:'每当你用杀造成一次伤害,你摸一张牌。', + hslingjian_xingtigaizao_equip2_info:'每当你受到杀造成的伤害,你摸一张牌。', + hslingjian_xingtigaizao_equip3_info:'你的防御距离+1,进攻距离-1。', + hslingjian_xingtigaizao_equip4_info:'你的防御距离-1,进攻距离+1。', + hslingjian_xingtigaizao_equip5_info:'你于摸牌阶段额外摸一张牌;你的手牌上限-1。', hslingjian_shengxiuhaojiao_duanzao:'号角', hslingjian_shengxiuhaojiao_duanzao2:'角', - hslingjian_shengxiuhaojiao_equip1_info:'有嘲讽的角色不能闪避你的杀', - hslingjian_shengxiuhaojiao_equip2_info:'有嘲讽的角色不能对你使用杀', - hslingjian_shengxiuhaojiao_equip3_info:'若你的手牌数大于你的体力值,你的防御距离+1', - hslingjian_shengxiuhaojiao_equip4_info:'若你的手牌数大于你的体力值,你的进攻距离+1', - hslingjian_shengxiuhaojiao_equip5_info:'出牌阶段限一次,你可以弃置两张牌,然后令一名角色获得或解除嘲讽', + hslingjian_shengxiuhaojiao_equip1_info:'有嘲讽的角色不能闪避你的杀。', + hslingjian_shengxiuhaojiao_equip2_info:'有嘲讽的角色不能对你使用杀。', + hslingjian_shengxiuhaojiao_equip3_info:'若你的手牌数大于你的体力值,你的防御距离+1。', + hslingjian_shengxiuhaojiao_equip4_info:'若你的手牌数大于你的体力值,你的进攻距离+1。', + hslingjian_shengxiuhaojiao_equip5_info:'出牌阶段限一次,你可以弃置两张牌,然后令一名角色获得或解除嘲讽。', hslingjian_shijianhuisu_duanzao:'回溯', hslingjian_shijianhuisu_duanzao2:'溯', - hslingjian_shijianhuisu_equip1_info:'当你装备一张防具牌时,你摸一张牌', - hslingjian_shijianhuisu_equip2_info:'当你装备一张武器牌时,你摸一张牌', - hslingjian_shijianhuisu_equip3_info:'当你的装备区内没有其他牌时,你的防御距离+1', - hslingjian_shijianhuisu_equip4_info:'当你的装备区内没有其他牌时,你的进攻距离+1', - hslingjian_shijianhuisu_equip5_info:'出牌阶段限一次,你可以弃置一张牌,然后令一名其他角色将其装备区内的牌收回手牌', + hslingjian_shijianhuisu_equip1_info:'当你装备一张防具牌时,你摸一张牌。', + hslingjian_shijianhuisu_equip2_info:'当你装备一张武器牌时,你摸一张牌。', + hslingjian_shijianhuisu_equip3_info:'当你的装备区内没有其他牌时,你的防御距离+1。', + hslingjian_shijianhuisu_equip4_info:'当你的装备区内没有其他牌时,你的进攻距离+1。', + hslingjian_shijianhuisu_equip5_info:'出牌阶段限一次,你可以弃置一张牌,然后令一名其他角色将其装备区内的牌收回手牌。', _lingjianduanzao:'煅造', - _lingjianduanzao_info:'出牌阶段,你可以将一张装备牌和一张可煅造的牌合成为一件强化装备,并装备给距离1以内的一名角色', + _lingjianduanzao_info:'出牌阶段,你可以将一张装备牌和一张可煅造的牌合成为一件强化装备,并装备给距离1以内的一名角色。', jiguanshu:'机关鼠', - jiguanshu_info:'出牌阶段对自己使用,用随机祭器强化装备区内的一张随机装备,然后用随机零件强化其余的装备', + jiguanshu_info:'出牌阶段对自己使用,用随机祭器强化装备区内的一张随机装备,然后用随机零件强化其余的装备。', lingjiandai:'零件袋', - lingjiandai_info:'出牌阶段对自己使用,获得3张随机零件', + lingjiandai_info:'出牌阶段对自己使用,获得3张随机零件。', mujiaren:'木甲人', - mujiaren_info:'出牌阶段限用一次,将你手牌中的非基本牌(含此张)替换为随机的机关牌', + mujiaren_info:'出牌阶段限用一次,将你手牌中的非基本牌(含此张)替换为随机的机关牌。', jiguanyaoshu:'机关要术', jiguanyaoshu_skill:'巧匠', - jiguanyaoshu_skill_info:'每当你于回合外失去装备区内的牌,你获得一个随机零件', - jiguanyaoshu_info:'出牌阶段对距离1以内的一名角色使用,目标随机装备一件装备牌并获得技能巧匠(每当你于回合外失去装备区内的牌,你获得一个随机零件)', + jiguanyaoshu_skill_info:'每当你于回合外失去装备区内的牌,你获得一个随机零件。', + jiguanyaoshu_info:'出牌阶段对距离1以内的一名角色使用,目标随机装备一件装备牌并获得技能巧匠(每当你于回合外失去装备区内的牌,你获得一个随机零件)。', hslingjian:'零件', hslingjian_xuanfengzhiren:'旋风之刃', - hslingjian_xuanfengzhiren_info:'可用于煅造装备;随机弃置一名角色的一张牌', + hslingjian_xuanfengzhiren_info:'可用于煅造装备;随机弃置一名角色的一张牌。', hslingjian_zhongxinghujia:'重型护甲', - hslingjian_zhongxinghujia_info:'可用于煅造装备;令一名角色装备一件随机防具,然后随机弃置其一张手牌', + hslingjian_zhongxinghujia_info:'可用于煅造装备;令一名角色装备一件随机防具,然后随机弃置其一张手牌。', hslingjian_jinjilengdong:'紧急冷冻', hslingjian_jinjilengdong_bg:'冻', - hslingjian_jinjilengdong_info:'可用于煅造装备;令一名武将牌正面朝上的其他角色获得2点护甲并翻面,该角色不能使用卡牌,也不能成为卡牌的目标直到武将牌翻回正面', + hslingjian_jinjilengdong_info:'可用于煅造装备;令一名武将牌正面朝上的其他角色获得2点护甲并翻面,该角色不能使用卡牌,也不能成为卡牌的目标直到武将牌翻回正面。', hslingjian_yinmilichang:'隐秘力场', - hslingjian_yinmilichang_info:'可用于煅造装备;令一名其他角色获得技能潜行,直到其下一回合开始', + hslingjian_yinmilichang_info:'可用于煅造装备;令一名其他角色获得技能潜行,直到其下一回合开始。', hslingjian_xingtigaizao:'型体改造', - hslingjian_xingtigaizao_info:'可用于煅造装备;摸一张牌,本回合手牌上限-1', + hslingjian_xingtigaizao_info:'可用于煅造装备;摸一张牌,本回合手牌上限-1。', hslingjian_shengxiuhaojiao:'生锈号角', - hslingjian_shengxiuhaojiao_info:'可用于煅造装备;令一名角色获得技能嘲讽,直到其下一回合开始', + hslingjian_shengxiuhaojiao_info:'可用于煅造装备;令一名角色获得技能嘲讽,直到其下一回合开始。', hslingjian_shijianhuisu:'时间回溯', - hslingjian_shijianhuisu_info:'可用于煅造装备;令一名其他角色将其装备牌收回手牌', + hslingjian_shijianhuisu_info:'可用于煅造装备;令一名其他角色将其装备牌收回手牌。', hslingjian_chaofeng:'嘲讽', - hslingjian_chaofeng_info:'锁定技,与你相邻的角色只能选择你为出杀目标', + hslingjian_chaofeng_info:'锁定技,与你相邻的角色只能选择你为出杀目标。', qinglonglingzhu:'青龙灵珠', qinglonglingzhu_ab:'灵珠', - qinglonglingzhu_info:'每当你造成一次属性伤害,你可以获得对方的一张牌', + qinglonglingzhu_info:'每当你造成一次属性伤害,你可以获得对方的一张牌。', xingjunyan:'星君眼', - xingjunyan_info:'你的杀造成的伤害+1;杀对你造成的伤害+1', + xingjunyan_info:'你的杀造成的伤害+1;杀对你造成的伤害+1。', guiyanfadao:'鬼眼法刀', guiyanfadao_bg:'眼', - guiyanfadao_info:'每当你使用杀命中目标,你可以防止伤害,改为令目标失去1点体力', + guiyanfadao_info:'每当你使用杀命中目标,你可以防止伤害,改为令目标失去1点体力。', tianxianjiu:'天仙酒', tianxianjiu_bg:'仙', - tianxianjiu_info:'出牌阶段对自己使用,你使用的下一张杀造成伤害后可以摸两张牌;濒死阶段,对自己使用,回复1点体力', + tianxianjiu_info:'出牌阶段对自己使用,你使用的下一张杀造成伤害后可以摸两张牌;濒死阶段,对自己使用,回复1点体力。', // xiangyuye:'翔羽叶', - // xiangyuye_info:'出牌阶段,对一名攻击范围外的角色使用,令其弃置一张黑色手牌或失去1点体力', + // xiangyuye_info:'出牌阶段,对一名攻击范围外的角色使用,令其弃置一张黑色手牌或失去1点体力。', // huanpodan:'还魄丹', // huanpodan_bg:'魄', - // huanpodan_info:'出牌阶段对一名角色使用,在目标即将死亡时防止其死亡,改为令其弃置所有牌,将体力值回复至1并摸一张牌', + // huanpodan_info:'出牌阶段对一名角色使用,在目标即将死亡时防止其死亡,改为令其弃置所有牌,将体力值回复至1并摸一张牌。', // huanpodan_skill:'还魄丹', // huanpodan_skill_bg:'丹', - // huanpodan_skill_info:'防止一次死亡,改为弃置所有牌,将体力值变为1并摸一张牌', + // huanpodan_skill_info:'防止一次死亡,改为弃置所有牌,将体力值变为1并摸一张牌。', ximohu:'吸魔壶', ximohu_bg:'魔', - // ximohu_info:'锁定技,你将即将受到的雷属性伤害转化为你的体力值', + // ximohu_info:'锁定技,你将即将受到的雷属性伤害转化为你的体力值。', sadengjinhuan:'萨登荆环', sadengjinhuan_ab:'荆环', - sadengjinhuan_info:'当你的杀被闪避后,可以进行一次判定,若结果为红色目标需再打出一张闪', + sadengjinhuan_info:'当你的杀被闪避后,可以进行一次判定,若结果为红色目标需再打出一张闪。', sadengjinhuan_bg:'荆', qipoguyu:'奇魄古玉', xujin:'蓄劲', xujin2:'蓄劲', - // qipoguyu_info:'装备后获得蓄劲技能', - xujin_info:'回合开始前,若你的蓄劲标记数小于当前的体力值,你可以跳过此回合,并获得一枚蓄劲标记。锁定技,每当你即将造成伤害,你令此伤害+X,然后弃置一枚蓄劲标记,X为你拥有的蓄劲标记数', + // qipoguyu_info:'装备后获得蓄劲技能。', + xujin_info:'回合开始前,若你的蓄劲标记数小于当前的体力值,你可以跳过此回合,并获得一枚蓄劲标记。锁定技,每当你即将造成伤害,你令此伤害+X,然后弃置一枚蓄劲标记,X为你拥有的蓄劲标记数。', guilingzhitao:'归灵指套', nigong:'逆攻', nigong2:'逆攻', nigong3:'逆攻', nigong4:'逆攻', - guilingzhitao_info:'每当你受到1点伤害,你获得一个逆攻标记,标记数不能超过4。出牌阶段,你可以弃置所有逆攻标记并令对一名其他角色造成标记数一半的伤害(若非整数则向下取整并摸一张牌)', - nigong_info:'每当你受到1点伤害,你获得一个逆攻标记,标记数不能超过4。出牌阶段,你可以弃置所有逆攻标记并令对一名其他角色造成标记数一半的伤害(若非整数则向下取整并摸一张牌)', + guilingzhitao_info:'每当你受到1点伤害,你获得一个逆攻标记,标记数不能超过4。出牌阶段,你可以弃置所有逆攻标记并令对一名其他角色造成标记数一半的伤害(若非整数则向下取整并摸一张牌)。', + nigong_info:'每当你受到1点伤害,你获得一个逆攻标记,标记数不能超过4。出牌阶段,你可以弃置所有逆攻标记并令对一名其他角色造成标记数一半的伤害(若非整数则向下取整并摸一张牌)。', baihupifeng:'白狐披风', baihupifeng_bg:'狐', - baihupifeng_info:'结束阶段,若你的体力值是全场最小的之一,你可以回复1点体力', + baihupifeng_info:'结束阶段,若你的体力值是全场最小的之一,你可以回复1点体力。', fengxueren:'封雪刃', fengxueren_bg:'雪', - fengxueren_info:'你使用杀击中目标后,若目标武将牌正面朝上,你可以防止伤害,然后令目标摸一张牌并翻面', + fengxueren_info:'你使用杀击中目标后,若目标武将牌正面朝上,你可以防止伤害,然后令目标摸一张牌并翻面。', chilongya:'赤龙牙', - chilongya_info:'锁定技,你的火属性伤害+1', + chilongya_info:'锁定技,你的火属性伤害+1。', daihuofenglun:'带火风轮', daihuofenglun_ab:'风轮', daihuofenglun_bg:'轮', - daihuofenglun_info:'你的进攻距离+2,你的防御距离-1', + daihuofenglun_info:'你的进攻距离+2,你的防御距离-1。', xiayuncailing:'霞云彩绫', xiayuncailing_ab:'彩绫', xiayuncailing_bg:'云', - xiayuncailing_info:'你的进攻距离-1,你的防御距离+2', + xiayuncailing_info:'你的进攻距离-1,你的防御距离+2。', shentoumianju:'神偷面具', shentoumianju_bg:'偷', - shentoumianju_info:'出牌阶段,你可以指定一名手牌比你多的角色,弃置一张手牌并进行一次判定,若结果不为梅花,你获得其一张手牌', + shentoumianju_info:'出牌阶段,你可以指定一名手牌比你多的角色,弃置一张手牌并进行一次判定,若结果不为梅花,你获得其一张手牌。', shentou:'神偷', - shentou_info:'出牌阶段,你可以进行一次判定,若结果不为梅花,你获得任意一名角色的一张手牌', + shentou_info:'出牌阶段,你可以进行一次判定,若结果不为梅花,你获得任意一名角色的一张手牌。', xianluhui:'仙炉灰', - xianluhui_info:'令所有已受伤角色获得1点护甲', + xianluhui_info:'令所有已受伤角色获得1点护甲。', caoyao:'草药', caoyao_info:'出牌阶段,对距离为1以内的角色使用,回复1点体力。', langeguaiyi:'蓝格怪衣', langeguaiyi_bg:'格', - langeguaiyi_info:'出牌阶段限一次,你可以进行一次判定,然后按花色执行以下效果。红桃:你回复1点体力;方片:你摸一张牌;梅花:你令一名随机敌方角色随机弃置一张牌;黑桃:无事发生', + langeguaiyi_info:'出牌阶段限一次,你可以进行一次判定,然后按花色执行以下效果。红桃:你回复1点体力;方片:你摸一张牌;梅花:你令一名随机敌方角色随机弃置一张牌;黑桃:无事发生。', longfan:'龙帆', - longfan_info:'出牌阶段限一次,你可以进行一次判定,然后按花色执行以下效果。红桃:你回复1点体力;方片:你摸一张牌;梅花:你令一名随机敌方角色随机弃置一张牌;黑桃:无事发生', - // longfan_info:'0000:翻面;1111:弃手牌;2222:弃装备牌;3333:受伤害;4444:失去体力;5555:连环;6666:摸牌;7777:回复体力;8888:弃置判定牌;9999:置衡', + longfan_info:'出牌阶段限一次,你可以进行一次判定,然后按花色执行以下效果。红桃:你回复1点体力;方片:你摸一张牌;梅花:你令一名随机敌方角色随机弃置一张牌;黑桃:无事发生。', + // longfan_info:'0000:翻面;1111:弃手牌;2222:弃装备牌;3333:受伤害;4444:失去体力;5555:连环;6666:摸牌;7777:回复体力;8888:弃置判定牌;9999:置衡。', guiyoujie:'鬼幽结', guiyoujie_bg:'结', - guiyoujie_info:'出牌阶段,对一名其他角色使用。若判定结果为黑色,其失去1点体力并随机弃置一张牌', + guiyoujie_info:'出牌阶段,对一名其他角色使用。若判定结果为黑色,其失去1点体力并随机弃置一张牌。', yufulu:'御夫录', - yufulu_info:'出牌阶段,可弃置一张武器牌令一名角色受到1点伤害,然后该角色获得此武器牌', + yufulu_info:'出牌阶段,可弃置一张武器牌令一名角色受到1点伤害,然后该角色获得此武器牌。', touzhi:'投掷', - touzhi_info:'出牌阶段,可弃置一张武器牌令一名角色受到1点伤害,然后该角色获得此武器牌', + touzhi_info:'出牌阶段,可弃置一张武器牌令一名角色受到1点伤害,然后该角色获得此武器牌。', xixueguizhihuan:'吸血鬼指环', xixueguizhihuan_ab:'血环', - xixueguizhihuan_info:'锁定技,每当你使用杀造成1点伤害,你回复1点体力', + xixueguizhihuan_info:'锁定技,每当你使用杀造成1点伤害,你回复1点体力。', xixue:'吸血', - xixue_info:'锁定技,每当你使用杀造成1点伤害,你回复1点体力', + xixue_info:'锁定技,每当你使用杀造成1点伤害,你回复1点体力。', zhufangshenshi:'祠符', - zhufangshenshi_info:'出牌阶段,对一名其他角色使用,本回合内对其使用卡牌无视距离,结算后摸一张牌', + zhufangshenshi_info:'出牌阶段,对一名其他角色使用,本回合内对其使用卡牌无视距离,结算后摸一张牌。', jingleishan:'惊雷闪', jingleishan_info:'出牌阶段,对所有其他角色使用。每名目标角色需打出一张【杀】,否则受到1点雷电伤害。', chiyuxi:'炽羽袭', chiyuxi_info:'出牌阶段,对所有其他角色使用。每名目标角色需打出一张【闪】,否则受到1点火焰伤害。', guangshatianyi:'光纱天衣', guangshatianyi_bg:'纱', - guangshatianyi_info:'锁定技,每当你即将受到伤害,有三分之一的概率令伤害减一', + guangshatianyi_info:'锁定技,每当你即将受到伤害,有三分之一的概率令伤害减一。', sifeizhenmian:'四非真面', - sifeizhenmian_info:'出牌阶段限一次,你可以令一名有手牌的其他角色进行一次判定,若结果为不为红桃且目标有可用的手牌,目标随机使用一张手牌(随机指定目标)', + sifeizhenmian_info:'出牌阶段限一次,你可以令一名有手牌的其他角色进行一次判定,若结果为不为红桃且目标有可用的手牌,目标随机使用一张手牌(随机指定目标)。', yiluan:'意乱', - yiluan_info:'出牌阶段限一次,你可以令一名有手牌的其他角色进行一次判定,若结果为不为红桃且目标有可用的手牌,目标随机使用一张手牌(随机指定目标)', + yiluan_info:'出牌阶段限一次,你可以令一名有手牌的其他角色进行一次判定,若结果为不为红桃且目标有可用的手牌,目标随机使用一张手牌(随机指定目标)。', donghuangzhong:'东皇钟', xuanyuanjian:'轩辕剑', xuanyuanjian2:'轩辕剑', @@ -5310,21 +5310,21 @@ game.import('card',function(lib,game,ui,get,ai,_status){ kongxin:'控心', lianhua:'炼化', // dujian:'毒箭', - // dujian_info:'出牌阶段,对一名有手牌或装备牌的角色使用,令其展示一张手牌,若与你选择的手牌颜色相同,其失去1点体力', - lianhua_info:'出牌阶段限一次,你可以弃置两张炼妖壶中的牌,从牌堆中获得一张与弃置的牌类别均不相同的牌', + // dujian_info:'出牌阶段,对一名有手牌或装备牌的角色使用,令其展示一张手牌,若与你选择的手牌颜色相同,其失去1点体力。', + lianhua_info:'出牌阶段限一次,你可以弃置两张炼妖壶中的牌,从牌堆中获得一张与弃置的牌类别均不相同的牌。', shouna:'收纳', - shouna_info:'出牌阶段限一次,你可以弃置一张手牌,并将一名其他角色的一张手牌置入炼妖壶', - donghuangzhong_info:'结束阶段,你可以弃置一张红色手牌,并选择一名角色将一张随机单体延时锦囊置入其判定区', - xuanyuanjian_info:'装备时获得1点护甲;每当你即将造成一次伤害,你令此伤害加一并变为雷属性,并在伤害结算后失去1点体力。任何时候,若你体力值不超过2,则立即失去轩辕剑', - pangufu_info:'锁定技,每当你造成一次伤害,受伤角色须弃置一张牌', - haotianta_info:'锁定技,任意一名角色进行判定前,你观看牌堆顶的2张牌,并选择一张作为判定结果,此结果不可被更改,也不能触发技能', - shennongding_info:'出牌阶段,你可以弃置两张手牌,然后回复1点体力。每阶段限一次', - kongdongyin_info:'令你抵挡一次死亡,将体力回复至1,并摸一张牌,发动后进入弃牌堆', - kunlunjingc_info:'出牌阶段限一次,你可以观看牌堆顶的三张牌,然后用一张手牌替换其中的一张', - nvwashi_info:'当一名角色濒死时,若你的体力值大于1,你可以失去1点体力并令其回复1点体力', - kongxin_info:'出牌阶段限一次,你可以与一名其他角色进行拼点,若你赢,你可以指定另一名角色视为对方对该角色使用一张杀,否则对方可弃置你一张牌', - fuxiqin_info:'出牌阶段限一次,你可以与一名其他角色进行拼点,若你赢,你可以指定另一名角色视为对方对该角色使用一张杀,否则对方可弃置你一张牌', - lianyaohu_info:'出牌阶段各限一次,你可以选择一项:1.弃置一张手牌,并将一名其他角色的一张手牌置入炼妖壶;2.弃置两张炼妖壶中的牌,从牌堆中获得一张与弃置的牌类别均不相同的牌', + shouna_info:'出牌阶段限一次,你可以弃置一张手牌,并将一名其他角色的一张手牌置入炼妖壶。', + donghuangzhong_info:'结束阶段,你可以弃置一张红色手牌,并选择一名角色将一张随机单体延时锦囊置入其判定区。', + xuanyuanjian_info:'装备时获得1点护甲;每当你即将造成一次伤害,你令此伤害加一并变为雷属性,并在伤害结算后失去1点体力。任何时候,若你体力值不超过2,则立即失去轩辕剑。', + pangufu_info:'锁定技,每当你造成一次伤害,受伤角色须弃置一张牌。', + haotianta_info:'锁定技,任意一名角色进行判定前,你观看牌堆顶的2张牌,并选择一张作为判定结果,此结果不可被更改,也不能触发技能。', + shennongding_info:'出牌阶段,你可以弃置两张手牌,然后回复1点体力。每阶段限一次。', + kongdongyin_info:'令你抵挡一次死亡,将体力回复至1,并摸一张牌,发动后进入弃牌堆。', + kunlunjingc_info:'出牌阶段限一次,你可以观看牌堆顶的三张牌,然后用一张手牌替换其中的一张。', + nvwashi_info:'当一名角色濒死时,若你的体力值大于1,你可以失去1点体力并令其回复1点体力。', + kongxin_info:'出牌阶段限一次,你可以与一名其他角色进行拼点,若你赢,你可以指定另一名角色视为对方对该角色使用一张杀,否则对方可弃置你一张牌。', + fuxiqin_info:'出牌阶段限一次,你可以与一名其他角色进行拼点,若你赢,你可以指定另一名角色视为对方对该角色使用一张杀,否则对方可弃置你一张牌。', + lianyaohu_info:'出牌阶段各限一次,你可以选择一项:1.弃置一张手牌,并将一名其他角色的一张手牌置入炼妖壶;2.弃置两张炼妖壶中的牌,从牌堆中获得一张与弃置的牌类别均不相同的牌。', }, list:[ ['heart',1,'hufu'], From 8576f3264f71f3f2258e7ba4547777a83dcf17b1 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 19:51:53 +0800 Subject: [PATCH 015/302] minor fix for mode --- mode/stone.js | 578 +++++++++++++++++++++++++------------------------- 1 file changed, 289 insertions(+), 289 deletions(-) diff --git a/mode/stone.js b/mode/stone.js index 56b701296..b173d0a10 100644 --- a/mode/stone.js +++ b/mode/stone.js @@ -9350,328 +9350,328 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_weilun:'维纶', stone_fushi:'缚誓', - stone_fushi_info:'你出场时,为所有友方角色回复所有体力值', + stone_fushi_info:'你出场时,为所有友方角色回复所有体力值。', stone_mieshi:'灭世', - stone_mieshi_info:'你出场时,对所有其他随从造成2点伤害,然后弃置己方主将的所有手牌', + stone_mieshi_info:'你出场时,对所有其他随从造成2点伤害,然后弃置己方主将的所有手牌。', stone_shixu:'时序', - stone_shixu_info:'你出场的回合内,己方主将获得4点行动值', + stone_shixu_info:'你出场的回合内,己方主将获得4点行动值。', stone_chenshui:'沉睡', - stone_chenshui_info:'在你的结束阶段,令己方主将获得一张梦境牌', + stone_chenshui_info:'在你的结束阶段,令己方主将获得一张梦境牌。', stone_mowang:'魔网', - stone_mowang_info:'己方法术对主将伤害+2,对随从伤害+4', + stone_mowang_info:'己方法术对主将伤害+2,对随从伤害+4。', stone_zhiyin:'指引', - stone_zhiyin_info:'每当己方主将使用一张法术牌,将一张火球术置于其手牌', + stone_zhiyin_info:'每当己方主将使用一张法术牌,将一张火球术置于其手牌。', stone_bianshen:'变身', - stone_bianshen_info:'你出场时,若己方主将职业为术士,则代之成为新的主将;若己变身,则改为令你召唤的地狱火的初始手牌数和体力值+1', + stone_bianshen_info:'你出场时,若己方主将职业为术士,则代之成为新的主将;若己变身,则改为令你召唤的地狱火的初始手牌数和体力值+1。', stone_lianyu:'炼狱', - stone_lianyu_info:'你的职业技能改为召唤一个地狱火', + stone_lianyu_info:'你的职业技能改为召唤一个地狱火。', stone_lianji:'连击', - stone_lianji_info:'每当己方主将召唤一个随从,便增加1点体力和体力上限并摸一张牌', + stone_lianji_info:'每当己方主将召唤一个随从,便增加1点体力和体力上限并摸一张牌。', stone_shenyu:'神谕', - stone_shenyu_info:'你出场时,己方主将可以选择一项:召唤两个嘲讽树人,或令所有其他随从增加1点体力和体力上限并摸两张牌', + stone_shenyu_info:'你出场时,己方主将可以选择一项:召唤两个嘲讽树人,或令所有其他随从增加1点体力和体力上限并摸两张牌。', stone_fuchou:'复仇', - stone_fuchou_info:'你死亡后,视为己方主将使用了一张复仇之怒', + stone_fuchou_info:'你死亡后,视为己方主将使用了一张复仇之怒。', stone_shenyou:'神佑', - stone_shenyou_info:'己方主将的职业技能和法术的治疗效果翻倍', + stone_shenyou_info:'己方主将的职业技能和法术的治疗效果翻倍。', stone_jinu:'激怒', - stone_jinu_info:'摸牌阶段,若你己受伤,则额外摸两张牌', + stone_jinu_info:'摸牌阶段,若你己受伤,则额外摸两张牌。', spell_shenshengxinxing:'神圣新星', - spell_shenshengxinxing_info:'对所有敌方角色造成1点伤害,令所有友方角色回复1点体力', + spell_shenshengxinxing_info:'对所有敌方角色造成1点伤害,令所有友方角色回复1点体力。', spell_shengguangzhadan:'圣光炸弹', - spell_shengguangzhadan_info:'对所有随从造成等同于其手牌数的伤害', + spell_shengguangzhadan_info:'对所有随从造成等同于其手牌数的伤害。', spell_maizang:'埋葬', - spell_maizang_info:'令一名敌方随从死亡(不触发死亡技能),并将一张与该随从同名的随从洗入你的牌库', + spell_maizang_info:'令一名敌方随从死亡(不触发死亡技能),并将一张与该随从同名的随从洗入你的牌库。', spell_xinlingshijie:'心灵视界', - spell_xinlingshijie_info:'将一张敌方主将手牌的复制置于你的手牌', + spell_xinlingshijie_info:'将一张敌方主将手牌的复制置于你的手牌。', spell_naluzhiguang:'纳鲁之光', - spell_naluzhiguang_info:'恢复1点体力值,若目标仍处于受伤状态,则召唤一名圣光护卫', + spell_naluzhiguang_info:'恢复1点体力值,若目标仍处于受伤状态,则召唤一名圣光护卫。', spell_zhiliaozhihuan:'治疗之环', - spell_zhiliaozhihuan_info:'令所有随从回复3点体力', + spell_zhiliaozhihuan_info:'令所有随从回复3点体力。', spell_zhenyanshu:'真言术', - spell_zhenyanshu_info:'令一名随从增加1点体力和体力上限;从牌库中获得一张牌', + spell_zhenyanshu_info:'令一名随从增加1点体力和体力上限;从牌库中获得一张牌。', spell_enzeshu:'恩泽术', - spell_enzeshu_info:'令一名随从增加3点体力和体力上限', + spell_enzeshu_info:'令一名随从增加3点体力和体力上限。', spell_anyingxingtai:'暗影形态', priest_anyingxingtai:'暗影形态', - spell_anyingxingtai_info:'你的职业技能改为造成1点伤害,若已进入暗影形态,则改为造成2点伤害', + spell_anyingxingtai_info:'你的职业技能改为造成1点伤害,若已进入暗影形态,则改为造成2点伤害。', spell_kuaisuzhiliao:'快速治疗', - spell_kuaisuzhiliao_info:'回复2点体力', + spell_kuaisuzhiliao_info:'回复2点体力。', spell_xinlinghanbao:'心灵撼爆', - spell_xinlinghanbao_info:'对敌方主将造成2点伤害', + spell_xinlinghanbao_info:'对敌方主将造成2点伤害。', spell_kongxinshu:'控心术', - spell_kongxinshu_info:'复制敌方牌库中的一张随从,将其置入战场', + spell_kongxinshu_info:'复制敌方牌库中的一张随从,将其置入战场。', stone_shengguanghuwei:'圣光护卫', priest_shengguang:'圣光', - priest_shengguang_info:'每当一名随从获得治疗,摸一张牌', + priest_shengguang_info:'每当一名随从获得治疗,摸一张牌。', spell_nuxi:'怒袭', - spell_nuxi_info:'造成1点伤害,获得2点护甲', + spell_nuxi_info:'造成1点伤害,获得2点护甲。', spell_dunpaimengji:'盾牌猛击', - spell_dunpaimengji_info:'对一名随从造成等同于你护甲值的伤害', + spell_dunpaimengji_info:'对一名随从造成等同于你护甲值的伤害。', spell_zhansha:'斩杀', - spell_zhansha_info:'令一名已受伤的敌方随从死亡', + spell_zhansha_info:'令一名已受伤的敌方随从死亡。', spell_nuhuozhongshao:'怒火中烧', - spell_nuhuozhongshao_info:'对一名随从造成1点伤害,然后令其摸两张牌', + spell_nuhuozhongshao_info:'对一名随从造成1点伤害,然后令其摸两张牌。', spell_xuanfengzhan:'旋风斩', - spell_xuanfengzhan_info:'对所有随从造成1点伤害', + spell_xuanfengzhan_info:'对所有随从造成1点伤害。', spell_juemingluandou:'绝命乱斗', - spell_juemingluandou_info:'随机保留一名随从,然后令所有其他随从死亡', + spell_juemingluandou_info:'随机保留一名随从,然后令所有其他随从死亡。', spell_zhongnian:'重碾', - spell_zhongnian_info:'造成X点伤害,X为已受伤的友方角色数且不超过3', + spell_zhongnian_info:'造成X点伤害,X为已受伤的友方角色数且不超过3。', spell_zhandounuhuo:'战斗怒火', - spell_zhandounuhuo_info:'从牌库中获得X张牌,X为已受伤的友方角色数', + spell_zhandounuhuo_info:'从牌库中获得X张牌,X为已受伤的友方角色数。', spell_chongfeng:'冲锋', - spell_chongfeng_info:'令一名武将牌背面朝上的友方随从摸三张牌,然后将武将牌翻至正面', + spell_chongfeng_info:'令一名武将牌背面朝上的友方随从摸三张牌,然后将武将牌翻至正面。', spell_fuchoudaji:'复仇打击', - spell_fuchoudaji_info:'对所有随从造成1点伤害,若你的体力值不大于2,改为造成3点伤害', + spell_fuchoudaji_info:'对所有随从造成1点伤害,若你的体力值不大于2,改为造成3点伤害。', spell_kuangbao:'狂暴', - spell_kuangbao_info:'令一名已受伤的友方随从摸四张牌', + spell_kuangbao_info:'令一名已受伤的友方随从摸四张牌。', spell_yingyongdaji:'英勇打击', - spell_yingyongdaji_info:'令一名敌方角色对你造成2点伤害,然后对其造成2点伤害', + spell_yingyongdaji_info:'令一名敌方角色对你造成2点伤害,然后对其造成2点伤害。', spell_dubiao:'毒镖', - spell_dubiao_info:'对一名随机敌方角色造成1点伤害', + spell_dubiao_info:'对一名随机敌方角色造成1点伤害。', spell_qiangfengsheji:'强风射击', - spell_qiangfengsheji_info:'对两名敌方随从各造成1点伤害,并弃置其两张手牌', + spell_qiangfengsheji_info:'对两名敌方随从各造成1点伤害,并弃置其两张手牌。', spell_tanxianmao:'探险帽', hunter_tanxianmao:'探险帽', - hunter_tanxianmao_info:'你死亡时,将一张探险帽置入主将的手牌', - spell_tanxianmao_info:'令一名友方随从增加1点体力和体力上限并摸一张牌,当该随从死亡时,将一张探险帽置入你的手牌', + hunter_tanxianmao_info:'你死亡时,将一张探险帽置入主将的手牌。', + spell_tanxianmao_info:'令一名友方随从增加1点体力和体力上限并摸一张牌,当该随从死亡时,将一张探险帽置入你的手牌。', spell_shalumingling:'杀戮命令', - spell_shalumingling_info:'造成1点伤害,如果你控制任何野兽,则改为造成2点伤害', + spell_shalumingling_info:'造成1点伤害,如果你控制任何野兽,则改为造成2点伤害。', spell_zhuizongshu:'追踪术', - spell_zhuizongshu_info:'从牌库中随机选择三张牌,获得其中的一张', + spell_zhuizongshu_info:'从牌库中随机选择三张牌,获得其中的一张。', spell_tianjiangzhuqun:'天降蛛群', - spell_tianjiangzhuqun_info:'召唤三只结网蛛', + spell_tianjiangzhuqun_info:'召唤三只结网蛛。', spell_lierenyinji:'猎人印记', - spell_lierenyinji_info:'将一名随从的体力上限降至1', + spell_lierenyinji_info:'将一名随从的体力上限降至1。', spell_kuaisusheji:'快速射击', - spell_kuaisusheji_info:'造成1点伤害,摸一张牌', + spell_kuaisusheji_info:'造成1点伤害,摸一张牌。', spell_guanmenfanggou:'关门放狗', - spell_guanmenfanggou_info:'每有一名敌方随从,便召唤一只猎狗', + spell_guanmenfanggou_info:'每有一名敌方随从,便召唤一只猎狗。', spell_zhaohuanchongwu:'动物伙伴', - spell_zhaohuanchongwu_info:'随机召唤一只野兽', + spell_zhaohuanchongwu_info:'随机召唤一只野兽。', spell_zidanshangtang:'子弹上膛', - spell_zidanshangtang_info:'随机获得一张猎人职业法术牌,并获得技能〖上膛〗直到回合结束', + spell_zidanshangtang_info:'随机获得一张猎人职业法术牌,并获得技能〖上膛〗直到回合结束。', spell_duochongsheji:'多重射击', - spell_duochongsheji_info:'对两名随机敌方随从各造成2点伤害', + spell_duochongsheji_info:'对两名随机敌方随从各造成2点伤害。', stone_liegou:'猎狗', hunter_zidanshangtang:'上膛', hunter_zidanshangtang_bg:'膛', - hunter_zidanshangtang_info:'每当你使用一张法术牌,便随机获得一张猎人职业法术牌', + hunter_zidanshangtang_info:'每当你使用一张法术牌,便随机获得一张猎人职业法术牌。', spell_zuzhou:'诅咒', - spell_zuzhou_info:'将目标随从翻面,摸一张牌', + spell_zuzhou_info:'将目标随从翻面,摸一张牌。', spell_xishengqiyue:'牺牲契约', - spell_xishengqiyue_info:'令双方各一名随从立即死亡', + spell_xishengqiyue_info:'令双方各一名随从立即死亡。', spell_xiaoguibaopo:'小鬼爆破', - spell_xiaoguibaopo_info:'对一名随从造成1~3点伤害,每造成1点伤害,便召唤一只小鬼', + spell_xiaoguibaopo_info:'对一名随从造成1~3点伤害,每造成1点伤害,便召唤一只小鬼。', spell_anyinglieyan:'暗影裂焰', - spell_anyinglieyan_info:'杀死一名友方随从,并对所有敌方随从造成等于其体力值的伤害', + spell_anyinglieyan_info:'杀死一名友方随从,并对所有敌方随从造成等于其体力值的伤害。', spell_liliangdaijia:'力量代价', - spell_liliangdaijia_info:'令一名友方随从摸四张牌,将体力值变为5,并在其下个回合结束后死亡', + spell_liliangdaijia_info:'令一名友方随从摸四张牌,将体力值变为5,并在其下个回合结束后死亡。', spell_emozhinu:'恶魔之怒', - spell_emozhinu_info:'对所有随从造成2点伤害', + spell_emozhinu_info:'对所有随从造成2点伤害。', spell_emozhixin:'恶魔之心', - spell_emozhixin_info:'对一名敌方随从造成4点伤害,或令一名友方随从摸四张牌', + spell_emozhixin_info:'对一名敌方随从造成4点伤害,或令一名友方随从摸四张牌。', spell_ansezhadan:'暗色炸弹', - spell_ansezhadan_info:'造成2点伤害', + spell_ansezhadan_info:'造成2点伤害。', spell_fushishu:'腐蚀术', warlock_fushishu:'腐蚀', - warlock_fushishu_info:'下个回合结束后死亡', - spell_fushishu_info:'令一名敌方随从于其下个回合结束后死亡', + warlock_fushishu_info:'下个回合结束后死亡。', + spell_fushishu_info:'令一名敌方随从于其下个回合结束后死亡。', spell_heianqiyue:'黑暗契约', - spell_heianqiyue_info:'随机令两名敌方随从死亡,随机弃置两张手牌', + spell_heianqiyue_info:'随机令两名敌方随从死亡,随机弃置两张手牌。', spell_linghunhongxi:'灵魂虹吸', - spell_linghunhongxi_info:'令一名随从死亡,回复1点体力', + spell_linghunhongxi_info:'令一名随从死亡,回复1点体力。', spell_siwangchanrao:'死亡缠绕', - spell_siwangchanrao_info:'对一名随从造成1点伤害;若该随从死亡,从牌库中获得一张牌', + spell_siwangchanrao_info:'对一名随从造成1点伤害;若该随从死亡,从牌库中获得一张牌。', spell_wuyashenxiang:'乌鸦神像', - spell_wuyashenxiang_info:'从三张法术牌或随从牌中选择一张加入手牌', + spell_wuyashenxiang_info:'从三张法术牌或随从牌中选择一张加入手牌。', spell_huotigenxu:'活体根须', - spell_huotigenxu_info:'造成1点伤害,或召唤两个树苗', + spell_huotigenxu_info:'造成1点伤害,或召唤两个树苗。', spell_hengsao:'横扫', - spell_hengsao_info:'对一名敌方角色造成2点伤害,然后对其他敌方角色造成1点伤害', + spell_hengsao_info:'对一名敌方角色造成2点伤害,然后对其他敌方角色造成1点伤害。', spell_yexingchengzhang:'野性成长', - spell_yexingchengzhang_info:'下个出牌阶段开始时获得三点额外行动值', + spell_yexingchengzhang_info:'下个出牌阶段开始时获得三点额外行动值。', spell_ziranzhili:'自然之力', - spell_ziranzhili_info:'召唤三个自爆树人', + spell_ziranzhili_info:'召唤三个自爆树人。', spell_yemanpaoxiao:'野蛮咆哮', spell_yemanpaoxiao_bg:'咆', spell_yemanpaoxiao2:'咆哮', - spell_yemanpaoxiao_info:'所有友方角色造成的伤害+1,直到你的下个回合开始', + spell_yemanpaoxiao_info:'所有友方角色造成的伤害+1,直到你的下个回合开始。', spell_conglinzhihun:'丛林之魂', druid_conglinzhihun:'树魂', - druid_conglinzhihun_info:'你死亡后召唤一个树人', - spell_conglinzhihun_info:'令所有友方随从获得技能树魂(你死亡后召唤一个树人)', + druid_conglinzhihun_info:'你死亡后召唤一个树人。', + spell_conglinzhihun_info:'令所有友方随从获得技能树魂(你死亡后召唤一个树人)。', spell_ziyang:'滋养', - spell_ziyang_info:'下个出牌开始阶段获得4点额外行动值,或从牌库中获得三张牌', + spell_ziyang_info:'下个出牌开始阶段获得4点额外行动值,或从牌库中获得三张牌。', spell_fugen:'腐根', - spell_fugen_info:'令一名随从死亡,将一张随机随从置入对手的手牌', + spell_fugen_info:'令一名随从死亡,将一张随机随从置入对手的手牌。', spell_xingchenzhuiluo:'星辰坠落', - spell_xingchenzhuiluo_info:'对一名敌方随从造成5点伤害,或对所有敌方随从造成2点伤害', + spell_xingchenzhuiluo_info:'对一名敌方随从造成5点伤害,或对所有敌方随从造成2点伤害。', spell_fennu:'愤怒', - spell_fennu_info:'对一名随从造成2点伤害,或造成1点伤害并从牌库中获得一张牌', + spell_fennu_info:'对一名随从造成2点伤害,或造成1点伤害并从牌库中获得一张牌。', spell_heiandiyu:'黑暗低语', - spell_heiandiyu_info:'召唤若干个小精灵直到你的随从数达到4;或令一名随从增加1点体力和体力上限并摸三张牌', + spell_heiandiyu_info:'召唤若干个小精灵直到你的随从数达到4;或令一名随从增加1点体力和体力上限并摸三张牌。', druid_yexingchengzhang:'成长', druid_yexingchengzhang_bg:'长', - druid_yexingchengzhang_info:'下个出牌阶段开始时获得三点额外行动值', + druid_yexingchengzhang_info:'下个出牌阶段开始时获得三点额外行动值。', druid_ziyang:'滋养', druid_ziyang_bg:'养', - druid_ziyang_info:'下个出牌阶段开始时获得四点额外行动值', + druid_ziyang_info:'下个出牌阶段开始时获得四点额外行动值。', stone_shumiao:'树苗', stone_shuren:'自爆树人', stone_shurenx:'树人', stone_shurenxx:'嘲讽树人', stone_zibao:'自爆', - stone_zibao_info:'结合结束后立即死亡', + stone_zibao_info:'结合结束后立即死亡。', spell_cigu:'刺骨', - spell_cigu_info:'造成1点伤害,你可以弃置一张装备区内的牌令伤害+1', + spell_cigu_info:'造成1点伤害,你可以弃置一张装备区内的牌令伤害+1。', spell_jianrenluanwu:'剑刃乱舞', - spell_jianrenluanwu_info:'弃置你的武器牌,并对所有敌方角色造成1点伤害', + spell_jianrenluanwu_info:'弃置你的武器牌,并对所有敌方角色造成1点伤害。', spell_daoshan:'刀扇', - spell_daoshan_info:'对所有敌方随从造成1点伤害,从牌库中获得一张牌', + spell_daoshan_info:'对所有敌方随从造成1点伤害,从牌库中获得一张牌。', spell_sijidaifa:'伺机待发', - spell_sijidaifa_info:'你使用下一张法术牌时获得X点行动值,X为该法术的行动值消耗且不超过3', + spell_sijidaifa_info:'你使用下一张法术牌时获得X点行动值,X为该法术的行动值消耗且不超过3。', spell_cisha:'刺杀', - spell_cisha_info:'杀死一名随从', + spell_cisha_info:'杀死一名随从。', spell_modaoyou:'磨刀油', - spell_modaoyou_info:'令你下一次剑刃乱舞造成的伤害+1,并与一名随机友方随从各摸两张牌', + spell_modaoyou_info:'令你下一次剑刃乱舞造成的伤害+1,并与一名随机友方随从各摸两张牌。', spell_mengun:'闷棍', - spell_mengun_info:'令一名敌方随从死亡(不触发死亡技能),将一张该随从的复制置入对手的手牌', + spell_mengun_info:'令一名敌方随从死亡(不触发死亡技能),将一张该随从的复制置入对手的手牌。', spell_anzhongpohuai:'暗中破坏', - spell_anzhongpohuai_info:'随机杀死一名敌方随从,随机弃置敌方的一张装备牌', + spell_anzhongpohuai_info:'随机杀死一名敌方随从,随机弃置敌方的一张装备牌。', spell_beici:'背刺', - spell_beici_info:'令一名未受伤的随从失去1点体力', + spell_beici_info:'令一名未受伤的随从失去1点体力。', spell_weijisifu:'危机四伏', spell_zhumo:'蛛魔', stone_zhumo:'蛛魔', - spell_zhumo_info:'每当该牌被弃置,为你的对手召唤一只蛛魔', - spell_weijisifu_info:'将三张蛛魔牌洗入对手的牌库;每当一名角色弃置蛛魔牌,为其对手召唤一只蛛魔', + spell_zhumo_info:'每当该牌被弃置,为你的对手召唤一只蛛魔。', + spell_weijisifu_info:'将三张蛛魔牌洗入对手的牌库;每当一名角色弃置蛛魔牌,为其对手召唤一只蛛魔。', spell_piaoqie:'剽窃', - spell_piaoqie_info:'复制两张对手牌库中的牌加入你的手牌', + spell_piaoqie_info:'复制两张对手牌库中的牌加入你的手牌。', spell_jipao:'疾跑', - spell_jipao_info:'从牌库中获得四张牌', + spell_jipao_info:'从牌库中获得四张牌。', spell_fengxian:'奉献', - spell_fengxian_info:'对所有敌方角色造成1点伤害', + spell_fengxian_info:'对所有敌方角色造成1点伤害。', spell_fuchouzhinu:'复仇之怒', - spell_fuchouzhinu_info:'造成5点伤害,随机分配到所有敌方随从上', + spell_fuchouzhinu_info:'造成5点伤害,随机分配到所有敌方随从上。', spell_shengliaoshu:'圣疗术', - spell_shengliaoshu_info:'恢复2点体力,摸两张牌', + spell_shengliaoshu_info:'恢复2点体力,摸两张牌。', spell_fennuzhichui:'愤怒之锤', - spell_fennuzhichui_info:'造成1点伤害,从牌库中获得一张牌', + spell_fennuzhichui_info:'造成1点伤害,从牌库中获得一张牌。', spell_zuozhandongyuan:'作战动员', - spell_zuozhandongyuan_info:'召唤两个新兵,随机装备一把武器', + spell_zuozhandongyuan_info:'召唤两个新兵,随机装备一把武器。', spell_liliangzhufu:'力量祝福', - spell_liliangzhufu_info:'令一名随从摸两张牌', + spell_liliangzhufu_info:'令一名随从摸两张牌。', spell_jinyingduijue:'精英对决', - spell_jinyingduijue_info:'双方各保留体力值最高的一名随从,然后令其他随从死亡', + spell_jinyingduijue_info:'双方各保留体力值最高的一名随从,然后令其他随从死亡。', spell_shenpan:'审判', - spell_shenpan_info:'若你的对手随从数不少于你,则随机令一名敌方随从死亡', + spell_shenpan_info:'若你的对手随从数不少于你,则随机令一名敌方随从死亡。', spell_shenshengfennu:'神圣愤怒', - spell_shenshengfennu_info:'从牌库中获得一张牌,并造成等同于其行动值消耗的伤害', + spell_shenshengfennu_info:'从牌库中获得一张牌,并造成等同于其行动值消耗的伤害。', spell_yongshizhufu:'勇士祝福', - spell_yongshizhufu_info:'令一名随从的手牌数翻倍', + spell_yongshizhufu_info:'令一名随从的手牌数翻倍。', spell_zhengqianghaosheng:'争强好胜', paladin_zhengqianghaosheng:'争强好胜', - paladin_zhengqianghaosheng_info:'在你的下一准备阶段,令所有友方随从增加1点体力和体力上限并摸一张牌', - spell_zhengqianghaosheng_info:'在你的下一准备阶段,令所有友方随从增加1点体力和体力上限并摸一张牌', + paladin_zhengqianghaosheng_info:'在你的下一准备阶段,令所有友方随从增加1点体力和体力上限并摸一张牌。', + spell_zhengqianghaosheng_info:'在你的下一准备阶段,令所有友方随从增加1点体力和体力上限并摸一张牌。', spell_zhihuizhufu:'智慧祝福', paladin_zhihuizhufu:'智慧祝福', - spell_zhihuizhufu_info:'选择一名随从,在其每个准备阶段,你从牌库中获得一张牌', + spell_zhihuizhufu_info:'选择一名随从,在其每个准备阶段,你从牌库中获得一张牌。', spell_fengnu:'风怒', shaman_fengnu:'风怒', - shaman_fengnu_info:'回合结束后,你获得一个额外回合', - spell_fengnu_info:'令一名随从获得技能风怒(回合结束后,你获得一个额外回合)', + shaman_fengnu_info:'回合结束后,你获得一个额外回合。', + spell_fengnu_info:'令一名随从获得技能风怒(回合结束后,你获得一个额外回合)。', spell_rongyanbaolie:'熔岩爆裂', - spell_rongyanbaolie_info:'造成3点火焰伤害,失去1点体力', + spell_rongyanbaolie_info:'造成3点火焰伤害,失去1点体力。', spell_shihuawuqi:'石化武器', shaman_shihuawuqi:'充能', - shaman_shihuawuqi_info:'准备阶段,你摸三张牌', - spell_shihuawuqi_info:'令一名友方随从获得技能充能(准备阶段,你摸三张牌),直到你的下一回合开始', + shaman_shihuawuqi_info:'准备阶段,你摸三张牌。', + spell_shihuawuqi_info:'令一名友方随从获得技能充能(准备阶段,你摸三张牌),直到你的下一回合开始。', spell_xianzuzhaohuan:'先祖召唤', - spell_xianzuzhaohuan_info:'双方各将手牌中的一张随机随从牌置入战场', + spell_xianzuzhaohuan_info:'双方各将手牌中的一张随机随从牌置入战场。', spell_xianzuzhihun:'先祖之魂', shaman_xianzuzhihun:'转生', - shaman_xianzuzhihun_info:'你死亡后,召唤一个自身的复制', - spell_xianzuzhihun_info:'令一名随从获得技能转生(你死亡后,召唤一个自身的复制)', + shaman_xianzuzhihun_info:'你死亡后,召唤一个自身的复制。', + spell_xianzuzhihun_info:'令一名随从获得技能转生(你死亡后,召唤一个自身的复制)。', spell_xianzuzhishi:'先祖知识', shaman_xianzuzhishi:'先祖知识', - shaman_xianzuzhishi_info:'本回合手牌上限-1', - spell_xianzuzhishi_info:'从牌库中获得两张牌,本回合手牌上限-1(多次使用不叠加)', + shaman_xianzuzhishi_info:'本回合手牌上限-1。', + spell_xianzuzhishi_info:'从牌库中获得两张牌,本回合手牌上限-1(多次使用不叠加)。', spell_lianhuanbaolie:'连环爆裂', - spell_lianhuanbaolie_info:'造成1~2点雷电伤害', + spell_lianhuanbaolie_info:'造成1~2点雷电伤害。', spell_shandianfengbao:'闪电风暴', - spell_shandianfengbao_info:'对所有敌方随从造成1~2点伤害', + spell_shandianfengbao_info:'对所有敌方随从造成1~2点伤害。', spell_yaoshu:'妖术', - spell_yaoshu_info:'将一个随从变成一只青蛙', + spell_yaoshu_info:'将一个随从变成一只青蛙。', spell_yexinglanghun:'野性狼魂', - spell_yexinglanghun_info:'召唤两个幽灵狼', + spell_yexinglanghun_info:'召唤两个幽灵狼。', spell_shixue:'嗜血', - spell_shixue_info:'所有友方随从摸两张牌', + spell_shixue_info:'所有友方随从摸两张牌。', spell_chazhuangshandian:'叉状闪电', - spell_chazhuangshandian_info:'对两个随机敌方随从各造成1点雷电伤害', + spell_chazhuangshandian_info:'对两个随机敌方随从各造成1点雷电伤害。', stone_qingwa:'青蛙', stone_youlinglang:'幽灵狼', stone_jingxiang:'镜像', - stone_jingxiang_info:'锁定技,你跳过摸牌阶段', + stone_jingxiang_info:'锁定技,你跳过摸牌阶段。', shaman_qingwa:'青蛙', - shaman_qingwa_info:'锁定技,你跳过摸牌阶段', + shaman_qingwa_info:'锁定技,你跳过摸牌阶段。', stone_xiaojingling:'小精灵', spell_laojiuhuoba:'老旧火把', - spell_laojiuhuoba_info:'造成1点伤害,将一张炽热火把置入你的牌库', + spell_laojiuhuoba_info:'造成1点伤害,将一张炽热火把置入你的牌库。', spell_chirehuoba:'炽热火把', - spell_chirehuoba_info:'造成2点火焰伤害', + spell_chirehuoba_info:'造成2点火焰伤害。', spell_canying:'残影', - spell_canying_info:'复制你的所有随从,并将其置入你的手牌', + spell_canying_info:'复制你的所有随从,并将其置入你的手牌。', spell_yanbaoshu:'炎爆术', - spell_yanbaoshu_info:'造成4点火焰伤害(若目标为主将,伤害不能超过目标的当前体力值)', + spell_yanbaoshu_info:'造成4点火焰伤害(若目标为主将,伤害不能超过目标的当前体力值)。', spell_jingxiang:'镜像', - spell_jingxiang_info:'召唤两个具有嘲讽且摸牌阶段不摸牌的随从', + spell_jingxiang_info:'召唤两个具有嘲讽且摸牌阶段不摸牌的随从。', spell_aoshufeidan:'奥术飞弹', - spell_aoshufeidan_info:'造成3点伤害,随从分配到所有敌方随从上', + spell_aoshufeidan_info:'造成3点伤害,随从分配到所有敌方随从上。', spell_hanbingpingzhang:'寒冰屏障', mage_hanbingpingzhang:'寒冰屏障', - mage_hanbingpingzhang_info:'体力值不能降到2以内', - spell_hanbingpingzhang_info:'令一名角色的体力值不能降到2以内,直到你的下一回合开始', + mage_hanbingpingzhang_info:'体力值不能降到2以内。', + spell_hanbingpingzhang_info:'令一名角色的体力值不能降到2以内,直到你的下一回合开始。', spell_hanbingjian:'寒冰箭', - spell_hanbingjian_info:'对一个随从造成2点伤害,然后将其翻面', + spell_hanbingjian_info:'对一个随从造成2点伤害,然后将其翻面。', spell_lieyanfengbao:'烈焰风暴', - spell_lieyanfengbao_info:'对所有敌方随从造成2点伤害', + spell_lieyanfengbao_info:'对所有敌方随从造成2点伤害。', spell_baofengxue:'暴风雪', - spell_baofengxue_info:'对所有敌方随从造成1点伤害,然后将其翻面', + spell_baofengxue_info:'对所有敌方随从造成1点伤害,然后将其翻面。', spell_aoshuzhihui:'奥术智慧', - spell_aoshuzhihui_info:'从牌库中获得两张牌', + spell_aoshuzhihui_info:'从牌库中获得两张牌。', spell_bianxingshu:'变形术', - spell_bianxingshu_info:'将一个随从变成一只绵羊', + spell_bianxingshu_info:'将一个随从变成一只绵羊。', spell_huoqiushu:'火球术', - spell_huoqiushu_info:'造成3点火焰伤害(若目标为主将,伤害不能超过目标的当前体力值)', + spell_huoqiushu_info:'造成3点火焰伤害(若目标为主将,伤害不能超过目标的当前体力值)。', stone_mianyang:'绵羊', mage_mianyang:'绵羊', - mage_mianyang_info:'锁定技,你不能使用杀', + mage_mianyang_info:'锁定技,你不能使用杀。', stone_beijunmushi:'北郡牧师', stone_guangyaozhizi:'光耀之子', @@ -9688,28 +9688,28 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_shenshengyongshi:'神圣勇士', priest_puzhao:'普照', - priest_puzhao_info:'你出场时,己方主将可令一名其他友方随从增加2点体力和体力上限', + priest_puzhao_info:'你出场时,己方主将可令一名其他友方随从增加2点体力和体力上限。', priest_suoxiao:'缩小', - priest_suoxiao_info:'你出场时,己方主将可令一名其他随从减少2点体力上限(不能小于1)', + priest_suoxiao_info:'你出场时,己方主将可令一名其他随从减少2点体力上限(不能小于1)。', priest_shengshui:'圣水', - priest_shengshui_info:'你跳过摸牌阶段;在你的准备阶段,令一名随机友方角色回复2点体力', + priest_shengshui_info:'你跳过摸牌阶段;在你的准备阶段,令一名随机友方角色回复2点体力。', priest_muguang:'暮光', - priest_muguang_info:'你出场时,若主将手牌中有随从牌,则增加1点体力和体力上限', + priest_muguang_info:'你出场时,若主将手牌中有随从牌,则增加1点体力和体力上限。', priest_shixin:'蚀心', - priest_shixin_info:'每当己方主将使用一次职业技能,对双方主将各造成1点伤害', + priest_shixin_info:'每当己方主将使用一次职业技能,对双方主将各造成1点伤害。', priest_shengliao:'圣疗', - priest_shengliao_info:'每当一名随从回复体力,己方主将从牌库中获得一张牌', + priest_shengliao_info:'每当一名随从回复体力,己方主将从牌库中获得一张牌。', priest_guangyao:'光耀', - priest_guangyao_info:'每当你的体力值发生改变,摸一张牌', + priest_guangyao_info:'每当你的体力值发生改变,摸一张牌。', priest_xundao:'训导', - priest_xundao_info:'你出场时,若己方主将手牌中有随从牌,则摸一张牌并获得嘲讽', + priest_xundao_info:'你出场时,若己方主将手牌中有随从牌,则摸一张牌并获得嘲讽。', priest_hunwu:'魂舞', - priest_hunwu_info:'己方主将的职业技能及法术的治疗效果改为令目标失去等量体力', + priest_hunwu_info:'己方主将的职业技能及法术的治疗效果改为令目标失去等量体力。', priest_faxian:'发现', - priest_faxian_info:'你出场时,己方主将从三张随机随从牌中选择一张加入手牌', + priest_faxian_info:'你出场时,己方主将从三张随机随从牌中选择一张加入手牌。', priest_zhufu:'献身', - priest_zhufu_info:'你死亡时,令一名随机友方随从增加1点体力和体力上限', + priest_zhufu_info:'你死亡时,令一名随机友方随从增加1点体力和体力上限。', stone_daomufeizei:'盗墓匪贼', stone_haidao:'海盗', @@ -9727,30 +9727,30 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_zousishangfan:'走私商贩', rogue_duxing:'独行', - rogue_duxing_info:'每当敌方主将召唤一名随从,便获得潜行', + rogue_duxing_info:'每当敌方主将召唤一名随从,便获得潜行。', rogue_shoudao:'授道', - rogue_shoudao_info:'在己方主将的结束阶段,令一名随机友方随从增加1点体力和体力上限并摸一张牌', + rogue_shoudao_info:'在己方主将的结束阶段,令一名随机友方随从增加1点体力和体力上限并摸一张牌。', rogue_lifa:'理发', - rogue_lifa_info:'为己方主将装备一把武器,若已有武器,改为对敌方主将造成1点伤害', + rogue_lifa_info:'为己方主将装备一把武器,若已有武器,改为对敌方主将造成1点伤害。', rogue_fusheng:'复生', - rogue_fusheng_info:'你出场时,体力值和体力上限变为X,X为场上体力最高的随从的体力值', + rogue_fusheng_info:'你出场时,体力值和体力上限变为X,X为场上体力最高的随从的体力值。', rogue_jielue:'劫掠', - rogue_jielue_info:'每当己方主将装备一把武器牌,摸两张牌', + rogue_jielue_info:'每当己方主将装备一把武器牌,摸两张牌。', rogue_jiaoyi:'交易', - rogue_jiaoyi_info:'你出场时,己方主将可以弃置一张装备牌令你摸三张牌', + rogue_jiaoyi_info:'你出场时,己方主将可以弃置一张装备牌令你摸三张牌。', rogue_touqie:'偷窃', - rogue_touqie_info:'每当你造成一次伤害,己方主将从牌库中获得一张牌', + rogue_touqie_info:'每当你造成一次伤害,己方主将从牌库中获得一张牌。', rogue_xunbao:'寻宝', - rogue_xunbao_info:'你死亡时,将一张伺机行发置于己方主将的手牌', + rogue_xunbao_info:'你死亡时,将一张伺机行发置于己方主将的手牌。', rogue_cisha:'刺杀', - rogue_cisha_info:'每当你对一名随从造成伤害,受伤害随从立即死亡', + rogue_cisha_info:'每当你对一名随从造成伤害,受伤害随从立即死亡。', rogue_touxi:'偷袭', - rogue_touxi_info:'你出场时,己方主将可弃置一张装备区内的牌并对一名敌方角色造成1点伤害', + rogue_touxi_info:'你出场时,己方主将可弃置一张装备区内的牌并对一名敌方角色造成1点伤害。', rogue_qiancang:'潜藏', - rogue_qiancang_info:'你出场时,对所有未受伤害的敌方随从造成1点伤害', + rogue_qiancang_info:'你出场时,对所有未受伤害的敌方随从造成1点伤害。', rogue_zhaomu:'结伙', - rogue_zhaomu_info:'你出场时,召唤一个海盗', + rogue_zhaomu_info:'你出场时,召唤一个海盗。', stone_zhihuiguan:'指挥官', stone_jiangong:'监工', @@ -9768,26 +9768,26 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_zhifuzhe:'掷斧者', warrior_heiyao:'黑曜', - warrior_heiyao_info:'在己方主将的结束阶段,召唤一只圣甲虫', + warrior_heiyao_info:'在己方主将的结束阶段,召唤一只圣甲虫。', warrior_peilian:'陪练', - warrior_peilian_info:'你出场时,己方主将可令一名其他随从获得嘲讽', + warrior_peilian_info:'你出场时,己方主将可令一名其他随从获得嘲讽。', warrior_fenyong:'奋勇', - warrior_fenyong_info:'你出场时,若己方主将手牌中有随从牌,则获得冲锋', + warrior_fenyong_info:'你出场时,若己方主将手牌中有随从牌,则获得冲锋。', warrior_chuanci:'穿刺', - warrior_chuanci_info:'每当你对一名敌方随从造成伤害,对另一名随机敌方随从造成等量的伤害', + warrior_chuanci_info:'每当你对一名敌方随从造成伤害,对另一名随机敌方随从造成等量的伤害。', warrior_zhifu:'掷斧', - warrior_zhifu_info:'每当你受到一次伤害,对敌方主将造成1点伤害', + warrior_zhifu_info:'每当你受到一次伤害,对敌方主将造成1点伤害。', warrior_tongling:'统领', - warrior_tongling_info:'每当你召唤一个初始手牌数不大于2的随从,令其获得冲锋', + warrior_tongling_info:'每当你召唤一个初始手牌数不大于2的随从,令其获得冲锋。', warrior_baoluan:'暴乱', - warrior_baoluan_info:'每当一名随从受到一次伤害,摸一张牌', + warrior_baoluan_info:'每当一名随从受到一次伤害,摸一张牌。', warrior_jiangong:'监工', - warrior_jiangong_info:'你出场时,己方主将可对一名随从造成1点伤害,然后令该随从摸两张牌', + warrior_jiangong_info:'你出场时,己方主将可对一名随从造成1点伤害,然后令该随从摸两张牌。', warrior_zhujia:'铸甲', - warrior_zhujia_info:'每当你受到一次伤害,己方主将获得1点护甲', + warrior_zhujia_info:'每当你受到一次伤害,己方主将获得1点护甲。', warrior_tidun:'提盾', - warrior_tidun_info:'你出场时,己方主将获得2点护甲', + warrior_tidun_info:'你出场时,己方主将获得2点护甲。', stone_lieyanxiaogui:'烈焰小鬼', stone_xiaoguishouling:'小鬼首领', @@ -9806,28 +9806,28 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_fukongmoyan:'浮空魔眼', warlock_anyu:'暗语', - warlock_anyu_info:'你出场时,己方主将从三张随机的行动值消耗为1的牌中选择一张加入手牌', + warlock_anyu_info:'你出场时,己方主将从三张随机的行动值消耗为1的牌中选择一张加入手牌。', warlock_zhaohuan:'召唤', - warlock_zhaohuan_info:'你死亡时,将手牌中的一张随机随从牌置入战场', + warlock_zhaohuan_info:'你死亡时,将手牌中的一张随机随从牌置入战场。', warlock_huanmeng:'幻梦', - warlock_huanmeng_info:'你出场时,己方主将随机弃置一张手牌', + warlock_huanmeng_info:'你出场时,己方主将随机弃置一张手牌。', warlock_tongku:'痛苦', - warlock_tongku_info:'每当你造成一次伤害,令己方主将回复1点体力', + warlock_tongku_info:'每当你造成一次伤害,令己方主将回复1点体力。', warlock_tunshi:'吞噬', - warlock_tunshi_info:'你出场时,己方主将须令一名其他友方随从死亡,然后你获得其全部的手牌和体力值', + warlock_tunshi_info:'你出场时,己方主将须令一名其他友方随从死亡,然后你获得其全部的手牌和体力值。', warlock_shijie:'视界', - warlock_shijie_info:'每当己方主将受到一次伤害,你增加1点体力和体力上限并摸一张牌', + warlock_shijie_info:'每当己方主将受到一次伤害,你增加1点体力和体力上限并摸一张牌。', warlock_nonghuo:'弄火', - warlock_nonghuo_info:'你出场时,对己方主将造成1点火焰伤害', + warlock_nonghuo_info:'你出场时,对己方主将造成1点火焰伤害。', warlock_zhaogui:'召鬼', - warlock_zhaogui_info:'每当你受到一次伤害,召唤一个小鬼', + warlock_zhaogui_info:'每当你受到一次伤害,召唤一个小鬼。', warlock_yongsheng:'永生', - warlock_yongsheng_info:'你死亡后,召唤一匹恐惧战马', + warlock_yongsheng_info:'你死亡后,召唤一匹恐惧战马。', warlock_yuhuo:'狱火', - warlock_yuhuo_info:'你出场时,对所有其他随从造成1点伤害', + warlock_yuhuo_info:'你出场时,对所有其他随从造成1点伤害。', warlock_zaihuo:'灾祸', - warlock_zaihuo_info:'你出场时,随机弃置主将的两张手牌', + warlock_zaihuo_info:'你出场时,随机弃置主将的两张手牌。', stone_hudunren:'护盾人', stone_junxuguan:'军需官', @@ -9844,32 +9844,32 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_xunmashi:'训马师', paladin_baowei:'保卫', - paladin_baowei_info:'你出场时,己方主将可令一名其他随从获得1点护甲', + paladin_baowei_info:'你出场时,己方主将可令一名其他随从获得1点护甲。', paladin_tuxi:'吐息', - paladin_tuxi_info:'你出场时,己方主将进行一次判定,若为红色,则回复1点体力', + paladin_tuxi_info:'你出场时,己方主将进行一次判定,若为红色,则回复1点体力。', paladin_miying:'秘影', - paladin_miying_info:'你出场时,依次将牌堆中的所有不重名的判定牌置入敌方主将的判定区', + paladin_miying_info:'你出场时,依次将牌堆中的所有不重名的判定牌置入敌方主将的判定区。', paladin_huashi:'化石', - paladin_huashi_info:'你出场时,己方主将可将一名其他随从的体力值及体力上限变为2', + paladin_huashi_info:'你出场时,己方主将可将一名其他随从的体力值及体力上限变为2。', paladin_jinghua:'净化', - paladin_jinghua_info:'你出场时,对所有手牌数大于1的随从造成2点伤害', + paladin_jinghua_info:'你出场时,对所有手牌数大于1的随从造成2点伤害。', paladin_moma:'秣马', paladin_moma2:'秣马', - paladin_moma_info:'所有友方新兵摸牌阶段摸牌数+1', + paladin_moma_info:'所有友方新兵摸牌阶段摸牌数+1。', paladin_zhaohuan:'召唤', paladin_zhaohuan2:'召唤', - paladin_zhaohuan_info:'你出场后,你的主将在使用下一张随从牌时获得两点行动值', + paladin_zhaohuan_info:'你出场后,你的主将在使用下一张随从牌时获得两点行动值。', paladin_shouwei:'守卫', - paladin_shouwei_info:'你出场时,你的主将回复2点体力值', + paladin_shouwei_info:'你出场时,你的主将回复2点体力值。', paladin_chidun:'持盾', - paladin_chidun_info:'你出场时,己方主将可以弃置对方一名随从的所有牌', + paladin_chidun_info:'你出场时,己方主将可以弃置对方一名随从的所有牌。', paladin_buji:'补给', - paladin_buji_info:'你出场时,所有友方新兵增加1点体力和体力上限并摸两张牌', + paladin_buji_info:'你出场时,所有友方新兵增加1点体力和体力上限并摸两张牌。', paladin_hudun:'护盾', - paladin_hudun_info:'你出场时,获得1点护甲值', + paladin_hudun_info:'你出场时,获得1点护甲值。', paladin_zhaochao:'招潮', - paladin_zhaochao_info:'每当你的主将使用一次英雄技能,便摸两张牌', + paladin_zhaochao_info:'每当你的主将使用一次英雄技能,便摸两张牌。', stone_shifazhe:'嗜法者', stone_wushixuetu:'巫师学徒', @@ -9886,30 +9886,30 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_xulingwushi:'虚灵巫师', mage_aoshu:'奥术', - mage_aoshu_info:'你出场时,将一张奥术智慧置入主将的手牌', + mage_aoshu_info:'你出场时,将一张奥术智慧置入主将的手牌。', mage_jili:'激励', - mage_jili_info:'每当主将使用一次职业技能,摸一张牌', + mage_jili_info:'每当主将使用一次职业技能,摸一张牌。', mage_gushou:'固守', - mage_gushou_info:'每当己方主将受到多于1伤害时,防止其余伤害', + mage_gushou_info:'每当己方主将受到多于1伤害时,防止其余伤害。', mage_yufa:'驭法', - mage_yufa_info:'每当己方主将使用一次职业技能,令其获得1点行动值', + mage_yufa_info:'每当己方主将使用一次职业技能,令其获得1点行动值。', mage_yanshu:'炎术', - mage_yanshu_info:'你出场时,造成X点火焰伤害,随机分配到敌方随从上,X为己方主将装备区内装备牌的数量', + mage_yanshu_info:'你出场时,造成X点火焰伤害,随机分配到敌方随从上,X为己方主将装备区内装备牌的数量。', mage_pingxu:'冯虚', - mage_pingxu_info:'你出场时,己方主将从三张随机法术牌中选择一张加入手牌', + mage_pingxu_info:'你出场时,己方主将从三张随机法术牌中选择一张加入手牌。', mage_shifa:'嗜法', - mage_shifa_info:'你出场时,将一张随机法术牌置入双方主将的手牌', + mage_shifa_info:'你出场时,将一张随机法术牌置入双方主将的手牌。', mage_minghuo:'冥火', - mage_minghuo_info:'你的主将的职业技能造成的伤害+1', + mage_minghuo_info:'你的主将的职业技能造成的伤害+1。', mage_tunfa:'吞法', - mage_tunfa_info:'每当己方主将使用一张法术牌,摸一张牌', + mage_tunfa_info:'每当己方主将使用一张法术牌,摸一张牌。', mage_lieyan:'烈焰', - mage_lieyan_info:'每当己方主将使用一张法术牌,对一名随机敌方角色造成1点火焰伤害', + mage_lieyan_info:'每当己方主将使用一张法术牌,对一名随机敌方角色造成1点火焰伤害。', mage_zhufa:'助法', - mage_zhufa_info:'每当己方主将使用一张法术牌,令其获得1点行动值', + mage_zhufa_info:'每当己方主将使用一张法术牌,令其获得1点行动值。', mage_bingdong:'冰冻', - mage_bingdong_info:'每当你对一个随从造成伤害,该随从将武将牌翻至背面', + mage_bingdong_info:'每当你对一个随从造成伤害,该随从将武将牌翻至背面。', stone_caoyuanshi:'草原狮', stone_leiouke:'雷欧克', @@ -9926,27 +9926,27 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_huangjialeixiang:'皇家雷象', hunter_jiewang:'结网', - hunter_jiewang_info:'你死亡时,己方主将获得一张随机野兽牌', + hunter_jiewang_info:'你死亡时,己方主将获得一张随机野兽牌。', hunter_xunshou:'驯兽', - hunter_xunshou_info:'你出场时,己方主将可选择一名其他友方随从令其增加1点体力和体力上限,摸两张牌并获得嘲讽', + hunter_xunshou_info:'你出场时,己方主将可选择一名其他友方随从令其增加1点体力和体力上限,摸两张牌并获得嘲讽。', hunter_nuhou:'怒吼', - hunter_nuhou_info:'当你死亡时,对所有敌方角色造成1点伤害', + hunter_nuhou_info:'当你死亡时,对所有敌方角色造成1点伤害。', hunter_zhanhuo:'战火', hunter_zhanhuo2:'战火', - hunter_zhanhuo_info:'其他友方随从摸牌阶段的摸牌数+1', + hunter_zhanhuo_info:'其他友方随从摸牌阶段的摸牌数+1。', hunter_qunxi:'群袭', - hunter_qunxi_info:'你出场时,所有友方随从摸一张牌', + hunter_qunxi_info:'你出场时,所有友方随从摸一张牌。', hunter_mishi:'觅食', - hunter_mishi_info:'每当己方主将召唤一个随从,摸一张牌', + hunter_mishi_info:'每当己方主将召唤一个随从,摸一张牌。', hunter_dusha:'渡沙', - hunter_dusha_info:'你出场时,令双方主将各随机使用一张牌库中的1费随从牌(不计入行动值消耗)', + hunter_dusha_info:'你出场时,令双方主将各随机使用一张牌库中的1费随从牌(不计入行动值消耗)。', hunter_chuanlin:'穿林', - hunter_chuanlin_info:'你出场时,己方主将展示牌库中的一张随机随从牌并获得之', + hunter_chuanlin_info:'你出场时,己方主将展示牌库中的一张随机随从牌并获得之。', hunter_muyang:'牧羊', - hunter_muyang_info:'你出场时,随机召唤一个行动值消耗为X的随从,X为其他友方随从数', + hunter_muyang_info:'你出场时,随机召唤一个行动值消耗为X的随从,X为其他友方随从数。', hunter_juji:'狙击', - hunter_juji_info:'你的职业技能可以指定随从为目标', + hunter_juji_info:'你的职业技能可以指定随从为目标。', stone_baoqishi:'豹骑士', stone_conglinshouwei:'从林守卫', @@ -9963,27 +9963,27 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_huoshanxiemu:'火山邪木', druid_renya:'刃牙', - druid_renya_info:'你出场时,己方主将可以选择一项:令你摸一张牌并将武将牌翻至正面,或令你增加1点体力上限并获得技能潜行', + druid_renya_info:'你出场时,己方主将可以选择一项:令你摸一张牌并将武将牌翻至正面,或令你增加1点体力上限并获得技能潜行。', druid_yuehuo:'月火', - druid_yuehuo_info:'所有锦囊牌造成的伤害+1', + druid_yuehuo_info:'所有锦囊牌造成的伤害+1。', druid_qicheng:'骑乘', - druid_qicheng_info:'你死亡时,随机召唤一个行动消耗为1的随从', + druid_qicheng_info:'你死亡时,随机召唤一个行动消耗为1的随从。', druid_chicheng:'驰骋', - druid_chicheng_info:'你出场时,己方主将获得X点行动值,X为其他友方随从数', + druid_chicheng_info:'你出场时,己方主将获得X点行动值,X为其他友方随从数。', druid_yeyou:'夜游', - druid_yeyou_info:'双方主将各从牌库中获得一张牌', + druid_yeyou_info:'双方主将各从牌库中获得一张牌。', druid_juhuo:'举火', - druid_juhuo_info:'己方主将回合内,每有一名随从死亡,令己方主将获得1点行动值', + druid_juhuo_info:'己方主将回合内,每有一名随从死亡,令己方主将获得1点行动值。', stone_chongfeng:'冲锋', - stone_chongfeng_info:'你出场时,立即将武将牌翻至正面', + stone_chongfeng_info:'你出场时,立即将武将牌翻至正面。', druid_nuhuo:'怒火', - druid_nuhuo_info:'每当己方主将使用一次职业技能,便对一名随机敌人造成1点伤害', + druid_nuhuo_info:'每当己方主将使用一次职业技能,便对一名随机敌人造成1点伤害。', druid_chengzhang:'成长', druid_chengzhang2:'成长', - druid_chengzhang_info:'你出场时,己方主将获得1点行动值;你死亡时,己方主将需弃置一张手牌', + druid_chengzhang_info:'你出场时,己方主将获得1点行动值;你死亡时,己方主将需弃置一张手牌。', druid_huwei:'护卫', - druid_huwei_info:'你出场时,己方主将可以选择一项:对一名随从造成1点伤害,或弃置一名随从的所有牌并将其体力上限改为2', + druid_huwei_info:'你出场时,己方主将可以选择一项:对一名随从造成1点伤害,或弃置一名随从的所有牌并将其体力上限改为2。', stone_fachao:'法潮图腾', @@ -10001,57 +10001,57 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_shalinxingzhe:'砂鳞行者', shaman_anhun:'暗魂', - shaman_anhun_info:'每当一名友方随从死亡,令主将从牌库中获得一张牌', + shaman_anhun_info:'每当一名友方随从死亡,令主将从牌库中获得一张牌。', shaman_zoushi:'走石', - shaman_zoushi_info:'每当己方主将使用一张随从牌,对一名随机敌方角色造成1点伤害', + shaman_zoushi_info:'每当己方主将使用一张随从牌,对一名随机敌方角色造成1点伤害。', shaman_zhuhuo:'逐火', - shaman_zhuhuo_info:'你出场时,摸1~3张牌', + shaman_zhuhuo_info:'你出场时,摸1~3张牌。', shaman_peiyu:'培育', - shaman_peiyu_info:'你出场时,增加X点体力和体力上限,X为友方图腾数', + shaman_peiyu_info:'你出场时,增加X点体力和体力上限,X为友方图腾数。', shaman_huoli:'活力', - shaman_huoli_info:'己方主将出牌阶段开始时,你令其获得1点行动值', + shaman_huoli_info:'己方主将出牌阶段开始时,你令其获得1点行动值。', shaman_xueju:'穴居', - shaman_xueju_info:'每当己主将使用一张随从牌,摸一张牌', + shaman_xueju_info:'每当己主将使用一张随从牌,摸一张牌。', shaman_huoxi:'火袭', - shaman_huoxi_info:'你出场时,己方主将可以对对方一名随从造成2点火焰伤害', + shaman_huoxi_info:'你出场时,己方主将可以对对方一名随从造成2点火焰伤害。', shaman_fachao:'法潮', - shaman_fachao_info:'己方主将在其每个回合结束阶从牌库中获得一张牌并回复1点体力', + shaman_fachao_info:'己方主将在其每个回合结束阶从牌库中获得一张牌并回复1点体力。', shaman_huoshe:'火舌', - shaman_huoshe_info:'其他友方随从造成的伤害始终+1', + shaman_huoshe_info:'其他友方随从造成的伤害始终+1。', shaman_jili:'激励', - shaman_jili_info:'己方主将的结束阶段,所有友方图腾摸一张牌', + shaman_jili_info:'己方主将的结束阶段,所有友方图腾摸一张牌。', shaman_tuteng:'图腾', - shaman_tuteng_info:'你跳过摸牌阶段', + shaman_tuteng_info:'你跳过摸牌阶段。', shaman_fali:'空气', - shaman_fali_info:'已方主将使用的法术牌伤害+1', + shaman_fali_info:'已方主将使用的法术牌伤害+1。', shaman_zhiliao:'治疗', - shaman_zhiliao_info:'在你的结束阶段,令所有友方随从回复1点体力', + shaman_zhiliao_info:'在你的结束阶段,令所有友方随从回复1点体力。', shaman_zhuore:'灼热', - shaman_zhuore_info:'已方主将的结束阶段,对一名随机敌方随从造成1点伤害', + shaman_zhuore_info:'已方主将的结束阶段,对一名随机敌方随从造成1点伤害。', _shaman_skill:'图腾', - _shaman_skill_info:'召唤一个随机图腾', + _shaman_skill_info:'召唤一个随机图腾。', _mage_skill:'火冲', - _mage_skill_info:'对一名随从造成1点火焰伤害', + _mage_skill_info:'对一名随从造成1点火焰伤害。', _priest_skill:'治疗', - _priest_skill_info:'回复1点体力', + _priest_skill_info:'回复1点体力。', _priest_skillx:'心刺', - _priest_skillx_info:'造成1点伤害', + _priest_skillx_info:'造成1点伤害。', _warrior_skill:'战甲', - _warrior_skill_info:'获得1点护甲(不能超过3点)', + _warrior_skill_info:'获得1点护甲(不能超过3点)。', _warlock_skill:'分流', - _warlock_skill_info:'从牌库中获得两张牌', + _warlock_skill_info:'从牌库中获得两张牌。', _warlock_skillx:'炼狱', - _warlock_skillx_info:'召唤一个地狱火', + _warlock_skillx_info:'召唤一个地狱火。', _rogue_skill:'出鞘', - _rogue_skill_info:'装备一把武器和一个随机非武器装备', + _rogue_skill_info:'装备一把武器和一个随机非武器装备。', _paladin_skill:'动员', - _paladin_skill_info:'召唤一名士兵', + _paladin_skill_info:'召唤一名士兵。', _hunter_skill:'射击', - _hunter_skill_info:'对敌方主将造成1点伤害', + _hunter_skill_info:'对敌方主将造成1点伤害。', _druid_skill:'猛击', - _druid_skill_info:'视为使用一张不计入出杀次数的杀', + _druid_skill_info:'视为使用一张不计入出杀次数的杀。', stone_tuteng1:'石爪图腾', stone_tuteng2:'灼热图腾', @@ -10062,110 +10062,110 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ stone_zhongshi:'中士', stone_zhongshi1:'叫嚣', - stone_zhongshi1_info:'你出场时,己方主将可以弃置对方一名随从的所有牌', + stone_zhongshi1_info:'你出场时,己方主将可以弃置对方一名随从的所有牌。', stone_zhucangzhe:'伫藏者', stone_zhucangzhe1:'伫藏', - stone_zhucangzhe1_info:'你出场时,己方主将可以令己方一名其他角色摸一张牌', + stone_zhucangzhe1_info:'你出场时,己方主将可以令己方一名其他角色摸一张牌。', stone_huoqiangshou:'火枪手', stone_huoqiangshou1:'火枪', - stone_huoqiangshou1_info:'你出场时,己方主将可以对对方一名随从造成1点伤害', + stone_huoqiangshou1_info:'你出场时,己方主将可以对对方一名随从造成1点伤害。', stone_lansaizhanshi:'蓝腮战士', stone_kutongsiseng:'苦痛侍僧', stone_kutongsiseng1:'苦痛', stone_kutongsiseng2:'苦痛', - stone_kutongsiseng1_info:'你出场时,己方主将于本结束阶段摸一张牌', + stone_kutongsiseng1_info:'你出场时,己方主将于本结束阶段摸一张牌。', stone_yuanguanying:'远古暗影', stone_yuanguanying1:'暗影', - stone_yuanguanying1_info:'你出场时,己方主将可视为对一名敌方角色使用一张杀', + stone_yuanguanying1_info:'你出场时,己方主将可视为对一名敌方角色使用一张杀。', stone_dijieshicong:'低阶侍从', stone_dijieshicong1:'持枪', - stone_dijieshicong1_info:'你出场时,敌方主将随机弃置一张装备牌', + stone_dijieshicong1_info:'你出场时,敌方主将随机弃置一张装备牌。', stone_yaosaishouwei:'要塞守卫', stone_yaosaishouwei1:'守卫', - stone_yaosaishouwei1_info:'你出场时,己方主将本回合手牌上限+2', + stone_yaosaishouwei1_info:'你出场时,己方主将本回合手牌上限+2。', stone_famingjia:'发明家', stone_famingjia1:'发明', - stone_famingjia1_info:'你出场时,己方主将摸两张牌', + stone_famingjia1_info:'你出场时,己方主将摸两张牌。', stone_chilundashi:'齿轮大师', stone_chilundashi1:'齿轮', stone_chilundashi2:'齿轮', - stone_chilundashi1_info:'你出场后的第一个摸牌阶段摸牌数+1', + stone_chilundashi1_info:'你出场后的第一个摸牌阶段摸牌数+1。', stone_hanguangzhizhe:'寒光智者', stone_hanguangzhizhe1:'寒光', - stone_hanguangzhizhe1_info:'你出场时,所有其他随从各摸一张牌', + stone_hanguangzhizhe1_info:'你出场时,所有其他随从各摸一张牌。', stone_aihaozhihun:'哀嚎之魂', stone_aihaozhihun1:'哀嚎', - stone_aihaozhihun1_info:'你出场时,敌方随从弃置所有牌', + stone_aihaozhihun1_info:'你出场时,敌方随从弃置所有牌。', stone_fennuxiaoji:'愤怒小鸡', stone_fennuxiaoji1:'暴怒', - stone_fennuxiaoji1_info:'准备阶段,若你没有手牌,你摸两张牌', + stone_fennuxiaoji1_info:'准备阶段,若你没有手牌,你摸两张牌。', stone_juxingchanchu:'巨型蟾蜍', stone_juxingchanchu1:'毒液', - stone_juxingchanchu1_info:'你死亡时,己方主将可令一名敌方随从失去1点体力', + stone_juxingchanchu1_info:'你死亡时,己方主将可令一名敌方随从失去1点体力。', stone_shishigui:'食尸鬼', stone_shishigui1:'食尸', - stone_shishigui1_info:'你死亡后,场上所有其他随从失去1点体力', + stone_shishigui1_info:'你死亡后,场上所有其他随从失去1点体力。', stone_wuyi:'巫医', stone_langren:'狼人', stone_qianxing:'潜行', - stone_qianxing_info:'你出场时,获得潜行直到下一回合开始', + stone_qianxing_info:'你出场时,获得潜行直到下一回合开始。', stone_mingguangjisi:'明光祭司', stone_nianqingjisi:'年轻祭司', stone_zhufu:'祝福', - stone_zhufu_info:'己方主将的结束阶段,你令一名随机的受伤友方随从回复1点体力', + stone_zhufu_info:'己方主将的结束阶段,你令一名随机的受伤友方随从回复1点体力。', stone_aomishouwei:'奥秘守卫', stone_yanjingshe:'眼镜蛇', stone_yanjingshe1:'毒噬', - stone_yanjingshe1_info:'你出场时,若敌方随从数不少于己方,则随机杀死一名随从', + stone_yanjingshe1_info:'你出场时,若敌方随从数不少于己方,则随机杀死一名随从。', stone_zhiyuzhe:'治愈者', stone_zhiyu:'治愈', - stone_zhiyu_info:'你出场时,令所有友方随从回复1点体力', + stone_zhiyu_info:'你出场时,令所有友方随从回复1点体力。', stone_mafengzhuru:'麻风侏儒', stone_mafengzhuru1:'麻风', - stone_mafengzhuru1_info:'杀死你的随从失去1点体力', + stone_mafengzhuru1_info:'杀死你的随从失去1点体力。', stone_fatiaozhuru:'发条侏儒', stone_fatiaozhuru1:'发条', - stone_fatiaozhuru1_info:'结束阶段,若你没有手牌,你摸两张牌', + stone_fatiaozhuru1_info:'结束阶段,若你没有手牌,你摸两张牌。', stonesha:'进攻', - stonesha_info:'锁定技,你的装备牌均视为杀', + stonesha_info:'锁定技,你的装备牌均视为杀。', stoneshan:'格挡', - stoneshan_info:'锁定技,你的随从和法术牌均视为闪', + stoneshan_info:'锁定技,你的随从和法术牌均视为闪。', stonecharacter:'随从', spell_shengerpingdeng:'生而平等', - spell_shengerpingdeng_info:'将所有随从体力上限降为1', + spell_shengerpingdeng_info:'将所有随从体力上限降为1。', spell_jingshenkongzhi:'精神控制', - spell_jingshenkongzhi_info:'将一名敌方随从吸收为己方', + spell_jingshenkongzhi_info:'将一名敌方随从吸收为己方。', spell_anyingkuangluan:'暗影狂乱', - spell_anyingkuangluan_info:'将一名手牌数不超过1的敌方随从吸收为己方,并令其于下个回合结束后死亡', + spell_anyingkuangluan_info:'将一名手牌数不超过1的敌方随从吸收为己方,并令其于下个回合结束后死亡。', spell_anyingkuangluan_die:'暗影狂乱', - spell_anyingkuangluan_die_info:'下个回合结束后死亡', + spell_anyingkuangluan_die_info:'下个回合结束后死亡。', spell_binghuan:'冰环', - spell_binghuan_info:'将场上所有随从翻面', + spell_binghuan_info:'将场上所有随从翻面。', spell_morizaihuo:'末日灾祸', - spell_morizaihuo_info:'令场上所有随从立即死亡,回复2点体力', + spell_morizaihuo_info:'令场上所有随从立即死亡,回复2点体力。', spell_zhiliaozhichu:'治疗之触', - spell_zhiliaozhichu_info:'令目标随从恢复所有体力值并获得嘲讽', + spell_zhiliaozhichu_info:'令目标随从恢复所有体力值并获得嘲讽。', lschaofeng:'嘲讽', - lschaofeng_info:'同阵营的无嘲讽角色不以能成为杀的目标', + lschaofeng_info:'同阵营的无嘲讽角色不以能成为杀的目标。', spell_wangzhezhufu:'王者祝福', - spell_wangzhezhufu_info:'令一名随从增加2点体力和体力上限并摸两张牌', + spell_wangzhezhufu_info:'令一名随从增加2点体力和体力上限并摸两张牌。', spell_diyulieyan:'地狱烈焰', - spell_diyulieyan_info:'所有角色失去1点体力', + spell_diyulieyan_info:'所有角色失去1点体力。', spell_chenmo:'沉默', - spell_chenmo_info:'弃置一名随从的所有牌,并令其体力上限减至2', + spell_chenmo_info:'弃置一名随从的所有牌,并令其体力上限减至2。', spell_zhiliaoshui:'治疗水', - spell_zhiliaoshui_info:'出牌阶段对自己使用,恢复2点体力值;或于濒死阶段对一名角色使用,令目标恢复1点体力', + spell_zhiliaoshui_info:'出牌阶段对自己使用,恢复2点体力值;或于濒死阶段对一名角色使用,令目标恢复1点体力。', spell_yanmie:'极恶之咒', - spell_yanmie_info:'交换你与敌方主将的装备区,并摸若干张牌直到你的手牌数与敌方主将相等', + spell_yanmie_info:'交换你与敌方主将的装备区,并摸若干张牌直到你的手牌数与敌方主将相等。', spell_xiaoshi:'消失', - spell_xiaoshi_info:'令敌方主将将所有装备区内的牌收入手牌,并弃置其若干张手牌,直到其手牌数与你相等', + spell_xiaoshi_info:'令敌方主将将所有装备区内的牌收入手牌,并弃置其若干张手牌,直到其手牌数与你相等。', stonecard:'法术', mode_stone_card_config:'炉石模式', From e0dee5c77711b74792cb660f90daf05bbe64fd0f Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 20:21:05 +0800 Subject: [PATCH 016/302] minor fix for character --- character/diy.js | 170 +++++++-------- character/gujian.js | 114 +++++----- character/gwent.js | 176 ++++++++-------- character/hearth.js | 480 +++++++++++++++++++++--------------------- character/ow.js | 152 ++++++------- character/xianjian.js | 202 +++++++++--------- 6 files changed, 647 insertions(+), 647 deletions(-) diff --git a/character/diy.js b/character/diy.js index 01eecb361..0ce5321d8 100755 --- a/character/diy.js +++ b/character/diy.js @@ -18139,7 +18139,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ umi_qihuan:'七幻', umi_qihuan_info:'限定技,当你处于濒死状态时,你可以移去此武将牌。若如此做,你回复X点体力(X为场上势力数)。然后,你可获得场上已死亡角色武将牌上的至多两个技能。', komari_tiankou:'甜口', - komari_tiankou_info:'锁定技,当你使用红色的非伤害性基本牌/锦囊牌选择目标时,或成为其他角色使用的这些牌的目标时,你选择一项:1.摸一张牌;2.为此牌增加一个目标', + komari_tiankou_info:'锁定技,当你使用红色的非伤害性基本牌/锦囊牌选择目标时,或成为其他角色使用的这些牌的目标时,你选择一项:1.摸一张牌;2.为此牌增加一个目标。', komari_xueshang:'血殇', komari_xueshang_info:'锁定技,蓄能技,当有角色死亡时,你对自己造成1点伤害,然后对所有其他角色依次造成1点伤害。当有角色因此法进入濒死状态时,你加1点体力上限并回复1点体力,然后失去此技能并终止此技能的所有后续结算。', yukine_wenzhou:'问咒', @@ -18224,7 +18224,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rin_baoqiu:'暴球', rin_baoqiu_info:'锁定技,你的攻击范围+2。当你使用【杀】指定目标后,你进行判定。若结果:为红色,此【杀】对其的伤害值基数+1;为黑色,其无法闪避此【杀】;为♠/♥,此【杀】不计入使用次数限制且你摸一张牌;为♦/♣,目标角色的所有非锁定技失效直到回合结束,且你弃置其一张牌。', sasami_miaobian:'喵变', - sasami_miaobian_info:'当你的体力值变为:3以下时,你获得技能〖公清〗,2以下时,你获得技能〖复难〗,1以下时,你获得技能〖暴球〗', + sasami_miaobian_info:'当你的体力值变为:3以下时,你获得技能〖公清〗,2以下时,你获得技能〖复难〗,1以下时,你获得技能〖暴球〗。', sasami_gongqing:"公清", sasami_gongqing_info:"锁定技。当你受到伤害时,若伤害来源的攻击范围:<3,则你令此伤害的数值减为1。>3,你令此伤害+1。", sasami_funan:'复难', @@ -18232,7 +18232,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sasami_baoqiu:'暴球', sasami_baoqiu_info:'锁定技,你的攻击范围+2。当你使用【杀】指定目标后,你进行判定。若结果:为红色,此【杀】对其的伤害值基数+1;为黑色,其无法闪避此【杀】;为♠/♥,此【杀】不计入使用次数限制且你摸一张牌;为♦/♣,目标角色的所有非锁定技失效直到回合结束,且你弃置其一张牌。', akane_jugu:'巨贾', - akane_jugu_info:'锁定技,1.你的手牌上限+X。2.游戏开始时,你摸X张牌(X为你的体力上限)', + akane_jugu_info:'锁定技,1.你的手牌上限+X。2.游戏开始时,你摸X张牌(X为你的体力上限)。', akane_quanqing:'权倾', akane_quanqing_info:'出牌阶段,你可选择:1.弃置一张点数大于10的牌并对攻击范围内的一名其他角色造成1点伤害;2.弃置一张点数大于6的牌并弃置攻击范围内的一名其他角色区域内的一张牌。3.弃置一张牌并令攻击范围内的一名其他角色摸一张牌。', akane_yifu:'蚁附', @@ -18381,7 +18381,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ kotori_skill_wu:'吴耀', kotori_skill_wu_info:'回合结束时,若你的手牌数不等于你的体力值,则你摸一张牌。', kotori_skill_qun:'群心', - kotori_skill_qun_info:'锁定技,弃牌阶段开始时,若你的手牌数比体力值多2或更多,你本回合手牌上限+1;若你已损失体力值大于1,你手牌上限+1', + kotori_skill_qun_info:'锁定技,弃牌阶段开始时,若你的手牌数比体力值多2或更多,你本回合手牌上限+1;若你已损失体力值大于1,你手牌上限+1。', kotori_skill_key:'键魂', kotori_skill_key_info:'出牌阶段限一次,你可以摸一张牌并获得1点护甲。若如此做,你于当前回合结束时失去1点体力。', kotori_skill_jin:'晋势', @@ -18395,7 +18395,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ kotori_huazhan:'花绽', kotori_huazhan_info:'每回合每种魔物限一次,你可将一个蓝色/红色/绿色/黄色/紫色/灰色魔物当做【树上开花】使用。', jojiro_shensu:'神速', - jojiro_shensu_info:'你可以选择一至三项:1. 跳过判定阶段和摸牌阶段;2. 跳过出牌阶段并弃置一张装备牌;3. 跳过弃牌阶段并将你的武将牌翻面。你每选择一项,视为你对一名其他角色使用一张没有距离限制的【杀】', + jojiro_shensu_info:'你可以选择一至三项:1. 跳过判定阶段和摸牌阶段;2. 跳过出牌阶段并弃置一张装备牌;3. 跳过弃牌阶段并将你的武将牌翻面。你每选择一项,视为你对一名其他角色使用一张没有距离限制的【杀】。', jojiro_shensu1:'神速', jojiro_shensu2:'神速', jojiro_shensu4:'神速', @@ -18591,7 +18591,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ minagi_peiquan:'配券', minagi_peiquan_info:'锁定技。①游戏开始时,你将你所有的手牌记录为“米券”。②出牌阶段,你可以赠予一张“米券”,然后执行一项本回合内未被选择过的效果:⒈对其造成1点伤害;⒉摸两张牌;⒊弃置其的两张牌;⒋亮出牌堆顶的一张牌,然后你可以使用之。', minagi_huanliu:'幻流', - minagi_huanliu_info:'准备阶段开始时,你可与一名其他角色进行协力,并获得“远野小满”的所有技能直到目标角色的结束阶段开始。若“协力”成功,则你可以将所有手牌记录为“米券”', + minagi_huanliu_info:'准备阶段开始时,你可与一名其他角色进行协力,并获得“远野小满”的所有技能直到目标角色的结束阶段开始。若“协力”成功,则你可以将所有手牌记录为“米券”。', key_michiru:'远野小满', michiru_sheyuan:'舍愿', michiru_sheyuan_info:'每轮限一次。若你没有“米券”,则你可以将所有手牌当做任意基本牌或普通锦囊牌使用,然后摸等量的牌。', @@ -18710,111 +18710,111 @@ game.import('character',function(lib,game,ui,get,ai,_status){ nsjuanli:'狷戾', nsjuanli_info:'出牌阶段限一次,你可以和一名有手牌的其他角色进行赌牌,若你赢,目标角色失去1点体力且该角色与你距离-1直到与你下次赌牌,若你没赢,目标角色回复1点体力,且该角色与你距离+1直到与你的下次赌牌。(赌牌:赌牌的两名角色分别亮开一张手牌,若花色相同则赌牌平局,若花色不同,则依次展示牌堆顶的牌直到翻开的牌与其中一人亮出牌的花色相同,则该角色获得赌牌的胜利)', nsyuanchou:'远筹', - nsyuanchou_info:'锁定技,当你成为锦囊牌的目标时,若来源角色与你的距离大于1,则取消之', + nsyuanchou_info:'锁定技,当你成为锦囊牌的目标时,若来源角色与你的距离大于1,则取消之。', nsguhuo:'蛊惑', - nsguhuo_info:'锁定技,你在一个回合中使用前两张牌时,你对一名随机角色从牌堆(牌堆无则从弃牌堆)随机使用一张同类别卡牌', + nsguhuo_info:'锁定技,你在一个回合中使用前两张牌时,你对一名随机角色从牌堆(牌堆无则从弃牌堆)随机使用一张同类别卡牌。', nsqinxue:'勤学', - nsqinxue_info:'每个效果每回合只能使用一次。①当你使用一张基本牌时,你从牌堆随机获得一张锦囊牌;②当你使用一张锦囊牌时,你从牌堆随机获得一张装备牌;③当你使用一张装备牌时,你从牌堆随机获得一张基本牌', + nsqinxue_info:'每个效果每回合只能使用一次。①当你使用一张基本牌时,你从牌堆随机获得一张锦囊牌;②当你使用一张锦囊牌时,你从牌堆随机获得一张装备牌;③当你使用一张装备牌时,你从牌堆随机获得一张基本牌。', nsbaiyi:'白衣', - nsbaiyi_info:'锁定技,若你本回合发动过勤学,你跳过弃牌阶段,改为弃置X张牌(X为本回合发动勤学次数);若你弃置了3张类别不同的牌,你获得一个额外回合(不可连续获得回合),否则你观看牌堆顶的X张牌并获得其中一张', + nsbaiyi_info:'锁定技,若你本回合发动过勤学,你跳过弃牌阶段,改为弃置X张牌(X为本回合发动勤学次数);若你弃置了3张类别不同的牌,你获得一个额外回合(不可连续获得回合),否则你观看牌堆顶的X张牌并获得其中一张。', nsbaiming:'百鸣', - nsbaiming_info:'当你使用【杀】时,你可以获得一项未获得过且与杀或伤害相关的技能,此【杀】结算完毕后,你失去以此法获得的技能', + nsbaiming_info:'当你使用【杀】时,你可以获得一项未获得过且与杀或伤害相关的技能,此【杀】结算完毕后,你失去以此法获得的技能。', nsfuge:'覆戈', - nsfuge_info:'你的回合结束后,你可以执行一个额外的回合,此回合的摸牌阶段,你于摸牌阶段额外摸X张牌(X为你已损失的体力值);若如此做,直到洗牌前,你不能再发动此技能', + nsfuge_info:'你的回合结束后,你可以执行一个额外的回合,此回合的摸牌阶段,你于摸牌阶段额外摸X张牌(X为你已损失的体力值);若如此做,直到洗牌前,你不能再发动此技能。', nstanbing:'谈兵', - nstanbing_info:'摸牌阶段开始时,你可弃置一张手牌,然后摸X张牌(X为你弃置牌的名称字数),若如此做,本回合你不可使用或打出【杀】', + nstanbing_info:'摸牌阶段开始时,你可弃置一张手牌,然后摸X张牌(X为你弃置牌的名称字数),若如此做,本回合你不可使用或打出【杀】。', nsxinzhan:'心战', - nsxinzhan_info:'出牌阶段限一次,你可将任意张手牌交给一名其他角色,若如此做,该角色失去X点体力(X为你交给其的牌张数的一半,向下取整),若你给的牌达到六张,则改为该角色失去1点体力上限', + nsxinzhan_info:'出牌阶段限一次,你可将任意张手牌交给一名其他角色,若如此做,该角色失去X点体力(X为你交给其的牌张数的一半,向下取整),若你给的牌达到六张,则改为该角色失去1点体力上限。', nsfuhuo:'符火', nsfuhuo2:'符火', - nsfuhuo_info:'出牌阶段限一次,你可将一张手牌置于一名武将牌上没有“符”的角色的武将牌上,称为“符”,若如此做,其回合外使用或打出【闪】时,你可令其判定,若结果为:红桃,你对其造成2点火焰伤害;方块,你弃置其一张手牌,然后对其造成1点火焰伤害。你的下个回合开始时,你获得其武将牌上的“符”', + nsfuhuo_info:'出牌阶段限一次,你可将一张手牌置于一名武将牌上没有“符”的角色的武将牌上,称为“符”,若如此做,其回合外使用或打出【闪】时,你可令其判定,若结果为:红桃,你对其造成2点火焰伤害;方块,你弃置其一张手牌,然后对其造成1点火焰伤害。你的下个回合开始时,你获得其武将牌上的“符”。', nswangfeng:'望风', - nswangfeng_info:'在判定牌生效前,你可以打出一张红色牌替换之', + nswangfeng_info:'在判定牌生效前,你可以打出一张红色牌替换之。', nshunji:'混击', - nshunji_info:'出牌阶段限一次,你可以摸一张牌,视为使用一张【万箭齐发】。此【万箭齐发】造成伤害时,受伤害角色选择一项:①弃置你一张牌;②摸一张牌', + nshunji_info:'出牌阶段限一次,你可以摸一张牌,视为使用一张【万箭齐发】。此【万箭齐发】造成伤害时,受伤害角色选择一项:①弃置你一张牌;②摸一张牌。', nscuanquan:'篡权', - nscuanquan_info:'锁定技,如果你的身份为忠臣,则在受伤三次后与主公,互换身份和体力上限', + nscuanquan_info:'锁定技,如果你的身份为忠臣,则在受伤三次后与主公,互换身份和体力上限。', nsjianning:'奸佞', - nsjianning_info:'出牌阶段限一次,如果你的身份为内奸,你可以与一名手牌数比你少的角色交换手牌,并对其造成1点伤害', + nsjianning_info:'出牌阶段限一次,如果你的身份为内奸,你可以与一名手牌数比你少的角色交换手牌,并对其造成1点伤害。', nschangshi:'常仕', - nschangshi_info:'出牌阶段限一次,如果你的身份为反贼,你可以指定两名其他角色互换体力;如果两名角色体力之差等于1,你失去1点体力', + nschangshi_info:'出牌阶段限一次,如果你的身份为反贼,你可以指定两名其他角色互换体力;如果两名角色体力之差等于1,你失去1点体力。', nsbaquan:'霸权', - nsbaquan_info:'回合结束时,你可以弃置所有手牌,并获得相应点数的护甲,你的新一回合开始时清除所有护甲', + nsbaquan_info:'回合结束时,你可以弃置所有手牌,并获得相应点数的护甲,你的新一回合开始时清除所有护甲。', nsbugua:'卜卦', - nsbugua_use_info:'弃置一张牌,并将牌堆顶的六张牌反面朝上逐张按先后顺序排放,然后抛骰子,展示牌序号与骰子显示的点数一致的牌,然后你根据这张牌的花色、点数随机获得牌堆中相应的一张牌', + nsbugua_use_info:'弃置一张牌,并将牌堆顶的六张牌反面朝上逐张按先后顺序排放,然后抛骰子,展示牌序号与骰子显示的点数一致的牌,然后你根据这张牌的花色、点数随机获得牌堆中相应的一张牌。', nsbugua_info:'出牌阶段限一次,你可以弃置一张牌,并将牌堆顶的六张牌反面朝上逐张按先后顺序排放,然后抛骰子,展示牌序号与骰子显示的点数一致的牌,然后你根据这张牌的花色、点数按以下规则随机获得牌堆中相应的一张牌:乾(红桃偶数):无中生有;坤(黑桃奇数):决斗;震(黑桃偶数):南蛮入侵;巽(红桃奇数):万箭齐发;坎(梅花偶数):过河拆桥、兑(梅花奇数):借刀杀人、艮(方片偶数):顺手牵羊、离(方片奇数):火攻。若牌堆中无此牌则摸一张牌,然后你观看未展示的另外五张牌并按任意顺序将其置于牌堆顶。', nstuiyan:'推演', - nstuiyan_info:'出牌阶段,若你使用的牌点数比上一张使用的牌点数大,你可以摸一张牌,反之你本回合不能再以此法摸牌;当你使用的牌点数首次达到8的倍数时,你可以在结算后立即发动一次【卜卦】', + nstuiyan_info:'出牌阶段,若你使用的牌点数比上一张使用的牌点数大,你可以摸一张牌,反之你本回合不能再以此法摸牌;当你使用的牌点数首次达到8的倍数时,你可以在结算后立即发动一次【卜卦】。', nstianji:'天机', - nstianji_info:'限定技,当一名其他角色进入濒死状态,你可自减1点体力上限,令其回复体力至1并增加1点体力上限', + nstianji_info:'限定技,当一名其他角色进入濒死状态,你可自减1点体力上限,令其回复体力至1并增加1点体力上限。', nszhaoxin:'昭心', - nszhaoxin_info:'锁定技,你始终展示手牌', + nszhaoxin_info:'锁定技,你始终展示手牌。', nsxiuxin:'修穆', - nsxiuxin_info:'锁定技,若你没有某种花色的手牌,你不能成为这种花色的牌的目标', + nsxiuxin_info:'锁定技,若你没有某种花色的手牌,你不能成为这种花色的牌的目标。', nsshijun:'弑君', - nsshijun_info:'锁定技,你造成伤害时,你令此伤害+1,并在结算后失去1点体力', + nsshijun_info:'锁定技,你造成伤害时,你令此伤害+1,并在结算后失去1点体力。', nshunyou:'魂佑', - nshunyou_info:'出阶段限一次,你可以弃置一张基本牌,获得弃牌堆底的一张装备牌和一张锦囊牌,然后你可以将那张装备牌装备给一名角色(允许替换)。如果弃牌堆没有装备以及锦囊牌,则改为摸X张牌,X为损失的体力加一(最多3张)', + nshunyou_info:'出阶段限一次,你可以弃置一张基本牌,获得弃牌堆底的一张装备牌和一张锦囊牌,然后你可以将那张装备牌装备给一名角色(允许替换)。如果弃牌堆没有装备以及锦囊牌,则改为摸X张牌,X为损失的体力加一(最多3张)。', nswulie:'武烈', - nswulie_info:'限定技,准备阶段,你可以失去1点体力上限,从弃牌堆选择最多三张牌以任意顺序放置于牌堆顶。若如此做,此回合的结束阶段,你可以重复此操作', + nswulie_info:'限定技,准备阶段,你可以失去1点体力上限,从弃牌堆选择最多三张牌以任意顺序放置于牌堆顶。若如此做,此回合的结束阶段,你可以重复此操作。', nscangxi:'藏玺', nscangxi2:'藏玺', - nscangxi_info:'主公技,其他吴势力角色的弃牌阶段结束时,若其弃置了至少两张牌,则可以选择判定,若是黑色,则其选择一项,1,令主公摸一张并且展示;2,主公手牌上限永久加一;3,额外弃置一张牌,令主公获得本回合进入弃牌堆的一张牌', + nscangxi_info:'主公技,其他吴势力角色的弃牌阶段结束时,若其弃置了至少两张牌,则可以选择判定,若是黑色,则其选择一项,1,令主公摸一张并且展示;2,主公手牌上限永久加一;3,额外弃置一张牌,令主公获得本回合进入弃牌堆的一张牌。', nsdongcha:'洞察', - nsdongcha_info:'锁定技,单体锦囊牌无法对你造成伤害。其它角色于其回合内第二次使用锦囊牌指定你为目标时,取消之', + nsdongcha_info:'锁定技,单体锦囊牌无法对你造成伤害。其它角色于其回合内第二次使用锦囊牌指定你为目标时,取消之。', nscaijian:'才鉴', - nscaijian_info:'出牌阶段限一次,若你的手牌数不大于你的体力上限,则你可以展示你的手牌,观看牌堆顶相同数量的牌并以任意方式交换之', + nscaijian_info:'出牌阶段限一次,若你的手牌数不大于你的体力上限,则你可以展示你的手牌,观看牌堆顶相同数量的牌并以任意方式交换之。', nsgongjian:'恭俭', - nsgongjian_info:'锁定技,弃牌阶段,你须将弃牌交给一名体力值大于你的其它角色', + nsgongjian_info:'锁定技,弃牌阶段,你须将弃牌交给一名体力值大于你的其它角色。', nsjianxiong:'奸雄', - nsjianxiong_info:'当你成为一名角色牌的目标后你可以对该角色使用一张牌,若此牌对其造成伤害,则该角色的牌失效。若失效的为黑色牌,则你摸一张牌', + nsjianxiong_info:'当你成为一名角色牌的目标后你可以对该角色使用一张牌,若此牌对其造成伤害,则该角色的牌失效。若失效的为黑色牌,则你摸一张牌。', nsxionglue:'雄略', - nsxionglue_info:'出牌阶段限一次,你可以弃置一张黑色手牌,然后发现一张锦囊牌', + nsxionglue_info:'出牌阶段限一次,你可以弃置一张黑色手牌,然后发现一张锦囊牌。', nsyaowang:'妖妄', - nsyaowang_info:'回合开始阶段你可以选择一名角色然后获得其其中一项技能直到回合结束,然后该角色随机获得一项未上场武将的其中一项技能直到其回合结束', + nsyaowang_info:'回合开始阶段你可以选择一名角色然后获得其其中一项技能直到回合结束,然后该角色随机获得一项未上场武将的其中一项技能直到其回合结束。', nshuanhuo:'幻惑', - nshuanhuo_info:'每当你失去1点体力或受到一次大于2的伤害时,你可以交换除你之外的两名角色的武将牌(体力及体力上限不变)', + nshuanhuo_info:'每当你失去1点体力或受到一次大于2的伤害时,你可以交换除你之外的两名角色的武将牌(体力及体力上限不变)。', nsjianshu:'剑术', - nsjianshu_info:'锁定技:每当你的装备区有武器时,你使用【杀】指定一个目标后,该角色需要依次使用两张【闪】才能抵消此【杀】', + nsjianshu_info:'锁定技:每当你的装备区有武器时,你使用【杀】指定一个目标后,该角色需要依次使用两张【闪】才能抵消此【杀】。', nscangjian:'藏剑', - nscangjian_info:'每当你对一名角色造成伤害,你可以获得其装备区一张牌', + nscangjian_info:'每当你对一名角色造成伤害,你可以获得其装备区一张牌。', nsyunxing:'陨星', - nsyunxing_info:'锁定技,当场上一名角色死亡,若为蜀,你失去1点体力;若为吴,你回复1点体力;若为魏,你摸一张牌并弃置一名角色的手牌;若为群,你强制结束当前回合;若为你,你可以使一名角色翻面', + nsyunxing_info:'锁定技,当场上一名角色死亡,若为蜀,你失去1点体力;若为吴,你回复1点体力;若为魏,你摸一张牌并弃置一名角色的手牌;若为群,你强制结束当前回合;若为你,你可以使一名角色翻面。', nsguanxing:'观星', - nsguanxing_info:'锁定技,准备阶段,你观看牌堆的X张牌(X为场上存活人数)并且任意移动Y张牌(Y为你当前体力值)', + nsguanxing_info:'锁定技,准备阶段,你观看牌堆的X张牌(X为场上存活人数)并且任意移动Y张牌(Y为你当前体力值)。', nscaiyi:'猜疑', - nscaiyi_info:'其他角色摸牌后,你可以观看其摸到的牌,若其中有【杀】,则视为你对其使用一张【杀】,若其中没有【杀】,则视为其对你使用一张【杀】(计入出杀次数)', + nscaiyi_info:'其他角色摸牌后,你可以观看其摸到的牌,若其中有【杀】,则视为你对其使用一张【杀】,若其中没有【杀】,则视为其对你使用一张【杀】(计入出杀次数)。', nsgefa:'割发', - nsgefa_info:'当你的体力值等于0或更低时,你可以将任意一张♣牌当【桃】使用', + nsgefa_info:'当你的体力值等于0或更低时,你可以将任意一张♣牌当【桃】使用。', nshaoling:'号令', - nshaoling_info:'限定技,出牌阶段,你可以指定一名其他角色,令另外所有其他角色角色选择一项:1、对该角色使用一张【杀】;2、交给你一张牌,然后视为你对其使用一张【杀】', + nshaoling_info:'限定技,出牌阶段,你可以指定一名其他角色,令另外所有其他角色角色选择一项:1、对该角色使用一张【杀】;2、交给你一张牌,然后视为你对其使用一张【杀】。', nspinmin:'拼命', - nspinmin_info:'锁定技,当你于回合内死亡时,你不死亡并增加1点体力上限(每回合最多增加1点且不能超过4);当你于回合外死亡时,你不死亡并减少1点体力上限(体力上限为0会导致你死亡)', + nspinmin_info:'锁定技,当你于回合内死亡时,你不死亡并增加1点体力上限(每回合最多增加1点且不能超过4);当你于回合外死亡时,你不死亡并减少1点体力上限(体力上限为0会导致你死亡)。', nsshishou:'失手', - nsshishou_info:'锁定技,当你于回合内失去手牌时,你失去1点体力并摸一张牌;你回合内使用的牌数不能超过4', + nsshishou_info:'锁定技,当你于回合内失去手牌时,你失去1点体力并摸一张牌;你回合内使用的牌数不能超过4。', nsduijue:'对决', - nsduijue_info:'出牌阶段开始时,你可以弃置一张手牌,若如此做,此阶段你可以将一张与此牌颜色不同的手牌当作[决斗]使用(限2次)', + nsduijue_info:'出牌阶段开始时,你可以弃置一张手牌,若如此做,此阶段你可以将一张与此牌颜色不同的手牌当作【决斗】使用(限2次)。', nsshuangxiong:'双雄', - nsshuangxiong_info:'当你使用[决斗]或被使用[决斗]时,你可以将武将牌翻面', - nsshuangxiong_append:'背面武将:文丑,2体力,你可以将一张牌当[杀]打出', + nsshuangxiong_info:'当你使用【决斗】或被使用【决斗】时,你可以将武将牌翻面。', + nsshuangxiong_append:'背面武将:文丑,2体力,你可以将一张牌当【杀】打出。', nsguanyong:'冠勇', - nsguanyong_info:'你可以将一张手牌当[杀]打出', + nsguanyong_info:'你可以将一张手牌当【杀】打出。', nsjihui:'急恚', - nsjihui_info:'锁定技,每当一名角色一次弃置了三张或更多的牌,你获得一个额外回合;你的额外回合内,你使用牌只能指定你与上一回合角色为目标', + nsjihui_info:'锁定技,每当一名角色一次弃置了三张或更多的牌,你获得一个额外回合;你的额外回合内,你使用牌只能指定你与上一回合角色为目标。', nsmouyun:'谋运', nsmouyun_info:'每两轮限一次,你可以弃置场上体力值最少的一名其他角色区域内的X张牌。(X为其损失的体力值)', nscongjun:'从军', - nscongjun_info:'锁定技,游戏开始时,你变身为一名随机男性角色;当一名敌方角色使用无懈可击时,你有小概率亮出此武将并变回花木兰,然后对该角色造成2点伤害', + nscongjun_info:'锁定技,游戏开始时,你变身为一名随机男性角色;当一名敌方角色使用无懈可击时,你有小概率亮出此武将并变回花木兰,然后对该角色造成2点伤害。', nshuanxian:'幻仙', - nshuanxian_info:'锁定技,游戏开始时,你获得随从“幻身·右”,当你首次受到伤害时,你获得随从“幻身·左”(体力上限2,初始手牌2);你与幻身在摸牌阶段均少摸一张牌;在你的回合中(如果有对应幻身),你以【幻身·左-本体-幻身·右】的顺序进行3个连续回合', + nshuanxian_info:'锁定技,游戏开始时,你获得随从“幻身·右”,当你首次受到伤害时,你获得随从“幻身·左”(体力上限2,初始手牌2);你与幻身在摸牌阶段均少摸一张牌;在你的回合中(如果有对应幻身),你以【幻身·左-本体-幻身·右】的顺序进行3个连续回合。', nstaiping_nh:'太平', nstaiping_nh_info:'当你受到1点伤害后(首次伤害除外),你可以选择一项: ①令一个“幻身”增加1点体力上限。②令一个“幻身”回复1点体力。', nsshoudao:'授道', nsshoudao_info:'当左右“幻身”全部死亡时,你获得技能“雷击”和“鬼道”。当你死亡时,若此时有两个“幻身”,你可以令一名其他角色获得技能“雷击”和“鬼道”。若有一个“幻身”,你可以令一名其他角色获得技能“雷击”或“鬼道”。(杀死你的角色除外)', nsnongquan:'弄权', - nsnongquan_info:'出牌阶段,你可以将最后一张手牌当作【无中生有】使用', + nsnongquan_info:'出牌阶段,你可以将最后一张手牌当作【无中生有】使用。', nsdufu:'毒妇', - nsdufu_info:'每当你即将造成一次伤害时,你可以为此伤害重新指定伤害来源', + nsdufu_info:'每当你即将造成一次伤害时,你可以为此伤害重新指定伤害来源。', yiesheng:'回雪', yiesheng_info:'出牌阶段,你可以弃置任意数量的黑色手牌,然后摸等量的牌。', liangji:'环计', @@ -18824,36 +18824,36 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jugong:'居功', jugong_info:'回合外每名角色的回合限一次,每当场上有角色因受到【杀】或【决斗】造成的伤害,你可以摸一张牌并且将一张手牌置于你的武将牌上,称之为“功”。在你即将受到伤害时,你可以弃置两张“功”,防止此伤害。', nsxinsheng:'新生', - nsxinsheng_info:'每当你对其他角色造成伤害后,若你未受伤,则你可以增加X点体力上限并摸X张牌,X为伤害点数', + nsxinsheng_info:'每当你对其他角色造成伤害后,若你未受伤,则你可以增加X点体力上限并摸X张牌,X为伤害点数。', nsdunxing:'遁形', - nsdunxing_info:'每当你即将受到其他角色造成的伤害时,若你已受伤,则你可以防止此伤害,改为失去X点体力上限并摸X张牌,X为伤害点数', + nsdunxing_info:'每当你即将受到其他角色造成的伤害时,若你已受伤,则你可以防止此伤害,改为失去X点体力上限并摸X张牌,X为伤害点数。', liangce:'粮策', - liangce_info:'①出牌阶段限一次,你可以将一张基本牌当【五谷丰登】使用。②当因执行【五谷丰登】的效果而亮出的牌因效果执行完毕而置入弃牌堆后,你可以选择一名角色,令该角色获取之', + liangce_info:'①出牌阶段限一次,你可以将一张基本牌当【五谷丰登】使用。②当因执行【五谷丰登】的效果而亮出的牌因效果执行完毕而置入弃牌堆后,你可以选择一名角色,令该角色获取之。', jianbi:'坚壁', - jianbi_info:'当你成为锦囊牌的目标时,若此牌的目标包括其他角色,你可以令此牌对1个目标无效', + jianbi_info:'当你成为锦囊牌的目标时,若此牌的目标包括其他角色,你可以令此牌对1个目标无效。', diyjuntun:'军屯', - diyjuntun_info:'出牌阶段,你可以重铸装备牌', + diyjuntun_info:'出牌阶段,你可以重铸装备牌。', choudu:'筹度', - choudu_info:'出牌阶段限一次,你可以弃置一张牌,并指定一名角色视为其使用一张调兵遣将', + choudu_info:'出牌阶段限一次,你可以弃置一张牌,并指定一名角色视为其使用一张调兵遣将。', liduan:'立断', - liduan_info:'当一名其他角色于其回合外得到牌后,若其此次得到的牌数为1且为装备牌(无论是否可见),你可以令该角色选择一项:1.使用此牌;2.将一张手牌交给你', + liduan_info:'当一名其他角色于其回合外得到牌后,若其此次得到的牌数为1且为装备牌(无论是否可见),你可以令该角色选择一项:1.使用此牌;2.将一张手牌交给你。', fuchou:'负仇', fuchou2:'负仇', - fuchou_info:'当你成为【杀】的目标时,你可以将一张牌交给此【杀】的使用者,令此【杀】对你无效且你到其的距离于当前回合内视为1,若如此做,此回合的结束阶段开始时,其令你摸一张牌,然后你需对其使用【杀】,否则失去1点体力', + fuchou_info:'当你成为【杀】的目标时,你可以将一张牌交给此【杀】的使用者,令此【杀】对你无效且你到其的距离于当前回合内视为1,若如此做,此回合的结束阶段开始时,其令你摸一张牌,然后你需对其使用【杀】,否则失去1点体力。', jinyan:'噤言', - jinyan_info:'锁定技。若你的体力值不大于2,你的黑色锦囊牌视为【杀】', + jinyan_info:'锁定技。若你的体力值不大于2,你的黑色锦囊牌视为【杀】。', chezhen:'车阵', - chezhen_info:'锁定技。若你的装备区里:没有牌,你的防御距离+1;有牌,你的进攻距离+1', + chezhen_info:'锁定技。若你的装备区里:没有牌,你的防御距离+1;有牌,你的进攻距离+1。', youzhan:'诱战', - youzhan_info:'当以你距离不大于1的角色为目标的【杀】的使用结算开始时,你可以弃置一张装备牌,令该角色视为使用【诱敌深入】', + youzhan_info:'当以你距离不大于1的角色为目标的【杀】的使用结算开始时,你可以弃置一张装备牌,令该角色视为使用【诱敌深入】。', kangyin:'亢音', kangyin2:'亢音', kangyin_info:'出牌阶段限一次,你可以失去1点体力并选择一名其他角色,弃置该角色的一张牌。若此牌:为基本牌,你可以令一至X名角色各摸一张牌;不为基本牌,于此回合内:你的进攻距离+X,且你使用【杀】的额外目标数上限+X。(X为你已损失的体力值)', zhucheng:'筑城', zhucheng2:'筑城', - zhucheng_info:'①结束阶段开始时,若没有“筑”,你可以将牌堆顶的X张牌置于你的武将牌上〔称为“筑”〕(X为你已损失的体力值与1中的较大值),否则你可以获取所有“筑”。②当你成为【杀】的目标时,若有“筑”,你可以令此杀的使用者弃置X张牌(X为“筑”的数量),否则杀对你无效', + zhucheng_info:'①结束阶段开始时,若没有“筑”,你可以将牌堆顶的X张牌置于你的武将牌上〔称为“筑”〕(X为你已损失的体力值与1中的较大值),否则你可以获取所有“筑”。②当你成为【杀】的目标时,若有“筑”,你可以令此杀的使用者弃置X张牌(X为“筑”的数量),否则杀对你无效。', duoqi:'夺气', - duoqi_info:'当一名角色于除你之外的角色的出牌阶段内因弃置而失去牌后,你可以移去一张“筑”,并结束此出牌阶段', + duoqi_info:'当一名角色于除你之外的角色的出牌阶段内因弃置而失去牌后,你可以移去一张“筑”,并结束此出牌阶段。', siji:'伺机', ciqiu:'刺酋', @@ -18881,30 +18881,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){ diy_jiaoxia:'皎霞', yaliang:'雅量', yaliang_info:'每当你对其他角色造成1点伤害后,或受到其他角色造成的1点伤害后,你可与该角色各摸一张牌。', - diy_jiaoxia_info:'每当你成为红色牌的目标,你可以摸一张牌', + diy_jiaoxia_info:'每当你成为红色牌的目标,你可以摸一张牌。', zaiqix_info:'摸牌阶段,若你已受伤,你可以改为展示牌堆顶的X+1张牌,X为你已损失的体力值,其中每有一张♥牌,你回复1点体力,然后弃掉这些♥牌,将其余的牌收入手牌。', - batu_info:'结束阶段,你可以将手牌数补至X,X为现存的势力数', - diyzaiqi_info:'锁定技,你摸牌阶段额外摸X张牌,X为你已损失的体力值', - diykuanggu_info:'锁定技,每当你造成1点伤害,你在其攻击范围内,你回复1点体力,否则你摸一张牌', + batu_info:'结束阶段,你可以将手牌数补至X,X为现存的势力数。', + diyzaiqi_info:'锁定技,你摸牌阶段额外摸X张牌,X为你已损失的体力值。', + diykuanggu_info:'锁定技,每当你造成1点伤害,你在其攻击范围内,你回复1点体力,否则你摸一张牌。', diyqiangxi_info:'出牌阶段,你可以自减1点体力或弃一张武器牌,然后你对你攻击范围内的一名角色造成1点伤害并弃置其一张牌,每回合限一次。', - diyduanliang_info:'出牌阶段限一次,你可以将一张黑色的基本牌当兵粮寸断对一名角色使用,然后摸一张牌。你的兵粮寸断可以指定距离2以内的角色作为目标', - guihan_info:'限定技,当你进入濒死状态时,可以指定一名男性角色与其各回复1点体力并摸两张牌', - luweiyan_info:'出牌阶段限一次,你可以将一张非基本牌当作水攻使用;结算后你可以视为对其中一个目标使用一张不计入出杀次数的杀', - xiongzi_info:'锁定技,你于摸牌阶段额外摸X+1张牌,X为你装备区牌数的一半,向下取整', - honglian_info:'每当你受到来自其他角色的伤害,可以弃置伤害来源的所有红色牌', - jieyan_info:'出牌阶段限一次,你可以弃置一张红色手牌令场上所有角色受到1点火焰伤害', - diyguhuo_info:'锁定技,准备阶段,你摸两张牌,然后弃置区域内的两张牌', - diychanyuan_info:'锁定技,杀死你的角色失去1点体力上限', - zonghuo_info:'你可弃置一张牌将你即将造成的伤害变为火焰伤害', - shaoying_info:'每当你造成一次火焰伤害,可指定距离受伤害角色1以内的另一名角色,并展示牌堆顶的一张牌,若此牌为红色,该角色受到1点火焰伤害', + diyduanliang_info:'出牌阶段限一次,你可以将一张黑色的基本牌当兵粮寸断对一名角色使用,然后摸一张牌。你的兵粮寸断可以指定距离2以内的角色作为目标。', + guihan_info:'限定技,当你进入濒死状态时,可以指定一名男性角色与其各回复1点体力并摸两张牌。', + luweiyan_info:'出牌阶段限一次,你可以将一张非基本牌当作水攻使用;结算后你可以视为对其中一个目标使用一张不计入出杀次数的【杀】。', + xiongzi_info:'锁定技,你于摸牌阶段额外摸X+1张牌,X为你装备区牌数的一半,向下取整。', + honglian_info:'每当你受到来自其他角色的伤害,可以弃置伤害来源的所有红色牌。', + jieyan_info:'出牌阶段限一次,你可以弃置一张红色手牌令场上所有角色受到1点火焰伤害。', + diyguhuo_info:'锁定技,准备阶段,你摸两张牌,然后弃置区域内的两张牌。', + diychanyuan_info:'锁定技,杀死你的角色失去1点体力上限。', + zonghuo_info:'你可弃置一张牌将你即将造成的伤害变为火焰伤害。', + shaoying_info:'每当你造成一次火焰伤害,可指定距离受伤害角色1以内的另一名角色,并展示牌堆顶的一张牌,若此牌为红色,该角色受到1点火焰伤害。', juedao_info:'出牌阶段,你可以弃置一张手牌,横置你的武将牌;锁定技,若你的武将牌横置,则你计算至其他角色的距离和其他角色计算至你的距离均+1。', geju_info:'准备阶段开始时,你可以摸X张牌(X为攻击范围内不含有你的势力数)。', siji_info:'弃牌阶段结束后,你可以摸2X张牌(X为你于此阶段内弃置的【杀】的数量)。', - ciqiu_info:'锁定技,每当你使用【杀】对目标角色造成伤害时,若该角色未受伤,你令此伤害+1;若其因此进入濒死状态,你令其死亡,然后你失去“刺酋”。 ', + ciqiu_info:'锁定技,每当你使用【杀】对目标角色造成伤害时,若该角色未受伤,你令此伤害+1;若其因此进入濒死状态,你令其死亡,然后你失去“刺酋”。', nsshuaiyan_info:'每当其他角色于你的回合外回复体力后,你可以令该角色选择一项:1.令你摸一张牌;2.令你弃置其一张牌。', moshou_info:'锁定技,你不能成为乐不思蜀和兵粮寸断的目标。', - xicai_info:'你可以立即获得对你造成伤害的牌', - diyjianxiong_info:'锁定技,在身份局中,在你回合内死亡的角色均视为反贼,国战中,在你回合内死亡的角色若与你势力相同则随机改为另一个势力', + xicai_info:'你可以立即获得对你造成伤害的牌。', + diyjianxiong_info:'锁定技,在身份局中,在你回合内死亡的角色均视为反贼,国战中,在你回合内死亡的角色若与你势力相同则随机改为另一个势力。', ns_zanghong:'臧洪', nsshimeng:'誓盟', diff --git a/character/gujian.js b/character/gujian.js index 311284c64..20eddc160 100644 --- a/character/gujian.js +++ b/character/gujian.js @@ -2644,120 +2644,120 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gjqt_cenying:'岑缨', yunyou:'云游', - yunyou_info:'每两轮限一次,出牌阶段,你可以发现一张地图牌本局未使用过的地图牌并使用之', + yunyou_info:'每两轮限一次,出牌阶段,你可以发现一张地图牌本局未使用过的地图牌并使用之。', xuanzhen:'玄阵', // xuanzhen_bg:'阵', - xuanzhen_info:'每轮限一次,当你成为一名其他角色的卡牌惟一目标时,你可以发现一张牌代替此牌', + xuanzhen_info:'每轮限一次,当你成为一名其他角色的卡牌惟一目标时,你可以发现一张牌代替此牌。', qingshu:'青书', - qingshu_info:'结束阶段,你可以令一名角色永久获得一个你使用过且不是当前地图的地图牌效果(每个地图最多发动一次)', + qingshu_info:'结束阶段,你可以令一名角色永久获得一个你使用过且不是当前地图的地图牌效果(每个地图最多发动一次)。', yanjiadan_heart:'偃甲蛋', - yanjiadan_heart_info:'可以当作紫阳丹、玉女元参或沙棠使用', + yanjiadan_heart_info:'可以当作紫阳丹、玉女元参或沙棠使用。', yanjiadan_diamond:'偃甲蛋', - yanjiadan_diamond_info:'可以当作流风散、舒筋散或神火飞鸦使用', + yanjiadan_diamond_info:'可以当作流风散、舒筋散或神火飞鸦使用。', yanjiadan_club:'偃甲蛋', - yanjiadan_club_info:'可以当作天女散花、六骰格或锦里针使用', + yanjiadan_club_info:'可以当作天女散花、六骰格或锦里针使用。', yanjiadan_spade:'偃甲蛋', - yanjiadan_spade_info:'可以当作飞镖、乾坤镖或龙须钩使用', + yanjiadan_spade_info:'可以当作飞镖、乾坤镖或龙须钩使用。', lingyan:'灵偃', lingyan_bg:'偃', - lingyan_info:'出牌阶段限一次,你可以将一张点数与武将牌上的牌均不同的手牌置于武将牌上,然后获得与其花色对应的一枚偃甲蛋', + lingyan_info:'出牌阶段限一次,你可以将一张点数与武将牌上的牌均不同的手牌置于武将牌上,然后获得与其花色对应的一枚偃甲蛋。', xunjian:'寻剑', - xunjian_info:'锁定技,每当你使用或打出一张牌,若牌堆中有同名牌,你有X的机率获得之,X为你的“灵偃”牌数/13', - xunjian_old_info:'觉醒技,结束阶段,若你武将牌上有十三张牌,你失去技能灵偃并获得技能通天', + xunjian_info:'锁定技,每当你使用或打出一张牌,若牌堆中有同名牌,你有X的机率获得之,X为你的“灵偃”牌数/13。', + xunjian_old_info:'觉醒技,结束阶段,若你武将牌上有十三张牌,你失去技能灵偃并获得技能通天。', tongtian:'通天', - tongtian_info:'锁定技,在你使用或打出一张牌后,若敌方角色手中有同名牌,你随机获得其中一张', + tongtian_info:'锁定技,在你使用或打出一张牌后,若敌方角色手中有同名牌,你随机获得其中一张。', xianju:'仙居', - xianju_info:'锁定技,奇数游戏轮次开始时,你获得潜行直到下一轮开始;偶数游戏轮次开始时,你随机获得一张机关牌', + xianju_info:'锁定技,奇数游戏轮次开始时,你获得潜行直到下一轮开始;偶数游戏轮次开始时,你随机获得一张机关牌。', xuanci:'旋刺', - xuanci_info:'出牌阶段限一次,你可以将一张梅花牌当作飞镖使用;锁定技,你使用飞镖无距离限制,你使用飞镖后对目标结算后视为对目标使用一张杀', + xuanci_info:'出牌阶段限一次,你可以将一张梅花牌当作飞镖使用;锁定技,你使用飞镖无距离限制,你使用飞镖后对目标结算后视为对目标使用一张杀。', humeng:'湖梦', humeng_sub:'偃甲谢衣', - humeng_info:'觉醒技,当你使用过4种不同的偃甲蛋后,你获得替身偃甲谢衣;觉醒技,当你进入濒死状态时,你弃置所有牌,摸四张牌,变身为初七并激活偃甲谢衣', + humeng_info:'觉醒技,当你使用过4种不同的偃甲蛋后,你获得替身偃甲谢衣;觉醒技,当你进入濒死状态时,你弃置所有牌,摸四张牌,变身为初七并激活偃甲谢衣。', yange:'魇歌', - yange_info:'游戏开始时,你获得数量等于敌方角色数的“魇”标记;准备阶段开始时,你可以移去一枚“魇”标记并变为一名其他存活角色的复制,此回合结束后你变回原角色', + yange_info:'游戏开始时,你获得数量等于敌方角色数的“魇”标记;准备阶段开始时,你可以移去一枚“魇”标记并变为一名其他存活角色的复制,此回合结束后你变回原角色。', woxue:'卧雪', - woxue_info:'每当你于回合外使用或打出一张牌,你可以视为对当前回合角色使用【白霜】', + woxue_info:'每当你于回合外使用或打出一张牌,你可以视为对当前回合角色使用【白霜】。', lingnu:'灵怒', - lingnu_info:'锁定技,每当你造成1点伤害,你随机获得一个与杀相关的技能,技能在你行动3回合后消失(同一时间最多拥有3个以此法获得的技能)', + lingnu_info:'锁定技,每当你造成1点伤害,你随机获得一个与杀相关的技能,技能在你行动3回合后消失(同一时间最多拥有3个以此法获得的技能)。', zhenying:'振影', - zhenying_info:'每当你使用或打出一张非转化的黑色牌(装备或延时锦囊牌除外),你可以获得一张此牌的“替身”;你使用或打出“替身”牌后需弃置一张牌(没有则不弃);当前回合结束后,“替身”牌消失', + zhenying_info:'每当你使用或打出一张非转化的黑色牌(装备或延时锦囊牌除外),你可以获得一张此牌的“替身”;你使用或打出“替身”牌后需弃置一张牌(没有则不弃);当前回合结束后,“替身”牌消失。', cihong:'刺鸿', cihong_bg:'鸿', - cihong_info:'每三轮限一次,结束阶段,你可以指定一名其他角色并可以依次选择:1. 弃置一张红色牌;2. 失去1点体力;3. 将武将牌翻至背面;每选择一项,视为对目标使用一张杀', + cihong_info:'每三轮限一次,结束阶段,你可以指定一名其他角色并可以依次选择:1. 弃置一张红色牌;2. 失去1点体力;3. 将武将牌翻至背面;每选择一项,视为对目标使用一张杀。', lianjing:'莲境', - lianjing_info:'每两轮限一次,回合结束后,你可以选择至多2名其他角色,将其他角色移出游戏,然后你与所选的角色依次进行一个回合', + lianjing_info:'每两轮限一次,回合结束后,你可以选择至多2名其他角色,将其他角色移出游戏,然后你与所选的角色依次进行一个回合。', zuiji:'醉饮', - zuiji_info:'出牌阶段,你可以将一张手牌或装备牌当作酒使用', + zuiji_info:'出牌阶段,你可以将一张手牌或装备牌当作酒使用。', manwu:'曼舞', - manwu_info:'在一名角色的结束阶段,若其手牌数为全场最少或之一,你可以令其摸一张牌', + manwu_info:'在一名角色的结束阶段,若其手牌数为全场最少或之一,你可以令其摸一张牌。', xfanghua:'芳华', - xfanghua_info:'在你成为红色牌的目标后,你可以回复1点体力', + xfanghua_info:'在你成为红色牌的目标后,你可以回复1点体力。', yunyin:'云音', - yunyin_info:'结束阶段,你可以弃置一张与本回合使用过的卡牌花色均不相同的手牌,视为使用一张基本牌或普通锦囊牌', + yunyin_info:'结束阶段,你可以弃置一张与本回合使用过的卡牌花色均不相同的手牌,视为使用一张基本牌或普通锦囊牌。', shishui:'逝水', - shishui_info:'锁定技,每当你使用一张红色牌,你令目标失去1点体力', + shishui_info:'锁定技,每当你使用一张红色牌,你令目标失去1点体力。', duhun:'渡魂', - duhun_info:'濒死阶段,你可以与一名体力值不超过你的体力上限的角色拼点,若你赢,你失去1点体力上限并与该角色交换体力值;若你没赢,你立即死亡', - duhun_info_alter:'濒死阶段,你可以与一名体力值不超过你的体力上限的角色拼点,若你赢,你失去1点体力上限并将体力值回复至与该角色相同;若你没赢,你立即死亡', + duhun_info:'濒死阶段,你可以与一名体力值不超过你的体力上限的角色拼点,若你赢,你失去1点体力上限并与该角色交换体力值;若你没赢,你立即死亡。', + duhun_info_alter:'濒死阶段,你可以与一名体力值不超过你的体力上限的角色拼点,若你赢,你失去1点体力上限并将体力值回复至与该角色相同;若你没赢,你立即死亡。', chizhen:'驰阵', - chizhen_info:'出牌阶段开始时,你可以摸X张牌并弃置X张牌,若你弃置了杀,可以视为使用一张决斗(X为你已损失的体力值且至少为1)', + chizhen_info:'出牌阶段开始时,你可以摸X张牌并弃置X张牌,若你弃置了杀,可以视为使用一张决斗(X为你已损失的体力值且至少为1)。', xidie:'戏蝶', xidie2:'戏蝶', - xidie_info:'准备阶段,若你的手牌数大于体力值,可以弃置至多X张牌,并于结束阶段摸等量的牌,X为你的体力值与手牌数之差且不超过3', + xidie_info:'准备阶段,若你的手牌数大于体力值,可以弃置至多X张牌,并于结束阶段摸等量的牌,X为你的体力值与手牌数之差且不超过3。', meihu:'魅狐', meihu2:'魅狐', - meihu_info:'当你受到伤害后,可令伤害来源交给你一张手牌', + meihu_info:'当你受到伤害后,可令伤害来源交给你一张手牌。', jianwu:'剑舞', - jianwu_info:'锁定技,攻击范围不含你的角色无法闪避你的杀', + jianwu_info:'锁定技,攻击范围不含你的角色无法闪避你的杀。', meiying:'魅影', - meiying_info:'一名其他角色的回合结束时,若其未于此回合内使用过指定另一名角色为目标的牌,你可以弃置一张红色牌视为对其使用一张杀', + meiying_info:'一名其他角色的回合结束时,若其未于此回合内使用过指定另一名角色为目标的牌,你可以弃置一张红色牌视为对其使用一张杀。', zuizhan:'乱斩', - zuizhan_info:'每当你使用一张杀,可以摸一张牌,然后此杀随机增加一个额外目标', + zuizhan_info:'每当你使用一张杀,可以摸一张牌,然后此杀随机增加一个额外目标。', xlqianhuan:'千幻', - xlqianhuan_info:'回合结束后,若你已受伤,你可以回复1点体力并将武将牌翻面。若你的武将牌背面朝上,你不能使用卡牌,也不能成为卡牌的目标', + xlqianhuan_info:'回合结束后,若你已受伤,你可以回复1点体力并将武将牌翻面。若你的武将牌背面朝上,你不能使用卡牌,也不能成为卡牌的目标。', fumo:'伏魔', - fumo_info:'每当你受到一次伤害,可以弃置两张颜色相同的手牌并对伤害来源造成1点雷电伤害', + fumo_info:'每当你受到一次伤害,可以弃置两张颜色相同的手牌并对伤害来源造成1点雷电伤害。', fanyin:'梵音', - fanyin_info:'结束阶段,你可以令一名角色复原武将牌并移除判定区内的牌;若其体力值是全场最少的之一,其回复1点体力', + fanyin_info:'结束阶段,你可以令一名角色复原武将牌并移除判定区内的牌;若其体力值是全场最少的之一,其回复1点体力。', mingkong:'明空', - mingkong_info:'锁定技,若你没有手牌,你受到的伤害-1,然后伤害来源摸一张牌', + mingkong_info:'锁定技,若你没有手牌,你受到的伤害-1,然后伤害来源摸一张牌。', qinglan:'晴岚', - qinglan_info:'每当有一名角色即将受到属性伤害,你可以弃置一张牌令其防止此伤害,然后伤害来源摸一张牌并回复1点体力', + qinglan_info:'每当有一名角色即将受到属性伤害,你可以弃置一张牌令其防止此伤害,然后伤害来源摸一张牌并回复1点体力。', yuehua:'月华', - yuehua_info:'每当你于回合外使用、打出或弃置红色牌,你可以摸一张牌', + yuehua_info:'每当你于回合外使用、打出或弃置红色牌,你可以摸一张牌。', xuelu:'血戮', - xuelu_info:'结束阶段,若你已受伤,你可以弃置一张红色牌并对一名其他角色造成1点火焰伤害;若你已损失体力值不少于3,改为造成2点火焰伤害', - xuelu_info_alter:'结束阶段,若你已受伤,你可以弃置一张红色牌并对一名其他角色造成1点火焰伤害', + xuelu_info:'结束阶段,若你已受伤,你可以弃置一张红色牌并对一名其他角色造成1点火焰伤害;若你已损失体力值不少于3,改为造成2点火焰伤害。', + xuelu_info_alter:'结束阶段,若你已受伤,你可以弃置一张红色牌并对一名其他角色造成1点火焰伤害。', fanshi:'反噬', - fanshi_info:'锁定技,弃牌阶段结束时,若你本回合内造成过伤害,你失去1点体力并摸一张牌', + fanshi_info:'锁定技,弃牌阶段结束时,若你本回合内造成过伤害,你失去1点体力并摸一张牌。', shahun:'煞魂', shahun2:'煞魂', - shahun_info:'限定技,濒死阶段,你可以复原武将牌,弃置所有牌并摸三张牌,然后将体力回复至1;若如此做,你失去技能〖反噬〗,获得技能〖绝境〗,并于两回合后立即死亡', - shahun_info_alter:'限定技,濒死阶段,你可以复原武将牌,弃置所有牌并摸三张牌,然后将体力回复至1;若如此做,你失去技能〖反噬〗,获得技能〖绝境〗,并于两回合后立即死亡', + shahun_info:'限定技,濒死阶段,你可以复原武将牌,弃置所有牌并摸三张牌,然后将体力回复至1;若如此做,你失去技能〖反噬〗,获得技能〖绝境〗,并于两回合后立即死亡。', + shahun_info_alter:'限定技,濒死阶段,你可以复原武将牌,弃置所有牌并摸三张牌,然后将体力回复至1;若如此做,你失去技能〖反噬〗,获得技能〖绝境〗,并于两回合后立即死亡。', yanjia:'偃甲', - yanjia_info:'出牌阶段,你可以将两张非特殊装备牌合成为一张强化装备', + yanjia_info:'出牌阶段,你可以将两张非特殊装备牌合成为一张强化装备。', xiuhua:'袖花', - xiuhua_info:'每当一件其他角色的装备因被替换或弃置进入弃牌堆,你可以获得之', + xiuhua_info:'每当一件其他角色的装备因被替换或弃置进入弃牌堆,你可以获得之。', liuying:'流影', - liuying_info:'每当你使用一张杀结算完毕后,你可以指定一名本回合未成为过你的杀的目标的角色,并亮出牌堆顶的一张牌,若为黑色,你对该角色使用一张杀', + liuying_info:'每当你使用一张杀结算完毕后,你可以指定一名本回合未成为过你的杀的目标的角色,并亮出牌堆顶的一张牌,若为黑色,你对该角色使用一张杀。', boyun:'拨云', boyun1:'拨云', boyun2:'拨云', - boyun_info:'在你的回合内,你可以弃置一张装备牌,并展示牌堆顶的一张牌,若其为装备牌,你须将其交给任意一张角色并对其造成1点伤害,否则你摸一张牌', + boyun_info:'在你的回合内,你可以弃置一张装备牌,并展示牌堆顶的一张牌,若其为装备牌,你须将其交给任意一张角色并对其造成1点伤害,否则你摸一张牌。', jizhan:'疾战', - jizhan_info:'出牌阶段限一次,你可以将移动到任意一名角色的前一位,视为对其使用了一张不计入出杀次数的杀', + jizhan_info:'出牌阶段限一次,你可以将移动到任意一名角色的前一位,视为对其使用了一张不计入出杀次数的杀。', qianjun:'千军', - qianjun_info:'每当你使用一张杀,你可以弃置一张牌,令距离目标1以内的所有角色成为额外目标', + qianjun_info:'每当你使用一张杀,你可以弃置一张牌,令距离目标1以内的所有角色成为额外目标。', xuanning:'玄凝', xuanning1:'玄凝', xuanning2:'玄凝', liuguang:'流光', yangming:'养命', yangming2:'养命', - xuanning_info:'出牌阶段,你可以弃置一基本牌,获得至多3个玄凝标记。当你受到伤害时,你失去一枚玄凝标记,伤害来源随机弃置一张牌', - liuguang_info:'准备阶段,若你有玄凝标记,你可以弃置一枚玄凝标记,选择至多三名角色依次令其选择一项:弃置一张牌,或受到1点伤害,并终止流光结算', - yangming_info:'出牌阶段,你可以弃置一张红色牌,并在下个出牌阶段结束时令距离1以内的任意名角色回复1点体力,在此之前不可再次发动', + xuanning_info:'出牌阶段,你可以弃置一基本牌,获得至多3个玄凝标记。当你受到伤害时,你失去一枚玄凝标记,伤害来源随机弃置一张牌。', + liuguang_info:'准备阶段,若你有玄凝标记,你可以弃置一枚玄凝标记,选择至多三名角色依次令其选择一项:弃置一张牌,或受到1点伤害,并终止流光结算。', + yangming_info:'出牌阶段,你可以弃置一张红色牌,并在下个出牌阶段结束时令距离1以内的任意名角色回复1点体力,在此之前不可再次发动。', zhaolu:'朝露', jiehuo:'劫火', yuling:'御灵', @@ -2765,10 +2765,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yuling2:'御灵', yuling3:'御灵', yuling4:'御灵', - zhaolu_info:'锁定技,每隔X回合,你失去1点体力上限,每当你受到1点伤害或有人死亡,视为减少两个回合,X为现存角色数且至多为5', - jiehuo_info:'限定技,出牌阶段,你可以对一名其他角色造成2点火焰伤害,然后死亡', - yuling_info:'锁定技,你没有摸牌和弃牌阶段,你的手牌数始终为5,你在一个出牌阶段最多使用X+2张牌,X为你的体力上限', - yuling_info_alter:'锁定技,你没有摸牌和弃牌阶段,你的手牌数始终为5,你在一个出牌阶段最多使用X+1张牌,X为你的体力上限', + zhaolu_info:'锁定技,每隔X回合,你失去1点体力上限,每当你受到1点伤害或有人死亡,视为减少两个回合,X为现存角色数且至多为5。', + jiehuo_info:'限定技,出牌阶段,你可以对一名其他角色造成2点火焰伤害,然后死亡。', + yuling_info:'锁定技,你没有摸牌和弃牌阶段,你的手牌数始终为5,你在一个出牌阶段最多使用X+2张牌,X为你的体力上限。', + yuling_info_alter:'锁定技,你没有摸牌和弃牌阶段,你的手牌数始终为5,你在一个出牌阶段最多使用X+1张牌,X为你的体力上限。', }, }; }); diff --git a/character/gwent.js b/character/gwent.js index 2768393e2..c7ff328d2 100644 --- a/character/gwent.js +++ b/character/gwent.js @@ -4519,186 +4519,186 @@ game.import('character',function(lib,game,ui,get,ai,_status){ // sqlongyin:'龙影', // sqlongyin_info:'', sqlongnu:'龙怒', - sqlongnu_info:'准备阶段,你可以发现一张牌堆中的牌,若你手牌中有同名牌,你可以改为造成1点火属性伤害锁定技。准备阶段开始时,你随机切换至一种形态', + sqlongnu_info:'准备阶段,你可以发现一张牌堆中的牌,若你手牌中有同名牌,你可以改为造成1点火属性伤害锁定技。准备阶段开始时,你随机切换至一种形态。', sqlonghuo:'龙火', - sqlonghuo_info:'出牌阶段限一次,你可以弃置所有手牌并摸等量的牌,若敌方角色手牌中与你弃置的牌同名的牌,则随机弃置其中一张。准备阶段开始时,你随机切换至一种形态', + sqlonghuo_info:'出牌阶段限一次,你可以弃置所有手牌并摸等量的牌,若敌方角色手牌中与你弃置的牌同名的牌,则随机弃置其中一张。准备阶段开始时,你随机切换至一种形态。', sqlongwu:'龙舞', - sqlongwu_info:'结束阶段,你可以摸X张牌,然后可以使用一张牌,X为手牌中同名牌数最多的牌的数量。准备阶段开始时,你随机切换至一种形态', + sqlongwu_info:'结束阶段,你可以摸X张牌,然后可以使用一张牌,X为手牌中同名牌数最多的牌的数量。准备阶段开始时,你随机切换至一种形态。', kuanglie:'狂猎', - kuanglie_info:'锁定技,每当你使用黑色牌指定其他角色为目标后,目标随机弃置一张牌;每当你以此法累计弃置两张牌后,你摸一张牌', - // kuanglie_info:'锁定技,每当一名敌方角色成为你的黑色牌的目标,你视为对其使用【刺骨寒霜】;在一名角色受到【刺骨寒霜】的影响后,你随机获得一张【狂猎】牌', + kuanglie_info:'锁定技,每当你使用黑色牌指定其他角色为目标后,目标随机弃置一张牌;每当你以此法累计弃置两张牌后,你摸一张牌。', + // kuanglie_info:'锁定技,每当一名敌方角色成为你的黑色牌的目标,你视为对其使用【刺骨寒霜】;在一名角色受到【刺骨寒霜】的影响后,你随机获得一张【狂猎】牌。', lingshuang:'凛霜', - lingshuang_info:'每当你失去最后一张基本牌,你可以视为对距离2以内的所有敌方角色使用【刺骨寒霜】;在一名角色受到【刺骨寒霜】影响时,你可以弃置一张手牌将其效果改为“摸牌数-2”', + lingshuang_info:'每当你失去最后一张基本牌,你可以视为对距离2以内的所有敌方角色使用【刺骨寒霜】;在一名角色受到【刺骨寒霜】影响时,你可以弃置一张手牌将其效果改为“摸牌数-2”。', gwshuangwu:'霜舞', - gwshuangwu_info:'锁定技,每当你造成一次伤害,你视为对目标使用刺骨寒霜;你对处于刺骨寒霜的角色造成的伤害+1', + gwshuangwu_info:'锁定技,每当你造成一次伤害,你视为对目标使用刺骨寒霜;你对处于刺骨寒霜的角色造成的伤害+1。', gwhuanshuang:'幻霜', - gwhuanshuang_info:'准备或结束阶段,你可以发现一张铜卡法术并使用之,此牌结算两次', + gwhuanshuang_info:'准备或结束阶段,你可以发现一张铜卡法术并使用之,此牌结算两次。', gwjinli:'金醴', gwjinli_jiu:'先祖麦酒', - gwjinli_info:'出牌阶段限一次,你可以弃置一张手牌,并将一张先祖麦酒置于一名角色的武将牌上', + gwjinli_info:'出牌阶段限一次,你可以弃置一张手牌,并将一张先祖麦酒置于一名角色的武将牌上。', gw_xianzumaijiu:'先祖麦酒', - gw_xianzumaijiu_info:'出牌阶段对自己使用,你使用下一张杀造成伤害后,令所有友方角色摸一张牌;濒死阶段,对自己使用,回复1点体力', + gw_xianzumaijiu_info:'出牌阶段对自己使用,你使用下一张杀造成伤害后,令所有友方角色摸一张牌;濒死阶段,对自己使用,回复1点体力。', gwliaotian:'燎天', - gwliaotian_info:'出牌阶段限2次,若你有至少两张手牌且颜色均相同,你可以重铸你的全部手牌,并视为对一名随机敌方角色使用一张不计入出杀次数的杀', + gwliaotian_info:'出牌阶段限2次,若你有至少两张手牌且颜色均相同,你可以重铸你的全部手牌,并视为对一名随机敌方角色使用一张不计入出杀次数的杀。', gwmaoxian_yioufeisi:'伊欧菲斯', - gwmaoxian_yioufeisi_info:'选择两名角色,令目标依次视为对对方使用一张杀,然后结束出牌阶段', + gwmaoxian_yioufeisi_info:'选择两名角色,令目标依次视为对对方使用一张杀,然后结束出牌阶段。', gwmaoxian_luoqi:'罗契', - gwmaoxian_luoqi_info:'选择一名角色视为对其使用一张不计入出杀次数的杀,然后所有其他角色可以对目标使用一张杀,然后结束出牌阶段', + gwmaoxian_luoqi_info:'选择一名角色视为对其使用一张不计入出杀次数的杀,然后所有其他角色可以对目标使用一张杀,然后结束出牌阶段。', gwmaoxian_jieluote:'杰洛特', - gwmaoxian_jieluote_info:'对一名角色造成1点伤害,若目标体力值大于2且为全场最多,改为造成2点伤害,然后结束出牌阶段', + gwmaoxian_jieluote_info:'对一名角色造成1点伤害,若目标体力值大于2且为全场最多,改为造成2点伤害,然后结束出牌阶段。', gwmaoxian_yenaifa:'叶奈法', - gwmaoxian_yenaifa_info:'对至多3名随机敌方角色施加一个随机负面效果,然后结束出牌阶段', + gwmaoxian_yenaifa_info:'对至多3名随机敌方角色施加一个随机负面效果,然后结束出牌阶段。', gwmaoxian_telisi:'特丽斯', - gwmaoxian_telisi_info:'对至多3名随机友方角色施加一个随机正面效果,然后结束出牌阶段', + gwmaoxian_telisi_info:'对至多3名随机友方角色施加一个随机正面效果,然后结束出牌阶段。', gwmaoxian_hengsaite:'亨赛特', - gwmaoxian_hengsaite_info:'视为使用一张万箭齐发,每当有一名角色因此受到伤害,你获得一张杀,然后结束出牌阶段', + gwmaoxian_hengsaite_info:'视为使用一张万箭齐发,每当有一名角色因此受到伤害,你获得一张杀,然后结束出牌阶段。', gwmaoxian_fuertaisite:'弗尔泰斯特', - gwmaoxian_fuertaisite_info:'令至多两名角色各获得1点护甲,然后结束出牌阶段', + gwmaoxian_fuertaisite_info:'令至多两名角色各获得1点护甲,然后结束出牌阶段。', gwmaoxian_laduoweide:'拉多维德', - gwmaoxian_laduoweide_info:'令一名角色的非锁定技失效直到其下一回合结束,并对其造成1点伤害,然后结束出牌阶段', + gwmaoxian_laduoweide_info:'令一名角色的非锁定技失效直到其下一回合结束,并对其造成1点伤害,然后结束出牌阶段。', gwmaoxian_enxier:'恩希尔', - gwmaoxian_enxier_info:'与一名手牌并不超过1的其他角色交换手牌,然后结束出牌阶段', + gwmaoxian_enxier_info:'与一名手牌并不超过1的其他角色交换手牌,然后结束出牌阶段。', gwmaoxian_fulisi:'符里斯', - gwmaoxian_fulisi_info:'选择至多三名角色,观看目标的手牌并可以弃置其中1~2张,然后结束出牌阶段', + gwmaoxian_fulisi_info:'选择至多三名角色,观看目标的手牌并可以弃置其中1~2张,然后结束出牌阶段。', gwmaoxian_kaerweite:'卡尔维特', - gwmaoxian_kaerweite_info:'获得至多两名角色各一张手牌,然后结束出牌阶段', + gwmaoxian_kaerweite_info:'获得至多两名角色各一张手牌,然后结束出牌阶段。', gwmaoxian_bulanwang:'布兰王', - gwmaoxian_bulanwang_info:'弃置至多两张牌并摸数量等于弃牌数2倍的牌,跳过弃牌阶段,然后结束出牌阶段', + gwmaoxian_bulanwang_info:'弃置至多两张牌并摸数量等于弃牌数2倍的牌,跳过弃牌阶段,然后结束出牌阶段。', gwmaoxian_kuite:'奎特', - gwmaoxian_kuite_info:'视为对一名手牌数不小于你的角色连续使用2张决斗,然后结束出牌阶段', + gwmaoxian_kuite_info:'视为对一名手牌数不小于你的角色连续使用2张决斗,然后结束出牌阶段。', gwmaoxian_haluo:'哈洛', - gwmaoxian_haluo_info:'对所有体力值全场最少的角色造成1点伤害,然后结束出牌阶段', + gwmaoxian_haluo_info:'对所有体力值全场最少的角色造成1点伤害,然后结束出牌阶段。', gwmaoxian_dagong:'达贡', - gwmaoxian_dagong_info:'视为同时使用刺骨寒霜、蔽日浓雾和倾盆大雨,然后结束出牌阶段', + gwmaoxian_dagong_info:'视为同时使用刺骨寒霜、蔽日浓雾和倾盆大雨,然后结束出牌阶段。', gwmaoxian_gaier:'盖尔', - gwmaoxian_gaier_info:'令一名角色增加或减少1点体力和体力上限,然后结束出牌阶段', + gwmaoxian_gaier_info:'令一名角色增加或减少1点体力和体力上限,然后结束出牌阶段。', gwmaoxian_airuiting:'艾瑞汀', - gwmaoxian_airuiting_info:'令所有其他角色选择一项:使用一张杀,或失去1点体力,然后结束出牌阶段', + gwmaoxian_airuiting_info:'令所有其他角色选择一项:使用一张杀,或失去1点体力,然后结束出牌阶段。', gwmaoxian_aisinie:'埃丝涅', - gwmaoxian_aisinie_info:'回复1点体力并获得任意一张银卡法术,然后结束出牌阶段', + gwmaoxian_aisinie_info:'回复1点体力并获得任意一张银卡法术,然后结束出牌阶段。', gwmaoxian_falanxisika:'法兰茜斯卡', - gwmaoxian_falanxisika_info:'随机观看3张金卡法术并使用其中一张,然后结束出牌阶段', + gwmaoxian_falanxisika_info:'随机观看3张金卡法术并使用其中一张,然后结束出牌阶段。', gwmaoxian_huoge:'霍格', - gwmaoxian_huoge_info:'观看牌堆顶的六张牌,使用至多两张,然后弃掉其余的牌,然后结束出牌阶段', + gwmaoxian_huoge_info:'观看牌堆顶的六张牌,使用至多两张,然后弃掉其余的牌,然后结束出牌阶段。', gwmaoxian:'冒险', gwhuanbi:'幻笔', - gwhuanbi_info:'出牌阶段限一次,你可以弃置一张牌,并创造一张冒险牌,然后随机选择一名有手牌的角色,被选中的角色可以交给你一张手牌并获得一张该牌的复制', + gwhuanbi_info:'出牌阶段限一次,你可以弃置一张牌,并创造一张冒险牌,然后随机选择一名有手牌的角色,被选中的角色可以交给你一张手牌并获得一张该牌的复制。', gwminxiang:'冥想', - gwminxiang_old_info:'结束阶段,你可以选择一张本回合使用过的基本牌或普通锦囊牌并选择两名其他角色,令目标分别视为对对方使用一张此牌的复制', - gwminxiang_info:'出牌阶段限一次,你可以弃置一张基本牌或普通锦囊牌并摸一张牌,然后选择其他两名角色,令目标分别视为对对方使用一张你弃置的牌的同名牌', + gwminxiang_old_info:'结束阶段,你可以选择一张本回合使用过的基本牌或普通锦囊牌并选择两名其他角色,令目标分别视为对对方使用一张此牌的复制。', + gwminxiang_info:'出牌阶段限一次,你可以弃置一张基本牌或普通锦囊牌并摸一张牌,然后选择其他两名角色,令目标分别视为对对方使用一张你弃置的牌的同名牌。', gwlangshi:'狼噬', - gwlangshi_info:'每当你造成一次伤害,你可以对一名体力值不小于受伤害角色的其他角色造1点伤害', + gwlangshi_info:'每当你造成一次伤害,你可以对一名体力值不小于受伤害角色的其他角色造1点伤害。', gwjingshi:'血契', - gwjingshi_info:'出牌阶段限一次,你可以猜测手牌中黑色牌最多的角色是谁,若猜对,你可以观看所有其他角色的手牌并获得任意一张', + gwjingshi_info:'出牌阶段限一次,你可以猜测手牌中黑色牌最多的角色是谁,若猜对,你可以观看所有其他角色的手牌并获得任意一张。', gwjingtian:'经天', - gwjingtian_info:'锁定技,牌堆顶的九张牌对你始终可见;你始终跳过摸牌阶段,改为获得3枚“经天”标记;每名角色的回合限一次,你可以在任意时间点移去一枚“经天”标记,然后获得牌堆顶的一张牌', + gwjingtian_info:'锁定技,牌堆顶的九张牌对你始终可见;你始终跳过摸牌阶段,改为获得3枚“经天”标记;每名角色的回合限一次,你可以在任意时间点移去一枚“经天”标记,然后获得牌堆顶的一张牌。', gwweitu:'卫土', - gwweitu_info:'锁定技,每当你弃置牌,若你的护甲数小于3,你获得1点护甲;每当你的护甲为你累计抵消3次伤害,你获得一张随机银卡法术', + gwweitu_info:'锁定技,每当你弃置牌,若你的护甲数小于3,你获得1点护甲;每当你的护甲为你累计抵消3次伤害,你获得一张随机银卡法术。', gwzhongmo:'终末', - gwzhongmo_info:'锁定技,你跳过摸牌阶段,改为获得两张随机的稀有度不同的法术牌', + gwzhongmo_info:'锁定技,你跳过摸牌阶段,改为获得两张随机的稀有度不同的法术牌。', gwfutian:'覆天', - gwfutian_info:'锁定技,你防止一切伤害;准备阶段,你须弃置一名其他角色的一张手牌;若你以此法累计弃置弃置的总点数达到了24,你变身为汉姆多尔', + gwfutian_info:'锁定技,你防止一切伤害;准备阶段,你须弃置一名其他角色的一张手牌;若你以此法累计弃置弃置的总点数达到了24,你变身为汉姆多尔。', gwgouhun:'勾魂', - gwgouhun_info:'出牌阶段限一次,你可以交给一名有手牌的其他角色一张手牌,然后令其选择一项:1. 将手牌中与此牌花色相同的牌(至少一张)交给你;2. 弃置手牌中与此牌花色不同的牌(至少一张);3. 进入混乱状态直到下一回合结束', + gwgouhun_info:'出牌阶段限一次,你可以交给一名有手牌的其他角色一张手牌,然后令其选择一项:1. 将手牌中与此牌花色相同的牌(至少一张)交给你;2. 弃置手牌中与此牌花色不同的牌(至少一张);3. 进入混乱状态直到下一回合结束。', gw_wuyao:'雾妖', - gw_wuyao_info:'在你行动时可当作杀使用;回合结束后,从手牌中消失', + gw_wuyao_info:'在你行动时可当作杀使用;回合结束后,从手牌中消失。', gw_lang:'狼', - gw_lang_info:'在你行动时可当作酒使用;回合结束后,从手牌中消失', + gw_lang_info:'在你行动时可当作酒使用;回合结束后,从手牌中消失。', gwyewu:'叶舞', - gwyewu_info:'出牌阶段限一次,你可以弃置一张手牌,并弃置一名随机敌人的一张随机牌;若目标弃置的牌与你弃置的牌颜色相同,则重复发动;每以此法弃置一张敌方角色的手牌,你获得一张【雾妖】;每以此法弃置一张敌方角色的手牌,你获得一张【狼】', + gwyewu_info:'出牌阶段限一次,你可以弃置一张手牌,并弃置一名随机敌人的一张随机牌;若目标弃置的牌与你弃置的牌颜色相同,则重复发动;每以此法弃置一张敌方角色的手牌,你获得一张【雾妖】;每以此法弃置一张敌方角色的手牌,你获得一张【狼】。', shuangxi:'霜袭', - shuangxi_info:'每两轮限一次,出牌阶段,你可以视为使用一张【刺骨寒霜】;若你在本回合造成过伤害,改为使用【白霜】', + shuangxi_info:'每两轮限一次,出牌阶段,你可以视为使用一张【刺骨寒霜】;若你在本回合造成过伤害,改为使用【白霜】。', gwfengshi:'风蚀', - gwfengshi_info:'结束阶段,你可以选择一项:1. 为自己施加一个随机负面效果,并对两名随机敌人施加一个随机负面效果;2. 为自己施加两个随机正面效果,并对一名随机敌人施加一个随机正面效果', + gwfengshi_info:'结束阶段,你可以选择一项:1. 为自己施加一个随机负面效果,并对两名随机敌人施加一个随机负面效果;2. 为自己施加两个随机正面效果,并对一名随机敌人施加一个随机正面效果。', yangfan:'扬帆', - yangfan_info:'锁定技,每当你使用一张非装备牌,你随机重铸一张与其花色相同的手牌;若没有花色相同的手牌,改为随机重铸一张与其颜色相同的手牌', + yangfan_info:'锁定技,每当你使用一张非装备牌,你随机重铸一张与其花色相同的手牌;若没有花色相同的手牌,改为随机重铸一张与其颜色相同的手牌。', gwchenshui:'沉睡', gwchenshui_bg:'睡', - gwchenshui_info:'锁定技,你防止即将造成或受到的伤害,改为令伤害来随机源获得对方一张牌;结束阶段,若你自上次沉睡起累计发动了至少3次沉睡效果,你解除沉睡状态,对所有敌方角色造成1点伤害,然后切换至觉醒状态', + gwchenshui_info:'锁定技,你防止即将造成或受到的伤害,改为令伤害来随机源获得对方一张牌;结束阶段,若你自上次沉睡起累计发动了至少3次沉睡效果,你解除沉睡状态,对所有敌方角色造成1点伤害,然后切换至觉醒状态。', gwliedi:'裂地', - gwliedi_info:'锁定技,你造成的伤害+X,X为你到该角色距离的一半,向下取整;结束阶段,若你连续两轮未造成伤害,你切换至沉睡状态', + gwliedi_info:'锁定技,你造成的伤害+X,X为你到该角色距离的一半,向下取整;结束阶段,若你连续两轮未造成伤害,你切换至沉睡状态。', julian:'巨敛', - julian_info:'出牌阶段开始时,你可以摸若干张牌直到你的手牌数为全场最多或之一', + julian_info:'出牌阶段开始时,你可以摸若干张牌直到你的手牌数为全场最多或之一。', gwfusheng:'复生', - gwfusheng_info:'当一名未翻面的角色进入濒死状态时,你可以令其翻面并回复1点体力,然后你与其各摸一张牌', + gwfusheng_info:'当一名未翻面的角色进入濒死状态时,你可以令其翻面并回复1点体力,然后你与其各摸一张牌。', gwqinwu:'琴舞', gwqinwu2:'琴舞', - gwqinwu_info:'出牌阶段限一次,每当你使用一张基本牌,你可以令一名角色摸一张牌并获得技能〖琴舞〗直到其下一回合结束', + gwqinwu_info:'出牌阶段限一次,每当你使用一张基本牌,你可以令一名角色摸一张牌并获得技能〖琴舞〗直到其下一回合结束。', huanshu:'幻术', huanshu2:'幻术', huanshu3:'幻术', - huanshu_info:'结束阶段,你可以将一张手牌背面朝上置于你的武将牌上;当一名敌方角色使用一张与之颜色相同的锦囊牌时,你展示并移去此牌,取消锦囊的效果,然后摸两张牌;准备阶段,你移去武将牌上的“幻术”牌', + huanshu_info:'结束阶段,你可以将一张手牌背面朝上置于你的武将牌上;当一名敌方角色使用一张与之颜色相同的锦囊牌时,你展示并移去此牌,取消锦囊的效果,然后摸两张牌;准备阶段,你移去武将牌上的“幻术”牌。', gwjieyin:'结印', - gwjieyin_info:'出牌阶段,你可以视为使用瘟疫、燕子药水或昆恩法印(不能重复使用同一法术),技能两轮重置一次', + gwjieyin_info:'出牌阶段,你可以视为使用瘟疫、燕子药水或昆恩法印(不能重复使用同一法术),技能两轮重置一次。', zhengjun:'整军', - zhengjun_info:'锁定技,每当你使用或打出一张卡牌,若这是你在本局游戏中使用或打出的第二张与之同名的牌,你增加1点体力和体力上限;结束阶段,你可以观看牌堆顶的X张牌并获得其中一张,X为你以此法增加的体力上限数', + zhengjun_info:'锁定技,每当你使用或打出一张卡牌,若这是你在本局游戏中使用或打出的第二张与之同名的牌,你增加1点体力和体力上限;结束阶段,你可以观看牌堆顶的X张牌并获得其中一张,X为你以此法增加的体力上限数。', gwxuezhan:'血战', - gwxuezhan_info:'准备阶段,若你的手牌数为全场最少或之一,你可以获得一张十字召唤', + gwxuezhan_info:'准备阶段,若你的手牌数为全场最少或之一,你可以获得一张十字召唤。', jielue:'劫掠', - jielue_info:'锁定技,出牌阶段开始时,你从两个随机队友处各获得一张可使用的牌并依次使用之,然后被拿牌的队友摸一张牌', - jielue_old_info:'当你于回合内首次使用基本牌时,你可以获得两张该牌的复制(使用复制的牌时不触发此技能)', + jielue_info:'锁定技,出牌阶段开始时,你从两个随机队友处各获得一张可使用的牌并依次使用之,然后被拿牌的队友摸一张牌。', + jielue_old_info:'当你于回合内首次使用基本牌时,你可以获得两张该牌的复制(使用复制的牌时不触发此技能)。', gwfengchi:'风驰', - gwfengchi_info:'锁定技,出牌阶段开始时,你随机观看3个可以在出牌阶段使用的技能,并获得其中一个技能直到此阶段结束', + gwfengchi_info:'锁定技,出牌阶段开始时,你随机观看3个可以在出牌阶段使用的技能,并获得其中一个技能直到此阶段结束。', gwjushi:'巨噬', gwjushi2:'巨噬', - gwjushi_info:'出牌阶段限一次,你可以将一名距离1以内的其他角色的一张随机牌置于你的武将牌上;当你受到伤害后,令“巨噬”牌回到原来的位置;准备阶段,你获得武将牌上的“巨噬”牌', + gwjushi_info:'出牌阶段限一次,你可以将一名距离1以内的其他角色的一张随机牌置于你的武将牌上;当你受到伤害后,令“巨噬”牌回到原来的位置;准备阶段,你获得武将牌上的“巨噬”牌。', bolang:'搏浪', - bolang_info:'准备阶段,你可以观看牌堆顶的六张牌,然后将其中至多3张移入弃牌堆;每当你造成一次伤害,你可以从弃牌堆中获得一张以此法移入弃牌堆的牌(每回合限发动一次)', + bolang_info:'准备阶段,你可以观看牌堆顶的六张牌,然后将其中至多3张移入弃牌堆;每当你造成一次伤害,你可以从弃牌堆中获得一张以此法移入弃牌堆的牌(每回合限发动一次)。', lingji:'灵计', - lingji_info:'出牌阶段限一次,你可以摸两张牌并弃置两张牌,若弃置的牌花色相同,你获得一张随机铜卡并展示;若弃置的牌点数相同,你获得一张随机银卡并展示', + lingji_info:'出牌阶段限一次,你可以摸两张牌并弃置两张牌,若弃置的牌花色相同,你获得一张随机铜卡并展示;若弃置的牌点数相同,你获得一张随机银卡并展示。', gwjinyan:'金焰', - gwjinyan_info:'锁定技,准备阶段,若游戏轮数为3的倍数,你获得一张随机金卡;当游戏轮数不是3的倍数时,你防止所有伤害', + gwjinyan_info:'锁定技,准备阶段,若游戏轮数为3的倍数,你获得一张随机金卡;当游戏轮数不是3的倍数时,你防止所有伤害。', gwshenyu:'神愈', - gwshenyu_info:'准备阶段,你可以令一名角色选择一项:回复1点体力,或从弃牌堆中获得一张非金法术牌(直到洗牌入牌堆前该牌不能再以此法获得)', + gwshenyu_info:'准备阶段,你可以令一名角色选择一项:回复1点体力,或从弃牌堆中获得一张非金法术牌(直到洗牌入牌堆前该牌不能再以此法获得)。', junchi:'骏驰', - junchi_info:'每当一名其他角色使用一张杀,若目标不是你,你可以对杀的目标使用一张牌,并摸一张牌,每回合限一次', - junchi_old_info:'当一名其他角色使用杀对一个目标结算后,该角色可以交给你一张牌,然后你可以对杀的目标使用一张牌,若如此做,你回复1点体力,杀的使用者摸一张牌', + junchi_info:'每当一名其他角色使用一张杀,若目标不是你,你可以对杀的目标使用一张牌,并摸一张牌,每回合限一次。', + junchi_old_info:'当一名其他角色使用杀对一个目标结算后,该角色可以交给你一张牌,然后你可以对杀的目标使用一张牌,若如此做,你回复1点体力,杀的使用者摸一张牌。', gw_dudayuanshuai1:'杜达元帅', - gw_dudayuanshuai1_info:'当你成为其他角色使用牌的目标时,你可以使用此牌取消之,然后获得对你使用的牌', + gw_dudayuanshuai1_info:'当你成为其他角色使用牌的目标时,你可以使用此牌取消之,然后获得对你使用的牌。', gw_dudayuanshuai2:'杜达元帅', - gw_dudayuanshuai2_info:'你不能使用、打出或弃置此牌;结束阶段,若此牌在你手牌中,你弃置之并随机弃置一张手牌', + gw_dudayuanshuai2_info:'你不能使用、打出或弃置此牌;结束阶段,若此牌在你手牌中,你弃置之并随机弃置一张手牌。', hupeng:'呼朋', - hupeng_info:'出牌阶段限一次,你可以弃置一张牌并将一张杜达元帅置入一名角色的手牌', + hupeng_info:'出牌阶段限一次,你可以弃置一张牌并将一张杜达元帅置入一名角色的手牌。', shuijian:'水箭', - shuijian_info:'准备阶段,你可以弃置一张手牌视为对所有敌方角色使用一张万箭齐发', + shuijian_info:'准备阶段,你可以弃置一张手牌视为对所有敌方角色使用一张万箭齐发。', yunhuo:'陨火', - yunhuo_info:'锁定技,准备阶段,若游戏轮数为4的倍数,你令所有敌方角色随机弃置一张手牌(若没有手牌改为受到1点火焰伤害),然后在此回合结束后获得一个额外回合', + yunhuo_info:'锁定技,准备阶段,若游戏轮数为4的倍数,你令所有敌方角色随机弃置一张手牌(若没有手牌改为受到1点火焰伤害),然后在此回合结束后获得一个额外回合。', yinzhang:'银杖', - yinzhang_info:'出牌阶段限一次,你可以弃置一张牌,然后发现一张银卡法术', + yinzhang_info:'出牌阶段限一次,你可以弃置一张牌,然后发现一张银卡法术。', gwtianbian:'天变', - gwtianbian_info:'出牌阶段开始时,你可以选择一项:随机使用一张对全场有正面效果的牌;或随机使用一张对全场有负面效果的牌', + gwtianbian_info:'出牌阶段开始时,你可以选择一项:随机使用一张对全场有正面效果的牌;或随机使用一张对全场有负面效果的牌。', gwxiaoshou:'枭首', - gwxiaoshou_info:'出牌阶段限两次,你可以弃置一张牌对场上体力值最高(或之一)的一名角色造成1点伤害', + gwxiaoshou_info:'出牌阶段限两次,你可以弃置一张牌对场上体力值最高(或之一)的一名角色造成1点伤害。', gwjiquan:'集权', - gwjiquan_info:'出牌阶段限一次,你可以从任意名角色处各获得一张牌,每拿一张牌,被拿牌的角色视为对你使用一张杀', + gwjiquan_info:'出牌阶段限一次,你可以从任意名角色处各获得一张牌,每拿一张牌,被拿牌的角色视为对你使用一张杀。', nuhou:'怒吼', - nuhou_info:'每当你受到一次伤害,你可以弃置一张牌,然后对一名随机敌人造成1点伤害并随机弃置其一张牌', + nuhou_info:'每当你受到一次伤害,你可以弃置一张牌,然后对一名随机敌人造成1点伤害并随机弃置其一张牌。', shewu:'蛇舞', - shewu_info:'出牌阶段限一次,你可以弃置至多三张牌然后摸三张牌;若你弃置了至少两张牌,你本回合使用牌无视距离;若你弃置了三张牌,你回复1点体力', + shewu_info:'出牌阶段限一次,你可以弃置至多三张牌然后摸三张牌;若你弃置了至少两张牌,你本回合使用牌无视距离;若你弃置了三张牌,你回复1点体力。', gwzhanjiang:'斩将', - gwzhanjiang_info:'每轮限一次,在一名角色的准备阶段,你可以弃置一张牌,然后所有角色可以对该角色使用一张杀,出杀的角色在响应时摸一张牌,当有至少两名角色响应后终止结算', + gwzhanjiang_info:'每轮限一次,在一名角色的准备阶段,你可以弃置一张牌,然后所有角色可以对该角色使用一张杀,出杀的角色在响应时摸一张牌,当有至少两名角色响应后终止结算。', gwchuanxin:'穿心', - gwchuanxin_info:'你的攻击范围基数为你当前体力值;每当你对一名角色使用杀结算完毕后,你可以亮出牌堆顶的一张牌,若为黑色,视为对目标再使用一张杀', + gwchuanxin_info:'你的攻击范围基数为你当前体力值;每当你对一名角色使用杀结算完毕后,你可以亮出牌堆顶的一张牌,若为黑色,视为对目标再使用一张杀。', fengjian:'风剑', - fengjian_info:'每当你使用一张锦囊牌,你可以视为对一名不是此牌目标的角色使用一张雷杀,若如此做,你获得潜行直到下一回合开始', + fengjian_info:'每当你使用一张锦囊牌,你可以视为对一名不是此牌目标的角色使用一张雷杀,若如此做,你获得潜行直到下一回合开始。', huandie:'幻蝶', - huandie_info:'准备阶段,你可以摸一张牌,并令任意名其他角色摸两张牌,若如此做,此回合结束时,所有手牌数大于体力值的角色需弃置两张手牌', + huandie_info:'准备阶段,你可以摸一张牌,并令任意名其他角色摸两张牌,若如此做,此回合结束时,所有手牌数大于体力值的角色需弃置两张手牌。', xuezhou:'血咒', - xuezhou_info:'准备阶段,你可以选择一项效果直到下一回合开始:1. 每当一名其他角色在一个回合中首次受到伤害,该角色失去1点体力,你回复1点体力;2. 每当一名其他角色在一个回合中首次造成伤害,该角色失去1点体力,你(若不是受伤害角色)回复1点体力', + xuezhou_info:'准备阶段,你可以选择一项效果直到下一回合开始:1. 每当一名其他角色在一个回合中首次受到伤害,该角色失去1点体力,你回复1点体力;2. 每当一名其他角色在一个回合中首次造成伤害,该角色失去1点体力,你(若不是受伤害角色)回复1点体力。', fayin:'法印', - fayin_info:'每当你使用一张杀,你可以弃置一张牌并获得一个随机法印效果:1. 目标随机弃置两张牌;2. 目标进入混乱状态直到下一回合开始;3. 对目标造成1点火属性伤害;4. 获得1点护甲;5. 令目标翻面并摸一张牌', + fayin_info:'每当你使用一张杀,你可以弃置一张牌并获得一个随机法印效果:1. 目标随机弃置两张牌;2. 目标进入混乱状态直到下一回合开始;3. 对目标造成1点火属性伤害;4. 获得1点护甲;5. 令目标翻面并摸一张牌。', gwbaquan:'霸权', - gwbaquan_info:'出牌阶段限一次,你可以获得一名其他角色的所有牌,然后还给其等量的牌,若你归还的牌均为你得到的牌且该角色体力值不小于你,你对其造成1点伤害', + gwbaquan_info:'出牌阶段限一次,你可以获得一名其他角色的所有牌,然后还给其等量的牌,若你归还的牌均为你得到的牌且该角色体力值不小于你,你对其造成1点伤害。', hunmo:'魂墨', - hunmo_info:'出牌阶段,若你手牌数少于2,你可以选择一名手牌数小于2的其他角色,观看牌堆顶的两张牌,你获得一张并交给其另一张;若你手牌数不少2,你可以选择一名手牌数不少于2的其他角色,你弃置一张手牌,然后观看并弃置其一张手牌。每回合对同一名角色最多发动一次', + hunmo_info:'出牌阶段,若你手牌数少于2,你可以选择一名手牌数小于2的其他角色,观看牌堆顶的两张牌,你获得一张并交给其另一张;若你手牌数不少2,你可以选择一名手牌数不少于2的其他角色,你弃置一张手牌,然后观看并弃置其一张手牌。每回合对同一名角色最多发动一次。', huihun:'回魂', - huihun_info:'结束阶段,你可以从弃牌堆中获得本回合使用的前两张红色牌', + huihun_info:'结束阶段,你可以从弃牌堆中获得本回合使用的前两张红色牌。', lanquan:'远略', lanquan_backup:'远略', - lanquan_info:'出牌阶段限一次,你可以观看牌堆顶的六张牌,并选择一张使用', + lanquan_info:'出牌阶段限一次,你可以观看牌堆顶的六张牌,并选择一张使用。', chaoyong:'潮涌', - chaoyong_info:'准备阶段,你可以弃置一张牌,视为对所有敌方角色使用一张南蛮入侵或万箭齐发', + chaoyong_info:'准备阶段,你可以弃置一张牌,视为对所有敌方角色使用一张南蛮入侵或万箭齐发。', } }; }); diff --git a/character/hearth.js b/character/hearth.js index 442b1ca0e..18c39e264 100644 --- a/character/hearth.js +++ b/character/hearth.js @@ -9635,64 +9635,64 @@ game.import('character',function(lib,game,ui,get,ai,_status){ hs_duyaxinshi:'渡鸦信使', hshuanyu:'幻羽', - hshuanyu_info:'每当你受到一次伤害,你获得发现一张炉石衍生牌', + hshuanyu_info:'每当你受到一次伤害,你获得发现一张炉石衍生牌。', hsfashu:'法术', hsfashu_anyingjingxiang:'暗影镜像', - hsfashu_anyingjingxiang_info:'当你使用或打出一张牌后,暗影镜像变为该牌的复制', + hsfashu_anyingjingxiang_info:'当你使用或打出一张牌后,暗影镜像变为该牌的复制。', hsfashu_buwendingyibian:'不稳定异变', - hsfashu_buwendingyibian_info:'出牌阶段对一名角色使用,目标将一张手牌重铸为同类别的牌,本回合可重复使用此牌,最多使用X次,X为当前体力值', + hsfashu_buwendingyibian_info:'出牌阶段对一名角色使用,目标将一张手牌重铸为同类别的牌,本回合可重复使用此牌,最多使用X次,X为当前体力值。', hualing:'化灵', - hualing_info:'每三轮限一次,你可以选择一名其他角色,获得其一项技能,然后将其随机变形为一名强度高一级的武将', + hualing_info:'每三轮限一次,你可以选择一名其他角色,获得其一项技能,然后将其随机变形为一名强度高一级的武将。', yibian:'异变', - yibian_info:'锁定技,出牌阶段开始时,若你没有不稳定异变,则将一张不稳定异变置于你的手牌', + yibian_info:'锁定技,出牌阶段开始时,若你没有不稳定异变,则将一张不稳定异变置于你的手牌。', wxuying:'虚影', - wxuying_info:'锁定技,准备阶段,你移去手牌中的暗影镜像,然后获得一张暗影镜像(当你使用或打出一张牌后,暗影镜像变为该牌的复制);当你回合内使用暗影镜像时,你摸一张牌;当你回合外使用暗影镜像时,你获得潜行直到下一回合开始', + wxuying_info:'锁定技,准备阶段,你移去手牌中的暗影镜像,然后获得一张暗影镜像(当你使用或打出一张牌后,暗影镜像变为该牌的复制);当你回合内使用暗影镜像时,你摸一张牌;当你回合外使用暗影镜像时,你获得潜行直到下一回合开始。', zhoujiang:'咒降', - zhoujiang_info:'锁定技,每当你使用一张普通锦囊牌,你将一张随机“诅咒”牌置于你的手牌', + zhoujiang_info:'锁定技,每当你使用一张普通锦囊牌,你将一张随机“诅咒”牌置于你的手牌。', muyin:'暮隐', - muyin_info:'锁定技,每当你失去最后一张手牌,你获得潜行直到下一回合开始', + muyin_info:'锁定技,每当你失去最后一张手牌,你获得潜行直到下一回合开始。', tqchuanyue:'穿越', - tqchuanyue_info:'锁定技,准备阶段开始时,你随机选择一个被削弱过的炉石技能,获得其未削弱的版本,替换上一个以此法获得的技能', + tqchuanyue_info:'锁定技,准备阶段开始时,你随机选择一个被削弱过的炉石技能,获得其未削弱的版本,替换上一个以此法获得的技能。', // hsxiujian:'袖箭', - // hsxiujian_info:'锁定技,在你对一名敌方角色使用一张锦囊牌后,你视为对其使用一张杀', + // hsxiujian_info:'锁定技,在你对一名敌方角色使用一张锦囊牌后,你视为对其使用一张杀。', // hsyingzong:'影踪', // hsyingzong_info:'', hsxingyi:'星移', - hsxingyi_info:'锁定技,每当一名敌方角色于回合内使用主动技能,你获得此技能直到下一回合结束', + hsxingyi_info:'锁定技,每当一名敌方角色于回合内使用主动技能,你获得此技能直到下一回合结束。', hshuanling:'幻灵', hshuanling_bg:'灵', - hshuanling_info:'结束阶段,你可以弃置至多X张牌(X为你装备区内的牌数且至少为1)并摸等量的牌,每弃置一张牌,你随机使用一张本局敌方角色使用过的单目标非转化普通锦囊牌,随机指定一个具有正收益的角色为目标', - // hshuanling_info:'锁定技,当你于回合内使用首张指定其他角色为惟一目标的锦囊牌后,你视为对其随机使用一张锦囊牌(此牌对你有正面效果)', - // hshuanling_info:'每当你使用一张基本牌或普通锦囊牌,你可以弃置任意张牌令其增加或减少等量的目标', + hshuanling_info:'结束阶段,你可以弃置至多X张牌(X为你装备区内的牌数且至少为1)并摸等量的牌,每弃置一张牌,你随机使用一张本局敌方角色使用过的单目标非转化普通锦囊牌,随机指定一个具有正收益的角色为目标。', + // hshuanling_info:'锁定技,当你于回合内使用首张指定其他角色为惟一目标的锦囊牌后,你视为对其随机使用一张锦囊牌(此牌对你有正面效果)。', + // hshuanling_info:'每当你使用一张基本牌或普通锦囊牌,你可以弃置任意张牌令其增加或减少等量的目标。', huanfeng:'唤风', - huanfeng_info:'锁定技,准备阶段,若你有4个图腾,你失去所有图腾,然后获得并召唤随从奥拉基尔', + huanfeng_info:'锁定技,准备阶段,若你有4个图腾,你失去所有图腾,然后获得并召唤随从奥拉基尔。', asyouzhang:'幽瘴', - asyouzhang_info:'结束阶段,若你的手牌中没有基本牌/锦囊牌/装备牌,你可以获得牌堆顶的一张基本牌/锦囊牌/装备牌,并可以立即使用', + asyouzhang_info:'结束阶段,若你的手牌中没有基本牌/锦囊牌/装备牌,你可以获得牌堆顶的一张基本牌/锦囊牌/装备牌,并可以立即使用。', ylyuchu:'育雏', - ylyuchu_info:'锁定技,每当你回复1点体力,你获得一只雏龙随从(不超过3只);结束阶段,你每有一只雏龙,便随机选择一名其他角色,在该角色的下个回合开始前你切换至该雏龙,然后在此回合结束后进行一个额外回合并切换回本体', + ylyuchu_info:'锁定技,每当你回复1点体力,你获得一只雏龙随从(不超过3只);结束阶段,你每有一只雏龙,便随机选择一名其他角色,在该角色的下个回合开始前你切换至该雏龙,然后在此回合结束后进行一个额外回合并切换回本体。', nsaiqi:'哀泣', - nsaiqi_info:'锁定技,每当你使用一张牌,你移除牌堆顶的三张牌;你的手牌上限始终+1', + nsaiqi_info:'锁定技,每当你使用一张牌,你移除牌堆顶的三张牌;你的手牌上限始终+1。', nsbeiming:'悲鸣', - nsbeiming_info:'锁定技,当你移除的牌不少于9张时,你摸一张牌,然后将移除的牌以任意顺序置于牌堆顶;当被移除过的牌在牌堆顶时(洗牌后重置),你的不能发动【哀泣】移除牌', + nsbeiming_info:'锁定技,当你移除的牌不少于9张时,你摸一张牌,然后将移除的牌以任意顺序置于牌堆顶;当被移除过的牌在牌堆顶时(洗牌后重置),你的不能发动【哀泣】移除牌。', hstianqi_dalian:'达里安', - hstianqi_dalian_info:'每当你造成一次伤害,你回复等量的体力', + hstianqi_dalian_info:'每当你造成一次伤害,你回复等量的体力。', hstianqi_shali:'莎莉', - hstianqi_shali_info:'每当你回复体力,你获得等量的护甲', + hstianqi_shali_info:'每当你回复体力,你获得等量的护甲。', hstianqi_nazigelin:'纳兹戈林', - hstianqi_nazigelin_info:'当你装备此牌时,你获得1点护甲', + hstianqi_nazigelin_info:'当你装备此牌时,你获得1点护甲。', hstianqi_suolasi:'索拉斯', - hstianqi_suolasi_info:'当你失去此牌时,你回复1点体力', + hstianqi_suolasi_info:'当你失去此牌时,你回复1点体力。', hschaoxi:'潮袭', - hschaoxi_info:'锁定技,每当你造成一次伤害,你获得两张随机鱼人牌', + hschaoxi_info:'锁定技,每当你造成一次伤害,你获得两张随机鱼人牌。', hsnitai:'拟态', - hsnitai_info:'锁定技,出牌阶段开始时,你获得一张随机炉石角色的技能牌', + hsnitai_info:'锁定技,出牌阶段开始时,你获得一张随机炉石角色的技能牌。', hstianqi:'天启', - hstianqi_info:'出牌阶段限一次,你可以选择一项:弃置一张手牌并随机装备一件天启骑士(不能替换现有装备),或弃置一张装备区内的牌并摸两张牌;当你以此法弃置天启骑士时,若你武将牌上没有对应的天启骑士,你将其置于你的武将牌上;准备阶段,若你的武将牌上有4张天启骑士,你获得游戏胜利', + hstianqi_info:'出牌阶段限一次,你可以选择一项:弃置一张手牌并随机装备一件天启骑士(不能替换现有装备),或弃置一张装备区内的牌并摸两张牌;当你以此法弃置天启骑士时,若你武将牌上没有对应的天启骑士,你将其置于你的武将牌上;准备阶段,若你的武将牌上有4张天启骑士,你获得游戏胜利。', hspuzhao:'普照', - hspuzhao_info:'出牌阶段限一次,你可以弃置一张红桃牌,然后令至多三名随机友方角色各摸一张牌(若你无其他队友,改为摸两张牌)', + hspuzhao_info:'出牌阶段限一次,你可以弃置一张红桃牌,然后令至多三名随机友方角色各摸一张牌(若你无其他队友,改为摸两张牌)。', hsyanxin:'炎心', - hsyanxin_info:'锁定技,在你摸牌时,若牌堆中有红色牌,你摸到的首张牌必为红色', + hsyanxin_info:'锁定技,在你摸牌时,若牌堆中有红色牌,你摸到的首张牌必为红色。', ysjqisha:'七煞', ysjqisha_ju:'惧之煞', ysjqisha_kuang:'狂之煞', @@ -9701,457 +9701,457 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ysjqisha_wang:'惘之煞', ysjqisha_hen:'恨之煞', ysjqisha_ao:'傲之煞', - ysjqisha_info:'锁定技,每当你造成或受到伤害,你令对方随机获得一种消极状态直到下一回合结束', + ysjqisha_info:'锁定技,每当你造成或受到伤害,你令对方随机获得一种消极状态直到下一回合结束。', zhaochao:'招潮', - zhaochao_info:'锁定技,结束阶段,你视为对一名随机敌人使用一张杀;若此杀被闪避,你视为对另一名随机敌人使用一张杀', + zhaochao_info:'锁定技,结束阶段,你视为对一名随机敌人使用一张杀;若此杀被闪避,你视为对另一名随机敌人使用一张杀。', hllingxi:'灵息', - hllingxi_info:'出牌阶段,你可以令一名已受伤的其他角色弃置两张牌并回复1点体力(同阶段对一名角色限用一次);结束阶段,你可以回复1点体力', + hllingxi_info:'出牌阶段,你可以令一名已受伤的其他角色弃置两张牌并回复1点体力(同阶段对一名角色限用一次);结束阶段,你可以回复1点体力。', xiyong:'汐涌', - xiyong_info:'结束阶段,你可以摸一张牌并可以使用之,若你使用了此牌,你再摸一张牌', + xiyong_info:'结束阶段,你可以摸一张牌并可以使用之,若你使用了此牌,你再摸一张牌。', hsjixie:'机械', hsjixie_zhadan:'炸弹机器人', hsjixie_zhadan_pop:'炸弹', - hsjixie_zhadan_info:'出牌阶段对自己使用,对一名随机敌人造成1点火属性伤害', + hsjixie_zhadan_info:'出牌阶段对自己使用,对一名随机敌人造成1点火属性伤害。', yindan:'引弹', - yindan_info:'出牌阶段限一次,你可以弃置一张黑桃牌并失去1点体力,然后获得两张炸弹机器人', + yindan_info:'出牌阶段限一次,你可以弃置一张黑桃牌并失去1点体力,然后获得两张炸弹机器人。', huanjue:'幻觉', - huanjue_info:'每当你使用一张牌,若此牌指定了惟一目标,你可以发现一张牌,然后可以代替此牌结算', + huanjue_info:'每当你使用一张牌,若此牌指定了惟一目标,你可以发现一张牌,然后可以代替此牌结算。', oldhuanjue:'幻觉', - oldhuanjue_info:'每回合限一次,当你成为一名其他角色的卡牌惟一目标时,你可以发现一张牌代替此牌', + oldhuanjue_info:'每回合限一次,当你成为一名其他角色的卡牌惟一目标时,你可以发现一张牌代替此牌。', zhziwu:'紫雾', - zhziwu_info:'每当你于回合外失去牌,你可以令当前回合角色不能使用杀直到回合结束', - huanjue_info_old:'每名角色的回合限一次,当你使用卡牌指定其他角色为惟一目标,或当其他角色使用卡牌指定你为惟一目标时,你可以发现一张牌代替此牌,然后该牌的使用者在结算后摸一张牌', + zhziwu_info:'每当你于回合外失去牌,你可以令当前回合角色不能使用杀直到回合结束。', + huanjue_info_old:'每名角色的回合限一次,当你使用卡牌指定其他角色为惟一目标,或当其他角色使用卡牌指定你为惟一目标时,你可以发现一张牌代替此牌,然后该牌的使用者在结算后摸一张牌。', yinzong:'影踪', - yinzong_info:'锁定技,每当你失去装备区内的牌,你获得一张闪', + yinzong_info:'锁定技,每当你失去装备区内的牌,你获得一张闪。', tansuo:'探索', - tansuo_info:'出牌阶段限一次,你可以弃置一张牌,然后发现一张炉石衍生牌', + tansuo_info:'出牌阶段限一次,你可以弃置一张牌,然后发现一张炉石衍生牌。', srjici:'棘刺', - srjici_info:'锁定技,每当你造成一次伤害,你摸一张牌,受伤害角色随机弃置一张牌', + srjici_info:'锁定技,每当你造成一次伤害,你摸一张牌,受伤害角色随机弃置一张牌。', lieqi:'猎奇', - lieqi_info:'准备和结束阶段,你可以指定一名角色,从一张该角色手牌与另外两张随机牌中猜测哪张为该角色手牌,若猜中,你获得一张该牌的复制(同一回合不能指定相同角色)', + lieqi_info:'准备和结束阶段,你可以指定一名角色,从一张该角色手牌与另外两张随机牌中猜测哪张为该角色手牌,若猜中,你获得一张该牌的复制(同一回合不能指定相同角色)。', azaowu:'造物', azaowu_backup:'造物', - azaowu_info:'出牌阶段限一次,你可以将一张基本牌当作任意一张基本牌使用', + azaowu_info:'出牌阶段限一次,你可以将一张基本牌当作任意一张基本牌使用。', shouwang:'守望', shouwang2:'守望', - shouwang_info:'每名角色每局限一次,当一名角色进入濒死状态时,你可以令其回复1点体力并获得1点护甲', - shouwang_info_alter:'每名角色每局限一次,当一名角色进入濒死状态时,你可以令其回复1点体力', + shouwang_info:'每名角色每局限一次,当一名角色进入濒死状态时,你可以令其回复1点体力并获得1点护甲。', + shouwang_info_alter:'每名角色每局限一次,当一名角色进入濒死状态时,你可以令其回复1点体力。', qingtian:'擎天', - qingtian_info:'锁定技,若你的体力值为全场最多,你受到的伤害始终+1', + qingtian_info:'锁定技,若你的体力值为全场最多,你受到的伤害始终+1。', qianfu:'潜伏', qianfu2:'潜伏', qianfu2_bg:'伏', - qianfu_info:'锁定技,在你死亡前,若你没有进入潜伏状态,你弃置所有牌并进入潜伏状态;当你体力值回复到3(或体力上限)时,你解除潜伏状态并摸三张牌', + qianfu_info:'锁定技,在你死亡前,若你没有进入潜伏状态,你弃置所有牌并进入潜伏状态;当你体力值回复到3(或体力上限)时,你解除潜伏状态并摸三张牌。', shimo:'尸魔', - shimo_info:'锁定技,距离你为1的角色受到伤害时,你回复1点体力,若你没受伤,改为摸一张牌', + shimo_info:'锁定技,距离你为1的角色受到伤害时,你回复1点体力,若你没受伤,改为摸一张牌。', lieyang:'裂阳', - lieyang_info:'锁定技,每当你于回合内使用一张锦囊牌,你获得一张随机锦囊牌;当你发动三次此技能后,你本回合不能再使用锦囊牌', + lieyang_info:'锁定技,每当你于回合内使用一张锦囊牌,你获得一张随机锦囊牌;当你发动三次此技能后,你本回合不能再使用锦囊牌。', zhuilie:'追猎', - zhuilie_info:'准备阶段,你可以弃置一张牌,然后将牌堆顶六张牌中的基本牌移至弃牌堆;若移入弃牌堆的牌超过三张,你摸一张牌', + zhuilie_info:'准备阶段,你可以弃置一张牌,然后将牌堆顶六张牌中的基本牌移至弃牌堆;若移入弃牌堆的牌超过三张,你摸一张牌。', szbianshen:'变身', - szbianshen_info:'限定技,回合开始时,若游戏轮数不少于3,你可以随机观看5张体力上限不小于5的武将牌,将武将牌替换为其中一张', + szbianshen_info:'限定技,回合开始时,若游戏轮数不少于3,你可以随机观看5张体力上限不小于5的武将牌,将武将牌替换为其中一张。', kekao:'科考', - kekao_info:'结束阶段,你可以发现一张延时锦囊牌', + kekao_info:'结束阶段,你可以发现一张延时锦囊牌。', jinhua:'进化', - jinhua_info:'锁定技,每当你以自己为目标使用一张非转化的锦囊牌,你发现一个技能并获得之', + jinhua_info:'锁定技,每当你以自己为目标使用一张非转化的锦囊牌,你发现一个技能并获得之。', hsqizhou:'祈咒', hsqizhou_feng:'风之祈咒', - hsqizhou_feng_info:'出牌阶段对自己使用,令所有目标的敌人打出一张杀或受到1点雷属性伤害', + hsqizhou_feng_info:'出牌阶段对自己使用,令所有目标的敌人打出一张杀或受到1点雷属性伤害。', hsqizhou_shui:'水之祈咒', - hsqizhou_shui_info:'出牌阶段对自己使用,回复2点体力', + hsqizhou_shui_info:'出牌阶段对自己使用,回复2点体力。', hsqizhou_huo:'火之祈咒', - hsqizhou_huo_info:'出牌阶段对任意角色使用,令目标受到1点火属性伤害', + hsqizhou_huo_info:'出牌阶段对任意角色使用,令目标受到1点火属性伤害。', hsqizhou_tu:'土之祈咒', - hsqizhou_tu_info:'出牌阶段对任意其他角色使用,令目标获得1点护甲', + hsqizhou_tu_info:'出牌阶段对任意其他角色使用,令目标获得1点护甲。', kqizhou:'祈咒', - kqizhou_info:'准备阶段,若你于上回合使用过锦囊牌,则可以获得一张元素祈咒', + kqizhou_info:'准备阶段,若你于上回合使用过锦囊牌,则可以获得一张元素祈咒。', jingcu:'晶簇', - jingcu_info:'出牌阶段,你可以减少1点体力上限并摸两张牌', + jingcu_info:'出牌阶段,你可以减少1点体力上限并摸两张牌。', shengzhang:'生长', - shengzhang_info:'锁定技,若你于弃牌阶段弃置了牌,你增加1点体力上限', + shengzhang_info:'锁定技,若你于弃牌阶段弃置了牌,你增加1点体力上限。', pyuhuo:'浴火', - pyuhuo_info:'锁定技,在你首次进入濒死状态时,你弃置所有牌、重置武将牌、将体力和体力上限变为4并摸四张牌;在你第二次进入濒死状态时,你弃置所有牌、重置武将牌、将体力和体力上限变为6并摸六张牌', + pyuhuo_info:'锁定技,在你首次进入濒死状态时,你弃置所有牌、重置武将牌、将体力和体力上限变为4并摸四张牌;在你第二次进入濒死状态时,你弃置所有牌、重置武将牌、将体力和体力上限变为6并摸六张牌。', mengye:'梦魇', - mengye_info:'结束阶段,你可以选择一名有手牌的角色将其一张随机的非毒手牌转化为毒,然后令其获得1点护甲', + mengye_info:'结束阶段,你可以选择一名有手牌的角色将其一张随机的非毒手牌转化为毒,然后令其获得1点护甲。', mengye_old:'梦魇', mengye_old2:'梦魇', - mengye_old_info:'回合结束后,你可以翻面并指定一名的非主公角色,由你控制其进行一个额外的回合。在此回合中,你的本体不参与游戏', + mengye_old_info:'回合结束后,你可以翻面并指定一名的非主公角色,由你控制其进行一个额外的回合。在此回合中,你的本体不参与游戏。', fuhua:'腐化', fuhua2:'腐化', - fuhua_info:'出牌阶段,你可以将一张毒交给一名没有魔血技能的其他角色,该角色选择一项:1. 获得技能魔血,此后每个结束阶段需交给你一张手牌;2. 视为你对其使用一张决斗', + fuhua_info:'出牌阶段,你可以将一张毒交给一名没有魔血技能的其他角色,该角色选择一项:1. 获得技能魔血,此后每个结束阶段需交给你一张手牌;2. 视为你对其使用一张决斗。', moxie:'魔血', moxie_info:'锁定技,当你因【毒】失去体力时,你改为摸两张牌;结束阶段,你将一张随机手牌转化为毒。', gfuhun:'附魂', - gfuhun_info:'结束阶段,若你未翻面,你可以和一名其他角色拼点,若你赢,你将武将牌翻至背面,该角色进入混乱状态直到下一回合结束', + gfuhun_info:'结束阶段,若你未翻面,你可以和一名其他角色拼点,若你赢,你将武将牌翻至背面,该角色进入混乱状态直到下一回合结束。', hlongyi:'龙裔', - hlongyi_info:'锁定技,你的黑色牌不占用手牌上限', + hlongyi_info:'锁定技,你的黑色牌不占用手牌上限。', zhongji:'重击', - zhongji_info:'每当你即将造成伤害,可弃置一张黑色手牌令伤害+1', + zhongji_info:'每当你即将造成伤害,可弃置一张黑色手牌令伤害+1。', fuwen:'符文', - fuwen_info:'若你弃牌阶段弃置了锦囊牌,你可以获得1点护甲', + fuwen_info:'若你弃牌阶段弃置了锦囊牌,你可以获得1点护甲。', jinzhou:'禁咒', - jinzhou_info:'结束阶段,若你手牌中有黑桃牌,你可以令一名其他角色的非锁定技失效直到其下一回合结束', + jinzhou_info:'结束阶段,若你手牌中有黑桃牌,你可以令一名其他角色的非锁定技失效直到其下一回合结束。', midian:'秘典', - midian_info:'出牌阶段限一次,你可以弃置一张锦囊牌,然后随机获得三张锦囊牌', + midian_info:'出牌阶段限一次,你可以弃置一张锦囊牌,然后随机获得三张锦囊牌。', yuelu:'月露', - yuelu_info:'在一名角色的濒死阶段,你可以弃置一张黑色牌令其回复1点体力并获得1点护甲', - yuelu_info_alter:'在一名角色的濒死阶段,你可以弃置一张黑色牌令其回复1点体力', + yuelu_info:'在一名角色的濒死阶段,你可以弃置一张黑色牌令其回复1点体力并获得1点护甲。', + yuelu_info_alter:'在一名角色的濒死阶段,你可以弃置一张黑色牌令其回复1点体力。', xingluo:'星落', - xingluo_info:'准备阶段,你可以令任意名手牌数多于你的角色各弃置一张手牌,然后你可以从弃置的牌中选择一张加入手牌', + xingluo_info:'准备阶段,你可以令任意名手牌数多于你的角色各弃置一张手牌,然后你可以从弃置的牌中选择一张加入手牌。', yushou:'御兽', - yushou_info:'出牌阶段,你可以弃置一张牌并召唤一个随机的野兽宠物,回合开始阶段,你随机失去一个宠物', + yushou_info:'出牌阶段,你可以弃置一张牌并召唤一个随机的野兽宠物,回合开始阶段,你随机失去一个宠物。', yushou_misha:'米莎', - yushou_misha_info:'每当你受到一次伤害,你获得1点护甲', + yushou_misha_info:'每当你受到一次伤害,你获得1点护甲。', yushou_huofu:'霍弗', - yushou_huofu_info:'你可以将一张黑色牌当作决斗使用', + yushou_huofu_info:'你可以将一张黑色牌当作决斗使用。', yushou_leiouke:'雷欧克', - yushou_leiouke_info:'你每回合造成的首次伤害+1', + yushou_leiouke_info:'你每回合造成的首次伤害+1。', hsqingyu_hufu:'青玉护符', - hsqingyu_hufu_info:'令一名角色获得1点护甲', + hsqingyu_hufu_info:'令一名角色获得1点护甲。', hsqingyu_zhao:'青玉之爪', - hsqingyu_zhao_info:'当你装备此装备时,摸一张牌', + hsqingyu_zhao_info:'当你装备此装备时,摸一张牌。', hsqingyu_feibiao:'青玉飞镖', - hsqingyu_feibiao_info:'弃置一名角色的一张随机手牌和一张随机装备牌', + hsqingyu_feibiao_info:'弃置一名角色的一张随机手牌和一张随机装备牌。', hsqingyu_shandian:'青玉闪电', - hsqingyu_shandian_info:'对一名角色造成1点雷电伤害', + hsqingyu_shandian_info:'对一名角色造成1点雷电伤害。', hsqingyu_zhanfang:'青玉绽放', - hsqingyu_zhanfang_info:'令一名角色增加1点体力上限并摸一张牌', + hsqingyu_zhanfang_info:'令一名角色增加1点体力上限并摸一张牌。', ayuling:'玉灵', - ayuling_info:'每当你受到一次伤害,你可以获得一张随机青玉牌', + ayuling_info:'每当你受到一次伤害,你可以获得一张随机青玉牌。', qingzun:'青樽', - qingzun_info:'本局对战中,每当你使用一张青玉牌,你的手牌上限+1;当你累计使用两张青玉牌后,你可以于准备阶段摸一张牌;当你累计使用六张青玉牌后,你可以于结束阶段摸一张牌', - qingzun_info_alter:'本局对战中,每当你使用一张青玉牌,你的手牌上限+1;当你累计使用三张青玉牌后,你可以于准备阶段摸一张牌;当你累计使用九张青玉牌后,你可以于结束阶段摸一张牌', + qingzun_info:'本局对战中,每当你使用一张青玉牌,你的手牌上限+1;当你累计使用两张青玉牌后,你可以于准备阶段摸一张牌;当你累计使用六张青玉牌后,你可以于结束阶段摸一张牌。', + qingzun_info_alter:'本局对战中,每当你使用一张青玉牌,你的手牌上限+1;当你累计使用三张青玉牌后,你可以于准备阶段摸一张牌;当你累计使用九张青玉牌后,你可以于结束阶段摸一张牌。', lianjin:'炼金', - lianjin_info:'出牌阶段限一次,你可以弃置一张牌并获得一张由三张随机牌组成的药水;当你因弃置而失去药水牌时,你随机获得药水的组成卡牌之一', + lianjin_info:'出牌阶段限一次,你可以弃置一张牌并获得一张由三张随机牌组成的药水;当你因弃置而失去药水牌时,你随机获得药水的组成卡牌之一。', shouji:'收集', - shouji_info:'每当你使用一张杀,你可以获得一张目标随机手牌的复制;每当你的杀被闪避,你可以获得一张目标随机非特殊装备牌的复制;每回合限各限一次', + shouji_info:'每当你使用一张杀,你可以获得一张目标随机手牌的复制;每当你的杀被闪避,你可以获得一张目标随机非特殊装备牌的复制;每回合限各限一次。', guimou:'鬼谋', - guimou_info:'每当你受到一次伤害,你可以获得伤害来源的一张手牌,若此牌是黑色,你展示此牌并重复此过程', + guimou_info:'每当你受到一次伤害,你可以获得伤害来源的一张手牌,若此牌是黑色,你展示此牌并重复此过程。', yingxi:'影袭', - yingxi_info:'结束阶段,若你本回合未造成伤害,你可以将一张黑色牌当作杀对任意一名角色使用,若目标未受到伤害,此杀不可闪避', + yingxi_info:'结束阶段,若你本回合未造成伤害,你可以将一张黑色牌当作杀对任意一名角色使用,若目标未受到伤害,此杀不可闪避。', peiyu:'培育', - peiyu_info:'准备阶段,你可以令一名没有图腾的角色获得一个随机图腾直到其首次受到伤害', - peiyu_old_info:'出牌阶段,你可以弃置一张牌令一名没有图腾的角色获得一个随机图腾,或令一名有图腾的角色替换一个图腾;你死亡时,其他角色失去以此法获得的图腾', + peiyu_info:'准备阶段,你可以令一名没有图腾的角色获得一个随机图腾直到其首次受到伤害。', + peiyu_old_info:'出牌阶段,你可以弃置一张牌令一名没有图腾的角色获得一个随机图腾,或令一名有图腾的角色替换一个图腾;你死亡时,其他角色失去以此法获得的图腾。', wzhanyi:'战意', - wzhanyi_info:'你可以跳过出牌阶段,改为摸三张牌并展示之,将摸到的装备牌置于装备区,然后可以使用手牌中的杀', + wzhanyi_info:'你可以跳过出牌阶段,改为摸三张牌并展示之,将摸到的装备牌置于装备区,然后可以使用手牌中的杀。', shengteng:'升腾', - shengteng_info:'锁定技,每当你使用锦囊牌造成伤害,你增加1点体力上限并回复1点体力', + shengteng_info:'锁定技,每当你使用锦囊牌造成伤害,你增加1点体力上限并回复1点体力。', yuansu:'寂灭', - yuansu_info:'出牌阶段限一次,若你已损失的体力值不少于3,你可以将体力上限降至与体力值相同,视为使用一张元素毁灭', + yuansu_info:'出牌阶段限一次,若你已损失的体力值不少于3,你可以将体力上限降至与体力值相同,视为使用一张元素毁灭。', nuyan:'怒焰', nuyan2:'怒焰', nuyan_backup:'怒焰', - nuyan_info:'出牌阶段限一次,你可以将一张红色牌当作任意一张能造成伤害的牌使用(不得是你本局以此法使用过的牌)', - nuyan2_info:'出牌阶段限三次,你可以失去1点体力,视为使用任意一张能造成伤害的牌”', + nuyan_info:'出牌阶段限一次,你可以将一张红色牌当作任意一张能造成伤害的牌使用(不得是你本局以此法使用过的牌)。', + nuyan2_info:'出牌阶段限三次,你可以失去1点体力,视为使用任意一张能造成伤害的牌”。', chouhuo:'仇火', - chouhuo_info:'觉醒技,出牌阶段开始时,若你的怒焰技能已将可用的牌用完,你失去1点体力上限,获得2点护甲,然后将怒焰的描述改为“出牌阶段限三次,你可以失去1点体力,视为使用任意一张能造成伤害的牌”', + chouhuo_info:'觉醒技,出牌阶段开始时,若你的怒焰技能已将可用的牌用完,你失去1点体力上限,获得2点护甲,然后将怒焰的描述改为“出牌阶段限三次,你可以失去1点体力,视为使用任意一张能造成伤害的牌”。', hsdusu:'毒素', hsdusu_xueji:'血蓟', - hsdusu_xueji_info:'随机弃置一名角色的2张装备牌', + hsdusu_xueji_info:'随机弃置一名角色的2张装备牌。', hsdusu_shinancao:'石楠草', - hsdusu_shinancao_info:'令一名角色下一次造成的伤害+1', + hsdusu_shinancao_info:'令一名角色下一次造成的伤害+1。', hsdusu_kuyecao:'枯叶草', - hsdusu_kuyecao_info:'令一名角色获得技能潜行,直到其下一回合开始', + hsdusu_kuyecao_info:'令一名角色获得技能潜行,直到其下一回合开始。', hsdusu_huoyanhua:'火焰花', - hsdusu_huoyanhua_info:'对攻击范围内的一名角色造成1点火焰伤害', + hsdusu_huoyanhua_info:'对攻击范围内的一名角色造成1点火焰伤害。', hsdusu_huangxuecao:'皇血草', - hsdusu_huangxuecao_info:'摸两张牌', + hsdusu_huangxuecao_info:'摸两张牌。', duxin:'毒心', - duxin_info:'准备阶段和结束阶段,若你的手中没有毒素牌,你可以获得一张随机毒素牌', + duxin_info:'准备阶段和结束阶段,若你的手中没有毒素牌,你可以获得一张随机毒素牌。', oldduxin:'毒心', - oldduxin_info:'准备阶段和结束阶段,你可以获得一张随机毒素牌', + oldduxin_info:'准备阶段和结束阶段,你可以获得一张随机毒素牌。', hstuteng:'图腾', kuangluan:'狂乱', kuangluan2:'狂乱', - // kuangluan_info:'锁定技,每当你于回合内使用一张普通锦囊牌,便于出牌阶段结束时随机使用一张普通锦囊牌(随机指定目标)', - kuangluan_info:'锁定技,每当一名其他角色对你造成伤害,该角色进入混乱状态直到当前回合结束', + // kuangluan_info:'锁定技,每当你于回合内使用一张普通锦囊牌,便于出牌阶段结束时随机使用一张普通锦囊牌(随机指定目标)。', + kuangluan_info:'锁定技,每当一名其他角色对你造成伤害,该角色进入混乱状态直到当前回合结束。', zengli:'赠礼', - zengli_info:'出牌阶段限一次,你指定一名其他角色与你各装备一把武器', + zengli_info:'出牌阶段限一次,你指定一名其他角色与你各装备一把武器。', xiubu:'修补', - xiubu_info:'每当你装备一把未强化的武器,你可以获得数量等同于武器攻击范围的随机零件', + xiubu_info:'每当你装备一把未强化的武器,你可以获得数量等同于武器攻击范围的随机零件。', mobao:'魔爆', - mobao_info:'出牌阶段限一次,你可以弃置至多三张黑色牌,然后对所有于上轮对你造成过伤害的角色造成等同于你弃牌数的雷电伤害', + mobao_info:'出牌阶段限一次,你可以弃置至多三张黑色牌,然后对所有于上轮对你造成过伤害的角色造成等同于你弃牌数的雷电伤害。', xianji:'献祭', xianji2:'献祭', xianji3:'献祭', - xianji_info:'其他角色可以在其结束阶段弃置1~2张手牌并令你摸等量的牌,若如此做,直到其下一回合结束,每当你使用卡牌指定其为目标时,其摸一张牌', + xianji_info:'其他角色可以在其结束阶段弃置1~2张手牌并令你摸等量的牌,若如此做,直到其下一回合结束,每当你使用卡牌指定其为目标时,其摸一张牌。', xueren:'血刃', - xueren_info:'每当你使用杀造成伤害,你可以令受伤害角色与你各失去1点体力,然后你摸两张牌', + xueren_info:'每当你使用杀造成伤害,你可以令受伤害角色与你各失去1点体力,然后你摸两张牌。', maoxian:'奇旅', maoxian2:'奇旅', - maoxian_info:'出牌阶段限两次,你可以发现一个技能并获得之(替换此前发现的技能)', + maoxian_info:'出牌阶段限两次,你可以发现一个技能并获得之(替换此前发现的技能)。', tanmi:'探秘', - tanmi_info:'在一名其他角色的结束阶段,若你没有手牌,你可以摸两张牌并可以使用两张牌', + tanmi_info:'在一名其他角色的结束阶段,若你没有手牌,你可以摸两张牌并可以使用两张牌。', yiwen:'轶闻', - yiwen_info:'锁定技,每当其他角色于回合内首次使用非特殊卡牌指定你为惟一目标,你获得一张此牌的复制', + yiwen_info:'锁定技,每当其他角色于回合内首次使用非特殊卡牌指定你为惟一目标,你获得一张此牌的复制。', tanbao_old:'探宝', - tanbao_old_info:'出牌阶段限一次,你可以弃置三张牌,然后展示牌堆顶的三张牌,然后获得其中任意张类别不同的牌;若三张牌类别均不相同,你回复全部体力值', + tanbao_old_info:'出牌阶段限一次,你可以弃置三张牌,然后展示牌堆顶的三张牌,然后获得其中任意张类别不同的牌;若三张牌类别均不相同,你回复全部体力值。', qianghuax:'强化', - qianghuax_info:'出牌阶段限一次,你可以弃置任意张不同类别的牌,然后展示并获得与弃置的牌类别相同且价值更高的牌', + qianghuax_info:'出牌阶段限一次,你可以弃置任意张不同类别的牌,然后展示并获得与弃置的牌类别相同且价值更高的牌。', zhuizong:'追踪', - zhuizong_info:'出牌阶段限一次,你可以弃置任意张牌,观看牌堆顶的等同于弃牌数四倍的牌,然后获得其中的一张牌', + zhuizong_info:'出牌阶段限一次,你可以弃置任意张牌,观看牌堆顶的等同于弃牌数四倍的牌,然后获得其中的一张牌。', xunbao:'寻宝', xunbao2:'寻宝', - xunbao_info:'准备阶段,若你的武将牌上没有藏宝图,你可以将一张藏宝图置于你的武将牌上;若你的武将牌上有藏宝图,你可以弃置一张与藏宝图点数相同的牌并获得此藏宝图', + xunbao_info:'准备阶段,若你的武将牌上没有藏宝图,你可以将一张藏宝图置于你的武将牌上;若你的武将牌上有藏宝图,你可以弃置一张与藏宝图点数相同的牌并获得此藏宝图。', xieneng:'邪能', - xieneng_info:'结束阶段,你可以选择一张神器牌并获得之', + xieneng_info:'结束阶段,你可以选择一张神器牌并获得之。', fbeifa:'北伐', - fbeifa_info:'每当你失去最后一张手牌,你可以视为使用一张无视距离的杀,若此杀造成伤害,你摸一张牌,每回合最多发动3次', + fbeifa_info:'每当你失去最后一张手牌,你可以视为使用一张无视距离的杀,若此杀造成伤害,你摸一张牌,每回合最多发动3次。', oldfbeifa:'北伐', - oldfbeifa_info:'每当你失去最后一张手牌,你可以视为使用一张无视距离的杀,若此杀造成伤害,你摸一张牌', + oldfbeifa_info:'每当你失去最后一张手牌,你可以视为使用一张无视距离的杀,若此杀造成伤害,你摸一张牌。', yufa:'驭法', - yufa_info:'在任意一名其他角色的结束阶段,若你于此回合内受过其伤害,你可以将一张传送门交给除此角色外的任意一名角色', + yufa_info:'在任意一名其他角色的结束阶段,若你于此回合内受过其伤害,你可以将一张传送门交给除此角色外的任意一名角色。', bingyan:'冰焰', - bingyan_info:'出牌阶段限一次,你可以将一张红色牌当作炽羽袭,或将一张黑色牌当作惊雷闪使用', + bingyan_info:'出牌阶段限一次,你可以将一张红色牌当作炽羽袭,或将一张黑色牌当作惊雷闪使用。', hsshenqi:'神器', hsshenqi_morijingxiang:'末日镜像', - hsshenqi_morijingxiang_info:'限武将牌正面朝上时使用,从所有其他角色的区域内各获得一张牌;使用后将武将牌翻至背面', + hsshenqi_morijingxiang_info:'限武将牌正面朝上时使用,从所有其他角色的区域内各获得一张牌;使用后将武将牌翻至背面。', hsshenqi_kongbusangzhong:'恐怖丧钟', - hsshenqi_kongbusangzhong_info:'限武将牌正面朝上时使用,对所有其他角色各造成1点伤害;使用后将武将牌翻至背面', + hsshenqi_kongbusangzhong_info:'限武将牌正面朝上时使用,对所有其他角色各造成1点伤害;使用后将武将牌翻至背面。', hsshenqi_nengliangzhiguang:'能量之光', - hsshenqi_nengliangzhiguang_info:'限武将牌正面朝上时使用,令一名角色增加1点体力上限,回复1点体力,并摸四张牌;使用后将武将牌翻至背面', + hsshenqi_nengliangzhiguang_info:'限武将牌正面朝上时使用,令一名角色增加1点体力上限,回复1点体力,并摸四张牌;使用后将武将牌翻至背面。', hsbaowu:'宝物', hsbaowu_huangjinyuanhou:'黄金猿猴', - hsbaowu_huangjinyuanhou_info:'将你的手牌(含此张)替换为随机炉石衍生牌,并获得潜行直到下一回合开始', + hsbaowu_huangjinyuanhou_info:'将你的手牌(含此张)替换为随机炉石衍生牌,并获得潜行直到下一回合开始。', hsbaowu_cangbaotu:'藏宝图', - hsbaowu_cangbaotu_info:'结束阶段,将一张黄金猿猴置入你的手牌;摸一张牌', + hsbaowu_cangbaotu_info:'结束阶段,将一张黄金猿猴置入你的手牌;摸一张牌。', hsyaoshui:'药水', hsqingyu:'青玉', lianzhan:'连斩', - lianzhan_info:'每当你造成一次伤害,若此伤害是你本回合第一次造成伤害,你摸两张牌;否则你增加1点体力上限并回复1点体力', + lianzhan_info:'每当你造成一次伤害,若此伤害是你本回合第一次造成伤害,你摸两张牌;否则你增加1点体力上限并回复1点体力。', shifa:'魔瘾', - shifa_info:'锁定技,每当你于回合内使用一张非转化的普通锦囊牌,你摸一张牌(每回合最多发动3次);出牌阶段开始时,你令你与一名随机敌人各获得一张随机普通锦囊牌', + shifa_info:'锁定技,每当你于回合内使用一张非转化的普通锦囊牌,你摸一张牌(每回合最多发动3次);出牌阶段开始时,你令你与一名随机敌人各获得一张随机普通锦囊牌。', oldshifa:'魔瘾', - oldshifa_info:'锁定技,每当你于回合内使用一张非转化的普通锦囊牌,你摸一张牌;出牌阶段开始时,你令你与一名随机敌人各获得一张随机普通锦囊牌', + oldshifa_info:'锁定技,每当你于回合内使用一张非转化的普通锦囊牌,你摸一张牌;出牌阶段开始时,你令你与一名随机敌人各获得一张随机普通锦囊牌。', yuanzheng:'远征', - yuanzheng_info:'每当你对距离1以外的角色使用一张牌,你可以弃置目标区域内的一张牌', + yuanzheng_info:'每当你对距离1以外的角色使用一张牌,你可以弃置目标区域内的一张牌。', bzhuiji:'追击', - bzhuiji_info:'每当一名角色死亡,你可以摸两张牌,并视为对杀死该角色的人使用一张决斗', + bzhuiji_info:'每当一名角色死亡,你可以摸两张牌,并视为对杀死该角色的人使用一张决斗。', byuhuo:'浴火', byuhuo2:'浴火', - byuhuo_info:'觉醒技,当你进入濒死状态时,你须将体力和体力上限变为2,并将武将牌翻至背面;在你的下一准备阶段,你对所有其他角色造成2点火焰伤害,在此之前,你不能成为其他角色的卡牌的目标', + byuhuo_info:'觉醒技,当你进入濒死状态时,你须将体力和体力上限变为2,并将武将牌翻至背面;在你的下一准备阶段,你对所有其他角色造成2点火焰伤害,在此之前,你不能成为其他角色的卡牌的目标。', yulu:'雨露', - yulu_info:'出牌阶段限一次,你可以指定任意名角色各摸一张牌,然后各弃置区域内的一张牌', + yulu_info:'出牌阶段限一次,你可以指定任意名角色各摸一张牌,然后各弃置区域内的一张牌。', oldyulu:'雨露', - oldyulu_info:'出牌阶段限一次,你可以指定任意名角色各摸两张牌,然后各弃置区域内的两张牌', + oldyulu_info:'出牌阶段限一次,你可以指定任意名角色各摸两张牌,然后各弃置区域内的两张牌。', duzhang:'毒瘴', duzhang2:'毒瘴', - duzhang_info:'结束阶段,若你于本回合内未使用过锦囊牌,你可以指定一名其他角色令其下个回合无法使用锦囊牌', + duzhang_info:'结束阶段,若你于本回合内未使用过锦囊牌,你可以指定一名其他角色令其下个回合无法使用锦囊牌。', hannu:'寒怒', - hannu_info:'锁定技,每当你受到一次伤害,你将手牌数翻倍;若你的手牌数因此超过10张,你随机弃置若干张手牌直到手牌数等于你当前的体力值', + hannu_info:'锁定技,每当你受到一次伤害,你将手牌数翻倍;若你的手牌数因此超过10张,你随机弃置若干张手牌直到手牌数等于你当前的体力值。', chuidiao:'垂钓', - chuidiao_info:'锁定技,结束阶段,你随机摸0~2张牌', + chuidiao_info:'锁定技,结束阶段,你随机摸0~2张牌。', fushi:'缚誓', - fushi_info:'出牌阶段限一次,你可以令一名已受伤角色失去1点体力上限并回复1点体力', + fushi_info:'出牌阶段限一次,你可以令一名已受伤角色失去1点体力上限并回复1点体力。', oldfushi:'缚誓', - oldfushi_info:'出牌阶段,你可以令一名已受伤角色失去1点体力上限并回复1点体力', + oldfushi_info:'出牌阶段,你可以令一名已受伤角色失去1点体力上限并回复1点体力。', hhudun:'护盾', - hhudun_info:'锁定技,在每名角色的准备阶段,若你没有护甲,你获得1点护甲;每当你的护甲抵消一次伤害,你摸一张牌', + hhudun_info:'锁定技,在每名角色的准备阶段,若你没有护甲,你获得1点护甲;每当你的护甲抵消一次伤害,你摸一张牌。', fenlie:'分裂', - fenlie_info:'锁定技,每当你于摸牌阶段外获得非特殊卡牌,你获得一张此牌的复制,每回合最多发动两次', + fenlie_info:'锁定技,每当你于摸牌阶段外获得非特殊卡牌,你获得一张此牌的复制,每回合最多发动两次。', oldfenlie:'分裂', - oldfenlie_info:'锁定技,每当你于摸牌阶段外获得非特殊卡牌,你获得一张此牌的复制', + oldfenlie_info:'锁定技,每当你于摸牌阶段外获得非特殊卡牌,你获得一张此牌的复制。', nianfu:'粘附', - nianfu_info:'锁定技,每当你造成或受到伤害,你随机获得对方装备区内的一张牌', + nianfu_info:'锁定技,每当你造成或受到伤害,你随机获得对方装备区内的一张牌。', xiaorong:'消融', - xiaorong_info:'锁定技,你的装备牌不占用手牌上限;结束阶段,你将手牌中的每张装备牌转化为两张随机基本牌,每转化一张装备牌便回复1点体力', + xiaorong_info:'锁定技,你的装备牌不占用手牌上限;结束阶段,你将手牌中的每张装备牌转化为两张随机基本牌,每转化一张装备牌便回复1点体力。', shixu:'时序', - shixu_info:'锁定技,所有角色于出牌阶段每消耗3秒,便须于结束阶段弃置一张牌', + shixu_info:'锁定技,所有角色于出牌阶段每消耗3秒,便须于结束阶段弃置一张牌。', qianghua:'绝手', - qianghua_info:'出牌阶段内,你可以令一张你使用的基本牌或普通锦囊牌额外结算一次,每回合限一次', + qianghua_info:'出牌阶段内,你可以令一张你使用的基本牌或普通锦囊牌额外结算一次,每回合限一次。', jixuan:'疾旋', - jixuan_info:'锁定技,回合结束后,你摸一张牌进行一个额外的回合', + jixuan_info:'锁定技,回合结束后,你摸一张牌进行一个额外的回合。', biri:'蔽日', - biri_info:'每当距离你1以内的一名其他角色成为杀的惟一目标时,若杀的使用者不是你,你可以弃置一张闪取消之', + biri_info:'每当距离你1以内的一名其他角色成为杀的惟一目标时,若杀的使用者不是你,你可以弃置一张闪取消之。', stuxi:'吐息', stuxi2:'吐息', stuxi2_bg:'息', - stuxi_info:'锁定技,结束阶段,你令一名随机敌人下一个摸牌阶段摸牌数-1', + stuxi_info:'锁定技,结束阶段,你令一名随机敌人下一个摸牌阶段摸牌数-1。', bingdong:'冰冻', - bingdong_info:'锁定技,你在一个回合内首次造成伤害后,获得一个冰冻零件', + bingdong_info:'锁定技,你在一个回合内首次造成伤害后,获得一个冰冻零件。', ronghuo:'熔火', - ronghuo_info:'锁定技,你的普通杀均视为火杀', + ronghuo_info:'锁定技,你的普通杀均视为火杀。', luoshi:'落石', - luoshi_info:'锁定技,每当你受到一次伤害,你与伤害来源各随机弃置一张牌', + luoshi_info:'锁定技,每当你受到一次伤害,你与伤害来源各随机弃置一张牌。', moyao:'魔曜', - moyao_info:'锁定技,你不能成为其他角色的锦囊牌的目标', + moyao_info:'锁定技,你不能成为其他角色的锦囊牌的目标。', jiaohui:'教诲', - jiaohui_info:'结束阶段,若你没有于本回合内造成伤害,你可以令一名角色摸一张牌或回复1点体力', + jiaohui_info:'结束阶段,若你没有于本回合内造成伤害,你可以令一名角色摸一张牌或回复1点体力。', bimeng:'碧梦', - bimeng_info:'结束阶段,你可以将一张随机梦境牌加入你的手牌', + bimeng_info:'结束阶段,你可以将一张随机梦境牌加入你的手牌。', hsmengjing:'梦境', hsmengjing_card_config:'梦境', hsmengjing_feicuiyoulong:'翡翠幼龙', - hsmengjing_feicuiyoulong_info:'出牌阶段对任意一名角色使用,对目标造成1点伤害', + hsmengjing_feicuiyoulong_info:'出牌阶段对任意一名角色使用,对目标造成1点伤害。', hsmengjing_huanxiaojiemei:'欢笑姐妹', - hsmengjing_huanxiaojiemei_info:'出牌阶段对一名已受伤角色使用,令目标恢复1点体力', + hsmengjing_huanxiaojiemei_info:'出牌阶段对一名已受伤角色使用,令目标恢复1点体力。', hsmengjing_suxing:'苏醒', - hsmengjing_suxing_info:'令所有其他角色失去1点体力并随机弃置两张牌', + hsmengjing_suxing_info:'令所有其他角色失去1点体力并随机弃置两张牌。', hsmengjing_mengye:'梦魇', - hsmengjing_mengye_info:'令一名角色摸一张牌,并在其下一个结束阶段弃置其所有牌', + hsmengjing_mengye_info:'令一名角色摸一张牌,并在其下一个结束阶段弃置其所有牌。', hsmengjing_mengjing:'梦境', - hsmengjing_mengjing_info:'令一名角色将装备区内的所有牌收入手牌,并将一张乐不思蜀置于其判定区', + hsmengjing_mengjing_info:'令一名角色将装备区内的所有牌收入手牌,并将一张乐不思蜀置于其判定区。', hszuzhou:'诅咒', hszuzhou_nvwudeganguo:'女巫的钳锅', - hszuzhou_nvwudeganguo_info:'出牌阶段对一名角色使用,目标弃置一张牌,然后随机获得一张炉石衍生牌', + hszuzhou_nvwudeganguo_info:'出牌阶段对一名角色使用,目标弃置一张牌,然后随机获得一张炉石衍生牌。', hszuzhou_nvwudepingguo:'女巫的苹果', - hszuzhou_nvwudepingguo_info:'出牌阶段对一名角色使用,目标获得两张杀', + hszuzhou_nvwudepingguo_info:'出牌阶段对一名角色使用,目标获得两张杀。', hszuzhou_nvwudexuetu:'女巫的学徒', - hszuzhou_nvwudexuetu_info:'出牌阶段对没有咒降技能的角色使用,令目标非锁定技失效,并获得技能咒降直到下一回合结束', + hszuzhou_nvwudexuetu_info:'出牌阶段对没有咒降技能的角色使用,令目标非锁定技失效,并获得技能咒降直到下一回合结束。', hszuzhou_wushushike:'巫术时刻', - hszuzhou_wushushike_info:'出牌阶段对所有角色使用,将手牌中的闪替换为杀', + hszuzhou_wushushike_info:'出牌阶段对所有角色使用,将手牌中的闪替换为杀。', hszuzhou_guhuo:'蛊惑', - hszuzhou_guhuo_info:'出牌阶段对一名其他角色使用,令其交给你一张牌', + hszuzhou_guhuo_info:'出牌阶段对一名其他角色使用,令其交给你一张牌。', xjumo:'聚魔', - xjumo_info:'锁定技,你的手牌上限+3;若你已受伤,改为+5', + xjumo_info:'锁定技,你的手牌上限+3;若你已受伤,改为+5。', liehun:'裂魂', - liehun_info:'锁定技,结束阶段,你获得手牌中所有非基本、非特殊牌的复制', + liehun_info:'锁定技,结束阶段,你获得手牌中所有非基本、非特殊牌的复制。', malymowang:'魔网', - malymowang_info:'锁定技,你的锦囊牌在每回合中造成的首次伤害+1;出牌阶段开始时,你发现一张普通锦囊牌', + malymowang_info:'锁定技,你的锦囊牌在每回合中造成的首次伤害+1;出牌阶段开始时,你发现一张普通锦囊牌。', oldmalymowang:'魔网', - oldmalymowang_info:'锁定技,你的锦囊牌造成的伤害+1;出牌阶段开始时,你发现一张普通锦囊牌', + oldmalymowang_info:'锁定技,你的锦囊牌造成的伤害+1;出牌阶段开始时,你发现一张普通锦囊牌。', lingzhou:'灵咒', - lingzhou_info:'每当你使用一张非转化的锦囊牌,可令一名角色摸一张牌或回复1点体力', + lingzhou_info:'每当你使用一张非转化的锦囊牌,可令一名角色摸一张牌或回复1点体力。', mieshi:'灭世', - mieshi_info:'锁定技,结束阶段,你失去1点体力,并对一名随机的其他角色造成1点火焰伤害', + mieshi_info:'锁定技,结束阶段,你失去1点体力,并对一名随机的其他角色造成1点火焰伤害。', xshixin:'蚀心', - xshixin_info:'锁定技,每当你对一名其他角色造成一次伤害,受伤害角色与你各失去1点体力', - xshixin_info_alter:'锁定技,每当你对一名其他角色造成一次伤害,若受伤害角色体力值不小于你,其与你各失去1点体力', + xshixin_info:'锁定技,每当你对一名其他角色造成一次伤害,受伤害角色与你各失去1点体力。', + xshixin_info_alter:'锁定技,每当你对一名其他角色造成一次伤害,若受伤害角色体力值不小于你,其与你各失去1点体力。', xmojian:'魔箭', - xmojian_info:'每当你的武将牌翻至正面时,你可以指定一名角色视为对其使用了一张杀', + xmojian_info:'每当你的武将牌翻至正面时,你可以指定一名角色视为对其使用了一张杀。', enze:'恩泽', - enze_info:'出牌阶段限一次,你可以指定一名角色令其手牌数与你相等(最多摸或弃三张牌)', + enze_info:'出牌阶段限一次,你可以指定一名角色令其手牌数与你相等(最多摸或弃三张牌)。', oldenze:'恩泽', - oldenze_info:'出牌阶段限一次,你可以指定一名角色令其手牌数与你相等', - enze_info_alter:'出牌阶段限一次,你可以指定一名角色令其手牌数与你相等(最多摸或弃两张牌)', + oldenze_info:'出牌阶段限一次,你可以指定一名角色令其手牌数与你相等。', + enze_info_alter:'出牌阶段限一次,你可以指定一名角色令其手牌数与你相等(最多摸或弃两张牌)。', chongsheng:'重生', chongsheng_bg:'生', - chongsheng_info:'濒死阶段,你可弃置所有牌,将体力回复至2-X,并摸2-X张牌,X为你本局发动此技能的次数。每局最多发动2次', + chongsheng_info:'濒死阶段,你可弃置所有牌,将体力回复至2-X,并摸2-X张牌,X为你本局发动此技能的次数。每局最多发动2次。', s_tuteng:'神谕', - s_tuteng_info:'锁定技,准备阶段,你随机获得一个图腾,若你已有至少3个图腾,则改为随机替换一个图腾', + s_tuteng_info:'锁定技,准备阶段,你随机获得一个图腾,若你已有至少3个图腾,则改为随机替换一个图腾。', guozai:'过载', guozai2:'过载', guozai2_bg:'载', - guozai_info:'出牌阶段限一次,你可将手牌补至四张,并于此阶段结束时弃置等量的牌', - guozai_info_alter:'出牌阶段限一次,你可将手牌补至三张,并于此阶段结束时弃置等量的牌', + guozai_info:'出牌阶段限一次,你可将手牌补至四张,并于此阶段结束时弃置等量的牌。', + guozai_info_alter:'出牌阶段限一次,你可将手牌补至三张,并于此阶段结束时弃置等量的牌。', guozaix:'过载', guozaix2:'过载', guozaix2_bg:'载', - guozaix_info:'出牌阶段限两次,你可将手牌补至四张,并于此阶段结束时弃置等量的牌', + guozaix_info:'出牌阶段限两次,你可将手牌补至四张,并于此阶段结束时弃置等量的牌。', oldhanshuang:'寒霜', - oldhanshuang_info:'锁定技,你使用黑色牌对一名未翻面角色造成伤害后,你令受伤害角色翻面', + oldhanshuang_info:'锁定技,你使用黑色牌对一名未翻面角色造成伤害后,你令受伤害角色翻面。', hanshuang:'寒霜', - hanshuang_info:'锁定技,你使用黑色牌对一名未翻面角色造成伤害后,你令受伤害角色翻面,然后你失去1点体力', - hanshuang_info_alter:'锁定技,你使用黑色牌对一名未翻面角色造成伤害后,你令受伤害角色翻面并摸一张牌,然后你失去1点体力', + hanshuang_info:'锁定技,你使用黑色牌对一名未翻面角色造成伤害后,你令受伤害角色翻面,然后你失去1点体力。', + hanshuang_info_alter:'锁定技,你使用黑色牌对一名未翻面角色造成伤害后,你令受伤害角色翻面并摸一张牌,然后你失去1点体力。', bingshi:'冰噬', - bingshi_info:'锁定技,你死亡时,对所有其他角色造成1点伤害', + bingshi_info:'锁定技,你死亡时,对所有其他角色造成1点伤害。', huanwu:'唤雾', - huanwu_info:'出牌阶段限一次,你可以令一名角色增加1点体力上限,回复1点体力,并摸两张牌(每名角色限发动一次)', + huanwu_info:'出牌阶段限一次,你可以令一名角色增加1点体力上限,回复1点体力,并摸两张牌(每名角色限发动一次)。', fengnu:'风怒', - fengnu_info:'锁定技,你使用的任何卡牌无数量及距离限制;当你于回合内重复使用同名卡牌时,你摸一张牌(每回合最多以此法摸三张牌)', - fengnu_info_alter:'锁定技,你使用的任何卡牌无数量限制;当你于回合内重复使用同名卡牌时,你摸一张牌(每回合最多以此法摸三张牌)', + fengnu_info:'锁定技,你使用的任何卡牌无数量及距离限制;当你于回合内重复使用同名卡牌时,你摸一张牌(每回合最多以此法摸三张牌)。', + fengnu_info_alter:'锁定技,你使用的任何卡牌无数量限制;当你于回合内重复使用同名卡牌时,你摸一张牌(每回合最多以此法摸三张牌)。', shengdun:'圣盾', shengdun2:'圣盾', - shengdun_info:'锁定技,准备阶段,若你没有护甲,你获得1点护甲', + shengdun_info:'锁定技,准备阶段,若你没有护甲,你获得1点护甲。', jingmeng:'镜梦', - jingmeng_info:'每当你于回合内使用第一张牌时,你可以从牌堆中随机获得一张与之类型相同的牌', + jingmeng_info:'每当你于回合内使用第一张牌时,你可以从牌堆中随机获得一张与之类型相同的牌。', kuixin:'窥心', - kuixin_info:'结束阶段,你可以获得一名手牌数不少于你的角色的一张手牌', + kuixin_info:'结束阶段,你可以获得一名手牌数不少于你的角色的一张手牌。', hswuji:'无羁', - hswuji_info:'出牌阶段结束时,你可以摸X张牌,X为你本回合使用的卡牌数', + hswuji_info:'出牌阶段结束时,你可以摸X张牌,X为你本回合使用的卡牌数。', yanshu:'炎舞', - yanshu_info:'每回合限一次,当你弃置非基本牌后,你可以获得一张流星火雨', + yanshu_info:'每回合限一次,当你弃置非基本牌后,你可以获得一张流星火雨。', oldyanshu:'炎舞', - oldyanshu_info:'当你弃置非基本牌后,你可以获得一张流星火雨', + oldyanshu_info:'当你弃置非基本牌后,你可以获得一张流星火雨。', bingshuang:'冰枪', - bingshuang_info:'你使用锦囊牌造成伤害后,可令目标摸两张牌并翻面', + bingshuang_info:'你使用锦囊牌造成伤害后,可令目标摸两张牌并翻面。', shengyan:'圣言', - shengyan_info:'任意一名角色回复体力后,你可以令其额外回复1点体力,每回合限发动一次', + shengyan_info:'任意一名角色回复体力后,你可以令其额外回复1点体力,每回合限发动一次。', qingliu:'清流', - qingliu_info:'锁定技,你防止即将受到的火焰伤害', + qingliu_info:'锁定技,你防止即将受到的火焰伤害。', liechao:'猎潮', - liechao_info:'出牌阶阶段限一次,若你的武将牌正面朝上且手牌数不大于当前体力值,你可以翻面并摸四张牌,若如此做,你跳过本回合的弃牌阶段', - liechao_info_alter:'出牌阶阶段限一次,若你的武将牌正面朝上且手牌数不大于当前体力值,你可以翻面并摸三张牌,若如此做,你跳过本回合的弃牌阶段', + liechao_info:'出牌阶阶段限一次,若你的武将牌正面朝上且手牌数不大于当前体力值,你可以翻面并摸四张牌,若如此做,你跳过本回合的弃牌阶段。', + liechao_info_alter:'出牌阶阶段限一次,若你的武将牌正面朝上且手牌数不大于当前体力值,你可以翻面并摸三张牌,若如此做,你跳过本回合的弃牌阶段。', aoshu:'奥术', - aoshu_info:'出牌阶段限一次,你可以将一张黑桃牌当作无中生有使用', + aoshu_info:'出牌阶段限一次,你可以将一张黑桃牌当作无中生有使用。', qianhou:'千喉', - qianhou_info:'锁定技,准备阶段,你视为使用一张随机普通锦囊牌(随机指定目标);若目标只有1人且不是你,你可以弃置一张手牌并获得此锦囊', + qianhou_info:'锁定技,准备阶段,你视为使用一张随机普通锦囊牌(随机指定目标);若目标只有1人且不是你,你可以弃置一张手牌并获得此锦囊。', fengxing:'风行', - fengxing_info:'每当你于回合外首次失去牌,你可以弃置一张牌并摸两张牌', + fengxing_info:'每当你于回合外首次失去牌,你可以弃置一张牌并摸两张牌。', xinci:'心刺', xinci_bg:'暗', - xinci_info:'出牌阶段限一次,你可以弃置一张黑色牌令一名角色失去1点体力', + xinci_info:'出牌阶段限一次,你可以弃置一张黑色牌令一名角色失去1点体力。', zhongjia:'战甲', - zhongjia_info:'锁定技,每当你受到一次伤害,你获得1点护甲;当你的体力值大于1且大于手牌数时,你的护甲不为你抵挡伤害', + zhongjia_info:'锁定技,每当你受到一次伤害,你获得1点护甲;当你的体力值大于1且大于手牌数时,你的护甲不为你抵挡伤害。', dunji:'盾击', - dunji_info:'出牌阶段限一次,你可以对攻击范围内的至多X名其他角色各造成1点伤害,并失去等量的护甲,X为你的护甲数', + dunji_info:'出牌阶段限一次,你可以对攻击范围内的至多X名其他角色各造成1点伤害,并失去等量的护甲,X为你的护甲数。', qiaodong:'巧动', - qiaodong_info:'你可以将一张装备牌当作闪使用或打出', + qiaodong_info:'你可以将一张装备牌当作闪使用或打出。', fengxian:'奉献', - fengxian_info:'出牌阶段限一次,你可以令场上所有角色各弃置一张手牌', + fengxian_info:'出牌阶段限一次,你可以令场上所有角色各弃置一张手牌。', zhanhou:'战吼', - zhanhou_info:'出牌阶段限一次,你可以弃置一张防具牌并获得1点护甲', + zhanhou_info:'出牌阶段限一次,你可以弃置一张防具牌并获得1点护甲。', oldzhanhou:'战吼', - oldzhanhou_info:'出牌阶段,你可以弃置一张防具牌并获得1点护甲', + oldzhanhou_info:'出牌阶段,你可以弃置一张防具牌并获得1点护甲。', anying:'暗影', - anying_info:'限定技,出牌阶段,你可以弃置一张黑色牌,失去技能圣光,并获得技能心刺', + anying_info:'限定技,出牌阶段,你可以弃置一张黑色牌,失去技能圣光,并获得技能心刺。', shijie:'视界', - shijie_info:'结束阶段,你可以获得一名其他角色的一张手牌,然后该角色摸一张牌', + shijie_info:'结束阶段,你可以获得一名其他角色的一张手牌,然后该角色摸一张牌。', shengguang:'圣光', - shengguang_info:'出牌阶段限一次,你可以弃置一张红色牌令一名角色回复1点体力', + shengguang_info:'出牌阶段限一次,你可以弃置一张红色牌令一名角色回复1点体力。', bingjia:'冰甲', bingjia2:'冰甲', - bingjia_info:'出牌阶段,若你武将牌上没有牌,你可以将一张手牌背面朝上置于你的武将牌上,当你成为其他角色的与此牌花色相同的牌的目标时,你移去此牌,获得1点护甲,并且本回合内防止一切伤害', + bingjia_info:'出牌阶段,若你武将牌上没有牌,你可以将一张手牌背面朝上置于你的武将牌上,当你成为其他角色的与此牌花色相同的牌的目标时,你移去此牌,获得1点护甲,并且本回合内防止一切伤害。', bianxing:'变形', - bianxing_info:'当一其他角色于回合内使用卡牌指定了惟一的其他目标后,你可以用一张合理的基本牌替代此牌,每名角色的回合限一次', + bianxing_info:'当一其他角色于回合内使用卡牌指定了惟一的其他目标后,你可以用一张合理的基本牌替代此牌,每名角色的回合限一次。', xianzhi:'先知', - xianzhi_info:'任意一名角色进行判定前,你可以观看牌堆顶的两张牌,并可以将其调换顺序', + xianzhi_info:'任意一名角色进行判定前,你可以观看牌堆顶的两张牌,并可以将其调换顺序。', mdzhoufu:'缚魂', mdzhoufu2:'缚魂', - mdzhoufu_info:'出牌阶段,你可以将一张黑色手牌置于一名其他角色的武将牌上,在其判定时以此牌作为判定结果,然后你获得亮出的判定牌', + mdzhoufu_info:'出牌阶段,你可以将一张黑色手牌置于一名其他角色的武将牌上,在其判定时以此牌作为判定结果,然后你获得亮出的判定牌。', zuzhou:'诅咒', - zuzhou_info:'锁定技,准备阶段,若场上没有浮雷且你手牌中有黑桃牌,你将牌堆中的一张浮雷置于你的判定区;当一名角色受到浮雷伤害时,你移去此浮雷', - zuzhou_old_info:'每当你造成或受到一次伤害,你可以令伤害目标或来源进行一次判定,若结果为黑色,其失去1点体力', + zuzhou_info:'锁定技,准备阶段,若场上没有浮雷且你手牌中有黑桃牌,你将牌堆中的一张浮雷置于你的判定区;当一名角色受到浮雷伤害时,你移去此浮雷。', + zuzhou_old_info:'每当你造成或受到一次伤害,你可以令伤害目标或来源进行一次判定,若结果为黑色,其失去1点体力。', jingxiang:'镜像', - jingxiang_info:'每回合限一次,当你需要打出卡牌时,你可以观看一名角色的手牌并将其视为你的手牌打出', - jingxiang_info_alter:'每回合限一次,当你需要打出卡牌时,你可以观看一名手牌数不多于你的角色的手牌并将其视为你的手牌打出', + jingxiang_info:'每回合限一次,当你需要打出卡牌时,你可以观看一名角色的手牌并将其视为你的手牌打出。', + jingxiang_info_alter:'每回合限一次,当你需要打出卡牌时,你可以观看一名手牌数不多于你的角色的手牌并将其视为你的手牌打出。', tuteng:'图腾', - tuteng_info:'出牌阶段,你可以获得一个随机基础图腾;每当你受到一次伤害,你随机失去一个图腾', + tuteng_info:'出牌阶段,你可以获得一个随机基础图腾;每当你受到一次伤害,你随机失去一个图腾。', zuling:'祖灵', - zuling_info:'觉醒技,准备阶段,若你拥有至少3个图腾,你失去1点体力上限,并将图腾描述中的“获得一个随机基础图腾”改为“获得任意一个图腾(若有4个图腾则改为替换一个图腾)”', + zuling_info:'觉醒技,准备阶段,若你拥有至少3个图腾,你失去1点体力上限,并将图腾描述中的“获得一个随机基础图腾”改为“获得任意一个图腾(若有4个图腾则改为替换一个图腾)”。', tuteng1:'治疗图腾', - tuteng1_info:'结束阶段,你回复1点体力', + tuteng1_info:'结束阶段,你回复1点体力。', tuteng2:'灼热图腾', - tuteng2_info:'每当你造成一次伤害,你摸一张牌', + tuteng2_info:'每当你造成一次伤害,你摸一张牌。', tuteng3:'石爪图腾', - tuteng3_info:'你受到下一次伤害时,令伤害-1,然后失去此图腾', + tuteng3_info:'你受到下一次伤害时,令伤害-1,然后失去此图腾。', tuteng4:'空气图腾', - tuteng4_info:'在你的回合内,你的锦囊牌造成的首次伤害+1', + tuteng4_info:'在你的回合内,你的锦囊牌造成的首次伤害+1。', tuteng5:'法潮图腾', - tuteng5_info:'结束阶段,你摸一张牌', + tuteng5_info:'结束阶段,你摸一张牌。', tuteng6:'火舌图腾', - tuteng6_info:'在你的回合内,你的杀造成的首次伤害+1', + tuteng6_info:'在你的回合内,你的杀造成的首次伤害+1。', tuteng7:'活力图腾', - tuteng7_info:'结束阶段,你令一名其他角色回复1点体力', + tuteng7_info:'结束阶段,你令一名其他角色回复1点体力。', tuteng8:'图腾魔像', - tuteng8_info:'你的进攻距离+1', + tuteng8_info:'你的进攻距离+1。', tzhenji:'震击', - tzhenji_info:'每当你因弃置而失去黑色牌,可对一名角色造成1点雷电伤害,并随机弃置其一张牌,每回合限发动一次', + tzhenji_info:'每当你因弃置而失去黑色牌,可对一名角色造成1点雷电伤害,并随机弃置其一张牌,每回合限发动一次。', fenliu:'分流', - fenliu_info:'出牌阶段限一次,你可以失去1点体力并获得三张牌', + fenliu_info:'出牌阶段限一次,你可以失去1点体力并获得三张牌。', hongxi:'虹吸', - hongxi_info:'锁定技,每当有一名角色死亡,你将体力回复至体力上限', + hongxi_info:'锁定技,每当有一名角色死亡,你将体力回复至体力上限。', jihuo:'激活', - jihuo_info:'在你的回合结束后,你可以弃置一张手牌并进行一个额外的回合', + jihuo_info:'在你的回合结束后,你可以弃置一张手牌并进行一个额外的回合。', jianren:'刃舞', - jianren_info:'出牌阶段限一次,你可以弃置装备区内的武器牌,对所有其他角色造成1点伤害', + jianren_info:'出牌阶段限一次,你可以弃置装备区内的武器牌,对所有其他角色造成1点伤害。', mengun:'闷棍', mengun2:'闷棍', - mengun_info:'每当一名其他角色于回合内使用基本牌,你可以弃置一张与之花色相同的牌令其收回此牌,且在本回合内不能再次使用,每回合限一次', + mengun_info:'每当一名其他角色于回合内使用基本牌,你可以弃置一张与之花色相同的牌令其收回此牌,且在本回合内不能再次使用,每回合限一次。', wlianji:'连击', - wlianji_info:'结束阶段,若你本回合使用的卡牌数大于你当前的体力值,你可以摸两张牌', + wlianji_info:'结束阶段,若你本回合使用的卡牌数大于你当前的体力值,你可以摸两张牌。', }, }; }); diff --git a/character/ow.js b/character/ow.js index 63077e350..6bf7c7667 100644 --- a/character/ow.js +++ b/character/ow.js @@ -3464,99 +3464,99 @@ game.import('character',function(lib,game,ui,get,ai,_status){ translate:{ woliu:'涡流', woliu2:'涡流', - woliu_info:'结束阶段,你可以选择至多两名角色,当你或目标中的任意一名角色成为杀的目标时,其余角色也将被追加为目标,直到你死亡或下一回合开始', + woliu_info:'结束阶段,你可以选择至多两名角色,当你或目标中的任意一名角色成为杀的目标时,其余角色也将被追加为目标,直到你死亡或下一回合开始。', qianggu:'强固', - qianggu_info:'出牌阶段限一次,你可以弃置两张牌并获得2点护甲,若如此做,直到你的下个回合开始,其他角色对你使用杀时需要弃置一张基本牌,否则杀对你无效', + qianggu_info:'出牌阶段限一次,你可以弃置两张牌并获得2点护甲,若如此做,直到你的下个回合开始,其他角色对你使用杀时需要弃置一张基本牌,否则杀对你无效。', qianggu2:'强固', qianggu2_bg:'固', - qianggu2_info:'其他角色对你使用杀时需要弃置一张基本牌,否则杀对你无效', + qianggu2_info:'其他角色对你使用杀时需要弃置一张基本牌,否则杀对你无效。', pingzhang:'屏障', - pingzhang_info:'每轮各限一次,当你受到伤害时,你可以弃置一张红桃牌令伤害-1;当一名其他角色受到伤害时,你可以弃置一张黑桃牌令伤害-1', - pingzhang_info_alter:'每轮各限一次,当你受到伤害时,你可以弃置一张红桃手牌令伤害-1;当一名其他角色受到伤害时,你可以弃置一张黑桃手牌令伤害-1', + pingzhang_info:'每轮各限一次,当你受到伤害时,你可以弃置一张红桃牌令伤害-1;当一名其他角色受到伤害时,你可以弃置一张黑桃牌令伤害-1。', + pingzhang_info_alter:'每轮各限一次,当你受到伤害时,你可以弃置一张红桃手牌令伤害-1;当一名其他角色受到伤害时,你可以弃置一张黑桃手牌令伤害-1。', owliyong:'力涌', - owliyong_info:'锁定技,你摸牌阶段摸牌数+X,X为你上一轮发动屏障的次数', + owliyong_info:'锁定技,你摸牌阶段摸牌数+X,X为你上一轮发动屏障的次数。', dianji:'电击', - dianji_info:'出牌阶段限一次,你可以将一张手牌当作惊雷闪对距离2以内的角色使用', + dianji_info:'出牌阶段限一次,你可以将一张手牌当作惊雷闪对距离2以内的角色使用。', feitiao:'飞跳', feitiao2:'飞跳', - feitiao_info:'出牌阶段开始时,你可以弃置一张牌并指定一名角色,你与该角色的距离视为1直到回合结束,然后该角色随机弃置一张牌', + feitiao_info:'出牌阶段开始时,你可以弃置一张牌并指定一名角色,你与该角色的距离视为1直到回合结束,然后该角色随机弃置一张牌。', bshaowei:'哨卫', - bshaowei_info:'结束阶段,你可以切换至哨卫模式。当处于此模式时,你的杀无视距离和防具、无数量限制且不可闪避;你不能闪避杀', + bshaowei_info:'结束阶段,你可以切换至哨卫模式。当处于此模式时,你的杀无视距离和防具、无数量限制且不可闪避;你不能闪避杀。', zhencha:'侦查', - zhencha_info:'结束阶段,你可以切换至侦查模式。当处于此模式时,每当你使用一张杀,你摸一张牌或回复1点体力', + zhencha_info:'结束阶段,你可以切换至侦查模式。当处于此模式时,每当你使用一张杀,你摸一张牌或回复1点体力。', liangou:'链钩', - liangou_info:'出牌阶段限一次,你可以弃置一张牌,指定一名其他角色并进行一次判定,若结果不为红桃,该角色与你距离为1且受到的首次伤害+1直到回合结束', + liangou_info:'出牌阶段限一次,你可以弃置一张牌,指定一名其他角色并进行一次判定,若结果不为红桃,该角色与你距离为1且受到的首次伤害+1直到回合结束。', xiyang:'吸氧', - xiyang_info:'结束阶段,若你武将牌正面朝上,你可以翻面并回复2点体力', + xiyang_info:'结束阶段,若你武将牌正面朝上,你可以翻面并回复2点体力。', qinru:'侵入', - qinru_info:'每当你使用杀指定目标时,你可以令其进行一次判定,若结果不为红桃,该角色的非锁定技失效直到其下一回合结束', + qinru_info:'每当你使用杀指定目标时,你可以令其进行一次判定,若结果不为红桃,该角色的非锁定技失效直到其下一回合结束。', yinshen:'隐身', - yinshen_info:'锁定技,每当你失去最后一张基本牌,你获得潜行直到下一回合开始', - yinshen_info_old:'结束阶段,你可以弃置一张装备牌并获得潜行直到下一回合开始', + yinshen_info:'锁定技,每当你失去最后一张基本牌,你获得潜行直到下一回合开始。', + yinshen_info_old:'结束阶段,你可以弃置一张装备牌并获得潜行直到下一回合开始。', maichong:'脉冲', - maichong_info:'锁定技,每当你使用一张普通锦囊牌,你令最近三回合内被你侵入过的角色各随机弃置一张牌', - maichong_info_alter:'准备阶段,你可以令最近两名被你侵入的角色各随机弃置一张牌', + maichong_info:'锁定技,每当你使用一张普通锦囊牌,你令最近三回合内被你侵入过的角色各随机弃置一张牌。', + maichong_info_alter:'准备阶段,你可以令最近两名被你侵入的角色各随机弃置一张牌。', lichang:'力场', lichang2:'力场', - lichang_info:'结束阶段,你可以弃置一张红色牌,若如此做,你可以在下个准备阶段令一名距离1以内的角色回复1点体力或摸两张牌', + lichang_info:'结束阶段,你可以弃置一张红色牌,若如此做,你可以在下个准备阶段令一名距离1以内的角色回复1点体力或摸两张牌。', mengji:'猛击', - mengji_info:'锁定技,若你已发动重盾,当你没有护甲时,你的杀造成的伤害+1', + mengji_info:'锁定技,若你已发动重盾,当你没有护甲时,你的杀造成的伤害+1。', zhongdun:'重盾', - zhongdun_info:'游戏开始时,你获得8点护甲;出牌阶段限一次,你可以弃置一张牌并将1点护甲分给一名没有护甲的其他角色', - zhongdun_info_alter:'游戏开始时,你获得6点护甲;出牌阶段限一次,你可以弃置一张牌并将1点护甲分给一名没有护甲的其他角色', + zhongdun_info:'游戏开始时,你获得8点护甲;出牌阶段限一次,你可以弃置一张牌并将1点护甲分给一名没有护甲的其他角色。', + zhongdun_info_alter:'游戏开始时,你获得6点护甲;出牌阶段限一次,你可以弃置一张牌并将1点护甲分给一名没有护甲的其他角色。', paotai:'炮台', paotai2:'炮台', - paotai_info:'出牌阶段,你可以弃置一张杀布置或升级一个炮台(最高3级);结束阶段,炮台有一定机率对一名随机敌人造成1点火焰伤害;每当你受到1点伤害,炮台降低一级', + paotai_info:'出牌阶段,你可以弃置一张杀布置或升级一个炮台(最高3级);结束阶段,炮台有一定机率对一名随机敌人造成1点火焰伤害;每当你受到1点伤害,炮台降低一级。', maoding:'铆钉', maoding2:'铆钉', - maoding_info:'每当你造成或受到一次伤害,你可以获得一个零件;出牌阶段,你可以弃置两张零件牌令一名没有护甲的角色获得1点护甲', - maoding_info_alter:'每当你造成一次伤害,你可以获得一个零件;出牌阶段,你可以弃置两张零件牌令一名没有护甲的角色获得1点护甲', + maoding_info:'每当你造成或受到一次伤害,你可以获得一个零件;出牌阶段,你可以弃置两张零件牌令一名没有护甲的角色获得1点护甲。', + maoding_info_alter:'每当你造成一次伤害,你可以获得一个零件;出牌阶段,你可以弃置两张零件牌令一名没有护甲的角色获得1点护甲。', bfengshi:'风矢', bfengshi2:'风矢', - bfengshi_info:'锁定技,在一合内每当你使用一张牌,你的攻击范围+1;你的首张杀增加20%的概率强制命中;你的首张杀造成伤害后增加20%的概率令伤害+1', - bfengshi_info_alter:'锁定技,在一合内每当你使用一张牌,你的攻击范围+1;你的首张杀增加15%的概率强制命中;你的首张杀造成伤害后增加15%的概率令伤害+1', + bfengshi_info:'锁定技,在一合内每当你使用一张牌,你的攻击范围+1;你的首张杀增加20%的概率强制命中;你的首张杀造成伤害后增加20%的概率令伤害+1。', + bfengshi_info_alter:'锁定技,在一合内每当你使用一张牌,你的攻击范围+1;你的首张杀增加15%的概率强制命中;你的首张杀造成伤害后增加15%的概率令伤害+1。', yinbo:'音波', - yinbo_info:'出牌阶段限一次,你可以弃置一张黑桃牌,然后随机弃置三名敌人各一张牌', + yinbo_info:'出牌阶段限一次,你可以弃置一张黑桃牌,然后随机弃置三名敌人各一张牌。', liudan:'榴弹', - liudan_info:'每当你使用一张杀,你可以令所有不是此杀目标的其他角色有50%概率成为此杀的额外目标', + liudan_info:'每当你使用一张杀,你可以令所有不是此杀目标的其他角色有50%概率成为此杀的额外目标。', shoujia:'兽夹', shoujia2:'兽夹', shoujia3:'兽夹', - shoujia_info:'出牌阶段限一次,你可以将一张牌背面朝上置于一名其他角色的武将牌上,当该角色使用一张与此牌花色相同的牌指定其他角色为目标时,移去此牌,该角色将武将牌翻至背面;当你受到伤害时,移去此牌', + shoujia_info:'出牌阶段限一次,你可以将一张牌背面朝上置于一名其他角色的武将牌上,当该角色使用一张与此牌花色相同的牌指定其他角色为目标时,移去此牌,该角色将武将牌翻至背面;当你受到伤害时,移去此牌。', shihuo:'嗜火', - shihuo_info:'锁定技,每当一名角色受到火焰伤害,你摸一张牌', + shihuo_info:'锁定技,每当一名角色受到火焰伤害,你摸一张牌。', shanguang:'闪光', - shanguang_info:'出牌阶段限一次,你可以弃置一张方片牌令攻击范围内的一名其他角色本回合内不能使用或打出卡牌', + shanguang_info:'出牌阶段限一次,你可以弃置一张方片牌令攻击范围内的一名其他角色本回合内不能使用或打出卡牌。', tiandan:'填弹', - tiandan_info:'摸牌阶段开始时,你可以跳过出牌和弃牌阶段,然后获得若干张杀直到你的手牌数等于你的体值(最多为5)', + tiandan_info:'摸牌阶段开始时,你可以跳过出牌和弃牌阶段,然后获得若干张杀直到你的手牌数等于你的体值(最多为5)。', shenqiang:'神枪', - shenqiang_info:'锁定技,每当你在出牌阶段使用杀造成伤害,本阶段内出杀次数上限+1', + shenqiang_info:'锁定技,每当你在出牌阶段使用杀造成伤害,本阶段内出杀次数上限+1。', mianzhen:'眠针', mianzhen2:'眠针', - mianzhen_info:'出牌阶段限一次,你可以弃置一张牌并令一名其他角色打出一张闪,否则该角色不能使用或打出卡牌直到其受到伤害或下一回合结束', + mianzhen_info:'出牌阶段限一次,你可以弃置一张牌并令一名其他角色打出一张闪,否则该角色不能使用或打出卡牌直到其受到伤害或下一回合结束。', aqianghua:'强化', aqianghua2:'强化', - aqianghua_info:'出牌阶段限一次,你可以将你的全部手牌(至少一张)交给一名其他角色,该角色获得1点护甲且下一次造成的伤害+1', - aqianghua_info_alter:'出牌阶段限一次,你可以将你的全部手牌(至少一张)交给一名其他角色,该角色下一次造成的伤害+1', + aqianghua_info:'出牌阶段限一次,你可以将你的全部手牌(至少一张)交给一名其他角色,该角色获得1点护甲且下一次造成的伤害+1。', + aqianghua_info_alter:'出牌阶段限一次,你可以将你的全部手牌(至少一张)交给一名其他角色,该角色下一次造成的伤害+1。', zhiyuan:'支援', - zhiyuan_info:'每当你即将造成伤害,你可以防止此伤害,改为令目标回复等量的体力', + zhiyuan_info:'每当你即将造成伤害,你可以防止此伤害,改为令目标回复等量的体力。', juji:'狙击', juji2:'狙击', juji3:'狙击', - juji_info:'出牌阶段限一次,你可以弃置任意张花色不同的牌并指定一名有手牌的其他角色,若该角色的手牌中含有与你弃置的牌花色相同的牌,则本回合内你与其距离为1且该角色不能闪避你的杀', + juji_info:'出牌阶段限一次,你可以弃置任意张花色不同的牌并指定一名有手牌的其他角色,若该角色的手牌中含有与你弃置的牌花色相同的牌,则本回合内你与其距离为1且该角色不能闪避你的杀。', duwen:'毒吻', duwen2:'毒吻', - duwen_info:'锁定技,当你造成伤害时,若你的手牌数与受伤害角色相等,此伤害+1', + duwen_info:'锁定技,当你造成伤害时,若你的手牌数与受伤害角色相等,此伤害+1。', zhuagou:'抓钩', - zhuagou_info:'出牌阶段限一次,你可以弃置一张手牌并将你的座位移到任意位置', + zhuagou_info:'出牌阶段限一次,你可以弃置一张手牌并将你的座位移到任意位置。', dulei:'诡雷', dulei2:'诡雷', - dulei_info:'出牌阶段,若你武将牌上没有牌,你可以将一张牌背面朝上置于你的武将牌上,当一名角色使用与该牌花色相同的牌指定你为目标时,你展示并移去此牌,然后该角色失去1点体力并随机弃置一张牌', + dulei_info:'出牌阶段,若你武将牌上没有牌,你可以将一张牌背面朝上置于你的武将牌上,当一名角色使用与该牌花色相同的牌指定你为目标时,你展示并移去此牌,然后该角色失去1点体力并随机弃置一张牌。', shuangqiang:'霜枪', - shuangqiang_info:'每当你对一名未翻面的角色造成伤害,你可以令伤害-1,然后令受伤害角色翻面', + shuangqiang_info:'每当你对一名未翻面的角色造成伤害,你可以令伤害-1,然后令受伤害角色翻面。', baoxue:'暴雪', - baoxue_info:'限定技,出牌阶段,若你未翻面,你可以展示并弃置你的所有黑色牌,然后令至多X名其他角色随机弃置一张牌并将武将牌翻至背面,X为你的弃牌数;结算后你将武将牌翻至背面', - baoxue_info_alter:'限定技,出牌阶段,你可以展示并弃置你的所有黑色牌,并选择等量其他角色将武将牌翻至背面,结算后你将武将牌翻至背面', + baoxue_info:'限定技,出牌阶段,若你未翻面,你可以展示并弃置你的所有黑色牌,然后令至多X名其他角色随机弃置一张牌并将武将牌翻至背面,X为你的弃牌数;结算后你将武将牌翻至背面。', + baoxue_info_alter:'限定技,出牌阶段,你可以展示并弃置你的所有黑色牌,并选择等量其他角色将武将牌翻至背面,结算后你将武将牌翻至背面。', bingqiang:'冰墙', bingqiang2:'冰墙', bingqiang2_bg:'墙', @@ -3566,74 +3566,74 @@ game.import('character',function(lib,game,ui,get,ai,_status){ bingqiang4_bg:'墙', bingqiang5:'冰墙', bingqiang5_bg:'障', - bingqiang_info:'出牌阶段,你可以弃置X张红色牌令一名角色和其相邻角色的防御离+X,或弃置X张黑色牌令一名角色和其相邻角色的进攻离-X,效果持续到你的下个回合开始', + bingqiang_info:'出牌阶段,你可以弃置X张红色牌令一名角色和其相邻角色的防御离+X,或弃置X张黑色牌令一名角色和其相邻角色的进攻离-X,效果持续到你的下个回合开始。', jidong:'急冻', - jidong_info:'在一名角色的结束阶段,若你的体力值为1且未翻面,你可以翻面并回复2点体力,在你的武将牌翻至正面前,你防止所有伤害,也不能成为其他角色卡牌的目标', - jidong_info_alter:'在一名角色的结束阶段,若你的体力值为1,你可以翻面并回复2点体力', + jidong_info:'在一名角色的结束阶段,若你的体力值为1且未翻面,你可以翻面并回复2点体力,在你的武将牌翻至正面前,你防止所有伤害,也不能成为其他角色卡牌的目标。', + jidong_info_alter:'在一名角色的结束阶段,若你的体力值为1,你可以翻面并回复2点体力。', jijia:'机甲', - jijia_info:'锁定技,游戏开始时,你获得一个体力为4的机甲;你的手牌上限为你和机甲的体力之和;你受到的伤害由机甲承担', + jijia_info:'锁定技,游戏开始时,你获得一个体力为4的机甲;你的手牌上限为你和机甲的体力之和;你受到的伤害由机甲承担。', zihui:'自毁', - zihui_info:'出牌阶段,你可以令距离2以内的所有其他角色选择一项:弃置数量等同你机甲体力值的牌,或受到2点火焰伤害,并在结算完毕后摧毁你的机甲', - zihui_info_alter:'出牌阶段,你可以令距离2以内的所有其他角色选择一项:1. 弃置数量等同你机甲体力值的牌(不足则全弃,至少弃1张);2. 或受到2点火焰伤害,并在结算完毕后摧毁你的机甲', + zihui_info:'出牌阶段,你可以令距离2以内的所有其他角色选择一项:弃置数量等同你机甲体力值的牌,或受到2点火焰伤害,并在结算完毕后摧毁你的机甲。', + zihui_info_alter:'出牌阶段,你可以令距离2以内的所有其他角色选择一项:1. 弃置数量等同你机甲体力值的牌(不足则全弃,至少弃1张);2. 或受到2点火焰伤害,并在结算完毕后摧毁你的机甲。', tuijin:'推进', tuijin2:'推进', - tuijin_info:'出牌阶段限一次,若你有机甲,你可以指定一名角色,本回合内视为与其距离为1', + tuijin_info:'出牌阶段限一次,若你有机甲,你可以指定一名角色,本回合内视为与其距离为1。', chongzhuang:'重装', - chongzhuang_info:'在你失去机甲后,当你累计造成了4点伤害时,你重新获得机甲', + chongzhuang_info:'在你失去机甲后,当你累计造成了4点伤害时,你重新获得机甲。', shouge:'收割', - shouge_info:'每当你杀死一名角色,你可以获得一张治疗波', + shouge_info:'每当你杀死一名角色,你可以获得一张治疗波。', tuji:'突击', - tuji_info:'锁定技,在你的回合内,每当你使用一张牌,你的进攻距离+1', + tuji_info:'锁定技,在你的回合内,每当你使用一张牌,你的进攻距离+1。', mujing:'目镜', mujing2:'目镜', - mujing_info:'你可以将一张黑色牌当作杀使用或打出;当你的杀被闪避后,此杀不计入出杀次数', - mujing_old_info:'每当你对攻击范围不含你的角色使用一张牌,你可以弃置目标一张牌;若你的手牌数不多于目标,你摸一张牌', + mujing_info:'你可以将一张黑色牌当作杀使用或打出;当你的杀被闪避后,此杀不计入出杀次数。', + mujing_old_info:'每当你对攻击范围不含你的角色使用一张牌,你可以弃置目标一张牌;若你的手牌数不多于目标,你摸一张牌。', feiren:'飞刃', feiren2:'飞刃', - feiren_info:'你的杀无视距离;你的黑桃杀造成的伤害+1,梅花杀可以额外指定一个目标', - feiren_info_alter:'你的杀无视距离;你的梅花杀可以额外指定一个目标', + feiren_info:'你的杀无视距离;你的黑桃杀造成的伤害+1,梅花杀可以额外指定一个目标。', + feiren_info_alter:'你的杀无视距离;你的梅花杀可以额外指定一个目标。', zhanlong:'斩龙', - zhanlong_info:'限定技,准备阶段,若你体力值为1,你可以弃置所有牌(至少一张),然后将三张杀置入你的手牌,若如此做,你本回合使用杀无次数限制', + zhanlong_info:'限定技,准备阶段,若你体力值为1,你可以弃置所有牌(至少一张),然后将三张杀置入你的手牌,若如此做,你本回合使用杀无次数限制。', xie:'谐', xie2:'谐', - xie_info:'出牌阶段,你可以弃置一张红桃手牌并指定一名角色,该角色自其下一回合开始每隔六回合回复1点体力,直到你死亡。同一时间只能对一人发动', + xie_info:'出牌阶段,你可以弃置一张红桃手牌并指定一名角色,该角色自其下一回合开始每隔六回合回复1点体力,直到你死亡。同一时间只能对一人发动。', luan:'乱', luan2:'乱', - luan_old_info:'出牌阶段,你可以弃置一张黑桃手牌并指定一名角色,该角色自其下一回合开始每隔六回合失去1点体力,直到你死亡。同一时间只能对一人发动', - luan_info:'出牌阶段,你可以弃置一张黑桃手牌并指定一名角色,该角色受到伤害后失去1点体力,直到你死亡或其首次进入濒死状态。同一时间只能对一人发动', + luan_old_info:'出牌阶段,你可以弃置一张黑桃手牌并指定一名角色,该角色自其下一回合开始每隔六回合失去1点体力,直到你死亡。同一时间只能对一人发动。', + luan_info:'出牌阶段,你可以弃置一张黑桃手牌并指定一名角色,该角色受到伤害后失去1点体力,直到你死亡或其首次进入濒死状态。同一时间只能对一人发动。', sheng:'圣', - sheng_info:'限定技,出牌阶段,你可以将你的武将牌翻面,然后令任意名角色回复1点体力,若如此做,你不能成为其他角色的卡牌目标直到下一回合开始', + sheng_info:'限定技,出牌阶段,你可以将你的武将牌翻面,然后令任意名角色回复1点体力,若如此做,你不能成为其他角色的卡牌目标直到下一回合开始。', xiandan:'霰弹', - xiandan_info:'每当你使用一张杀,你可以弃置一张红色牌令此杀不可闪避,或弃置一张黑色牌令此杀伤害+1', + xiandan_info:'每当你使用一张杀,你可以弃置一张红色牌令此杀不可闪避,或弃置一张黑色牌令此杀伤害+1。', yihun:'移魂', - yihun_info:'结束阶段,你可以弃置一张黑色牌并指定一名其他角色,你在该角色下一准备阶段视为对其使用一张杀;在此之前,你不能使用卡牌,也不能成为卡牌的目标', + yihun_info:'结束阶段,你可以弃置一张黑色牌并指定一名其他角色,你在该角色下一准备阶段视为对其使用一张杀;在此之前,你不能使用卡牌,也不能成为卡牌的目标。', feidan:'飞弹', - feidan_info:'你的杀只能对距离1以外的角色使用;每当你使用杀造成伤害后,你可以弃置一张牌对距离目标1以内的其他角色各造成1点伤害', + feidan_info:'你的杀只能对距离1以外的角色使用;每当你使用杀造成伤害后,你可以弃置一张牌对距离目标1以内的其他角色各造成1点伤害。', huoyu:'火雨', - huoyu_info:'限定技,出牌阶段,你可以弃置两张红色牌,视为使用两张炽羽袭', + huoyu_info:'限定技,出牌阶段,你可以弃置两张红色牌,视为使用两张炽羽袭。', yuedong:'乐动', - yuedong_info:'出牌阶段结束时,你可以令一名角色摸一张牌', + yuedong_info:'出牌阶段结束时,你可以令一名角色摸一张牌。', kuoyin:'扩音', - kuoyin_info:'出牌阶段,你可以弃置一张牌令本回合乐动的目标数改为3,或弃置两张牌令本回合乐动的摸牌量改为2', - kuoyin_info_alter:'出牌阶段,你可以弃置一张牌令本回合乐动的目标数改为3', + kuoyin_info:'出牌阶段,你可以弃置一张牌令本回合乐动的目标数改为3,或弃置两张牌令本回合乐动的摸牌量改为2。', + kuoyin_info_alter:'出牌阶段,你可以弃置一张牌令本回合乐动的目标数改为3。', huhuan:'互换', - huhuan_info:'出牌阶段,你可以弃置两张牌令本回合乐动的摸牌效果改为回复等量体力', + huhuan_info:'出牌阶段,你可以弃置两张牌令本回合乐动的摸牌效果改为回复等量体力。', guangshu:'光枢', guangshu_heart:'光盾', guangshu_spade:'光塔', guangshu_club:'光井', guangshu_diamond:'光流', - guangshu_info:'出牌阶段,你可以弃置一张牌,并指定一名角色,根据弃置牌的花色执行如下效果:♥该角色下次受到伤害时回复1点体力;♦︎该角色下次造成伤害时摸两张牌;♣该角色无法使用杀直到下一回合结束;♠该角色于下个结束阶段受到1点无来源的雷电伤害', + guangshu_info:'出牌阶段,你可以弃置一张牌,并指定一名角色,根据弃置牌的花色执行如下效果:♥该角色下次受到伤害时回复1点体力;♦︎该角色下次造成伤害时摸两张牌;♣该角色无法使用杀直到下一回合结束;♠该角色于下个结束阶段受到1点无来源的雷电伤害。', ziyu:'自愈', - ziyu_info:'在一名角色的结束阶段,你可以回复1点体力或摸一张牌,每隔四回合发动一次', - ziyu_info_alter:'在一名角色的结束阶段,你可以回复1点体力或摸一张牌,每隔六回合发动一次', + ziyu_info:'在一名角色的结束阶段,你可以回复1点体力或摸一张牌,每隔四回合发动一次。', + ziyu_info_alter:'在一名角色的结束阶段,你可以回复1点体力或摸一张牌,每隔六回合发动一次。', shouhu:'守护', - shouhu_info:'你不能使用杀;出牌阶段,你可以弃置一张杀令一名其他角色回复1点体力', + shouhu_info:'你不能使用杀;出牌阶段,你可以弃置一张杀令一名其他角色回复1点体力。', shanxian:'闪现', shanxian_info:'在一名其他角色的回合开始前,若你的武将牌正面朝上,你可以摸一张牌并进行一个额外回合,并在回合结束后将武将牌翻至背面。若如此做,你对其使用卡牌无视距离直到回合结束。', shanxian_info_alter:'在一名其他角色的回合开始前,若你的武将牌正面朝上,你可以进行一个额外回合,并在回合结束后将武将牌翻至背面。若如此做,你对其使用卡牌无视距离直到回合结束。', shanhui:'闪回', - shanhui_info:'当你造成或受到伤害后,你可以将你的牌重置为上次发动闪现时的状态,若你的牌数因此而减少,你回复1点体力', + shanhui_info:'当你造成或受到伤害后,你可以将你的牌重置为上次发动闪现时的状态,若你的牌数因此而减少,你回复1点体力。', ow_liekong:'猎空', ow_sishen:'死神', ow_tianshi:'天使', diff --git a/character/xianjian.js b/character/xianjian.js index b3d6a1a44..8ab1d87df 100644 --- a/character/xianjian.js +++ b/character/xianjian.js @@ -4158,223 +4158,223 @@ game.import('character',function(lib,game,ui,get,ai,_status){ pal_jushifang:'居十方', xyufeng:'御蜂', - xyufeng_info:'出牌阶段限一次,可以将一张黑桃牌当作机关蜂使用', + xyufeng_info:'出牌阶段限一次,可以将一张黑桃牌当作机关蜂使用。', lingquan:'灵泉', - lingquan_info:'觉醒技,结束阶段,若游戏轮数不小于3且你本回合使用的牌数大于你的体力值,你摸三张牌,然后获得技能【水蕴】', + lingquan_info:'觉醒技,结束阶段,若游戏轮数不小于3且你本回合使用的牌数大于你的体力值,你摸三张牌,然后获得技能【水蕴】。', shenwu:'神舞', - shenwu_info:'觉醒技,在一名角色的结束阶段,若你本局至少发动过3次【水蕴】,你增加1点体力和体力上限并获得2点护甲,然后获得技能【回梦】', + shenwu_info:'觉醒技,在一名角色的结束阶段,若你本局至少发动过3次【水蕴】,你增加1点体力和体力上限并获得2点护甲,然后获得技能【回梦】。', txianqu:'仙音', - txianqu_info:'出牌阶段限一次,当你即将造成伤害时,你可以防止之,然后摸两张牌并回复1点体力', + txianqu_info:'出牌阶段限一次,当你即将造成伤害时,你可以防止之,然后摸两张牌并回复1点体力。', qiongguang:'穹光', - qiongguang_info:'弃牌阶段结束时,若你弃置了至少两张牌,你可以对所有敌方角色施加一个随机的负面效果', + qiongguang_info:'弃牌阶段结束时,若你弃置了至少两张牌,你可以对所有敌方角色施加一个随机的负面效果。', xunying:'迅影', - xunying_info:'每当你使用杀对一名目标结算完毕后,你可以继续对目标使用杀', + xunying_info:'每当你使用杀对一名目标结算完毕后,你可以继续对目标使用杀。', liefeng:'冽风', - liefeng_info:'锁定技,当你在回合内使用第二张牌时,你本回合获得【炎斩】;当你在回合内使用第三张牌时,你本回合获得【天剑】;当你在回合内使用第四张牌时,你本回合获得【御风】', + liefeng_info:'锁定技,当你在回合内使用第二张牌时,你本回合获得【炎斩】;当你在回合内使用第三张牌时,你本回合获得【天剑】;当你在回合内使用第四张牌时,你本回合获得【御风】。', yuexing:'越行', yuexing2:'越行', - yuexing_info:'出牌阶段限一次,你可以指定一名角色,本阶段内将你与该角色到其他角色的距离基数互换', + yuexing_info:'出牌阶段限一次,你可以指定一名角色,本阶段内将你与该角色到其他角色的距离基数互换。', lingdi:'灵笛', - lingdi_info:'出牌阶段,你可以弃置一张本回合与此法弃置的牌花色均不同的手牌,然后选择一名与你距离为X的角色与其各摸一张牌,X为本回合发动灵笛的次数(含此次)', + lingdi_info:'出牌阶段,你可以弃置一张本回合与此法弃置的牌花色均不同的手牌,然后选择一名与你距离为X的角色与其各摸一张牌,X为本回合发动灵笛的次数(含此次)。', xiaoyue:'啸月', - xiaoyue_info:'锁定技,每轮开始时,若你手牌中有杀,你将手牌中的一张随机杀对一名随机敌方角色使用,然后获得1点护甲', + xiaoyue_info:'锁定技,每轮开始时,若你手牌中有杀,你将手牌中的一张随机杀对一名随机敌方角色使用,然后获得1点护甲。', minsha:'冥煞', - minsha_info:'出牌阶段限一次,你可以弃置两张牌,对一名体力值大于1的其他角色造成1点雷属性伤害,然后距离目标1以内的所有其他角色随机弃置一张牌', + minsha_info:'出牌阶段限一次,你可以弃置两张牌,对一名体力值大于1的其他角色造成1点雷属性伤害,然后距离目标1以内的所有其他角色随机弃置一张牌。', xhuanlei:'唤雷', - xhuanlei_info:'每当你受到一次伤害,若伤害来源体力值大于你,你可以对其造成1点雷属性伤害,然后其摸一张牌', + xhuanlei_info:'每当你受到一次伤害,若伤害来源体力值大于你,你可以对其造成1点雷属性伤害,然后其摸一张牌。', anwugu:'巫蛊', anwugu2:'蛊', - anwugu_info:'每当你对其他角色造成一次伤害,你可以令目标获得三枚蛊标记;拥有蛊标记的角色手牌上限-1,每回合最多使用X张牌(X为蛊标记数),每个结束阶段失去一枚蛊标记', + anwugu_info:'每当你对其他角色造成一次伤害,你可以令目标获得三枚蛊标记;拥有蛊标记的角色手牌上限-1,每回合最多使用X张牌(X为蛊标记数),每个结束阶段失去一枚蛊标记。', xtanxi:'探息', - xtanxi_info:'出牌阶段限一次,你可以弃置一张手牌,然后随机选择一名手牌中有与之同名的牌的敌方角色,观看其手牌并获得任意一张', + xtanxi_info:'出牌阶段限一次,你可以弃置一张手牌,然后随机选择一名手牌中有与之同名的牌的敌方角色,观看其手牌并获得任意一张。', linghuo:'灵火', - linghuo_info:'每两轮限一次,在一名其他角色的结束阶段,若其本回合内造成过伤害,你可以对其造成1点火属性伤害', + linghuo_info:'每两轮限一次,在一名其他角色的结束阶段,若其本回合内造成过伤害,你可以对其造成1点火属性伤害。', guijin:'归烬', guijin2:'归烬', guijin2_bg:'烬', - guijin_info:'每三轮限一次,出牌阶段,你可以观看牌堆顶的四张牌,然后可以将其中任意张牌分配给任意角色,被分到牌的角色跳过下一摸牌阶段,然后将剩余牌以原顺序放回牌堆顶', + guijin_info:'每三轮限一次,出牌阶段,你可以观看牌堆顶的四张牌,然后可以将其中任意张牌分配给任意角色,被分到牌的角色跳过下一摸牌阶段,然后将剩余牌以原顺序放回牌堆顶。', chengxin:'澄心', chengxin2:'澄心', chengxin2_bg:'心', - chengxin_info:'每四轮限一次,当一名角色进入濒死状态时,你可以令其将体力值回复至1,然后该角色防止一切伤害直到下一回合结束', + chengxin_info:'每四轮限一次,当一名角色进入濒死状态时,你可以令其将体力值回复至1,然后该角色防止一切伤害直到下一回合结束。', tianwu:'天舞', - tianwu_info:'每当你使用卡牌指定一名敌方角色为惟一目标,你可以对其施加一个随机的负面效果', - tianwu_info_alter:'每当你使用卡牌指定一名敌方角色为惟一目标,你可以对其施加一个随机的负面效果,每回合限发动一次', + tianwu_info:'每当你使用卡牌指定一名敌方角色为惟一目标,你可以对其施加一个随机的负面效果。', + tianwu_info_alter:'每当你使用卡牌指定一名敌方角色为惟一目标,你可以对其施加一个随机的负面效果,每回合限发动一次。', liguang:'离光', - liguang_info:'结束阶段,你可以弃置一张手牌并将场上的一张牌移动到另一个合理的位置', + liguang_info:'结束阶段,你可以弃置一张手牌并将场上的一张牌移动到另一个合理的位置。', shiying:'逝影', shiying_info:'限定技,在一名其他角色死亡前,你可以防止其死亡,然后你与该角色失去全部技能、将体力和体力上限变为3、移去所有牌并摸三张牌。', yujia:'御甲', - yujia_info:'每当你使用一张未强化的装备牌,你可以随机观看X张机关牌,并选择一张获得之,X为你本局使用过的机关牌数且至少为1', + yujia_info:'每当你使用一张未强化的装备牌,你可以随机观看X张机关牌,并选择一张获得之,X为你本局使用过的机关牌数且至少为1。', xiepan:'械磐', - xiepan_info:'每当你失去最后一张基本牌,你可以弃置一张手牌,然后获得一张随机装备牌', + xiepan_info:'每当你失去最后一张基本牌,你可以弃置一张手牌,然后获得一张随机装备牌。', yanshi:'偃师', - yanshi_info:'觉醒技,结束阶段,若你累计有4个回合使用过机关牌,你增加1点体力和体力上限,然后用随机装备填满你的装备区', + yanshi_info:'觉醒技,结束阶段,若你累计有4个回合使用过机关牌,你增加1点体力和体力上限,然后用随机装备填满你的装备区。', ywuhun:'雾魂', ywuhun_bg:'魂', - ywuhun_info:'锁定技,回合开始前,你获得一个额外的回合,并在此回合结束后复原场上及牌堆中的所有牌;当你在此回合中造成伤害后,终止所有结算并结束此回合', - // ywuhun_info_alter:'锁定技,回合开始前,你获得一个额外的回合,并在此回合结束后复原场上及牌堆中的所有牌;当你在此回合中造成伤害后,终止所有结算并结束此回合', + ywuhun_info:'锁定技,回合开始前,你获得一个额外的回合,并在此回合结束后复原场上及牌堆中的所有牌;当你在此回合中造成伤害后,终止所有结算并结束此回合。', + // ywuhun_info_alter:'锁定技,回合开始前,你获得一个额外的回合,并在此回合结束后复原场上及牌堆中的所有牌;当你在此回合中造成伤害后,终止所有结算并结束此回合。', feichen:'飞尘', feichen_info:'', tanhua:'昙华', - tanhua_info:'锁定技,你回复体力的效果改为摸两张牌;当你进入濒死状态时,你回复1点体力并失去此技能', + tanhua_info:'锁定技,你回复体力的效果改为摸两张牌;当你进入濒死状态时,你回复1点体力并失去此技能。', xjyingfeng:'影锋', - xjyingfeng_info:'锁定技,每当你使用一张杀结算完毕后,你随机对一名不是此杀目标的敌方角色使用一张杀', + xjyingfeng_info:'锁定技,每当你使用一张杀结算完毕后,你随机对一名不是此杀目标的敌方角色使用一张杀。', fenglue:'风掠', - fenglue_info:'你可以放弃出牌阶段,改为指定一名其他角色并选择任意张手牌,依次对该角色使用,若如此做,此阶段内该角色每受到1点伤害,你在结算后摸一张牌', + fenglue_info:'你可以放弃出牌阶段,改为指定一名其他角色并选择任意张手牌,依次对该角色使用,若如此做,此阶段内该角色每受到1点伤害,你在结算后摸一张牌。', xjzongyu:'纵雨', - xjzongyu_info:'出牌阶段限一次,你可以弃置一张黑色手牌,视为使用一张飞镖,随机指定两名敌方角色为目标', + xjzongyu_info:'出牌阶段限一次,你可以弃置一张黑色手牌,视为使用一张飞镖,随机指定两名敌方角色为目标。', fanling:'返灵', - fanling_info:'锁定技,每当一名角色失去体力,你回复1点体力,每回合只能发动一次', + fanling_info:'锁定技,每当一名角色失去体力,你回复1点体力,每回合只能发动一次。', huahu:'化狐', huahu_bg:'狐', - huahu_info:'限定技,你可以失去所有技能和1点体力上限,然后令任意名其他角色回复1点体力、获得1点护甲并摸一张牌', + huahu_info:'限定技,你可以失去所有技能和1点体力上限,然后令任意名其他角色回复1点体力、获得1点护甲并摸一张牌。', sheying:'蛇影', - sheying_info:'每回合限一次,当你使用卡牌造成一次伤害后,你可以进行一次判定,若结果为黑色,你收回此牌', + sheying_info:'每回合限一次,当你使用卡牌造成一次伤害后,你可以进行一次判定,若结果为黑色,你收回此牌。', dujiang:'毒降', - dujiang_info:'出牌阶段限一次,你可以弃置一张黑色牌令一名随机敌人获得一张毒', + dujiang_info:'出牌阶段限一次,你可以弃置一张黑色牌令一名随机敌人获得一张毒。', binxin:'冰心', - binxin_info:'在一名角色的结束阶段,若其体力值为1,你可以令其获得1点护甲', + binxin_info:'在一名角色的结束阶段,若其体力值为1,你可以令其获得1点护甲。', qixia:'绮霞', - qixia_info:'锁定技,当你累计使用或打出了4种不同花色的牌后,你于本回合结束后获得一个额外回合', + qixia_info:'锁定技,当你累计使用或打出了4种不同花色的牌后,你于本回合结束后获得一个额外回合。', jianzhen:'剑阵', - jianzhen_info:'锁定技,当你使用杀对目标结算完毕后,其他角色可以对该目标使用一张杀,当有人选择出杀后终止此结算', + jianzhen_info:'锁定技,当你使用杀对目标结算完毕后,其他角色可以对该目标使用一张杀,当有人选择出杀后终止此结算。', husha:'虎煞', husha_bg:'煞', - husha_info:'每当你于出牌阶段造成1点伤害,你获得一枚虎煞标记(标记数不超过3);结束阶段,你可以选择一项:1. 移去一枚虎煞标记,视为对任意角色使用一张杀;2. 移去两枚虎煞标记,视为使用一张南蛮入侵;3. 移去三枚虎煞标记,视为对除你之外的角色使用一张元素毁灭', + husha_info:'每当你于出牌阶段造成1点伤害,你获得一枚虎煞标记(标记数不超过3);结束阶段,你可以选择一项:1. 移去一枚虎煞标记,视为对任意角色使用一张杀;2. 移去两枚虎煞标记,视为使用一张南蛮入侵;3. 移去三枚虎煞标记,视为对除你之外的角色使用一张元素毁灭。', longhuo:'龙火', - longhuo_info:'结束阶段,你可以对所有角色各造成1点火焰伤害', + longhuo_info:'结束阶段,你可以对所有角色各造成1点火焰伤害。', fenshi:'焚世', - fenshi_info:'觉醒技,当你解除濒死状态时,你获得2点护甲,摸两张牌,然后获得技能龙火', + fenshi_info:'觉醒技,当你解除濒死状态时,你获得2点护甲,摸两张牌,然后获得技能龙火。', yanzhan:'炎斩', - yanzhan_info:'出牌阶段限一次,你可以将一张红色牌当作火杀使用,此杀只能用与之花色相同的闪响应;若此杀造成了伤害,你本回合可以额外使用一张杀', + yanzhan_info:'出牌阶段限一次,你可以将一张红色牌当作火杀使用,此杀只能用与之花色相同的闪响应;若此杀造成了伤害,你本回合可以额外使用一张杀。', feixia:'飞霞', - feixia_info:'出牌阶段限一次,你可以弃置一张红色牌视为对一名随机敌人使用一张不计入出杀次数的杀', + feixia_info:'出牌阶段限一次,你可以弃置一张红色牌视为对一名随机敌人使用一张不计入出杀次数的杀。', lueying:'掠影', - lueying_info:'每当你使用一张杀,你可以随机获得目标的一张牌,然后目标可以指定一名其他角色,你弃置该角色一张牌(每回合限发动一次,没有弃牌目标时无法发动)', + lueying_info:'每当你使用一张杀,你可以随机获得目标的一张牌,然后目标可以指定一名其他角色,你弃置该角色一张牌(每回合限发动一次,没有弃牌目标时无法发动)。', feng:'风', - feng_info:'锁定技,当你累计摸2次牌后,你下一次摸牌时摸牌数+1', + feng_info:'锁定技,当你累计摸2次牌后,你下一次摸牌时摸牌数+1。', ya:'雅', - ya_info:'锁定技,当你累计受到2次伤害后,你下一次受到的伤害-1', + ya_info:'锁定技,当你累计受到2次伤害后,你下一次受到的伤害-1。', song:'颂', - song_info:'锁定技,当你累计造成2次伤害后,你下一次造成的伤害+1', + song_info:'锁定技,当你累计造成2次伤害后,你下一次造成的伤害+1。', longxiang:'龙翔', - longxiang_info:'当你使用杀指定目标后,你可以弃置目标若干张手牌直到其手牌数与你相同', + longxiang_info:'当你使用杀指定目标后,你可以弃置目标若干张手牌直到其手牌数与你相同。', huxi:'虎袭', - huxi_info:'你可以失去1点体力并获得1点护甲,视为使用一张杀', + huxi_info:'你可以失去1点体力并获得1点护甲,视为使用一张杀。', xuanmo:'玄墨', - xuanmo_info:'出牌阶段限一次,你可以将一张手牌置于牌堆顶并随机获得两张与之类别相同的牌', + xuanmo_info:'出牌阶段限一次,你可以将一张手牌置于牌堆顶并随机获得两张与之类别相同的牌。', danqing:'丹青', - danqing_info:'结束阶段,若你累计使用了4张花色不同的牌,你可以选择至多4名角色随机获得一个正面效果', - danqing_info_alter:'结束阶段,若你累计使用了4张花色不同的牌,你可以选择至多2名角色随机获得一个正面效果', + danqing_info:'结束阶段,若你累计使用了4张花色不同的牌,你可以选择至多4名角色随机获得一个正面效果。', + danqing_info_alter:'结束阶段,若你累计使用了4张花色不同的牌,你可以选择至多2名角色随机获得一个正面效果。', zhangmu:'障目', - zhangmu_info:'每回合限一次,当你需要使用或打出一张闪时,你可以展示一张闪,视为使用或打出了此闪', + zhangmu_info:'每回合限一次,当你需要使用或打出一张闪时,你可以展示一张闪,视为使用或打出了此闪。', feizhua:'飞爪', - feizhua_info:'当你使用一张杀时,你可以将与目标相邻的角色追加为额外目标', + feizhua_info:'当你使用一张杀时,你可以将与目标相邻的角色追加为额外目标。', leiyu:'雷狱', - leiyu_info:'结束阶段,你可以弃置一张黑色手牌,视为对本回合内所有成为过你的卡牌目标的角色使用一张惊雷闪', + leiyu_info:'结束阶段,你可以弃置一张黑色手牌,视为对本回合内所有成为过你的卡牌目标的角色使用一张惊雷闪。', lingxue:'灵血', - lingxue_info:'锁定技,每当你回复1点体力,你获得1点护甲', + lingxue_info:'锁定技,每当你回复1点体力,你获得1点护甲。', zhaoyao:'招摇', - zhaoyao_info:'其他角色的摸牌阶段开始时,你可以与其拼点,若你赢,你摸两张牌,然后将两张牌置于牌堆顶', + zhaoyao_info:'其他角色的摸牌阶段开始时,你可以与其拼点,若你赢,你摸两张牌,然后将两张牌置于牌堆顶。', sheling:'摄灵', - sheling_info:'其他角色于你的回合内因使用、打出或弃置而失去牌时,你可以获得之(每回合最多发动三次)', + sheling_info:'其他角色于你的回合内因使用、打出或弃置而失去牌时,你可以获得之(每回合最多发动三次)。', fenxing:'分形', - fenxing_info:'锁定技,准备阶段,你有50%概率变身为另一形态', + fenxing_info:'锁定技,准备阶段,你有50%概率变身为另一形态。', guijiang:'鬼降', guijiang2:'鬼降', - guijiang_info:'出牌阶段限一次,你可以弃置一张黑色牌,令一名其他角色无法成为回复牌的目标直到你下一回合开始', + guijiang_info:'出牌阶段限一次,你可以弃置一张黑色牌,令一名其他角色无法成为回复牌的目标直到你下一回合开始。', diesha:'叠杀', - diesha_info:'锁定技,每当你使用杀造成伤害,受伤害角色失去1点体力,你回复1点体力', + diesha_info:'锁定技,每当你使用杀造成伤害,受伤害角色失去1点体力,你回复1点体力。', lingyu:'灵愈', - lingyu_info:'结束阶段,你可以令一名其他角色回复1点体力', + lingyu_info:'结束阶段,你可以令一名其他角色回复1点体力。', diewu:'蝶舞', - diewu_info:'出牌阶段,你可以将一张【杀】交给一名角色,若你于此阶段内首次如此做,你摸一张牌', + diewu_info:'出牌阶段,你可以将一张【杀】交给一名角色,若你于此阶段内首次如此做,你摸一张牌。', duxinshu:'读心', - duxinshu_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后可以用一张手牌替换其中的一张', + duxinshu_info:'出牌阶段限一次,你可以观看一名其他角色的手牌,然后可以用一张手牌替换其中的一张。', feixu:'飞絮', - feixu_info:'每当一名角色使用或打出一张闪,你可以令其摸一张牌', + feixu_info:'每当一名角色使用或打出一张闪,你可以令其摸一张牌。', xuanyan:'玄炎', xuanyan2:'玄炎', - xuanyan_info:'锁定技,你的火属性伤害+1;你造成火属性伤害后失去1点体力', + xuanyan_info:'锁定技,你的火属性伤害+1;你造成火属性伤害后失去1点体力。', ningbin:'凝冰', - ningbin_info:'锁定技,每当你受到1次雷属性伤害,你回复1点体力', + ningbin_info:'锁定技,每当你受到1次雷属性伤害,你回复1点体力。', xfenxin:'焚心', xfenxin2:'焚心', - xfenxin_info:'锁定技,每当你的体力值发生改变,你摸等量的牌;每当你杀死一名角色,你增加1点体力上限并回复1点体力', - xfenxin_info_alter:'锁定技,每当你的体力值发生改变,你摸一张牌', + xfenxin_info:'锁定技,每当你的体力值发生改变,你摸等量的牌;每当你杀死一名角色,你增加1点体力上限并回复1点体力。', + xfenxin_info_alter:'锁定技,每当你的体力值发生改变,你摸一张牌。', luanjian:'乱剑', - luanjian_info:'出牌阶段,你可以将两张杀当杀使用,此杀无视距离,可以指定任意名目标且有50%的机率伤害+1', + luanjian_info:'出牌阶段,你可以将两张杀当杀使用,此杀无视距离,可以指定任意名目标且有50%的机率伤害+1。', ctianfu:'天符', ctianfu2:'天符', ctianfu3:'天符', - ctianfu_info:'出牌阶段,你可以将一张闪置于一名其他角色的武将牌上,该角色在下一次造成伤害时受到来自你的1点雷属性伤害并随机弃置一张牌,然后移去此牌', + ctianfu_info:'出牌阶段,你可以将一张闪置于一名其他角色的武将牌上,该角色在下一次造成伤害时受到来自你的1点雷属性伤害并随机弃置一张牌,然后移去此牌。', shuiyun:'水蕴', shuiyun_bg:'蕴', shuiyun2:'水蕴', shuiyun5:'水蕴', shuiyun3:'水蕴', - shuiyun_info:'结束阶段,你可以将一张与武将牌上的牌类别均不相同的手牌置于武将牌上称为“蕴”;任意一名角色处于濒死状态时,你可以弃置一张“蕴”令其回复1点体力', - shuiyun_info_alter:'结束阶段,你可以将一张与武将牌上的牌类别均不相同的手牌置于武将牌上称为“蕴”(不能超过2张);任意一名角色处于濒死状态时,你可以弃置一张“蕴”令其回复1点体力', + shuiyun_info:'结束阶段,你可以将一张与武将牌上的牌类别均不相同的手牌置于武将牌上称为“蕴”;任意一名角色处于濒死状态时,你可以弃置一张“蕴”令其回复1点体力。', + shuiyun_info_alter:'结束阶段,你可以将一张与武将牌上的牌类别均不相同的手牌置于武将牌上称为“蕴”(不能超过2张);任意一名角色处于濒死状态时,你可以弃置一张“蕴”令其回复1点体力。', wangyou:'忘忧', - wangyou_info:'其他角色的结束阶段,你可以弃置一张牌,令此回合内受过伤害的所有角色各摸一张牌', + wangyou_info:'其他角色的结束阶段,你可以弃置一张牌,令此回合内受过伤害的所有角色各摸一张牌。', changnian:'长念', changnian2:'追思', - changnian2_info:'锁定技,结束阶段,你摸一张牌', - changnian_info:'你死亡时,可以将所有牌交给一名其他角色,令其获得技能【追思】', + changnian2_info:'锁定技,结束阶段,你摸一张牌。', + changnian_info:'你死亡时,可以将所有牌交给一名其他角色,令其获得技能〖追思〗。', sajin:'洒金', - sajin_info:'出牌阶段限一次,你可以弃置一张手牌并指定任意名角色进行判定,若判定颜色与你弃置的牌相同,该角色回复1点体力', + sajin_info:'出牌阶段限一次,你可以弃置一张手牌并指定任意名角色进行判定,若判定颜色与你弃置的牌相同,该角色回复1点体力。', jtjubao:'聚宝', - jtjubao_info:'当其他角色于你的回合外首次弃置非基本牌时,你可以获得其中的随机一张', + jtjubao_info:'当其他角色于你的回合外首次弃置非基本牌时,你可以获得其中的随机一张。', guiyuan:'归元', - guiyuan_info:'出牌阶段限一次,你可以弃置一张杀,然后回复1点体力并摸一张牌', + guiyuan_info:'出牌阶段限一次,你可以弃置一张杀,然后回复1点体力并摸一张牌。', xshuangren:'双刃', - xshuangren_info:'当你的武器牌被替换时,你可以将其置于你的武将牌上,并获得此装备的武器效果(不含距离)', + xshuangren_info:'当你的武器牌被替换时,你可以将其置于你的武将牌上,并获得此装备的武器效果(不含距离)。', duci:'毒刺', - duci_info:'每当你失去一次装备牌,可以对距离1以内的一名其他角色造成1点伤害', + duci_info:'每当你失去一次装备牌,可以对距离1以内的一名其他角色造成1点伤害。', shenmu:'神木', - shenmu_info:'任意一名角色濒死时,你可以展示你的手牌并弃置其中的所有红色牌(至少一张),若如此做,该角色回复1点体力,然后摸X张牌,X为你弃置的手牌数', + shenmu_info:'任意一名角色濒死时,你可以展示你的手牌并弃置其中的所有红色牌(至少一张),若如此做,该角色回复1点体力,然后摸X张牌,X为你弃置的手牌数。', qijian:'气剑', - qijian_info:'弃牌阶段结束时,你可以指定至多X名目标视为使用一张杀,X为你于此阶段弃置的卡牌数', + qijian_info:'弃牌阶段结束时,你可以指定至多X名目标视为使用一张杀,X为你于此阶段弃置的卡牌数。', poyun:'破云', - poyun_info:'每当你造成一次伤害,你可以弃置一枚玄凝标记,然后弃置对方两张牌', - poyun_info_alter:'每当你造成一次伤害,你可以弃置一枚玄凝标记,然后弃置对方一张牌', + poyun_info:'每当你造成一次伤害,你可以弃置一枚玄凝标记,然后弃置对方两张牌。', + poyun_info_alter:'每当你造成一次伤害,你可以弃置一枚玄凝标记,然后弃置对方一张牌。', qianfang:'千方', - qianfang_info:'准备阶段,若你有玄凝标记,你可以弃置3-X张牌和所有玄凝标记,视为使用了一张【万箭齐发】,每当一名敌方角色因此牌受到伤害,你摸一张牌。X为你的玄凝标记数', - qianfang_info_alter:'准备阶段,若你有玄凝标记,可以弃置3-X张牌和所有玄凝标记,视为使用了一张【万箭齐发】,X为你的玄凝标记数', + qianfang_info:'准备阶段,若你有玄凝标记,你可以弃置3-X张牌和所有玄凝标记,视为使用了一张【万箭齐发】,每当一名敌方角色因此牌受到伤害,你摸一张牌。X为你的玄凝标记数。', + qianfang_info_alter:'准备阶段,若你有玄凝标记,可以弃置3-X张牌和所有玄凝标记,视为使用了一张【万箭齐发】,X为你的玄凝标记数。', longxi:'龙息', longxi2:'龙息', - longxi_info:'锁定技,在回合外每当你需要使用或打出一张卡牌时,若牌堆顶的前两张中有可使用或打出的牌,你立即获得之', + longxi_info:'锁定技,在回合外每当你需要使用或打出一张卡牌时,若牌堆顶的前两张中有可使用或打出的牌,你立即获得之。', zhuyue:'逐月', - zhuyue_info:'出牌阶段限一次,你可以弃置一张非基本牌并指定至多两个目标各随机弃置一张牌,若如此做,你本回使用的杀须指定选中角色为目标', - zhuyue_info_alter:'出牌阶段限一次,你可以弃置一张黑色非基本牌并指定至多两个目标各随机弃置一张牌,若如此做,你本回使用的杀须指定选中角色为目标', + zhuyue_info:'出牌阶段限一次,你可以弃置一张非基本牌并指定至多两个目标各随机弃置一张牌,若如此做,你本回使用的杀须指定选中角色为目标。', + zhuyue_info_alter:'出牌阶段限一次,你可以弃置一张黑色非基本牌并指定至多两个目标各随机弃置一张牌,若如此做,你本回使用的杀须指定选中角色为目标。', guanri:'贯日', - guanri_info:'限制技,你可以弃置两张红色手牌并失去1点体力,然后对一名体力值不少于你的其他角色造成2点火焰伤害并弃置其所有装备牌', + guanri_info:'限制技,你可以弃置两张红色手牌并失去1点体力,然后对一名体力值不少于你的其他角色造成2点火焰伤害并弃置其所有装备牌。', tianxian:'天弦', - tianxian_info:'锁定技,你的杀无视距离且可指定任意多个目标,目标须进行一次判定,若结果为黑色则取消之', + tianxian_info:'锁定技,你的杀无视距离且可指定任意多个目标,目标须进行一次判定,若结果为黑色则取消之。', zhimeng:'织梦', zhimeng2:'织梦', zhimeng3:'织梦', - zhimeng_info:'结束阶段,你可以选择一名其他角色将牌堆顶的一张牌置于该角色的武将牌上,直到你的下个准备阶段将其收入手牌。当一名角色武将牌上有织梦牌时,每当其成为与此牌类型相同的卡牌的目标,可以摸一张牌', - zhimeng_info_alter:'结束阶段,你可以令一名其他角色摸一张牌', + zhimeng_info:'结束阶段,你可以选择一名其他角色将牌堆顶的一张牌置于该角色的武将牌上,直到你的下个准备阶段将其收入手牌。当一名角色武将牌上有织梦牌时,每当其成为与此牌类型相同的卡牌的目标,可以摸一张牌。', + zhimeng_info_alter:'结束阶段,你可以令一名其他角色摸一张牌。', runxin:'润心', - runxin_info:'每当你使用或打出一张红桃牌,你可以令一名角色回复1点体力', + runxin_info:'每当你使用或打出一张红桃牌,你可以令一名角色回复1点体力。', tannang:'探囊', - tannang_info:'出牌阶段限一次,你可以将一张梅花手牌当顺手牵羊使用;你的顺手牵羊无距离限制', + tannang_info:'出牌阶段限一次,你可以将一张梅花手牌当顺手牵羊使用;你的顺手牵羊无距离限制。', tuoqiao:'烟瘴', - tuoqiao_info:'你可以将一张黑色牌当作石灰粉使用', + tuoqiao_info:'你可以将一张黑色牌当作石灰粉使用。', xiaoyao:'逍遥', - xiaoyao_info:'每当你成为其他角色的卡牌目标,你可以弃置一张与之花色相同的手牌取消之', + xiaoyao_info:'每当你成为其他角色的卡牌目标,你可以弃置一张与之花色相同的手牌取消之。', tianjian:'天剑', - tianjian_info:'出牌阶段限一次,你可以将一张杀当作万箭齐发使用,受到伤害的角色随机弃置一张牌', - tianjian_info_alter:'出牌阶段限一次,你可以将一张杀当作万箭齐发使用', + tianjian_info:'出牌阶段限一次,你可以将一张杀当作万箭齐发使用,受到伤害的角色随机弃置一张牌。', + tianjian_info_alter:'出牌阶段限一次,你可以将一张杀当作万箭齐发使用。', xjyufeng:'御风', - xjyufeng_info:'锁定技,当你失去手牌后,若手牌数少于2,你将手牌数补至2(每回合最多发动两次)', + xjyufeng_info:'锁定技,当你失去手牌后,若手牌数少于2,你将手牌数补至2(每回合最多发动两次)。', huimeng:'回梦', - huimeng_info:'每当你回复1点体力,可以摸两张牌', + huimeng_info:'每当你回复1点体力,可以摸两张牌。', tianshe:'天蛇', tianshe2:'天蛇', - tianshe_info:'锁定技,你防止即将受到的属性伤害,每当你造成一次属性伤害,你回复1点体力', + tianshe_info:'锁定技,你防止即将受到的属性伤害,每当你造成一次属性伤害,你回复1点体力。', }, }; }); From c68f075278080b8e3be15f3b618eff212efa219e Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 20:27:19 +0800 Subject: [PATCH 017/302] update swd.js --- character/swd.js | 459 +++++++++++++++++++++++------------------------ 1 file changed, 229 insertions(+), 230 deletions(-) diff --git a/character/swd.js b/character/swd.js index f4447266a..20dc6119f 100644 --- a/character/swd.js +++ b/character/swd.js @@ -9766,292 +9766,291 @@ game.import('character',function(lib,game,ui,get,ai,_status){ swd_xiaohuanglong:'小黄龙', cyshuiyun:'水云', - cyshuiyun_info:'准备阶段,你可以弃置一名其他角色的一张牌;每当你失去此技能,你可以弃置一名其他角色的一张牌', + cyshuiyun_info:'准备阶段,你可以弃置一名其他角色的一张牌;每当你失去此技能,你可以弃置一名其他角色的一张牌。', cyliuzi:'流紫', - cyliuzi_info:'摸牌阶段,你可以额外摸一张牌;每当你失去此技能,你可以摸一张牌', + cyliuzi_info:'摸牌阶段,你可以额外摸一张牌;每当你失去此技能,你可以摸一张牌。', cyyijin:'异金', - cyyijin_info:'出牌阶段,你可以对一名体力值为全场最多的角色造成1点伤害;每当你失去此技能,你可以对一名体力值为全场最多的角色造成1点伤害', + cyyijin_info:'出牌阶段,你可以对一名体力值为全场最多的角色造成1点伤害;每当你失去此技能,你可以对一名体力值为全场最多的角色造成1点伤害。', cyqingling:'青凌', - cyqingling_info:'弃牌阶段,若你弃置了至少一张牌,你可以获得1点护甲;每当你失去此技能,你可以获得1点护甲', + cyqingling_info:'弃牌阶段,若你弃置了至少一张牌,你可以获得1点护甲;每当你失去此技能,你可以获得1点护甲。', cyqiandian:'千靛', - cyqiandian_info:'结束阶段,你可以视为使用一张惊雷闪;每当你失去此技能,你可以视为使用一张惊雷闪', + cyqiandian_info:'结束阶段,你可以视为使用一张惊雷闪;每当你失去此技能,你可以视为使用一张惊雷闪。', gxianyin:'仙音', - gxianyin_info:'出牌阶段限一次,你可以选择一种花色,将你的手牌中该花色的牌移至弃牌堆,然后选择另一种花色,从牌堆中获得等量的该花色的牌', + gxianyin_info:'出牌阶段限一次,你可以选择一种花色,将你的手牌中该花色的牌移至弃牌堆,然后选择另一种花色,从牌堆中获得等量的该花色的牌。', // gxianyin_info_alter:'', cyxianjiang:'仙匠', - cyxianjiang_info:'每当你使用一张牌指定惟一目标时,你可以复制对方装备区内的一张你没有的牌,并置入你的装备区,每回合对一名角色最多发动一次', + cyxianjiang_info:'每当你使用一张牌指定惟一目标时,你可以复制对方装备区内的一张你没有的牌,并置入你的装备区,每回合对一名角色最多发动一次。', cyqiaoxie:'巧械', - cyqiaoxie_info:'每当你失去一张装备牌(使用除外),你可以随机观看三张机关牌,并使用其中一张', - cyqiaoxie_info_alter:'每当你装备一件装备,若你的手牌数不大于体力值,你可以摸一张牌;每当你失去一件装备牌,你可以随机观看2张机关牌,并使用其中一张', + cyqiaoxie_info:'每当你失去一张装备牌(使用除外),你可以随机观看三张机关牌,并使用其中一张。', + cyqiaoxie_info_alter:'每当你装备一件装备,若你的手牌数不大于体力值,你可以摸一张牌;每当你失去一件装备牌,你可以随机观看2张机关牌,并使用其中一张。', cyzhencha:'侦察', - cyzhencha_info:'出牌阶段限一次,若你的装备区内的可强化装备,你可以弃置一张基本牌并观看一名其他角色的手牌,若其中有与你弃置的牌颜色相同的牌,你随机升级装备区内的一件装备,否则你摸一张牌;你根据装备区内升级的装备数获得额外技能', + cyzhencha_info:'出牌阶段限一次,若你的装备区内的可强化装备,你可以弃置一张基本牌并观看一名其他角色的手牌,若其中有与你弃置的牌颜色相同的牌,你随机升级装备区内的一件装备,否则你摸一张牌;你根据装备区内升级的装备数获得额外技能。', cylingjia:'灵甲', - cylingjia_info:'出牌阶段限一次,你可以弃置一张装备牌,然后令云狐随机装备一件装备(不替换现有装备)并将其强化', + cylingjia_info:'出牌阶段限一次,你可以弃置一张装备牌,然后令云狐随机装备一件装备(不替换现有装备)并将其强化。', cyqiaobo:'巧补', - cyqiaobo_info:'出牌阶段限一次,你可以弃置一张锦囊牌,然后令云狐回复1点体力', + cyqiaobo_info:'出牌阶段限一次,你可以弃置一张锦囊牌,然后令云狐回复1点体力。', cqiaoxie:'巧械', - cqiaoxie_info:'出牌阶段限一次,你可以将一张锦囊牌当作零件袋使用;每当你使用一张零件牌,你获得1点技能点数', + cqiaoxie_info:'出牌阶段限一次,你可以将一张锦囊牌当作零件袋使用;每当你使用一张零件牌,你获得1点技能点数。', xiufu:'修复', - xiufu_info:'出牌阶段,你可以弃置一张装备牌或机关牌,令云狐回复1点体力', + xiufu_info:'出牌阶段,你可以弃置一张装备牌或机关牌,令云狐回复1点体力。', yhshengong:'神工', - yhshengong_info:'游戏开始时,你获得3点技能点数;每当你造成1点伤害,你获得1点技能点数;出牌阶段,你可以通过消耗技能点令云狐获得新的技能(云狐体力为0时无法学习或发动技能)', + yhshengong_info:'游戏开始时,你获得3点技能点数;每当你造成1点伤害,你获得1点技能点数;出牌阶段,你可以通过消耗技能点令云狐获得新的技能(云狐体力为0时无法学习或发动技能)。', juxi:'聚息', - juxi_info:'锁定技,每当一名角色于其回合外弃置牌,你获得一枚聚息标记;出牌阶段限一次,你可以移去X枚聚息标记,然后选择一项:对一名角造成1点伤害,或令一名角色回复1点体力,X为存活角色数', + juxi_info:'锁定技,每当一名角色于其回合外弃置牌,你获得一枚聚息标记;出牌阶段限一次,你可以移去X枚聚息标记,然后选择一项:对一名角造成1点伤害,或令一名角色回复1点体力,X为存活角色数。', yeying:'曳影', - yeying_info:'出牌阶段限一次,你可以将一张黑色牌当作乾坤镖使用', + yeying_info:'出牌阶段限一次,你可以将一张黑色牌当作乾坤镖使用。', jiefen:'解纷', - jiefen_info:'出牌阶段限一次,你可以令一名手牌数多于你的角色交给你一张牌,然后你交给一名手牌数少于你的角色一张牌', + jiefen_info:'出牌阶段限一次,你可以令一名手牌数多于你的角色交给你一张牌,然后你交给一名手牌数少于你的角色一张牌。', datong:'大同', - datong_info:'任意一名角色的结束阶段,若全场手牌数最多和最少的角色手牌数之差不超过1,你摸两张牌', + datong_info:'任意一名角色的结束阶段,若全场手牌数最多和最少的角色手牌数之差不超过1,你摸两张牌。', huodan:'火丹', - huodan_info:'出牌阶段限一次,你可以弃置一张红色牌并失去1点体力,然后将2点火属性伤害分配给1~2名角色', - huodan_info_alter:'出牌阶段限一次,你可以弃置一张红色牌并失去1点体力,然后将2点火属性伤害分配给1~2名角色;若你只分配了一名角色,该角色在结算后摸一张牌', + huodan_info:'出牌阶段限一次,你可以弃置一张红色牌并失去1点体力,然后将2点火属性伤害分配给1~2名角色。', + huodan_info_alter:'出牌阶段限一次,你可以弃置一张红色牌并失去1点体力,然后将2点火属性伤害分配给1~2名角色;若你只分配了一名角色,该角色在结算后摸一张牌。', sxianjing:'陷阱', sxianjing_bg:'阱', - sxianjing_info:'出牌阶段,你可以将一张手牌背面朝上置于你的武将牌上(不能与已有花色相同)。当一名其他角色使用与一张“陷阱”牌花色相同的牌指定你为目标时,你移去对应的“陷阱”牌,然后随机获得该角色的一张牌。每当你受到一次伤害,你随机将一张“陷阱”牌返回手牌', + sxianjing_info:'出牌阶段,你可以将一张手牌背面朝上置于你的武将牌上(不能与已有花色相同)。当一名其他角色使用与一张“陷阱”牌花色相同的牌指定你为目标时,你移去对应的“陷阱”牌,然后随机获得该角色的一张牌。每当你受到一次伤害,你随机将一张“陷阱”牌返回手牌。', zhanxing:'占星', - zhanxing_info:'出牌阶段限一次,你可以弃置任意张牌,并亮出牌堆顶的等量的牌,并根据亮出的牌包含的花色执行以下效果:♦︎摸两张牌;♥回复1点体力(若未损失体力改为获得1点护甲);♣令所有敌人随机弃置一张牌;♠令一名角色受到1点无来源的雷属性伤害', + zhanxing_info:'出牌阶段限一次,你可以弃置任意张牌,并亮出牌堆顶的等量的牌,并根据亮出的牌包含的花色执行以下效果:♦︎摸两张牌;♥回复1点体力(若未损失体力改为获得1点护甲);♣令所有敌人随机弃置一张牌;♠令一名角色受到1点无来源的雷属性伤害。', kbolan:'博览', - kbolan_info:'每当你摸牌时,你可以额外摸一张牌,然后摸牌结束时将一张手牌置于牌堆顶', + kbolan_info:'每当你摸牌时,你可以额外摸一张牌,然后摸牌结束时将一张手牌置于牌堆顶。', gaizao:'改造', - gaizao_info:'每当你即将装备一张牌(特殊类装备除外),若你的装备区内对应位置已有牌,你可以永久改变此牌的装备类型使其装备在装备区内的空余位置', + gaizao_info:'每当你即将装备一张牌(特殊类装备除外),若你的装备区内对应位置已有牌,你可以永久改变此牌的装备类型使其装备在装备区内的空余位置。', lingshi:'灵矢', - lingshi_info:'你的装备区内每有一张牌,你的攻击范围+2;当你的装备区内有武器牌或防具牌时,你的杀不可闪避;当你的装备区内有马时,你摸牌阶段额外摸一张牌;当你的装备内的宝物牌时,你回合内可以额外使用一张杀', + lingshi_info:'你的装备区内每有一张牌,你的攻击范围+2;当你的装备区内有武器牌或防具牌时,你的杀不可闪避;当你的装备区内有马时,你摸牌阶段额外摸一张牌;当你的装备内的宝物牌时,你回合内可以额外使用一张杀。', tiebi:'铁壁', - tiebi_info:'当距离你1以内的一名角色成为杀的目标时,若其没有护甲,你可以弃置一张黑色手牌使其获得1点护甲', + tiebi_info:'当距离你1以内的一名角色成为杀的目标时,若其没有护甲,你可以弃置一张黑色手牌使其获得1点护甲。', shenyan:'神炎', shenyan_bg:'炎', - shenyan_info:'限定技,当你即将造成火焰伤害时,你可以令此伤害+1,并对目标距离1以内的所有其他角色各造成1点火焰伤害', + shenyan_info:'限定技,当你即将造成火焰伤害时,你可以令此伤害+1,并对目标距离1以内的所有其他角色各造成1点火焰伤害。', xuanying:'旋影', - xuanying_info:'你可以横置你的武将牌,视为使用一张无视距离的杀;每当你于回合外失去牌,你可以竖置你的武将牌,视为使用一张无视距离的杀', + xuanying_info:'你可以横置你的武将牌,视为使用一张无视距离的杀;每当你于回合外失去牌,你可以竖置你的武将牌,视为使用一张无视距离的杀。', hwendao:'问道', - hwendao_info:'每当你于回合外使用或打出一张牌,你可以令当前回合角色弃置一张与之花色相同的牌,否则你获得其一张牌', + hwendao_info:'每当你于回合外使用或打出一张牌,你可以令当前回合角色弃置一张与之花色相同的牌,否则你获得其一张牌。', lingfeng:'凌锋', - lingfeng_info:'结束阶段,若你本回合内使用了至少X张牌,你可以选择一项:获得1点护甲,或对攻击范围内的一名角色造成1点伤害(X为你当前的体力值且最多为3)', + lingfeng_info:'结束阶段,若你本回合内使用了至少X张牌,你可以选择一项:获得1点护甲,或对攻击范围内的一名角色造成1点伤害(X为你当前的体力值且最多为3)。', hxunzhi:'殉志', - hxunzhi_info:'限定技,出牌阶段,你可以视为使用一张万箭齐发并获得技能武圣、咆哮,若如此做,你在此阶段结束时死亡', - hxunzhi_info_alter:'限定技,出牌阶段,你可以获得技能武圣、咆哮,若如此做,你在此阶段结束时死亡', + hxunzhi_info:'限定技,出牌阶段,你可以视为使用一张万箭齐发并获得技能武圣、咆哮,若如此做,你在此阶段结束时死亡。', + hxunzhi_info_alter:'限定技,出牌阶段,你可以获得技能武圣、咆哮,若如此做,你在此阶段结束时死亡。', lmazui:'麻醉', lmazui2:'麻醉', - lmazui_info:'出牌阶段限一次,你可以将一张黑色手牌置于一名角色的武将牌上,该角色造成的下一次伤害-1,然后获得此牌', + lmazui_info:'出牌阶段限一次,你可以将一张黑色手牌置于一名角色的武将牌上,该角色造成的下一次伤害-1,然后获得此牌。', hyunshen:'云身', hyunshen2:'云身', - hyunshen_info:'每当你打出一张闪,你可以令你的防御距离+1;准备阶段,你将累计的防御距离清零,然后摸等量的牌', + hyunshen_info:'每当你打出一张闪,你可以令你的防御距离+1;准备阶段,你将累计的防御距离清零,然后摸等量的牌。', hlingbo:'凌波', - hlingbo_info:'每当你使用或打出一张闪,你可以摸两张牌', + hlingbo_info:'每当你使用或打出一张闪,你可以摸两张牌。', gtiandao:'天道', - gtiandao_info:'任意一名角色的判定生效前,你可以打出一张牌替换之', + gtiandao_info:'任意一名角色的判定生效前,你可以打出一张牌替换之。', nlianji:'连计', nlianji_info:'出牌阶段限一次,你可以选择一张手牌并指定两名角色进行拼点。若拼点结果不为平局,拼点赢的角色获得此牌,并对没赢的角色造成1点伤害。', fengze:'风泽', - fengze_info:'出牌阶段限一次,你可以将一张黑色牌当作桃园结义使用', + fengze_info:'出牌阶段限一次,你可以将一张黑色牌当作桃园结义使用。', lingyue:'凌月', - lingyue_info:'每当你使用一张杀,你可以令目标弃置一张牌', + lingyue_info:'每当你使用一张杀,你可以令目标弃置一张牌。', jinlin:'金鳞', - jinlin_info:'限定技,出牌阶段,你可以令任意名角色各获得3点护甲,获得护甲的角色于每个准备阶段失去1点护甲,直到首次失去所有护甲或累计以此法失去3点护甲', + jinlin_info:'限定技,出牌阶段,你可以令任意名角色各获得3点护甲,获得护甲的角色于每个准备阶段失去1点护甲,直到首次失去所有护甲或累计以此法失去3点护甲。', huanxia:'幻霞', - huanxia_info:'你可以将一张红色牌当作杀使用,若此杀未造成伤害,你在结束阶段收回此牌', + huanxia_info:'你可以将一张红色牌当作杀使用,若此杀未造成伤害,你在结束阶段收回此牌。', jingjie:'幻镜', - jingjie_info:'准备阶段,你可以失去1点体力,并', - jingjie_old_info:'限定技,出牌阶段,你可以令所有角色弃置所有牌,然后摸两张牌(不触发任何技能)', + jingjie_info:'限定技,出牌阶段,你可以令所有角色弃置所有牌,然后摸两张牌(不触发任何技能)。', kongmo:'恐魔', - kongmo_info:'锁定技,你使用基本牌或普通锦囊牌后将额外结算一次卡牌效果', + kongmo_info:'锁定技,你使用基本牌或普通锦囊牌后将额外结算一次卡牌效果。', jufu:'巨斧', - jufu_info:'锁定技,当你有武器牌时,杀造成的伤害+1', + jufu_info:'锁定技,当你有武器牌时,杀造成的伤害+1。', huajing:'化精', - huajing_info:'每当你使用锦囊牌造成伤害,可以回复1点体力并摸一张牌', + huajing_info:'每当你使用锦囊牌造成伤害,可以回复1点体力并摸一张牌。', pingxu:'冯虚', - pingxu_info:'锁定技,当你没有武器牌时,你的进攻距离+1;当你没有防具牌时,你的防御距离+1', + pingxu_info:'锁定技,当你没有武器牌时,你的进攻距离+1;当你没有防具牌时,你的防御距离+1。', yudun:'愚钝', - yudun_info:'锁定技,你无法使用锦囊牌;你可以将两张锦囊牌当作一张不计入出杀次数的杀使用', + yudun_info:'锁定技,你无法使用锦囊牌;你可以将两张锦囊牌当作一张不计入出杀次数的杀使用。', bingfeng:'冰封', bingfeng2:'冰封', - bingfeng2_info:'不能使用或打出手牌', - bingfeng_info:'限定技,出牌阶段,你可以指定至多三个目标与其一同翻面,且处于翻面状态时不能使用或打出手牌;若如此做,你失去技能玄咒并减少1点体力上限', + bingfeng2_info:'不能使用或打出手牌。', + bingfeng_info:'限定技,出牌阶段,你可以指定至多三个目标与其一同翻面,且处于翻面状态时不能使用或打出手牌;若如此做,你失去技能玄咒并减少1点体力上限。', guozao:'聒噪', - guozao_info:'锁定技,每当距离你1以内的角色受到一次伤害,若伤害来源不你,你须观看牌堆顶的三张牌,然后指定距离2以内的一名有手牌角色将手牌与这些牌交换', - guozao_info_alter:'锁定技,每当距离你1以内的角色受到一次伤害,若伤害来源不你,你须观看牌堆顶的三张牌,然后指定距离1以内的一名有手牌角色将手牌与这些牌交换', + guozao_info:'锁定技,每当距离你1以内的角色受到一次伤害,若伤害来源不你,你须观看牌堆顶的三张牌,然后指定距离2以内的一名有手牌角色将手牌与这些牌交换。', + guozao_info_alter:'锁定技,每当距离你1以内的角色受到一次伤害,若伤害来源不你,你须观看牌堆顶的三张牌,然后指定距离1以内的一名有手牌角色将手牌与这些牌交换。', heihuo:'黑火', - heihuo_info:'出牌阶段,你可以弃置一张装备牌,令你的手牌数加倍;若你的手牌因此达到8张或更多,你立即受到3点火焰伤害且本回合内不能再次发动黑火', + heihuo_info:'出牌阶段,你可以弃置一张装备牌,令你的手牌数加倍;若你的手牌因此达到8张或更多,你立即受到3点火焰伤害且本回合内不能再次发动黑火。', yaotong:'妖瞳', yaotong1:'妖瞳', yaotong2:'妖瞳', yaotong3:'妖瞳', yaotong4:'妖瞳', - yaotong_info:'当你的手牌数为奇数时,你可以将一张手牌当作杀或闪使用或打出,当你的手牌数为偶数时,你可以将一张手牌当作无懈可击使用', - yaotong_info_alter:'当你的手牌数为奇数时,你可以将一张手牌当作杀使用或打出,当你的手牌数为偶数时,你可以将一张手牌当作无懈可击使用', + yaotong_info:'当你的手牌数为奇数时,你可以将一张手牌当作杀或闪使用或打出,当你的手牌数为偶数时,你可以将一张手牌当作无懈可击使用。', + yaotong_info_alter:'当你的手牌数为奇数时,你可以将一张手牌当作杀使用或打出,当你的手牌数为偶数时,你可以将一张手牌当作无懈可击使用。', pojian:'破茧', - pojian_info:'每当你失去最后一张手牌,可以从牌堆中获得一张装备牌并装备之', + pojian_info:'每当你失去最后一张手牌,可以从牌堆中获得一张装备牌并装备之。', huajin:'化金', huajin2:'化金', - huajin_info:'出牌阶段限一次,你可以弃置一张牌令你造成的伤害+1,直到你的下一回合开始', + huajin_info:'出牌阶段限一次,你可以弃置一张牌令你造成的伤害+1,直到你的下一回合开始。', poxiao:'破霄', - poxiao_info:'你可以将一张装备牌当杀使用;当你没有武器牌时,你的攻击范围+1,杀可以额外指定一个目标', + poxiao_info:'你可以将一张装备牌当杀使用;当你没有武器牌时,你的攻击范围+1,杀可以额外指定一个目标。', jianji:'箭疾', - jianji_info:'你可以将一张装备牌当杀使用,然后摸一张牌,此杀无视距离和防具,且不计入回合内出杀限制', + jianji_info:'你可以将一张装备牌当杀使用,然后摸一张牌,此杀无视距离和防具,且不计入回合内出杀限制。', yuchen:'浴尘', - yuchen_info:'每当你于回合外使用或打出一张黑色牌,你可以弃置一名角色的一张牌', + yuchen_info:'每当你于回合外使用或打出一张黑色牌,你可以弃置一名角色的一张牌。', huangyu:'凰羽', - huangyu_info:'出牌阶段限一次,你可以将两张红色牌当炽羽袭使用', + huangyu_info:'出牌阶段限一次,你可以将两张红色牌当炽羽袭使用。', bingjian:'冰箭', - bingjian_info:'出牌阶段限一次,你可以弃置一张黑色的杀,令一名有手牌的其他角色展示手牌并弃置其中的所有闪,若其没有闪则受到1点雷电伤害', + bingjian_info:'出牌阶段限一次,你可以弃置一张黑色的杀,令一名有手牌的其他角色展示手牌并弃置其中的所有闪,若其没有闪则受到1点雷电伤害。', rumeng:'入梦', - rumeng_info:'其他角色的出牌阶段前,你可以弃置一张非基本牌,并令其选择一项:弃置一张基本牌,或跳过出牌及弃牌阶段', + rumeng_info:'其他角色的出牌阶段前,你可以弃置一张非基本牌,并令其选择一项:弃置一张基本牌,或跳过出牌及弃牌阶段。', lianda:'连打', - lianda_info:'当你使用一杀结算完毕后,可以弃置一张牌视为对目标再使用一张杀', + lianda_info:'当你使用一杀结算完毕后,可以弃置一张牌视为对目标再使用一张杀。', xianghui:'祥晖', - xianghui_info:'出牌阶段限一次,你可以弃置一张红色手牌,然后令场上体力值最少的角色各回复1点体力', + xianghui_info:'出牌阶段限一次,你可以弃置一张红色手牌,然后令场上体力值最少的角色各回复1点体力。', huiqi:'回气', - huiqi_info:'每当你受到一次伤害,可令一名其他角色摸X张牌,X为你已损失的体力值', + huiqi_info:'每当你受到一次伤害,可令一名其他角色摸X张牌,X为你已损失的体力值。', toudan:'投弹', - toudan_info:'出牌阶段限一次,你可以弃置一张黑桃牌对一名其他角色造成1点火焰伤害,然后你与距离该角色1以内的所有角色各弃置一张牌', + toudan_info:'出牌阶段限一次,你可以弃置一张黑桃牌对一名其他角色造成1点火焰伤害,然后你与距离该角色1以内的所有角色各弃置一张牌。', shending:'神丁', - shending_info:'锁定技,若你没有宝物牌,视为装备了蓝格怪衣', + shending_info:'锁定技,若你没有宝物牌,视为装备了蓝格怪衣。', hzhenwei:'镇卫', - hzhenwei_info:'当一名其他角色成为杀的目标后,若你在杀的使用者的攻击范围内,你可以弃置一张牌将此杀转移给自己,并在杀结算完毕后摸一张牌', + hzhenwei_info:'当一名其他角色成为杀的目标后,若你在杀的使用者的攻击范围内,你可以弃置一张牌将此杀转移给自己,并在杀结算完毕后摸一张牌。', shoulie:'狩猎', - shoulie_info:'当你使用一张杀指定目标后,可以弃置一张手牌令此杀不可闪避', + shoulie_info:'当你使用一张杀指定目标后,可以弃置一张手牌令此杀不可闪避。', hudun:'盾甲', hudun_bg:'盾', hudun2:'盾甲', - hudun_info:'锁定技,当你对其他角色造成伤害后,若你没有护甲,你获得1点护甲值', + hudun_info:'锁定技,当你对其他角色造成伤害后,若你没有护甲,你获得1点护甲值。', zhenjiu:'针灸', zhenjiu2:'针灸', - zhenjiu_info:'出牌阶段限一次,你可以将一张红色手牌置于一名角色的武将牌上,该角色于下一个准备阶段回复1点体力,然后获得此牌', + zhenjiu_info:'出牌阶段限一次,你可以将一张红色手牌置于一名角色的武将牌上,该角色于下一个准备阶段回复1点体力,然后获得此牌。', ljifeng:'疾风', - ljifeng_info:'锁定技,你的攻击范围+X,杀可以额外指定X个目标,X为你已损失的体力值', + ljifeng_info:'锁定技,你的攻击范围+X,杀可以额外指定X个目标,X为你已损失的体力值。', lxianglong:'翔龙', - lxianglong_info:'每当你闪避一张杀,你可以视为使用一张杀', + lxianglong_info:'每当你闪避一张杀,你可以视为使用一张杀。', shangxi:'伤袭', - shangxi_info:'准备阶段,你可以弃置一张牌,并对攻击范围内一名体力值不小于你的其他角色造成1点伤害', + shangxi_info:'准备阶段,你可以弃置一张牌,并对攻击范围内一名体力值不小于你的其他角色造成1点伤害。', fzhenwei:'镇威', - fzhenwei_info:'在你的回合内,你可以将其他角色打出的卡牌交给除该角色外的任意一名角色', + fzhenwei_info:'在你的回合内,你可以将其他角色打出的卡牌交给除该角色外的任意一名角色。', fuyan:'覆岩', fuyan2:'覆岩', - fuyan_info:'每当你受到一次伤害,可以令一名没有护甲的角色获得1点护甲值', + fuyan_info:'每当你受到一次伤害,可以令一名没有护甲的角色获得1点护甲值。', guaili:'怪力', - guaili_info:'锁定技,你的杀造成的伤害+1,造成伤害后需弃置两张手牌', + guaili_info:'锁定技,你的杀造成的伤害+1,造成伤害后需弃置两张手牌。', pingshen:'凭神', pingshen2:'凭神', - pingshen_info:'锁定技,受到过你的伤害的角色可在回合内对你发动一次【离魂】(每局限发动一次)', + pingshen_info:'锁定技,受到过你的伤害的角色可在回合内对你发动一次【离魂】(每局限发动一次)。', xingzhui:'星坠', - xingzhui_info:'出牌阶段限一次,你可以弃置一张牌,并令一名有牌的其他角色弃置一张类别相同的牌,若则受到1点伤害', + xingzhui_info:'出牌阶段限一次,你可以弃置一张牌,并令一名有牌的其他角色弃置一张类别相同的牌,若则受到1点伤害。', lingxian:'凌仙', - lingxian_info:'每当你于回合外使用或打出一张手牌,你可以选择攻击范围外的一名其他角色与你各摸一张牌', + lingxian_info:'每当你于回合外使用或打出一张手牌,你可以选择攻击范围外的一名其他角色与你各摸一张牌。', shouyin:'守印', - shouyin_info:'限定技,当任意一名角色处于濒死状态时,若你的武将牌正朝上,可以将武将牌翻面,然后令场上所有存活角色将体力回复至体力上限', - shouyin_info_alter:'限定技,当任意一名角色处于濒死状态时,若你的武将牌正朝上,可以将武将牌翻面,然后令场上所有存活角色回复2点体力', + shouyin_info:'限定技,当任意一名角色处于濒死状态时,若你的武将牌正朝上,可以将武将牌翻面,然后令场上所有存活角色将体力回复至体力上限。', + shouyin_info_alter:'限定技,当任意一名角色处于濒死状态时,若你的武将牌正朝上,可以将武将牌翻面,然后令场上所有存活角色回复2点体力。', bofeng:'搏风', - bofeng_info:'锁定技,体力值不大于你的角色视为在你的攻击范围;当你使用杀指定目标时,可令目标额外打出一张闪,否则此杀不可闪避且造成的伤害+1', + bofeng_info:'锁定技,体力值不大于你的角色视为在你的攻击范围;当你使用杀指定目标时,可令目标额外打出一张闪,否则此杀不可闪避且造成的伤害+1。', hutian:'护天', hutian2:'护天', hutian3:'护天', - hutian_info:'结束阶段,你可以将任意张牌置于一名角色的武将牌上,则该角色的体力值始终不能小于“护天”牌数;在你的下一个结束阶段,该角色获得武将牌上的“护天”牌(在此回合不能再次发动)', + hutian_info:'结束阶段,你可以将任意张牌置于一名角色的武将牌上,则该角色的体力值始终不能小于“护天”牌数;在你的下一个结束阶段,该角色获得武将牌上的“护天”牌(在此回合不能再次发动)。', linyun:'凌云', - linyun_info:'你可以将两张牌当作杀使用,此杀需要额外一张闪才能闪避', + linyun_info:'你可以将两张牌当作杀使用,此杀需要额外一张闪才能闪避。', sliufeng:'流风', - sliufeng_info:'锁定技,体力值不大于你的角色视为在你的攻击范围', + sliufeng_info:'锁定技,体力值不大于你的角色视为在你的攻击范围。', chengjian:'承剑', - chengjian_info:'每当其他角色使用杀造成一次伤害,你可以令其摸一张牌', + chengjian_info:'每当其他角色使用杀造成一次伤害,你可以令其摸一张牌。', huanling:'幻灵', huanling2:'幻灵', - huanling_info:'结束阶段,你可以选择一名角色与你同时翻面;翻面状态下,你防止一切伤害', + huanling_info:'结束阶段,你可以选择一名角色与你同时翻面;翻面状态下,你防止一切伤害。', xiaozhan:'消战', - xiaozhan_info:'其他角色使用杀时,若你不是杀的目标,可以弃置一张杀取消之', + xiaozhan_info:'其他角色使用杀时,若你不是杀的目标,可以弃置一张杀取消之。', xielei:'挟雷', - xielei_info:'每当你使用或打出一张杀,可以弃置一张牌并对目标以外的一名角色造成1点雷电伤害', + xielei_info:'每当你使用或打出一张杀,可以弃置一张牌并对目标以外的一名角色造成1点雷电伤害。', dangping:'荡平', - dangping_info:'每当你造成一次伤害,可以弃置一张手牌对其距离1以内的另一名角色造成1点伤害,每回合限一次', + dangping_info:'每当你造成一次伤害,可以弃置一张手牌对其距离1以内的另一名角色造成1点伤害,每回合限一次。', guisi:'归思', - guisi_info:'每当你成为杀的目标,你可以交给对方一张手牌并取消之', + guisi_info:'每当你成为杀的目标,你可以交给对方一张手牌并取消之。', duishi:'对诗', - duishi_info:'出牌阶段,你可以弃置一张手牌,并指定一名有手牌的角色选择一项:1)弃置一张与之花色相同的手牌,本回合内对诗不能再次指定其为目标,2)令你获得其一张牌,对诗失效直到回合结束', + duishi_info:'出牌阶段,你可以弃置一张手牌,并指定一名有手牌的角色选择一项:1)弃置一张与之花色相同的手牌,本回合内对诗不能再次指定其为目标,2)令你获得其一张牌,对诗失效直到回合结束。', anlianying:'连营', - anlianying_info:'每当你失去最后一张手牌,可摸两张牌', + anlianying_info:'每当你失去最后一张手牌,可摸两张牌。', lianwu:'连舞', - lianwu_info:'锁定技,你的杀可以额外指定一个目标,你的红杀不可被闪避', + lianwu_info:'锁定技,你的杀可以额外指定一个目标,你的红杀不可被闪避。', jiying:'疾鹰', - jiying_info:'锁定技,你使用杀无视距离', + jiying_info:'锁定技,你使用杀无视距离。', daofa:'道法', - daofa_info:'每当有一名其他角色造成伤害,你可以令其弃置一张牌', + daofa_info:'每当有一名其他角色造成伤害,你可以令其弃置一张牌。', xiaomoyu:'魔愈', - xiaomoyu_info:'锁定技,每当你于一个回合内首次造成伤害,你回复1点体力,若你没有受伤,则改为摸一张牌', + xiaomoyu_info:'锁定技,每当你于一个回合内首次造成伤害,你回复1点体力,若你没有受伤,则改为摸一张牌。', yihua:'移花', - yihua_info:'每当你成为其他角色的某张卡牌的惟一目标时,你可以弃置两张手牌,将使用者与目标对调', + yihua_info:'每当你成为其他角色的某张卡牌的惟一目标时,你可以弃置两张手牌,将使用者与目标对调。', youyin:'游吟', - youyin_info:'每当有其他角色弃置卡牌时,若其中有非基本牌且你的手牌数不超过5,你可以摸一张牌', + youyin_info:'每当有其他角色弃置卡牌时,若其中有非基本牌且你的手牌数不超过5,你可以摸一张牌。', rexue:'热血', - rexue_info:'任意一名角色的准备阶段,你可以对其使用一张杀,并摸一张牌', + rexue_info:'任意一名角色的准备阶段,你可以对其使用一张杀,并摸一张牌。', huopu:'火瀑', - huopu_info:'出牌阶段限一次,你可以将一张红桃牌当作流星火羽使用', + huopu_info:'出牌阶段限一次,你可以将一张红桃牌当作流星火羽使用。', benlei:'奔雷', benlei2:'奔雷', - benlei_info:'你可以将三张牌当惊雷闪使用;每当你造成一次雷属性伤害,你回复1点体力', + benlei_info:'你可以将三张牌当惊雷闪使用;每当你造成一次雷属性伤害,你回复1点体力。', lingwu:'灵舞', - lingwu_info:'回合结束后,若你在本回合内使用的牌数不少于当前体力值,你可以进行一个额外的回合(不可重复发动)', + lingwu_info:'回合结束后,若你在本回合内使用的牌数不少于当前体力值,你可以进行一个额外的回合(不可重复发动)。', miejing:'灭境', - miejing_info:'限制技,你可以弃置所有黑色牌,然后令所有其他角色受到1点雷电伤害', + miejing_info:'限制技,你可以弃置所有黑色牌,然后令所有其他角色受到1点雷电伤害。', lingxin:'灵心', - lingxin_info:'结束阶段,你可以亮出牌堆顶的三张牌,然后获得其中的红桃牌', + lingxin_info:'结束阶段,你可以亮出牌堆顶的三张牌,然后获得其中的红桃牌。', fushen:'附身', - fushen_info:'回合开始前,你可以将自己移出游戏,并代替另一名角色进行一回合,然后失去1点体力', + fushen_info:'回合开始前,你可以将自己移出游戏,并代替另一名角色进行一回合,然后失去1点体力。', fushen2:'附身', wangchen:'忘尘', - wangchen_info:'弃牌阶段结束时,若你于此阶段弃置了基本牌,你可以令一名角色翻面', - wangchen_info_alter:'弃牌阶段结束时,若你于此阶段弃置了基本牌,你可以令一名角色翻面并获得1点护甲', - // wangchen_info:'若你于弃牌阶段弃置了基本牌,可令一名角色翻面', - // wangchen_info:'弃牌阶段结束时,若你于此阶段弃置了基本牌,可将一名其他角色移出游戏直到你死亡或下一回合开始', + wangchen_info:'弃牌阶段结束时,若你于此阶段弃置了基本牌,你可以令一名角色翻面。', + wangchen_info_alter:'弃牌阶段结束时,若你于此阶段弃置了基本牌,你可以令一名角色翻面并获得1点护甲。', + // wangchen_info:'若你于弃牌阶段弃置了基本牌,可令一名角色翻面。', + // wangchen_info:'弃牌阶段结束时,若你于此阶段弃置了基本牌,可将一名其他角色移出游戏直到你死亡或下一回合开始。', guiyin:'归隐', - guiyin_info:'若你于弃牌阶段弃置了至少两张牌,你可以摸两张牌', + guiyin_info:'若你于弃牌阶段弃置了至少两张牌,你可以摸两张牌。', shejie:'设界', shejie2:'设界', - shejie_info:'每当你受到一次伤害,可以令伤害来源不能使用或打出其手牌,直到其下一回合开始', - shejie2_info:'不能使用或打出手牌,直到下一回合开始', + shejie_info:'每当你受到一次伤害,可以令伤害来源不能使用或打出其手牌,直到其下一回合开始。', + shejie2_info:'不能使用或打出手牌,直到下一回合开始。', yinyue:'引月', yinyue_info:'每当有一名角色回复一次体力,你可以令其摸一张牌,若该角色不是你且你的手牌数不大于该角色,你也摸一张牌。', - yinyue_info_alter:'每当有一名角色回复一次体力,你可以令其摸一张牌', + yinyue_info_alter:'每当有一名角色回复一次体力,你可以令其摸一张牌。', mohua2:'魔化', - mohua2_info:'锁定技,当你进入濒死状态时,你立即变身为撒旦,将体力回复至2,然后摸两张牌', + mohua2_info:'锁定技,当你进入濒死状态时,你立即变身为撒旦,将体力回复至2,然后摸两张牌。', liexin:'裂心', - liexin_info:'每当你即将造成伤害,你可以弃置一张牌令伤害+1', + liexin_info:'每当你即将造成伤害,你可以弃置一张牌令伤害+1。', swdxueyi:'血裔', - swdxueyi_info:'锁定技,你摸牌阶段额外摸X张牌,X为你已损失的体力值', + swdxueyi_info:'锁定技,你摸牌阶段额外摸X张牌,X为你已损失的体力值。', moyan:'血焰', - moyan_info:'出牌阶段,你可以弃置X张红色手牌,然后对至多X名角色各造成1点火焰伤害,X为你已损失的体力值。每阶段限一次', + moyan_info:'出牌阶段,你可以弃置X张红色手牌,然后对至多X名角色各造成1点火焰伤害,X为你已损失的体力值。每阶段限一次。', aojian:'傲剑', - aojian_info:'出牌阶段,你可以弃置X张手牌,然后对攻击范围内至多X名角色各造成1点伤害,X为你已损失的体力值。每阶段限一次', + aojian_info:'出牌阶段,你可以弃置X张手牌,然后对攻击范围内至多X名角色各造成1点伤害,X为你已损失的体力值。每阶段限一次。', milesxiehun:'邪魂', - milesxiehun_info:'锁定技,出牌阶段结束后,你令随机X名角色各弃置一张牌,X为你已损失的体力值且至少为1 ', + milesxiehun_info:'锁定技,出牌阶段结束后,你令随机X名角色各弃置一张牌,X为你已损失的体力值且至少为1。', liaochen:'撩尘', - liaochen_info:'锁定技,出牌阶段结束后,所有角色需弃置一张牌', + liaochen_info:'锁定技,出牌阶段结束后,所有角色需弃置一张牌。', yinmo:'引魔', - yinmo_info:'锁定技,当你对场上所有角色发动「连计」后,你立即变身为魔化宁珂,然后对所有其他角色造成1点雷电伤害', + yinmo_info:'锁定技,当你对场上所有角色发动〖连计〗后,你立即变身为魔化宁珂,然后对所有其他角色造成1点雷电伤害。', huanxing:'幻形', huanxing2:'幻形', - huanxing_info:'准备阶段,你可以弃置一张牌并选择一名男性角色,获得其所有技能,直到你首次受到伤害', + huanxing_info:'准备阶段,你可以弃置一张牌并选择一名男性角色,获得其所有技能,直到你首次受到伤害。', meihuo:'魅惑', - meihuo_info:'每当你失去最后一张装备牌,你可以获得一名其他角色的一张牌,若此牌来自装备区,你立即装备之', + meihuo_info:'每当你失去最后一张装备牌,你可以获得一名其他角色的一张牌,若此牌来自装备区,你立即装备之。', touxi:'偷袭', - touxi_info:'在其他角色的结束阶段,你可以进行一次判定,若结果为黑色,你对其造成1点雷电伤害,且直到下一回合开始不能再次发动偷袭;若结果为红色,对方可以弃置你的一张牌', - touxi_info_alter:'在其他角色的结束阶段,你可以进行一次判定,若结果为黑色,你对其造成1点雷电伤害,且直到下一回合开始不能再次发动偷袭;若结果为红色,对方可以获得你的一张牌', + touxi_info:'在其他角色的结束阶段,你可以进行一次判定,若结果为黑色,你对其造成1点雷电伤害,且直到下一回合开始不能再次发动偷袭;若结果为红色,对方可以弃置你的一张牌。', + touxi_info_alter:'在其他角色的结束阶段,你可以进行一次判定,若结果为黑色,你对其造成1点雷电伤害,且直到下一回合开始不能再次发动偷袭;若结果为红色,对方可以获得你的一张牌。', minjing:'明镜', - minjing_info:'若你没有防具牌,你视为装备了光纱天衣', + minjing_info:'若你没有防具牌,你视为装备了光纱天衣。', jqimou:'奇谋', - jqimou_info:'每当你于回合外受到一次伤害,你可以摸一张牌,并可以使用一张牌', + jqimou_info:'每当你于回合外受到一次伤害,你可以摸一张牌,并可以使用一张牌。', mufeng:'沐风', - mufeng_info:'结束阶段,若你本回合使用过基本牌,则可发现一张牌', - mufeng_info_alter:'结束阶段,你可以将手牌数补至当前体力值', - mufeng_old2_info:'在一名角色的结束阶段,若你的手牌数比其少,你可以将手牌补至与该角色相同(最多补至5),每轮限一次', + mufeng_info:'结束阶段,若你本回合使用过基本牌,则可发现一张牌。', + mufeng_info_alter:'结束阶段,你可以将手牌数补至当前体力值。', + mufeng_old2_info:'在一名角色的结束阶段,若你的手牌数比其少,你可以将手牌补至与该角色相同(最多补至5),每轮限一次。', hjifeng:'祭风', - hjifeng_info:'出牌阶段限一次,若你手牌中没有祭器牌,你可以将一张手牌置于牌堆顶,并根据其花色获得对应祭器:黑桃-青龙之圭;梅花-白兽之琥;方片-朱雀之璋;红桃-玄武之璜', - mufeng_old_info:'锁定技,每当你于回合外失去牌,你的防御距离+1;若防御距离的变化值超过了存活角色数的一半,则降至0', + hjifeng_info:'出牌阶段限一次,若你手牌中没有祭器牌,你可以将一张手牌置于牌堆顶,并根据其花色获得对应祭器:黑桃-青龙之圭;梅花-白兽之琥;方片-朱雀之璋;红桃-玄武之璜。', + mufeng_old_info:'锁定技,每当你于回合外失去牌,你的防御距离+1;若防御距离的变化值超过了存活角色数的一半,则降至0。', lexue:'乐学', - lexue_info:'回合内,你随机获得制衡、集智、缔盟、驱虎中的一个技能;回合外,你随机获得遗计、急救、鬼道、反馈中的一个技能', + lexue_info:'回合内,你随机获得制衡、集智、缔盟、驱虎中的一个技能;回合外,你随机获得遗计、急救、鬼道、反馈中的一个技能。', mingfu:'冥缚', - mingfu_info:'出牌阶段限一次,你可以将一张梅花牌当鬼幽结使用', + mingfu_info:'出牌阶段限一次,你可以将一张梅花牌当鬼幽结使用。', chuanyue:'穿月', - chuanyue_info:'出牌阶段限一次,你可以将两张手牌当决斗使用', + chuanyue_info:'出牌阶段限一次,你可以将两张手牌当决斗使用。', miedao:'灭道', miedao1:'灭道', @@ -10059,67 +10058,67 @@ game.import('character',function(lib,game,ui,get,ai,_status){ miedao_info:'锁定技,摸牌阶段,你额外摸X张牌;弃牌阶段,你至少须弃X张牌(不足则全弃),X为你已损失的体力值。', senluo:'森罗', - senluo_info:'出牌阶段限一次,若你的手牌数为全场最少或之一,你可以令所有有手牌的其他角色弃置两张手牌然后摸一张牌', + senluo_info:'出牌阶段限一次,若你的手牌数为全场最少或之一,你可以令所有有手牌的其他角色弃置两张手牌然后摸一张牌。', polang:'破浪', - polang_info:'每当你造成一次伤害,可以一张对方的装备牌', + polang_info:'每当你造成一次伤害,可以一张对方的装备牌。', jikong:'亟空', jikong2:'亟空', - jikong_info:'准备阶段,你可以指定一名角色视为对其使用一张雷杀;每当你失去最后一张手牌,你可以指定一名角色视为对其使用一张雷杀(每回合限发动一次)', - jikong_info_alter:'准备阶段,你可以指定一名角色视为对其使用一张雷杀', + jikong_info:'准备阶段,你可以指定一名角色视为对其使用一张雷杀;每当你失去最后一张手牌,你可以指定一名角色视为对其使用一张雷杀(每回合限发动一次)。', + jikong_info_alter:'准备阶段,你可以指定一名角色视为对其使用一张雷杀。', xiangu:'仙骨', xiangu_info:'锁定技,你的手牌上限不会因体力值的减少而减少。', hujing:'壶境', - hujing_info:'锁定技,准备阶段,若弃牌堆中有炼妖壶,你装备之;当你的装备区内有炼妖壶时,你的手牌上限+2', + hujing_info:'锁定技,准备阶段,若弃牌堆中有炼妖壶,你装备之;当你的装备区内有炼妖壶时,你的手牌上限+2。', huajian:'化剑', - huajian_info:'出牌阶段结束时,你可以将一张牌当作杀对任意一名角色使用', + huajian_info:'出牌阶段结束时,你可以将一张牌当作杀对任意一名角色使用。', xuanyuan:'轩辕', - xuanyuan_info:'锁定技,你无视【轩辕剑】的装备条件及失去体力的效果;结束阶段,你可以弃置一张黑桃牌从弃牌堆中获得【轩辕剑】并装备之', + xuanyuan_info:'锁定技,你无视【轩辕剑】的装备条件及失去体力的效果;结束阶段,你可以弃置一张黑桃牌从弃牌堆中获得【轩辕剑】并装备之。', jilve:'极略', jilve_backup:'极略', jilve2:'极略', - jilve_info:'出牌阶段,你可以观看牌堆顶的三张牌,然后使用其中的非装备牌。每回合最多发动三次', - jilve_info_alter:'出牌阶段,你可以观看牌堆顶的两张牌,然后使用其中的非装备牌。每回合最多发动三次', + jilve_info:'出牌阶段,你可以观看牌堆顶的三张牌,然后使用其中的非装备牌。每回合最多发动三次。', + jilve_info_alter:'出牌阶段,你可以观看牌堆顶的两张牌,然后使用其中的非装备牌。每回合最多发动三次。', gongshen:'工神', - gongshen_info:'任意一名其他角色使用一张基本牌或锦囊牌指定目标后,你可以弃置一张装备牌令其失效', + gongshen_info:'任意一名其他角色使用一张基本牌或锦囊牌指定目标后,你可以弃置一张装备牌令其失效。', swdliuhong:'流虹', - swdliuhong_info:'每当你使用一张杀,可以摸一张牌', + swdliuhong_info:'每当你使用一张杀,可以摸一张牌。', poyue:'破月', - poyue_info:'锁定技,你的黑杀无视距离,红色杀不计入回合内的出杀限制且不可闪避', - poyue_info_alter:'锁定技,你的黑杀无视距离,红色杀不可闪避', + poyue_info:'锁定技,你的黑杀无视距离,红色杀不计入回合内的出杀限制且不可闪避。', + poyue_info_alter:'锁定技,你的黑杀无视距离,红色杀不可闪避。', mojian:'墨剑', - mojian_info:'每当你使用杀并指定目标后,你可以令其摸一张牌,然后你回复1点体力', + mojian_info:'每当你使用杀并指定目标后,你可以令其摸一张牌,然后你回复1点体力。', duanyue:'断月', - duanyue_info:'出牌阶段限一次,你可以弃置一张装备牌,对一名其他角色造成1点伤害', + duanyue_info:'出牌阶段限一次,你可以弃置一张装备牌,对一名其他角色造成1点伤害。', tuzhen:'突阵', - tuzhen_info:'当你造成一次伤害后,你可以弃置对方手牌中的非基本牌', - tuzhen_info_alter:'当你造成一次伤害后,你可以弃置对方手牌中的一张非基本牌', + tuzhen_info:'当你造成一次伤害后,你可以弃置对方手牌中的非基本牌。', + tuzhen_info_alter:'当你造成一次伤害后,你可以弃置对方手牌中的一张非基本牌。', fengmo:'封魔', - fengmo_info:'出牌阶段限一次,你可以弃置场所有武器牌(至少两张),然后令一名未翻面的角色摸等量的牌并翻面', + fengmo_info:'出牌阶段限一次,你可以弃置场所有武器牌(至少两张),然后令一名未翻面的角色摸等量的牌并翻面。', pozhou:'破咒', pozhou_bg:'破', pozhou2:'破咒', - pozhou_info:'每当你受到一次伤害,你获得一枚破咒标记。出牌阶段,你可以指定任意名其他角色并弃置等量的破咒标记,令目标的非锁定技失效直到其下一回合结束', + pozhou_info:'每当你受到一次伤害,你获得一枚破咒标记。出牌阶段,你可以指定任意名其他角色并弃置等量的破咒标记,令目标的非锁定技失效直到其下一回合结束。', xuanzhou:'玄咒', - xuanzhou_info:'出牌阶段限一次,你可以将一张普通锦囊牌当作任意一张延时锦囊,对任意一名角色使用(无视锦囊使用范围限制)', + xuanzhou_info:'出牌阶段限一次,你可以将一张普通锦囊牌当作任意一张延时锦囊,对任意一名角色使用(无视锦囊使用范围限制)。', ningxian:'凝霰', - ningxian_info:'每当你受到一次伤害,你可以弃置任意张黑色牌并选择等量其他角色对其各造成1点伤害', + ningxian_info:'每当你受到一次伤害,你可以弃置任意张黑色牌并选择等量其他角色对其各造成1点伤害。', guanhu:'贯鹄', - guanhu_info:'每当你使用杀造成伤害,你可以弃置对方一张手牌和一张装备牌', + guanhu_info:'每当你使用杀造成伤害,你可以弃置对方一张手牌和一张装备牌。', chuanyang:'穿杨', - chuanyang_info:'每当你使用一张杀,若你不在目标的攻击范围,你可以令此杀不可闪避', + chuanyang_info:'每当你使用一张杀,若你不在目标的攻击范围,你可以令此杀不可闪避。', fengming:'凤鸣', - fengming_info:'出牌阶段限一次,你可以弃置一张装备牌,令一名角色恢复1点体力并摸一张牌', + fengming_info:'出牌阶段限一次,你可以弃置一张装备牌,令一名角色恢复1点体力并摸一张牌。', duanxing:'锻星', - duanxing_info:'每当你装备一张未强化的装备牌,可以视为一名角色使用一张杀', + duanxing_info:'每当你装备一张未强化的装备牌,可以视为一名角色使用一张杀。', wanjun:'万钧', - wanjun_info:'你可以将一张装备牌当作南蛮入侵使用', + wanjun_info:'你可以将一张装备牌当作南蛮入侵使用。', dunxing:'遁形', - dunxing_info:'当你成为其他角色卡牌的目标时,你可以弃置一张牌并进行一次判定,若不为红桃,则取消之', + dunxing_info:'当你成为其他角色卡牌的目标时,你可以弃置一张牌并进行一次判定,若不为红桃,则取消之。', guiying:'鬼影', - guiying_info:'你可以将一张黑色牌当偷梁换柱使用', + guiying_info:'你可以将一张黑色牌当偷梁换柱使用。', shehun:'摄魂', - shehun_info:'出牌阶段限一次,你可以弃置任意张花色不同的牌,另一名其他角色弃置等量的牌,若其弃置的牌中有牌的花色与你弃置的牌相同,你对其造成1点伤害', + shehun_info:'出牌阶段限一次,你可以弃置任意张花色不同的牌,另一名其他角色弃置等量的牌,若其弃置的牌中有牌的花色与你弃置的牌相同,你对其造成1点伤害。', zhanlu:'沾露', @@ -10187,7 +10186,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ guiyan2:'鬼眼', swd_xiuluo:'修罗', suiyan:'碎岩', - suiyan_info:'每当你造成一次伤害,可以弃置一张牌并弃置对方的全部装备牌', + suiyan_info:'每当你造成一次伤害,可以弃置一张牌并弃置对方的全部装备牌。', xianyin:'散结', qiaoxie:'巧械', qiaoxie2:'巧械', @@ -10204,74 +10203,74 @@ game.import('character',function(lib,game,ui,get,ai,_status){ susheng:'苏生', shengshou:'圣手', huanjian:'幻箭', - huanjian_info:'出牌阶段,你可以将一张黑色牌当作冰魄针使用', - shengshou_info:'你可以将一张黑色手牌当作草药使用', - susheng_info:'在任意一名角色即将死亡时,你可以弃置一张手牌防止其死亡,并将其体力回复至1,每回合限发动一次', - susheng_info_alter:'在任意一名角色即将死亡时,你可以弃置一张红色手牌防止其死亡,并将其体力回复至1,每回合限发动一次', - zhanlu_info:'出牌阶段限一次,你可以弃置一张黑桃牌令至多3名角色各回复1点体力', - kunlunjing_info:'准备阶段,若你的体力值小于上回合结束时的体力值,你可以将场上所有牌还原到你上一回合结束时的位置', - kunlunjing_info_alter:'准备阶段,若你的体力值小于上回合结束时的体力值,你可以将场上所有牌还原到你上一回合结束时的位置,然后失去1点体力', - swd_xiuluo_info:'准备阶段,你可以弃一张手牌来弃置你判断区里的一张延时类锦囊(必须花色相同)', - xianyin_info:'出牌阶段,你可以令所有判定区内有牌的角色弃置判定区内的牌,然后交给你一张手牌', - qiaoxie_info:'每当你装备一张牌,可摸一张牌;每当你失去一张装备牌(不含替换),你可以弃置其他角色的一张牌', - mailun_info:'准备阶段,你可以选择一个脉轮效果直到下一回合开始', - guiyan_info:'出牌阶段,你可以观看一名角色的手牌,并获得其中一张梅花牌,每阶段限一次。当你首次进入濒死状态时,你须回复1点体力并失去技能鬼眼', - busi_info:'锁定技,当你进入濒死状态时,你进行一次判定,若结果不为黑桃,你将体力回复至1并将武将牌翻至背面', - xuying_info:'锁定技,每当你即将受到伤害,你防止此伤害,若你此时有手牌,你失去1点体力', - yinguo_info:'除你之外的任意一名角色即将受到受到伤害时,若有伤害来源,你可以弃置一张牌将伤害来源和目标对调', - yueren_info:'每当你使用一张杀,可以进行一次判定,若结果为黑色,你弃置目标一张牌,若结果为红色,你将此杀收回,每回合限发动一次', - duijue_info:'限定技,出牌阶段,你可以指定一名体力值大于1的其他角色,你结束出牌阶段,并在回合结束后将所有其他角色移出游戏,然后该角色与你轮流进行回合,直到有一方死亡或一共进行六个回合为止', - wuying_info:'锁定技,你的杀和单体x锦囊目标锁定为范围内的所有角色', - xiehun_info:'锁定技,受到来自你伤害的角色进入混乱状态,行为不受控制,且会攻击队友,直到你的下一回合开始', - jumo_info:'锁定技,结束阶段,你摸X-1张牌,X为未进入混乱状态的角色数与进入混乱状态的角色数之差(若为双将则改为X)', - jifeng_info:'你的杀和单体锦囊可以额外指定任意个目标,若如此做,此卡牌有一定机率失效,指定的目标越多失效的概率越大', - mohua_info:'锁定技,在身份局中,当你进入濒死状态时,你立即变身为撒旦,体力上限变为现存角色数(至少为4),并成为其他所有角色的共同敌人', - miles_xueyi_info:'锁定技,你防止即将受到的伤害,然后失去1点体力', - duanyi_info:'出牌阶段限一次,你可以弃置两张杀,对一名角色造成1点伤害,然后其随机弃置X张牌,X为其已损失的体力值', - duanyi_info_alter:'出牌阶段限一次,你可以弃置两张杀,并对一名角色造成1点伤害', + huanjian_info:'出牌阶段,你可以将一张黑色牌当作冰魄针使用。', + shengshou_info:'你可以将一张黑色手牌当作草药使用。', + susheng_info:'在任意一名角色即将死亡时,你可以弃置一张手牌防止其死亡,并将其体力回复至1,每回合限发动一次。', + susheng_info_alter:'在任意一名角色即将死亡时,你可以弃置一张红色手牌防止其死亡,并将其体力回复至1,每回合限发动一次。', + zhanlu_info:'出牌阶段限一次,你可以弃置一张黑桃牌令至多3名角色各回复1点体力。', + kunlunjing_info:'准备阶段,若你的体力值小于上回合结束时的体力值,你可以将场上所有牌还原到你上一回合结束时的位置。', + kunlunjing_info_alter:'准备阶段,若你的体力值小于上回合结束时的体力值,你可以将场上所有牌还原到你上一回合结束时的位置,然后失去1点体力。', + swd_xiuluo_info:'准备阶段,你可以弃一张手牌来弃置你判断区里的一张延时类锦囊(必须花色相同)。', + xianyin_info:'出牌阶段,你可以令所有判定区内有牌的角色弃置判定区内的牌,然后交给你一张手牌。', + qiaoxie_info:'每当你装备一张牌,可摸一张牌;每当你失去一张装备牌(不含替换),你可以弃置其他角色的一张牌。', + mailun_info:'准备阶段,你可以选择一个脉轮效果直到下一回合开始。', + guiyan_info:'出牌阶段,你可以观看一名角色的手牌,并获得其中一张梅花牌,每阶段限一次。当你首次进入濒死状态时,你须回复1点体力并失去技能鬼眼。', + busi_info:'锁定技,当你进入濒死状态时,你进行一次判定,若结果不为黑桃,你将体力回复至1并将武将牌翻至背面。', + xuying_info:'锁定技,每当你即将受到伤害,你防止此伤害,若你此时有手牌,你失去1点体力。', + yinguo_info:'除你之外的任意一名角色即将受到受到伤害时,若有伤害来源,你可以弃置一张牌将伤害来源和目标对调。', + yueren_info:'每当你使用一张杀,可以进行一次判定,若结果为黑色,你弃置目标一张牌,若结果为红色,你将此杀收回,每回合限发动一次。', + duijue_info:'限定技,出牌阶段,你可以指定一名体力值大于1的其他角色,你结束出牌阶段,并在回合结束后将所有其他角色移出游戏,然后该角色与你轮流进行回合,直到有一方死亡或一共进行六个回合为止。', + wuying_info:'锁定技,你的杀和单体x锦囊目标锁定为范围内的所有角色。', + xiehun_info:'锁定技,受到来自你伤害的角色进入混乱状态,行为不受控制,且会攻击队友,直到你的下一回合开始。', + jumo_info:'锁定技,结束阶段,你摸X-1张牌,X为未进入混乱状态的角色数与进入混乱状态的角色数之差(若为双将则改为X)。', + jifeng_info:'你的杀和单体锦囊可以额外指定任意个目标,若如此做,此卡牌有一定机率失效,指定的目标越多失效的概率越大。', + mohua_info:'锁定技,在身份局中,当你进入濒死状态时,你立即变身为撒旦,体力上限变为现存角色数(至少为4),并成为其他所有角色的共同敌人。', + miles_xueyi_info:'锁定技,你防止即将受到的伤害,然后失去1点体力。', + duanyi_info:'出牌阶段限一次,你可以弃置两张杀,对一名角色造成1点伤害,然后其随机弃置X张牌,X为其已损失的体力值。', + duanyi_info_alter:'出牌阶段限一次,你可以弃置两张杀,并对一名角色造成1点伤害。', guxing_info:'出牌阶段,你可以将最后至多X张手牌当杀使用,此杀无视距离且可以指定至多3个目标,每造成一次伤害,你摸一张牌,X为你已损失的体力值且至少为1。', - tianlun_info:'任意一名角色的判定牌生效前,你可以弃置一张场上角色的判定牌代替之', - hlongyin_info:'出牌阶段,你可以弃置任意张颜色相同且点数不同的牌,并获得逆时针座位距离与卡牌点数相同的角色区域内的一张牌。每阶段限一次', - lanzhi_info:'每当你使用一张梅花牌,你可以令所有体力值不大于你的角色回复1点体力', + tianlun_info:'任意一名角色的判定牌生效前,你可以弃置一张场上角色的判定牌代替之。', + hlongyin_info:'出牌阶段,你可以弃置任意张颜色相同且点数不同的牌,并获得逆时针座位距离与卡牌点数相同的角色区域内的一张牌。每阶段限一次。', + lanzhi_info:'每当你使用一张梅花牌,你可以令所有体力值不大于你的角色回复1点体力。', lanzhi_old_info:'每当你即将造成伤害,可以防止此伤害,然后摸两张牌。每回合限发动一次。', - tianhuo_info:'出牌阶段,你可以令所有角色弃置其判定区域内的牌,并受到没有来源的等量火焰伤害,每阶段限一次', - huanyin_info:'锁定技,每当你成为其他角色的卡牌的目标时,你进行一次判定,若为黑桃则取消之,若为红桃你摸一张牌', - luomu_info:'锁定技,每当你造成伤害时,受伤害角色随机弃置一张牌', - poxing_info:'锁定技,每当你即将造成伤害,若目标的体力值大于你,你令伤害+1', - liaoyuan_info:'每当你使用一张杀指定目标后,你可以弃置任意张与此杀花色相同的牌,若如此做,目标需额外打出等量的闪,每少打出一张闪,此杀的伤害+1', - liaoyuan_info_alter:'每当你使用一张杀指定目标后,你可以弃置一张与此杀花色相同的牌,若如此做,目标需额外打出一张闪,若目标没打出闪,此杀的伤害+1', - yishan_info:'每当你受到一次伤害,你可以重新获得最近失去的两张牌', - huanhun_info:'当一名角色进入濒死状态时,你可以弃置一张牌并令其进行一次判定,若结果为红色,其回复1点体力,否则其获得你弃置的牌', - huanhun_info_alter:'当一名角色进入濒死状态时,你可以弃置一张红色手牌并令其进行一次判定,若结果为红色,其回复1点体力,否则其获得你弃置的牌', - daixing_info:'结束阶段,你可以弃置任意张牌并获得等量的护甲;这些护甲将在你的下个准备阶段消失', - swd_wuxie_info:'锁定技,你不能成为其他角色的延时锦囊的目标', - lqingcheng_info:'结束阶段,你可以进行判定,若为红色则可以继续判定,最多判定3次,判定结束后将判定成功的牌收入手牌', - xianjiang_old_info:'出牌阶段,你可以将一张装备牌永久转化为任意一张其它装备牌,一张牌在一个阶段只能转化一次', - xianjiang_info:'出牌阶段限一次,你可以弃置一张锦囊牌并随机装备一件装备', - xianjiang_info_alter:'出牌阶段限一次,若你装备内没有牌,你可以弃置一张锦囊牌并随机装备一件装备', - shengong_info:'每当你需要打出一张杀或闪时,你可以弃置一名其他角色装备区内的一张武器牌或防具牌,视为打出一张杀或闪,然后该角色摸一张牌,你弃一张牌', - ningjian_info:'你可以将一张红色牌当闪、黑色牌当杀使用或打出', - taixu_info:'限定技,你可以弃置你的所有牌(至少1张),并对一名体力值大于1为其他角色造成X点火焰伤害,X为你已损失的体力值且至少为1', - duoren_info:'每当你闪避一张杀,你可以立即获得来源的武器牌', + tianhuo_info:'出牌阶段,你可以令所有角色弃置其判定区域内的牌,并受到没有来源的等量火焰伤害,每阶段限一次。', + huanyin_info:'锁定技,每当你成为其他角色的卡牌的目标时,你进行一次判定,若为黑桃则取消之,若为红桃你摸一张牌。', + luomu_info:'锁定技,每当你造成伤害时,受伤害角色随机弃置一张牌。', + poxing_info:'锁定技,每当你即将造成伤害,若目标的体力值大于你,你令伤害+1。', + liaoyuan_info:'每当你使用一张杀指定目标后,你可以弃置任意张与此杀花色相同的牌,若如此做,目标需额外打出等量的闪,每少打出一张闪,此杀的伤害+1。', + liaoyuan_info_alter:'每当你使用一张杀指定目标后,你可以弃置一张与此杀花色相同的牌,若如此做,目标需额外打出一张闪,若目标没打出闪,此杀的伤害+1。', + yishan_info:'每当你受到一次伤害,你可以重新获得最近失去的两张牌。', + huanhun_info:'当一名角色进入濒死状态时,你可以弃置一张牌并令其进行一次判定,若结果为红色,其回复1点体力,否则其获得你弃置的牌。', + huanhun_info_alter:'当一名角色进入濒死状态时,你可以弃置一张红色手牌并令其进行一次判定,若结果为红色,其回复1点体力,否则其获得你弃置的牌。', + daixing_info:'结束阶段,你可以弃置任意张牌并获得等量的护甲;这些护甲将在你的下个准备阶段消失。', + swd_wuxie_info:'锁定技,你不能成为其他角色的延时锦囊的目标。', + lqingcheng_info:'结束阶段,你可以进行判定,若为红色则可以继续判定,最多判定3次,判定结束后将判定成功的牌收入手牌。', + xianjiang_old_info:'出牌阶段,你可以将一张装备牌永久转化为任意一张其它装备牌,一张牌在一个阶段只能转化一次。', + xianjiang_info:'出牌阶段限一次,你可以弃置一张锦囊牌并随机装备一件装备。', + xianjiang_info_alter:'出牌阶段限一次,若你装备内没有牌,你可以弃置一张锦囊牌并随机装备一件装备。', + shengong_info:'每当你需要打出一张杀或闪时,你可以弃置一名其他角色装备区内的一张武器牌或防具牌,视为打出一张杀或闪,然后该角色摸一张牌,你弃一张牌。', + ningjian_info:'你可以将一张红色牌当闪、黑色牌当杀使用或打出。', + taixu_info:'限定技,你可以弃置你的所有牌(至少1张),并对一名体力值大于1为其他角色造成X点火焰伤害,X为你已损失的体力值且至少为1。', + duoren_info:'每当你闪避一张杀,你可以立即获得来源的武器牌。', tanlin_info:'出牌阶段限一次,你可以与一名其他角色进行拼点,若你赢,你获得双方拼点牌、对该角色使用卡牌无视距离且可以额外使用一张杀直到回合结束,若你没赢,你受到该角色的1点伤害。', tanlin_info_alter:'出牌阶段限一次,你可以与一名其他角色进行拼点,若你赢,你获得对方拼点牌、对该角色使用卡牌无视距离且可以额外使用一张杀直到回合结束,若你没赢,你受到该角色的1点伤害。', pozhen_info:'每当你受到一次伤害,若你的手牌数大于伤害来源,你可以弃置X张手牌对其造成1点伤害;若你的手牌数小于伤害来源,你可以弃置其X张手牌。X为你与伤害来源的手牌数之差。', pozhen_info_alter:'每当你受到一次伤害,若你的手牌数小于伤害来源,你可以弃置其X张手牌。X为你与伤害来源的手牌数之差。', - yunchou_info:'出牌阶段限一次,你可以弃置一张手牌,并弃置一名其他角色的一张手牌,若两张牌颜色相同,你摸一张牌,否则对方摸一张牌', - yunchou_info_alter:'出牌阶段限一次,你可以弃置一张非基本手牌,并弃置一名其他角色的一张手牌,若两张牌颜色相同,你摸一张牌,否则对方摸一张牌', - swdtianshu_old_info:'结束阶段,你可以弃置一张牌并从三名随机武将中选择一个,在2X回合后你将其所有技能加入你的天书列表,X为其技能数;在技能加入天书列表时,或于出牌阶段,你可以装备一项天书列表中的技能', - swdtianshu_info:'出牌阶段,你可以弃置一张锦囊牌,然后获得一名其他角色的一项技能直到该角色死亡(替换以此法获得的前一个技能)', - zaowu_info:'出牌阶段限一次,你可以将一张黑桃或红桃手牌当作封印之蛋使用', - luomei_info:'每当你使用或打出一张梅花花色的牌,你可以摸一张牌', - xingdian_info:'出牌阶段限一次,你可以弃置一张手牌,然后随机弃置两名敌人各一张牌', - yulin_info:'每当你即将受到伤害,你可以弃置一张装备牌抵消此伤害', - funiao_info:'出牌阶段限一次,你可以将一张手牌交给一名其他角色,然后摸一张牌并观看其手牌', - funiao_old_info:'出牌阶段,你可以交给一名角色一张手牌,然后观看其手牌,每个阶段对一名角色只能发动一次', - xuehuang_info:'限定技,出牌阶段,若你没有黑色手牌,你可以展示并弃置所有手牌,每弃置一张牌视为使用一张火杀,随机指定两名敌人为目标', - zhuyu_info:'每当一名横置的角色即将受到伤害时,你可以弃置一张红色牌令此伤害+1并变为火属性', - ningshuang_info:'每当你成为黑色牌的目标,你可以弃置一张黑色牌将其横置,并摸一张牌,若其已经模置则改为将其翻面', - zaowu_old_info:'出牌阶段,你可以弃置三张不同类型的牌,创造任意两张牌并获得之', - xielv_info:'弃牌阶段结束后,若你的所有手牌(至少两张)颜色均相同,你可以展示所有手牌,然后回复1点体力并弃置场上的所有判定牌', + yunchou_info:'出牌阶段限一次,你可以弃置一张手牌,并弃置一名其他角色的一张手牌,若两张牌颜色相同,你摸一张牌,否则对方摸一张牌。', + yunchou_info_alter:'出牌阶段限一次,你可以弃置一张非基本手牌,并弃置一名其他角色的一张手牌,若两张牌颜色相同,你摸一张牌,否则对方摸一张牌。', + swdtianshu_old_info:'结束阶段,你可以弃置一张牌并从三名随机武将中选择一个,在2X回合后你将其所有技能加入你的天书列表,X为其技能数;在技能加入天书列表时,或于出牌阶段,你可以装备一项天书列表中的技能。', + swdtianshu_info:'出牌阶段,你可以弃置一张锦囊牌,然后获得一名其他角色的一项技能直到该角色死亡(替换以此法获得的前一个技能)。', + zaowu_info:'出牌阶段限一次,你可以将一张黑桃或红桃手牌当作封印之蛋使用。', + luomei_info:'每当你使用或打出一张梅花花色的牌,你可以摸一张牌。', + xingdian_info:'出牌阶段限一次,你可以弃置一张手牌,然后随机弃置两名敌人各一张牌。', + yulin_info:'每当你即将受到伤害,你可以弃置一张装备牌抵消此伤害。', + funiao_info:'出牌阶段限一次,你可以将一张手牌交给一名其他角色,然后摸一张牌并观看其手牌。', + funiao_old_info:'出牌阶段,你可以交给一名角色一张手牌,然后观看其手牌,每个阶段对一名角色只能发动一次。', + xuehuang_info:'限定技,出牌阶段,若你没有黑色手牌,你可以展示并弃置所有手牌,每弃置一张牌视为使用一张火杀,随机指定两名敌人为目标。', + zhuyu_info:'每当一名横置的角色即将受到伤害时,你可以弃置一张红色牌令此伤害+1并变为火属性。', + ningshuang_info:'每当你成为黑色牌的目标,你可以弃置一张黑色牌将其横置,并摸一张牌,若其已经模置则改为将其翻面。', + zaowu_old_info:'出牌阶段,你可以弃置三张不同类型的牌,创造任意两张牌并获得之。', + xielv_info:'弃牌阶段结束后,若你的所有手牌(至少两张)颜色均相同,你可以展示所有手牌,然后回复1点体力并弃置场上的所有判定牌。', }, }; }); From 9b14281bd7fa8662d242d23d9aa38931569d94bd Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 21:52:56 +0800 Subject: [PATCH 018/302] Add files via upload --- character/jsrg.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/jsrg.js b/character/jsrg.js index 628d6cc20..c3b8a234e 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -3792,6 +3792,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sbpingjian:{ trigger:{player:['useSkill','logSkillBegin']}, forced:true, + locked:false, filter:function(event,player){ var skill=event.sourceSkill||event.skill; return player.invisibleSkills.contains(skill)&&lib.skill.sbyingmen.getSkills(player.getStorage('sbyingmen'),player).contains(skill); From 51f93c095d33f6afe1bae58b4059ddf73540aa73 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 22:01:48 +0800 Subject: [PATCH 019/302] Add files via upload --- character/shiji.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/shiji.js b/character/shiji.js index 7845bbdbc..0db7de662 100644 --- a/character/shiji.js +++ b/character/shiji.js @@ -3151,7 +3151,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qingyu:{ audio:3, dutySkill:true, - locked:true, + locked:false, group:['qingyu_achieve','qingyu_fail','qingyu_defend'], subSkill:{ defend:{ From 203b6e56937dcead4c5233a2cf0ccb7dac264480 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 22:04:10 +0800 Subject: [PATCH 020/302] Add files via upload --- character/clan.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/clan.js b/character/clan.js index 706833aee..ecfcd46e3 100644 --- a/character/clan.js +++ b/character/clan.js @@ -272,6 +272,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return get.cardNameLength(event.card)==player.getHistory('useCard').indexOf(event.getParent())+1; }, direct:true, + locked:false, content:function(){ 'step 0' var num=get.cardNameLength(trigger.card); From 061a24d76fa0c0c516f78d7f4db0e44635b5a3f6 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 22:07:05 +0800 Subject: [PATCH 021/302] Add files via upload --- character/tw.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/tw.js b/character/tw.js index 9c7ac9621..083235e4b 100644 --- a/character/tw.js +++ b/character/tw.js @@ -457,6 +457,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.hasNature(); }, forced:true, + locked:false, content:function(){ 'step 0' if(event.triggername=='damageBegin2'){ From 8fca454ec2003428854a8d0fc9129f084df96143 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Tue, 5 Dec 2023 22:07:30 +0800 Subject: [PATCH 022/302] Update beipan_bg.jpg --- image/background/beipan_bg.jpg | Bin 566580 -> 547243 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/image/background/beipan_bg.jpg b/image/background/beipan_bg.jpg index 5de3cdaa1dd377a74a97ad36020fdeaf5fe3679f..27b4f923ac6de809a7c9213d0108235e96810fcd 100644 GIT binary patch literal 547243 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

UVg)iRHUUtnMwfaG~^SN+DU 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

b0t_(h+sLh;A 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�QpiaoTt=R#AyV2RLy<#bmeJ5Tn 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%0Alm$ba9r>(p5}_ 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 z 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 literal 566580 zcmbrlXH-*77%sXYfq)_)7KntRiJ~A~F@ezZ69@58pZKoV(Wjb=N(6t?V^3NoLP8$;>|VEjji3yTdr>I9-epa-N!!&2n-4i z35|X9_{r0_XU|FGS4qh!scGr|X6L+pm;3(1$CA>|W#zPr%BnA48^1A{nwc#>y1ILM z`}zk4fBs@~CMLO4(=!W;OUo;(Yk$`_{=>xwfd0>v{V!zyFI)%raPfn|ATZ=VTzvdN z{{cS;7C5dhC}C&?alsxsp%E=~_+sLlV!AL~)B4YmJGjn$M-k_Ko?Q43+W$oM{|#8o z|1V_!2iX6EYY-3t@$LP1po4%uu;W*gh1!~Wb4G6K^M3jDB72B5(PVH~_9+|&D?bp)ikT76?XCwwynAF`@tXfJ2e{l^d2_YG8zCMbCal50pe=o16Qw;<< zWe$Ol`X#o)>ZOIj;Xi`HqPt1%aZg%G-Jh

dn#JI8*i} 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 z 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

6$jP9M2u4!y{ZG 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%0DSh{8g(4oh9=lwJBst#70I_G(vcT=~mUw`lHe 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Г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 Z!E^Uc6KH|#F49$#cDc_|57Ylm{U6} Date: Tue, 5 Dec 2023 22:17:26 +0800 Subject: [PATCH 023/302] Add files via upload --- character/sb.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/sb.js b/character/sb.js index a44b548af..63b97f8cd 100644 --- a/character/sb.js +++ b/character/sb.js @@ -4446,6 +4446,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sbzhiheng:{ audio:2, audioname:['shen_caopi'], + locked:false, mod:{ aiOrder:function(player,card,num){ if(num<=0||get.itemtype(card)!=='card'||get.type(card)!=='equip') return num; From a0f647df882db07c40f74280361621db9051c22f Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 22:37:28 +0800 Subject: [PATCH 024/302] Add files via upload --- mode/guozhan.js | 1 + 1 file changed, 1 insertion(+) diff --git a/mode/guozhan.js b/mode/guozhan.js index 2985b2ef7..884a1310c 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -9080,6 +9080,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ } }, }, + locked:false, audio:"duanliang1", enable:"chooseToUse", filterCard:function(card){ From 829a4e574fc1a59f1ecae867a0a721e390e7dccc Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 22:50:08 +0800 Subject: [PATCH 025/302] Add files via upload --- mode/guozhan.js | 1 + 1 file changed, 1 insertion(+) diff --git a/mode/guozhan.js b/mode/guozhan.js index 884a1310c..646e27fe9 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -9739,6 +9739,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ return player.hp<=1; }, forced:true, + locked:false, //priority:3, content:function(){ player.addTempSkill('baka_yingzi','phaseAfter'); From 947200d1b19df86c1d86607a1f12695c319c1879 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 22:57:32 +0800 Subject: [PATCH 026/302] Add files via upload --- mode/guozhan.js | 1 + 1 file changed, 1 insertion(+) diff --git a/mode/guozhan.js b/mode/guozhan.js index 646e27fe9..a71a1fb59 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -10880,6 +10880,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ unique:true, forceunique:true, lordSkill:true, + locked:false, audio:2, derivation:'yuanjiangfenghuotu', mark:true, From 0fa894d66f8abd01d832481a45153076cd3a5343 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:10:17 +0800 Subject: [PATCH 027/302] Add files via upload --- character/shiji.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/shiji.js b/character/shiji.js index 0db7de662..d444df3a7 100644 --- a/character/shiji.js +++ b/character/shiji.js @@ -1260,7 +1260,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ spxizhan:{ audio:4, group:'spxizhan_effect', - locked:true, + locked:false, subSkill:{ spfangzong:{charlotte:true}, effect:{ From 1bb1a340cbe581b417b06d72065f7788989e7f4c Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:10:58 +0800 Subject: [PATCH 028/302] Add files via upload --- character/jsrg.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/jsrg.js b/character/jsrg.js index c3b8a234e..1976ca3b9 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -941,6 +941,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ limited:true, skillAnimation:true, animationColor:'orange', + locked:false, chooseButton:{ dialog:function(event,player){ var list=[]; From d6039eaf515ac27f5eb1b894a7958b8a5caf139b Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:13:08 +0800 Subject: [PATCH 029/302] Add files via upload --- character/sp2.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/sp2.js b/character/sp2.js index fd190e554..2a0e61e12 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -627,6 +627,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, audio:2, + locked:false, trigger:{player:'phaseUseBegin'}, filter:function(event,player){ return player.countCards('h'); From 45727e4c781f4c03301b4d96b65be061684a0c7b Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:16:17 +0800 Subject: [PATCH 030/302] Add files via upload --- character/xianding.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/xianding.js b/character/xianding.js index 284da0d6f..cf1eba955 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -2168,6 +2168,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); }, direct:true, + locked:false, content:function(){ 'step 0' var targets=trigger.targets.filter(target=>{ From 7ee2254241c4e72ba36c9b3443c95e878c09d872 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:18:18 +0800 Subject: [PATCH 031/302] Add files via upload --- character/sp.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/sp.js b/character/sp.js index f9224f2e3..e2d1e469f 100755 --- a/character/sp.js +++ b/character/sp.js @@ -13082,6 +13082,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, spweiwu:{ audio:2, + locked:false, enable:'phaseUse', usable:1, viewAs:{ From c15a40d1b3533250d58ae89e2efeff902a8d1f88 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:27:34 +0800 Subject: [PATCH 032/302] =?UTF-8?q?=E9=9D=9E=E6=9C=8D=20=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/tw.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/tw.js b/character/tw.js index 083235e4b..a79e64dc7 100644 --- a/character/tw.js +++ b/character/tw.js @@ -14585,7 +14585,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, dynamicTranslate:{ twfeifu:function(player){ - var str='转换技。'; + var str='锁定技,转换技。'; if(!player.storage.twfeifu) str+=''; str+='阴:当你成为【杀】的唯一目标后;'; if(!player.storage.twfeifu) str+=''; From 78e02d9f0b92f38fe431bf3ba467efd302349096 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:37:17 +0800 Subject: [PATCH 033/302] Add files via upload --- character/tw.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/tw.js b/character/tw.js index a79e64dc7..f6d9a2123 100644 --- a/character/tw.js +++ b/character/tw.js @@ -3559,6 +3559,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'useCardAfter'}, group:['twmibei_mark','twmibei_fail'], forced:true, + locked:false, direct:true, dutySkill:true, derivation:'twmouli', From 027964ef3cc9e6b3d924cf5d5a08680d1ce7688a Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:41:21 +0800 Subject: [PATCH 034/302] Add files via upload --- character/tw.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/tw.js b/character/tw.js index f6d9a2123..eb7467129 100644 --- a/character/tw.js +++ b/character/tw.js @@ -1381,6 +1381,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if (get.tag(card, 'damage') > 0 && target.storage.twchongwangx.contains(player)) return false; }, }, + locked:false, unique: true, onremove: true, global: 'twchongwang_global', From edafcca192845d20849c515317855fae7b18acd2 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Tue, 5 Dec 2023 23:45:17 +0800 Subject: [PATCH 035/302] bugfix --- character/sp2.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/sp2.js b/character/sp2.js index 6b15b2a59..44b84e820 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -241,7 +241,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, zhuSkill:true, content:function*(event,map){ - var player=map.player,target=map.trigger.target; + var player=map.player,target=map.trigger.player; var result=yield target.chooseBool(get.prompt('star_dz_c',player),'令'+get.translation(player)+'回复1点体力').set('choice',get.recoverEffect(player,target,target)>0); if(result.bool){ target.line(player); From 24e17def7cc64ae91be0f875a494b2157eb4646c Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:47:11 +0800 Subject: [PATCH 036/302] Add files via upload --- character/jsrg.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/jsrg.js b/character/jsrg.js index 1976ca3b9..89ab19fe5 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -1321,6 +1321,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return (player.countCards('h')==0)^player.hasSkill('jsrgmanjuan_in'); }, forced:true, + locked:false, firstDo:true, silent:true, content:function(){ From a77c0d82908ce164f433c7f3810813a00f297c80 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:56:09 +0800 Subject: [PATCH 037/302] Add files via upload --- character/sp2.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/sp2.js b/character/sp2.js index 2a0e61e12..6a31b8876 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -531,6 +531,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio: 'juexiang', trigger: { player: 'die' }, forced: true, + locked:false, forceDie: true, skillAnimation: true, animationColor: 'water', From 7bc8b63ec48315e47998a938b1cff90a595e1cbe Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Wed, 6 Dec 2023 00:00:22 +0800 Subject: [PATCH 038/302] Add files via upload --- character/shiji.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/shiji.js b/character/shiji.js index d444df3a7..1a1b524e7 100644 --- a/character/shiji.js +++ b/character/shiji.js @@ -2715,6 +2715,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'useCardAfter'}, dutySkill:true, forced:true, + locked:false, direct:true, filter:function(event,player){ if(!player.storage.xingqi||!player.storage.xingqi.length) return false; From 479894257154ecc602029f22f23353b7c19a6f50 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Wed, 6 Dec 2023 00:06:23 +0800 Subject: [PATCH 039/302] Add files via upload --- character/xianding.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/xianding.js b/character/xianding.js index cf1eba955..ed3f2cacb 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -924,6 +924,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return !player.hasMark('dccaixia_clear'); }, direct:true, + locked:false, content:function(){ 'step 0' var choices=Array.from({length:Math.min(5,game.players.length+game.dead.length)}).map((_,i)=>get.cnNumber(i+1,true)); From a4809a858757672d91ec9dadcc13ade0183bf7b8 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Wed, 6 Dec 2023 00:09:12 +0800 Subject: [PATCH 040/302] Add files via upload --- character/refresh.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/refresh.js b/character/refresh.js index 98cb6c6ad..9d7c88453 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -8680,6 +8680,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.getEquips(3).length>0||player.getEquips(4).length>0) return Infinity; }, }, + locked:false, enable:'phaseUse', usable:1, position:'he', From 842876b7373b45a9e575cbb7f2c3bc8bc129fca5 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Wed, 6 Dec 2023 00:14:38 +0800 Subject: [PATCH 041/302] Add files via upload --- character/shiji.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/shiji.js b/character/shiji.js index 1a1b524e7..198d02778 100644 --- a/character/shiji.js +++ b/character/shiji.js @@ -2134,7 +2134,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rechuhai:{ audio:'chuhai', dutySkill:true, - locked:true, + locked:false, group:['rechuhai_add','rechuhai_achieve','rechuhai_fail','rechuhai_chuhai'], derivation:'zhangming', subSkill:{ From cb6adfdd9ca42f180b8b0f4b07464c69fcabc8b5 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Wed, 6 Dec 2023 00:17:17 +0800 Subject: [PATCH 042/302] Add files via upload --- character/jsrg.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/jsrg.js b/character/jsrg.js index 89ab19fe5..f3fce0c24 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -1712,6 +1712,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, jsrgrihui:{ audio:'dcrihui', + locked:false, trigger:{source:'damageSource'}, filter:function(event,player){ return event.getParent().type=='card'&&event.card&&event.card.name=='sha'&&game.hasPlayer(current=>{ From b826c0bb91828c8590fb32b2125dd1196f8742f7 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Wed, 6 Dec 2023 00:18:34 +0800 Subject: [PATCH 043/302] Add files via upload --- character/yijiang.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/yijiang.js b/character/yijiang.js index e890f60a6..7f5f9948b 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -11807,6 +11807,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ miji:{ audio:2, audioname:['re_wangyi'], + locked:false, mod:{ aiOrder:function(player,card,num){ if(num>0&&_status.event&&_status.event.type==='phase'&&get.tag(card,'recover')){ From 129f78e1e5447c0614652689adf82c1efffb1287 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Wed, 6 Dec 2023 00:21:29 +0800 Subject: [PATCH 044/302] Add files via upload --- character/tw.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/tw.js b/character/tw.js index eb7467129..69da7357b 100644 --- a/character/tw.js +++ b/character/tw.js @@ -7662,6 +7662,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return targets.length>=2; }, forced:true, + locked:false, dutySkill:true, skillAnimation:true, animationColor:'wood', From a1db74013b1440246155fe9057c7a228f638b264 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Wed, 6 Dec 2023 00:25:47 +0800 Subject: [PATCH 045/302] Add files via upload --- character/sb.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/sb.js b/character/sb.js index 63b97f8cd..d0069f576 100644 --- a/character/sb.js +++ b/character/sb.js @@ -61,6 +61,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.type2(card)=='trick') return true; }, }, + locked:false, getLimit:3, audio:2, enable:'phaseUse', From fd95850b9b158954ab27389a68c8014c7d9b1b45 Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Wed, 6 Dec 2023 00:31:04 +0800 Subject: [PATCH 046/302] Add files via upload --- character/jsrg.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/jsrg.js b/character/jsrg.js index f3fce0c24..04e8cf0ba 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -2447,6 +2447,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{player:'useCard'}, forced:true, + locked:false, filter:function(event,player){ if(player.group!='shu') return false; return game.hasPlayer(current=>{ From 5f4f86a1f170acaaf15693375f9021b0edf5bb97 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Wed, 6 Dec 2023 08:39:52 +0800 Subject: [PATCH 047/302] =?UTF-8?q?=E7=84=9A=E5=BF=83bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/sp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/sp.js b/character/sp.js index f9224f2e3..6cf560637 100755 --- a/character/sp.js +++ b/character/sp.js @@ -19976,7 +19976,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } 'step 1' if(result.bool){ - var ideitity=result.links[0]; + var identity=result.links[0]; player.addSkill(identity); player.markSkill('fenxin'); } From a57a2fa5901ef3714eb5124381577ad4cc5f64ce Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Wed, 6 Dec 2023 13:06:41 +0800 Subject: [PATCH 048/302] Update asset.js --- game/asset.js | 162 +++++++++++++++++++++++++------------------------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/game/asset.js b/game/asset.js index d82f53af8..b5ccda02d 100644 --- a/game/asset.js +++ b/game/asset.js @@ -8702,87 +8702,87 @@ window.noname_asset_list=[ 'image/mode/boss/card/xingtianpojunfu.png', 'image/mode/boss/card/niaobaidaowenha.png', - 'image/mode/boss/boss_baihu.jpg', - 'image/mode/boss/boss_baimangshilian.jpg', - 'image/mode/boss/boss_baiwuchang.jpg', - 'image/mode/boss/boss_bianchengwang.jpg', - 'image/mode/boss/boss_bifang.jpg', - 'image/mode/boss/boss_caiwenji.jpg', - 'image/mode/boss/boss_caocao.jpg', - 'image/mode/boss/boss_chi.jpg', - 'image/mode/boss/boss_chiyanshilian.jpg', - 'image/mode/boss/boss_chujiangwang.jpg', - 'image/mode/boss/boss_diaochan.jpg', - 'image/mode/boss/boss_dizangwang.jpg', - 'image/mode/boss/boss_dongzhuo.jpg', - 'image/mode/boss/boss_dushiwang.jpg', - 'image/mode/boss/boss_guojia.jpg', - 'image/mode/boss/boss_heiwuchang.jpg', - 'image/mode/boss/boss_huangyueying.jpg', - 'image/mode/boss/boss_huatuo.jpg', - 'image/mode/boss/boss_hundun.jpg', - 'image/mode/boss/boss_huoshenzhurong.jpg', - 'image/mode/boss/boss_jinshenrushou.jpg', - 'image/mode/boss/boss_liang.jpg', - 'image/mode/boss/boss_liubei.jpg', - 'image/mode/boss/boss_luocha.jpg', - 'image/mode/boss/boss_luxun.jpg', - 'image/mode/boss/boss_lvbu1.jpg', - 'image/mode/boss/boss_lvbu2.jpg', - 'image/mode/boss/boss_lvbu3.jpg', - 'image/mode/boss/boss_mamian.jpg', - 'image/mode/boss/boss_mengpo.jpg', - 'image/mode/boss/boss_mingxingzhu.jpg', - 'image/mode/boss/boss_mo.jpg', - 'image/mode/boss/boss_mushengoumang.jpg', - 'image/mode/boss/boss_nianshou.jpg', - 'image/mode/boss/boss_nianshou_baonu.jpg', - 'image/mode/boss/boss_nianshou_heti.jpg', - 'image/mode/boss/boss_nianshou_jingjue.jpg', - 'image/mode/boss/boss_nianshou_renxing.jpg', - 'image/mode/boss/boss_nianshou_ruizhi.jpg', - 'image/mode/boss/boss_niutou.jpg', - 'image/mode/boss/boss_pangtong.jpg', - 'image/mode/boss/boss_pingdengwang.jpg', - 'image/mode/boss/boss_qinglong.jpg', - 'image/mode/boss/boss_qingmushilian.jpg', - 'image/mode/boss/boss_qinguangwang.jpg', - 'image/mode/boss/boss_qiongqi.jpg', - 'image/mode/boss/boss_satan.jpg', - 'image/mode/boss/boss_shaohao.jpg', - 'image/mode/boss/boss_shuijing.jpg', - 'image/mode/boss/boss_shuishengonggong.jpg', - 'image/mode/boss/boss_shuishenxuanming.jpg', - 'image/mode/boss/boss_shujing.jpg', - 'image/mode/boss/boss_songdiwang.jpg', - 'image/mode/boss/boss_sunshangxiang.jpg', - 'image/mode/boss/boss_taihao.jpg', - 'image/mode/boss/boss_taishanwang.jpg', - 'image/mode/boss/boss_taotie.jpg', - 'image/mode/boss/boss_taowu.jpg', - 'image/mode/boss/boss_wang.jpg', - 'image/mode/boss/boss_wuguanwang.jpg', - 'image/mode/boss/boss_xiangliu.jpg', - 'image/mode/boss/boss_xuanlinshilian.jpg', - 'image/mode/boss/boss_xuanwu.jpg', - 'image/mode/boss/boss_yandi.jpg', - 'image/mode/boss/boss_yanling.jpg', - 'image/mode/boss/boss_yanluowang.jpg', - 'image/mode/boss/boss_yecha.jpg', - 'image/mode/boss/boss_yingzhao.jpg', - 'image/mode/boss/boss_yuji.jpg', - 'image/mode/boss/boss_zhangchunhua.jpg', - 'image/mode/boss/boss_zhangjiao.jpg', - 'image/mode/boss/boss_zhenji.jpg', - 'image/mode/boss/boss_zhouyu.jpg', - 'image/mode/boss/boss_zhuanlunwang.jpg', - 'image/mode/boss/boss_zhuanxu.jpg', - 'image/mode/boss/boss_zhugeliang.jpg', - 'image/mode/boss/boss_zhuoguiquxie.jpg', - 'image/mode/boss/boss_zhuque.jpg', - 'image/mode/boss/boss_zhuyan.jpg', - 'image/mode/boss/boss_zhuyin.jpg', - 'image/mode/boss/boss_zuoci.jpg', + 'image/mode/boss/character/boss_baihu.jpg', + 'image/mode/boss/character/boss_baimangshilian.jpg', + 'image/mode/boss/character/boss_baiwuchang.jpg', + 'image/mode/boss/character/boss_bianchengwang.jpg', + 'image/mode/boss/character/boss_bifang.jpg', + 'image/mode/boss/character/boss_caiwenji.jpg', + 'image/mode/boss/character/boss_caocao.jpg', + 'image/mode/boss/character/boss_chi.jpg', + 'image/mode/boss/character/boss_chiyanshilian.jpg', + 'image/mode/boss/character/boss_chujiangwang.jpg', + 'image/mode/boss/character/boss_diaochan.jpg', + 'image/mode/boss/character/boss_dizangwang.jpg', + 'image/mode/boss/character/boss_dongzhuo.jpg', + 'image/mode/boss/character/boss_dushiwang.jpg', + 'image/mode/boss/character/boss_guojia.jpg', + 'image/mode/boss/character/boss_heiwuchang.jpg', + 'image/mode/boss/character/boss_huangyueying.jpg', + 'image/mode/boss/character/boss_huatuo.jpg', + 'image/mode/boss/character/boss_hundun.jpg', + 'image/mode/boss/character/boss_huoshenzhurong.jpg', + 'image/mode/boss/character/boss_jinshenrushou.jpg', + 'image/mode/boss/character/boss_liang.jpg', + 'image/mode/boss/character/boss_liubei.jpg', + 'image/mode/boss/character/boss_luocha.jpg', + 'image/mode/boss/character/boss_luxun.jpg', + 'image/mode/boss/character/boss_lvbu1.jpg', + 'image/mode/boss/character/boss_lvbu2.jpg', + 'image/mode/boss/character/boss_lvbu3.jpg', + 'image/mode/boss/character/boss_mamian.jpg', + 'image/mode/boss/character/boss_mengpo.jpg', + 'image/mode/boss/character/boss_mingxingzhu.jpg', + 'image/mode/boss/character/boss_mo.jpg', + 'image/mode/boss/character/boss_mushengoumang.jpg', + 'image/mode/boss/character/boss_nianshou.jpg', + 'image/mode/boss/character/boss_nianshou_baonu.jpg', + 'image/mode/boss/character/boss_nianshou_heti.jpg', + 'image/mode/boss/character/boss_nianshou_jingjue.jpg', + 'image/mode/boss/character/boss_nianshou_renxing.jpg', + 'image/mode/boss/character/boss_nianshou_ruizhi.jpg', + 'image/mode/boss/character/boss_niutou.jpg', + 'image/mode/boss/character/boss_pangtong.jpg', + 'image/mode/boss/character/boss_pingdengwang.jpg', + 'image/mode/boss/character/boss_qinglong.jpg', + 'image/mode/boss/character/boss_qingmushilian.jpg', + 'image/mode/boss/character/boss_qinguangwang.jpg', + 'image/mode/boss/character/boss_qiongqi.jpg', + 'image/mode/boss/character/boss_satan.jpg', + 'image/mode/boss/character/boss_shaohao.jpg', + 'image/mode/boss/character/boss_shuijing.jpg', + 'image/mode/boss/character/boss_shuishengonggong.jpg', + 'image/mode/boss/character/boss_shuishenxuanming.jpg', + 'image/mode/boss/character/boss_shujing.jpg', + 'image/mode/boss/character/boss_songdiwang.jpg', + 'image/mode/boss/character/boss_sunshangxiang.jpg', + 'image/mode/boss/character/boss_taihao.jpg', + 'image/mode/boss/character/boss_taishanwang.jpg', + 'image/mode/boss/character/boss_taotie.jpg', + 'image/mode/boss/character/boss_taowu.jpg', + 'image/mode/boss/character/boss_wang.jpg', + 'image/mode/boss/character/boss_wuguanwang.jpg', + 'image/mode/boss/character/boss_xiangliu.jpg', + 'image/mode/boss/character/boss_xuanlinshilian.jpg', + 'image/mode/boss/character/boss_xuanwu.jpg', + 'image/mode/boss/character/boss_yandi.jpg', + 'image/mode/boss/character/boss_yanling.jpg', + 'image/mode/boss/character/boss_yanluowang.jpg', + 'image/mode/boss/character/boss_yecha.jpg', + 'image/mode/boss/character/boss_yingzhao.jpg', + 'image/mode/boss/character/boss_yuji.jpg', + 'image/mode/boss/character/boss_zhangchunhua.jpg', + 'image/mode/boss/character/boss_zhangjiao.jpg', + 'image/mode/boss/character/boss_zhenji.jpg', + 'image/mode/boss/character/boss_zhouyu.jpg', + 'image/mode/boss/character/boss_zhuanlunwang.jpg', + 'image/mode/boss/character/boss_zhuanxu.jpg', + 'image/mode/boss/character/boss_zhugeliang.jpg', + 'image/mode/boss/character/boss_zhuoguiquxie.jpg', + 'image/mode/boss/character/boss_zhuque.jpg', + 'image/mode/boss/character/boss_zhuyan.jpg', + 'image/mode/boss/character/boss_zhuyin.jpg', + 'image/mode/boss/character/boss_zuoci.jpg', 'image/mode/chess/card/chess_chuzhang.png', 'image/mode/chess/card/chess_shezhang.png', From 643b519ddb06c00563a9722921c0b8fea6fb10f0 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Wed, 6 Dec 2023 13:33:21 +0800 Subject: [PATCH 049/302] bugfix --- character/extra.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/extra.js b/character/extra.js index 0c82308e6..7352440b5 100755 --- a/character/extra.js +++ b/character/extra.js @@ -5440,7 +5440,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, effect:{ player:(card,player,target)=>{ - if(player.hasSkill('rewansha')&&target.hp<=1&&get.tag(card,'damage')) return [1,0,1.5,-1.5]; + if(target&&player.hasSkill('rewansha')&&target.hp<=1&&get.tag(card,'damage')) return [1,0,1.5,-1.5]; } } } From a56e9aa42ec393b7ee486f55605e2dd44dd3afa5 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Wed, 6 Dec 2023 15:13:15 +0800 Subject: [PATCH 050/302] bugfix --- card/standard.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/card/standard.js b/card/standard.js index e98d1875c..1d9aa1530 100644 --- a/card/standard.js +++ b/card/standard.js @@ -286,7 +286,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ return res; }, result:{ - target:function(player,target,card,isLink){ + target:(player,target,card,isLink)=>{ if(target._sha_result_temp) return -1.5; target._sha_result_temp=true; let basic=1,eff=-1.5,zhu=target.isZhu&&target.identityShown; @@ -306,10 +306,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(zhu) eff*=Math.max(1,9/target.hp/target.hp); if(isLink){ let rate=_status.event.getTempCache('sha_result','mayShan'); - if(rate&&rate.card===card) rate=rate.rate; + if(rate&&JSON.stringify(card)===JSON.stringify(rate.card)) rate=rate.rate; delete target._sha_result_temp; if(typeof rate==='boolean'||typeof rate==='number'){ - if(!rate) return basic*eff*1.3; if(rate>=1) return eff; return basic*eff*(1.3-0.9*rate); } @@ -334,7 +333,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){ rate:mayShan }); delete target._sha_result_temp; - if(!mayShan) return basic*eff; if(mayShan>=1) return eff; return basic*eff*(1.3-0.9*mayShan); }, From c6921566919f3199b6ef7ea0218cd7cee0766b41 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Wed, 6 Dec 2023 15:22:56 +0800 Subject: [PATCH 051/302] =?UTF-8?q?=E4=BB=A5=E9=98=B2=E4=B8=87=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/standard.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/card/standard.js b/card/standard.js index 1d9aa1530..8f8a23785 100644 --- a/card/standard.js +++ b/card/standard.js @@ -306,7 +306,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(zhu) eff*=Math.max(1,9/target.hp/target.hp); if(isLink){ let rate=_status.event.getTempCache('sha_result','mayShan'); - if(rate&&JSON.stringify(card)===JSON.stringify(rate.card)) rate=rate.rate; + if(rate){ + if(JSON.stringify(card)===JSON.stringify(rate.card)) rate=rate.rate; + else delete _status.event._tempCache['sha_result']['mayShan']; + } delete target._sha_result_temp; if(typeof rate==='boolean'||typeof rate==='number'){ if(rate>=1) return eff; From a268325f755b423406e42fb9f5e47bd85965b42e Mon Sep 17 00:00:00 2001 From: lieren2023 <131325076+lieren2023@users.noreply.github.com> Date: Wed, 6 Dec 2023 16:30:02 +0800 Subject: [PATCH 052/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=95=8C=E9=85=92?= =?UTF-8?q?=E6=B1=A0=E6=98=AF=E9=94=81=E5=AE=9A=E6=8A=80=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/mobile.js | 4 ++-- character/refresh.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/character/mobile.js b/character/mobile.js index cf0588a74..e4405c05f 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -9690,7 +9690,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{source:'damage'}, forced:true, popup:false, - //locked:false, + locked:false, audio:'jiuchi', filter:function(event,player){ return event.card&&event.card.name=='sha'&&event.getParent(2).jiu==true&&!player.hasSkill('rejiuchi_air'); @@ -15288,7 +15288,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_dongzhuo:'手杀界董卓', re_dongzhuo_prefix:'手杀界', rejiuchi:'酒池', - rejiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。锁定技,当你于回合内使用带有【酒】效果的【杀】造成伤害时,你令你的【崩坏】失效直到回合结束。', + rejiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。当你于回合内使用带有【酒】效果的【杀】造成伤害时,你令你的〖崩坏〗失效直到回合结束。', furong:'手杀傅肜', furong_prefix:'手杀', xuewei:'血卫', diff --git a/character/refresh.js b/character/refresh.js index 98cb6c6ad..69932f2df 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -14728,7 +14728,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ threaten:1.5, }, trigger:{source:'damageEnd'}, - locked:true, + locked:false, forced:true, filter:function(event,player){ if(event.name=='chooseToUse') return player.hasCard(card=>get.suit(card)=='spade','hs'); @@ -15078,7 +15078,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_caopi:'界曹丕', re_caopi_prefix:'界', oljiuchi:'酒池', - oljiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。锁定技,你使用【酒】无次数限制,且当你于回合内使用带有【酒】效果的【杀】造成伤害后,你令你的〖崩坏〗失效直到回合结束。', + oljiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。你使用【酒】无次数限制,且当你于回合内使用带有【酒】效果的【杀】造成伤害后,你令你的〖崩坏〗失效直到回合结束。', repolu:'破虏', repolu_info:'当你杀死一名角色/死亡时,你可以令任意名角色摸X+1张牌。(X为你此前发动过〖破虏〗的次数)', rexingshang:'行殇', From 096e7bd96407be96096c2a6840b5667dc50fcf59 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Wed, 6 Dec 2023 19:40:10 +0800 Subject: [PATCH 053/302] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BC=82=E6=AD=A5con?= =?UTF-8?q?tent=E4=BB=A5=E5=8F=8AGameEvent#toPromise=EF=BC=8C=E9=83=AD?= =?UTF-8?q?=E5=98=89=E5=92=8C=E4=BA=8C=E5=BC=A0=E4=BD=9C=E4=B8=BA=E6=B5=8B?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/shenhua.js | 7 +- character/standard.js | 75 ++++++- game/game.js | 478 ++++++++++++++++++++++++++---------------- 3 files changed, 376 insertions(+), 184 deletions(-) diff --git a/character/shenhua.js b/character/shenhua.js index 4113463b9..90c8698e4 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -3952,10 +3952,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(target.isMin()) return false; return player!=target&&target.canEquip(card); }, - content:function(){ + content2:function(){ target.equip(cards[0]); player.draw(); }, + async content(event, trigger, player){ + await event.target.promises.equip(event.cards[0]); + game.log('老子装完了,还没摸牌') + await player.promises.draw(); + }, discard:false, lose:false, prepare:function(cards,player,targets){ diff --git a/character/standard.js b/character/standard.js index afbce7932..ec99b9c47 100755 --- a/character/standard.js +++ b/character/standard.js @@ -588,7 +588,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event){ return (event.num>0) }, - content:function(){ + content2:function(){ 'step 0' event.count=trigger.num; 'step 1' @@ -659,6 +659,79 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.goto(1); } }, + async content(event, trigger, player) { + console.log('step 0'); + event.count = trigger.num; + while (event.count > 0) { + console.log('step 1'); + event.count--; + const { cards } = await game.cardsGotoOrdering(get.cards(2)).toPromise(); + if (_status.connectMode) game.broadcastAll(function () { _status.noclearcountdown = true }); + event.given_map = {}; + + if (!cards.length) return event.finish(); + do { + console.log('step 2'); + const { result: { bool, links } } = + cards.length == 1 ? + { result: { links: cards.slice(0), bool: true } } : + await player.promises.chooseCardButton('遗计:请选择要分配的牌', true, cards, [1, cards.length]) + .set('ai', function (button) { + if (ui.selected.buttons.length == 0) return 1; + return 0; + }); + if (!bool) return event.finish(); + console.log('step 3'); + cards.removeArray(links); + event.togive = links.slice(0); + const { result: { targets } } = await player.promises.chooseTarget('选择一名角色获得' + get.translation(links), true) + .set('ai', function (target) { + var att = get.attitude(_status.event.player, target); + if (_status.event.enemy) { + return -att; + } + else if (att > 0) { + return att / (1 + target.countCards('h')); + } + else { + return att / 100; + } + }) + .set('enemy', get.value(event.togive[0], player, 'raw') < 0); + console.log('step 4'); + if (targets.length) { + const id = targets[0].playerid, + map = event.given_map; + if (!map[id]) map[id] = []; + map[id].addArray(event.togive); + } + } while (cards.length > 0); + console.log('step 5'); + if (_status.connectMode) { + game.broadcastAll(function () { delete _status.noclearcountdown; game.stopCountChoose() }); + } + const list = []; + for (const i in event.given_map) { + const source = (_status.connectMode ? lib.playerOL : game.playerMap)[i]; + player.line(source, 'green'); + list.push([source, event.given_map[i]]); + } + await game.loseAsync({ + gain_list: list, + giver: player, + animate: 'draw', + }).setContent('gaincardMultiple').toPromise(); + console.log('step 6'); + if (event.count > 0 && player.hasSkill(event.name) && !get.is.blocked(event.name, player)) { + const { result: { bool: repeat } } = await player.promises.chooseBool(get.prompt2(event.name)).set('frequentSkill', event.name); + console.log('step 7'); + if (repeat) { + player.logSkill(event.name); + } + } + else return event.finish(); + } + }, ai:{ maixie:true, maixie_hp:true, diff --git a/game/game.js b/game/game.js index e7840298e..45e204a9b 100644 --- a/game/game.js +++ b/game/game.js @@ -47,6 +47,7 @@ new Promise(resolve=>{ } } const GeneratorFunction=(function*(){}).constructor; + const AsyncFunction=(async function(){}).constructor; // gnc: GeNCoroutine const gnc={ of:fn=>gnc.is.generatorFunc(fn)?function genCoroutine(){ @@ -21030,6 +21031,22 @@ new Promise(resolve=>{ }; player.queueCount=0; player.outCount=0; + /** + * 这部分应该用d.ts写。目前只给出大概类型 + * @type { {[key in keyof Player]: (...args) => Promise & GameEvent} } + */ + player.promises=new Proxy({},{ + get(target,prop){ + const eventKeys=Object.keys(lib.element.player).filter(key=>typeof lib.element.player[key]=='function'); + if (eventKeys.includes(prop)){ + return function (...args) { + /** @type { GameEvent } */ + const event=player[prop](...args); + return event.toPromise(); + }; + } + } + }); } buildEventListener(noclick){ let player = this; @@ -31288,6 +31305,14 @@ new Promise(resolve=>{ this._notrigger=[]; this._result={}; this._set=[]; + /** + * @type {boolean} 这个事件是否使用异步函数处理 + **/ + this.async=false; + /** + * @type {null|(event: GameEvent)=>any} 这个异步事件对应Promise的resolve函数 + **/ + this.resolve=null; if(trigger!==false&&!game.online) this._triggered=0; } static initialGameEvent(){ @@ -31517,7 +31542,10 @@ new Promise(resolve=>{ switch(typeof item){ case "object": case "function": - this.content=lib.init.parsex(item); + if(item instanceof AsyncFunction){ + this.content=item; + } + else this.content=lib.init.parsex(item); break; default: try{ @@ -32073,6 +32101,87 @@ new Promise(resolve=>{ this.unreal; throw new Error('Do not call this method'); } + /** + * 事件转为Promise化 + * + * 注: 该函数在async content中执行时,必须在所有setxx函数执行后执行。 + * @returns { Promise & GameEvent } + */ + toPromise(){ + if(this.async&&this.resolve){ + throw new TypeError('This event has been converted into a promise'); + } + return new lib.element.GameEventPromise(this); + } + }, + GameEventPromise:class extends Promise{ + // 我谢谢你,这里是必须有的 + static get [Symbol.species]() { + return Promise; + } + /** + * @param { GameEvent } event + * @returns { Promise & GameEvent } + */ + constructor(event){ + super(resolve=>{ + // 设置为异步事件 + event.async=true; + // 事件结束后触发resolve + event.resolve=resolve; + //如果父级事件也是一个异步的话,那应该立即执行这个事件的 + if(_status.event.next.includes(event)&&_status.event.content instanceof AsyncFunction){ + // console.log(event, '的父级事件也是一个异步,立即执行这个事件'); + if (_status.event != event) { + event.parent = _status.event; + _status.event = event; + game.getGlobalHistory('everything').push(event); + } + game.loop(event); + } + }); + return new Proxy(this,{ + get(target,prop,receiver){ + const thisValue=Reflect.get(target,prop); + if(thisValue){ + if(typeof thisValue=='function') { + return thisValue.bind(target); + } + return thisValue; + } + const eventValue=Reflect.get(event,prop); + // 返回值如果是event,则修改为GameEventPromise + if(typeof eventValue=='function') return (function(...args){ + const returnValue=eventValue.call(event,...args); + return returnValue==event?receiver:returnValue; + }).bind(event); + return eventValue; + }, + set(target,prop,newValue){ + return Reflect.set(event,prop,newValue); + }, + deleteProperty(target,prop){ + return Reflect.set(event,prop); + }, + defineProperty(target,prop,attributes){ + return Reflect.defineProperty(event,prop,attributes); + }, + has(target,prop){ + return Reflect.has(event,prop); + }, + ownKeys(target,prop){ + return Reflect.ownKeys(event,prop); + }, + }); + } + /** + * TODO: 实现debugger + */ + async debugger(){ + return new Promise(resolve=>{ + resolve(null); + }); + } }, Dialog:class extends HTMLDivElement{ constructor(){ @@ -41263,217 +41372,222 @@ new Promise(resolve=>{ setTimeout(game.reload,15000) } }, - loop:function(){ - while(true){ - var event=_status.event; - var step=event.step; - var source=event.source; - var player=event.player; - var target=event.target; - var targets=event.targets; - var card=event.card; - var cards=event.cards; - var skill=event.skill; - var forced=event.forced; - var num=event.num; - var trigger=event._trigger; - var result=event._result; - if(_status.paused2||_status.imchoosing){ - if(!lib.status.dateDelaying){ - lib.status.dateDelaying=new Date(); + /** + * @param { GameEvent } [belongAsyncEvent] + */ + loop:function(belongAsyncEvent){ + if(belongAsyncEvent){ + game.belongAsyncEvent=belongAsyncEvent; + }else if(game.belongAsyncEvent){ + return game.loop(game.belongAsyncEvent); + } + return new Promise(async resolve=>{ + while(true){ + let event = (belongAsyncEvent && belongAsyncEvent.parent == _status.event) ? belongAsyncEvent : _status.event; + let { step, source, player, target, targets, card, cards, skill, forced, num, _trigger: trigger, _result: result } = event; + const _resolve=()=>{ + if(event.async){ + if(typeof event.resolve=='function'){ + event.resolve(event); + }else{ + throw new TypeError('异步事件的event.resolve未赋值,使用await时将会被永久等待'); + } + } + }; + if(_status.paused2||_status.imchoosing){ + if(!lib.status.dateDelaying){ + lib.status.dateDelaying=new Date(); + } } - } - if(_status.paused||_status.paused2||_status.over){ - return; - } - if(_status.paused3){ - _status.paused3='paused'; - return; - } - if(lib.status.dateDelaying){ - lib.status.dateDelayed+=lib.getUTC(new Date())-lib.getUTC(lib.status.dateDelaying); - delete lib.status.dateDelaying; - } - if(event.next.length>0){ - var next=event.next.shift(); - if(next.player&&next.player.skipList.contains(next.name)){ - event.trigger(next.name+'Skipped'); - next.player.skipList.remove(next.name); - if(lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name); + if(_status.paused||_status.paused2||_status.over){ + return; } - else{ - next.parent=event; - _status.event=next; - game.getGlobalHistory('everything').push(next); + if(_status.paused3){ + _status.paused3='paused'; + return; } - } - else if(event.finished){ - if(event._triggered==1){ - if(event.type=='card') event.trigger('useCardToOmitted'); - event.trigger(event.name+'Omitted'); - event._triggered=4; + if(lib.status.dateDelaying){ + lib.status.dateDelayed+=lib.getUTC(new Date())-lib.getUTC(lib.status.dateDelaying); + delete lib.status.dateDelaying; } - else if(event._triggered==2){ - if(event.type=='card') event.trigger('useCardToEnd'); - event.trigger(event.name+'End'); - event._triggered=3; + if (belongAsyncEvent) { + console.log('-----------------------'); + console.log(event); + console.log('event.finished', event.finished); + console.log('event.after:', [...event.after]); + console.log('event.next:', [...event.next]); } - else if(event._triggered==3){ - if(event.type=='card') event.trigger('useCardToAfter'); - event.trigger(event.name+'After'); - event._triggered++; - } - else if(event.after&&event.after.length){ - var next=event.after.shift(); + if(event.next.length>0){ + var next=event.next.shift(); if(next.player&&next.player.skipList.contains(next.name)){ event.trigger(next.name+'Skipped'); next.player.skipList.remove(next.name); - if(lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name) + if(lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name); } else{ next.parent=event; _status.event=next; + game.getGlobalHistory('everything').push(next); } } - else{ - if(event.parent){ - if(event.result){ - event.parent._result=event.result; - } - _status.event=event.parent; + else if(event.finished){ + if(event._triggered==1){ + if(event.type=='card') event.trigger('useCardToOmitted'); + event.trigger(event.name+'Omitted'); + event._triggered=4; } - else{ - return; + else if(event._triggered==2){ + if(event.type=='card') event.trigger('useCardToEnd'); + event.trigger(event.name+'End'); + event._triggered=3; } - } - } - else{ - if(event._triggered==0){ - if(event.type=='card') event.trigger('useCardToBefore'); - event.trigger(event.name+'Before'); - event._triggered++; - } - else if(event._triggered==1){ - if(event.type=='card') event.trigger('useCardToBegin'); - event.trigger(event.name+'Begin'); - event._triggered++; - /*if(event.name=='phase'&&!event._begun){ - var next=game.createEvent('phasing',false,event); - next.player=event.player; - next.skill=event.skill; - next.setContent('phasing'); - event._begun=true; - } - else{ - event.trigger(event.name+'Begin'); + else if(event._triggered==3){ + if(event.type=='card') event.trigger('useCardToAfter'); + event.trigger(event.name+'After'); event._triggered++; - }*/ - } - else{ - event.callHandler(event.getDefaultHandlerType(),event,{ - state:'begin' - }); - if(player&&player.classList.contains('dead')&&!event.forceDie&&event.name!='phaseLoop'){ - game.broadcastAll(function(){ - while(_status.dieClose.length){ - _status.dieClose.shift().close(); - } - }); - if(event._oncancel){ - event._oncancel(); - } - event.finish(); } - else if(player&&player.removed&&event.name!='phaseLoop'){ - event.finish(); - } - else if(player&&player.isOut()&&event.name!='phaseLoop'&&!event.includeOut){ - if(event.name=='phase'&&player==_status.roundStart&&!event.skill){ - _status.roundSkipped=true; + else if(event.after&&event.after.length){ + var next=event.after.shift(); + if(next.player&&next.player.skipList.contains(next.name)){ + event.trigger(next.name+'Skipped'); + next.player.skipList.remove(next.name); + if(lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name) + } + else{ + next.parent=event; + _status.event=next; } - event.finish(); } else{ - if(_status.withError||lib.config.compatiblemode||(_status.connectMode&&!lib.config.debug)){ - try{ - if(event.content instanceof GeneratorFunction){ - if(!event.debugging){ - if(event.generatorContent) event.generatorContent.return(); - event.generatorContent=event.content(event,step,source,player,target,targets, - card,cards,skill,forced,num,trigger,result, - _status,lib,game,ui,get,ai); - }else{ - delete event.debugging; - } - var next=event.generatorContent.next(); - if(typeof next.value=='function'&&next.value.toString()=='code=>eval(code)'){ - //触发debugger - var inputCallback=inputResult=>{ - if(inputResult===false){ - event.debugging=true; - game.resume2(); - }else{ - alert(get.stringify(next.value(inputResult))); - game.prompt('','debugger调试',inputCallback); - } - } - game.prompt('','debugger调试',inputCallback); - return game.pause2(); - } - if(event.finished) event.generatorContent.return(); - }else{ - event.content(event,step,source,player,target,targets, - card,cards,skill,forced,num,trigger,result, - _status,lib,game,ui,get,ai); - } + if(event.parent){ + if(event.result){ + event.parent._result=event.result; } - catch(e){ - game.print('游戏出错:'+event.name); - game.print(e.toString()); - console.log(e); + _status.event=event.parent; + if(game.belongAsyncEvent==event){ + delete game.belongAsyncEvent; + resolve(); + } + _resolve(); + // 此时应该退出了 + if (belongAsyncEvent && belongAsyncEvent.parent == _status.event){ + return; } } else{ - if(event.content instanceof GeneratorFunction){ - if(!event.debugging){ - if(event.generatorContent) event.generatorContent.return(); - event.generatorContent=event.content(event,step,source,player,target,targets, - card,cards,skill,forced,num,trigger,result, - _status,lib,game,ui,get,ai); - }else{ - delete event.debugging; - } - var next=event.generatorContent.next(); - if(typeof next.value=='function'&&next.value.toString()=='code=>eval(code)'){ - //触发debugger - var inputCallback=inputResult=>{ - if(inputResult===false){ - event.debugging=true; - game.resume2(); - }else{ - alert(get.stringify(next.value(inputResult))); - game.prompt('','debugger调试',inputCallback); - } - } - game.prompt('','debugger调试',inputCallback); - return game.pause2(); - } - if(event.finished) event.generatorContent.return(); - }else{ - event.content(event,step,source,player,target,targets, - card,cards,skill,forced,num,trigger,result, - _status,lib,game,ui,get,ai); + if(game.belongAsyncEvent==event){ + delete game.belongAsyncEvent; + resolve(); } + return _resolve(); + } + } + } + else{ + if(event._triggered==0){ + if(event.type=='card') event.trigger('useCardToBefore'); + event.trigger(event.name+'Before'); + event._triggered++; + } + else if(event._triggered==1){ + if(event.type=='card') event.trigger('useCardToBegin'); + event.trigger(event.name+'Begin'); + event._triggered++; + } + else{ + event.callHandler(event.getDefaultHandlerType(),event,{ + state:'begin' + }); + const after=()=>{ + event.clearStepCache(); + event.callHandler(event.getDefaultHandlerType(),event,{ + state:'end' + }); + if(typeof event.step=="number") ++event.step; + }; + if(player&&player.classList.contains('dead')&&!event.forceDie&&event.name!='phaseLoop'){ + game.broadcastAll(function(){ + while(_status.dieClose.length){ + _status.dieClose.shift().close(); + } + }); + if(event._oncancel){ + event._oncancel(); + } + event.finish(); + after(); + } + else if(player&&player.removed&&event.name!='phaseLoop'){ + event.finish(); + after(); + } + else if(player&&player.isOut()&&event.name!='phaseLoop'&&!event.includeOut){ + if(event.name=='phase'&&player==_status.roundStart&&!event.skill){ + _status.roundSkipped=true; + } + event.finish(); + after(); + } + else{ + await game.runContent(belongAsyncEvent).catch(e=>{ + if(_status.withError||lib.config.compatiblemode||(_status.connectMode&&!lib.config.debug)){ + game.print('游戏出错:'+event.name); + game.print(e.toString()); + console.log(e); + } + else throw e; + }).then(after); } } - event.clearStepCache(); - event.callHandler(event.getDefaultHandlerType(),event,{ - state:'end' - }); - if(typeof event.step=="number") ++event.step; } } - } + }); + }, + runContent(belongAsyncEvent) { + return new Promise(resolve=>{ + let event = (belongAsyncEvent && belongAsyncEvent.parent == _status.event) ? belongAsyncEvent : _status.event; + let { step, source, player, target, targets, card, cards, skill, forced, num, _trigger: trigger, _result: result } = event; + if (event.content instanceof GeneratorFunction) { + if (!event.debugging) { + if (event.generatorContent) event.generatorContent.return(); + event.generatorContent = event.content(event, step, source, player, target, targets, + card, cards, skill, forced, num, trigger, result, + _status, lib, game, ui, get, ai); + } else { + delete event.debugging; + } + var next = event.generatorContent.next(); + if (typeof next.value == 'function' && next.value.toString() == 'code=>eval(code)') { + //触发debugger + var inputCallback = inputResult => { + if (inputResult === false) { + event.debugging = true; + game.resume2(); + } else { + alert(get.stringify(next.value(inputResult))); + game.prompt('', 'debugger调试', inputCallback); + } + } + game.prompt('', 'debugger调试', inputCallback); + return game.pause2(); + } + if (event.finished) event.generatorContent.return(); + resolve(); + } + else if (event.content instanceof AsyncFunction) { + // _status,lib,game,ui,get,ai六个变量由game.import提供 + event.content(event, trigger, player).then(() => { + event.finish(); + resolve(); + }); + } + else { + event.content(event, step, source, player, target, targets, + card, cards, skill, forced, num, trigger, result, + _status, lib, game, ui, get, ai); + resolve(); + } + }); }, pause:function(){ clearTimeout(_status.timeout); From e8b53c075ff34439566b77a6aec48a9da9e7c78d Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Wed, 6 Dec 2023 21:07:52 +0800 Subject: [PATCH 054/302] =?UTF-8?q?=E6=98=9F=E8=91=A3=E5=8D=93=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E5=91=BD=E5=90=8D+=E4=BA=8C=E6=8A=80=E8=83=BDai?= =?UTF-8?q?=E9=87=8A=E6=94=BE=E6=9D=A1=E4=BB=B6=E6=94=BE=E5=AE=BD+?= =?UTF-8?q?=E4=B8=89=E6=8A=80=E8=83=BD=E6=95=88=E6=9E=9C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/sp2.js | 63 +++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/character/sp2.js b/character/sp2.js index 44b84e820..927bcedd7 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,7 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ - star_dongzhuo:['male','qun',5,['star_dz_a','star_dz_b','star_dz_c'],['zhu']], + star_dongzhuo:['male','qun',5,['starweilin','starzhangrong','starhaoshou'],['zhu']], star_yuanshu:['male','qun',4,['starcanxi','starpizhi','starzhonggu'],['zhu']], star_caoren:['male','wei',4,['starsujun','starlifeng']], mp_liuling:['male','jin',3,['mpjiusong','mpmaotao','mpbishi'],['doublegroup:wei:qun:jin']], @@ -117,7 +117,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, skill:{ //星董卓 - star_dz_a:{ + starweilin:{ audio:2, trigger:{source:'damageBegin1'}, filter:function(event,player){ @@ -129,7 +129,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.num++; }, }, - star_dz_b:{ + starzhangrong:{ audio:2, trigger:{player:'phaseZhunbeiBegin'}, filter:function(event,player){ @@ -149,28 +149,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){ })) list.unshift('弃牌'); else choiceList[1]=''+choiceList[1]+''; list.unshift('扣血'); - var result=yield player.chooseControl(list).set('prompt','###'+get.prompt('star_dz_b')+'###选择其中一项令任意名符合条件的角色执行,然后你摸等量的牌,回合结束时,若这些角色中有本回合未受到过伤害的角色,则你失去1点体力').set('ai',()=>{ + var result=yield player.chooseControl(list).set('prompt','###'+get.prompt('starzhangrong')+'###选择其中一项令任意名符合条件的角色执行,然后你摸等量的牌,回合结束时,若这些角色中有本回合未受到过伤害的角色,则你失去1点体力').set('ai',()=>{ var player=_status.event.player; var controls=_status.event.controls.slice(); + /* var cards=player.getCards('hes',card=>get.tag(card,'damage')&&player.hasValueTarget(card)); var cardx=cards.filter(card=>get.name(card)=='sha'); cardx.sort((a,b)=>player.getUseValue(b)-player.getUseValue(a)); cardx=cardx.slice(Math.min(cardx.length,player.getCardUsable('sha')),cardx.length); cards.removeArray(cardx); - var targets1=game.filterPlayer(target=>get.attitude(player,target)<0&&target.getHp()>=player.getHp()&&get.effect(target,{name:'losehp'},player,player)>0&&cards.some(card=>player.canUse(card,target))); - _status.star_dz_b_check=true; - var targets2=game.filterPlayer(target=>get.attitude(player,target)<0&&target.countCards('h')>=Math.max(1,player.countCards('h'))&&get.effect(target,{name:'guohe_copy2'},player,player)>0&&cards.some(card=>player.canUse(card,target))); - delete _status.star_dz_b_check; + */ + var targets1=game.filterPlayer(target=>get.attitude(player,target)<0&&target.getHp()>=player.getHp()&&get.effect(target,{name:'losehp'},player,player)>0/*&&cards.some(card=>player.canUse(card,target))*/); + _status.starzhangrong_check=true; + var targets2=game.filterPlayer(target=>get.attitude(player,target)<0&&target.countCards('h')>=Math.max(1,player.countCards('h'))&&get.effect(target,{name:'guohe_copy2'},player,player)>0/*&&cards.some(card=>player.canUse(card,target))*/); + delete _status.starzhangrong_check; [targets1,targets2].forEach(list=>{ list.sort((a,b)=>get.damageEffect(b)-get.damageEffect(a)); - list=list.slice(0,Math.min(player.getHp(),cards.length)); + list=list.slice(0,Math.min(player.getHp()/*,cards.length*/)); }); if(!controls.includes('弃牌')) return 1-get.sgn(targets1.length); return Math.max(0,get.sgn(targets2.length-targets1.length)); }).set('choiceList',choiceList); if(result.control!='cancel2'){ var choice=result.index; - var result2=yield player.chooseTarget([1,player.getHp()],'请选择【技能】的目标','令至多'+str+'名'+(choice?'手牌数':'体力值')+'大于你的角色各'+(choice?'弃置一张手牌':'失去1点体力'),(card,player,target)=>{ + var result2=yield player.chooseTarget([1,player.getHp()],'请选择【掌戎】的目标','令至多'+str+'名'+(choice?'手牌数':'体力值')+'大于你的角色各'+(choice?'弃置一张手牌':'失去1点体力'),(card,player,target)=>{ var name=_status.event.card.name; if(name=='guohe_copy2'){ if(target==player) return player.countCards('h',card=>lib.filter.cardDiscardable(card,player)); @@ -184,15 +186,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }).set('card',{name:choice?'guohe_copy2':'loseHp'}); if(result2.bool){ var targets=result2.targets.sortBySeat(); - player.logSkill('star_dz_b',targets); + player.logSkill('starzhangrong',targets); targets.forEach(target=>{ - target.addTempSkill('star_dz_b_threaten'); + target.addTempSkill('starzhangrong_threaten'); if(choice) target.chooseToDiscard('h',true); else target.loseHp(); }); player.draw(targets.length); player.when('phaseEnd').then(()=>{ - targets.forEach(target=>target.removeSkill('star_dz_b_threaten')); + targets.forEach(target=>target.removeSkill('starzhangrong_threaten')); var targetx=targets.filter(target=>!target.getHistory('damage').length); if(targetx.length){ targetx.forEach(target=>target.chat('乐')); @@ -205,13 +207,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } }, - global:'star_dz_b_check', + global:'starzhangrong_check', subSkill:{ check:{ mod:{ canBeDiscarded:function(card,player,target){ - if(!_status.star_dz_b_check) return; - if(player.hasSkill('star_dz_b')&&get.position(card)!='h') return false; + if(!_status.starzhangrong_check) return; + if(player.hasSkill('starzhangrong')&&get.position(card)!='h') return false; }, }, }, @@ -222,7 +224,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, popup:false, content:function(){ - player.removeSkill('star_dz_b_threaten'); + player.removeSkill('starzhangrong_threaten'); }, ai:{threaten:114514+1919810}, mark:true, @@ -231,7 +233,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, - star_dz_c:{ + starhaoshou:{ unique:true, audio:2, trigger:{global:'useCardAfter'}, @@ -242,24 +244,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhuSkill:true, content:function*(event,map){ var player=map.player,target=map.trigger.player; - var result=yield target.chooseBool(get.prompt('star_dz_c',player),'令'+get.translation(player)+'回复1点体力').set('choice',get.recoverEffect(player,target,target)>0); + var result=yield target.chooseBool(get.prompt('starhaoshou',player),'令'+get.translation(player)+'回复1点体力').set('choice',get.recoverEffect(player,target,target)>0); if(result.bool){ target.line(player); - player.logSkill('star_dz_c'); + player.logSkill('starhaoshou'); player.recover(); } }, - global:'star_dz_c_global', + //global:'starhaoshou_global', subSkill:{ global:{ - audio:'star_dz_c', + audio:'starhaoshou', forceaudio:true, filter:function(event,player){ if(!player.countCards('hes',card=>{ if(get.position(card)=='h'&&_status.connectMode) return true; return get.name(card)=='jiu'; })) return false; - return event.type=='dying'&&event.dying&&event.dying!=player&&event.dying.hp<=0&&event.dying.hasZhuSkill('star_dz_c')&&player.group=='qun'; + return event.type=='dying'&&event.dying&&event.dying!=player&&event.dying.hp<=0&&event.dying.hasZhuSkill('starhaoshou')&&player.group=='qun'; }, filterCard:function(card,player){ return get.name(card)=='jiu'; @@ -276,7 +278,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!player.countCards('hes',card=>{ if(get.position(card)=='h'&&_status.connectMode) return true; return get.name(card)=='jiu'; - })||player==target||!target.hasSkill('star_dz_c')||player.group!='qun') return false; + })||player==target||!target.hasSkill('starhaoshou')||player.group!='qun') return false; }, }, }, @@ -11158,12 +11160,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ starzhonggu_info:'主公技,锁定技。摸牌阶段,若游戏轮数大于等于场上的群势力角色数,则你额外摸两张牌,否则你少摸一张牌。', star_dongzhuo:'星董卓', star_dongzhuo_prefix:'星', - star_dz_a:'技能', - star_dz_a_info:'锁定技。当你于回合内对一名其他角色造成伤害时,若其本回合未受到过伤害,且你本回合使用的牌数大于等于其体力值,则此伤害+1。', - star_dz_b:'技能', - star_dz_b_info:'准备阶段,你可以选择令至多X名体力值大于等于你的角色各失去1点体力或令至多X名手牌数大于等于你的角色各弃置一张手牌。若如此做,你摸等同于选择角色数的牌,且本回合结束时,若这些角色中存在本回合未受到过伤害的角色,则你失去1点体力。', - star_dz_c:'技能', - star_dz_c_info:'主公技。①其他群势力角色使用【酒】结算完毕后,其可以令你回复1点体力。②当你处于濒死状态时,其他群势力角色可以将【酒】当作【桃】对你使用。', + starweilin:'威临', + starweilin_info:'锁定技。当你于回合内对一名其他角色造成伤害时,若其本回合未受到过伤害,且你本回合使用的牌数大于等于其体力值,则此伤害+1。', + starzhangrong:'掌戎', + starzhangrong_info:'准备阶段,你可以选择令至多X名体力值大于等于你的角色各失去1点体力或令至多X名手牌数大于等于你的角色各弃置一张手牌。若如此做,你摸等同于选择角色数的牌,且本回合结束时,若这些角色中存在本回合未受到过伤害的角色,则你失去1点体力。', + starhaoshou:'豪首', + //starhaoshou_info:'主公技。①其他群势力角色使用【酒】结算完毕后,其可以令你回复1点体力。②当你处于濒死状态时,其他群势力角色可以将【酒】当作【桃】对你使用。', + starhaoshou_info:'主公技。其他群势力角色使用【酒】结算完毕后,其可以令你回复1点体力。。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", From 5e646da84dbbc1cd9c3653f9dae0ea11fcfaf46d Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Wed, 6 Dec 2023 21:17:08 +0800 Subject: [PATCH 055/302] bugfix --- character/sp2.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/sp2.js b/character/sp2.js index 927bcedd7..3bb03d7f5 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -183,7 +183,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var player=_status.event.player; if(get.attitude(player,target)>=0) return 0; return get.effect(target,_status.event.card,player,player); - }).set('card',{name:choice?'guohe_copy2':'loseHp'}); + }).set('card',{name:choice?'guohe_copy2':'losehp'}); if(result2.bool){ var targets=result2.targets.sortBySeat(); player.logSkill('starzhangrong',targets); From afbbc3cb3278e863c867be48ea9e74d19c2c8e4c Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Wed, 6 Dec 2023 22:56:09 +0800 Subject: [PATCH 056/302] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=97=A0=E7=94=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/shenhua.js | 5 --- character/standard.js | 87 ++----------------------------------------- game/game.js | 8 ---- 3 files changed, 4 insertions(+), 96 deletions(-) diff --git a/character/shenhua.js b/character/shenhua.js index 90c8698e4..bad0c97ae 100755 --- a/character/shenhua.js +++ b/character/shenhua.js @@ -3952,13 +3952,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(target.isMin()) return false; return player!=target&&target.canEquip(card); }, - content2:function(){ - target.equip(cards[0]); - player.draw(); - }, async content(event, trigger, player){ await event.target.promises.equip(event.cards[0]); - game.log('老子装完了,还没摸牌') await player.promises.draw(); }, discard:false, diff --git a/character/standard.js b/character/standard.js index ec99b9c47..ed9023aaf 100755 --- a/character/standard.js +++ b/character/standard.js @@ -588,90 +588,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event){ return (event.num>0) }, - content2:function(){ - 'step 0' - event.count=trigger.num; - 'step 1' - event.count--; - event.cards=game.cardsGotoOrdering(get.cards(2)).cards; - if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true}); - event.given_map={}; - 'step 2' - if(event.cards.length>1){ - player.chooseCardButton('遗计:请选择要分配的牌',true,event.cards,[1,event.cards.length]).set('ai',function(button){ - if(ui.selected.buttons.length==0) return 1; - return 0; - }); - } - else if(event.cards.length==1){ - event._result={links:event.cards.slice(0),bool:true}; - } - else{ - event.finish(); - } - 'step 3' - if(result.bool){ - event.cards.removeArray(result.links); - event.togive=result.links.slice(0); - player.chooseTarget('选择一名角色获得'+get.translation(result.links),true).set('ai',function(target){ - var att=get.attitude(_status.event.player,target); - if(_status.event.enemy){ - return -att; - } - else if(att>0){ - return att/(1+target.countCards('h')); - } - else{ - return att/100; - } - }).set('enemy',get.value(event.togive[0],player,'raw')<0); - } - 'step 4' - if(result.targets.length){ - var id=result.targets[0].playerid,map=event.given_map; - if(!map[id]) map[id]=[]; - map[id].addArray(event.togive); - } - if(cards.length>0) event.goto(2); - 'step 5' - if(_status.connectMode){ - game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()}); - } - var list=[]; - for(var i in event.given_map){ - var source=(_status.connectMode?lib.playerOL:game.playerMap)[i]; - player.line(source,'green'); - list.push([source,event.given_map[i]]); - } - game.loseAsync({ - gain_list:list, - giver:player, - animate:'draw', - }).setContent('gaincardMultiple'); - 'step 6' - if(event.count>0&&player.hasSkill(event.name)&&!get.is.blocked(event.name,player)){ - player.chooseBool(get.prompt2(event.name)).set('frequentSkill',event.name); - } - else event.finish(); - 'step 7' - if(result.bool){ - player.logSkill(event.name); - event.goto(1); - } - }, async content(event, trigger, player) { - console.log('step 0'); event.count = trigger.num; while (event.count > 0) { - console.log('step 1'); event.count--; const { cards } = await game.cardsGotoOrdering(get.cards(2)).toPromise(); if (_status.connectMode) game.broadcastAll(function () { _status.noclearcountdown = true }); event.given_map = {}; - if (!cards.length) return event.finish(); + if (!cards.length) return; do { - console.log('step 2'); const { result: { bool, links } } = cards.length == 1 ? { result: { links: cards.slice(0), bool: true } } : @@ -680,8 +606,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if (ui.selected.buttons.length == 0) return 1; return 0; }); - if (!bool) return event.finish(); - console.log('step 3'); + if (!bool) return; cards.removeArray(links); event.togive = links.slice(0); const { result: { targets } } = await player.promises.chooseTarget('选择一名角色获得' + get.translation(links), true) @@ -698,7 +623,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }) .set('enemy', get.value(event.togive[0], player, 'raw') < 0); - console.log('step 4'); if (targets.length) { const id = targets[0].playerid, map = event.given_map; @@ -706,7 +630,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ map[id].addArray(event.togive); } } while (cards.length > 0); - console.log('step 5'); if (_status.connectMode) { game.broadcastAll(function () { delete _status.noclearcountdown; game.stopCountChoose() }); } @@ -721,15 +644,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ giver: player, animate: 'draw', }).setContent('gaincardMultiple').toPromise(); - console.log('step 6'); if (event.count > 0 && player.hasSkill(event.name) && !get.is.blocked(event.name, player)) { const { result: { bool: repeat } } = await player.promises.chooseBool(get.prompt2(event.name)).set('frequentSkill', event.name); - console.log('step 7'); if (repeat) { player.logSkill(event.name); - } + } else return; } - else return event.finish(); + else return; } }, ai:{ diff --git a/game/game.js b/game/game.js index 45e204a9b..f1c7385e7 100644 --- a/game/game.js +++ b/game/game.js @@ -32131,7 +32131,6 @@ new Promise(resolve=>{ event.resolve=resolve; //如果父级事件也是一个异步的话,那应该立即执行这个事件的 if(_status.event.next.includes(event)&&_status.event.content instanceof AsyncFunction){ - // console.log(event, '的父级事件也是一个异步,立即执行这个事件'); if (_status.event != event) { event.parent = _status.event; _status.event = event; @@ -41410,13 +41409,6 @@ new Promise(resolve=>{ lib.status.dateDelayed+=lib.getUTC(new Date())-lib.getUTC(lib.status.dateDelaying); delete lib.status.dateDelaying; } - if (belongAsyncEvent) { - console.log('-----------------------'); - console.log(event); - console.log('event.finished', event.finished); - console.log('event.after:', [...event.after]); - console.log('event.next:', [...event.next]); - } if(event.next.length>0){ var next=event.next.shift(); if(next.player&&next.player.skipList.contains(next.name)){ From 7d64a0629d508531d211014c2dfb655d8c635c13 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Wed, 6 Dec 2023 23:00:07 +0800 Subject: [PATCH 057/302] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index ed9023aaf..2afcae560 100755 --- a/character/standard.js +++ b/character/standard.js @@ -586,17 +586,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'damageEnd'}, frequent:true, filter:function(event){ - return (event.num>0) + return event.num>0; }, async content(event, trigger, player) { event.count = trigger.num; + // event.goto -> while while (event.count > 0) { event.count--; const { cards } = await game.cardsGotoOrdering(get.cards(2)).toPromise(); if (_status.connectMode) game.broadcastAll(function () { _status.noclearcountdown = true }); event.given_map = {}; - if (!cards.length) return; + // event.goto -> do while do { const { result: { bool, links } } = cards.length == 1 ? From 892d4432d1302b990ca464b1adc47b05d1fab76a Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Wed, 6 Dec 2023 23:01:33 +0800 Subject: [PATCH 058/302] Revert "Update asset.js" This reverts commit a57a2fa5901ef3714eb5124381577ad4cc5f64ce. --- game/asset.js | 162 +++++++++++++++++++++++++------------------------- 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/game/asset.js b/game/asset.js index b5ccda02d..d82f53af8 100644 --- a/game/asset.js +++ b/game/asset.js @@ -8702,87 +8702,87 @@ window.noname_asset_list=[ 'image/mode/boss/card/xingtianpojunfu.png', 'image/mode/boss/card/niaobaidaowenha.png', - 'image/mode/boss/character/boss_baihu.jpg', - 'image/mode/boss/character/boss_baimangshilian.jpg', - 'image/mode/boss/character/boss_baiwuchang.jpg', - 'image/mode/boss/character/boss_bianchengwang.jpg', - 'image/mode/boss/character/boss_bifang.jpg', - 'image/mode/boss/character/boss_caiwenji.jpg', - 'image/mode/boss/character/boss_caocao.jpg', - 'image/mode/boss/character/boss_chi.jpg', - 'image/mode/boss/character/boss_chiyanshilian.jpg', - 'image/mode/boss/character/boss_chujiangwang.jpg', - 'image/mode/boss/character/boss_diaochan.jpg', - 'image/mode/boss/character/boss_dizangwang.jpg', - 'image/mode/boss/character/boss_dongzhuo.jpg', - 'image/mode/boss/character/boss_dushiwang.jpg', - 'image/mode/boss/character/boss_guojia.jpg', - 'image/mode/boss/character/boss_heiwuchang.jpg', - 'image/mode/boss/character/boss_huangyueying.jpg', - 'image/mode/boss/character/boss_huatuo.jpg', - 'image/mode/boss/character/boss_hundun.jpg', - 'image/mode/boss/character/boss_huoshenzhurong.jpg', - 'image/mode/boss/character/boss_jinshenrushou.jpg', - 'image/mode/boss/character/boss_liang.jpg', - 'image/mode/boss/character/boss_liubei.jpg', - 'image/mode/boss/character/boss_luocha.jpg', - 'image/mode/boss/character/boss_luxun.jpg', - 'image/mode/boss/character/boss_lvbu1.jpg', - 'image/mode/boss/character/boss_lvbu2.jpg', - 'image/mode/boss/character/boss_lvbu3.jpg', - 'image/mode/boss/character/boss_mamian.jpg', - 'image/mode/boss/character/boss_mengpo.jpg', - 'image/mode/boss/character/boss_mingxingzhu.jpg', - 'image/mode/boss/character/boss_mo.jpg', - 'image/mode/boss/character/boss_mushengoumang.jpg', - 'image/mode/boss/character/boss_nianshou.jpg', - 'image/mode/boss/character/boss_nianshou_baonu.jpg', - 'image/mode/boss/character/boss_nianshou_heti.jpg', - 'image/mode/boss/character/boss_nianshou_jingjue.jpg', - 'image/mode/boss/character/boss_nianshou_renxing.jpg', - 'image/mode/boss/character/boss_nianshou_ruizhi.jpg', - 'image/mode/boss/character/boss_niutou.jpg', - 'image/mode/boss/character/boss_pangtong.jpg', - 'image/mode/boss/character/boss_pingdengwang.jpg', - 'image/mode/boss/character/boss_qinglong.jpg', - 'image/mode/boss/character/boss_qingmushilian.jpg', - 'image/mode/boss/character/boss_qinguangwang.jpg', - 'image/mode/boss/character/boss_qiongqi.jpg', - 'image/mode/boss/character/boss_satan.jpg', - 'image/mode/boss/character/boss_shaohao.jpg', - 'image/mode/boss/character/boss_shuijing.jpg', - 'image/mode/boss/character/boss_shuishengonggong.jpg', - 'image/mode/boss/character/boss_shuishenxuanming.jpg', - 'image/mode/boss/character/boss_shujing.jpg', - 'image/mode/boss/character/boss_songdiwang.jpg', - 'image/mode/boss/character/boss_sunshangxiang.jpg', - 'image/mode/boss/character/boss_taihao.jpg', - 'image/mode/boss/character/boss_taishanwang.jpg', - 'image/mode/boss/character/boss_taotie.jpg', - 'image/mode/boss/character/boss_taowu.jpg', - 'image/mode/boss/character/boss_wang.jpg', - 'image/mode/boss/character/boss_wuguanwang.jpg', - 'image/mode/boss/character/boss_xiangliu.jpg', - 'image/mode/boss/character/boss_xuanlinshilian.jpg', - 'image/mode/boss/character/boss_xuanwu.jpg', - 'image/mode/boss/character/boss_yandi.jpg', - 'image/mode/boss/character/boss_yanling.jpg', - 'image/mode/boss/character/boss_yanluowang.jpg', - 'image/mode/boss/character/boss_yecha.jpg', - 'image/mode/boss/character/boss_yingzhao.jpg', - 'image/mode/boss/character/boss_yuji.jpg', - 'image/mode/boss/character/boss_zhangchunhua.jpg', - 'image/mode/boss/character/boss_zhangjiao.jpg', - 'image/mode/boss/character/boss_zhenji.jpg', - 'image/mode/boss/character/boss_zhouyu.jpg', - 'image/mode/boss/character/boss_zhuanlunwang.jpg', - 'image/mode/boss/character/boss_zhuanxu.jpg', - 'image/mode/boss/character/boss_zhugeliang.jpg', - 'image/mode/boss/character/boss_zhuoguiquxie.jpg', - 'image/mode/boss/character/boss_zhuque.jpg', - 'image/mode/boss/character/boss_zhuyan.jpg', - 'image/mode/boss/character/boss_zhuyin.jpg', - 'image/mode/boss/character/boss_zuoci.jpg', + 'image/mode/boss/boss_baihu.jpg', + 'image/mode/boss/boss_baimangshilian.jpg', + 'image/mode/boss/boss_baiwuchang.jpg', + 'image/mode/boss/boss_bianchengwang.jpg', + 'image/mode/boss/boss_bifang.jpg', + 'image/mode/boss/boss_caiwenji.jpg', + 'image/mode/boss/boss_caocao.jpg', + 'image/mode/boss/boss_chi.jpg', + 'image/mode/boss/boss_chiyanshilian.jpg', + 'image/mode/boss/boss_chujiangwang.jpg', + 'image/mode/boss/boss_diaochan.jpg', + 'image/mode/boss/boss_dizangwang.jpg', + 'image/mode/boss/boss_dongzhuo.jpg', + 'image/mode/boss/boss_dushiwang.jpg', + 'image/mode/boss/boss_guojia.jpg', + 'image/mode/boss/boss_heiwuchang.jpg', + 'image/mode/boss/boss_huangyueying.jpg', + 'image/mode/boss/boss_huatuo.jpg', + 'image/mode/boss/boss_hundun.jpg', + 'image/mode/boss/boss_huoshenzhurong.jpg', + 'image/mode/boss/boss_jinshenrushou.jpg', + 'image/mode/boss/boss_liang.jpg', + 'image/mode/boss/boss_liubei.jpg', + 'image/mode/boss/boss_luocha.jpg', + 'image/mode/boss/boss_luxun.jpg', + 'image/mode/boss/boss_lvbu1.jpg', + 'image/mode/boss/boss_lvbu2.jpg', + 'image/mode/boss/boss_lvbu3.jpg', + 'image/mode/boss/boss_mamian.jpg', + 'image/mode/boss/boss_mengpo.jpg', + 'image/mode/boss/boss_mingxingzhu.jpg', + 'image/mode/boss/boss_mo.jpg', + 'image/mode/boss/boss_mushengoumang.jpg', + 'image/mode/boss/boss_nianshou.jpg', + 'image/mode/boss/boss_nianshou_baonu.jpg', + 'image/mode/boss/boss_nianshou_heti.jpg', + 'image/mode/boss/boss_nianshou_jingjue.jpg', + 'image/mode/boss/boss_nianshou_renxing.jpg', + 'image/mode/boss/boss_nianshou_ruizhi.jpg', + 'image/mode/boss/boss_niutou.jpg', + 'image/mode/boss/boss_pangtong.jpg', + 'image/mode/boss/boss_pingdengwang.jpg', + 'image/mode/boss/boss_qinglong.jpg', + 'image/mode/boss/boss_qingmushilian.jpg', + 'image/mode/boss/boss_qinguangwang.jpg', + 'image/mode/boss/boss_qiongqi.jpg', + 'image/mode/boss/boss_satan.jpg', + 'image/mode/boss/boss_shaohao.jpg', + 'image/mode/boss/boss_shuijing.jpg', + 'image/mode/boss/boss_shuishengonggong.jpg', + 'image/mode/boss/boss_shuishenxuanming.jpg', + 'image/mode/boss/boss_shujing.jpg', + 'image/mode/boss/boss_songdiwang.jpg', + 'image/mode/boss/boss_sunshangxiang.jpg', + 'image/mode/boss/boss_taihao.jpg', + 'image/mode/boss/boss_taishanwang.jpg', + 'image/mode/boss/boss_taotie.jpg', + 'image/mode/boss/boss_taowu.jpg', + 'image/mode/boss/boss_wang.jpg', + 'image/mode/boss/boss_wuguanwang.jpg', + 'image/mode/boss/boss_xiangliu.jpg', + 'image/mode/boss/boss_xuanlinshilian.jpg', + 'image/mode/boss/boss_xuanwu.jpg', + 'image/mode/boss/boss_yandi.jpg', + 'image/mode/boss/boss_yanling.jpg', + 'image/mode/boss/boss_yanluowang.jpg', + 'image/mode/boss/boss_yecha.jpg', + 'image/mode/boss/boss_yingzhao.jpg', + 'image/mode/boss/boss_yuji.jpg', + 'image/mode/boss/boss_zhangchunhua.jpg', + 'image/mode/boss/boss_zhangjiao.jpg', + 'image/mode/boss/boss_zhenji.jpg', + 'image/mode/boss/boss_zhouyu.jpg', + 'image/mode/boss/boss_zhuanlunwang.jpg', + 'image/mode/boss/boss_zhuanxu.jpg', + 'image/mode/boss/boss_zhugeliang.jpg', + 'image/mode/boss/boss_zhuoguiquxie.jpg', + 'image/mode/boss/boss_zhuque.jpg', + 'image/mode/boss/boss_zhuyan.jpg', + 'image/mode/boss/boss_zhuyin.jpg', + 'image/mode/boss/boss_zuoci.jpg', 'image/mode/chess/card/chess_chuzhang.png', 'image/mode/chess/card/chess_shezhang.png', From 719963a949d049c4fb876ecf7025a62b3247dab0 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Wed, 6 Dec 2023 23:55:35 +0800 Subject: [PATCH 059/302] =?UTF-8?q?=E3=80=90=E6=9D=80=E3=80=91ai=20bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/standard.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/card/standard.js b/card/standard.js index 8f8a23785..af19cea3e 100644 --- a/card/standard.js +++ b/card/standard.js @@ -307,14 +307,17 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(isLink){ let rate=_status.event.getTempCache('sha_result','mayShan'); if(rate){ - if(JSON.stringify(card)===JSON.stringify(rate.card)) rate=rate.rate; - else delete _status.event._tempCache['sha_result']['mayShan']; + if(card.cardid||rate.card.cardid){ + if(card.cardid==rate.card.cardid) rate=rate.rate; + } + else if(JSON.stringify(card)===JSON.stringify(rate.card)) rate=rate.rate; } delete target._sha_result_temp; if(typeof rate==='boolean'||typeof rate==='number'){ if(rate>=1) return eff; return basic*eff*(1.3-0.9*rate); } + else delete _status.event._tempCache['sha_result']['mayShan']; return basic*eff; } let mayShan; From 7225dcc149fcd15f21d8a7beb8243980ef998faa Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 7 Dec 2023 09:08:32 +0800 Subject: [PATCH 060/302] =?UTF-8?q?canCompare=E6=B7=BB=E5=8A=A0=E5=8F=82?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E5=9C=A8player/target=E6=B2=A1=E7=89=8C?= =?UTF-8?q?=E6=97=B6=E4=BB=8D=E8=A7=86=E4=B8=BA=E6=BB=A1=E8=B6=B3=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/sb.js | 2 +- character/shiji.js | 5 ++--- character/tw.js | 4 ++-- game/game.js | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/character/sb.js b/character/sb.js index a44b548af..b00f1f549 100644 --- a/character/sb.js +++ b/character/sb.js @@ -1096,7 +1096,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{player:'useCardToPlayered'}, filter:function(event,player){ - return event.targets.length==1&&event.card.name=='sha'&&!player.hasSkillTag('noCompareSource')&&event.target.countCards('h')>0&&!event.target.hasSkillTag('noCompareTarget'); + return event.targets.length==1&&event.card.name=='sha'&&player.canCompare(event.target,true); }, check:function(event,player){ return get.attitude(player,event.target)<=0||game.hasPlayer(current=>get.damageEffect(current,player,player)>0); diff --git a/character/shiji.js b/character/shiji.js index 7845bbdbc..594e50385 100644 --- a/character/shiji.js +++ b/character/shiji.js @@ -2276,11 +2276,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ enable:'phaseUse', usable:1, filter:function(event,player){ - return !player.hasSkillTag('noCompareSource'); + return game.hasPlayer(target=>player.canCompare(target,true)); }, filterTarget:function(card,player,target){ - return target!=player&&target.countCards('h')>0&& - !target.hasSkillTag('noCompareTarget'); + return player.canCompare(target,true); }, content:function(){ 'step 0' diff --git a/character/tw.js b/character/tw.js index 9c7ac9621..ae223f2f4 100644 --- a/character/tw.js +++ b/character/tw.js @@ -8586,14 +8586,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ if(!event.isFirstTarget||!get.tag(event.card,'damage')) return false; return !player.hasSkillTag('noCompareSource')&&game.hasPlayer(target=>{ - return target!=player&&target.countCards('h')>0&&!target.hasSkillTag('noCompareTarget'); + return player.canCompare(target,true); }); }, direct:true, content:function(){ 'step 0' player.chooseTarget(get.prompt2('twzhenhu'),[1,3],function(card,player,target){ - return target!=player&&target.countCards('h')>0&&!target.hasSkillTag('noCompareTarget'); + return player.canCompare(target,true); }).set('ai',function(target){ var player=_status.event.player,targets=_status.event.getTrigger().targets; var num=0; diff --git a/game/game.js b/game/game.js index e7840298e..a80eb6678 100644 --- a/game/game.js +++ b/game/game.js @@ -22383,9 +22383,9 @@ new Promise(resolve=>{ next.setContent('swapEquip'); return next; } - canCompare(target){ + canCompare(target,goon,bool){ if(this==target) return false; - if(!this.countCards('h')||!target.countCards('h')) return false; + if((!this.countCards('h')&&goon!==true)||(!target.countCards('h')&&bool!==true)) return false; if(this.hasSkillTag('noCompareSource')||target.hasSkillTag('noCompareTarget')) return false; return true; } From 4edcc6f0c59f78900d8c896399dbeb3773ddbd41 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Thu, 7 Dec 2023 14:01:52 +0800 Subject: [PATCH 061/302] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=8C=E4=BF=AE=E5=A4=8DtoPromise=E7=AB=8B?= =?UTF-8?q?=E5=8D=B3=E6=89=A7=E8=A1=8C=E6=89=80=E5=AF=BC=E8=87=B4=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- game/game.js | 318 +++++++++++++++++++++++------------------- 2 files changed, 172 insertions(+), 148 deletions(-) diff --git a/character/standard.js b/character/standard.js index 2afcae560..6308d4dff 100755 --- a/character/standard.js +++ b/character/standard.js @@ -644,7 +644,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gain_list: list, giver: player, animate: 'draw', - }).setContent('gaincardMultiple').toPromise(); + }).toPromise().setContent('gaincardMultiple'); if (event.count > 0 && player.hasSkill(event.name) && !get.is.blocked(event.name, player)) { const { result: { bool: repeat } } = await player.promises.chooseBool(get.prompt2(event.name)).set('frequentSkill', event.name); if (repeat) { diff --git a/game/game.js b/game/game.js index f1c7385e7..95f0b0150 100644 --- a/game/game.js +++ b/game/game.js @@ -32104,7 +32104,6 @@ new Promise(resolve=>{ /** * 事件转为Promise化 * - * 注: 该函数在async content中执行时,必须在所有setxx函数执行后执行。 * @returns { Promise & GameEvent } */ toPromise(){ @@ -32114,8 +32113,30 @@ new Promise(resolve=>{ return new lib.element.GameEventPromise(this); } }, + /** + * 对于事件Promise化后,需要既能使用await等待事件完成, + * 又需要在执行之前对事件进行配置。 + * + * 所以这个类的实例集成了事件和Promise二者的所有属性, + * 且Promise的原有属性无法被修改,一切对这个类实例的属性修改,删除, + * 再配置等操作都会转发到事件对应的属性中。 + * + * @todo 需要完成异步事件的debugger方法 + * + * @example + * 使用toPromise()函数将普通事件转换为异步事件: + * ```js + * await game.xxx().toPromise().setContent('yyy').set(zzz, 'i'); + * ``` + * 使用player.promises.xxx()函数将对于player的普通事件转换为异步事件: + * ```js + * await player.draw(2); + * game.log('等待', player, '摸牌完成执行log'); + * ``` + */ GameEventPromise:class extends Promise{ // 我谢谢你,这里是必须有的 + // 否则Promise的方法对其子类无效 static get [Symbol.species]() { return Promise; } @@ -32129,27 +32150,32 @@ new Promise(resolve=>{ event.async=true; // 事件结束后触发resolve event.resolve=resolve; - //如果父级事件也是一个异步的话,那应该立即执行这个事件的 + // 如果父级事件也是一个异步的话,那应该立即执行这个事件的 + // 如果在AsyncFunction执行过程中在别的位置新建了一个异步事件,那也直接(等会set配置完)执行 if(_status.event.next.includes(event)&&_status.event.content instanceof AsyncFunction){ - if (_status.event != event) { - event.parent = _status.event; - _status.event = event; + if (_status.event!=event) { + event.parent=_status.event; + _status.event=event; game.getGlobalHistory('everything').push(event); } - game.loop(event); + // 异步执行game.loop + // 不直接game.loop(event)是因为需要让别人可以手动set()和setContent() + // 再执行game.loop是因为原有的game.loop被await卡住了, + // 得新执行一个只执行这个异步事件的game.loop + Promise.resolve().then(()=>game.loop(event)); } }); return new Proxy(this,{ get(target,prop,receiver){ const thisValue=Reflect.get(target,prop); if(thisValue){ - if(typeof thisValue=='function') { + if(typeof thisValue=='function'){ return thisValue.bind(target); } return thisValue; } const eventValue=Reflect.get(event,prop); - // 返回值如果是event,则修改为GameEventPromise + // 返回值如果是event,则修改为GameEventPromise类实例 if(typeof eventValue=='function') return (function(...args){ const returnValue=eventValue.call(event,...args); return returnValue==event?receiver:returnValue; @@ -41374,166 +41400,164 @@ new Promise(resolve=>{ /** * @param { GameEvent } [belongAsyncEvent] */ - loop:function(belongAsyncEvent){ + async loop(belongAsyncEvent){ if(belongAsyncEvent){ game.belongAsyncEvent=belongAsyncEvent; }else if(game.belongAsyncEvent){ return game.loop(game.belongAsyncEvent); } - return new Promise(async resolve=>{ - while(true){ - let event = (belongAsyncEvent && belongAsyncEvent.parent == _status.event) ? belongAsyncEvent : _status.event; - let { step, source, player, target, targets, card, cards, skill, forced, num, _trigger: trigger, _result: result } = event; - const _resolve=()=>{ - if(event.async){ - if(typeof event.resolve=='function'){ - event.resolve(event); - }else{ - throw new TypeError('异步事件的event.resolve未赋值,使用await时将会被永久等待'); - } - } - }; - if(_status.paused2||_status.imchoosing){ - if(!lib.status.dateDelaying){ - lib.status.dateDelaying=new Date(); + while (true) { + let event = (belongAsyncEvent && belongAsyncEvent.parent == _status.event) ? belongAsyncEvent : _status.event; + let { step, source, player, target, targets, card, cards, skill, forced, num, _trigger: trigger, _result: result } = event; + const _resolve = () => { + if (event.async) { + if (typeof event.resolve == 'function') { + event.resolve(event); + } else { + throw new TypeError('异步事件的event.resolve未赋值,使用await时将会被永久等待'); } } - if(_status.paused||_status.paused2||_status.over){ - return; + }; + if (_status.paused2 || _status.imchoosing) { + if (!lib.status.dateDelaying) { + lib.status.dateDelaying = new Date(); } - if(_status.paused3){ - _status.paused3='paused'; - return; + } + if (_status.paused || _status.paused2 || _status.over) { + return; + } + if (_status.paused3) { + _status.paused3 = 'paused'; + return; + } + if (lib.status.dateDelaying) { + lib.status.dateDelayed += lib.getUTC(new Date()) - lib.getUTC(lib.status.dateDelaying); + delete lib.status.dateDelaying; + } + if (event.next.length > 0) { + var next = event.next.shift(); + if (next.player && next.player.skipList.contains(next.name)) { + event.trigger(next.name + 'Skipped'); + next.player.skipList.remove(next.name); + if (lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name); } - if(lib.status.dateDelaying){ - lib.status.dateDelayed+=lib.getUTC(new Date())-lib.getUTC(lib.status.dateDelaying); - delete lib.status.dateDelaying; + else { + next.parent = event; + _status.event = next; + game.getGlobalHistory('everything').push(next); } - if(event.next.length>0){ - var next=event.next.shift(); - if(next.player&&next.player.skipList.contains(next.name)){ - event.trigger(next.name+'Skipped'); + } + else if (event.finished) { + if (event._triggered == 1) { + if (event.type == 'card') event.trigger('useCardToOmitted'); + event.trigger(event.name + 'Omitted'); + event._triggered = 4; + } + else if (event._triggered == 2) { + if (event.type == 'card') event.trigger('useCardToEnd'); + event.trigger(event.name + 'End'); + event._triggered = 3; + } + else if (event._triggered == 3) { + if (event.type == 'card') event.trigger('useCardToAfter'); + event.trigger(event.name + 'After'); + event._triggered++; + } + else if (event.after && event.after.length) { + var next = event.after.shift(); + if (next.player && next.player.skipList.contains(next.name)) { + event.trigger(next.name + 'Skipped'); next.player.skipList.remove(next.name); - if(lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name); + if (lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name) } - else{ - next.parent=event; - _status.event=next; - game.getGlobalHistory('everything').push(next); + else { + next.parent = event; + _status.event = next; } } - else if(event.finished){ - if(event._triggered==1){ - if(event.type=='card') event.trigger('useCardToOmitted'); - event.trigger(event.name+'Omitted'); - event._triggered=4; - } - else if(event._triggered==2){ - if(event.type=='card') event.trigger('useCardToEnd'); - event.trigger(event.name+'End'); - event._triggered=3; - } - else if(event._triggered==3){ - if(event.type=='card') event.trigger('useCardToAfter'); - event.trigger(event.name+'After'); - event._triggered++; - } - else if(event.after&&event.after.length){ - var next=event.after.shift(); - if(next.player&&next.player.skipList.contains(next.name)){ - event.trigger(next.name+'Skipped'); - next.player.skipList.remove(next.name); - if(lib.phaseName.contains(next.name)) next.player.getHistory('skipped').add(next.name) + else { + if (event.parent) { + if (event.result) { + event.parent._result = event.result; } - else{ - next.parent=event; - _status.event=next; + _status.event = event.parent; + if (game.belongAsyncEvent == event) { + delete game.belongAsyncEvent; + //resolve(); + } + _resolve(); + // 此时应该退出了 + if (belongAsyncEvent && belongAsyncEvent.parent == _status.event) { + return; } } - else{ - if(event.parent){ - if(event.result){ - event.parent._result=event.result; - } - _status.event=event.parent; - if(game.belongAsyncEvent==event){ - delete game.belongAsyncEvent; - resolve(); - } - _resolve(); - // 此时应该退出了 - if (belongAsyncEvent && belongAsyncEvent.parent == _status.event){ - return; - } - } - else{ - if(game.belongAsyncEvent==event){ - delete game.belongAsyncEvent; - resolve(); - } - return _resolve(); - } - } - } - else{ - if(event._triggered==0){ - if(event.type=='card') event.trigger('useCardToBefore'); - event.trigger(event.name+'Before'); - event._triggered++; - } - else if(event._triggered==1){ - if(event.type=='card') event.trigger('useCardToBegin'); - event.trigger(event.name+'Begin'); - event._triggered++; - } - else{ - event.callHandler(event.getDefaultHandlerType(),event,{ - state:'begin' - }); - const after=()=>{ - event.clearStepCache(); - event.callHandler(event.getDefaultHandlerType(),event,{ - state:'end' - }); - if(typeof event.step=="number") ++event.step; - }; - if(player&&player.classList.contains('dead')&&!event.forceDie&&event.name!='phaseLoop'){ - game.broadcastAll(function(){ - while(_status.dieClose.length){ - _status.dieClose.shift().close(); - } - }); - if(event._oncancel){ - event._oncancel(); - } - event.finish(); - after(); - } - else if(player&&player.removed&&event.name!='phaseLoop'){ - event.finish(); - after(); - } - else if(player&&player.isOut()&&event.name!='phaseLoop'&&!event.includeOut){ - if(event.name=='phase'&&player==_status.roundStart&&!event.skill){ - _status.roundSkipped=true; - } - event.finish(); - after(); - } - else{ - await game.runContent(belongAsyncEvent).catch(e=>{ - if(_status.withError||lib.config.compatiblemode||(_status.connectMode&&!lib.config.debug)){ - game.print('游戏出错:'+event.name); - game.print(e.toString()); - console.log(e); - } - else throw e; - }).then(after); + else { + if (game.belongAsyncEvent == event) { + delete game.belongAsyncEvent; + //resolve(); } + return _resolve(); } } } - }); + else { + if (event._triggered == 0) { + if (event.type == 'card') event.trigger('useCardToBefore'); + event.trigger(event.name + 'Before'); + event._triggered++; + } + else if (event._triggered == 1) { + if (event.type == 'card') event.trigger('useCardToBegin'); + event.trigger(event.name + 'Begin'); + event._triggered++; + } + else { + event.callHandler(event.getDefaultHandlerType(), event, { + state: 'begin' + }); + const after = () => { + event.clearStepCache(); + event.callHandler(event.getDefaultHandlerType(), event, { + state: 'end' + }); + if (typeof event.step == "number") ++event.step; + }; + if (player && player.classList.contains('dead') && !event.forceDie && event.name != 'phaseLoop') { + game.broadcastAll(function () { + while (_status.dieClose.length) { + _status.dieClose.shift().close(); + } + }); + if (event._oncancel) { + event._oncancel(); + } + event.finish(); + after(); + } + else if (player && player.removed && event.name != 'phaseLoop') { + event.finish(); + after(); + } + else if (player && player.isOut() && event.name != 'phaseLoop' && !event.includeOut) { + if (event.name == 'phase' && player == _status.roundStart && !event.skill) { + _status.roundSkipped = true; + } + event.finish(); + after(); + } + else { + await game.runContent(belongAsyncEvent).catch(e => { + if (_status.withError || lib.config.compatiblemode || (_status.connectMode && !lib.config.debug)) { + game.print('游戏出错:' + event.name); + game.print(e.toString()); + console.log(e); + } + else throw e; + }).then(after); + } + } + } + } }, runContent(belongAsyncEvent) { return new Promise(resolve=>{ From f09a898ac96607f5880a5e8c1b2b5dee557ffe51 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Thu, 7 Dec 2023 14:12:23 +0800 Subject: [PATCH 062/302] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/game/game.js b/game/game.js index 95f0b0150..4626db53d 100644 --- a/game/game.js +++ b/game/game.js @@ -32114,7 +32114,9 @@ new Promise(resolve=>{ } }, /** - * 对于事件Promise化后,需要既能使用await等待事件完成, + * 将事件Promise化以使用async异步函数来执行事件。 + * + * 事件Promise化后,需要既能使用await等待事件完成, * 又需要在执行之前对事件进行配置。 * * 所以这个类的实例集成了事件和Promise二者的所有属性, @@ -32128,9 +32130,9 @@ new Promise(resolve=>{ * ```js * await game.xxx().toPromise().setContent('yyy').set(zzz, 'i'); * ``` - * 使用player.promises.xxx()函数将对于player的普通事件转换为异步事件: + * 使用player.promises.xxx()函数将对于player的普通事件转换为异步事件并执行: * ```js - * await player.draw(2); + * await player.promises.draw(2); * game.log('等待', player, '摸牌完成执行log'); * ``` */ From 8a132614003ff3dd7993b54b45ea2d72cbe35ad1 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Thu, 7 Dec 2023 14:43:19 +0800 Subject: [PATCH 063/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E5=A4=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game/game.js b/game/game.js index 4626db53d..818105c53 100644 --- a/game/game.js +++ b/game/game.js @@ -32188,7 +32188,7 @@ new Promise(resolve=>{ return Reflect.set(event,prop,newValue); }, deleteProperty(target,prop){ - return Reflect.set(event,prop); + return Reflect.deleteProperty(event,prop); }, defineProperty(target,prop,attributes){ return Reflect.defineProperty(event,prop,attributes); From b42df2bed32d55c1858556c2141e5c38f101fc5f Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Thu, 7 Dec 2023 16:50:04 +0800 Subject: [PATCH 064/302] =?UTF-8?q?=E3=80=90=E6=9D=80=E3=80=91ai?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/standard.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/card/standard.js b/card/standard.js index af19cea3e..7dd7c4089 100644 --- a/card/standard.js +++ b/card/standard.js @@ -305,19 +305,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){ else if(target.hp<2) basic*=3; if(zhu) eff*=Math.max(1,9/target.hp/target.hp); if(isLink){ - let rate=_status.event.getTempCache('sha_result','mayShan'); - if(rate){ - if(card.cardid||rate.card.cardid){ - if(card.cardid==rate.card.cardid) rate=rate.rate; - } - else if(JSON.stringify(card)===JSON.stringify(rate.card)) rate=rate.rate; - } + if(rate&&rate.id===card.sha_ai_id) rate=rate.rate; delete target._sha_result_temp; if(typeof rate==='boolean'||typeof rate==='number'){ if(rate>=1) return eff; return basic*eff*(1.3-0.9*rate); } - else delete _status.event._tempCache['sha_result']['mayShan']; + delete _status.event._tempCache['sha_result']['mayShan']; return basic*eff; } let mayShan; @@ -334,10 +328,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){ })) mayShan=true; else mayShan=1-Math.pow(0.7,(target.hasSkillTag('respondShan',true,'use',true)?1:0)+target.countCards('hs')-temp.length); } - _status.event.putTempCache('sha_result','mayShan',{ - card:card, - rate:mayShan - }); + if(game.hasNature(card,'linked',player)){ + if(!_status.sha_ai_id) _status.sha_ai_id=1; + else _status.sha_ai_id++; + card.sha_ai_id=_status.sha_ai_id; + _status.event.putTempCache('sha_result','mayShan',{ + id:_status.sha_ai_id, + rate:mayShan + }); + } delete target._sha_result_temp; if(mayShan>=1) return eff; return basic*eff*(1.3-0.9*mayShan); From 485ca2f2f5f5710206245270b090e38ad04c82d3 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 7 Dec 2023 19:58:34 +0800 Subject: [PATCH 065/302] =?UTF-8?q?=E6=98=9F=E8=91=A3=E5=8D=93=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E9=85=8D=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- audio/die/star_dongzhuo.mp3 | Bin 0 -> 100002 bytes audio/skill/starhaoshou1.mp3 | Bin 0 -> 74117 bytes audio/skill/starhaoshou2.mp3 | Bin 0 -> 80280 bytes audio/skill/starweilin1.mp3 | Bin 0 -> 70163 bytes audio/skill/starweilin2.mp3 | Bin 0 -> 86149 bytes audio/skill/starzhangrong1.mp3 | Bin 0 -> 85438 bytes audio/skill/starzhangrong2.mp3 | Bin 0 -> 89017 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 audio/die/star_dongzhuo.mp3 create mode 100644 audio/skill/starhaoshou1.mp3 create mode 100644 audio/skill/starhaoshou2.mp3 create mode 100644 audio/skill/starweilin1.mp3 create mode 100644 audio/skill/starweilin2.mp3 create mode 100644 audio/skill/starzhangrong1.mp3 create mode 100644 audio/skill/starzhangrong2.mp3 diff --git a/audio/die/star_dongzhuo.mp3 b/audio/die/star_dongzhuo.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a56900c84bf242368d1af2ba4a0c9770d1eebe83 GIT binary patch literal 100002 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

--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 Ax&QzG literal 0 HcmV?d00001 diff --git a/audio/skill/starhaoshou1.mp3 b/audio/skill/starhaoshou1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..24e2cfd807f54382205cab630bc4f17cec5b185b GIT binary patch literal 74117 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:l6O)XkO8lQn>L-y9U82(vdU3%K*$iNSlOf9a?$ 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%0A3c0622cp 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 literal 0 HcmV?d00001 diff --git a/audio/skill/starzhangrong1.mp3 b/audio/skill/starzhangrong1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..320dbeb920cb7d5a8baed7c3549389a2469cbf97 GIT binary patch literal 85438 zcmd>E^;cBi*S<3hFr-5d>ClZshoD1ucgfHx4FaN{p}V`3mhMzRT3T8{=`IP2{^F1C z-|+6W&boJ^*mkLmNvFNUI;BuH$7=Jnfn<6 z007dbpq#gi3aPSCW zWR!3k1_U!3C(k26QE|y9(y|K5sv6pQh9>3~*0v5#F0Sq#o?c$wK0dy_FZ^Eq7Ze&9 z9h;DxmXV$NwxGDIvbwIJx%ES5S8xB|==jv^{Nnf3_3hn*W=>M`Xb{ z>LxPmZQ_vv(V&4KPQJhBpdKsy5V)0Er`he^we*%S7)!lID+el)EUZ9LV3xuZdPzV}6Jo`US~iitg+t8wng)v*qZcda=|Rs0nXG zFZST{%h(eKO(1z_Em0`5r+#t>s+2N^`k&vmp?zr`>JqO;9V&vF{MO^ATMO{*GXzBp zv<_WWDFFQ5R0c)@I)n}Er`8W{Ix-$uH!OAa>5wNj`)t+vmKKZxJrMYXoFW&(8v0VJ zYr=Tl2Ij@bv{Nlh%fl*N;0qlgqNJsp8K$GfGuB6}m1*Vt*YX*^&X z>M;6uYTgUuIaF%aQ!_(5Y<3b}bwOGS;xX-Zwe_cs9&esFSA3i~EGeHn!3Es<6fnx0HMi(I;sN(NAh7 zpna}pb6YQ^AQ$|F(M#8C+KJwV%&`e~tx`l%B3~!PRa?6zfoZr2D-Y>!&x%aalYFe+ zJ?0xTQ%~SSk!@w%6gqYOjKPjZFQ!l5X28z=+tG0D-IaUaI)+H?1?NtkQ_uUxBK~w5 z#OH9tZB~>u@xT(i*0~7s(jJ3zi+3u?odjgM&Zm+f3Rx zze283Wv9cV%p$imm8t3yo_Cs8|9ad)bHGMR8vN{1^3klr+=Hc|us%7a<_ToIxX+Bs z`-4Qe#X8BL9EzAel|md&e>xokY3<)cjDk(oF4Udd(kjS(aV9Kpa)wOCnK)PeU`Dt! z1d(ziMaC>3?8_0EZ57=tGgB8lJCkMfLKJYy&R_)_C6q3IA7p^iYO$`8+c=X<95$Od zA)gk*4EiYfDk>U>oSK`{?v$F>(u()H4*NS_RrR%ve${!x?VMZo4SRX(DG4>}V=RlG zq(gfLH}4FFx)EhW#I)A>3*o3XgNsaq{{p-!X+0@MT>izT=Jz5Ku?2mT3|SmlVGb(o}S1v0-tT zteUz7*FKn^AH`<03Ux=l9$f7kEH|bLEjD1ED5oKD&rqT^Ugo3{B0~zx4QYiu3U@hJ zEbemf_lbzvIsACtSv5X6qvRG3mNgs>22R$V`($i%{LH-==(L)Bt18Ra)))bZ4c*Mk zjyBD{?)zZu}rLr!G=NXHhq|v8<R~_zOOD4fhtQWHVJkI$W^(i> z4YDsJ9EWZK3!JDmK|%}4BNG=~^8Of!WHXpDQEj;6qkz;4>PRVl%GD{+U_U${lpXIoC?MLsnEI+X zuC#tvCB2`UG2Fk(v7yfS{Nal6-*;EZ*pm+1v!>oSR8!ppZfl+YMYB^R{GeC%bFd1v z{%puhm)t-3Ol7Rk>hRN>=PHih;0$vAF%0-CAp$$qM{_SL?ymCtt^m55BH?PwolW7! z66(>8-7BH~754w;T<=0NNU5#UF#ba573rqvR3y02ZV1hf7G-k&SjIY2MWFQ(Chhl> z1YfvCaCyHm?}5yO-OWPHQq!d^%3Coy?)adpg`eM2Cdx}+`pXRGLrFbNyv_L*!H>O5 zpb0U8LUB964QY7KTg8%vE$z2I#!=VcRbp`0lqUmrJt{2y7hQDUdQksWOInlZ=-1=9 zj?*8+zc23GnRGX3Gfe*zqH_wEp86R@e|{v}a+G;Q?DdYhT`IN;BQx#vnF^!%OtbzvT?`5T+ZQ1FQNx`7f0O7_@3Aj!^#!X`1 z^vNX6?0$cg@_%l|g2$fJdEoFRCT5yf>}ma~&Vz*TQiWBRFwk32m(EBWEUk~d=8vfJ z9ecXwNRmyOqGU91)+o8nZLC@wZUYbJa@>wSJOrwdLA@ zK|}dXMniF}{=lxY$MZ)fACJ2~{lHsyUuI)`O_A=tjeBGe7m`eJ(R0pH!82MJw=I=P zoPIu+$w~1@reJSzMBH&NH$#A;((rcbvChJGTGgtpH$^_Sefl1xOfvH$b{pq5y~0O% zZ{}t^yR2VDF?tOOG3RB+lmTXry&l?GFE8l`$kV|iC)#)V{Jk2r-6OTLx`wX z2ZnZD0ldpgQ!OQX?`Ph^aBR3~>8ni6MwUccf-=`TDq3Q158p3tsp~WfKIU8eKsPr# zBv&pG=U`D- zI5jGOQ{z|b6J3q)vpmPgLN6)Bu^92RnHRHvIn)<@dSjxk@tl!;S=} zEg`OsDt;kShFtxY83ksAR#GSvo0F*;DU4K91cpzD2aRvCOf!{-e}3%P+IYKV`jB(U zfLjr&as2Sd`&jKNxfpHaD7g|Axg&_i1>xv;%$Dgt`8CmbG4UVPzd>xjVeqcC9dlE?rFpYkvb4#b!q+aQjDpeCIvQlY{&&C@jnegr2 zc>g@Z*;nn-S6?MTHytRHy&~u_(wUljkUaM#z~E}z*LnKM$v+k}pWDJpWaZCoo zBiG4C=rC@`tU_(MAX!>=UOF*a=y~|TNOHg9l1<&uJ53Yc0J}j&@8{1BV3K$0Z1C4C z9L9MKn^iHdKkslyeHMH?A=GU3s#nTj-`^VmV8El3@{vxG+^DiMwB@P}#$%eYj69bw zksRp`wuGOuf$=-}ZMB8Cm5gp#2B(aYRWrQYhxlcco=$HsE@D$I_Tv=@%~WRz9g zQdRXO^UIPgjUpY@F(cGhFLlAqAI}0?a%3|KJHCE{3x!sOfgKApGe5zb>woWnqfpA!!i*PL9z>ae4=z#%y)&aB zoKfhStdVdhnW!EE1&mw{K!~>T!{>3OFZixC0F|NUov;etdn3E%sT?h5hyNlo*1)P* zE4fWU4(Z^~%Zx;bAvG*d{DeHsrfGtL2G0RVP>%q>87JMPwTO?Xs7udOl1Z~fb4z)W0lk8=zJ%(*N}i!}eN+EkUXW zWb@-%Y#xyl>lj~d2?e^OE!Q^VPLnOXS9EbO3posY@5%cLJ)c)KyF>vfjh9&MxVEov zNz3FUr*obl1;<`+G+s|rGhHX?XgAog96X(MHVQJ|X<#KidM&Rbqf6(>_05OorGB{E zOsl8hQ$eSW)|<^O5z3OL7RT}rf}OgyX(p|eZfzFFl}q)@x35Y@?kw(Z?(SA*x)4H= zX0LcLfIw#%9tZ>=!MKcYdbnhSKeRQ|jX)YRFP=#eT^=K*o=CKpKJgPyl60En5u8aE z6_uR$k$RE{nbZll!HvoYF3%i%k=e$bS!GY{YM+xCMeSq*M;cS3u)?H^6nn`yuw)4# zMQrQVz7dVIkn;yJ8`!AAE>t9%Ikcx<4`G7*2;qk&A)A!=A!z3*<8sHvx& z7eI&)DpW@sk%e3K7oz?7R(B&M&{ZY^ z29cJff_?IWS0059Krrf3*J^1dn;XIbgyxgbNuOu(sS_n+^WV)*rg=1RZH3JCm50T? zm*x6gI;Bj1Or5X#*##T3zv6Htq{L~C*wN~NQXXhzym*w#$);=}Aub1r4aHzZapZ1S zyx^(7_PG1{^zQEJ?w>sD5E);uy`dX@KYpPZ7Rd8OL%;du+q*mIQK!YC47IO~Z<@pD z#t%I|FQJvdETmXP=fe6}q`@AEtKE~RZbrJTyQ_)56^zh0uh_+Lum-gR`-8_*fZgC? zHZVwbGT0qEBAq$C5qrv9w$P+BND54eVfvWFRw#;paiF@}ctO1&l2jHgtuzVsI9h4K zZhAElJ~el!8a8P3>`^Qq!6+V9tS2pD8YI>Q9?JlQ0GVR6)Zi3Mk2^P?S0;fU6oPaY+pm**@SlxK$$C4LTq+NS0m>wEE6A%IDEm&`Kjk)w)FB4mwkcDuXSlHwo9I`mOl|z zRH%s`RK)x0@-$kk#ptLNrWahl+qOE_)1&0mSZRHB!}8PW+@7f3Bj*d?Sp>x>R}DqAiOY&X8X4vInL(<3rRjeWmb;)>8s$7?EH|J4SB1H&b2U5sC-9rS zAPZi)B|TwI&q5cJZ`H6s!5kUoJ`tn@>R}5!4Q4?%#~X758MVnPeUS3~GhUS`_$aAL z0((Fvlm8c~lU%=of}+8JLK;PJf_7s{Ne`C>Rdh(1#|Wi7YxYmAJ=1bZ-CQwqxyY1A ziiA`(<-&cwViJig;iuEKRGP6-L3|z~n{s6i>BUs~jeFT;Ys&Rd0I*O|pIIH2hw&$h z4P*0Qrp+vWXf+A&Q@ahuBFRgmTemtvt?gm07yHUH$@Tl&p^JaesL-wp7hO0evMvbh(-hWkdp z$K+&}tA>l)C;Yic|FAsUK~u@m=-c~jYdCXx=l12baKaDCPjBzM_SLLKALaNm)s@Az zgw+%*tlQFAU?lKsBG${`LGc*_y+QmW+=mHb6kFY9_gEb9$oH_j`%p}c-$gPEP9^64hxWzgy4@(W^X)`7UKYCaQ%b<0Fsap3ji5p-ovO9 zSc?Y&fyBl_DuFUNF@MECvG@SGn+~o<3Th@J*@|Rpc==RA@Uru*sQmGNwMr|S;S7Lc zffWb^?;^xTbrEj!wkoTI1KwR)pu`gxN3kyK$9x%h!lrEGBg)0ha+nXfgVAHHq8T=-%3 zS;{uS>;6*v(eW>)&JML#>T{oGEqr-Qm+z6}rGx}fucb9bwPYidoE-9HVeHD7#ODBp zx-H2To3q=f?1VLImvIrmBV|n5{9t1el%?`cyRg>G-? zCen8}I(nfW zcn9BEF@CdkKv|MhfRuRNQt|2T&a}F8aX;nDt4Eqvwu{V@h5Cc?s5Ux{kYAZ|lc;*G zc_8bjtA!DI)mUpk0J~7SH?4L&j(vpmm@|>>eJ3S)EvZJdHNo6IFz7myQFkWPWAs!6{#%$T#f~V&XE*iZ1)c z#nDX?Zc%YsJ8(3ZCcN7>@-OxrV5kZbG^_cAD{&i~nlnmY-G0&QV6@v1k}SEtxHHs} z9^NBFkDR?D)`@?|0c)#>_8^^}sy4s58-9FwWy1Q1CQo^6fvL>!W#{sT!!O6r7M}7f z*P7IiowigQ38ZJYC`>Ed9X_Ic%=g~jU47Cg4rev6jhb?J%)2Pmzce+i@dz?a9F9vaD*m&Yo#R_i zp>(p*HBUGs)_;KX+ue)a*DIeM`MwuECRT9`)A;=`)e?+t7w@6)T)H@t;hWt`RpIn@*$S8$6 zgTt*xGH4}w!}FwU<9zTuK|COv9tOq6c1xYt8BMQF`UO_%TP^uK#ZQRwhXKNJd` z)}+9<-(goZe|_*PWUH{)lK)@&bOyjV6ZEU`a+#{@4}8+uY%k7KO}ARjqn_0kioO|1 zCm`P1*|rO?v-c{9{ynp_V>E5}WBWs;=yA}dpurel;*qx6kGJ=&fOt{fj@;Qj#rGxx zgI$RzKzX*Aoi8fIft6?r$q0b#(+u^l|MP|&3>9^XezjDJHFc9y$Gg&xbxsuA59vQ?s*R2wYwS}d z*ff=1@3f@WSQEN^Go+qQtf#NF8Esd!7FMxpdjG_KrlW;57^Q?A^6q`b{wGyOxB?%2 za`UOji(#qdyCOnLG4vJ52oH*cysdeBn->pp@niH2AyFg>?~}LopGf)K3dB@}6QYm} zZPtW-$qqzmP37aPr`cXwhDV~@i^6k1aTBVs3Nbe{4s|>%UavdVEjZB9j!q$eT_Sw* zg4-Lae5FHk<>87pw(b0MC-nX2*Xuf6TnQSZYVHecLNHz0&g!%X&Jn4>s~k68A9efTK_aOgb4bln zt%m!Mr%I29w@fECcCI`)B%irWYcW|7oxhR|Fed_amYO8o-R=AxXNjGcb0G50 z--*NrLUZrrn%{a$*q@B+A3qf4KQ} z%Fym)?fm!OKB6ebm?IL1B1z9a%L)&3=yWKI;|gBNLWXAuql9 znwL58GwqQs__;!iX^qzEKX2H=Pzk5#S9PRVoe4PIyeqYN7*S>zzqfv$LAtSYrbo|~ zc(d^~m+F^H3?$Hdr1IHGG>nM0D`|aWgzJ7zNO@2o>!oQonr4d|5TTqOUs!y)O=*i? zrb|MvcS=IfS72opUGux)g}7O*$x>&Nu8qSh*(*-I`cM^e1S|O?=$P=~CjfF^4cP$l zJvj5)>Hc15ag0a@f8Ivc#BRgz-Az>tXn0|aUzn4u)%gCs< zK4O09f<2t|RJIu+?QfIIQv6K6k7YP!V=kLEiV4cnBqN}-pl0`kApy+;bmyQ@a#%Y% z#AGJVMm9TNGwXA4ZS0B^su`$&(7*tY59*x|m)r~n8z7uuB_~HaAY-H19yQfFLcgGh2+a{% zvV=l900ys9N!o_4tL2}9P5^jXhVGG+U}d(*u5b%8@;Le->m?lw`j#WMX*Mf`9m|Pa zW>p&!gclZIp^Z46v}^3m%+0d-{=2i&2g@)JP1)3pMO4d=DZo4Z@9>SQp8vF=$P?mVRfdf_Bz=x}y?6qp%#YQL*zPGnhF7lB0J zF~@*))%5F({G&s^5_SlFf>X>da`9siJRmL+Va4Ym0O2aKk=p=xgvJ}vFzpvaRJcr4 zThr6yZtXi&e8)F>VOF)N*}osg`)}vTicpHMP}^_LU8UT$48-(p6>)H!`jO)*qJ4|EN)d~Uqc^WMlD`)oJZyRS>-$HKo^LO#(Y}VM=+#Q+ixS|7P z(cD<~&1EJ*0a1Z^*t#qR&^QNiKqY~ojIu;}V@g7VFfCzmo!GA%C*$k~=5Ew|@r4;o zgq*y77kB#T;dUY07PdFeKaPny+_1+IM+ked;Vo6-X2hiCGd$a*&(~g=am)F~g_0?E zKcMU9qoqw(j7%l3O^p}xZ^ zQ-R&JUR5eDCA)}yj$KnZd7G+~*d)Vvf5V}Yfbn8Ef>$eZfH@O@MGmOnP;&(AWTqRSjAL{&TK3N;MmKMy(c~oUU*GNJ>gW z-Qr9pSfGgjZhnpeEG1i|4$d=_mhI=k2_qE&2yw)r!b0_4 zpoicg8Vq$FEQ@n3hm^Q5I8qvc$xq7fW)#g$1aS=_yh-p+%tH6GOv-Fu&>EUXQCj-& z60vMxi(YxDdRey$$&C!-LQ`iqB)#5{F$t5tPBu&%Rbt;SktZSYa+9y$I!oGl<`UPS zNF>(sAD=#^ezKvc$7tKopx$csY(s4-fTtj^b_E;JYVn~Qi`uy{;J0v#*~#YGhmi;5 zkNnelX5o!Ti(|@PY%?VY+wuPEEX?fhB1Hi}833jS@mmV+CI}sbu)jeM;7i~^f?^4A zTq-1vy88OY2x<6ASPFV&@i`oD6#x;-Qruht0VjLQ0U9A&bv(>aNHoFnU~-ArJXalG zDP%$CgcMs;LS{u!rNk>>+)>V#4rMIyg6eP8NI9b<+Uy}woy%{hp3pJx9`g4Ol3|pX zm+|QXspY|uQ@Mxg1xL|(3V1rXH}w2?7rVYWIJ?^qxrcTOaL5XepE9MCcpiWGwr$t= zCf}ZH&XBHNlWkI&C#ghB#54(?q)^5(&%&63=Y7efnufVHaxhsb0|mYBbit}=Rk`5v zu|`kwOFEl`IZgjr!ZAP>7AGIqks${X;1F(o$6=bwf^j+ewRQ7 zJ)R-qk8^K(Y^$R#5hY#CO+`uvJbVajpa9%rKqs2IU3`j&orycAPC5ug1QG=5#H76k zg|L;}- zXAQp;dUzo~i~|w&lp)tLHuO-eGJ~~=6nUmSuy&4JzJo1T^!W`AE;zL++OiAt#qvE< z#AOY;GWYH!iL;Ca!{ibvs2|h|TY`QmnG8_%FCK03nRN7D!Yc1}yA%@v z5FEgfz(H@?GXPF#JDWi23A!FAUIr;{0vR)aB48r`7h^*a6dxVBA-i5k3M*zZ@@zq0 zGASJx81DElX#WPNF8g`Vg1O#HG4^g zR|*9UP5FLbRG+6kaX@@qThWG7Bge>i_N}uH=?#(9k@}&R)>#*Qr~Ya`xA+tf6$bQ` z6MYyD!gMaB)f|eIEk|WEWdqY|k@0NO60v>pvA;-2f`Wc3iuhKo9sbT%v3I#x4y-&6 ztsN6C(M>NG-VCgZQ-WG6>2Ip>Xu|44w@wL+<}$g;E?^OD}y78E_Co_9@ic#r znk3(7b$(3E2H_3sR*(aS)8LPjJM!cq@&&Sr`~hkJ7TML+HD90i2@Z11Iiz(S`aqi5 z&xB_-`@Z~s*sppc{%73*)4KkySIArI2NsS*4old~v$l2Bc#LFKP1(O5 z4)^R)DBF6Hq*7E?8uuA8wfz_=zO6Lj8~X2+h9~d=0nlMo^sHpJMRm~mIC5Mxday@u zHatEhzeXcwd=7#;c!E2z?`oEBDFP`k`Ofr zY9&d5?42f|zy^N}>~@i)Wq794md!iI>}+u(^+9KLrJVVx)%4&O@p=xP{U?x&G_ zKsjL(ZB*(!IZPB!r~mcI$%HYf5)lm>1(gnm@n^XDAjVjR09Q9o?d#v;0=NIv|8r$n z5GgIy-T!9^KY@q-ak66_S*l$U9QCb5oMz$Md0Kcj2moLLfRSWNyYS31^8$R%a1v^P zGOg-edVFO5Z&Wrm;2sKmCe?nDp8~=)ApII)4nK7)Hvo^0#uksy4uWt|5#gDubuL16 zpdRH3665}vMPk^hRs{}^;R)YL#C+D5AOBGwq$|AR7#BErMj=S1uKvMZ!jQ4z`BP0c zHpOAK=~kpQZJQ)bDIM_y4kL035}c1;=D?V&oW}KWr`0fOb-okJ+c$JO!FKyU`%kxx z2_t@A3+AjYM{BBhEF4bAd5eQy6qT&caXO3i8oSkMs9kR~-#1&|m!^S+<)-4oIJauoE}MDA@>PhVwt~(-9L1*Fyzf@ekuNq5!S<@z|Ck z2~+6&RthO}bl3suP(>ch?J^vhy2*k`U?Bl86SR6ASWpy}Qx#56T%K&{4R2*!N{8_6 zUIK;Kul3HCa{f4MmR(NcQ)7GSSbfh#OJW^{IV$mmvaJ2;{A+2;AlW`zQBq%KczhzX zZ5~l4IqJT;{P@#mBvoOS7XOD7Q5^Q%X6Kr&#Uple0l)L_^)ueG*Ua;p;$FozdpC64Lc6U22Drjni6qOVY5ECddiNAV^ z=(Bh%r_P<0psEm(^w-={*{uNVbd; z*yb@JhT_oS$n0j>ybDDUT^W%Qy~BTi0n}{0N5QzH8qbx!pwz^?mwE_!==v03P$lwX z7Aw)Gnh#}jjfqb}x=q!exG#37ES?%?e!XL0HH6xx?C5k<2(0+~`9=vDln!z*-R7%& z{Ky%ITiNn8AtRT8{f|M!=Z`k!C*pJ)oxwj*D_lp;Q%B-`Avx`>3lQT{Rdxh5i8 z8hdCk=|~uRwp7INdVWfM=^?F$j9O@*6Xc<3e9(kg#nz51rXv)JG)~1W$a%XGzaoE66G^`y!y{)Q2XUvl**o6K zE9+`_AAS?%f*F2$*H~NsE9#)oR?AE!OH2RLEJ`dAfM5jjkpfon%+z>70`4fs`x=56 z^q+z@FmzcZ@-9L%P=(fMgoW2=Li@SS7^2O$y)(C z*+*pb4+Mgl>68Vnup;^Rfem5=e<3pgElxr(N{82;MTZ6#Usj$8mh0j&^Vr(M5Po%8 z#oB$H@p?Rk&-4|@SoCx3EjheWVejvhK`AUPM3x0= za*j_$Cjw%Dq+h|-tp+3 zBx}_xtv4n_1FvXw7w~IX-KG74<0Y0qI+A0~S!9NjVD&v+J>Rz6r)+gvvOv!?Z57tk zMQV5=q3S0fN6PBj!pwa`8kH>_pS~RYGJI@n0y?F4zY`WLmP}noAn?82Na-d5C0 zBV=)UhD(LZx!E$QrZ|e5K{V!6!2?a-1Q!Kc6LkdP(HYu6u{?z*B9#%H3`uYrz%c$( z&=iK2{>6PNBo1EUbMD9}{f-(%Q98;v21bQDDEotuY44Y_$aHnNtjlf{nY3#&6Ko|e z3$&umnfZEchGS3ILkhy=%5)dG$==h&)uk#PWJ~3BSor!ZUXgqpt!GfuGWbSimHeXr zzUT~k+-Mjiu5IMdT}Z<|Fr=V23pA8Ps)Nuj^rT1&xPqm}FEm%IsMMUF%}$N^m6z_O zNWcMm?#lMSHo{1?MME!SL?}t-O!~}ou*6(sClW25g@E%1@2Vj-3Nsh)1FI9NwGcM^ z*CEq`9EJztU7|7P%~I1r5kM{^6~_5>$F zZ9=KBaiqk9l$?oZWHBXxR)y;T1V|>ju^XwcV-bJH_OnQ*Qxj!L7%HJe(TBnLD7cLa z!3^%LlfdX`+>Pf!j%42B4Ix!B4*aq(SYo_m=vR_ceR#l~rW_0Nbw?c|6P=RGx@gMR z^@M)Hv|Od+q#65~-j=@9qwVndynYwkc&sasx^Q2pZQ=;oiw$>K$UA$t%YQ7d2@F+t zgz;g=qazYY`^l;Y?uTmfp+<=+Sp!=~maPeA{KOSLxbAC}^>iAZa?Hn0J_rnH-4e3_J?FS zCfz5JorrKQX2T52dsGFowEh7{lCfa1R?`+j4QWYu$wpK>F${$=D6(y^u>BUv?T`XCCZUs$vw_&u;)Woe(|KLwLAO& zep%pYUt@B}7g0ZNMKqMk;~n#yDcSy@vinaUjcLOyolmv&*R@OEcPW!x+_L0#o3Dfz z*i32{P5b6(Sj>Z)`v1^65N~8~V^%)T7RqOT&mxpLbhZ0dSXJseJFer~@nHSnszEij z;NU{U+Lp8Kl^*OD(N#e6%awM6(M%wi5v1PDv=+sdB#g3(@8h8p=x^jnNmsKO^-X{5 z{fODq+bHT%H6lE6iOpVZ^^!fGw#PeAO6$MqQx@|>{=OnCN?5eM&P3w6*va-DLu0P~ z1CuA1{{-;NUpXeVy@7J+Ek!leERGj1P2rGCd9{^Jz4k0(5^k;PXNsE5FO*Cr>xgBh z3m@XrPdE7N^1FG~%h=y(j<4&vIBqN>9WvI7!hLa4u3b1M7`3@nfnUsW>nw%6QNe?|jT|HA zln%M*UA_H?1S-NTndLO4stUDJ3Chc4Q;MmAPVPSZV4x=f0MoKZg}x&Vl98i!g0Xl> ziLq}t)sTP|L4R&T8q~v(*)#I^@YS_mPIYo#RuuPnYOa)*>jw=A{9gnTq=kCINIuQ} zsj0=Z`UhERWd;>VgB6Wk3296-wTv8-U(ysW+q*irNycn4w;yLx?4K`#b8kX@7~k#v zzSQvIQ5*P`wo!af!B(w@@3YA}tCP0OR%pd3k9}q&vyV)bd5yFRI~BAW+Ol@YL7fg| zW$!Gy#71h_9I+)kuLwK)H&S8aaVR@QX`2}SJf6NPOV<$q007_0O2t8j5H-Xx!U;!l zz?q165(i+QZpJ22A7?=hdTF#m#FDF=*fq){TRGzP$v49u*NXSYev9NZ-(ZxbQLhtv z5Yu+~)3rr4Ba5B`Iy09H&l!o`W$vL~YngJOF%&SO0j!k=$sY^ZCe=wOr~d1}-Q0KJ zLhKJact&LExGyqF{bWc5d361HgXxuoKIlo?B%#EaHq6{eogc7`Fe!$s^oB)#qNJxx zs=ufC2@jYLZtpg#P^filk&aL8Jl}ZkYerug-OyaVcliv~2qXlVAWmEb~ z=J-nNtRi=CP2cJ$`%$0XY)9n4JrCO4_)c#`2L2K~b>Y|6c(!R0Gb zjJ?cf8(nTYG^dstI#F%#G>ANdHNG&Q!ImL-;5~9o&)I}cg2ptN6W)v1)T^ckhc1Jq zF)Tuno2z00qQoO%R>}*j2w>_t=avYld!w<# z<@Zgo>LDJUxv2wvk*Q)i55t2j@Kl0VmRZ8yb-AD2KjV>&>{~?vb8#q^^2Eiy7hMPv zN{r4S7-BcZCs3qeJ@A$8Qgxc2gY9RhuvMd2gymln(0;}4hbG7EZzhZ3ylKmn)CIh3 z++rV=He=CzR#K(=HH38D0>i(+9C`~T0{gOsktz_hi~1T<5FVs&7|mtg#8Q=-q3SUZ z8aUb;NKXIFWl)@`j^#5Q6BS2T>M)8CQ{yJ9gCnLYpgDvmX7+Z7{|15yC-^l&>Y=5O zVb6(vcVbCTFJ;Z) z*DY7whRk*d8d6M|C=xrBn9JvAe8{ZM&wpTIt0STSNpJ}#QF~V(CCft`tj>_(ISZ-( z9h7{!@E>bd^ViEaSQ=u~C#t?;H_99Cw2C%kY1K+bO#Rl#rNTZl^7TA_Glli0r4QfX zx|E%mej<{%+Dg=9_El4rTPSRl-thUud2d`|K40{rkXYr!+}82AeXQnF-G7#_fZ3Q$ z(;i(r?d{-qx`-9<=j}P{G(XSiq|3-9ORwUBzf*dx``8ov-J<$~>nirYFXe_JAp5y& zxt7vz=t5>$tf$W=7r|4~k-GxriRnk2-X2+s$jZkr*AAL_r+-tUD&N}Eo-k9ctXQO9 zUXPS1=-itKxe*dYVy6`q>ltrT;Q-*P3w3{vjn4l=@@qiWAiZ9lF8GKR-mv@Bk-Wos4aQ5Q8fpycE;bw_zk~()uyqzA8`Q0#T z{g!=ozrs{uG_{y_b>YNcF&dhbIj)Dp{i<&uaytq54<3E~N^yOvd>-{c(W^A#skpdM zP(5Q)hJlY)x1`S_>xjxIXr_Cwo|o}UW@m{+dP=Awk{H`M;f+N21BU0$iRne3U&&1i zuVQ{N_Pjttz@LRK^4yi!`o6vKR`Px_VzF941>*jw|v-E+EqIqe2uUnprm-1 z0Lau0My?g`8}(W8T-f(i^H&YanY$3Iv%}mi6gbYXljB0=ANjwOt4mM7|E`9oh0;=r ziLLJDoiB^I{)ifKs*3V#3|?$jG)`fxV19zvH_7M@)Ef`~&Ul=}HWgJd^2W&aANU&s zR<`2wM?2m?2>6}+a|QgWkJiTZU$Z`nRc_3QUA+qJW%40p@e7DDs~5r;G027NP$Y)+ zUgGViG;Q>weyW7>v9-xayuMb_bIIz_3HE<9#0JU|qP6tfO!i)gR^j!x{w$S4Til&5 zfJZFl?mm**K2RP(_WE-A$M-K|sZ0PKI~n;#U_X!TWWcB{m_QJwm?W>12o5!w?EZ`! zYQQ&|jql7glv|5C+;7rq{WJM%wn_I!+MZ9k`Ubzgyk%ge6SuINzGK+^X$3~R@xBk| zFv)Q`R4X)+)R5_73^^um>e0*c&UwN_@d2A|D&Hmj#MAXlLr8aIrn0aUDF{TS+|KnK zBe^Aad*hNaO7^N(RiuUk?}kPxkuZ4hlsR!gEa}4wyU{vg%lDq;RmY1FOoZ`E*~%dU z*yK(Xc^TW}#z-<^79OB|ZwerkBmxs33B)76lC0)9Czma)j$c$7^*+_9!s#linTxU1 zX_6pS#5VM$8PPXtSDrd2{Zi6tBT(ax@eD1ish<+0;?{#H_6$PBWxOY5p9#`+&oUl|ow({wungWKSPX7FK< z4DJMX2=4A~fjkgGaF^ij7Ti4$+}$m>1PuumAjn7Fb=SK6MsKe%e_=epn?*+cIR<=L3%m$PW8un^d~wJYQ18NJ(oFI6M+B8{J-aD`>Q>nYM?(o~` z-dRkE^+%gj26B|_ENq2DJD<6YN0>Q3=nmAWSsGDJGf-h`SMFFOMmBjj2r z`ip@=jPi63H`js#&`1aMkLI9}w4i9I3<-36lG^vMtA4QP`pR6f+z)DyIo+PEGNWGD z3n6W`>o0r-gJGaH3f60Pz&CYqmXQ&0KGgKzr&bJfVH(s9Wg;;=9cx_{4D-6q(4N6|<@75m6EH}wbgPKMpg6nLnFvuyno`{Kp z9!DfZv-QGm`eUyLIlgpDv<6ggNbKW}pAn=8MSNf6G9ZsPdc zkB5}^)3cpGEcpu+Z1=u6Ms>`J#v%FS|B64!AA|HpZjx7C%``?Xk>h>i>5Hk`d?tyrf4LJ$5oI^5GA0?uQZ{yM zKQoH--W2PhuQ~LUy&|A&)U;!o8kV# z%V`J(0s#L`;!^-+K!7yc{*S&oE?e`KI3RjNCKHNT@ND$F)UIVZ_Kg<_B3%c`hTten zp_?WmQ_R0`B^)JGfCxhW(frztBf2|phps1HhRI3PuJ?eO+AI&GOe;TVXlz|MYOUl* zOlK|=t?OpXs6b*P%^*=o%#DwaMGfKK3P!*x`R?~jg?>}W(VG&2xFs~=Sciv2J3Vh{jiAtpkf zGjJ6nyr^D3tmwWjiT5j;dz496;zN;Si{J3gVXR%E4E^cPfzCpm+*9+_KkKyk=zZq! z6?mVIm@P1m5&O(3@r?%YxqRss=?7rir)~U)yyZ~8_rRpT;x_J-uBpANnt_A9;nj=Q zaTUzBpSK}yB@T0IEgX~{temayt$E%kPX1hY;ApeRem;MCAyU6QHJ^Wc7MS|q@Bcna zoKs)Vew)6mywiJS6o47xXbl)Y<~S05QWw@QkY-C30qW@=yo(vij}07w@mhc}O_wvw zdgSbSWlnmg;W?t+8t_JVJ=gP`I2u~!){DP)q zK%s7^8;6FzoCyqt(z}g3>jkPfvsqP6$DT=*;b>R^V$gIrHUMRu3>jobiC-8 zv(9%=4KLz1ay7-xlUri7t4@4`41O1{lKYa5X$Q9<&lK{wlmE#Fi{WY_C<(}4w$E%~ zxEKQ)IM1#NoLr@pF|p0A{dn_Yhpgwt`tzSj4$nvVX7UtJl!u7bDP^X&`O%3$d2oGg zz&aEE%)lS^R(>8wi*YJ^<~8znZR+TMZ|CSP`rB0`Rnyvvoo3QRIr%=lg|_LRPAI6IdUjdh6ibrxEXEy~LE){%P&`fY1%Y(&-`5AZAK^eJu6v?nFeZq>QCZ+=dGo6suLr%`;pKwm%ccWsgI zGO7L~L3waD+3Zf5t^Fg%x^IozmxKt*zP09=*eq>0l?P;)Bjoz`LcXEfaGzl0uQ`2OaFeRii=~j!b{! z6gDS#VOv~pr}#9z*Yq)?ZazGv0ar6Rja-hOm=uPb)Q?T!EAjUEkIvG@yeJynpI$Qv z3g~JZOM`j#*RTT|^LB#+XstxMX~VE#=$2fgmIdx5`^LU(HoF=;r1QS_?4#}KNt!w8 zNlQhsq{=uux}i0)p5I&tSdjh}u@Z>WhlDB~WBp7ZF0T5fuc(W*`(V0k{pm06?*k7t z{@#D5&=mmE^iHcY3qU)`?I4m=$a-498D)+l?mb4+&^k5W!P6Ya7)v*tB8@@@Yx$IO z^5sHMU(Sw@aa#Jl|9&;aIUbD>Yxa=@hV-fmx$tI_ePTR{xg{;YuU&b}(w5#|r$I+k zArJkqbSIsIqq}oFsSSKlmPk$ISfgR%K(x{}U$s)jb5*Yghm@-BRpNj7c)CM;$+In- zqx*L0r|HdU1HK zHK=4XO#5K1)c;r?H~Y9U?C{^=_6ghm>eo(f=asoX{Dz;L^H(o*I$cim1l8O#XUNAd zW_Nkczu-2}e1JDWEdHYdd|TC<1%Lm_uOz0OYeAv~I^b60d~X{SwNf9_S6v5iU*U>S zOr^76U#AORV$_NWtJT_=pYx>~>pvR}+@sS7Cp#yP-_NQ@iMXFUiE$fI{*bU@JF}~0 zH_P0HU3{{!s3Chj5_8j4F@jTWdCC}>12R;`ep}bJ(tZKBBLupI1fwSiw~u|R@?iJ2 zb$E6DKNto;++$;KTE|Db!g}IciFkbORaUKXC;aPr^|M)0pB6%gPVWx)u|GJcf4teD z!}{4mi#?(gh~&+k7y?AxQvO!R=vFJJ2+#79uH|R<3E^r?fQP9)qLNQb6ty9 zz?U^d;G@PsTDRd%IMs1v=gqC4&m%P4GfaxH|+3Oh{_|h+vj!C!oKFsz9&SV225GFtmL_X58fjVTMqD(1_>i8WWnbarR+TzA^BygQ zvE!589uD{7dFY4h8;8TT(_@8>n?I15l(P1Rq($G1Sueu&xA#5~hAN5jTo&S}>GYig^&YHJ)jOZ2g>|;M zVd+`4gYUVL800)!E&*Kqs}U%H49&RCr!;8mrgp?=XjHU7IY5NdOd>ty8v}bkmnA7b zekz_EYr>JrQ2Z)bJ8qyxL5>!dqIY^S(1ytBRVHC%s-1~K%16ctd|K&B?S1DfsR8hOcu{aAx~&u5svk3cK%#t#(`geQ@1B6g>1qajtB1TBe5`C@iWdR^C zvASK6L9$_r(c)!MHuUlI*g3m1ds%6>N%}E%bDDDLi8K8fV>~q$GE!gMC+LefvY+Vb zVMdwTsGKu}VguDNKnDGLU7%`Ew^!I9!vM zs3D4w5Hq7cC8_w^46TEcwmU|7)ud1T`1n-3mZc(PLDYgOU;D6*URN-4l!vLJjk*#I zfV0-hkRO3dOpSz(kBWkd8bQP}-|428n6>4O{T5j|-Tfxxc%*263X2I{KnxBszMIiwi2o#+*hWf*$2CN=ImR2W$~IaTO! zhzN*S{#)#G0P(($+G!`Eyr0ufq=cdKXs6EMb3*HCaceU1Vw0CqVp_U^*0IZ7>&$K>lyh2YTW zdh^@@0M$CoT1bGMvk8Z=@XvRUA(&<3BFzgkr;e>tXJz8@H zNI}X!XzkdaB*I1Lx*5Rs_f16?Ut@q~gkczM`ok01kLS(jYb}m#!q+$m05TUo!VMg7 z2}DN3X?=@xj?}3`yAfP5W-d8>7|c_UGvehORsR1EnSXz4e&>&wH_U$@H+-KTE+;pQ zy1;+%{)Fg=5o%aT0VZ_w70iJ)<1>>4l$55fZo_Heh&d7w($^HptfmCL=%ha^LKJjV zwQs^iU40D5Z48D$8E3KZu_&wzt#4YIB0Xbi!l#kR#d`xcpX*SpJAQD2JtW31H^p28CeUvk~L zcTZgUJy8Y*+AWJ`9nv3mf1?~X+nFB|x0vilRV||1k^$cs7a`ii$sLGBjp-cWBbxX> zq=Gr#iY(*6k9@nUW`fX^ue;|n>H~_tvi)aA?Pc(cZTdVPDH$_jmU)^vY_&~cB``J{%QGRp%$fY1n=S~uf@MFdl6!H<|l)qLNyC9=U% zRZY@Pi>;<>*8hbr_HSU2hzI2r1IwUI(6Wdc)(i;Xf+lSCx;l`&#dNRJ2*l9abo-lH{T0Y^%WZlP>byEYIE(H&tJX zX;dR5HIbw6uem8+KL?P3GvtC+$ibG8!gmF3WKE_fn*1aQFFW#iFAJ#{MYfqjwbKSx zT74Z{6k;j8B_StE3%xDPl2I6@1m&yt52Jm4jY<|pU98h`GEye{-!mtKpIXWcUjsqqFJjWH4TV|DJ zmRGX&x!vkUSRGQxO2TmRlb}(G(x3z_-uyIg%0E4!VkbxdI33IkE#}|N;xd2|B}n>g zJFX9eIQFe%*yHBJ^hb^c(t`cXG3KiiDqDWu$xDJ6O%Mg_w8C;;;R*gTG`+JL?;z6| zg~?7gU7EalW|%BJN;g73@B2crF{PzTUw7zo3(=!Xp#-VQ8KDk_$c<0LCL;X6$ItzB z789$e4o#gu=a!yxC)4jgb$Rex4ma7PEDYg=6&ChM2y#1+>az)|o{-J!-PI^lBsk}$ zA*2A{IH4f9vW{hQ4JXiW94Z>0^+-&Wq`K_@Hhu=DUQda1K4zsHgg>_k8Q&ObZ?-W_U#5%I|qo^`^58z;!Z9R_Apvs%9n!BEz7d!!F!s!cVJQ(>T?V03NJ zZ$7hqV#3ACv#)kGVI5b~z5U9h%o560HknpRJw)pc4y|g)v%nTx)~_rTs*S$JxE5_| zRIYFP=#s`iKznjvku)B#toEw7@yD8Av=2@S-XvblsXAo?nX)q<*qs+pU5qfPv8FwX%g-@XR6h>AO_0K?u0pw?i%BM$B z6&!WPFQuZYDy^YUx-Mlxd`K$X0DlMc`!od9SsoPV>dF)-*i0l!M$jv>dax*FY}f#| z>J=ZU)0)fHPu`Cex&CIg@~y&zcXZCYv#h=I&#S*48@%|uNALR6M)x^rxyl!#w41d z)D+|J9#WkF_qa$0QgJ{qY?85rz`>*+b)_bPqG>v|lA@`SrZHl+JOI5bKDoFFyp-`{?y_qrfF0a=Eh`Z zogKfnJh=1CK|FxMAmpPldy_0or~f{L3%+I%o2;f=$f7l_`49X2?hld9ReLc|r8+m$ z<9g>|WD7}rMT~^c5vtL-2M7NUr!#_CE{9t ze4jktO`p9$(?znX!+OTaCvMV=1(%HDzcILvn5!A%Up0joeU&32EDT&gatABYG+^P3QYKJycwLs+QUX( z=7C8&XdzXT;VoE%s!a)ZH_gd6mx^U-fuZ+AzQy#G`SM+$I!|=ue zfDB~Bw_=v#&-zV10cSlaEhnIa#@t>gC}7=25KTvw2p{6PFZ9n6%2ez3%pX}*+5NlO1yvT?^V|4F{FjLs3j%{?gM}H#um+<42z)PdKbw$@ z5*elU?>5Bm@9TqY!qt!}!?9W9BQoCC2F%HM;;$PunV$eANcn?woivrDGINcHibBaG4U+M~#?MR|4(p!@ zc$r|#Df9rnO&LGDjSAH(DS{R1NU3ldYxD1NkM_bhi%q9DsRGu~nYd~g{LR6n3Inc3 z8sVu18zDdQ zR+i3nkrz^&02wg8YG>e}Bv6Nnmeunu4ASqa^*gSN-X;=HMd2FGDXgSQ>~%uQu7Avi zOwY`}vne@76fWnTPGN(v(EZDY1p*S=A$GD$xi~*}I_B*EuW;orf5<|v*69&j1?dZd zmqKA#<8riW*pJKS-gY!LBD;MOHR^8n?76PnKMde zq{dZ+;4|HDINIkrj9sQL997;Yb1Ad${*{lZduUMl`i`OvYCee8mo1lBVl4afz&pEM zDt|N-|AQXqe@C>vpja_9=3F#t@_t8k)pFN80KheJo1c*N%nUF9LVAZ_bR&<{W%Oyk z&7fyO;fz&q?@2@O^P(zW7d@7V$BBzw@B#h%E{;sSdfT$opF%Kc$A);{FwnB-mfo+O zA~b(8Ism(u-=U7uNqqd>oO_WcsL3b7=eOv@;G<$Q6ko5Pzn3ynSfCEhEl-Y?9nq}1 zoo1iC=F`taKp&y@*0f4ZaXcTFq{B&h!ivhbIJa(CsJIJu*_s*kwEOj8{<7hD2p@)yR1SdwZJcAsvxktXtV296ywitM}5AUQjHKk^33G zey!_Koy<|M7?(491_~|~Ex5Ll8K#+ja<$aHKHX zov>XcSPZ_;Nx)vz7A&nX?wBCmRUylz&dj%&X?5oXKh!)wWl6qFU5bogtA9cwR044e zBZos8cbKNZzs80DGN^!Gj_M^+j8?_S`k|tzwg3~?EyH-zS%%iO(~zqV%K%s*cRX3V ztG%@f+6KTcx+(^L95@?*y)xDsCTI12F~G&j2W$MgWuyFzMX+|b))1lhJ%70ky=RoV zSg@q7K_IoH4`nOVy5+1&w}qO?w$!F?Wp=hzDJhge#9p}G$*y|si_iO%&&}2^!_RNy zebi2avvSLs&mKc-hI`DP*CSaOjf401+J9TDuu-lSdbPkW(?Nof(H*FklCZ<55k1KI zES&fN^wRKOy`k6v=oKW6y^g7F8d>4*U7gS z(e>zyqV4>-4fVWVzrGJ&&)ybQd$=&Qm@T@Wiybd9eR|V*-LBe4Dd)lT#mY=|-_>9E zZh%tgW;5jZi;57HkjR(6qW>nEnT~v-1CzE^BJwr<9j$=_V>;5AH%AwqA)Z@_}ztY4e51^W2 zm=?egY=2kcf=UPJ9b3DSaWeBFBe{!Q*6=(U^dTIm#A=48;%xC$`)YfYHEs=$i;z7g zl7mdyYT;Q1;|mHl4|T>Th5@Atz@S|`;{^SJ>@xdBpSSAjyPCFXrZj=vU?_tGUZgHA zJU%p4(dA9@t}*p^=f{6hY)0DfE-f!mqwUL(h{uWqZ_CnK$W2foI5yklK zAWS^;uS=xL7NXf9>Rf;4UxMsgi4CRQ*p2e0$0lgV}oONzJ>NWlS>7^L922? z=2WWZQ`}Y1ia3_vJFQ}C801v^JzFi)FwpGj>nk>T_#~CW*|@36GJpK5N?!P5i1}0X ziAMI%4G8B?m!%u0ijO09j#+gAK?6Lf4yxuqzMhE~SgR-+$>a)Tx>!CdjX(bPIHvnh zYtZ#7jdJ>#_u9Bl?@vu%aVD!X^#-S3Yis#xvji9kp#8~c5A{t65h`4UPT~ZTj|q=L z`GdmENeQLo)NVkSP|=^Y_wi+tL<3SC&m-Bq?9zaH_hW(mzt|EX^C{>K{~ zM;Z9=!9Hh1>-y7tS*&3jtjfBoUEZSkO0xFLP5R#owk{n?&&@}_7l%3d+u<|ueBO26 zmwV^8+_!si7uhy&^m@4a3=iT=5$hRa!zYORL`aDQ{9yJ0%LwSXU@jtdDp)l zGXUsULCw*L@;VF!8ArPykPH%28s&rau0W`^EQv%K{e#T{M_`y(ka&@FsDcsMUZ5%Q z?~wijV}5Gbpw)$2m=q%$h|IQ;TLLMrn+DtuotdUgL;M2t1pG4NhLDpJ!MG|cK|}~s zKpHKjD8lwM4P@z`ugfik{lbadv|t!RKyd8)!kLhP-FY&5m>^&XBM>Y(`Sk9m6neap zFO(wcXvXvcOR*CJD?a@r0%IU{X8CJ8+`8xAfd>jF_d#ly<>=Mi0k`A(b_NbW+BR0&s6eeNof9Dbe zq@5pa7PHSyoM+zGbE^L(1=yq!36GTl5$Wx87~fhYArCiW@7+nUcuQIRdV29zx!L5Mynv#jf%miS$9<|vx+%eJ z+S3`Qj+#d|p!~W#L)W0qOnAs(=#(&(z<7VCuxSKR=50y&cl&g@sKKR+g z<-&BnHHSsHf~Kx+e7K>75BrFAv5=j04x9!k^~GO`u0OkT<-_K4){;G&Bo)SR0Ph8x?b=y`O|#D-r}OgNV__Qmd#coFgYm zkw_63N?==)g*Y>_xE+ z88;yC`u0Z^RmIUFF?p)zXMxROiwl-qpCy$eG7tXPh2-rc{ASIhOQm{NjUtsRIz7qErQ z|1LeKyIYebP;{If=#L6CWkGflB?R4I zHaY2;6ZH9gBAJ}J-6AK%CME<0^{aeFE=?JJua8MsP6>`Bt!8Frhsgw2$>&5^UhWoN zS-V}b;Hx{P{q7srB>;OntnkkIc4poHdJgZ9Er;# z!6%ZT33){1sDQU6oU>tjbIe|23u>$e!Nrnzj4AJMNGcd2mVVID%r~3UWzln`5yvc8 zITn-YrR5;-FwqT2FtX7?6l*0YNX@q7UpMzYZFdScJK5}nCH~t9hyL3G>x$!@!hHsH(e2HhYysNOcDTQ!Gyz zhv(;Kqh^3^05Ju+EZQtgU6#LlIz0~?%wb7~Pc?-apdczHJ^s;4P%XA`NQZjEub3q~JC zw^L5oE01A84I}K+Gy|>zk<_nNRl7;Pf2PEGe#g1&|I)fmNQt2@5+xR?EE+>szhsya zp-IY7UTGR^oxEc@Xg-#MWNMa=+Ij&7`Se3&u$fMoSgmG@$s)*>ROit$is1e!I9`n2 zO6;W{LViEIjxd@^LvP|N>kib?S0TbiMNaojlOBQcq1?8TaU_j`j$A&h^5by;1(Q*Z zUF zOSgm<&L=M@iA2vcdPfe8K(*Hc+kpTRNsk~O2kM3bG{a0G4;HFgfMjU(PNSj6*D>z= zi46=Jrco~*SJIG7{TH-<`ID@KnVgESN2NBv+fwWK-?R>yq8atF(YC%mrYPY60$_9e z;bEEt%Vm2EQ2Y;ZNxA6O7SUxv!6dK|K`M!KLfdWl>^&>NBkM0BWHpKFOd8@@Y_S&( zsN4+-c2l>V;vps(VH9goAPU=Bz25t~2mNsCB=Eh->-O@YL@}Q)hA5=cR<3gy@RaW1 z;9=&mVsa`#IGQ}|{LG9cyFqhz3%Re+K^V+7*;rcrGjoYsDvH*R?LY2z-~P*8o`|q4 z`y0CZv!V8cEF5l=76rQ;u)F%oILnOJ3IVaq`Wwu$b1z;fequk&B4=2iohkq zeiugt@&iV6e4u%U=_fygt#WY&MJe=SbS?PzArrXGqD9(~e1LCb9R(V3g zU*C$KIfBJV?XKK6JpW~U4*`d2yYl1vspD}%M{Uuf`~hJp_RYw*n1}B$tqkSX%=oHP z@uFxg4YBG}W92hoghdq$))ncRTansi^xeY@1JU1^YGIrI-XjJ&=&)qOpjQzPwrpHmm%}$q-mi?A%UDbYYiZbhGwNr-I!?Y zI@`0(0OFd@L{iF{QNETho zv^{HGEK%#vffTP{IcI0vKKzyi6F|f8ELRKs&P#h95XwFONix_jz6BUxHYX&8up}ub zZ=(sr6?=so1IRBa@Y+TJM1_YVVUlz3nEK@=Q)Sx4TYi$#Cc3C6tvd{QDMd2;w^3G` z(jf6zJ@(gJ8`98upY0H-jRQGy=#I;!f)ka_Xa{2SKqq+~l9ehuUDtH7h$;c2?_(G^ z++~8q9!U2LKhbQZGoUoKMU2ICjQFx8v1+!NTacvYkde6gS`|kR)_wa_`)SeGvnJCb zY2w?JucDe$*=EcMre=L)n%csn$<6z&9HVJ}06Kc6JQD7VnZ${t%sUVUybl{+k~(=3 zohX=i_GeQV&a8igY?v^O{L9ei5!Y+ zrAq+tCs~-ou4@JkvBtxvPgy0+*V6OLNc5Ff%iRim1R{jw9t?XR%J@joB1SZBjyjC& zuuwVuyu(nGH@Zh@w*PkAF5tlKTycCmc>=GCSs;tTbrF}`D&@`|jN;4~N%7{``gTx5 zTL>urS_Zo;R6-SVNdps^0Mtq@;|@Z~wUo;nO55eN8RJo#Be{6);%DrsX6D@5J{mxmOYQ5Kv;U`f2O75T(U^g>-K2& zWRYY07nF?jjq~8E&wH6o-=?e#3-d9FP@T9F6gas5BfQ>qp|D@0Xi#hTP;2{!8gYgc zxHP!1-qDh#3IHGnf~3OrQOk5u+EQw5&1BT?OoM|y1r*ScSMW1jv?=9O6F{n8BokF6 zhM$*zz;ClizkoZE(M8-tSZFw8h3ET$=-~K{;S?In;&g?qx32>89p{`iu`kagJWF2* zNx`v^`V}xa({V|x=_>W3wyHGt6&wxaOY84gJ+1C~jh?b0pT8m$ zQ~P-5=H|X{Qyv#bq>r(*A$a_%({Hu%y1KWXwB+>N@^hBxvHNN{tN(IZ@@1hXo{)7a zwOv`nxU{uV%n!!o6A`RQ?fUV~=R)oC^Yz{c0sw;|9twhfZl(7RfP0v80kUif43CJD zx?xZgH3%z%<-Aeg|H`cvo8Xq+Ab0J`cy?SEkNQXTwa89oL{3Qei)hO>={MHrf&nU5 zJAx<4FDI46pP-BN`3yK8$P-FxV2e)RBr-8b%hR|u8(&noj!=8 zQW!m>$EPgwP`0q;E2!I_E{!gC(gMrWmkJpy`crUHk<2`Z_m%XlA+4>lRb8ytUU6?* zCbT=>AJEnxtG_HTapHiz(XS_4Mx2?|6H>|iUz%lXVLKBY6B36|0aUDig z#Kv>{yJ^MY8fUsAe%Ob6GMV~3R1G`5P<7%zr7(SE&OVC}aqx)V_O2A8%5b@PPUmhe z{v4+ioRM4ab&UF^H=$(%7w5zqP8LOHt8lOQ8@t0&ET5Ok~!B)CWR0sd~ z3e@HeMHer-6hpVS0lJH;NCf}I6vT8g2qIFxej!HJm7IZ-7C!8#(q0x;uFiM*>3FLz z%And2sk{bo&&MbZPfn!hN{rSrGnBw>ebL8f3Y9sOG*|?=*PJGfuTIO|wBHC9!5sz! zpvdBR>AT7z7zq~2sPQ?UzTXewGsBZ=h&_xR6_gcze&MT;tBqHai;hWFBFLACj3*n3 z)K9Wm?z>x2tHtE;{4WHI+^oLxGnyV7BFQh5KNeFWBMS)UhJ_;twk^o}^wmJ;T4-lk zZ&+^Kf%u{mINYNX_$mqi3^WHI(Tg%WqhE?VtUVE_WDuc`Ai1^4G&f+KFHEFB0v9>0 z1@j4g^Xk8`a#)Htu+p0pY53q{zI?P3f>b8F4F4Sp_tq@XVH1tA0t&+tm zwb2lj%)R&7xmq^a=}K(sYsyzmE&qBMcJyC3;aGG@{Q6n>Zw|{a>ZeJuKFi8 zb0HBrZ)tRMjaX>;zYO5N7FEn!P#@BB>HiOH3&e!<86Pv;ytQCV$yhF~n%>&)r-+hq zTt^%+LETP*PbASH=~GKLt@6$g4G;Y!A~7}66K zxE?E{p#Q-7M~ua*@1mE1$^Q(r<4+p!`31*}Kc3<^zD_OCq&M{`cOXlsXkk;2Mp53B>9v)M-to#8^XH+ZH+W)K97@mQkBaE} zCI3N>vR4QAIyVE%La4qi(#(&oi$Ucm_R0i>HilX+`C(07Y;_}$x4nHc+1qDiV_Y6VKV@1@nn;-xshVz z7a5?Ew@S)8{=JZL%0-r?Dx9S-a^KwP@45C)_6%lRl3`tE9lbG6o~wyy6ya?&Y?J5~ z+_sTcH_Ybd^EvlxHWz0ic3;$;+Dy`muC48GvaN-tAA9*#WrXPCqpCMQShrz+wUD05 z5%p3NO4-$?qVDz{s^x8SuP_j8^yGHG`TcjI$_#+~Q4KyTbz=nD%@f`MQ2i!ERS!TZ zgaX2X#mH^yybZ#O?X6ogR{X_J2wc(QLp8}r&hiz&p;bY_`fa&FUiijAW3Djh~D3|@TS!IDzwkSBbIV{$N z?Qzy?vlu0|6#O9RQrWPF>2R9=F7^}yymm_Ta>T^;eFvc9?&Ztk2q8&-Y1I_?3zs9r zJCBFZ*k-S@wBTdJ(at)h0tN8faz-VM|4{R2Y1ZKT@l3@JQ`m!&mQ{g(^(YXGg};;a(%<%x)#pQqQry6x4`xcN~3U)$xgckX3T0oLVIPBIZUqIMS* zEj83kGFn~&1`CJ`7C9YZ;X$^yK%15!vGhth#vp8?q(%3D+0i3y`|uGndOPyxA8LEo zMIvA?#W95t6qLkr5d2{?AbnCe8Am90s4AKW=xEv`bmyG@@w9?QY{ zs8Zp^x^5=l$Icd)rk>kl=Kt~BuKh`>5;ZFGGmfvg?O*U1VJn$ragkqLm#Q*;ieQ4c zdPz&RJlo+IAa3u6A{{M^jA1VM3BaVaW};h)Cf$b!I25FZS+0c?TvSA(`O@KT5O?rn zE`KlppiBWb2E+tKgeEKL0@xT$dqO{=ngUQUsfWTO=g%|(#5B%0`(vVE;2u+%n)=!JEUX6cDnPrQDBri zPItaUt>kMIH>Tv~`Y{2<)W~vpK)I1QxZ!y;H%GSwIhd{}4}py~K8^(d%ToWe5~;VK||z*qDa_<^(gx z=NYD6b>u2&&zrZ#;0*--3s;8#(&XH?m390lyp6VHEhVKVB25`w4YMc=5h=uax06qd zY+ohgVabY_<+fI}CWVY=GrAmI)wPJ;NRjtH1Rql;&woBY93;f4;Qg7SQ|-fo(EDPvNLZU7=8mzY=h^xC$Wzt@vJ+FY|5$!QqJ5liSf1rQGyj_iAPrb+Y7VPFFw zJ%BFhKtfzHtS~yWrngBp6bLa_?|@hoq+pt;N=tO;cMy^itA)fsJckQV47=6B6&py8 z3MGJ8_i(H3z~u{@KVRy8Ra^LE#P3w6$mpFzk)C{0Lir_yx24)5=HuU6&CgP0`@h?@ zb0mnp`>vUVvNvNiZTea}KG|U(bT+6QWv8#Cr`IrgZXCBMlu@G=ji&lkYLhhqhWtD#%2PXN|9{=RS9gcQ5IDxmi8MGhu!^nVUZ1aCGE-WOm&P>A@<4 zyJ%oI_`rh!0^)#1clCTNE&?DzoXdQWPc?2x!dy(X&NdP#A0i2m0+i0v2bU9b!ZMz=eAMa%3i_kBOAjZ-vCK3W7wE~!~#uJ$|^gDg>7c+9HOX~4GG z{-m}Z9Y;8UU2pWBoLaR4C(Y~x-G3E|?$|;Yjq87mD(*U65XBq(7txql@%(tln*8(G zy(am{s)jCdhKM@((|60g1X-_RQOl6Bd(-pB6u-D`#(pt?@(rL=Rqdyxb6OTx47ewk zlU^n=ju?O}TA5bo0p`}^)j{H@;kHMTz-3(4!k!)^;(E}KKDZuo=uSl-y&EmOExb2L^{D5RIdNm%WcL(inv><|AEGr` z{q?Hzgd)oEKZ-xrr?0~Y+z%49>ZmdSOiz`YKriLFfw1)ha)e%Rf5?dLn)eo89e za4;TZIQ>&4ReOBxAD=ClwZQmJHg;HEAg*esi zeH09evC1l!iFWT%#mhT|yp*)z^mo@L!oO&dEq<5=oDFvf^0OJw_Qm%WeJjp?NK+SK z!{8}Sn0xbiMAFnT{v-R~SbIVJ^Si}oIBR=6w`*{mk(2|G;fzw_7vWW27U>@IgW#yR z2<1HXU#i(P8Db`Gzn4G6>Ri-3`BjSZmU)J#N=b6rx^3T&ev{lJelM=84gmShpvdEj zq@$_+XQ&9J%;P&AbipKrLcBZ=Pbu+zGr2_rZIV;!xT~=sxVE;8Gm(SEL~WwJ7#~XL zUP=_E+$AoQ;#MkZUH^~D``w>}s!*$vEQxl%&aNqxi7Md=IzD~hHNQkzlQfd%zK65) z$GY{s5--2vq;zB!yW&mebuu=2-iv{k1=(#38557D*Z3%0G{vb1s*|&_@Czg1b7ZEq0P&=?XIUzO~!2k^ZiU=L8!8f#o1twSkNSr$c5H%bt zZz>~-RMrur$|uvdJ4V#$&Ic4s%aXyB`JH`MV;Y%o{r;<2KBGLV6e$ZyD|4Ja`_!=L zgb~LLqiv+PDnr`_>qYMmrrss-?GtcXpT_7o5Ru%9lByS zph0`mpX!j6o0&*V9LfBGFU5w)+6Rpuqg>ROjcAE#&aS*P&?HXg7!8U44r;4kvRYX>2#SZAz-86G*IDuu{fol6cvn zRT^J6Ssn96iG$$-t}`=RURn(J+80!T!C$7v;CL1n*ZF!2x7jwe#KphG0DeryVBD^= z#A=<^g)ZS6atU4TtsKD2rf)$>!AyY3hT$+I41im)K81uYe~mX6CyuYgmG3n{3+I;f ztN%k}%cQ+x=J$0|_01wl?YJv-M@D!&GXeI4Bc>Z?GYp;WL_%$u7tlXuKX;>yA41M^T!CNAez za!KXwy{4B(98AP){1It~+%rBL@->kDAtOb8gR4|^eQU(fy`;w- z0hVWYWGZ`3o-?~`O=w++z0Zr8?w;AAoU57GjWVb7{G=xa;Hh*{26W>-6^IV}ot(AP zwsWsxExAF0Y;%pi^H|-9j83h1%^NzRJ{9uZcTSi^`4Pp=ydQWkDxVyL=sO3HW91tj zcW`fR3p#xWW%UmK+JmhD@hLk@@VLb1Fz>&f!>d{dohKqS~yjwlxUC62~G zMQKLx5KJe+1f071>h;XWq0n^BAQQtdcp?DZ?$>khH%S`?NFZ*4A}=nkAOzI4KZ43o zhK7d4OQJ>q#w*7~=c2;q2LCwV=d6VCQd%e*zY6qj;WT@pR8S8L-uY>%oVh7A~DK<}XM!q0k> z3*WXyi#r+o_jCZEA+Cl(xkM}jL-IOkP7TzV&XiI|ySkX>NOYEe(eQ-uwa(N( z=9@j7t3CLTTIA}pbUvon;?w{w7h+LjGv<(_!b1=W1kdnm(@N<qtSCdwnY06>FkBaU{nk4H>Zk(%5vFR3BfVKP%F1i&GFGoeLV!2PEG(g8e zcMv7}*OEsE+y$U%sQoP$K2P_)@VAihVmw1p;`;zSe6~SFdi~?n$ZtOc%gGl-1&K<9 zF(bSK+@gghZbTQyO4B2;i)cwGwc$%Kz%Y9tb|_0-`#mB#6T*FjX83~Gsl+w=-Sk_; z-x^ogNn_ev@-g;E@!6;C`oG*beI*{hunRJ@Rx(I-zuGvuy*8)_683GsYO2ag(Y-46?MCy%DR-6Vd}+FSGRYX{G*lQZ9>-Djuta8Adu#oSd*2U z%lh;qaK|G;iHhTgj)xF3L+o~Md`OCyusr^k%OD#)#+YzZH!D*necf1@RUk?BIHZ~o zjcbJrfJO!_)zNM=Qc9HH?$Y>%j1b?y&Sm}Mpq-X4Zm~GEe-~FI`jm&WwJpxc7-T~q z`8P7SmWF#!agRtptuEltci|9!e_1kI86cavUqve@D*v%M&J540#nb%{ajrk-K7=~I5E`9>4BKn@-yxFNr z$9(gfZB_R7VKslmBSZKY+qJR{nwL(D&l}o@LTxfTRjubJ%w;iUUbVgUCM!*bO40+A z|96I`{XB>no?GJ8GKVQMm@G; zhfr#}DSLFpsZ~hl+L4HN)kJGy-9)5mWI1c_?d>@QE`gN2XDo+rdw2@H`orUgl&(Al z*7Q9Q#8}(3C)bY*K3np)Y4RkPvM9kFH9FfB7*#T_a6nBulpd6`S0lAQMQiueR>GH> zxKdOK3_b1eSL_5&ms$*@M0bSdj5-(JIU1la%Sf{DXj44Y;jqV76XFTcrU_L;4wxIs zLElSynRi+EJvYMh5aP@UqTI|yT6UY?N|K_)n}Z%; z#BqQ`T*%U+Ln@}GQky%+14k^i_qx|C(7NI$^eCivKAG|RMuH{9MdB$Xc(_UwB=dLv z9C|2B|Z|a>)%iP`1QdX~XI0ZQfHnPh8Q^s@kVFRzUUmMsoadP=Qs%rFi>i zhF#oT($ZAwgRq0dIHBVd#CuSNqqOpps&n-8!MSNYW@G0d_d0Itu&AZ!@z%ZX4nVr< zA#lRC9Jlt!=N+p5|{nBIk@Iz1SL#XLgYi%V0&7K%hAHAU^JA<;Fm+Hi!& ztigwpyq3{A7krt9R8YFlyKYAU(S8g^6H;aAL1ubmA;LD<=Ql1n( z1FB)~ph`N#4w+UCK9s>YisR(WjTQ`4yClA8+65lUqlKRdI%L~KJB33m7+TK_#+u9J z8-hZTvR#s2wA;0zzf zG;D}oJBr?t&G?;M**G;Cg6HiOc7e-TNk1VPw0VM=fk^iaY@_{XlD00R=-(*aL68Kb zK0mIWbc!y4OCd8V3@$ATOpIV6B~!`4eZ&);CF}_w1Ql%=>jFFiQm})?<6nq8>=E(z z)F2`+5qw>G0FoHl7x@$dSDG5V0Dl`S|LNj1nURj|wwLjuCa-gMSpn(2K@k zz-Df{2B5Gv{L=LIu}~>IB^g!pB%zkLWYVi=3{6b1iz(O!z~`t2ttdReM*L|xYMgwn zb4Citv8@CL<3#0r2y_qr_zo@1(AI-ceX?rc1;#X-g6zAV zr(z!ZCs}L66SnmKy7GVT`#)LZf7R!p!_*4B>$$O0yUNg zbRyU{sWXEJZayd`_QT0ox7u&kaKn3L!a1|gJ_F1lYH6(dFWZ6NT2|?W9s?H`PygIp z&8OH9sFplv{vMfw>j`S5&HX&OETaUDSt7UW3Nb1#rOjH}8cJL4ORwxpk4VeCaIZCA zzq`A=@BK6OQD*$y|L)5x1J3`lou%>>{u-yBRCAp){*V5&508HyZ|)yYAL-gYuQ%EJ zxjm6u^82vX5-VylCtO1@)++k>vR{G5L~nk*AVq~KQ8n=?2LPbSMnE0nAu#XZ9WUm` z|FRt@tk0mA;MwRd1OI|xPmlsDJJKhMPl=V8%OP+PNKc4gh_2Dj&8@>j(nv4Y3JU&0 z++fB8B?iCr-8b(a&nq?R2NPk45!i+_s(?K{JYUxLn*D#Z6NmtyJF)YHV|`EPAfjkW zr1LL4MSHm79}F2RNLJ+3RzNno*l3);D@tBm8MVu3c$iIZVMCe~4N`O4WUtN63p5zw z8F##veC2E)P!~2^sTO&h=tC z=LV%^HY4|)v0_^{BR<^rei@xBZK>?suYVP<)Q&~htnwbEoLbD0J+?Poe*Eq^|J$px z^M2aC!^>}w+vv`Ho&%n|W)t%M&wWP02-l$(*E?M<{?$*0cz7@b0RGJOjgn_5-fn4i zJURgP3D?<*i7nTMiHpXpr7bM2ssPAg=X;JK@JyDK?-K^X>L$$t7YM+_MA%ki7IXz$ z-S7;6HlE|fvEq@`V%`JT4Rfl8$Kyxy(v#S37GJ2~8ASuMGIB~kN~((9M-d^!ocD7M z#aOj`KQdEEm#um`IkW)X4JAz^S{>V+l z1x%Cob1*;s;#qQ@_v+30&PD z@p2)MzHP4?>|7BFF{|3BaJGLZda>PFp##(Bj_YtMGM|4G`7+q-MQ}oEa_>dA_wX3= z+egKHxznb0#QV=Xzb_*9cb&KQdk+nFr-)XO$HM{Q`{C73 zTfQlw<5iE-W_7RugR_AK0CRhj>BHY6=BMot09q_*Zxb@<^GTqb`;olfi4*$t0PY;o zw_SO&eFosb<-(AB^-!->Ul;nQB6JuaJD`gk?z(zYT}_K0Ej+cwhlU0M24Dl?&GgO& zB1f&i4Xea-P!DO3?(0orLuV$wp^j4kZ&+WNmCWLX{SGKqj%Iei8xTcZ+1XSW5_d!( zwzshH`2vD4aM46jL!tqsY0TjuP;XcuiN-vawgJ#;UtV_@v&4Y&B}8^w2oE-w2E9Fw zj-wP+nKu=Ao6y{iI)th6q!@|Psre>{4M2&Fg%;C&GENsz-l=^hwo+tNfpy{b6A&)R zx3B75hl5>sFmBx7YYl^ejKdN|+}7ES2X;5w*ooGf=E^r%LXCVRd;39eH-=4H2ihB9 z3Oc^9z{t;DHw|NZ+Mk=3k$p*xz;W1fAvM@n0q;cMHqR$t&&u0%|ML@}nBVK}Uy`$T zMyp5CwmO_!9$%OIxt(|5v~K%cY4)9Fp|{ySPAF_+<&ttc`_p$k-;dP~X*NQ9v zz&3AS6oGDsR7OV&3*=Kk>qSAl=f5E(mhb)rfuQT+2Y1vrm0Y9UiN$_d9ok+V062!T0`Qki2w zHX@7x%J&olmSSY`gTawZs1W|?#**#~6k3bE9)&z&G{t~?u2%Sctq)C_fZP*UwTCc0 zSe}myg(O>a7$qKsYA2KnplpTOAnvRNgwaSxf9msRFV&Z7tlnyK-%QA>YD6qB_}K*Tl7dVn$5jra}Iz8wo>bBnbMrs3EW{gfFrsc=)wI>aD9{Q(I#5; z+$$V#Tm0_#we|14cn>-TZ;F1EH$b-j5T%a1TYfS9MJVD_` z-7ueT1ZdCU%H8IdX*Or_6a@dvF}_lc(^^*{)JZNFv^$vk zN5_69_svKC7171zGu8#cnXOZ-(W8LJ@Y)=W4msM|tyDcDjY)MRh84p?LG6IYkcGNi z>PX1ytK_Xh+|HNnxq}>dVSMC0zJTPBjk{lW?=DV01QcVJ%Uh=f^Q^m>mY#e6YF>Wy zOUZ~dIO+Y}{$(fWn#te#kUINj(x|>jEQV#&@o;EMa4KUxW`*twW=R*ize#lE|Dgp} zk!!gi#X0Tr&mS58R542lAsL+4{sxCndK|#huG!<^jiz<64+O62TVB7O{eIoD()n5J z%j3OuC|&!bObGy}3ILG}-NBCsT)1F-toXY&o0zy0u-@GzMpycxATn6^Kp!eTEd-Dc z1iWZcGp~+7??~fUbH1i8ju}-m69QPq1xWq)N#5>#k$kE0`Yu*KxZt={q`Rc1+Jczeh>jFPoC zew{C5!as^(N{<=`nySOXQ(?wCIBIyk2K#xHNfLvl{w1nef23W!u_!@}dS7BWI+zx` z;^0wA%&eWWEj#}Yl(&GOTFsZa&jK*j2--O|bb{1M@L#PkZsJfUfA)gatS?hO4fz6p zV-=S_v)-soOV7BhPPtL*1bbsteO|c5KHq1T3#3H#ObGq>_J9b62~aCx2n5B2q62_{ zNenm<)kFtQI-wG_VGN3UF$yVaEN`zNREaM|ruxqO!Zf@}@|`={HTkap{llTo)Kc%8 zPMeymt(tQ1at}Q0s|RcIqOMunX?~RBMb%?(1sP9f#RaQgPD;)v>HkQ$A zLB^2X%Pqmdhv%^F-jSK~;e{2ev?DuU($}TCVdLggpVM98s#Azd4E9OqIi)<-^~d|x zKa#<|Pq3A{DoLNXrcaU_GKRF z{iWlWpPNKQ8`Kvu8T`exd-%B(1b-%2B?K18yBpaep_W82M-UK=QSOX-wxFa!B(1bJ zw1rU}8<#AB#8u%(E5BZq%l+fEJe9>|0%vTsSD?FKiX#Jq(TQJ1OD#$`lY zp9h7EMjH13+I+xQLSSk=1BYDeh-g+6cCbsRgBKxU5HpoC7%N&F%3r&^Hi70O7VYF9 z04SMyDYzMIuhTpj%a0x{hH90UkNJ#a3+Ub-&L2#~CX4LFMJW;o>el07q;ulr3}hL<@GgCATSC zC6CljJ5Nly^8Z401ON_*Gp>~4J@ymX>mQT4@{`AD8ROI`)b?f?uo>rlzeYv|^~*{ECi;vL)k~+#`VNX*(z$poYZ`b9 zw9?~{LOoAp&6G5{afB@Qf{iCF1c)m2^f(j!aGU%SuA;yvHZzpbYAKoKh+jUv>__L&{(g5#-jsjTOz z3N{gx!&cVrg(3qO9utWJ*+l6N$PgtyU4B6&?4Ux~OlWBZ zr@5Uz?5nYx-$%iD!%^V9udxM1%n)^?it1Ou54Ptx&y0lPv)#j?A|!@N!G=+1@hQaa zEppQfmmtlkQA#2}^qSFjUk)neNZEGFWtO&)69B+BKxZ9cmmp(5A_3@%Ew9Iz zo|n4a$mS9r-pA!ctZ9t)jJpnbTGHnWO!NM98ByF;!cmfx5S!W%RAEF$7jHSpEf~*^ zx#a4SM|G5HyDOf7&12EdPP*BJtbZesNBbb^Y$Aq6q2@NbLm(LAv;pK0u^lit9`8D7 zdnJE8H8G6ZMjAOSP=7zZwtmz%K+{NFMi1P|IBfszS!$2(cwxtBLPfz&-*Ec9^}OwE zy2<5NY2W*yjWjE+P=G9kY~kCAfSEJeGXb<5qN=IhQhq4EA`n=j>t#^{esO~qLh6P^ zqduJ_!k*McSlpWIu?AP?G)78I6~H&C8_rFWO%Q8L%kF_=eqM14ugOyj!~Qf6EAHg- z*A;4jmPJ2lOeag&XLAza15?u>T)g}$>c*j4@hNV~F(uzaR+6>#Y>A7vQ?)j2BVw4C z&E#tbhhn&v1^nt_XZ5@C)zyfd&5w5r`B(cpzHC==izg4=!)6_y#{)35?z zYttLS%K={Le>*$Z2y)ka!;0#~ylsIasT9^#Gp-xX5sf#uRSY~9?3p!~lZ}@~jq3uI z!igzO{eR*Ts+VyHXg1GZL|voYTrQ^U?cR0 zaqvcNkX%40;2Mb@5G{`gujl`fLXU$R!vYlsjJh%5!UAzq8G|E;Q33jEeYi}7D)OPw zf#@_^*`aOBxiA!~A0f2s!)5L*@iB-xNpr`3mPK@I{Ghop{vX+99+A*z@vR|Pg zl`{SH3$$p;2}}k^!u|n3A*JeaM*)ZC48|-aRV@qv9~(9i2E3UB{d+1L72VD5BP z_Y)P!qJsZT^hW@4pKSexR0MZVul;9<3812F?d=3Hr!Q<=QGK+^T#YkyJ+$%kuPJHh zNmoMad!FfGA5OhUz%()8qtCV{=W9+kaOLC8|B|!+$IsLM`;VQ+$E%eo(h{Bn07`!3 z_y#ql3PxIls9svP2caj-CFgsT8xyKLh8-E!6MfcV$l0S%c)hms_q_LPhH8?{Q}qp{ zk)xEenY9$7{PVy4>x7QxTKrVFS}Km#bJIfYc7#rT_m4RhYNTs+d$e#jFWCs0V>4D z6;#ih|JHWEeAbG>4LVZ{3M=~4i`T)5CX!qmJ;PsPUNyk9wMt}?UXGJ@I_V1qcpWQx%=3IY#h7dMHvP`nsm}TH zz_xOK4ZRcVuQ{S>+UA~wPm+@&@9$n2x3iI^imW=9IeYv>JfjByrsa4F|BZz20Ijz~!m=kCGNFouHQKCxT%}>?#i~4@iPQPv8=uzL`2z7h+w-$S)dAxxqCU>3eZ9 z_Z=irbqJw6k)V?;fq+_6NC>q4wIEtpQXp**$HjG!!F*$XK)27D8gXU6V4+ubA; zl2#4Qhrgd^(N!z18fUI-In^pCfQ>Lg_tFkETYC1POn6*%(sD! zMR$quZl&3lvY*Xa6_Ty-w*V-_WztE3wb|vQq|d7DqAe1u#|UFcGfN`iIT_Ygx|3FV zFxEE1cPOvvi;MJ3c83LU+!XoFa#7g)UI_U0S~#3~SduEJ@@87S{>1W;yTvF$GxX?| zUREn6uOxHF^xT6JGhNmR(qVI56oH*atFOJm)@2;LAa)7F`n*W=C9|2(Q zcbb(45r;E8M^dRpSxQuWHf5|OWzMZSF-myK3u8!ly?jh4RvQSpXxuymY(Z&wnM=Zy z&Xp}_ zUOp#21^-XEA{c$nk|)C&es>~_M##%lu&c=wZSB!#3ZCZReW__Qe~oPQowKdlo*Dj8 z7#uv!6QFOgVccTtlw18!n`oX_vR%gyg*HYyuShzO=DQNK zM7A%spe{7-8Aqq0Dm}VU0K#(n+;~O}yO!pgAAP0fgsR{H-vnXS1$li_X-_^|<0V?< zlaL#i$sx%Fse02ZlltGA?ji({$i#PWRO>TgN^5m}Ej_-N&|*_l)1&uzT>q9rrwDQ> zAKi)$;kuDKe14vO|8R0O!2c_2zRd=l-9IU(LdDZ{ zP2U_YIBl2e+C03)$jqZ3G0WO+HzpcAje9^)Zw$bidLn3xm?>5yW<-(${U*ZC^v+mx zKm;oItyTeGCaWZ6=nur^E3Vzbf;m}}qGTQ=A3zc&w_H3W87e)hx{I=;A`Sk?LS8o>*m)8f7+<7qpxg z)KB{UMSfAg*Du}?&yEC$V81JZl6R)niH|fH$%j(kptj!=m!ZIbApND#9gOadJ&qML zRv*JDf0&yuP0Q??LXZ?){5~r$WE< zCkNFCZ*g)TN)^}cJkA*$Z$&AUGt(;o^XlM$iNL7!hhew8a&; z;*ART{l1F1MXujITx!;0M`#D-lq>@#guKd<{huCd?^`JB(hO8zGhD(eehLnj)VEy4 zy8ink?3Ic)mC?Vbso%00} za`qYn0qK?^thq`vwLMxH&z;Hyj(F0|vT{x$@ZaY}pA3`vsM`xXKGr)tVO9`N@*kwL z_QuB@f}4XCWkOFl{NerHodi?VisjqOHJQi9&x}1pI?wOxog2u0EdBN-?;BC0)Bs`3 zB%Q)kZCiZyg5qD^v2Y1cc~&|8RsrE-e$}FUrsk*!wPt|Is&P5q$hMw`0-k`&NE5-Y|h`i+ba#2YJ`gRvBWpVRVP<|g`i*B@zqj>hL=%&(=R{Cf1o zdx4kNH*Uw+1sr2v{!8RJ9NWXDE`{_-#M*{fNL$M~5G78FsT*zm^lP;fjG2Cp1w zjg-f{WT2h2fPyPlM!zg=StKIi%IDde<_`GG^XF44et%tRM!y?x4k%F0xDNULpGDy0 z?9RF;QUXV`bx&OX5TU-C8b)s!0X?-j-|2Kj$qTTpn1M+z*W|OZNOa9Hb*GH=ifE^K zms>r_Xz$Wu-=)!2!%>mZSJ3sx3f(u~=Y%r*$A7d1F|#^wPrKeyHVpN=dF6dLo;>}$ z&P+ZA?MQfl$w_izQ#MQuropmd(s}e|)uSa^Jq-+?$D>^!>1Ssh&6-mqG|_VWXoRXM ztQfsc4DAiTwZI;=p%|s0MT-Ercfqx&G4YYO;oQ^!Xc`7oh#1$84EL-CK)>gZ<{6zK z$3X_yMD0zt+NJoVP%DS|$sHYKjmV2OodGor>Y!(@P46DWnyi6~B7n_aJz|iJ41ud- z)1yWlbxf-##JdR!A9v|NLOmCB$)5@9+@=Z#Xz6ySl?^L~4$~cq!*}~af}xAff}?k` zEb_XWmf-irOLe<*In8$3DdkEN+cO)fq$zt!nt0X9ixWPK^HuK!pbyLb28n?soE;)O z(F@7FXUEcJ4ngZF{8+_~Hw``ot(tF>)vaf@AEeGQOw?|@k$=7Bj09DmKe6jRCFf7? z9Fq(i!Vp{owQQXdIjYOU55jvb*RO>_JhKlzl)4mUWC+#Dn+!ev9e%u52RsAVy$u&O zh6hZrfq?kP@rxuv+_7LZAuxTV9Xw7k+HMJ?m z%Xi4*Lfm1o{Gv*|bJI5V5CiIEeG_Xch=sGe=uk=+tp(+2Q!FmhR;h6Fd&ElPJSKnR z&;Z61g@Ep0in?fV{I*bp+w{ecOo?SaM`Ob;0tXe{zo!=y(VoEj|3(4_ zMyka17yymC?y#x$3`6RM4q7Ti=8T!U||SDvm?Pr31t7v2Y>?4x10AfY^>dIT6rna2GH6E%uDrMummR6^mqjK^=ca( z2dGNo4BcyJjH;B9_QN*Z^pe<+V$&z8D2E?kmCtNmlf1y~m1|J3`NbBXAD{AuJC>_> zcsMxp3(=1H*k(@((*mUtVwnuJ@Cks!g5G-w`S$g-tQ5Axsyb|HoO+^N-jEdHF3HC0A@njv5^-# zW-C)&IQD6ZunkO5fdfJrY-AO=uZZ#tI;aOkZ7(WtG+VB368eLvF33k%H(TQX-~KK4 zOaQ-Frz!M9*i|MqyrH zNaKjHl)&1ci4&>Y`zrbqYv7tc3&lhuarTE6*}|tCOE<$Bi;C#OR*`7*bAI+CE`8HR zCDu0F_b)3crHt{V`cpI_8=W`XR;e{%9|q-!U-ROQ!OEhIISAB#R6U#AN)GM)Hxd>A z%kX>!9;u{W`??bCro85Dv&_i@*(VKblz4R@3HSjCgOrAc6idiN;NqIB2;>-PDZ=FY zs)5|HbMfjZj;GomKNl{wt~BkU_!bCWRNryChXkumBs5&<^}>vgkK2d#&304fb5zYg zJ{Vr!RmKSH(Ff+VbPjfDIj+vG=iSA=aUA_hm}L9*9&#vJY%Ye~GkI3A6w-iZ_s z5YJTeCgpZLNe$3*+PBpu*7(=K>%jARE&KVlL`IDw70%D9`g&aPb4|F4u??pW~g;z(p&tb5QQ;drasdw zI{WhFRkG!XwEk1Vc6#;tC5V7dmjwJ*NhzcZ0RR9X0NH1_4E(?9oM<5)gy@t19^Y4h ztb=?x9_xhO31Rz<(TwIbr?eLKs?C^>U~TIy8u|sZ{xeqqJ&3cI#GN<~7)BY^MSlLa zv1fnb4SKXHgh4TE#++qt>vz~|pF}ynmbQrIL55-l=w z8nHTGLn^%*MTRs4Q0xBEe^LC<_lhtL&lRTSdHG&)oK(J7gXkvg`xKH5HlW!1&&_(5$ zg4&BR2UL+H>6*C!QGV3bH5)Q)8diP<*-)R4iMWujdTzJax`RZPFTXd9y&nJS?-{l;~Fj}uSsG00@gOFR~GI(IYv7pfD0 z<;8rJu@31VscMJGrebE2Zs0oS#ca-#V*vosAD{z|68yBBjbM7(_a5<- z>57w?1z^A%F{3N_u>?K@uoo*#Av+HNOmuAJE&uSWMx1;AqsS^cgdiFWNV8Rq|E{Q{ z8Wr}e8D~S5f)cwhO5-SZSY&v_d2dr?BC%|bd3ZGl`2kF*8#fXe3pa?H1Ls79XT?1j z`-mMT{y^qb*YuQXZmdwH4mPC{gjgG}lbId8F245!|HeiMLXf~Tg%|+2+tR?UeNWr! z6Xw=9ru45DoJYK!E`FBix}7Z`w{7jIbuN*=71&22{Q=4K1&i7;O4T6?fprL(?qr^nZ>&x-}>12(EwUp zQ5XG-N>mP~YQ%8Q5=P-`WoG`cx8M4w1B}=q6jR#j*~x;4P5jJy@1GpnUSW3sLiHR# ztrnmZ(~%ar2;q8KLrU7&*|}m~I3glQ79`nAYe%H?PgO=$&c#l5O2)0BJ3eNdRQM&) zpF*+uJy@h0_Jn8sIYujW@`g&9bn-aqlZ?b&SGX9aaN00R@1%|VbNk!;zATqFOvE+N zK(<=tg6(_TQr%?fF-L<3%5+QKM7Z}63p0CX7?4-9m-Py0#_66n5$Ln45`8L;0L?jy@W&qTE*4QT`#)31NY%zNCe(?xH0@O zK@-bfawMC_+-D-W!F*m>Uq~PBd+;{I*M3VQW_viCRFYnzIk`)haEp_Lp^H?l4B{zrkLrQy?tn+fPgC=E3SYb z1>JLDHB55fczin;9LQheDU#(#M_qq|k=os1ltc~__TJy&_};NtdJCNXV4j7*UsbP#)@J;2Z55Jje+=-2>r~>Ii}6%4;r!jJ7|EP#x&3}!;G^sGmJxSD z#1N?Vz+JT2p+?D(o{ivpKix8`4bQM}#(Gnq?KYc6Q1z}fJ?Ka9AGuafgYUw*Uiv{R z<#8}0dic-uFYmY|Q>vumm&G!;^dd>>wc$xZAAn^`UYX!04gKAL z-0fb_@x1AJ&D`TWNST9eMJYgK&I|Iz2q!# z!%ExRO(ZuugO`QFszXwtCzp1>q`F&hlse&RYI(EU5$$>jr?Wu;m(#>9{;80tV1W7y z^}wLCjlg(bJ{m%!?gf-G>=Z3|yduxam^sfy630nFB20Z>j?`Ry?QlkU6c~RNwmF@& z1_2Fv$>?UICU^ATxfJ!_PMpAr|0sM2b_^dNSaMdY$Gkqyr{k z!lbw=vQPd6%?jg60#V7<15}H}`knTUr?Ew~YGW*$HI$QiPVzyvDn#L1N%d(5Q+VARA}yC|LX@=BVD}m&Xk49e-2s$kZDFe zy@laDtgS46;z|&jOWoCb|qRN=!|aoT=-4b;N^n zykw?_#QiB4xVHR+L-5PV+x;($oge?IK-&U;P4*TXQIZ?dVSfI|qorh+>`iZ!Zu8w!hho>Rf%!vs}Ds94l^V9X~>brG+ z%cp`c*b%8Pj`Ckkr*)r$zovX$?#VhNi&`#!mG!>KF|0A5%<}I=gv8Ovv%RKAOk;-| zZNRZXSZFkgCUrz8;~G9?--$LU!p!BWV`ZIFm75zC=#;SMXn1M+g6Xpkb^uprs()@< zFZ37NFZ83UmeC5k7OtivRtpccBfG1=)yv3ro>rtj;NV6m;1Key<{8S|`WIt3XCQ;0 zjq(Ij_%Yf=)sEJ_2EH@TB*08!$ucgKBQi1ExgK7u%%W0vX^`R6F-@8|2+dhiVVq>r zPnSbgMf&nVgj(huSaQGfn{61lI`p!$D(Ci0fFyzXP$+hP7WnVEV(KSmx((8f&`*iyX4L8pNFQwI0;G z#&O9sWt#!t$e(Fad-~3I_>ZUU6@AWk-6p1@|7A=$%=eef$!7~KhT}ib;nxV##dpRh zQgMu<{7xT=ScU55Bfm-s*om;1Ug~Ho76cH@D}9Hsa~`MQEs@odcf8`emMB8^8(AO; zUpZvPNOYa#*9HGVu^EtcPDVn2p1Rmr5%`Fg)$Z{jV(!nwB(&#j%chpS)Mg{v+moJz zzo>8u9BRm5?}<|Elvze>`W3KsNZ4*3GG|ZqJZWD6U=YYTY6b>h)L8iDam9+!Vt%pP zl^725^YBkO9W?4*-(_f3_zF3j zrG+NSHA5mmh!0lRO(bJyb)TT?$3btBo!yWSdI%tFShH53fHE+XUH8K*2?s(+v;!!$ z7WtGz1466&?KPV)KS*;IFlRg|-Ev!4cW+v^zi=v+G+vm)`Aw!nGOAuY%KLwC_0lqo#u!b?Sk7S%Z53sGZ5bcR%Cb)kEG(T;)$&At07Il*y79+h@y-@9ToasI zKVk?guT(016xfEAcz@F9B=l)}{WsHXM#TE)lv4*lci%-q=I!ne4}`VRG`=1OOO^xR z1jcpv7R$XX`2T5v8#;%x*owKk3T3&NoGHqf)=zw5;hj!$Q$k0ECi^#kcZJU2cplflvOIJ z;g9y{`QTJ`S+oI(%5F^A$>0=_)ISfKeS~?9(0vi=@nchQw(Z zoNgJeY&~(l44i`jeEMGE78+gspqbO9QGif#Fx+4uBuoN5mAF4j(#u6yCWNG_nV`zE%RKB3D?(&ZN^x?J z3@~_d(Z{t~dy%ca%Tvg4r^1Y^{Pv_AOUNPxYwYmpiQHOuKXZOE@E}ITkCuI1bd$_4 ziHFC|`D7a|>S*Nhncx)@QU`1zMVteCnP-aAZQ)6>aKNkxws4bDJy&F5>%!nuRsJ-l zuDBV(huelix1u98LP%+qdnO|D0fXH>dldbcqQ@VXKYeB?vh+K?bi)h!mEPLBv%4$rFH=F)NKnj7>~8VWgO z*i$Dtp}nO+gXd{c(-#`FH!Q6W7oy&0HYomm|*#8Rd!Z0-OlxH7NbDGMn_P z{{`p{K;n|4@iNsvyKDWYD)rM8S1EQovEge_*`5K=Q`_Smn5Q&$+jp()L6ySbQp~Gd zf9sZ@CWGdqURqkcjZI$I(F_7x@0C1V=j@@xMCV}UZAoBCaz+w*w)k5Kq`N|7RF3OFpk zpB+YW{~G9Sf>yjDZUf+5i#ZGjHii+k((p&vLg?JOrqOO$1vhi?g{@woQ0730aKypn zG#PImR?=JipYTf7i&h1^2!HR(Kvqh*85=a4SWPk%sD5B)B)1p|eh)iYpW2d8^c%FW zU?lB{W;_@Mv$V3Z(c|BTch7$vk&)0-bLdE&(`I#de%Wl(dIre+k&h&*{*o>pkFLb= ze}E#XO^HTrUwrWzyW^jXraBVIDYB=U_dx;uE!a`3yxop<_X_On>P*I&xiD25LF(SA zErhD+N4C$H`CqJ*H88T4L`liF$}djtx4nHl^ijM?6R=M=6kK8C_=?$oBW^M5h=R3D zayylD#v?4}$`qtwI3Cik=U%BzpbcB<6tsNb(QRn&z%OM3;g*OrGI5pudrr z`M8yr@p<|Qk({ooWTyZq6h!Xd^(8!SiR2oa=TYuDV*9?N8}t2b*E*%|Z%R^hu9fo# zIqZ#)ET62qiOMXB7Oz)SF=I37C5Be9Rh!oi+F~`CpU)M(uC#)Iw$cC|2i9f(FEzZF zv!n+FP)9q(2w50FF_?0R4VSXfK5E_*L)A{D*O?^GyY2KB)#O*s#JUx4hKL;pF34_x zk@nnPoKn4qgh#0lt7ARkuqKSu7<-nC@za-SHKmVj=l;`km$!l58AL% zXXrG+DIViak&Y>l-gdI!BR4G&yl{E5?2~hRcpRuSYw)>^P{;rs7lRxS&_Q(w#L*Yr zl^m3#SOP1P;?={AZE{(oJU=udVdx$y=1368xaFGq`iBZr_y2eHdV%af?^LkJM!Gyj zBg<+qeJQ_vwh!Zl4Nj~xlr1=698vFa@Ma3<=j`*{-`e{thCBvXWq)(0H#Sbvye<#r z+|x{L_muXc(QHt|d~=4X0~L-(yn z4_3=BY(4%dWw!bcf$?o6U@j03pj+2qv#MNQJI-Qgo2Md-kvnOH-*{qRL3BgP@Z%Pf z-po@~NIz$bxO44h3SmW-$2GlUw4Bq>h+rcb#{RpUt3&8ecN1hD)h)$Vh_}~tUvZGZ>rO#SQBf5 z^g_%_F9X|Ex5nb%+>~b<6h}4V2Yt;q%4`^KzO3zHzUgKNV~{UUGHGGI+s{$d zb$-IEkN32S(0B2;Lr*Uciwl2uK3TfQ3v)c=^t>_C=t71eV6m=+_-FuR!@5}uXoNk) ze*rv%vT3($n?zrLuM;dr1J#J?VQ+B*g_%b=8Olgx7sbRZpgEa(e0x8=9I@;2RYE(Q|o#iuzOSnty}B9 zGc$Z$4u_@kwNoD`6xsoUCa4H{&sfFc>hA#>194=z!ZSThjLsTsj#R;gvYA_(ktH?Iad&9Atvx2%)1)?4 zbpIS?%5uJtC{opy+6e6fQwPH+RSsf#8ub08%Sjm%#>e8NRlex6p3p3vMsOsj5{A$TSSo-B3CRDdwqHR{W}Gzja>4GON)OOuzJ`7<9CaXI*Q=JrFWnu25dnhN`BjovM8{B&G7-~9HebFSS}WwpU_Ff2cIk2QUvu+Q&N0GapS z`1c4-vr!^acZ^hg+Q`)2dW}p_Tl0wpfSWF8u1zMRH9a{6mALMm_gsnVLXl@7wCW!; z7X_B|w^}q~9D&87%v&)cz~a5?7!067ee-)HS)lp0`8Ze>Nu139vg^r03axBGgWz_) zq7y<0y^3eSNSe<)BQ*%Nh#SlKHlKymFl5dUgc@8%m{v%D)#$)rSWGt4LP(k!N|?@I z7cv>{z)yn;W=jGyd7ev;>b4W%n#T#Y#_#GwX+Q%x5a=6L<(1H^NILI}#hJ^mepw}d zCkX5GXC$LQ^jKh8F4g2@q1?l#`mLI5y~*P2st6)Bv`p$cpSp*Qk$|KD{f`l3`;kIB zzu6*Tfm}~cO0Odjh{FPX&-nrzBP8uz$ka{kufs3Pkn!{X{~Qa{xCDQaMeJ2?TBye> z$Hii&q}JH=f>?OU<9oy#U*38+jRycq#Ihfv?%VrS!#0Ipm z1o5Q+%mIc)C6s*qvzu-$6!SJ?(%gBc_U++pHzA_0AR;u)Lmd<4&$OJjf1N{6pf);X69lNLKl5*4NrHHCv_ zJZ7dj3?czyrx%bMkkB*i4BFPkia%9F0}7SQClM#P`?_gQ1SE2Q5 zRaOEF6yEMBT)IX;`CZ+E(`Ne?Kp@p>w0tYYarAk%K7SK5G)sn(`N_*{QUMY6doCj& zvN^&8s=)UE7SVD)^Qjd8k8OyCfP&7n5eL7zS{lOYkut{0xihPz^7RA#hWdsc3Z5U{ z1ifv)w9~vsW8}z*xSGgFJIffadWwWF0SL%QDXN-dXz7D#s;4nLaSBsHxIbk1y<)Dx zme%D9#ClH{5ISM0_T1+_o_2omUCBi-;px*ITYH&Ny|GQ%P{KKnW0JM07?ys18U^uc zB|V!IH$JMEC4E>Z-k;)L;oe;ga+~ z=f4oN7HZRuh!@!Q^lnnhAmRHCKXJbs5;1oG#uRD$SF4HxD;aO^&XGm?yyb@!(_<2< zB>f~u6t^KJ$7F2Y#|~fiBxho~E>CZ302rX83jwO1%t$FDD!YfnCd>zeA>wR9`>vrA z5rf}Bsw4|6HaA4~`?C@*Zu;_oRnsCN64Zn7?$jaX=*P?v(G72WS^7K6-92;nx9Ez} z2+DKkhWsRr!CJAThwV?B0oC=w`gr=cv=Jly`FbE@t zkzA6=5;=>D{+^m+m1^7*(Un52FGPVqvxgTyqx5~aX&CR&Vw&H?CuS&msJi11eOv}K zC}nPpr?E8C)0=O3p}jfU#P7L1(QCTSNS?|}ikGDL_Oje*^FZVjV?LueIIHV?=SzkW z-#gWr1{VKeg8t?$;@7aqFBv&z4CA=x^bA>=O&Omqi%Wl)+*MB<5B~#4fCMIdUjr~dR)W5W8S+@r6ie)eL*48L`FAJV0FbF98qK~*#aL~u z;VLKZnh#qR*Z1hKpP9LMH8&H|g8VIn`AvW^3rQlTY-4IRr9@TqV!Mh;V%iY8;4efx z{Pd)sPMSJ=;D-?_&$>r|^F}No&QUZ=VAzJTpadt`YcVXHhMgcg?r+6|sm`8m8iOYwJg2I&Eo8o~;karB2+DWr!BM zmrxnGeO#M}1`#^i#ATt;&@%bi$)zBZiCUq@6TO(ChyxTNUfjr%hQ9){{)DT=H4%jp zG@l%nlb--`K;aV~);_42sH$M{24`$1cg16B-fb!F_b$hU0E$CPNd#Pfv0B_*(TrDN z{HU1HnPD%5{{m1@GBxBL%d33nBCTv{-jw0yn@`SBFTo(CgI#r&x--`?Wl)1cOI_(M z3N788CRg;IQYxzq@>5n*X_YHE4H{g4w5P%f<&NcUhvcQT^BA(T+Os_09dXdhsj_GL zA!uYR8Oy^0yv%UTX$5r^SFBVEq0CH}RUy0>u81l_=4Pu63)_feikyrNnPutu4V!Q< zJUsB0^l1oL7l?Fs%WNb8pV43FC!3S838WC2ul~4G+{eCcn&Dns;r1M|Ykx4_KfAd0 z#PBtT^=dHdFlwf)Y-B~Od6Zrqgrfice(z=brC#QT2q*g-eZJB2L!aH%lgwC!nTJ-* zLWN*dGA(34qh4Njs78j#v}igeGELNJ#;A@*hFz!(b(qPa*!*Am03hhfXp}>9GicM4 zmKY`c{Atv@AOhjn-00UgKVife;Q}=WL-(O&e5@97nk`21on_pRd5&KEOM6Ih$SP zqsaSdOeGcb+#rEE2bKGHM8-U(RZ|*l+9BT};zc-f({{j-*qmDgM9=NGwEy$7)IN=a zbn_OYLOR1C3%i=5*vl{^E9>*jM~0l+RfF&D-xLmGE7j`FFh?pki+*fq(UyP3-rVH=CoMRQWdaD^5E0)3+vm5dCIB7zkccW`G zd4;mm?S}@=2;4MA4L3pcd^+hDR`Vdj2qWK_MKM5Q51YtyPT;MN_1SLpZzIC1?Rki* z?+R0m^}sl_pO%AtYjO(;=g3S6t$lQ{P0iO|PoK0MznA_y?Dl|^cO@@)Vxm+6uf1m< z{dKs_)*PqR^G}TGe>GDcs2in7X*B}by~RW3!q=jp;l*fC5)wGpl0@To+*e7XN4zb) z)u!ibCP)x}<;;8eF#?^692buYP>$c!Jt?v{G)>H10cN!RuYazMgxG_Kbe79 z4KHQ9#FhrcS*gPhg0hw0kn5nO|7^3EGOW)^9>Y!7h)UH(h#}VxU;MGn-BQ9@rDv?y zKW&Oi@Ub;lYN&{s&J>A?9O=bJ9|MQ%k_w9Sx%@DtoY>@fZS?r_0cVX`Sl`UQ#aqXS@b-iM6aF!VqYM)S+7%Msr3pvhvU!s@^3&K*zPJ*(dL-(5 zxlRpB0d&;k9L5;MlgLeDrbRc+{R3#Uj=tJ%1WvuuD(c;gFxB5Wrc#>z>$%lKzF|m9 zq=GYFYm%^HL$0UieqpiqsDtdT_$`|G?#Q{sffettK}o6MO9&0Lf|aTD_gvoPdHXMq zD&G4gDF)Z548-3}m*TibNzBkTolzRtORT7(7{|gX*pFuHF=!#U85t?*SjITG!jx@n z)AQn7=h0F)*y1Y(@hUxKBJy9ptbO^&#Bx0Im?1XFS^h6o?}Dj3izHM|6D1#BG{nov zf4V>RtMSD!)5mCkfTQrE=+V&HzqSFN`^&)2+c81IVIK(<3VSx=pRb(Wis-3GMVY1= zZYsex$I3_Ea@s9XGWqwVyY;K6f~8GC(8X|*cm^!b)KC1JQv3; z&rW~lW)vv(F2xW%M0U$eeo-XQ`!D^B#ns+IGsGQ9MICX<0-Y8Dx~p4|0gl5QZ_0G+ zodsD{w>}DPzZP-?AWGVQbB)I)4bbu~$WL9xxz7shdCWhI94tS@Ptn}D4kCKDHT~>T zBBGi>11ssW_J{b2Nm_u=La&6sUs?C$oU`d)(@9FNXMIav%Zk3tSk+$!wTAL=tE#5? zdqc_gdE1{(M^O!99ZQLDo5^VzMA5~T=8X@Jo$6H=|NE$w`1@Y(%v;H-nd8a;N)(Kw z0R;eTlX|8m%`HGg!Z_;ayJSpz+)ot4MMw>}ctB<&6cPqJ;OBXatu*zXON$0DM8_V} z0J#n?eiciy&VQgN-HcTkFL!mZ5V3i`rLX;z{PCQ)X54EfH+yI*yS@3mtw^`!qwUYD`#DuZmT+!Nr)EKG(zc;`VCkcOiQ=6}w)cdibg5<5XkLsMpv2ukPefdj?eaRF=^3d0t!G2_mPCJn8X zX;e{PLAvZ|Xn?4}1Fbr;h*YIMJ`&CK)Hc#hzt3l*Y-k@`aHp`lK@zxx5W3G{b#zH? zDIKNyS=wrm&D~#z-wb&a`Fkd;RgJEBy6cHIdKg%4H~kCH4S+-?S?$sy^4l}7L%@sN zH@LAN7`t|3gTF={`VHQwm z@X3D@>F16+?WG+iA|XsHE6ra-uS&ar z@>k8`YUMYm}k`E{IForpJ8Q#)CHev!0c@rm`;my4R9JQ~Hg{H+FCWNp}E%jjLiXRJnFfHX$kb z1MW9$Vq110?I={(@}L~9TYF|q5+zQ@w^xgw1F18}D3v_&LuMB*q+u|3=X6B@5ERbB zv7!@XpRTr$yiM-4+OxBfNG!MX>L=9rvok_Vp63|tUw|Irq#Gq_7k!8lNV7v*E!Ug3 z6nQ3B6^{}x^i5&Q3?Rda{o4@NLq_Rsaza&W}>4W z=Nc(5ky2WK_Ukhe`AU+f5~-g0gL@0sPUOoGMoC0k^ja|-s(7URg-V+F(`||EzBvdd zq+3;=od$-Q$F$a8^HEN8wF0m($z~e#F+Kt}1igPU)n|iHF8hsOwDPxp^^XzXT$11B z+;pn^P=vXBt(=6CuE62z|Mfdj4=r>JTmC*A*Zy=s~C(nJY+kosic=BGKS3NTW{#$MZt0`pG}AH zB%t(>C0iVuizT8UJy-|!t$1o&a?(gNhx)krJ5`VecJH}?EyAztJQ)7id~NU*LN$u0 zg^Vacxtzw(N3ho2>^dlr!zZv9Fn8uP*IqV%>Y4w|SbqUX$Vy(eYP^ak+0Q)F8rbu@ zU9&WQ=e#~xv!#zkBt{euY+Q>f&|@pjZ?^9QwfuSRM*czKzex#E{irOTHC&W;??rYy z7sL^Z>ZSnTh2U#cEck4^21uZ(iq1Q7MUc`>k0YdjOH(J>glTdnh0u|PH&K=e^X>}e zN-xH0`BK^LWUeRX>f{rK+@!V<1PW25`?!4ce*!z(e;L`SAT*RbR2S6eCqj1G^_}an z)duLwdaT+JIn|q%(p}_ocuM1JuQN0>toWyU#XA1mj!QAII8?s-XlLvB=wRX*ahd3$ z>tm05Y1N_f+o`jw++5f*dozoffSt8XqM?LR zKlwj3Kjb44rxjQe>;kDQjI#ZIBlEAe>x#YJ0HeA+-J`w_A2kU5l1*>n_fC!Q^AcCk z-x*EOAE%x_4Fqwsf3}P8|KOcLv>so}6D9scy+}d2$UVP2|$|&OXd*>jA}zs3nh=59fzCCSnOrNlXf90KLpc(AyOzM`^&Tn));2n|Tsdlbj7CJB<2 zHQFiy!lv? z8kfQPTQwlNUhyV;wRyRYz|;JaqV;NM^AEG(9owT1GyW(~v-|3IMDHX2Q@)pFwZ%Jk zR;#9OnfJZTW`hAPXP=GM!iGnv@?|g%!+$advR|Dliuy(OtEwVLLHYV+d-5Oil{70u=VCAVoT#O`uUw2> z@?zCcUx*-D$_w1_{U)gG;pV|I!@^=w!nMEIJMzDZ{qmZi_m`As2Q#u?OcEK=vd+7t z#>hnJ?=qN+7o}{Ld{l3nqJQt?y|4XnqixXd8D0bp`fHR1G(-KRV!U&8Oc|Bn7S3T zZ%pMRSd3%oowr`u_joJtfxBzuJ4T9*y(Au3<7Mt#f~}1^Pd~xKEJ(%B-vcG?>1Q0a z&bU-LbgGMFwK7WY$3co_`c;+?qmUTVKQ7foI!mA}ie<>FR3h7nDl0o`S{_fiP_0%S zzLU-WBa%TQ%?dR*geN#ogU3t3gOC!i{|)9`AY;42_^({u!bzB4AR(Cd*-1;aXE}w- zA3arE@zW$hrmzj*q6hNK9+0t|L3<~O)FBMbwwhKZEDmsRD4~tAm4*x$gbzp$pQeU@ zq`wM42>Ds)FmvLdK*c;&S}~fb9Y$D%IsV zU>3Bagw`!lvZ>?K$ynFcBgx1i%4q%lNRs$*D*jl77X5%dBu-SmB3e##VhKDbDMTWS z5EzS9iIyfkh!ap-_f{ z;7mXysU(B7d^B^Iwe5VCRu0#k)GY-j4es4b!S2@fSBK~f$0@@I_Wdg-U|5~@ zBN0HZ3FH{Ga1t5vv7GFIsK?g%5$TdE{eFCAn{{LnZX{w$+c;jq{)psQWIXafi-B?w zOa?0*9St(T{D^}>i;)s8UPX?AQr-`-#UFVc(p*_#LM zaVLrn=Y%#ldfYIK%@nMMr{*;JgK2Kc4cP47ZQuRkwUvWJ>|zqr#d9CZ-I(Fpq-+>R z|Lzl$;_Jcxj{~_agFbE1@vYap*76I&kJ4RvwF&< z1!>1CP{|PP#3gY>xmuW4qGpaShuF)5Y?1R!9E%m{kdc>vmUPWC+l$ke$`g1m_IB^f zc^nakWTum%XkIki05@ft$%G34{dDqi@0j=iHs}y+Zh#RIU6L9oTXyO2jXC}FHMgsL zdeOe_AzkhS-M9(gZkt7Y$F>)RcZ?c`c3iO1rVW@lMqM!{quiBE(6_lk4W>aQZwQV-H{)JH~4=`U?HGqmE5pa}juoA}8^{#~Y(x+>urGspwSTM3X zC#H$B=t$*`CN%LYHKkR&k;L!}-6cO_O7oKl`fbp2{?h3Oz=7i!2BF|g1N>_tSUH1v zxD2JOvmhy{)llKSeXuS2LU(>_Os z(HX;t!Y|dc?|6S#HMNroQETxXXg-(2|7Acph!%KoE09VFHhVvVW-LU|%0$UTnDr*m z_8WT4*l4Iel|T9G>$zUhv-o`&%yz~{$epg627h-L1M3g7R1lF9em1i-V12IzgIxec zqLq>OwOuT>WPYn>x$A&p0={;o5Sf;8<;`X|iHG@D-H01}XxT20K2lf;*?V$5^xrQ6 z7z8J!O~T3G9#Oe&Z6~aScbs+@SI#Sl?qQdsx!NnY^l9s|Mdr3wvIbqO-Yb12y`4ik z!lLva+^w{G!w$W3dRz)71N(Fge%A+-HN zEG)a~DbDYdBt8je@NHr-;>jB??0@lI;`C)l`zX-yn| zeCe$CaA8!Q2dqG{7+B1g=CU9?v50FMrI9Hg9mO&$BRJx6Nz6c>HevKY{v}U{o=pJ>dooC z8qPi~OBz`yQk;GVK3{=AABi2DBFBEvl`M&Iow4LN<=j@))CxiWo{qx4WDNzSfviDqF~ zL3$rExp&#up7y5DT22~57^4vT6R3vI#?K{zt+VUA6k)%Xj4HtAAihMt0RmpJ|D>dp zgmjDG=&{rxT(C|CJ;QRFv~tphrn}JrS-nO7o1DLxEJwfGE#9y@3A`9wcC=ts{VB%& zjh4j9=h_&hl*3uW7P7!|{B+>Wni{h%Snaps)xz_>t=o zxn@I3^EaTilto8}D2v6;85sCJ>j^Y1g-3Cq6pn7#8cY*84o``p=AB+)vRT4FnaF3g z?wMEzNC>bK2Bytk=g}BPk=(>q4n{H&K;6oy5snC zIuSmR;>6-O#rkaZ^xz@;`sHA%;BRf&!!@%b#*c}Ks}bJ%HVbfF11&J2Ti?<;E&_`u z6f23A!d{y9l7u%H6pXdmq`?`ADU@u?vBWvi{&h4gN4)QD=1-tI?si?w(hZ*Rxl0zOOsP@_)m5{h-cCM%x7QXAo`h9P-(m1bd zs%j{x)M6!ZLv&+h6RC)*F&Q zIT$V}&Lw3Ua;zK;o{xz^iS!gLY3|C+`a&6+D&B7e1#CBu}GQ7xuOObAVBM5o1 z$1OMHs=~LGAa*7f_oyBLp{QoWKS_^jPeUtg4!8O^O7+FG*%h@RyS%d*rq~wjuu#G& zUaiO;$2X2P*4$5itQ}TfEMC)wSCZD6`3pY(mt7k@8%;pnj!6GR!o037A5#|Idu$-G5fVNw799=>1VG6? zWD$bPU4AERh0|)8fWYu%9Yi3JBHDk{YC5`Ov$p(k1F?L{7XNN}ODBNpH{%&m&E2u^ zSd2+wNjQFk+(Pp8EbsoR&Wq?ILTFJ!>M#KOf<3{99{?l)1#17;)(H;%W zN2A`S0q22YlV=s!Gx06WD{B`B`7}0F=Wqt|cnt0#kdhg?=r*^@@5A=4_g?3gVRx(vTHLlZMM@o$hK4?h5J}o}UljihccYR`$9QpTQAotyh_} zLqN*?p0disZXoZVYn>=OxZ8@$|dj9jPiq#&ev+~+FdKiP?VdR`wg*;WKLa+1v zDdEaOqW8fqqsM;|qEpkkTvOF@!{W3(Y&2;-L8bc;bV#U4>jEjTmcdx0JJ)JD)qga~ zE<)TLXbOQ5($U-=%#h?N8ZR4JhepvcLNXQ#sW{F2eV#g14QmkwbQI75&&!YBDJJw+ z0`w4F!vb2QEUY-uCbT1Z0(tdY_jZqKZyic2WyG!hpOlnwHj1`|Wc~h_CM+4;zHr-) zHFY_hrHh)%3b&XwN=ug<2W(1H#_LPETB9YWQcGYnB6emCta2=2U%8`pLhcV{ za$T8Q9~A8}D6moO1u=yn!N=ld3X7KrtPm;oh52clufez!bY$PSt&67X7;gg3+c3&* zd=s3ExZG6uSke{NP%9^{huTigD4Ru;-|Dfv$BwxwIgB)Ig4I`dm|byNZf>;S`5lkO zzv9vHc;q8lVZ$J))hJo*S}{L&UPriSKK{#wdpI$2qRJ%~&)M-yxhiMyU%mSrXXy`X zuOOIJD|p*VtZOVFvr=QXHe(@sW!~@q`=}W@JGFJeiRs>=hJw>fk%Sfp z1mb=HGL&ZKN+V?gnDC+vut@9Ue?%8%WimxZ!>?au@`PNQyJw1mqL>KdQ2HB(jLDU; z0Y9YyvdI1Jynu4RuA#Xtu)GPA8H?Lmp3L2r*C5@;j<^GfoNlFfsUH+Fxqbfiw*&uA2?YB+zv6c zyNVsJdk*(?`R%(-Ar*>mXd^a^70=Hd`48GkQ^g^;z(CUC3f}{FLkE9F@~q+pyef`} ziZUKO*ALrhk|BaQdU$K5Iawxtx$TG8dalMfUeCg)IDB|Xe3_w1L$4!$C=-{_o;(R- zNoK#l*jK5yntkVp$WGANeh7RJyY319chA0rlXzyxv{k^_33%)t-ju>kIps8#e7|~p zw!Zbc&2n-TF|zX>3n}7a9&KB5A6DpIC2pVLPKS_6@%Vc1NXxY7ec05mNE^PN9j*kN zc^@K&aFKEy50L%FE2hpYa!W-^B_lPKXE2{cpQijNu4!d0S&}%U^$YGP(h9++T!&sa zOOycZWhyO@k0YiHcPkg9ZJoJsh|72sVmQj}wLyIf>fzWiW!%U>ajBGQa}3R}m_NdV zT(T?i-R0z7pa_OW-WYXu`svT&;w8u%ky*E;4M$|o%ay;GgAi8j3yzHAO>)oSAZEnu&u82k+g(yqhv?0(;K$%EvQmLJ6#0zlfMEb^o|bS1MI;8z}Z_kf+^HLvnL<@;* zvLGR*SMzJ#A>=O>KX~FP3{0DMZ|P5mkQHI{P7Xe|s02Bf14EErT33)cy~cIpz{&)fy6XuV zZ{`H%5J;JFUXp_p>lXUrkhAzCj$t8gwHe1OMFZe;^G7C#+NuIioGEyPddK{NYA3wUOqe3(L(eH2N zN_czPvcc1#}>ufCu}sF+xsL-@M)GIf4E;A z(Wx=>J=0`rzb)ViIJK?O?dfu9`@rvA-{sM1Lop)h=3v2p{7JaDc>H}^?cdKm%580- zMFyeY?g_YyNc|xj=?8zijeF77Apk4@5)_{Wm?_5`iWQC2wR>rPw2zGqKn{DYs!fmU zlL>({q2WPI0R-@fJ{q!Q|5)`1Bp~Xne(M<4RFqxmhh|9ug<56-;>BJYWP^@e~9rC`qQ4!X6CAQ zwU1ZoUG~=jj?4Xzn*rqJl47AiMWUn=$Ebvy3`(g&1*2Ob0C8d*TqzB4D{L?-j*2`o z*3^3<6d^DYT1+?6B-m#b z#c$-#sa)_^`^MDyGo@KoFv8()cu_@YFo1mlN?Ff-y*m&|LHL3`>QpDD3;)*43&E&E zv!5oCdYWB9|3Ea7oc9T15qI<`Uy62Qli1f+MHzJK#x5(*?8UA5jwzK969 zOlUY>Pqj4JP&1J>Gbocv7W3w$h(5}W`NnuaV z>Cex(-cZ!{c^xBIgNtVM$9`thnMy!r_dnhM`Rr*7v?~)dH4QD$}fPYlg#?H1lV^EJFvJd&ApKsF$ z5`>?$RDNrTPO*#~JbifFF4(Zq^hhu7u?CRp!vR1p=n}H583VyRs9!GG9GFGR1S3Op zA3U(-#v%n1kpoB>YmblS}^ob&0^D^hIL=z=fC)zNY$W=Pma`$I*K)wZz>w^xT{K zCd0%DnMSzf4_%c0yez0C-DoE&B8-t%v>>LRdciBJ?N;hbH}Ajn2z!H6f7=-RidhQW zj{I%=c}m^of;aPr(tc*@{gO*g%D>w43@E4?dXYO49;V{9_w8s=*PgFJI@o(G6bDPa z%=hzz={U$^oj+bOqq;~ zoZ33DZ}nbsC}j^23~`HDARZ^+<8DC~sU2}nX zAOQ3T>EusjZ;3ylzO$751c-v)Vkz(q9)Sy5_y{q%Y^$g5N&e$5*2N0ri;a_q!uP~? zse(6y`?Whs!S)niUSWdCeFTLjxN8AQC?P%KAR5U*Fug0?huRx83ljI^p_5JmxriKt z>0w1}dtshlLH8yCqaXX?YRcgox5FUmvOwR1#~9x+i&le}b*UIdqq850v9oTNsRImz zThVl+X=wL?`HzAT{L*CfS&@AxBL#U&f1=OsuoRsIQ8wS@&}e{S5}QI%#Rd^MG@FnhaVkX36tM` zbjR=e^^%<%+r**&%8MW3t^$kk;D1(_>@-@r*vIeK)Zd<>AKGcfz$ayjAGOaF7mbt* zmA)qU8lDk1Zk^ipzHyQ4l7NFdqV=-D!)qyXHMdTGX`w9mzKJ^2mhORl|M_ut=!Fjf z!Q};86k&#m$Md>It3|!^EXat~^|0%3aJ>UNM_y~ms%tew|?6l?$)Hf+~E%e)rqTcw7v0(*;CmwFo zK2b{5qN&MN1`Ufh)DXK(PdyNFHHk6LUx6!wOH?9hJb*GXOZ<00V?_wEZtKJXAd;A^ zN#MNH**k}wkG;H7T8~@#Vu`*cvAan@Tdm9$ERmy|>j||Ie=pWxN0KUIu;SNpLx3|5 zVRybitTKP>tKYj@1XhWG@u}17b{aictH*s{@LWlk;V+%}c< z%FxDZKQEU&TKy}z;a}gpGetL2G{z)h-9=Fvru}Pezay$os*S|tcJ`>zc;XA{J@|fo z$%*;G-WWYe3DTLIyc?*MO@pzAXd1M723gkGszLU1G(%T*w$}}~@lXzu*MmxYiP#-FsCd-04d&*$druV26YJ6LFN{f+_ab`Ie|%85E~%TL)8Uvqy(t?sWEviZ;X zor^9Hw)@|glXbUF*c!I@(DxON2`r8N{5th}RZ85fzk_}&HrxgU3H`qIz1xu(J=rjm zYq-F`WCjlIB*t=y%NBt`VABK}aM{iIvPnsBD2m}bG%r8}_&J6HRj zIQYfUvnlB&$5NiYULbrrkBSr}Z$>>+LeGJ{ff9Gdo)`Y9Eq3{~;a%_}{dnF%bE~UL z2Xn3H4?j)tx=GB?cG)7k#B6|%0kel?C6vQp4~S{Nh|1`$(w~x-;x-MBW6+DaAuuQ#lnXW zgKp?5t>f!rq6#L~w5<h4~u_8G=j-BXk;C!lJEXs&awDuXJ%pEt*PLpaj$c(j`XP4$F0nT4oA}i7(4ht3EG3Y}C2yW&lo>Eb_&8cI2@e$Biiz2Ffc; zR5cFgk}e}-SPmsu?RT&;I9(HcF{J_g(WLs&P{Rz4jK zk{PoqruInMkcFz`btv1LX)B?Rq@kF~SHfQGGN178Xw4&9y|J7H8-)FI*~86;zPi)& zvlX}yS#sm|osK;FKX?!dQ21#aZ}h%@(kR2+&oPiMYB;%jc%^?h_oJ-+EniWBZDXZY0U+p7=Sn^xLU&i{8~^M8=Uuc`kS*Uk)BG zL)Gj$FidV=uPt$bfg?6P{_pElYc}ql4iu7|Jbz;UUHGp(EIp z?SF7I%IR~0ML*s$&@kiDCYA}F^J_Myj!r~&;=2mjh7^#ogW3B(F4*NS;$^mynIOMrS0K_@`E_gN$GxdGU4bE3|3+LhLkX7 zK~|WeO7yvNM;2X5+fhAAqV|NhxezzaZo0HZT=B=h0~hurDF1H59+ade)AUSIaC?j2 z6=8w#lf!epps_+>J(ZVlbNizr(p90eAyumMrSRu>5-=1DO%&uHW(L}L$#eZH(hhb@ zd8QdwNn1OsY&I-D-y6o&m)*O?`%EhILPAe_vUjR9>mT^uTC$6auc-L45!yj#brQ_Y zic;!cY7`ndFv7LJXu|@x4J|CF;v89}QD7c*EB(lmnFArpQn>!)WmocX(St z?Mw~;8zGU5ja!a(6W_3uZ$2{Mh$a>084{*?K1=-0*P}mczD=t%RcfVh(`L9Wt~~89 z4a`B$kh`8z`Fu7%KreQlR~MqXUcup~lfk!2M776HL93@XI8#KgepT{MdYx`fWJ9cW zX*^Vinzv6+EF1!}ytC+kHA(`(BcqRsuAp>(o(LU<+yQjTOS#;W^h&Amq*);NPUL>m*umS!U z=h>uy0j1^5T^SO7|e>O$^FJ1iyApIQmPlhOVqaH#0 zWFh4<4lz11ytAZvdG<}hc+HTeE|6K$vkp;1BQyF^&u0P>7VZ{*d8l7hf?TEtEz5tH zE@hOFQjCo?k`iBD)Gke~uP@ILP%v=Iim`7zf>G7iuRL;n`9Q4U@B#Ul3V^TMg|_1> z#3vL-k33_~dYPU@J)$CEV}&`sx#u$G&M#<<476g5q1pawdMO+@5MA1 z(Aa9CGJfT7sts0&?{^WpmWqz^_%8A}&ODFuCa6v7Ymn27PfH?q2f+@E(CFjT2EjMc z&prP|nlk5q<#qnwXkLyXiR2C=3pHhL=-_}$J1V#O>NUS;sw6~)3=aCtZlcYBKc6y{ zGDn!5NA-HpxX57rH@x-sn;u*wEOi#-0p;cuVRV|}OPYWWyK**Q=OIKtSac|BfGmF4Hl}~Mr zSzKJ`ICJc6S?;IKD`w`C8I5KydSsJIC$n-Ba4YMz$SsZltjH5#C-O`o6PL89pI1F@ zigu;80S4kI`X381wgcq<%Yq|FMRw1G!c1Dvo-HYW64Z*9o zDz!k|8L7Eh!7gu3D=l^n6v#k{gVh%;k=OtxFHY|2fC9Nn}}=Z@Q{+OAs9bBxF9 zjJhI)2-RM#I@~yC6?*?}+&4}5U>#1B44^{*pr}Z8ipXd+)7o0NBFUF>@gz!cJa80p zk5`Ws7zn0f?_pJxCrDr_(Pr$yV;mqG=+8gx%ZK(N=JAsU5ak?KjPY5Q#5h6Y(Nj$$ z8)#S|zHgecXA_kW)UQcSc`VJe_wJ3j2fC1%d^j01c%L$Jz+I7Fuhd+FyM`=Tl?F+h zFxhSQ&Qt#S@0n#?kjmZ{cirCIay3c6WB5lc^zglgSuHip4bDaW9l;pH+=DVU&+G%s zufU!3DgDaN?>_jAtsVbu-}4;Ln)uQ5=B8-h(&SXq|6zip&gfJ5mXw(?Tcyqs#Yc1u zn(DP@XG4UtSN?wMgYosR*vXr_{fp@XMnvcREB}kxAn;$s4*-x`XGOmO(@{mzrZz)R zt%lm?5}?xc7sX&!aw@h)?P#U_AK-%NzWgRk+6h$=BVT&2wF9AikceF|1U)K>c06$p zgv18~zRA`pA%eoC>F}(a#QNlLtb3BAA%9N>9^{CMYFE28+m`~>$!y~U)@Jt1jkgsd zU+LE})bEKz{~%~gMYp?NVW6ykAN>`zF4f6YT>Za{>U(m9-|D>8?W=cPt@9l@7U#R` z?`mgX{P}E`ZxoIsgFdvimQ^MWd%AjfM~mqz#>jSj_y=C?0cePtq$ZD2QAP#IMJM=J zxq2Nleqp`INwhEH{~fPuR#NC=QHF7!-bOt`j4xjq9Kvn%B`U< z*$NK)Po> z|KtwOCJ65&Wrd(1OD_bB87(I>dCLys2__l}srFEuW(J=Q!rQl5ZcEBX1G zr(0n|RuUF-C7F7v*L^1Gpq@3B%bH;)UyU)zB?qhr@Y2U{B?A>E3h6$}I+fX#oIqD(nbZ2w_hF zt5F#?5;{h7sW^Ne1l%VGaVzJh!oy_mN#187<~r0yflz|cse8Qy+C~grok@;*HFn+u zl<|ehe9QDt6y##;)CV@l3PY8Wv!HRM-jM01e1ytLZPcF`gSibh#a?yG99g6)M0#H%x){zAO9rxc+TT~njp~_Bbn$O)me##RLq28s$%kd zI|83DXaEBc$R`puFDdH)isN!`_@?&}nIhED&KX-~fL0F$ZCG}<7d;~fosJtNLb;Qa zMgR-c51r@0hDxGY2#iuv;vtC|h5%B(y~{_*D;R=i9p$U)i8>9FpocI5umE9T@pM|4 z;#vfVo(V5a0+bEs!N2lgy&c*18jKq0<>09`(*IZrEBN-71*f@!{O?Bsh7ocv_|3z> z4Rw>!)KC9>d(5TU`I;favIf!&9PawQ`V-Gd<3l3JC#*Z|?I|G%uOqrv$Z!MJ(pn-$ z$!)+nOI+(+i_Vp&_57RSlRM*g=N&V@YC9fNjDF4J)E2E|RLO(@dl0uG8G$-+X(GJX z73Irq8DtB}zPs6sqRW#iOPg))HXs3eu#azaQ&HznM^tSlvaVFYi|Oi$Dx9VWpce_^ zlgiaA1)l|U!k?QdqU2-&Uht~W>r=Wf1}_GSlJ%eIUT+GC;~hQlOQ=PTE*f%Asr zyE`s?a>Q&PLi^65&k2UUE47Kp=~$d%gC(W2|4zbB0JUg=9O5L%c{Z?ibuoQY-)1ym zYNBmjqis(Y*fMlQs1eETCBNlE0)sOu;4=K&70J1TRzd|sYkFQ1%a}?<$oj3qx!GaF zZPq=~DCkH94zqLnx4GEY9yaJnhFZ;Bu^O!PtbD#G0Bj`B3Z|5ODx2k0^ZUliBrSJPbKqruova zMRc^>V2Eo`Hkrl}mz7RiUzsC>-HC!p)-FzG2p5i@uD`lGM`g%ovKm!W2yD#{gATqO zx<}aaAp=0hT!UjGBeV=3a2XviQy}=-wsKr4>x2Z3sQlp2su7%NO6S>MX?$V}=#<({ z34X_g^|JV{mD%X-_0ovE+n8!K?AHCr{ZzV__NokwImZ=(S5c~EK5XC&>-bz(oly=q z8Q1Z?Ydu3y5Xh}R9m;xrI%Wi1$5(}8o7jpeQcg>zub-?|I{h`zv;VG9TFFrnnX@C~Q ztb>=yK@%Szw*4{ra+w0#+}2pz`$ z8EjbumTciIot-le@70;nZ}H8<9WE4g+Wh3hVJPAdtfl*Sz{xQV2IE<@p4)NiBbnrMPG1J%d7Y~1f-EZNHG&Q zHNQ@N_^Z%$gr6~|{snckBt{U{9WR!g3WFpB?y@jM8Q6(|Vsux2FTUOV%f1b3Ca?Qk zZnVzR(--%pu@79Y?^LmC`j+68JrZfeM(;?X3R=gO7wb|`*}}*~o?;9^A+}J(%(OjI zP&lI;`;M;(FJk_+@n{<8&KMm_(O1d`=;@ar@}qlq*fI;G{uG9CjGcpI>0 z8oy%iv+CDrRU??HHD*sJkU_S6MvY%yyxVhxoP2s|k6C&A8GpR-2hzZ9IkYRHg6&+1 zA5)?un`+bJvE%cyDGNH1>dU!x%!GW&-M?z%21>FJj3Bbc9Cvdg>h+RS2|R@_rB|(G z%=AQPol(Py4UF_gg*I4r1E@!w%!)VLeWy<=lLY^*>*|W0xV6V%_M(prm4~FMD>!jA z7=UgyrG4+Xk*QRm06<>rFEMG)-Ds{0;5L8A&&qn*9weDjj)Lh~q_T4U{E0a_lY(ew zK|tHP_b47%LkTg<=)^1v_+?Q(Y6@ek{pY(svuwId#3|}B+1QOHGh){ihckFZD|Td^Nx!A){?Dh%tPaV`=~5pd-~ z5=4R#U_oG*U$wIFQ~|%U`UwoNk6#+~*@9>d_QaW@++>$Ij&YqRRL+qU#J9McR4jo3 znL3BRHk?|RnAVHZc%1_O)-T%6NyZMI%JLYMbdMfYwQl>I=>6OqyQ=-!cYEaQ&))K- z@^;Yd_n5yL*Y|+Q(}j$czDdcxQjvpNi=h^w-@jX0>Xz;}vi2gy8#=2$stCHk#4??a zj`qE>a#|9CUJ?-Ag=(u+!Q3W&;%~8n0zWlP=|2>gO)iO`a+LsBgRo#mD0;q@Z2E~M zX7l~N{l;`4ZX!M~D%Kntwz^m1N2p>48$rQM~pJflJ+ zP@mCBZ`L{#)M_w0Cym9J()k>L#v<=m|1Utlp~UTdPlWlL16rVHY%cLk$@sR$ zjE~Y<2K^X}5%Z?z@lN;vQbsgdm?-uwr_E6ub5YuyX>RKSn;F&+IhtR$vJjDGh4o-z z`23?$%)4rwj?-kmT|E~~!iGF<45G9~e^>1c@|ib5PXM)&sc_Q2O~RC&$g=V&G9De{ zmDN%fsG%lnKXJ;}jGe$#?|djT#$doLVMh?6jJLN7fjdjS+b92 zf%;qzv3DH}KRiBKq_n^R?d_DD%Jb^d;QA-5A$0lN|TEde3GD*R{AAW+a&2FXZWD zH%@jcz;o~Ta;cQT;4fI@4El<{aW|;1Ulh{N-k3&EB`Lmo}XJAqZHzYoAx1e zG8Da+NVXOX9473S3-L~kr{k9Md|l}kY?|vkUuw>tFf&?8sYIUw@X&TWQqurO)lED$ zX2)$t$-PriLv2;Zqv!4>bGZC@_#-CvxAZ&Z@YW#oFDA*aTFlo(W_`9MBU97^wZG|?ql#NR#x z=fHMMq(Ti<&bWN=a`I7h3l@KqF*p#dH46SbnVPnhr}Do^SCWocRHlm(OY9_{l(~j)Pdtj;`mbxOEgDZKswuBq%v*-;@wD9{M3+_Q z#q9EQqHTExWU92$QIy&6_+Z7S%NzfFHE4f-8lye2kp)NU8+AEwO0K1vaSGR6^W@ z`TEC%>i5uR_z>lKW5Cgovzd+EbhI48#%(i&v|l#KsL2`~hqPa#P~XMCK(+PDQ$l&H zALDy;pBPLEL;QIa3c(bmK-G;zzG#TO$d+aCw^lm#CzwIFh})R8u>9uqlx}VGc#x z5OpNIGZ7233h_Q73OnFljeE+dF;#5vzFY7xMD`^a{PJgE`F)^YP4TY(p;4T9S3pNw zj+4*p(4`Phlbd75mEZ8tDN~zF7z%Q6akBy9p8<&;!HGadMk2=k1_6Ow?Gi*-Ky3Xy z+Ji|#8t{t#H0TH?h?Ww^di64Be(UT10<;7rVJb48ux9B8@wtdrL;mBIHyIy!XcciT zD~V&z7@AG^)N(6MutJ@ zQtKIKCpAAzG30Ysug}5(h`j>=sF2VQTPV^YlyxLLzFMG1K_gOPeoH#C3@pIp;?7Cu zheA$mhqkLumrNw;ZGRQn@jUEgjADukRivW7A0)#C2&>co0(7mT?a;;=$va9(*g$6_?>d3o`?<1PjE!)EeJR2jLW zp??2wsw#sSF6wH*VvncZhJf^suG{~r!3{uOOOeWiWHxrGfU{()6sshgiKAH8rbKSB zB0Gmm)V1M1r#>WFG!$8MG@e&rI4cDN%-Js&=0pc-RptxX+yKtuV?>TQBy!{c{p@># zG?0LC+}HH%a*a3BHSG4BoGbCt02vBqvNDl_-N-BH9{rj36*phH7yCZ5Rnr>))0)tJ zbZXz=PZt!UgqH>6zqRn8i7*Z}(a73xstypxORdQ^omOzWvk&(m!{i~OzU(XB@o|#o zQH}A|zZ50HCn%ZQ$NV#2i>YW^RQY3=1#PdiY)bkvuB3Faxn}JZP7+g#UCNBm?Z?;t z>j`X=qFlj~d&%3e!XIJ$DH>W0-rBR>UlghV2*xxR)0uQ0fGQNKS}O4>301vXU7R9s ztU%5yQbU@ak6?a}z}JCVgLwzC3AeM!fm+LiM{utCDJuzu>|H|;Gkn;PP34{tJTUDb zsvbe)1Xxor8AwS%1}@gaLqQtn;uwZDZmFrPUnMQ2`TtJBWe8=vyBw~4Qku5dLCJ8g^M4XerB~P80Ri_f z!=JKM3S^L*Zt~f=w*ZKx4AvGhq9P@%SEqv<>bLYDktLQ#QUXbhb$x8C;{p5TSY&Az zHuTx)7?G$*Xd&hQp#w-%ZY&iZ4TQYRr=6U7HwoWEl)X9tx=69=`}EADA}In)z>ApJ zJ^(VA6cOwG(7QTOO2{a91QOE_t(=(QsG?A){cG`0RAxh{%mm|m(o~-}-@`b?W*OhV zaW@%!_BNG0XJ4LJUGq;bcOh5Lp7mE@US7{H10E2IX$TuS{lkY6Yw zO!X090U%I8@R+O~Ms_ct2ml2c;X|C9Mo(=mP-JKeiP-W`6&0O7(*x}R+WN8ret4m( z$O`S)p*_8X3_A9FHaH&xfj!V2SSVmKW4|14kp2B8RWAlz13xN~2)zt#8bQ0(b^PvV z?%PFlE6&c2Lpn9^)(nvAg$((3W6S#m8s_?bia{Rp6RKs`SH-;Git6)OUH!cF_$4;s z+TVuf$7jdMl)lX=4@uvT{|K(wrt-Yy%P=o;CAPGG)DmCKI#mp~@=!iSQ}jZ|PeFWd zIdM1DqsiYXku9{kdu5A7el3mrR@5w|7|o?J(%Qw1e&JKVf^F4H$;8&Td1H!JlWvk= z*x2`9ac*$-+h=DZ7onWlbe-0=+S!9p@5|@2(!lwykpqr|c2~3Qhf5}NVcr34g(j2{ z?d?{1T@&KMrH6%z>(0gWPT-X%MG1I$I`8P??0lrYP%o=WA2SiFbNA7k=XP2E3O1Jd ztr;&~)}%H4c&IULZ+mj&0musz1P75&(U3t5t&w`QJxpzSnyb}VIFayspE$P{qj^+? z6IgP}wdt*B3j>kSt@1BJ6^Dprv;44;(&e;L(2L=0!g(;ESC!QMXvhK- z@h%`pf2b%JNa|Ma(nE+~f2Lqi-M(?=^HRGaX(&Mef>5$quah0mKLbbw=-9{R5aFk9 z<6}l`Lv$bX#bz|ZURCYY+Jp;7dy8y_D0rsggnX{#Jo+x4&g}Q&iNj7{lqM=RRD;&L z;tHk+m~M{zcBS=ZrM>QrQO){~rEY7VC4Wpyh_kG$96eaSctC}bN7CCjxwS_1WRYA( zjrj`;ZlQG_ra+egVO1Q%*hG#kVxgdLqrWF1 z6`?1@tD@BBQpUzG>L)7~X4Lg$QeVaJsOTk$Nlt?fy;de8U|}h}hUViLFQ-Y(2d*Z~ zZKU;j2gNK`P6+OL=v`&NP}lTY6-#d_T}xfNntgYSo=UVv63Me} z3{pYjqxZ8@K)xUZpbS_!qZ0Fmmyf~+@?Q56SUcc`Z-#HA2V1x}TKKQ7$(L924gUHR zpLPTQGQ2`oB;akjF%Rg_lfB_;1e<-S4U$qZcF2LByp$lKh*(I-iaXT6VKrH$&_ke2 z1g0J~LAa|nK@TFy>HV+x{sW~r%Tzi$O6bpSE`NfTe2ct9?(u72C21|Bbr$6zm@cPJ zfo-u7tER@pCQFci?%tUd2PotZVlZc^M{M)Sc7CYSFRgGnb#eY<3uZqtnHmtdlsz^J zE7dn>O{)6Pbre+2Rtq<*h+?zMd#Z(B9eapv#d+Z<758{;ia;RITY|VmB=TFpnrZ?q zni+W%zIB(U*vmkW$+;=z>wxuzFXjkF<8jrK-kFHa&TZ}-YAN+H19yhQnsA-w()H`w zg^CuI97%QCiL<7oulZ?+UE@Uq+@}W^Wsw0gA>^`?NcjNKMr)K2(h-{w=NNKFC}t{9 zk4-->WICotLYtM|@))4HGBU3D*()qe(ea%;R(fUnyh%e&9;5v$t zM`hUDjAhKK0eLm9q(IS;IdiJ%ZJ;8+LpQmVXsE_Dl3figEfq&XfjBD{PX%quIFnas z&l^NJjZ8{N3PA_*k^*oo3$KXp)v2Oim!6!!0!O(dN@~QX)m;XH*(`V$*%$Mn$%mSh z0D>n4;?1|zH{QXHP|4@%v1nq5bkdRLAQTN;qpyxn7${vNvmz zpI`C1E-P2rk)P`6spq8BSQ{~8ibCxq5IJcXM~+&`YHT)poK^e&3r`D2klwXp4MMli z!mT3Z_$v8UO+Vl*+15$tfI&=P7)@fMmmZCAsASnAtTBF(;CjU1TOon(;*R4{!cj$D zPA+BqXl$vGlv_9fn{N2K6CIz%zHw5SUwOF z-NgYForRnd9T%w-(S9VZC`AjA%a4JEs=%Q1-XOqfS0yr~nK*_z+81=ia}yW0md zr~@+p=?he`$2df(R@83Xc^a3&C;h8GHMFT+5G93OHE4exAol2a)|7nL`DuJB)PA9B zNd7vuqpMjczrHi;b(ma4ZJCAH@L9*>V=M1GfyZ<{MMN z+Q0CLXUBv6pEV>{P?V_Wc0^X?qXht@y+Hc-ukbO{(;$!@Kp!f@K>=JFg-a$ey)+v; z36RREaxIqBe{H4#OSRIRn)*+Q3Z_Ol4qk@Py5VBBP?lielzB0 znIYFumJCpzQC1UX5Yas#FXn6h4@Mr3jv8A`;f)uVl%HkGxZDcM4#}=;K&>ZK`3NFT z60Y+*z>XD38VN_nFU8*RYpBD%n>H$tc2|Xvl{!D8!dQtIr>m4pC<^v}T)RZmoldzijE@EY|8uFrKe)*O)O-0H);rI&iZrx7~=8n(6U)ElwE_ ziq78e-lr>lGnkB`7y#Z$XPd1akN&6$>yaT4FdK>$l+pR4*#2Y2h+9OMIAu`@Ss|w7 zii=N1dI0b*K&t?fvs^?gK*$x?c>L7X@bshgqA$hhK=k~tGfTGa4Ra;F%Ha2(zLLt5 zgfVnp< zh5KWW)Jp10@&Wt+er~vAVmEq*+i-WNH=IZ<`#v-0rfJWH#%}3t>7TCHQlN<6l3W_dXYbaCPB_LZnytU3F<9sU>e{hM+UO7{yxW>km-=FQ=Z*}$-H?B-ftO)`z7q9 zHlIje#0xfMHOYhhLc`*G=8{iQ4c4WNNLwBr2FB;`69w)C!hD4s5Ud!5Up)*h?Ykvq zjvQ@1sDu9kv;iR5Lv$|fqmEa3UAs!@pVpGF7f3Q%3?gkHJ@<{n)$N$mAZxtxb>RiE z;FsKn;1+@~OobEJEFANVb_^lY?I+O~p+r+r-L$%${tLhkO8Af|Eg?>bOo}(Mm@kRW zvWxn|{U?JFQWBYJ!^QYi`1FfK7v zAnEB*JdiY>7fU8+A%R9Mzs`m=jwN2eRoIEfP`O1Vf@kfPQKtoO*+p4LWHL-V@bq|i zE>|%+{z5-~(({;xT@&mA)FP9>2a$au9y`^SczM})EqK4Y+fg9MS7v&YqtcFm-MRvLKMn)%iK7*AeQw&bTVwC-$Py! zWJ3Q*G%uz1m8jh*jDIG2B_HT{z&c1bB=56Y#^0*sTN1@26XU@zYf#Q3D``w<`r!xn z;lb46zW^Nri1FMlPaA|P54b8sJ4?!qVSv6kfmshij8G_EZVs!+*vu%U+<~uq#fSI| zV_Ub$7!^NQ$(4GwQ#;P_E|*jh0f8##`KV?Bxk_Y+js5UJaoL)oTAu3bs#l+1#t`oX zfB=jdJra*sPLFqoWk)U;(~2E|iGmP$Qhx!Z`3*(FNx}34r&a)TJg7YFri!V5f_x3xDuW4h6iJ;l&H3c-&<^& z;$MIspd?71ric`GV#r%g*TvM4v1Ej`hdY~@+1S(NJ=2osbd0ux9n5#N%V0zkvZs6qS{_JF0RBw{6Wjck@Wr5>NSx)vliz#r}O2>^mnmVEa_Ip=!$mB^<{!V zUuLZ&E%>JT`x53TW(Sl$$OUF^ zXko4x-JEEamv>H6ShI3u1dtHKjfBG@+rtXyb%wh zSz-A3tl?&^Mvr+5T=;BenpdQ=2OhWZCH#@cwET?=D4XD%m zy!-3xZn`)5j+TuCgX#Q=YN7T{U;NG5hZY>-Pp7}!n{7VvLHVfRFg@zHV*tZDfXrSY zQR#ZL4}s6}6qr94x~*AL6w3;ciGj!~Sk0p~aOy{K?{7Z7n;xqYdu97%_Uk@B3+SEo zFF^O96fq$(iS`NoZhVK%ZH>zxs%T4+^a&LlJTvZb<9j0)%YT^c$hf)K*ciCy&$7gY z<;!J)l8g3XC)6m8H0Pb;>@_y0<%tL0h7fz?gd-FpRapv2GCO|8COiemZEjq=2%1b)X5QE6YwE_Qs7>smLq zW8WaI@%SCImgo@kio#RKrZg`@HeYT$0+cWf@|h(WDsV8Av<%Kv@@B zFjw2rt;Y~fViA)Yc(3)BKHigc1p{6jAR{6aKn8W6pN9>$zvs_F_OgBEZ1_^rymH*~AUdh*<=Y@2e!O=li|;v;{&kt$T)Bc3nfhFqQ+lCMhI zyskNVzxK-I0V~qs!%%;!Z4@M3hF)DoG|hy>Ltxw3-DDnyZvb)5l@Z$KBz?yA5+z8) z4wW}Z;PF2_b%dJ9rijhNDj$DV3J$C@X4G+7IB#p!=i7z-%97`$h>JwGc8xIFOLUiH%KA`Y``bDGlF2^uXNlVWaG7uu`A8n+ii zlICAD&bPnnk)59w>I%Awh>A>_myVlEDeSeYu(>Ba6top!1TM9aHF}Y45;e>VVVh(B z*fYPOL|dQLs<*;odz;GrqjE$w*joyRA`CNzMtx=!Fm2`8le3F8Qp&H4TG!$@6 z+3)b{;8hUy_j1007B548x#1Ir%w6aP9sWzn| zh!z5geO2p#T>LZec418()!RrPhe~?-ctnM0FH`|A14+-9v=5hkEav<>j*(C*yM`?g zYJJ(G%;d%+Xi#?^Ca28i7at;J`6_`1EV!S?T%`PwyYms$I)eg|b!vKGJ&D-5wGlHjCwk@mq4a-q zTqjWC-mjw7T|CE%?8P_5IRfx#gYWN;YA)cZC*V6}JJtZo1&}14-P?e@;K%mwcRvi} zX3I;`%lp!C8;fOJ@$*RA<+q0!t;3B(bE;8U5hPOFk=3fi@3iP`=8LXgWfM!DSGmqQ zxw@4q8XcscW8ZMOsv*g3A2rtNKi}{NjBj|`9;z*R9V@=-z3G?v&nvAwj@;YYZn--k zaTGGM%V)bcA4Y$hRNT!)?SaY@AI|*rM#i6L#?3%+wxPZ4>%2WNVeuIS!{W0IfdiN! ztV~tl31Bkh_aW+3$G50kYxUPS%*h1(t_rjF$K`(X@Sj1Lnf*N&l0)$|JA|Y7t;8LKtOK_*SL-7_`ehp4=cUs(`xKrF+iCFsVUqg!?%+)vIEF>JTOAYO*B_aM)Y|wQLnl7{%~$8{O0}-8gQ;ViOcl( z>ecIU{rmMn|J>44-1B7ok9dyfuLzO!2O?6V9YiQRT!rB%XoF6~?zcyhf4Q1@tb=rkW5Ec_INb1W2 zGFb%pg0aKCqjjpA4_v|hAP1+x24Mz^C#groWB z@gkxjU~0K>E-ed6uXm0R#D%+m6(`ciQ{nM=+z;ETh%y&v_QeH9mHT4fw@^KVDX*Fiy zMQb7bwuZ!q?maH;uE_^$)P_D;ZYO{96L{xZ7jo;8!+E+ojwYoG%)o-^V) zz`^yYoPTMGr13y=P!65xt~%H*Mh6hfy_U>kh|f(RAKAQGo8oH}yIC0Y+|KiN#+*he z=U%zTsW^_-h7t|gj)uMNuPo5xPo@x&W;1AOV(0rB^nQahfnX>uof$H*wEABx{fMEZ zd(Bu|`W$z)@!&3#zVlwhz*?7aD3pcTARA2Vq8Q%7KuU68J91S)E7bb6D2#KVR_3vL z$@krm`$^tVi-`x&nO(JN*xID;_rsI1ee15|D8G14b%tF~iLS#M=B!1EMPl|a?m=% zNX+nR-gL%(i3%-!7-5HPrGmzP@QR{C%X5Y)1B<~Q1PC(%Mev1vwa+<$Qw|O~wO~|( z`ru3J4~o~kFu5t?17N&y%+FFq+#k|j=lGEX^8q-xPL*pDl*+P;6qdQxxOVAUlQ{D{ z`<8y;FIIB6Bj0wug$ie5Ks)9D7;|hf`kAD#r(6VbbLv48+Hz?}H0N0I#;afqDK|2M zLWkzJw-s)w4@&gtgE3x$%a>0+ z_`MfvdYRhtV0nL8R)+OZqQtL^`l`tubQ92*rx`NVDf-&*Peue3A@o-??tc{ye+SU9 z=kc94Z1M)QIE2*7x>%^@E($> z2moO{Kzi3=h%47XZse$tCQJSydp!}1`{7eJeNG$t(BYKgj(AD{3lfZAPQxh51B5wz z6)?q3egGV`05$8I)WWm1R+}L>ZY9_#AiucQ4;aNjMgg&cdy|YT+fh8@oUcf3Y85S;BHzs3}sTff|I zTP-9f@B!tS4!<}SO zVLdBZs-6`QTo-BlZL0*MQ?;;hK#KU71&E1^(Lc;s1)s&Z%>@OsOxXt!KGo_6;y?(| zUEDo9mR+%HwV%swSQxuDG-$qc#~o@d^73<&utDWpMr@;#X*Lv*=lRo-FDv$jvEk|@ zsbzB(D1TGmN?~#9(1|EB3#h3IY@XizXeoo$^odE{Lx(R!P&c(d8U>?tz|5(SZ`Ai0 zGvAeD>hF8y#wMm}!rln<%1dU%f4vwg^a=e|$I0om@p+&?<1R1HSsn$zRhEy?M6$Rv zOptI@vb$i?s8GCelqpmgu4|p~ZPh8pvN((Uws;@S~kQbZIhCh6*MjgAr zC=&MhWi$jeV=Pu?niBToM92^lH+5Y;z*1l?DuM8LH$OEyNaq@Vx*+tS?in4+axl_yN zLc8%}(g&jt+!nIaD&IhX@r)U>jLeWk-cFaJXE7OygZq(+*&Q9eFVvL0f_v$1N37MK z>3Ipg{jv~CzFKyFq-EI14FI&`O{_vLha__5;W(|vDRzLELpl{}gbQ?)10Nl~u@}p=d8_$|cO7S5rc|&o($Ear z-K)BNj6k`x^#+iWiyX7fW@a*P)+%)o!lu!0#fmKgq)k@IIO6WFM~g$ru61c1NxpgR z7h;3rwlVWR{n;54C=3ArRFol#hjOLF1BVip(JL|DYMX78U0U1Av7 z%M_=3Q-;Kws)C}MBw)UJx65YUD{74QK|JQA#-^Xl9}`ruIXY>UXb}MZaO)N};P*4b znSSRcMGc{Wz+WJa}&bl?<=wlVRjwuEsah{X$> z^Vp$ULMRVCE@Otm?+6m-u=QxaxHYh61>jMEcj$5PQE~C;uYl*=5Jg2MFkGpXxX9+C zG=pQP^t^qmYgxkzr526vq0gIESHJP@JRA&&+myG3VLE0bQ85e>rho}e#qa4qILrm* zan#yi@X`uNe_+9}WN4>Z>RJTq@v5G zt4O(!wG9)Qxog@)%3s1B+VO6fgsEhgkv>za=P;nt{7TQR^)rise{K3-M!ydDFi@d9 z-77j$Aj2tH%eix#j4KR`4V`q#K{V>1b|X;W(p`P|F-tXKzUN}{sz|{}r?>PQWOe>% zRAf-arkUIWWf%4Hy6VO2iYxGQGq+27_Y@5(F_33O%vdO{Hj-U6z3PuHVWL`K=3Nc$ zAeWnSed|$9)!q%qkmBG3kC7)HzY~zNDfk_g{F`ya*i5o2KDS zt1H$kq@YpY9+dCp6GGLv+MG0;SENh4r2*1o9Eer=-UV=pr8k!GWy=WSMyN&*Z46J|o3ksusjOQB?Kh`vq=CRO}{ zln#@d69GMJy4%9f)w0{RnTkmFo#to1XV2=ds%)pS{XhJgX+Gl~8iu|ICp)O?J3Pvn zm&2VPiVOk9nm5PInh`eQ5*kuN+E@_=E}-h93tWb$*?gTZ%^X%ev)9A^OTEDGw)FABBGd>yr-)3z8XH1y{8#@mZW;4&{llZ_ z-Rt4!5|y3tvXYK*y-aY9|H|1n2&g?OYUsHsgy+7R< zK4a_oHf%#^w$cHOwL+Oh77!2tevOUISJ@)@@d+`v%l-(GrsWS+hF_Sp(k%Ht@DbJE zGCHC3UlW8eq_9tKdny>jS8+Ux*u~FzI9Y+%CmkV?PAfY}2?9IoaTMt}^k;}PHLAX0 zDXAX|_%`%o!A?eY9XaCWcvND%kwB(G)Y5y+{Ji!CA7A~;AV-nv+3m*fr-6EZBOw3) z0*Js%GCnJe|8b+2_AwkjC(?&Az>U62vqRek8m)z*dP8a+%~CP_p3|BiJxDr-+LF0t z!@l{*+50rz@w22r@VQ}fqv*noX}}V3sQ?Os3+*J7$Mn1Ul=A%H0cnbRLel!X>H%mZ zE0(Q6#k?5J@xx%(x%%^3OkqKlkXrGFu+*M)g(54L7z@NsqZ3d8!n4dcmfU)fxu$yFZ7%TSStLWIRzFkGB{2d5Tz5&7#ak z#PI4jt~jeYrU|Q%fG8>?B0lSMcD>V?q2Ng5T653euXzxSy8T@-R;_>+Ym~lnmlb7C z@s~m*fE&X>kPSBqSKdoht#Vfm%mBqnE8Invs$({Lnv+=9&CVxAec5#nI~g=A$jpMw zuuoRZF1%MZ&J)F`C=tPU1X1Lgx-W8n=almguMnx@bNFSOS`+*rY)GZz1xE-vYXS>F zZVhtl9ND`O4*EABEwT5?1KI{a+d4sxcGpnuZgFSwCbHrM|4sRuCzVR+R)+TDR3BZr zA8D??Y|bD{@t`6)QPPSkw4{zw=ZW&K!20r6?Xzw2dl9ACF?qdi@OXVHqQ0H{Xh~JU z2z~I7rNC`?eY#X^l?<`%KrUR>I-}AS&}%34A(tS5{C*bvW85*|z^Yqy+V;!z zR``*ie`@9;zX{`_V&30e_SVdG4v8UQhZ?_+nE0_Ny(ZTn$fnt@s!aV z7Woo$dvCz6wVh>Bw$;b|MQx(UIg1)Nb9oWeB0$?ML%Sszmy$EtcE$bENE8kKOE)Me zI0K`WO-+6h4zwMMks|^LEQEukWYofO>f4R5LWk$4lPeibQm+4nrSo++Ex%SVt$)A7 zP!hOjXdt83<)VQGgw3}0?`6{!+%P8PCWY2aHOgzKAUR}iL^@x-#k)@8w^lDNVQe%SS{K{p zdholaW_VRb__D{@^{pyQTb}%=gVM*-`E`;CY8JUZ+vNLdLp_!FU30fTY*oUNs48Jz z`uw(RB;%}p)$qZSu3?1)(NzDyIAD7&(O1+9AS^9yK_N~^wa}l|=08~Ivq#fDHzM*9 z#kh@9tZpNcNbO7=l86`PIio2Y7VPZ5KO1+v^4?hfT8SRT_eg#xP#XJgo1ay|C){H3 z_WhZzXcf^0b8j_QV#0ydDDNRv|| z)(kDQ*~RUrFApwxQ?v7>t&ZZ=L$b4tUlL?-)PZQAwE>X&Ten$HP84kf5;yY!Pk|do z1ot2tAKo;UU=bCHn#5xWVz40tLrz<43-zn4u~m5NFX8A)(BEo8!{2hx8R@$GjN|q6 zQU@}q=dHw|X?KG|>Y!?hAHDW@{;B2DM3PH1l1TIo$!ZtAYCwUsKfT|a7Hct#4;^af|#clLHW{4JDF1HuH0 zz@b@@or7%?1tqsAFa!eQ#>=M155+W4_tyfweQ>zYfgkhd!qWsP91^-Ox5ukc<*#xI z0<%IyNR*#8itn*CL6-r^Gt2P0J1+8)m{kd)y}&x&Um|K>>SDKjwPie%8EU_lX?h--3JVuDfg7GV3y1 zzPZ0~fBC-3iAO|3pr~V+P>?^=)7}EQ(!gJLy3GeHevpeg#bOBo@LjD)c{ zvRUEN>{8kNrGtc(NIXdLtCUlr1~~*iPM%mIo3PUZCl6U8pD$juj0{>#1d(x@yoCgF zDLBbOiIQAjM^>PT?OzPyOP98s{1L|5UB)qyh8k=MYS1Fk@-ZXYPzzg7-(&1<&rEvy zt$?r9Cp@M=f2@wry11|JmFd#ts9sP0SC2tKOKf?rQS4-$8M#suM@EaaPJ=1^h!9P+ zxcEu711d9t=QLGon=%?8gQgT&WQ($W(POU)mAVO9b3pa5UNZb!+RX##tfEaWcd?VL z{MC0oY#quOkI+@Pqs^p=_IaL#(R&il)RdZHbj3`dL~rV6n{k&@Mje_Hbzs*&r=gjY<*(q4ZR)FcE4)YgOZ> zgp^%2kv4YZ+qh7SF)`KdNzrh#VE z>oN5u_a_gB(tfg&Np88OftAZa3Cwi3sb)MAp$lU3yhtH-t$zTmV`xNQK0X%|=KdgX zc2`l>%1G_l<9IiHC~x2#{pMWuSMLO}h+f3A3b+1n+vo(AE2W;Ja=MwCqGwf8Myq1g zFj$xaz?ekv^5({rpN6l*E>>BJzc+lm$q*`yM&*sK`n#Ft?MbJ()lMs_(sG!AlXF~= zMe7>Rll(clD)a!1mF=4;c4nC<8$wxSyusmBZ%YGCxk9u!zDvX|jvdqiS-|D&B&Axn}#5nq08gw2F{?xy5;>E$V(obK72Gz8;zm3&6&BhtXD!Qw5D{ z)j-4J2sQfW9^!j1@a+dh(U++Cj&EwPnbM`ZrFvJGGI1DkzEgCxm$7}HNO)54fm2W0 zxZlwDV;iwjE+ub zv(?$h;?qgPnQUizVs{h(^fRtkOHQ0zc1g!$M%9e1j<(2|P*V!S5u4v0K3uVMA(O$j z;cMYGbs*}CTB++Qnl6`}S&Y%5T{q$-U#k?8Z3*g=5zq6z9<&4{PZFJ3|8Bk9t_k=i z_T^3`bBxb7gR`M7%)FQDyYX+o)z&(JkQ?GAlGCL5?K6e_fMxXWjgTipS>HWZGEUG$ z+ziZRo^E-^7D7!UL)VApi_aTpOwOnK8|x;jTadRE`haq*_}WQ97}*ShEr5+0!ZwdE z%LOfB1~&AFoe#%(%X9`2YoH23mY0~YG^h{k)gZha9u*Ib^snPL5Z;J!+b-FD{rHGC zp07+w)IVBIntJ}-aqyquqF0`t7jD0tB9E4sg#HVl(zVX+`sWQt0P4md=L;FW>ZUim zAr(ywmffOn&hLDh$EW66bTVZh^*OJGygIqhe|5vGs9**y{lxdkvT5??W>D#dY%qm& zA(r)U>MQ}ona&SX(Y|j+*68Qw_yY)6<6rb+gg0h(Z4n%d-Nj@a+B@)d4^w#zfj}e) zK4yXIeP9{yji{)m*{Q$2nI^5lWxj+*Is3CtBapUo5+L-BQg7y}{EC|x;{)P=^c|V} zc^5n05XBGYbp*zUspzDvzgq4!@MiJY7b|tscbrnspk!vmouuPZuOoz&Jz7&esZo3j zQdo2BbW4f#9j$J2tBmEXbnxXtgnb*nU`(zp@k*{&nJYF{&VZ8u|E7JEEWA{(y$(7L z%lUUh^E6s+N+K|-_Gv@nmDfn(BrHJgQ0@V4VWmgpfrecu2bs#4mQUe2k&cHYsfhVI zBnhSZV77J<1(}BNNVFym`e438$obTFrPt^}`nk!Tm&H}USgf#xL6)SS%oE=(U=L}A zOc0wdd6D~tScW14NAR!dj!(av*ye%C)iL4oA0?Q4mxPc0dBYzJjo=g83z>w|;WxE1 z`h4zqHC5d~n-bd77}jqVnt+R6{Ge@Kl1V(iz&qRf3tUO?PTX}=eJx5J zAmeH_4YPNN{{(uX<%+r_G~CVQX6t`j%vu&m59Pa1Hv8udw}5=*m&ysd8HyzhE{$Uq z@YW#K%b{aWskteuC}-l=cH(%#gi`$(7+DDTRU(6-U5tkJuU>oCOXCR|ky!ECP3>=w z5?wnNW(ONX=G${3x?ad2S^}M<`tBIXw(KSn*k9_dYXw@BN1{9Z9E{0z)3-W5jTmoO zxqTNu>vj*`-Xt1L$z0V>%ginpyN2T0`LYbxdOL%Ht*mHUn^I@SyjFr|?QZ>maQu_* zmuf)4F`p=Qld^GID|0myzJAkWDv(o{;nx@P6OTUCjZERYf&SYn-Llre;=!FpUtO?e z3)#|!od>X{VkgyY-dEbq^mX-y_WuVcI|=gr;Cc2dwcJEVX)c6AAyi*chm^1&fVNxjm{VolUcj+a1@82j>;J@?mhZXkg>Cfdjv%j0CMTG1 zU79UXrMp`?mg0f=ZPu+)Fa^KM32PepD)7J@q2-u-nP73pX2RSq3`L}C(rT9?GAsrci#?Oyusd}U4wR(Wn5O`S9U$L^Q; z*S)Q5h;sFlmtiwqN5@U)YTQ}p*KCzBf&dOz)s39l-I@-JFvU7-dA?9IY#0l) zc!z?5QA=^-`E$K7#nY3_HeWbMEjtH|s>IoU#uh?MM~+yj-)z_Urg{~853~1&PF{OW zA!42SEVCm-#iuOm%uC)*EI8!K;KnZGpt3KK(W9g!xHglGRBICvNbAgR+(kmiZ@*^16E=S%g}Xgx*|V(UaRk zUC@IhiPA>pBzBauGC%>q$Tl$z7q(~H2a;3S$z$5^GQh-8v;rNz+Z>pJ$V7|%MH^>I zkGoc^Fuhmu6oq>04K9@k8O+EywxPeIq`#0b`Rsr71OtChJr5q?WX4mc#?1%`nhSny#!5+U{Vrl=FjN23#;&5jF8lC%qjqd^C$3;? ze>2WW2@9)d)y>g+0SNnk*;w-SspT-hSXF?5ZS{O0hM}mEC1P#$5IwNS2InSle=0w$ z6C3vDp+Fned2Y!9O~-gKI6_WQAu4-CN|TW6paMbNhbr%^Qf#A;Px@LM0V2Uwfkyop zqkIcP$9JT^xW#3{T<4Oz;L8iy;K?H!y5#t$d^?ZfF=p7z(*6-@r?eH84hUGNe?jXj z$2bKp>HQC{A7X0>t?5-9cCa8n7jVz?0lprblAN^Yd@m5y=JPN+pp3gJN)Eu_+W8L6 z(wUTME?77)7r#!VRYz$KgC*4-@QcdtAMS(|igiL=DA(IR@j8mmr>gO`El|aq>Y?QU zxP%6kepuY~PLeFB^$(HH--Clj9B$t{kcqf9(6h+xfn!l z{AVcfMO%VL8GF0Ri0n%IdK9|e=>?*0bwH5b9#0Xvud4^k|3y@yRb*A3DkK-{f%^2A z=jW^UhJI%z$*HO|>D#rIp7%`=8afNyPZZ3ZNg9UtuV}Wj9zL+m=`;l3EH4+du=K1Q zu-ZawPSCjCKu1bEoESWXf(cW$w9}TI(T)jAB& zKeL0xWszeviALAdA1A1BSY$ouahm~B$1K#vp25koK9c+`sU3*Eq9Y!*^HivG&!03hEKCP zGT7L3gsEi#>;2H;>XX~t-(b%IgaA~YTr<$-w_02jR15e7K%r`!P?ayZSXtXpQ!$s= zC>for%=;#eS5wQ9eP zwwg8?&qWci_Bk5QgWsUto6UbYwCTAf#Xo?qFtmCpk1qrzs?Qo~?lL(E#wVB>!QVqY`^0{^6(p3DXix8?7V>MBm(#v7i373AX(ANxccJ$6msu&#}TID#)eFfPUe`J(W_+m$V?;v&PLs~+ILsR z2#zqL2xHg7$Db@;Y)JFT4Lw>2Rc0tIkkkX+aEdMSz~rjqT_t{n4hl^J6rBv@rNV##$fv}JvnRIfuni<7z4`15H z$x+(erzila=hT#;OL=zCQL+>Z!3-&zTH#}puI%umIg3zH^PPB}YOV1jvt>K!j}1?? zTQ%FfOSf8w&AxxYIR}DwGVxB7Lv~{6QFpI`9pRBQRB_? z1FX+p@)C64G&%J%n)8XgdP1&D`($m&Yrj70-`tjx9zku5Po_3>@=ExJg54XsOsolm z%fA??0r2Ou|QFG#S?D--K=8EKWS@*=BseCS&270(@baK9N=vz%j-Db99zC3v2QA_NFtSE-gL6 z{;Z*hb58L)#4%UmTNARCk$ebH5#pRulwGBE^CZO zcR$o^TJ}vza4wIlYYO=eagNP0)6jI{H(nW%{8pZ=6>3-;)K!Z(bGS^7H1can)t&^`Z65bKDC#({px(3@uB>`g%jKW5r?XdH+~)rbc-UT&Ctmp>JmzNoG*3wp4iKJVI6MTE!)>ztj{%z;={C$VA@g|>_d)2=8 zT-rD;3m>09Dp7eY`|U|E>|u97>A|&g)#7&)0%`gzD22xd0@vb|3o_Z9)X(bq_UQ@Fm2FDlxC^RV8--xtEc#;2_Vz8I& zvy~%T{A}dvq3|HQ?Bw(JMo@Gd%R}*QDndC2L)sMFLL1^75s#t6j2Y`$KJ!T5qGeYT z?jMx2BvHy#I?Bs-IZvLX^48qgv~B$JhHn^Jg7E*%$aYcZA%6kVsk@F$>D>G@{N;=< zKxd^K0>UPc;7yI&#pcl9=O{{#v_B^Kbg<~OBrM*`Aftv1ZT%j(7VFRqZQKjUG~%Ih znZL$%BdM>1dMo2TJ6(g|02vaI1FpyIORI^C{fF?lXxs3Z+MsD6v zN`_O=WuZk*o*2%?5ckY}SjQuxVkgnO?@8##e_OZ=aBptf$2k~;?H(4ZH=0J6(@M`R z3?RfP_!J374Gs?s-eqGLcu7(H4*dgz0HETx!GW{~Y@}jHG5SI#5g~K%Vo@_(JbqqO z2!ffyqhuqCr0K_)?s)Ulqa5Qm_H&cB)Wub%xgy*s;sm@4sXplGS1J)_4u~^#C}JOq zN9Kuotj4yhT}s-DW~|q;CxIn7BQ+hp9Rf?c6ov6Lti=~2>y_5SfD2gPuC{jG8V>9z ztM@}~pRBzP=1D@GP+IcdS|;XYb69kCd|d#tO9=^<{}%o6y{YV327b>x@70f@Ki$WE ziUa*`EeVg69m5Or1NUv#RMcS_>V(5rfCz8Crst=+3>6z8e==q)a>DA%^{`W;?0Z4l zNn_gp2F{jCE2L9XDe&Lv#V;6|I%li%M&a|3R?e~+q0j2yUl#4)V*Y+dI)H6adiDb5 zOZGU|gjz&MEax8PIUCFX5ooJ^;gs`RpWn$X6*`2oF83 zHQ930^cL-tB6b9~q&L66OE40pP#pV{qO`Vgel}rpBQU@NAj2 z_yHrNF%vkvKRzqh%aO{Z#WbM1JixA6mBi2XtMTBnl!><;D_m(bL zxf$5?(S*qa2aO-_;}{I@UU&+c{OHBkt0?8Omi6=P@G{b=fN~sGXja@hs2fyXbq{D* zuXIiL{keGFQdea4qwO$?A@T64U5sY6vcAM;mFIyoGbO{pi%4qQfcKjBcUTO7gnz;wUK+QlJ*>Z8JiA%gpW5GqXGhC zNANO`pFLqiaSGc3HZQkakcurl z#Xy9&St%@R7@!2(8_b;Dq}3Y7p{5#$%}i+t+g=-b$B!{jACdkh%w#*y(1ko)vc7N? zm4&X9j^_xk-6<4b`AEGHmU{9^9s1+NqkQx~wjl2ZUPC!aDI2)q}nP&+=4DQ+D z)XsxVVfr}q5+zD~GN2U7TZ}y8#6*>ZI|&`t$*iu#`*KNd`S2LBY#fdkwmDR*IC#@= z@4==K_*RgYGg_?0luTNN$bRvY&tHqaS=5+#PHsP?{SCccxoUG^vUhen>bXPa<7cecW}?UV5(d^(zkkPMgc|p}VlumFAn9aHhbfp@g<2 zzOTn70@DrvCVQnMIp!&9Y9Yb5y$@e5C;wv!06>T!%znWOkpWUi;zse{$CAWPAq8Vf z+t?7^7)i94y|-W}U?&CUEj?UVA^`vkAyFF0B?4B(*9oZz0wS=~Luk395u{0_Sz`K( z3RS8wI8ll;OT={?RK&0r;TK2R(4!>)_%K6B$1q%>r`Ox5lN?-5hYipJtFw!WJ_|4J zfl%qUsfZjsT#1Ez5z!tmUn?F;+UMrRVbNSVbQD>XlsQ82P4yt73tM5eE9sp5oG4pkZj)8{}GY*T}h`&C>>qi6;PX&@*(l@%W6+O57%QZ?4D z{J*9%T-Ky1n7}o0Cfv5$hm%j&2kpkGM7@8QCPd;Z)hyxo*kpN_KfQQJ zR%N@eaY!Nvyjcj6Z{NSeFkg>(_bMe%AtRm=( z6>43DGD9f+Hosll z?T>NOtwGDERc8Jcl~D>$4bEw{E?K6?Cb@NbxAuVJLY+gZlc{fAMzT^too(aF+Zq#h z-o^KiTqdV-r6hVptd=9)`MG62)bz|QDbb!EhoU8l^xMLrg?rz*?y_ zhw+}Wt8kQ?l*$LlAHFq42CQQc^=EMZ^$20&=-%2{1C=^^YNt;Jv4S8vNR>;$Q~^bG1}RzCgu{?Qxi*~G^Z+(H&8&qEsj+G!rXXMOIE`z8-Wv1-~G zbF^vs?b1&h&BxszZrUf_j^AfK_pG%_SQBfCo6ulPu6EhEZ1-DH^jqWY=6^ESkwZFpb{fBEMHo&DFLPq- z;HFC>Q&WFR$tfhyG(rVc$uEXGeMIEdwq&P>Q-9mxD}8JjU!_0cd@5o~X^qX~UOz zuZ=6wh=W@TwgoC>1`Q0p|HkNMEl@qtytV!G=-%Ow_vg=of}zMGGI*$c;?R{APxeGo zrJhg2>-NZDCtrr;tv4L3e_iT9uIiSs(gE;1q)tA}egJ%1T)7wF2FGE8csj>` zbL7LOaNsGph;ITPOD7jB{YMVvgIFUZAdsEsnU~{N}NMdOf8<`mkz^5In`X?ND3t z_putr9P>D#hJQ8&e7_LQ>+pWw|DN~@g@VwK<+aVHJY&sj+I(uwQ%GXu*#61sArHu1 zr_qml%WL&+;`RM>+r8d6(1j&9n1L|gD*pXB>h^WQTGUAi#djKsO^yLm_7sqX z%$Wa@u=@igwicHOqg4D6bwM$hx)AG{&dT|_mw8%<&l)@Fz=a&J5NO@z3L@3lIk$bG z=^ir5L#bJ$@a^kEv)11%WEPHGD0GWLWq{s?h7W%(?70su%5M-kN@DxRnKSY1Y!Yj` z(wel|U(u9**9y6>HskAJ4wRyl;``&LFogKiyajcI`A{kbJ1Vm5BoKFb4SUg4SOXDY zN?FN-Ycg{{Z(M;llv>LWrOX2i<)aKO6jt|mzwsq^x}%8=*t^hw<$3*X^ettCpyVnd ziZDesfHb^lUhN-1H=(fgB7?tsx5Yam+%mQ7FBD=o_Pq=*b2n@K`{mT|l4Gjln0D_yn((v4%_%dA8=8#K>S z3{+HzJqgGtaWNx$_(rx6sNfL!7huH4XBL%>ac5Kw%Ux&Jijla_`3(ysOK$}Y$Otp+ zE9z0wzruxAq>8|3KBsRlK6K!dNmWUQx>zK()c1ae7J2k)`p=&%rQW)Th?9|tH0<{- ziRAn~FFVn_%e@(l?InC3J+7GJQ?8S5Vf3lXL9zk5$_guQSmj;{be&p$PQ1#!xtg%_ zvL-{T7O7x8(Y+TQXfKRoZ#FhPXfUZPqdlmIuH1?i zDY<$;USl7crn^0-8*oOF+SqmO8oc|Hg;9^?*xVJ#)v97trA&ZYG&xzfh|K`xqFaFq zDVWjn-aPKyW@!*-Ed+RY{h5`j=1$d*N z)Z)t9Cok%n9|}cOu;==!Xj&u>K_o?zSrBULEQOPZQWK}Q_rLwP=^ovxy8TGveA)gV z^P)TJ;C?8j7}^!6B!{oj@k4|qEKCA8sH`BLXzX|z7SlEoPB>$4prMuGNHeZr)P$oq z{TZR#unRqY=FNf3sms98Uj@k9+j)F~mb_}u>?}A`>?frT4V#pJwS2k|9CWFyprLuv zy!t%8;f-(S2A=op*&DAv*3*ofa+n8V-ZEet3!3KU&TqdTy=_;HCL-6%w?i7QNRvtg ze=*#oWT_SB<+W~<^%r|J8x@Q-Hn!~gl}~M4vL7CJp5m}D@!h1_{f$U&yP7P>^h<=8 zzYtF8w&cL{%2TR5?$PqLcQk^2euiF3UzzFlGE8fY*ypeD zkczY*D0*v#>A}Cs%})TWXNbXtptwC*^Is2Ylv!)|?7sMjoJcB4P7FxA&Qq_3a5$7hN^9o|*JL{8lDPktMa~ z%^#~q7)#ET4rvv77%%gdQ;=BetZ2}wQg2d&K!-gj1fNjEMpZFeUs*xm#m^~vQb$#T zb=wa^z0fxAH=-;>mXD`cg7J4%$i)$v>NbkYs?lG5S}ajqhg|-wFLr&4KYe=SCV6HS z^px|`OdO`d%^qK4VYBRd{rVHLh@@kz5Yz+|lc(@rS(h&?Ff>@FQRSHR({xg*UPsH4 zN}8i@z%p+lr(8OZF!EP~yJJ?+E6d+h-A38Xz$44H{ZEhX7h8t*CKr{BMF2RAsZ-PP zD6z#V_Ccr_(Z|AV1&nBEs39>{-U zFE)hBMs;O1*dI-MIyt=-&Po7$gzzPe*ge^!bX@Bkb;Ywx2*|%}*-Y*BD04NgF&rLj zw%0HE=<#BA0c*b^b>=@;$GQGGXX^QK`+!l;l~-Eprb^uPTWgnPr^)yTInsBMl2`^V z>BSoHFlD)%y&8qF6LX!U%>>p3l=u|9eC&xwb+cyM zRg-4&*yovcNav>yr;WcUcExi7l?Y_FHK&8alj8>j1`NS#01E(u{5$Dcv2)=xz`Zbj0ZH?(ULS>F$u!7u|@6pn}R5-=E*_emwTr{paqT`<&;A z>$*;rShSO>?)<@kz0Vc`e=SI~POy43ob++O#H7h+?B+esuR z;Z!W1J0V5E(-#FA6u8!h5YDdUpGFbH6j{|mJ%e|5Sr?aax7IY@%eZs5Edc_d94J`= zq#@Km6+zqwp3D}lVdP)s9RJF4~(x@&XjWs3p0c^eik4GTIL8o7m9e9}9kGyP?wUoE<=n7x^()K;JtQZiXUTrSNNtWjwHQZ`ePONcsu?THGdn&OWg zzN0LB@Wk4;-xf_ocuj|naXY8+V4@7+YBS@L7WJ_VoUks^{Jdpj^NfoY3bBo(m%?69IqGjuLJ_Q$*GC|<>o&yu!|z2s|pOFO|blfL?J3VKDSd0;na0sc>J1^p-0qSh5adJS-pCMFQ~2k-h2V!^C~Dzc+@cai)n4pUrK; zpkT7Yno?2GG2Bvp!4^GDN#UZf-~KvV1X;pwOK2phH&RIPLBvSQOCfR)jvzGofb};x zyU7puO?R}m%6ioO5!`OUz*kf^F)CETTC~NV`Dsd3XL&2xU@{$fMLFs~mu^lV3eivfBbZ~%u6YSQ0f5Rzyg3$izjv|xHRn5+Z>KgTozK;#VM z4arIYY1q|mAUykuv$piL)Y?clIv^YyaHQ&08d3GQ!H|Z4p=w(6b%UV}SR&5Xh22oR zVQ2hxn*dAV_pQz1G#9j>K%z}F!+5N8jsHmKLCu#bDjk0|rGO%ySuD4HG{~!J9V%3H zL}c|vt0v7kR*cFNwm-Gf{0mV(z-s1H^?z>yPh5t@uXl;K28}hZ8ovT|bi>JDF_+G< zz9}s(Q>P0RHALZT{Mnz<^vaF33;Vro(}w=izF^|v=(a0s9RHzH>^@OBTM{Eb-cy>`Y2TaAgi&J z9OoI@OIXazGml7OCgOoE2vf)=LP!cJ0p-e(Xr;PtkFG8c?Scka_fkr>EhtX3#(Z2U{(6Fg18O^{7aDJ3Bchrb zRpaMZ%F$28zZYGn2+|v`FAyUxj+&U8i-H54#I5qA`x)MRu@>l9h}?@)J%Q43XLD97gP4z?AqnaNUt zk`|tv9Qj<(UzR0}vbRZ4m39zsJlC?=ZX=xTN{e{ZMS5OCTtA99#olI>+Xzwqqs+Cu z*3-0{z5lQR3UTs$lZD81N3?Zue01eLDwbyt&Fm7i5Hx8sbSxpXsu5q%3VZg8*q}K{ z>ioW2OOhIj6oXk1sM~eIDY0qbe0o*#O%!f=@WdNKuJU+cg3JNdRVmfM<+T)Kzy<;j zqfl9yNC~&+3p3;>pJ_fh`46}-t-ey86Z_w5BjJH5s_c^Vzrq#<!fqipSLt}O4iT=m?BtVMtfO14eiEU9+qi*_79 z<)jt`tn78v5Yjp%Q-IEh4@8epHwW@Wi+(d18wWth=j;pJZ+b!ssb>KImSAus(xj0F zm%?YhnIsHH|2blED3OSeZ-eZa|33rGVrY0198a5&6I4j2rgZv5K8}z$FJJ9mtHI}e zY5T%kmL0Ucn}nYF_`n8o2z71P+CdTt@6Z@Xo|1n`+-vk&QJ+n4lH#VnQ}glHOmqEO zm44yL=V?z3l#y4U3p;J-&io)Ye$Jc~y#a*b;Y!Q(-5^0`Tl#L4x`y6@?M2{IThGG5 z7aT@By!$K(N?xgL5BV73wkEhJD257-*GHfQA>(cSz#sQSTZsDR%q3_Sy2KbYMW>rg zL>jfOjiizZ)-~$v&@ilS2(pUNe6e-@Fe`zkRl8je!dH#61OcG%E571Iy$3T$kMxSl z#w?<2#uBNiNm)qg(0vNJ2A1p1FRMGkNR55QFdzt7hx1f+fTC_+FEMDvkk^4h;ZykL zQXF%XT0RjEpt35TFk3BmN`w)t`YB`UOUtLfz7os6SMDDdo~-YX2O*vlIn*O3XX|Y| zD3eh?!wVDPp>U2BvCSZ~-ooZl8S_^Zyk6Pwts}?jsygpOB4-1#eQFa2eri*8!7P>2 z2HylY7mprO-Pvks^B0+~@?ZWPcFO?9rZP2G88P{wCdZ3fK?jD%O3Fq-Dh^>)Uf#EQ z79Tn7e7yraz&KDELfsE{ONC^G06c(z{Zo2cZ#Et52jK^?MVnr56b0fGf`Z#xM zythY%$=n>wk>l*lMh&+vJe#}HO|PnGv}bNOQJ{ZQ6sby@N5a|z>^S&>0Om<)M^gZB zfLU!8tjPtmVEHBwGEdk7a*UcbR#wHw<0h$dj&4A;XXmtMQOBsA%6`-YK*^yBqdRvd zM4{djqY;U!F*a73g2(7sOuY5|X^&`k_B+)(JM^)2seYoOwD+WbJ$4M@(?b`EC>F0_9e*`6pO6=b>V|dH`FqTV>DnYGK7n=jZ0W7sUu9t({*ne&>TQeVJss!FSFO0U5}G)0gK4s zD3rzUuDlVdcsSK%DpJzG_e`W&VvNc>Xx6fgC<$rU?~aTb>j~%6*jDzS{{GSfL`%n9 z{KCUJcHYo{Mu^7=Eby52F!;qIh13z=bgevh1_nfwl-s5_#pt)M^rU>sjM|35q_PV1 z+B3H%uI<3XL`8P`(Kip4i}C#Hvs(0+Et#H#r1ayPnsjXN;-8us-=ld7pDrq__CHj5 z2Lh0=pa39#97QFnsCZ(uLuSITeqR*@nm7!>uTBs#`4!W8 z`S5EbXVEi+jSghVhXA&Hp;K5`qy)Co#|eFWL^lmf@$|A_9eYS6OQN$iS~gugXj+>d zvVzgiw62o0CT-JyyFr_5U@M-i)Vck_;8J@=t(D5(=rnKlj z>}&F+VG)5Y(@#D%#XZ(8#Lou2ppjXaX}XBeCZ1TiX|0aN+$%-h0|r1lk5flSad?sX zGi&mg-lb}Avn2)|hC($D)6&(nd7#svV4!VZI$n-k$w*xJ!dB*$krWA-qOiN9dXo6- z;(J0OqZ)`UM-87x5>qU%FCJo?T`k z;C%up$Lj}@;yJFzP$%;i&7$xmQU2jE{3nUQZtP+2{QZkYn<3F8+oDd7ZT(kllCv1% zs0RJ3_JeeY>6oa;U4%8$_|FDy&va{CU+wq=`4;tDPs*hHT2PfsDnsnEu#jyhQEDzH zkgRd`G&g;jxy)E*vf!7)m6ZG;<5#DYeC+hc^iTj222hNW@b|FBssjh7LzD!{i`5tx zB5?lWZKTIXGZMYoh;TNKNi{H>l`QX(>B5PEobhVodkqJ?j9V0LZJwHH`cs> z@lzOdSP_W|?IK<%PRK}HC2}-mDVcz2TY&)m#ib-f2^vyjtw+Uvod_=orSvQrjuqOt zQZ&MUhNVtzQ|k+Jzh^~ff7s(NP))|l3GOC9!J(mbn5dA#A`XboU`VQ?TWP86fH`+) zruS`!(hEO0;GSAvIQSX!ur5h4P9_Vu%~vaP-%L=HS*1lMHpxR>GL^;0234&9Q7AH| zMtET_q%Zj6<>*OauzpznzISF;{1*JlWJ+!ZXQ-jxfXsiD>xA2mr@lgzLlp&4gR z#=M#J&pxJ%Ci2_Rq8&}u7pti&{Y{2!Lk-HbO?B89U%5^R3Z89+4-zmOi|e$y$6b|w zE^JNI#T~}CT?m+N6LfFzj9WJ7`SpyuQW1()?jk&0mfYjoI+j~XPCI?d%PJWAK48A0 zeD2S)-;#?$6j$jT!zJ}qrqh26S8w&+2));uON<^b^fJ84k@5RpqV;iRd0o)0!Hntj zthW0V;?T)QRXQFAzUR9o%B>x%iPmsAS2`-Y^vk3_|5N<~pa2KlV^h1MJdyy&y}0c~ zEP0V|!fYku3N(pAA&V|7(%>DHGq^LoR`<3{yi!R}$#9~yFEFj#U!fywZ$~k0&hv*6 zsS~UCa7C8YyF88Y1!7%P$IUxI%^%g=mr8yQW8`B&!RU<8j z${$-M3qj1qal&BUGm@HB`wzhxS(=|yzk|t%A|J?T!4MX#nRB}+cyK!F)PQ1SD7SX- zCYt~9O!@De2C)U(M7@&`Dg$d|At>i@BciBHg1bkop1vB4F$r4~kvRVrh>&6}E=H26 za}!G1mb#!MMmY^fR-E4GKOS(noU$c9SXccte-XvRt?>5hj^~+aFK=Yu(>mx)QLFhX9BWG^6=q?mUK8)Lmf;uyfI3=2+adBTzB3 z*`i!9H+p_1fkB1(je6$B8FHsg#S0LBKPN|!`?#1+fr8!)jX+Rc|s|Z zEfJg+nA(Y z@fx{_2h?wAzZcu(Pw8%?(S5XXToXyxqGBjDXjyoc4Vc1ZCyC6boK{m)=$A14^|wui z?H9$g7t%|wMZ~|7OC+Hl|56s zy4f2s3K~+RF~?^*PGmb*xHe=!@RWx!$oYq!Z|$3* zOTU_f>h#Ckbbje;NmCv_v*!n4%sMfKd_ilbODFPq8D1Vw$;l42=hU1Wm0>Ive}Y%3 zc8HX1kN^goj6MJvEpz{o0T2@kBL|ejXQxA6g;6m<{}z%K+AJ`wRQF1GVjns;9ywOo zCJLqA)hZIG*c7~3F%u8|V*KSxQXfDch$ELm^e)tdEvozou~rAeQzr0k>t|0w`qsK! zKKJ766ULwTXQ1x@8qx@})5cY&+a_n3@&~S5jV!9tsCm|kjIc*9y+T)2gw1t7TR9rg zVXyRf7PcGDLIVuK+mfX0rR<!((hzekOBb65C;3o zI*E~v8H6-~w(7mwy3{~@YRlnJIdBLE^>H+gMd~O!TKh1Rbf;&YZ3{;rr>MqQWwb4m zM4@uW=M!V}n|5|8Z>Jjp3m#<>tpY8f2@#p#_F67#bLPc3X{D1XqO86v=Z-U1Vv8fY;O;q)thMNisZsi5weDMM;qDiMrG%x|I@pOk74Q+YFrY7= z9a|t~Q{Vr+GOfNTJw6PMgh|xS*NxU`NVoPA#F<;pD+NE_*PWDOVG$O102xn0J1QCq zso|A3kQ)!!>2j#jWF)4hNX!n$2~cej+xGHhd2Q(H*t17xuY~5~qHYH-^7%YyaOE_5NgbzHJ@qfQTR~R(Z2{-WnuG+EiLPN;e)DF%3 zJxAL%JJ0FU3*2`*4VFw+P^P~4k#2&5nd8Z0#;`{XqOMY0grHEzw21xCa_af%ZR zCp)douO1Bk6RAgU-eLf0$LAR6<^E52?5($yno`rEQrd!>Rx4W_3?i(|`zZSuNGtIM zS|}c=CSNE;l%S1LKx_NKI@yAIwMLZSGxroK&rK;Wj#69MPsI4b0iS=8-#isZ$BIWm zzVU`ZE#mdit_z=ZGB6N3Nz(zzNlP(uA4CW3UIzrrG{}si^KSMTNkn~1UTQLORAZ%j zRwiuX`0OuoNCocZ*b$!G{^#10UtLWgZg1kvL{p&iiSOk^)C(u)zGrF>{SeZjSP zTSS$<5F7x6z;tG5d9yfS!bB|TBOIkTDR8IK{3AOBrx-zf2BWCdZK+d{eZ8lo&uJ_y z7m1>u`_ezP{Ua~hIBnFejIsvna(tXCRK`(H=c;(E3+@gLQ>T8PbojS~w*}M3R-cmD zo9&GG%NZ=2Y{3nU5o1>7054{$Zh+-7%f9)=)lx5}fE<%h6r~v?mBsjNs%e7y#P6hZ zt9F#74KDGx=`#5APeHWI#+i*1{UAu>V?c2Bg`9mA}^)R+MoETx}lX=8~2kz90di#1ud zPah{&_J4-7PaY4k`0bvdNkvSJb7v3g_Hu?MvdW+ZRZI0x1qMIqkH4f=TO9rO#!X=k z<36a|i;PWV33E$iH2cT4JWMcfNq1FDxf*R4*j@G0P+o0yqa$4OuW%gAm&xakFGZ_Fg{J^JKJX{h#wXCG_Dm{kAf+MWudn1!1i*Q;1<(EnUdg|Dir)NwBJYAEw2@|+Y zKTj?Fe59RdnZ64}s=UM-D=;4qF}=!H#+K;?2)9tyoBCZo(yj_-{^Mmhxv@8|)pu03 z8>Th{rX z0Wv~_#oe-~=<`%o`UzYlL4F*G#cfNi z%8N+qg$fQcxsOGaY|x94>|cQ*qH#8_EYBDT2Z;icCRC;x{YO=%{Q>H`4-1eTFpJkpzwa~ zU5YcNH@THIks-|8nb9nM({oxke@aea>^gGV77iAoh=7IXZ|k$g=+~MbV=siaf31#u z9%`Y_@cVcVZ9B>R8T{kaAf3)f=lsjq3poe?n4YOf9}mVVL!*YF4>)cttSzhGI9()U-1`-TaEMYTl)1^1=3;vscc@9%g15C+gkewT$nt-F$@- z6M;FQT)=X74G*O*T4b&^1!^{$3P6B0mrsc;jD7^q>^RBTx3~QzJnbt`RNayd3g^Ni zs-AnxWGivxgXJhZDK0ku)cLe>;I4dSJ~$p#e=n(!Yph+uE01?%j4BvvWZfdB7I;p~ z&Ww31`wfB{*d2qUo$>B?$EfvmQSdc3ZSRmCPVa)~D^(2))w|A>*7llhavBM1PY4ne zs($QUa-`xZ#3WsV|MtoP40SJZ9NczVjIDLe7F0pMjhuO86{Jv5VGX&ne(kdM?te8g zAWyNt;-BVet?<2|K(qLMx6Ik~!}u&Z_xF8Ol(d>W)W8P^&c*RpTz7Zfoxb<=P6mmO z8%iFQ;n*RdQ~EQ>sx+Jn0HWZMrv#@Ur4pm79r5L3Yl9HR;3~N%&1tbYk-ewYT$E78 zj^~e9r9}g;_Bm=(3`<)B?br%>=fZTL@#6;K`hhnTfP6lFXxMD*VaR8N;^^A5m;}Bt zsi^Ey(`;zFZtid6D%)=DDo{;0SH=^asuvPCJTs=uMDRKjMPm086W-QOJDY_Iv$gI{ z%JjBrE&W71SAtFQ4J?qsG^sa6Zl(8gtdch7MBhl7Q4**QYC#_msTjkEi_1vdfDMr< zJ48uE_hwI6C!pMJ8Qo*9^^g3>9?s>1LT}O^$|#628OGTu9LAP7I_hUGsAf>9<0JN_ zTs3BxAcTwik0z$^tyg~<&so{ba~0DMsB`tnQBDu3D6rUiKQ_-;GSlgJ+hWjK)u}2v z#o|gXg!~pR6LApNLeH_`Qms3pgNok$ujlKAdz$Mrzyd@u13c|=VD!A%H*WclgtoxXdICzGk zA&t79+6hEowVVc(vpbNJGdg4=inHFnWY>O5=-6AuH=lpe?u~d+>_SgiVr;_^m#at@ zv|IPS-%vRH4Ou=wu2}xhJvJ+fXg^8~NBWoj`^5|G{bm@dB z;KP5#R)~eYs}710wTTGPR>I?9$l!vWb8)V^*czmXNOc3=H!WE?K9~@7|13^KYEf24 zHbHkH`#O``(B7TlH5(+H#hr(2fJcdRd)05X&_u}lS~ZDQ`zTFY%p5$^_0!>L)hHcX{ zGC-e45n-?dIITz=;&c0OJg&z%{`-VBGNyHwh*8+{1T^}&&T88KLh>5P)B7s zo|Ue}^t2px*0R6!e^hr=txhEAq7#cpMnTHO0EX)bh)hwu@O;T=@@wTas!^So;=6eN zgnrP2BO(+>&2?5dfPrE9l z0zSTfewCT^)B2~``jXpKSC)`T@Oh1vkY-!%eoK8SgGnZog7E|c=vT!-Vj}H$Y@tQb zA>mL;S_cpVo}~iH56M8N5b}{MShZIbaEB8%0O-YmYkyZIhNcs*CgRlge~W#<@yT>5 z6Y-fG3|0m-+GU4}Svj!FPnIX+SyiFrSjiv)b32qEJ@&>%-KPe%$TFsovbt#BuD2su zbzyk50CPNJlROsVMp}_0HxxDnyAm{Gn;l!(`k@XAqRmrSsxiy$)*L)xQZeh zb)rBx(iV&kFeQ{N4ksTKT4iN8QTj1kpcpVgh1uhNaLm9(@^CZ&dnxoUmYxO|q6_3* zk5UH3Y7fq)-u>ix)Hz-J?q*4(Ll51RSY$8u{`^Cb`+>x-P&!J=6S2p!#lx9%SW_;2 zZG?dnXLBO=?982MSGQrIZj>$j-c=qgn#(sCSW%Eljii|{PItzq z*w8QiBTcGzt%L$#ARRC{G|UQ~3WIRsu&NP~C`g+zdE`gmzSb3Edf4NCa3wP3uoCaH zHt&cUTuL9Sn5qemdFSKTw5kC0?t4IB*x-|AG=o_2*G`kop ziF>)CP+XU<(hIY1UC+LAn+nfvhs9&onh7Wr`YHHWSuzXLpuBfVmSHx1aclBw+cD{e0#ztWO)*w+oTTk!)f$>N1Gb8`G>Ss(QX@<#t zN5#2E=T0QH-WnY^)K9^sqfqfv` zABH-L8)huZ6=*y4J zrn;NCb4f$5Z#Lx-Y&K)@oBmtJ^-3+x>s9f~{i>OnJv%eH;?IrWZSR>r3K;zu$D$8P z{tXG#6k{OciK}&Ne`(=Ge|2&*@-&;E9UO}x4wL|7?Ke9I6RPQ1;&>v;88Da&0nsnx zPl?MGNgWC){j}lCWvAWRo5E~?sxgmGVY8v|w7BHQ3<;wy8XbxHT)jc% zI%d?Cw^5hap#GWNF}%$AV7E_*dHOl!csRk&X{tfnX9nNa@~L+Sr|t!|?uSB{Jkk=K zGnp(_9pQW6XNAqo_g4FroN*ughmTvkf*tuM#dvvn1k+C>husSb@`JD==ttX^FOKZ* z@i2ItlN>no2p@?C4N1FWNgh>ZIDA)*8S;l-mZ?%ow(+uPm?Xt3(nEw2@|O(bjiW3~ zq)paa62Pp``8N0nbFYro8-_EBG=>ZT-&N(=QUn8wSZ#F@LadqucLO-Ul(}Ft6||h7 z7of>{FbSDhLek(L;HB%I`{jrCpSylq>at$-Cx4A`SiAvPV1y^4q-Rt*-QSS`+ z#U1uX46WW|Us(Ge@R7|L*mVUhBOz22O;yuaRX8#GRUO0wRK2^L zCRyS*XTEM zbV~Y|ZPYS$&7nvW5&e`9ceDX5qvMh#&?E2In#0AiW{~sac*iVmjMUfrgr_?1HpfeP z^Uuk)G+NCZgM$uv?b6!1pPjnF*Z<%s*H zU$U?~u|}S)Dq@J8lx@QPS=kO5&_f!hajrIJC0KFusEyKV6(6;$ak~F=)k91Mx$E;Y z8Sdk6_iCOQ<+lf~RZ;{Xfk->KafwX)a<5A@o!!c- zpnK-5sxN7G8J}O3aMeM9N0ur(i1woB!gMRdmI|ppuRKOSyx4;coUDJx|8)EWafgEoMs*Vx7uvETL0qg*ubH0X} zkJsGO^(sUg`+_&H1bF!wvW?opa)D3y$UXBWPL#oU$mMP8h$rM&2%+GJd50@+j9cH& z5WDwZ75^K~Pd_ujQKOJNi_{xbXaEz}yev0Xvsy!S)GC9E9+~+~H=}my$sYcc;1H!r z{)m3*m}m-u%-1>Q`#IV2SqEWIatqJk*E)m?|Jlr321&`PJWvrDzY}0*--=ST^O=UE+fejK9`seAJ$PO8Uyu_9K)w zqw(NpRFCtD!CUq(ZJB78S~q_cTE*HVk54~bjnjwif4O5qVo^p9UPTj{UeRNIZN+XysPC>lub zp0$Do-637X%xyC{R`|s2e&v>AbWqBYDwX@SRWx#`saCW{bc7D^2+op=h_MehHC3&n zf8mr;>ECJBZ^HpN4>87Llf}eBJzazP`MYI-nd!)piDOp(ElyIV{Zyq}k>&SS~nnTCgCem%gyOxK^2D2Z5~ z-zunZQdvL{Bw@m-gVaICN)@$zBFbx65!&f@b?kdo8XyWq(aEh}jO3uWI<9Yjyor%N zHOiZba#e5WWu0FQxp53efGE)#ztTM4rkJLLFKz4wG;xeBZIR@)+uTQ~s!0b+T$ADw zxu|PZ!mL5&vV|*$EWDzuxp{g7H&s?FHYSd6y7@^8K(#FuY>0Tq1_;HpU-FX&98`5w zBc;pwwO?$5h#v@IDVlGAY8>VNX@9a$O6x@Z)Cw{z(nZXkc48kB@lhNE7oyIY(u8yP_R?+^lywHfCS=Y9vb-g>`5W!SZfG zQm1?ICnkFro_+4cYOi*_YQ$$(f6qb&cPXLQ*IfTbC{p-g(%zLIqXj`7V zTQ$eWWzC2yvIlAHVILABX%pjMaYAW^B=`BSA%0d7L^nIp4f{U*%hs%VQCCo!u zmxR9tIJ6mn4|k{&apCj=D->O&09Jf-MeKYgQ<+(K@idg_OUBbEPOw_l{4g2iJNz-5 za0qS;>Cy86ASPG|pHY4QP>-{URb%z=vOdlGPAKMcXWbM?Er-`VVU-6}*;T7rM)%SQ`M%8O*aeyyFC7 z%|kBM4NKg^3pyz~4D*qo2(0~b40RE+bmnmj?f5SRICI_ykH6EYBXcs#1*e~`A{{uk zm(=IIrHt3#+xWlr<0(PDuRXkJSQq+z+;Gr7mAiDXSV3SczUgc3t7Y`gNX8I=8in6y zi@m5&#w25Ou#PC~q*$I4WrdmBwe!xn+8Naz6O1%*`b}kL<0@@tC^etx7ja2RP49l}uD;#9A$HE9LFkl-3-tVlCLsj>Gtgf^!BmXwv}5MLq;TcC zsmGbRU;$)W76re0G6#y|9xn)dz+{Feh{8h}$Ju3q$XG#PctxFaAe;Adzr^oZ+yq5M zaKxm_Koj=>F^|gP6GaEG^m1Tz7gVR1mb_klGZI(H%XwDLsmpl<*19*qQN)(pq@#(< z%iIX;!<)q~!2#jRjTsFR6naFB4!m`Gir-q%l};DLWE8Ku)f*4|s)R?ViqNmK(^KP1 zeV*6A6L{tA4*4h~UuK9op0um0Z)M0Z3})tO^HZb?Yld-9AxHQ!z=QoSrN1sG*)4VO z+VT0QcHF2wcCQWhGL8B>6tGmKe4#T4D_QYsN3TpGOLq7p1v?x*hVw#~H!N2Kuu?o?%oBk5`MygTT4$JAZ%r53=IPj6OEDtUm+|h8k8!o& z@XRKW>CX=;%F}-~RGIqFqY)-vIOZ+q$FalY9>|g@oyVzAQeAV1!Mp$4(7oubP)Y$H zR3i4?H&Ec-<0g;`l!k(&NNHye!x<|(A+bV^Q8xs-W}u*ab^!mc03J!NwsF6ULK^tnIMj&=wG2nanKe6{^afR#Uel3y#FYEEMF`L~k<-ekK3>62qY9iMP_-iJQXdQb&#WQRgOXlO~ z%!NQh8$VzJLmro;abRaWqC23^Hcx6vKzw0@*h+Nhc$T^(k5k6eytUh)Y_;fL@>qGK8;UVLl}1r+xaF_?}5CVs!dYo-V6u1?`( z&9X_5k|r%+H<=_qCR`iELHRg!z0^|EE2qlItGX(I!X))Z6G-lONi45e+^NUWhTjJR z6rXQL)ew(caMn(5+{@NmHS$2RTWCJVc+*&GN7@S~yE3plO&Gm$D*LvaE+h9ttIw+g zP>gYTjZjy1q*FfXy```T(Hrr3^_R`HH!MK>|2p(rRajX!$25J4CWm_+j7ln^!BqUv zsLj_BF@|!TPFFD>+t)t`O^f#Y1!iuN3ioW43ZC*@vA=FF}ghtku;Ddsj(E`7BASNqYS!UaOCx-Jz5jwq^eB@@z43B$8^Qwa}6;u*p*JdP!viL&8@xLL@^ zfHcp9zI`Y^or#+bI(kXKa%H#(n@OsyP;_uJDF)+Wm}8wJcWrY+Ztr{2L$O`rh(R?3 z4&rvcOED}%OIeuRrijg6rDz0Qi9GrjdsYCY0%@s0&8twxO*R?`Ve6ryLP-IW{ZRSlso;Q1e3;Zl?~+9mWIDJ#Ao04 zI~+?VXVfRBETgMeqV^0tWrMbhg;Msks0LqDH@L2T(74_%__bKybDS!5!`D8hLRm7w zEobl@lOh5EfHcg~%sJ6XImv3q+;E-_lUWX;avnpSk#JyfVu-N;h**r*)^h%wr4587 zBX<4;6Vx1@q#HE z3e?CNattyGb-PWZBN}neRNpG@w69 zAj>(=-5na&wEumCrTMxw%@FtLQVjI{!(Dk{hq?y3q8;tZZK@`<*++N3mo%FMxh)-9?1eK7_4dL zjbF4d6PPx)sHSPwXgGZ3_CMvf%lr1SHy{SmA>{Zny)H&m#nP>Tp*nD?25Id1k+CMB z=;&<6zp|<|{n@?7M3_LRW{!Qsy6IBwvyXfEZ$C)bsBD!sk$&%E?sGMrzf9z9{?7#W zDIwX`5NpH0(ussE_H9k{XzV~r$0f_#%Qug#o!7(fq;Id~L`p3GX)OS1T$DVOcQDS7 zq5-+ozg5)Y1PZPT8K@x)SD{>a@(~WEv4lc>C>hBz8Kd`p6~}sF%6Z{Xc)UvRI_}t8 z3A}@Mlgb5~w^l0IGmMea0+goI&d>g@;=;g+Ug({%{UNzuarUR8Iqy+-a<$_M*W|m6 z7gjdRjRcABDT)b|^&Ltg#(9~7Lj?g%7QTvvNNFsGWIXVGRu)y^sWx;R+i6Dv zMj6B$;a!QoIe8@^`RPS_rr`+y$&9B2n$ILhknNVEvf0^ihRyNJA3)Wo1sPIDfXLma z%~1$)5SbX0Ac0gaCvE>dgAaXDOc0S9COg5AwH1u*iY}}Oj)`mf&Vo`w)$FP9q{m|i z34)hdx&3S(Y>0XJes>Xum@a7Oi{Jo|28VekWzqfn?L_y0a+&{5`8a74hs$(JER%%f zs~WE|Srq1Psn<(gYu(Bue9e+u%b&0QY546egi_g5J z!9g#Jl3gjE3eE!E#eV`ib;8ICn499`VYHQ~WPI$@BoqmPS#4Fr!V^w!D>zK_Pl_4y zz#>75tqYQK3?{8HW6bVi1CfGEheQCbRqu$6w;sqv#mUH03W z#<%ng#xLpVc8oQK(=d6z4=vR87t>^E-RHXkROzDgWVY7QwHour<3`P!Jgll)_<|w9$;w70F?=DDqHB+N0I{2lRmGJ%KSwd|H99f%q#Vhcfgp zoJ=Pb9yWVFu1&GyGq>Cx1~D=4r125&*|VZRc!uc?mR2nN3M_JPN*IsQz7Za8nTIg+ zxCU73JAh4(3W;eS=oL^%aL}0h5vI5vb?1E_E?|Ll zCg>5eleD)MA0y3Q*ZJDJaVm2=OTI1%t9mjsZ=ASx(t9R2x>0U?Ag?3VCipoDSd;F` z6v6;|jh`RZS2ND!ctXhWg7HT@EIjXJ*UP}Y4hm!ylk$?IE!$nqy!*OAiuJ>ZKq0vm8BHhm7R96a!D8|v7Dt&6@ddpv(JK0Z|b(*~4rn&Ih@l}!pPu!l~ z{wnyEGhJLgIHOTy^UIU?T`#FuoaSN*Hpyd!>LJMuk;EWbWkn6bN2Vx>#(bA9bbn=vzk zCet#{^w{?8R*}USww*>a%@;;behO}X7z(2c{xECa`PJw_X!iNLS&}aw3o;&XP&+-B zRdg%eV+>k+D`J&FjCw%sz;xbyfB^)W+WjfHJ>%Ojg?&Q0kW49v9(Qdsa!YKIGaq#_ z<;}eqrIj8XLP@+{z)kz86oS4Vg|&2YiXiuBe;jT|$w@zKj- z$n{NzWczq|_GdM+&&}+rRoSJQ`v1!pF{N=u@_D%cu-yM+?<<4ajJ`Jm1PcKY+>1-l z;MxXvC%6R(b4v9wqx>#Z^Y9@&FX*fEF6v8P@lonGfs_$EC>yyMw;_guN38!_zpdm$W zN1B2}9_hWm38G({$02u=FoXCFwmKi$p6yTywoS_fr%lty&%CP=^^B9!m!`JT}1(3D=#^6&@_f|79V|91TUQ_?7w)|XzC#U5PFN+EQyAaQgu;htKHoKy)Vr+5Un zt@X8uys2C#1v6Qdm$(6rhE-#eiX@Z+KQJ~V^sm)Bb2zP$Sqt}=4txx2Q->|Qtwrh# zKC^$TPy-i$NQh@yDVl}y_ovDrT>Od+GIrEX( z=u^08otv1uOb*t~1iKL^@Jl^S8srH^G`k-*i|*?s>c|%)48*s~kh$Rgg`&fLXy#eY z?JuKu*sHE(cp`JV8ll1#)9vy$r0gd0Ga?5(z;6!=RJJELQTL>@TY~kA+;(gDNY|4Y zO*o}@l8Lh=qc_88AH)j>BVF`Zs98BF1+hdX;;kH97=w$+dm`vp8RgM~(9!HXsvo0J zH34YU*u*=23Bx!ugG(M4F0HV4|ZaagXF$z5FfHAJ$BH1j5#N6S0O7a}SI28FV$|Ws@*@X#E zbX0Kq5k0sj&VOOgY8WpkQ|2+7{M;uS;3tyk*~_~t^*lVcZG7&7D}|~R4kP(7uv1q=txb<4b07&>)O_*1wmANM! zh;lCpJT(tt&TpB1ayK9>(aq!Rp`Kifs;&fKsnZS_^sW8r6+`7w+dxA6%vd)!I{Z~O zSdYn6NdW05^m#n*ZsT{pC%Nw6(?&CU21koD%_cdiz1ezN`r77J^ zwGKtw+f_QBLJ)R2KZZ5`CaGbMbXBoc4rWJ&bH=mld2QP7ex$`%VO}gR?X-T*`jz#n z_2?plaxOQSRNs`S#3Y|JTgS9WP#GRq_2zY*eJHPu`&9O;-?c?QE$iw$?swY<1~#}k z$o9Q8h6!X8Ej=`&v+nxA_?&ZeD!JS$1)aJMb6c44zkjgqLJhcMddwZzFS)4MZHH;J zu>$GL6X%eK7-}tPy0~CXKN8Lk?a3iOhXrnzt*zx}^)Qn(@>CxIYgtOIPZSeNK8;z2 zE8N1#su@4GrqNYZpX;=_zyd6#RhK#Sx#N44!_x7v(oFx68RS54w(XE_?`1y2@4m*k z(UQbWd3r7**Zhaam;76{id0@EZX^xz@rlCn*k?CJKP%AFbMdt{A1?oqcz~enOD}M+H$J7YQhnJW`mh`nn1~|H=)~kN0VGh*TBvUwbLez4=PD z22{r2blcHQHg|>0@Ioqi3e}RyEI9L0JxsqpY{!W$OlLSzHIWyA2~QHY7o(JErA~}D z&>Eag(C`7X83cM9l|F^)c2lu@z?rCiv-qfBoYYgZdZ#e^ zi%pkm@yB3~GgFy7>`4pqYR&g948>*xObff(mXCn54u^6=v!%8H+otkRH~9kH8?TW1 z*Ji65HSpjL-0@KzJp*{Lt3$*Xof4 z+KWl6!+oDtmb#xTuo2})^qt}+$-|Dudw=#!hIIA4=S;a;X$o6bHAC<}Q(eP(VUhG; zW-l!wz0ECT27cw@2w%t!{~(9ww0^y^n0uWs1?)jCCT(@reEU#87{L4XwsD5N1M_bI z000m?+#Q_BGAw^?_b$6408@#u0DOFsnv`qFD*Y8^;QAHIeF7MVi?;bGvnT^0@Lhat znlF%@7=VOG_zkI*L^H?gdn+$wdo}=KDcE!(amVaFO}YA>IvPFV;LlvbPP%W52x7ZP ztvo$vS+6a6LiSR2v)q92J_%=HG#7MzVq9|_iK3b?WuUT8gY23ucu>EME zh#4exKPz%7Vlu zO#*}(pOjU^3$PJf*72Un-G1U4ay)czHvMxJmxH%%Pg#@(tyVOt z>e1|f22^LLzf!}V2k~p!+^bF4mb@pBMvRh9^>thg zRVRI@vDakWSoI3yrO2nbCDn^Fd_-;8^WbHmnzmb%Meo-cvjMe~^njG40CJpMIBQ8jsk ze#?Nzwuxe7kN^egFo}qz!DF!9PweYozdtIxn;6N2pW_me>YR1Ap)GXto*Y|}CHr%& zkhmUC;73co$%-64^q*?+S{kE%Xkp!TaX2OStvsuTe}yH9M{76m_2aXcq&I4`hU-do z&z&aPYzkDmU}k07-tN-8Q(7)^U@uP4=YAy>oV)QG)C{nLv6+7ve&Nxz>cA_-Na(?$ zDtWS|snS&LxX$ht)JS|`ofvyM(rrSph!SBw1>+rEcft*&Tp{xhp!at*d+zcY`^0ws z!eI)9A~(T%27kVoiV9ep0xe@HopDV3(a6;RVx$2X1tLG#(SnyZPQ>6s4&jnbR*Wr` z2;?1!w%f|nh)%!1O#kENaqrZjjYH;e%ir@F$A$Bnhe=!7F>lE$)fi1q&U_12X+b$! zZWQ;QNZPG4`;*!9W>6*QIxHI9=k6XR4f*7n?4^sx%>e-bG8dmwalR|}jG>12v2*fu z5t=>7QU;nCK04`7XrfK3E+1T7eAV4z?u?59TjN;g1;|D=NB}-4a&auRA}PB2BR5>Q ztVoB3PZ()aVvJWQm|-(r(%w~(mscvd4!iF>aG`#%!h0~aAw5@HFTr&;rmA(ics_%R<_dYMDuFf)< zIWGIK#U|EkEi~UtXlo-pyY~6=j{A1tY9s)VVWc_3VJvi=l&ULnk+}95gFNpEa-7Cf z&AR~6;1KZ&xEaGEsLmL!y6u#InB$6K87<7iFg95wG|-2}Dmnk%g6Iq%>z{J{PS-RbAA8MyBl2P2aRsB~i(!nj6S%?a?36dz+7b zC4lqKi&K#JBS z#}`vly|gcF5YKUWv^5{mi5}j!S%?C$ili)CMl+>wI)?5>n!;QK#;ac#POsK+<)6}t zoBRp2*(LhK{dj!I=`OWkw11Uwu9UMR#O4|D`6<+ykGt+&-G;HdaYmJ<#Pvf__XKF@ z_?X-0<(_DQ+805?$T9vA3Iu27)noAw|xow2hahAHqFE06fRkN(Rg%| zgWW^$=dF6>QKk^LiTqV;>3(ACH%h~i)je-a+{G^{KQEm{6nnDETo*M#SMN4d?Mols z+t3O9zAM}urT2VAOEmC#AX!n9;-Y6i3jIu_Hg>5K_n0ZthT(d0=|!Ds2vzR*b?}eZ zYVh8rFU}8-Ikt(80qo=m%^cu*)`)Z@S0cjcK)F(lgNjLp(zGiQSKh**t^*ezkfV%I zVrSJKLW!!)8iX(M`$kIoOk=QR>=IZ`1>)Rl>Yp1PnMOsh3zW@Tsh7~e_Y zB0`!+mGF3J5)uhE;>X!X(|RR`fSR61GWBm*X9>~~+!TF4pX>c@w=)4HnH*uCD6Lv6 zIW=z+c=ZZJ)G$^p+LvL^ibIz>&XIRs9uxF7 zusK4vh&$0Ec-8cZ7|ncl?9&23r&(#brMFIXP=A}qruK0f^)&QhqdGu6@I8U8p!uKb z%pKZD+roZvvwN%qMKl^ei+;R6%R2k5UZwgod9i|f?VRc#KC>YNnuKZl|=k|5YiJa?Pr=eepMpb=Nw|)z82Uco4083Yal~T z0q+>aqy|Lse!UvTa&QSs{~rB?0#O_r{@@X8^N-#>{S(SC^ZWIpX?H=9yQ+voy&baq zdo%vy09G83Va)(rq`K>{kxI(&9$r(@ct&5&gj%ABLna5Xd8s}BH*6n`)eZ|mr72FA!COAs9yDRj; zpGj9YySbp$;-h|kyhr&qHgCMl=*RJbESea~_oY^exV#YR5XDp)FjSAGm*X|7UV0?M zqx<2OdaWnncY&SeIF881Scwufc*4A^9H_Zjm|^?!cLr5y($dkz5$*Fox4(Y=eLqPt zT-r}`vVZ4p=06NigBZ*uSF6aKjkAT#P*LNm(7{UBtg^qvCz9F!@M%_J8qGD>s!^JO z7wJ5qO|wcnSz!g^_JkF_cneXzOl6M2P%nf3 zLwpk6U?FSHYM10C;p`9E$j{1=hP=L5ZF7e`7wk29Xxp|1tV8lDPIy{kK;yv@ufem{i9R;51^j_IpIlZ(GQ)d>zli4+P)gn#VKaQ-r4Ptff%**Y~3yd$5 zC0@U}?tc7?RO;tL*ITKbwnX{3RcOrUUd29FtCyZxU!L9pO{noxsb*4_p^TWVd-4+i zroHhWLwWG;7|w9jyIUnVYD5v-9$*id_?GAyTMu@6Hf#hwk>CL0k8dxe2hHI}#Aa#c z;>KhU$KhiXRSa4nE!pI`22Ax#vYw@r*1QOx)CjWydwUJ@bDUMp#E7c}eacb)Z_pO) zhE zi}mK71LeTB1mc=iGOWTY1IA6swq&*O7i4^G=u+yA(CV(%!SOkG?4%iSbIwLfL&nLn!aUdRNMWj6^YSx28>zPxDxT3#lS}Y?#Q?yt zT~>lvqfUSbw*c@bj-k#Rl^T_j5z4+TdAq+1G#m*aFs$1Xfrlr?#tdiD(fgGGGH@iM z{cuSrpkl|su>1h-lh`!;8W~k`;}OPBBd=?gT5+q|7@AZmtdm6(~|#7@NL< zgzQw;G6VKC`428#u;U(6-;xPeWRP_WZJbrPn`NuCjOig36D_tA)8$p~c%F-4(YZ6W zjey@$y6QgR}4c4tp7Ggx{G^3C^?+_K?j1 zs&`H(fV8GxBZ<={oEI%*#$S;z(g#bb4HqNP{H(z*2E3R5_<&YyFc#+4B=DD0g za0dq-?G!;P01E4JXph5GEvt>m{;2q9X%fu?T)CLzN191q@%NF9*t- z;a4;+?!s{sT#y!gTiKQgZEsIKHcwK)Zw78l(;9FcK9@SW9@O7xvR_&(kH;n4Q%a~icuO51_8HU6`&5I#M`-(ejZ z`>~1!ns1^|qUZ_5Ol7>OYOOLhm}QqyCwNyi_CgS#Viy$p;?Ey?-k^_HBR9azpd>$& zt+t60dmh%+E0sWJwGLw9T1y{UF8RosLbW(k$$WC5x-5gZe2=%Xb1J;R1y;rCQen=& zN+h)jQxD$W{{4G}43 zz>jnU0OAaJ_OMJ!%DI6|&Myt@?L`r05}EG!s+TyvYm2t zsF@f+Xc^zaJBEO-kzUvbYMzs;4f+0ck z%6yFqu$uhS{j3LGU~nzGtjTFaC7^wJdiKThwWKTLy<_J*=l7GRXzE8l_xD_sJNq?1 zu4!O)vXY;&gJ!PfgFH^@XbFyV;puo}(}sZ#q6bP@BAaZW(UO{xCUQ138-e}@z9hiZ zh;pt!EG40Sde+jfft$0FvqGrD7eu4Sy@Kjhxctr<}TNeUF)QKQ_DX;(vaubtReD zh3v6%c75!zym9JbHFmRN|7&r6gcwxgD50lQpryV9~F@ewRFw_gaa7cBDA_x?PA0Y(Fgw>*34;ckQw%uTT z0wh8>3g;O$Aw-j0t}^oW@iaxL>9rOv<8XDWXT?<}`kT zM&@lNO!K=aoV!2nc-m3xt*JI*t}4yg^&6JiRBnmHYncEQ)$0S7tMy=q_3vZCx12I=$eFUJkC}X7Z27(gr%>0LtLYMVVtFr zxwVslG1O}XiuEmU*oM&OzRUvWmq<2& z^W1M#TBWbN1d>by=aMW{Y68hptWJ9Zjla0sDjEklXJ=89S+`|hIs5gB?m%kZz`1Zv zajHjyQk>DA&D!I*A&j}PU_xtWSX5XNB+??tP)o~}&PscKDTur=o(*m?*<3PDXRTKSHcLSf z)zRUt{2XPSFiKBJZ#!b%YF&H>H>8fDuBw<2Tto!>i_lp{*U_kf3C^f-;m)IynX;q#hpWS=X!`^?h@ku*R%ZJ{r7)* z!T-OX|J~Py#KXaq7_d@-@o)eLz<+#iHfyNFxu3ip=Fp9#+_eh%Mvu^~@T}ZXAvQYeB;5Zv zpW%wLjKXRA<@kj}HD(bv>*10%GC&xHg8*>P7(aR<++~*$fD`RzPFIxg^oV%gXkP@k zFjm&LMS-N^OGkB2{NJ9Y$WBfN19%dCxZ*Gq2oQz&kNptP;j$g@3gH3-7scgbP~0XE z`Vx726g-`Xo1Br}ywD+RAbIqTYicuD9OBr_-+%N z1O(uvkdd%YwGaS_Brk}JK&{Mpsq4$n*<;xC7pti^Z|>HJC5H7Wg=I>QaHjq<2Ysnf zT1|&wy27jvFMERYKhI&VF<}UZJC0SrqFd#kWUOovKkn=N%-i2{!xxzQSVboKSpa^w zV%25GoubKA?Nw}lI)3x&`o_}7_gRNdv3G+ccFS!i5Qr$G<4mMD0mN`a90tpRTG>i* z0Ez>~Dn0t|THILl@=8i~0b_SGXSK~3RVOVIH!3G`FeZnhdB7atlbs+zfEg+o=QL7Y zO*Lt8oL-zpSWdnZ3D;q({NRH#YpztXtpfz3NS?(yXoyvgQ{j|^W1J_6EQitd2ayDV z#BT4=wF$B!Blxh{X-gn}B3(RzVYG-|t5jVuh;5#!cwr;2gqlEDi(Ay~7hQF*PYHcw z)hdQsj;y42!Ww2&Q%^5?BBDm8lyn3WPTk3N&#TFUY9A6A@pec3LYfSb2{N%p+2`;p z^-Fs&=SrH+hsz5MPb$eL`Q?348j0~+iOjxd9C+43r;Vv&+?#N|b=1iV9;bF9E8*`; zo6Jo3_V>3ODy>fMw??+h8n(j7V{u_z@b8qIQLj{VfcVdv-^y785-)9ExAYV}5c}+I z@xlK+{m-XU&zfc)hIGXUZo7mYNSb{x`mkR2$nb7acyJ$7;S5+Lx9F&;Yr>k*ya)pv zUsfvm*YwN?sunWvUb~Gbzu`|%XvQPiD+dhvh_UjVvQLnv9xj?}q!YNo_ZKVYiOR#HmDGl4Xcm(e3yza& zAVXX}Stg|*4uKDb(<`NBy%r|b_&|FmH9sxsL_`V7MM)WLAMZypI5R>ENiVJ7A=P`o z)U8gf*UD?1)fEZeQf;ibu-o7CYwa;R4)oq;7|Cf))@6LoeN>qW@IeG?L;^MFe5iJT z22?J0#wxUnV>aq$Q9)ioH}Xf~4Cc*+`E>?ZbIgwl>V&XC#6Rs>O(F zWeR77FWJ=5?!`pvzVSY+!IadRL#yAIaa<+{BcnkF-1wy^)_PkW3$0dBw-mC*qjU;s zbu6_yZ;e3pvjrWCZku-MhCo`e(;Cl%k9=;!J`VzREqzhGWB=F}?=TzaJmhqr3|>Qv z`;(kDgY6?b^qkjwa^L_S8~l;L54zTy_{X>9s?#;q&WJl~>k*hcy?*-D*oPQNRR=C} zPTv}S5Gy62E1G?RH5>M8s`xNRjr&3|(~r(Ua*ZKAmsO3Jl*9Wbb~N8$8jY3KR?N^9 zlZfN;@adNXs~}*}+{u-nNAPOATCXR1ojXP*#x$kE z=mKxIWU~2>P*E|Wk+%?GalyAY+9SP73-XzrOu@&@H-GD$nTxLj^&15_Y-36o{vRYxv< z5U+DJ$)QCaAv{D_WgzI8aQRZT_)g>>6rzC#8Dt>E9Cs6ULSNZV$6@zTP^A>|Sh7ybspK-QY_lJcc6Fw=K$mdl_Zxb^lMkI~Ji(gA6 z2h?P~Wty-0*1RHKV%jq3B1}{sU5zr(q{8AUTOSK*1^6i_t$#JpYM60UKxpI@mt37K!G{u9p7;#SP5Uz!B%kGT$n0o;PLVyj(k?pNp&N= zu7@;lRssSu7&U^1$${Yh2P&Mh6YJS{OAdMY#KSHf^!OAqrWzWh2e$HhF2+y%x+e0| zjXRt}WE%*>l@e^gBmA_6pQ`Y@orejDN5+8$2EVG~i$(Nk#HHVO=nvc zmMpAmOEqv+C8}cH6fb`Y7yh8Xpf@?98nsr0f^EXY7fVT;)67E zc5-uhB-1K;^}R^oPckb5>Z{0bvlV@IJv$Lqv}Y8H8H)GbiMb}JT94I$)982V-)+@u za_sRNYl`y^ERAPycwQYU*1iM!YO)G&rQlzzrJe*mvw5~H64q)FIQ~(l$EV(Y z%)QI8X+Z|@; zgYs~bb@NW4`xa$gv-wceu^ijIxmRwsDJM&GrwOk2liT6CPl)#wY8vvgO0NCuel75j%&cA!WP-rGir;3oB0BISNf zQqcpeC_XyB@)&3!GI3?!^qsuGig^8amctXw%c>c}$MFu;dI3kViEX@DhJ{&Y>I*E^ z&JQexIW!W5)=PXY*GzPV**rj)g|d&M?>HZT!>a1LK5jXZ*V;det2E_C3M%o-L!pca zpS82k9yRX;jB#|O2jo~+pzo|F+evdne zPyuB!zRk2RK~@78u2TD5lGr1_LUF#(7W)x=rP!mQ|59+d0OWU+TTC}^4&}Gs(YLDT z3@8&9H`siL@t*clwO=e94Yyc`hmud#U=ho_?SA zcZ9*_q2-OOaMh6!{qI@r5BQP;Zy%<3wUIs$Q&O718}h~mukf{h>KREp=V9TpcaNOr zY;L(^g%l-axc{j=LFM`2K-KSAd?}nM-0zM`!LFLtbXSQIvu}RjU?me{z_G@k_DaP# zr96+*0@$BdzzQ4SN(aNDdcYmtMOVpe2~G1gH$9V?z(q-w+zP1k6)`j}dUeU8b&)qM zGhV$t+m5x-adnYK=Z(s^wMD875bzCX!$PTTFC{rA0kztX+*&d>pJveHT6kHJWJdcy znEBTy$YeCYM#}tEJ^7cNL2coBFPrPam7rc~4u?LO_QiVd@kB z0Dv;pt=;R_lQV!l@)95x=fAb^KE1>dV1=LlYB2yTr*D%w*e^b+l1p4JKm)~OZ>56M zRelk)KawwoS=vpNj#|elnU_nLIM%=BzgKSA!2lEu__vp?VW@r6(04J0ovxPpkeJF6 zU1ef7@J!y6_Wt~>#*(Hym=}}s?Z7!k+pHI$Q9$n7C zMnX$tmD*j8rME?@^dDW8YK4>@S4qX=rHQAClXte77F(F`K*m7)EdA~CN7JCW3Exq+ zkzSjgvuF@R)yO$=uc(O4l35u`WgVKG;O#7xirSx(9qfVQ5QcmM0K)HPUoBHh!)#7q z{drwXd0;NVi3(qUotFtE3yi9cR~KNHlqD-06vp}tWynjf#Q|9v@)N}wz(NoWCo(pQ zmmAW@)~pl1$3`Nva7*xgEI{F8F;&nsK@j_)N!EjuOGN0h#$cH=xyb&r&d@^sw)P1j z(#VrH>QeeBNu#bZ>{G_F`K18tdrpWtm zT=ffni@E6yZNbDXD#+Fi_4dCSL#()tk$Q^rY5xGaxRWc3(@yN8jp&8n)v&>SO$ZuH zlETv?DlJ1)X|luE=(Q))roXiw5xk2CFOTyG8<^Jksv-3?Qt2~CsB3gN3LULNqDTYM z@p53+@L#NqBR7FTS{`y$hxOV*v(Ag18D_|3#*a1H$AVVY^;Tz9E!v&4hv>C@QZCIA zh7-HrCdrKH4ZKOShl;!w!zkyAE1aI_2{*Pq^e}9JX4WX zw7$oa_&ow-SU=Jk_mab9@#aMN>B7}Zb2$qf*Hzp3Nk^dJ>j5Bfo)zQC+$YDMwFydU zIfgi7O2l2_I@j`v=JBSAV$5p1k70|XL8*u&O!njp8)2Ya!Q`(I7a;*LDL3N!Ne07n zdsWzQyJd9hje2RdT{W)8g(-<1i+dCA;!%S#UPP>(l?yZ;qM7IJmfPT+O(mj6OFAxj zqq%iPmJMm=2Z=dd78ulQE@_4i|HvMZ_WbSfnG-6)gX z@IkCbE@1g>4D3*Kx+D{_@ZO`CoV`4A>Kk15n-NRk3`-YgeRZc;KEV&m*Z(P4NLSqV zDrjBeLyq{bBhJa8xZD|`^1YE#I&@o6RZm)|PNR6tU|C;-QC-ct#=_}jXZ8=?!OZVe zO8|`dK?MyV`$nvhlnS=ZseU~*G4mT+2m1Qt#h)zkE+eti+N1-g1i#pF6#_Kk$}v%+ zdw8Fz^2hV;+B?6cA6V#Eenf^E+|l3`@N=%clT_K6??=(0o=^{F6O+E)2N7WUcNX48 z0QxoDH(gox=|tpkE2BjrCY11I10~J))JQr}iUZCrRsn*xypF4B!Ft`Q-LFjxNU_v; z)V(zXf>cO7sH&cqUlfu3BC%B?1D`+*y<(^pE?o zI^I19p=t@#WPn>93ASCZcM-UL9I1#)kiz!QRBvz!4IgU@-c^RnXsLmBGS2bgI&s8` z6=DFjPNhTn*;Lt;k8v?{_H6>qt-3v{Umh&)en;tvYwC@ z`7F{ZQ++0FA%p8nEP5VgGW7n{%MsmnZmY*48y59t%8BJ)zfiEGPd}nr)TES{ODG*) zHnpcAa`(^HdaJLt$de*o>O?|AF{#eEW4|&+&7e;KVoYlat%%h|!(6ovQsFWdFyr8UTr&5 z^7iJ}tDE9=yVgckM)#NnJa+t;?_38Zp(%n2jn`nMS;R@H<6AyabcQr0uADi=0<~*N zBpbJ`LW~)!vJfi&2)w_sTjk8p@*&47G|}T{@siTx4rE8=K&2-B<*w#R443E55e5L3 z=M{q6UxD%AbBP1?8Ty%I^^{@&KAf|ut38!Nfq)ah8j;4unb%NIEh7WK$F&3 zIwJ!OYG#oLg#A|=odMiLq19!aX~pWV{r!4sENUn`H70B4Qmlxc!yX2&jU3OFZ~u#& z7l9c~;QRgY`X~cVK_SFAF40^kdp-e-=9vs{fr&tjTXGp;eGKVGV)bxDMn<{$^YNR9 zEMTUbwrbsJv>q2fih$A)#vVFcaYAy=MXDLBFHl47@Y}wYdXJxNp~|_JK&^5`cm5)+ z=#f)9p!zT($n`7l~W?5AW~qD@K*7V`%wcmSr!NzPu*N36%SKC)|!_n21%G#seqmkPki- zVmsgWp#W2gAcm;Ppj7s}00TW<7kgJ1SqPI6B-2T#L}gJY=Dvh-OZa_WLnzLEq+$fb z9YN2&UsChRoZJaD&=lEd2_h(LiMG-yRJ7OZm6aC)3}lI*-m7%SRn0t}ZTowqQoI8C z+`6zV5fJSN>Lz}v!0^0WZz=>5QXc;=fprO|>@Ww>=ykjl(|W+wci#s#%i6wVh9-Jd zxXi}jRAXDxQfVJch6B-ffwxS>p$*1oXnsR3JtpHj!bHc&V_G?N9Hym|0BL8@*KB2Q zl&(muA|mw!dsGJnH3bbH-lM)a`7WKUop)kb6!HCnsliXdNFB_zv2$QjFs9uecd`>d zoF3%&`Ns9vv$NK-i$`Rl*?Or5?*O#msL3MRk;^K1kJwlXo3rv{HcQB;ScgPv z%3?SOzBT*j_K&bA4H2nSSZAHGqm7%V!8RtWR)X-ggiqUpE|fH8wg~DzoRf7~8&ujN zzgg0ZNejM24ns%%s}L9tmNci)=FvynKBxFs2A?omk<>fz zyPC!k)ET< zI5aj6ePpa=9IXr1zB1V?Z@}jeh*{kUvq{;p?Z6Mc0{u`3cIB>O%`0uGuAjv$^oc;W zIfO7}su?oo>`=NlH`U3WG*c~h{M$9@`&K6xw!_k#ju}s>Y!3~0zlrT{L3%YO5Ui=& zt0(*d_Y2GqGq5MQ?Jb`hG>6{`$!d|Bq?hHGw15BQ=i>T6!kT2Z(Owe@ED-I8euh}fa+!4$Gr+B0~v#hMZk%sBsnnxHjN_hZShnZLrw;(Yg z3Ab@T@v&z!YzHR{+??nWId`Cemq-L0SE3VBGB((r2RsRb=5C`qDDjEr=+0R2W%C28 zXeiEJHF%Ag2lNopD$+YA>}VO3Uv=NfHKY#jVW7Ogc&lpHw>RiMmdE`D)@Y0m~JY(nVNq ziQ6Ox0KqGu!HG2IsM);K>!`uaL*TI)v^3LpG8(GgR9e)Yj5G*r4~hx>@V}K9*YpDQ z8(y(`#xXchYh?(@?o7g$^nCoS^N2n2Kd~WW%59J=QPEXjHhn$DXQ*~BHy7f<6xmp_ z98zug*gYQaZJuf5x1x+(=%EBrMu<(#(ZNqn{$pBJO~kl_R_amGC@;rf)a>D?~q?X^Zj zVDa}+eKv?Z9QQ8y%&%{H%CxJ9e_FHRA3%RFEawHvf_?en2cpM!+VnGN%a@c`o51C8 z3#NKkk3h-3<+=>%2|mBfJww()1AgM#I-nKYpoSCs#;5!TOIz#eH^{)8w2D88K3Zk!nw)|3J zTe}DxyA#-_*HmIAKcBevY;x7t2gayy`~&C^L(}!p>eM-6=Y!a>0+vH!5cvG7%h}e0 zR`FsX(9lv<;nbssZrA;yF?D=x;gm144&15ti0zo|Jnpy2DO`xxKtN@rwfgbntOI}D zq=8Wpo6fR6 z58GL`(OY{3I58*U4U+Xyk2M7VKzcGC=g_-a%cR=#zPea*FU3qd;6v#U>b5319p}J*0NoW2sQE{8rgxMTNB31>PaxqfSC8nK$d;X7 zk(IVLR$8r35u3lU#GiffBAd>rezTj40pa3~@zUVdQo4?t;F>mA7Pn#U4|r zMF&3m(1W$v~r#lS~eGOLLK>1t4mP!of8STA+@8QSbIX`R($Wz z(KypcltVw~@7Bfn`S;VZJ{pXj);dwb$YiE5f)zo3G3;h!-~Oi4cqQ{^?!}qTfJjpw zii~>#chVA%@Bb9-Ynfaj(<}zkyT$xtJ^jJZ{Zk}I#g%Qe)!wDr*ep~-O(;?^2a;T} z`8Y) z)GTvKcC`&j{}8*~fZ2nX46~$cqqBop#64& z;kSRV=Q`((b6;^B#MOXw-un#xHHG^TG)DTb8_rRrpK}e*dC6)I_??5ZD>H>MnKW^- z@aGgsRCZ29Hijx*EwUS)zPRZ0UYthqUPo5=9^2l;XN^6%WsDs0hoxdC_pxo^EuT+t$@rqh4_QoQj?YUJC#Ue9mt|doS0`{DDp+hiD?Q90S{u z64Y%+Nb#-It}LBH?bU2}>k8VQfkCYHA-62E5&8Hc;)|_bBN4tX^7BowbY@HDCZ!>n z<5qAoX9}6pVVjx1kpJJu$;}PvAO)40BDT%a!BtwTV9Iy2Q`W(_ilbb=elL6FnrvVD z2z(QM9Lr)X3`N=>g-u+#Va#w3J|+SQ7mmEx@>EtSxrQ&YVrNM#MWnTy+jS(FHQTaJ zf?hc|2>H7NefUCGq~FTms0RRn>_rFnQQsAZ*oqT|7<6IXI>nIYn^Nm(vb|{5S7wce zVv{g=WYx<_yElk^m?Jc2LT0JYC|Oot!!a6DWcBa&*YA9G#6Sudog{<oi4uN&@BWWm`_t3l!!b}M^dcB|xc_pkf5 zhXW~2BiB^Q<*x9Wwi_lZ&7kQ&XkS`QxVJ{FUsCu_YSbCwxfLg#@p1e@esBP8OnRYl;@72O#%9)tg;#N73sC_Kr{{Tyq}qHfc-6J2L! zUT0U$M!|RCOqK9C(6!NA;pzrrjC(b%I;|DUE9iW*H1az1N0+UtgxASr4JWq%Cv6^s zNTiJeX+s4*szU$DAXlFVMC`mVK`3G@f(V^v3YBLHYz)khLAM&Mfx+R+g9%bD7R*21 z&vT?=yyxBDWH^LUG1Y2aAz1R}paRR@!DRos;R}E)^+}^7v2wuA&;D4|Mq@l2fOj+# zF+uzF$)vYCp2>+x@9wg=MLG8I%a2v~8Qj7EEXW>-_n9kKP=Mt>oUnp@5h^Y!;l6!0 z+74@pHV*N#=|6HzI$8!D~U+JM2K(-3T%3s2d{}Q8VVVN zt4s)UF}r!ZDdpCX&FxSxUr=ryHM>>TBezcE_WBTX$D@zM+FhcYZ}&9PK|PJAAuutk z1>*q(s*EsM76X$Ir}#CRJRDslY)~9s41+$0XKqYbrmsQv-;6+qsTZ~i1?J{@a5myE7BYA0JjF$dMF zz)QTG$Ws^*`X#|)-L`7-Jww#rgNtx2kwQY)J=a*wEaxRuS?sd=={OffEUsuwze5dafu8E`c zsfupUSt=?`7sy%CMW2c>aan?CfZ>}mbuYKK+TEW+GVF-s*S#20G1=INqx&}k7v343fU zzkl;-qvo!%2Fq&Ky`*>8;rnt&8-J%#`hVhV!8qM9thiBVF^gLaQ9GkGpQBE2hjeFu zhdK{&`mD>H&hN$bhZB& z=4Kc(ObIIZFP-r#F;R)iu&MS#37NnU{S#%mc=!rXDc>cNWFsHJ(RR{OASHrnSjSMk z!(p`0;7&rJSx0VfWzJ5O;dCQfS*azYpji;7a3t3SmTYx~)~;z-ub&dV<#|5z;vHk{ z%R1^cVvY@J_#X*&=~xU}oO~z_P2@;1FyqUL{KVraQ)8`z;M35#5{{_>ZC?^sBNU*4 zFGD%U_tKi}X0&e1kjiRABr&be!bs41)Hemm^UwJm*nFsf2({6{wp0xJ`kqeTs!b#l zAunxYK)=L@CneW7>Nj)Kn&%55FTdkt2?*1jox)41GStWPMISv@pc`cO7;{|-fldv0 zuMH9so|^s=2*#%`myJv@LcrzI($+T(o@*EPNuSp9e`OnU`qN+J%%eG-c7Qo)X=QAf z_9K2x(2KLN-{Lu5wdZV8dKI><;7jVPSv+|yg(MOVM>+bH&)f?EDG5I^WqX50z((I{ zV_p9IePMFnPLCnWB9kg|mZyDif+%DWtaQ7un3&z}jkfkkA`cCww8;lzNWjpO!^5CR zONf>m_B}OT4qLy7Vrr67LC180GHYA~QEf;}k#0jG0iUUngM+Ki=fcb0#~QcSJ^fm2 z)0sBMBceg?4OVWhDMA;6Q-xf}Ms0pYFjVo+9l^iEj9#2ZGFr)@j${NVVr`6JYP@31 zCF6s|VRAOEoN6SEVweNU-62`tE8`a#_zIQFpR zrw4mV3E=az$4BLQqay2JfN4xXFAyWq02a0!C*5%JljOY#g!+epHHP1IK-N`WWy2e^ zz^r^le+yA_&Ijeq8W4X~?i+Zw7YBapufWbXxpL~p9QyrX+GIa6wX*Nzawz#eCKGu` z6AV!)to#La$9UmVX178MlvtR)>f!6)RF-DII8pU|-PQM9Rqv27Q>!%h8GMQzsZFbS z?}N>2>}F-N%glpq@lAbfmRnd`Z!#xYc%+hTI-aM!_aZZ*jp0^u78L-b?Umd1n_;R% zi6sz%W%r*f+zCW-h%?f2vB1xf@E8Rv%KNtoU&|l(jB7#%VL%lKz5cC9NqlV@UJdQv zkN&&_rGUkhTQEEsah7P*&$7ZR<5DjuV~4@@h?K7bwN(p&jL2xRKi1X1O8JsFN^Nf+ z!0MRCHB>ke>Pb?BmrI7fWux8kuwY3u*)Hl)5z!msRHk;BHfPAEFhvPFel^?8k%=`X zD7CxLF~qD>{>BlH2)Ps! z_{I^Aj9VS8)CUz$)2WzD7}p3DNW6lwY3hUeZvIumE($jD)^K`HaPXGryeGOca5t*? z@$YuGpS2PI4HiyoQx8K;(kZ9Fi`Rw|>`MD_$ulQ*vl0bOOB;OE3%d8^mHcDHI$}K@ zN!}Z>-9Br$eBRwG6}NsPA4jLbp5UxLn8%1=IIk^YHa5-LyS+hS!^>7mRa?#!+1?n{ zjhe%|C9J|OL9}xMnPtZ#=%Z7bNtH4wh%;q5^g<{4N?rweC#hFBusPGLSKS1xN;f8k zZ0B19Q*}%oXiva@pqa1&w_eI`SZ~I&&lrvP0+FR(@g(1_UGn0WTR-h{h%|ciVG1zy zWyW0xC0is=13}Wiub(Qc@JvymsIxF*CZUx=E|nz}@oi`X|6|j1--NdOJoWHL#pCWB zvQf3%@BNI)l=9i*S{ztVdptEucAtYPNXAf<9(HSuB`k49iP02;`8CGyQXZwQyc(N)o7eouYkfTd3mKhBava)V%V(5?@XdjmU#zUb%gEK6(k&aFp^W=pC6At3&30C& zs?4MIH72xuit;$0>QsR{Ge2#wSM_9P$>`RTJ&{KHkFf-i3gi?XsrMf)#J^PyfmyY0 z0v0x^Z&Q!G-c!8Qq=hz=&h3AD-Wz>}JuD-`w)n3S?f~R8k#^^Oyu;`3oO%kRy6fpZ zteUsmPQK+o^!7vvzyKiSAtnYGq&Ez6nh>QRiOQUh0f?!RCQu7J|NQjXio5)UwDDU+ z!j~^TF3$_NDY_y1S(p}26|MRHNb2PBFBYA((%4>1js+@m_?%c(UivE7YO`pUbI9Sm z+|vxYohqVqNMzePq-MuRV~%~r7~4YZ^?Y(RNNjtji3h$f^S+59OEs@1s>^MDB+< zUagktglwc{I>x%6ZVEq-1`ZAvn|R2~ytLj48Bjm?iGclmw3}X5g+ZPHBj3Mnt47J? z&Rss^WGypZo{xafOIkaq#BHs4gs5 ztd<5)DAdu@a*pl&w;$3%qnL_=Okh~xj-gW$rX*V&^oEql@2QpR<_h4`@rg&rVrWxV zN4y7KMWhq%|8f&Fmpv+<&pGCl64mvYDSVrGDo2Q<4UERof0^dOGRnyny6QY#NVYdo zCi$Y3NIKU0{Gxu-{tWC}Bib!+qdL<%HOBeVy8FXz{aMb`tvgqMV^oFm!Z)wVQ-330 zAH)-v$s>_e&XybxF`bHO?G{H44UL5$g|ZX0@p-tAbRrevF|7E9>+F%$!L=#K z4lHX%B@^F(1)&7e43YdHNxTCrwJl1$Aqrns^qNbiI2BcTT<_#n65v&gPvfE$cjBAI z=XA2o9%}4HImpp`CxKlxg_KJMJ8VG+iGGGX_F-k_(yH`=`ddPkQa#p}ZL6(|PE>5N z_F98MEou|&i=W3^QmgH_>({J1DWFH+ro=bxLd@?oVC?_^4KJsht=1Gd4wN4Rf|5?d z0-C`D5L{jW*{%o`F(H@(a7Z@q2%;<260sz&WuQ=S2w-D^WJuHX({+;$8m4jnSTL=B zjN)dRgp>Ywry9r?8L`!Ihs1rfa9T7V`euW)1!KSlLGF!o}O}ym*)6Hhl9UeMSNwS*wq79XKJtju9lT zthET{QY4{2oafe9ki%NuQl(F9^VT6OH>8vi`q!#!fc%pZ-5E(?v}FM&&wA#739W>@ zI0d|J&k1t7$tlO!NXEP%j3u2bNyf^-MUR8L|D4!Oi1OIm%*9~<6~+cAq0*=CIVcbB zeu*W37UdCXBcfWhNQIOXy2Vxi*b{S6_wdjVQBh5sY`LT-H2CHliMua};LD3P!t$Xya$C{lK$&FA-emd#d$G3A{%A>5_`Me}m1Qh5gHw7Lk5R=L4k2V6PmGC>{6^clTLhL;al1zRVKq(vMhr_?l+$J}|8LU6f1c z0b*3*xdgqfoV^9u+LnnBL*$h+Qo-`r^)S3#7Se(krGyjV6JduF;DEw10?WyK1#)#f z-_4!=e!-Es9&VxV4XY&3Dr$yUSCP<72ot!gudEv}Ml8=rvc)Ht;^B4UbS6I;TAC25 zzZb8byMIqUUJ~SE-6xLg_jd5r`$tSBTY*)9t@x`NeCdMOGKmQE?*r1f&C73};iTiL z|F@j?!k$$Aut0)iX8!=QXcQ^R9UrUr)}Z)3W!>rF!yjFxF`?p#+P^XDXiwg|_mHvw zC@3TjO`b+zs|eYE``xPTiHdNakUyLKPbceF3CjN};R}FVrp&6|F4C5WmsP(je;w6+ zK>qL(g^|b`g*W2OsZ6JCbO|UE38g|bYP~0ln8p^aMzBS-=4UXI7$t~ygRNBs0G3Pm zO0bDIP8;=P488+I1XNjrBF?>5Uq6&$F<5*b7Gn(RnaBC~hSF)35cxHoHR%ZUU0M_L zXSv-wn~hj05R<|6iyXbVf(3qfMwvcV*dS{+lWUbzDDQ5MK2?0zNUV{2X$l(d9}ygD zA(N6Ng%DQ`_?0b>ThenoiWXXpjznNI9g2Z-YREKrdnl~86+lJaE zcT7Hv7FdydVrHNg)t-$BcI~@Lv8MiJLi_h2TPBczKLr4~<^$;R5)vj;d^b)5kt+qJ zV-+MSrxNF#3}lh#0K1zvQo-caBB375%$8B3j?*5+G*{gIa0%YDv>Ro2Nim zQ7DdjZFv2ev)BP#B5!?_KPT_yn_sT7a%67STw-#Kb`B^Tda zQxZJpQIo5lJ=M!o#h4s0S3>jbWEjgvK^iuIN^5J|ehj#oWrjlKxamIVnuQxpJRci2 zz?;I0zWkKPQKIBoiC3C+qgZx$S%EKOo?Fl!m}vBhE| z#wuvs^8Mn(AQ@$+EiCht^8jRPYc{bvpL{0D%j6_5$R!rgZTACx=?L5L)GNWOOn>AK zPn*9_%$ibBr(oYEjrtkmsn3ZGtk|3$Js^{x!B}6-b$U+!@oYy!kJf0nem;%p(rBx7 zrqx8uH7$smTm9|E5UM&*Fe^E0u^o(`#DI{f6YSb{>ycj@KC$N^O3F{H-ti+DQ#HPc zlrenx?b1u${|N#7ya4D)CZZ${)e?wE$?2aARj=lRZaO{>Q)fXYS(T2e<+xW`>B_lO z^WNH2LnIW430(wqi7lz%*2L&s{PaUMc>F>`*f0PATY!gHQCwLmG;GC4YEsx9VUtp9 z?aIW>>P4b5)vcdYV8b$Yf@6?Y`c-rWMj3SvgjSMlaub~>8#YvsIQY`Ee2|OHc$A_o z!m@P=q^)H>6f}$4bg-px8c~arLeq;DWHo&)H6Y-N-=?b!G0Gw`{xC9O#RnRo*G12N z<0k(yt|8a>{rv?Uzc8{r!{#v|B*DHWM|JuJ_OB9dLW>v5JAh*5+9%s2B+#ucyXl3YAp=VdRuUt$ATs5?WfE-?kjFtEFWfy88|0e=X5NglrFvrh2zL zPH*%{ad??jgAS=LPMj-=HqIF4xZ5Wh=|6DK0}8O1MQ|U2ei0en$_uwY5DEPs8s}H zEeKp>)9X6ZW~g$@bU-;{Swk#G8OkbD%DBcwEZ0&ZXttB)L+87CcG=~ux2Z8)xg&*k6BU3ezTUh+8ySF)%pr!!iiAds(& zg!!NqSwNG)t=?BvCx(;}J^EWK=wYLp?Ye)Ch&$ii^lB13mK_g>Cc}=3Z zcx?2}$jFJ3a(&|QZ%l;B+*%U`Nv$X$HonNsOPVt$W}KLHyWfZPZXsW;uP5_r>2;0o z2QTt03wqmEN7vc)Fp1(etj=)a~ZA3HG zcyl^`xSXYksTL7x@_I+IE8>;C%14)cgN)&uqyKLxSZ$9Q#Ag6S_;pNPF-!^6uV4=&wd`l` z!{B4L^MdW^(Dl0*zeP*ZdH!|p-${Enl)|b^vw>I42LH)g@QE=HiG#r^b~H`K;me;} z5C;+Bj=>&OW7qoAZm&Xxz5PRFM{yO~fEJN*B%t~})+(Y)>aZ$p<4E)~diz0Z3P1-T zRgB>`#(MEdn^;ZTP8|pwO^CA}Ou)drFauMRL8z(c*KopIac=eY-?`!VxBjQ8!{|IB zkANI{z36?)<_wbeSe)5yldc6JIbvTs~#{b~HA#3(J+wNBK?&wQ5CT8!?w)_>nd zdcH5NgnqMM>1?SpwrmWr*P=~S9aB@ZI~Vx!aYyOwt;v>U9}oYAK%YB_H;2DvMaPb> zaRSxiOcTj^bQ?eE6G7e?Gv-WF6%Sc8nVmoan3Qjow184_G8CfFVu*VDf@zgGhtk zTo$)}V~_ng4_;N!<#tkPeKRqq&9>j3> zT3CkB>~?}nMmejt9Y0x&{2!oCKr*L7{d4$Q?HsT3V|hNbI!oOXPEBplq5J8sFxP1@ zr>I_%Iv$r%Lsr6Px_ziC$P_c+_&7w;DxuaIE42&9+VMAr%B`RbJT2lGl~bxx!aLC9 zLFJ_9+z#8SNvhdmCZ;lwZ)iyQOsa2ajMza}8MK`V(sd^N05^I|z8FCuV}A`t($0#1m~ug%Ufr zs&(d_K}u>@(}c`NtwD=5;=Cdyf;4&KPsH%2DH(geS|ng_aymgl0VIpd55&Swr6{3G zN-qo`Y(l3z!b*KcL5MZIO6B4-utv$N1Qjgc{-NyuOvxv8Sfm-L{(6oHLWZ;3o-vZu z&6~xT49n zcm(5JgoBadjk?Us5(37#He+8qweM@D7B9BhGgZImJlU(i`qr|#8En~5;r-ntxz3OF z-fcw(0tAPdgPE;22oIzrrV5BKkd{bJSu-L)_dx2jiH$vk9U4Fm$*D)NE`yqtn36tf znWc8cv&GGtvmXCh&6>3ekF5k^toHqBL>nhjMn+56H z8p?_Kl#1TG)tm(|FI90lq79`Cx6gI&tn+74PY{6t5;53}4&lc}%+{p}NC9knKBz97 z4JRybfFiDw+7Th9HKvG?AD<=ETO77gyPyI}ohF&jY^6}I}zT%Bm~O=5JB zuYZ+<>ONso(ixz%`Rp~{eR-U58Ox$J?N2nK99!v10??bcH- zIhIU|d?}{B_bQM)bq5M>badfiCe_nDGnf;=RE(sA|oBJh)<-CrO(;^LY@I*I=Qng@ zIT1mX=2tqf96#SGmAsiJE%zc3uBY$uA}3A2e3mfL&9{Uk21hZf{XTs$zi(RyS|%ki z>sY&mebZG)$g#OWxoQw4=b9QAET^eU=B}9#i+`29y}hjgdLdfLOa?6uFQR%iGrTfK@98H=BHR~p zm}+3%w3j1FpgnWACR6P6m!4jNi5-ye%0ciW1`@c=Kd3u^k5(2|fIq{7hV@L3sCbEE zkTB-chYU$71Dd-aHZUD#sh=Tzn-gK!H1RCq=_2b)e*2HW;~%< zi=-+JufD=1zQdJIPFeerYbNg7@7veTf`#V#I5@xfo9uKrW90xuv>LyK{ML%A^iE+& z;HS1JRuOqF7G+KX%^I4us{IbgQfX))ky_Bsu1h1736Lcw01`20C$o)IUMP5d08dSJ z^xCb+dE(wwD-Cj#U5ys8)+TmANhm~Z|3ov|H9Q7f8tINK&tn`MHTNS zJ+3|GM^cf+KDLv*$T#RUE%bf#>ZqE$r7u6HHegbWn*QTQnY`E z5a}4m1m@7q7N?_2sGU684}`8pK$>S#a;glh(@2rZWq=zwi|L1f$wX-`(tVBLtbk8V z>F%v#An}CQ>r|p}3(tyO)pu5*1UjP1S4SYqKQK*|!I>l5P^pGs!J{9KErYAk*o@BV zOuR&wW#fPDqZ4KNXmz=+kt6<6yup8y>kk4y{psl}Ic^`RIUIOm;W#;l2#vL{Evb6ygIIbohDQnARzmO=;Hj zv9bM!h;XWc>C;ADqKp+BZ^71?5AGuK!?x2hX!uH|fwi`*)VN@g8lO=4UE*CWOXaSt z8tUV(mE#%sSQ6MU_wjs23=u@ivxRb*@pEJ%vt3M*jm(n{fR7B~fJT{WN$m5k%$IJ{ zk>nMZBjL{siuua7aTfrdDHon(BVMc1}J0Y4)`ZtWc!I27r%RhmD? ziTWM=_nXP~$GgATf{)+ekKQ+rvK^M0JMVvgbOZ!39o5?wm=kI!{`Y&ua(u^+_E~?* zDD7xpM?j~s2n?wIZ|{(XW(i0F1y)H87K%F2(qq6DSAe=-VOG-ykYE|6^^9F3T-7$KCk;eB!EdBY zjIh+VQ<% zs->yVGSYc@c-^8R`I%W;3&;MbT+0a5_ELv1KGg~d2!IM2G<2^s9PeF?$_u=oy(V$7zxzh77W-QxjN@+9|{06hePL9;=b zkQv5VTmxxOL;<_$Vki-GqjbuZ6j%yR%vYs;u;=mu9@9(7&u)$+Ud&&|8OY^4hN$1z zrF2z%PDH+NaA%7N)@kpI+iT5zZT=_RV#VHrW*mby%=g~z0E0ee) z2Sy)uB(;!00*kQX)mTVXNS;q=R@P96Fm(q{2+WDc*)+d{t~}&F9o7G4mZpv!>;gyM z7^@3%Urh5DWd47=2w)A(HN5MCpzXDNy>2N680X!YIls}p@5?gs4*1#k4gSY)_F^+o zJ%8<_$36IWho~ZF)#~?E5@G44$x51Pf+?%fDAK|Td=V*64Q`9&V0IMz-`9Y~EcY*a zOvd6@rlP(Avne`r>`FKRmf-oYVaEK-uy)+>X}xdgI;@yy3QF=@F;5aMBV2(`Q-3N6 z20w=6#LS1OM9!Np+8bL5!LXfJSm=*Kaw1N&%qQq#q-IG+iLPW~!Z|0|)G+FK@m9-L zznuI`d+l63EqgewK`SY&ZGUxfUh&>|iwvC6%)XJh0{m4YX{fd2#&+<5e{>{pdlE22 zABmzL9iVs)!zr_)jf27lpoyENDbcqiHN9ReFe`UbUD&Lk)$v^wWwca5HhU;#d0>8(S5LrOZfRSXn_q-cLZvv; z&lU|QnsI1-l}nD}dG+gEDea>HLOOv77hiJWiL8h}oqV5^bOHa+^ zw0-AQa#r1mdJ~q_#$AgeS-4TXP-T;cO)q3`{2)nZ9lo>>hNlJZ#u4Nse>AXOJ$&I;N96dNj zAKC|d9*AuuHFtn-om^S8^%H`-v{8E=Kxs36A%D@%+79|Fqji>yI2qEpvvr#;xqU~N zGC#@8HCZvgve6-!0gc;JC3vN~W^iS5q@`77uJw2xfZXgp#g1>?0dI$ zuXFQ~{-)0L=azU`hoGKae)FuPx!-3O$+sp`>Z`7OTa15v{Wq^g`DW^7SD#g`G`K9T z6|ihKj2c4#L;&pJnl0W!5qO45>u0z#p4kr)3ZI8|Eo_0*7m8|HGT9o?bz?CbrEfAk z2U=(}#Oa;GS2chA^(nnit2ZXxM3qp2M>G_SzY|b>98F24w}ywehufCDRR5KgIrZoT z3RP;FU@$dS4!9XYRz*ow?Fo1SK0Kso7^JVgJ3ar1PN=ZP}gQvT9w@6W*Ib*6!R$bWA*&ObX<0mAAgUt(fn zQ?u%+C}?9@fqFZ()nl@`1R*`ZFatHdEmNnELJTgwn*7%l9xmnr?n7}k+EK+n5a~`# zK0kDvTz39T{PXvLjZ#^u!f$%_U&Hidi;3lkVPJ$7fUHBw7o*CxS_hUd@Kk3ey`dBl z`M@yqU#0flC$$$Bb3f%DF&u$fBn|8#oXl;E5wy-}UO}YC3fA{rm4oD!MIn@iRZoYf ztFuVrFXfC0grPk8`ht8$bv%E}b@$ogn8+66OP%PBpWhYB)`%3+r15e1r9D#~Q(kA3 z4`_V~CP>hbX?^zMbFbIS>9inmlY%9(`YwvH0-V@Q<=jz$C?nG+({9hm{~pzsm%Yu> zxogY**;fG2sYKo&Ueup~zn5KbeyAxPaTAh9ed4FNK@>Ojp0Vb;pzE<}KhOo$kUY9+u^ZX5y#h z&`X=|bXn{!&l~qgs+m6S6un(<3H5(@eS{!AN%Hi$Abi)v=?d!ARNOR1m)lyD#LQT$XTldnq_Odt{tkMKU5{-o>a83sP{z z#K|CSG1WT9^1N!G@a^o?&Lix z#{}jyCw2LC*DbEVpa@Ex8xR1b3&8)%Hve!!gUu$YXj@*ckKzsVn~6OPr)0&Dogv$M zRl?bhr?>Kq7l4BX_x48Q9;OTTUvEuB(x!)99Zxu;zVirHWeUyir>yc;mU z$jct_;~zi|07|w(%?ruYGv=qFChBi#wUvsd8BWIL1nSffs)eOz%{6j%2K(G zzZm++LSagqkTH7}b~cgXSQ)jmSB=ZGM2$By!hj}(uB!@_WZUMq^5-lpkiCAnCFHM$ zS9BN-gOC;~l@f!wmgI(z5Wvb#AE)%zG1X7^TOQ%flD+C=Nzu>czl_0xf(ga4R8-GK z0H_jAv5|X~*AWKrT6NZs)%iOVe0Qp&*K-bSYd?z9_MH!bXdooOY?sWSpM^J7(}twk zpiN^b!827;bXs_PN&pZPkmLR?B2KR|cC+BEP@(3c1HZ)Ssy-XyvNHOZY}x(tKw7h{ zmXx{Em)OLSf6mVj)AJDmDRYXNw~#xm`}^e+qDlrlS%r?3qH|n_lhVwrw(sa((d=XR zL>8C$C&BoEBJF#t|I|UX3vJGimCS|iWD1ESo1PI>;)MnW{K^ZT4v~lqBR3tosmX+u z6@Qi1SF|&B(nUK_pSbzHr}gMHyTu~@H9deE$fi|74u?6(oY;a@(?cm|8Ux{1B4==$ zpg1*06~5i+faYWy3ywp6y{0oC{U%#;l-#5NDn+Z>gD;1lTnz%Z5zhlrTB1}#boDvu z6GS^_R%_dJATxl@X748b?TV}kmay<80(4CR)4V81WVXN$EQ-E{1NV>@s+9#Da$;q) z)lQ-k3XngqQy_90WA{g)=cM_%TSMD}U__AyXL=FIeilGA~Wu&M`AchoCG43R=EuI*q%0Q5uXq&;uO6~Li z6p}LlDbthQrH`lXr%2V^bYHiP2MEmSWo zOKST zO2G={|0G4iDFmt?JE`Ej4$`FFJXlJeIzr{sI8(TjighG8zsxW(f!SNZX%ZPqr;YyZ`_SqJRdU zZ^y`Be}^xxe9hGPDJB>j z|D1b&ocY7zPEO7B3|V2%>{xS3U%6^8a=|b1g7aF{x@Rg+2W_qp$n;-&7QrYB_J5;( zBWQ)HqK!IeVT6X<*qFU-rGjm}!MhNr;rgQCZ@ChE0b5l)A1)poJ{zr#n@LSR1uYd1 zFQF(Fp57CigXGNkzXp#|%>%HNP;iRS&@%e|7I1&Gl~ycDDGXE2ln&@lauY zS8M*_ow(&L_J^w1dJpzSGxik=XS!-vFOZW+0E^WdFim(&yfRQGbcL_d>l<9}5&{bM zqVJU66Xxe6AV`#zbLeMeU_xgcY|aqM>yfw)|0)Ex?M>mpDnUEkMMgZQt*2RKu&*OO zb~IJWRQ0nRtc_I+??p*T5ZDfvV%8G%F3+%S-F&h1-!M7n;`3Z)8us)xXuREVSyH_~ zjND?#alJ>f^n{PLl8zeiE->uss1(WbJ%RYo(i%}BQ>x62Nk&7?Y>QH=w*1u|u0$J( zNKrc91S;z3fpF2;l4XnSjhX8w9&gRBf|}IAoO+~_(sFX?BV-gQs7_!bPW7Cb#K3;y zq>A1Ku7)n#TeC%R%5U6ll(&cKTpEj_yy=nj3i8E4!##`??*3OjI%#ZFqf|*9(G6cs zv4+^Q1^N(efvVc%1ksHYPYlNunnr5Ml6fTn{wKg7BcD?@OoEaGS^DmDSt^-7U&(Qc z;(4Li-9+Q{Qw;8>h_baV|I)cJ3bWsirIFR8M}M=O>a8Dfy)~yBuFv?Tb6@WS&$(F7 z^&JBIi)T=D;yt$hJQ=6fKH`445MbotJ%<&iOP@Ng4hP zpu($=OM(Z6Pjpt@&G3ncQZhn7p@=rjP||BDE;QzxkkT3s|6 z9+j_(`HGdrvC(pwb8oDoU0IZ=zF$Ch z&U7?UvFE!nmDa}}slqWZ4=XcVIgP#X!!Ufu@ux=f>-4+V|HU_j6i!;q>Qap{t9aBGo>7@UoOy~lOywF4p!z!_` z$0Bv@lKI=m&Yme1RD?ndo&U_QZpV$kIM^szri}lrcD+-YsR7zjtB?+b+T&7@+{`$^ z@C31u@ezC=l*Pq^lJGt@QRZ{8#$>!6TTWs|d>&DaYr4m7-P?U}uuHjV5miO6!qa8b zS@k(HSU0p#K@PWE)Nge2_|Lp)(Lg)Rpt1?Ebqx(^$_9t~$VEf}Vneffq8#$nQ17qU#t|-o}^UKVn8AnOn}8GzAsp zSkH4#0l@eL08g8$OsG}b2`pt{x{V|%43k+Qk5W%cK$}-70G#i)z&gAy;Ndt3P&Sfv z`lWvvr+gf0irK}@SGR%*Ku045_k`hDY9aCaam5Iu$Rhw>^V1Qe!|TYi?yjlu>!VNd z&UP~jFGl*hKM>rr8>d#`n7@BLe$QYlk}_lDz-hp-xcnYlQ+4JBWHjRpj<7R5!kWTL zvKA$cBR=iTtr`esNw_}J2PxRIPJ0q;WUa|@WW4a<(D8d2xp`J9!fmF)qn1*N_M?Ot z^8_SSMuGKkeb?g)y=I|#a+aRc+QGSAp2?pT)%z}kNe_VS@uoya5zxMkn6`!dvQ%0X z4_C(r6c=OqP~U6rA&k=_k~q#)Nc@eLxSs0eKRhX-YV(BEi*6Jc`?3B84ZP~;h3@F+ zondXWOwt)q$B^>Ej)nVEZP0VBJXXrItl+94%pbAm<7<$5T>v9ctYP91Who+5WbU83 zzVyi9PsOa;wfBkHPUoF)^%qwa4!?ZSXca*dzReM9R}69|T)VcexW%`snG6Q4Ld{*N zbG4UqhAn-183$a^#~kmV%^WIkI2Sf6T9n^uWBPUrk?pYjk*9CrF1r8=R^i6~tAt}z zq1}|+f0Cj|x}GmB)1|-qaJ|?R$c24qmR0*+Z>P@D{C#{a=%6uuSaOO%`2$Yqa%VK|`jDSSuix&MK7tZXGOe(q?alXX0ph9j2|b18n?ujss^Wnuky*0FH< zt!eb9ob>gBw}MoJ_zdVKG|(QPtnGL(wg-mkzU9^i+6%&%%DGGdzYh)Yx(qgS1+%?j zI)!4zK@-3^Rb;?>4SJ%UfX`eZeL}m3yR{xJ?ULf<0V?R;l`5yCJIt0%!kP6BUeH*x z{HZjrYI(F@j#cXA@jaz0H)TzqJ$>qq*xt7;mg~NSyfK4WFHp6CIC-iy3|9qvWwu<+ z)t$G58n+L&XuVWw5GhujzPcU#uynQ2{-?h<#fo8FDN6!pv+6m>MOo3;lm+G~4Hq|S zILPAQ(}Ve85nk$i*U7ZxG3@l{{TBLHmazIL*f|qP*F$&4)Gh?~w7==Mxz?T~KbHoS z7|G-}V&vj>Awj6JnPCwGvu}gMO|n(MAAY2%_3yDw9=CU1q369VO<2&_Zu~8p7+hul zrbqU!-JjDzYI?N7ef`MBX_a^kaE_0`kYk46$d<$s4M!KqDbUm_X^$53*wl$IFnUf9 zU}GHbravO#S|+2k=+(~e{q2vp4wwK;Irf*o7yzh$(#dLJuu6b3X8FZ%vj1=A`vp)i z5-O8qcQ&L8XMIY~o2Ql#H0WP0k%0(|3?hD6icnfLQ>4i^OgvGd#!jAP!8}CU!*MLH zm)d(y*^#;4aV2PY5oU3A;c-zLhnere%ol)gi?HtLlBf+~@!jm;R@#+^G>=+*o4%YCr$2t@N~T?0T# zcw=EATESMii3kiwF6vH8ci65K`2eOIcA6S9l#dWF5(jH$^nh7v%`bq!dISBvMlXAo z?VWjWd$D&NL3p4XTq7GTIi|EaM=02GfG{#$A&!_rj{|D;?HDWJiwN(?@w>@>%F!RY5g5`fN=geND2mDtzwdkggZn<`d`@3iMPe#0n%7sM z>>n!EEUMT)O(xm;Hc_y>Ds7^y_@gv9g^DMOMcPvFcJm!ZqxFO3Gh4PDE`}HuRtHtN zSpDCxt2XrTC8LXk$&UBm-Al3zydtp8R7slpp|-qFZcpcIwkMtZCtU=u>ORbeP1?s0R*&@1 z@Ig!@p=_g1mMHi60SMIwx}2%kW^MlYn!Uoh2Q~Z+Z21k)Vk;-g{gzY_g`nG+VMOtD zE`-QBVhWpWqP&Fm6)W~L+AYbuv#I3)7td7(Ru*vv(0=vFMOo}Ni&IwfaPkc0TZi7CXY_gft2Yhe1)8E49S!OS;ylDg2|E=h+fOsR z3c2-GO%AZB$nB#EsNekI-_wZ(+5x#mCx@74{0D2iX!qnLB!C$@yfDVtcYe!wMBD(; z^XP&ooC3I;^dL~I1+y;nm*la>)nt)iVGN}?ex_)o3cuFm%$rjQhfw^Qr0}C7Pv++$ z9$B^6>Q$zAqCJxHSBRnJKwG*Rl7>3dKzqhqK1d*}ew2?rF$a%I~t*M-dv8ct-We zj}fca$kMPnyd9(6H=}jF#yq~ynlwIg>sQ=*`?1{#2+`8U=u(*q#m+xgabJm_5&ZN= z>}S!(pN02%d4;CFdu8MAp?mX3H|XCjBtBJ6cypuLiVEC#Q(NrIVST)<3rCvC+DW>- z$(-NM^aH{=P~ley02bm$7p%CFSZI=S*XDgL#n3`IS26JtF0rj@G_xiXYTU;(8tZFB zEbl3IdB-aU4)Ed-NeL>SD-vuQ#U7H~Ll9ewZ8|v3z%yN$8-pl+<+1pde1OLUO3qhc zh_7rwTH${8z4}Q)f>C$8IVXq=;fbJ zzP~4LUz`t7k2)KeRpi9mv*tqc6UCLbpR;ByRFpne5^#1AijDgm!<^10;Tth_T|3AY z10VtF_?Qpxf<^;I;5^dEktNn`HRMKaT$}69-vmzlnLKK``)wV@zOL;SHB50LwZbe( z=zj{@15neycxd5epOOgtTR=NgJ?Ty^9q|05Dn;;0PpHuk4^JL&Y3^&?ALFF#jXF_Suv*gS;OaZU(27@d7bxNi5?&4?!IWsoVT}q zhv?4u{Ol+=hedrp_LX|7DZd8!tcWwc_dLp{1bxh8n>T+ZYv4V-^~^3ADg?z(1x&Yo zq=GM<(fk}_>8I2&w_!%qG^inpbM`7toXc0k%Vadl;i?{Y+Qaz+>%PV&K$4^GSKOHU zC#i-nM%M4!#z%^~23+1&Nb{T$1;$aPQ#+)I@!~|qtmLOf%gh)yUsSmOoQaYg=#Pr6 z!or^6uS?N$e;rr&w74`7q9Jv~afbBnDy%v*@<}r@s61Ldr~6Fbcb#Bpg!eix;Y|uL zOZ>9CUfqD9SgpgOxI3C!c5AVh`d+qlMV8aS>Gg^!4>$@pJW-y7jx; zu3y==oh*$^mg>p+laf~jZ5k?k_w@;F_Hc?P<1g{f#s~!NYQj07yBW`v9@}m zpmd56B#6P!YQ$i4E*8pQcxb7A0y|Xaoe+x`F3Qda`y_sPuick;DO~klrk<5sjhB49 zoa_mpyDn!IS8Z4FxJRo~%s7=?&`R#9PB)9Cx*gbD`pHaS+sQr6k5MIvguG_!E@i1x zqoV*nXBKsInKu4TIop_6wA2~Nz1W@SC%r0T|9DXN2zcYYse$|3f`EIN50CD+x$prl zmEH?Yt-y}%UsBI&7vcrm8cvt9J2EBS=QK)5s@wEFD-;c8y2hEVU14GckO9D2RV#55 za4yZwDz`E=AQ~MNs~t!6QZY^l1V)6ku?J*ld|!i!Ea9GLk2X$oPe1SY&;a?%koLCp zp9fu_Xz0sK&t=5-L?3YNs#*_F`Ek<~;VEN_l0EVoMp$Sc;Cw~h53dqihWU@_Gg_4f~GbV`;xD1D5| z;EK?pZ7AuT&>BX{HDerdcn`AGDt_qBxXymmu4F?#=;T4L7%hd%0WPN9@wu@zNumsb z#qjQt?wK>NBM%oOjzdLpG8Mh=QcA>uIE!dRWgRJ_ds$kS_KI}YTjix49uf=ys# z4zz;Ot20Q0Fu9xwWDFv;eSLJLO)y8^O8ndbBO0&Qhu4wnhLr>w770U?=6#o9GIY}# zR3(b?{0+R-7A0DFp@)-f!XPReXS3Z>rCNf+?=}~qhjdb;2^=l(E641t8GJUm-$9DL z_$SM?0WUuNGP+T?UEA9DIL|Msp&{jO*F3}2mov7asV>C}AcqjYVp|=+AQ0)>;=uN2JxCkc;69`)V1fZDqaPjj%j|ZT% zEVDd^ud=+Vua+DT><%)EZdH}<68ceOo=5x4+-4XtWGl+cSs-vl!}9gT`ZnOnYE7f<>`u^k%=7~gj5ueOwQOHX*bF5Fqm_Q|ifu?ozvtc8 z(-x7R8)S~M5d=I1tOsYAZx|vs#}z*WUGPxf72?E5bicZ(6n*)Tt=Of>EVpmPwHpqM zm8+y9g#a*_G{mwnC*mMoCWM6|sbKhrF&i=vo+c{&_7;6ff?E5CSWG|XeU!e^kZX5&vyI$XEy0bDzziWWP_wfO##Dewe?7Y3)ynV|JmVG zrthtIw10NMoLQUadZmiC{WSICF_T_Z0;9r4FP{ee)NmVxjSV1$!uf3(^EIfI*r6&yT+#=*z6x6*oq;u+hl7B5$oRJz#9=;8?@Qql)-OGAQauzrHzjYPX@clOtBBMmttIb* z?AiBv3eZiwq|J{n_e;ICH)!1&3yz!%*ytJAU+2dWmJF-#=QjFRty!omPYv(x@GVCS z?@mh6suJ}DZNHHYtipoHsiQ~7oXAsZ`cIQ{jaLpo`z(6i%&uppHkfS|@T@)0y?gyw zVk2v+#*^nUhu>%R8ka7dW8CG?iseraV15<>&KGu|0s3X?cR&D85DJ{@9wne`splgh zpiXP4E_}_Fno-*)M27U9R&_%TmNIcNS(F>tJT~QLbqJnHG>k6kpj`i8Cu5eSob4mFj`n%%hl@NJ|N^ZG+()zHkbL{4;VZGXFH^$)3R*Cwbym<(; za&@I@&6Di`GncgV>c@|z$~+?Z6m??UFP_;-c7S`=3NM<~&I}&9eBg&s0yRnwtIQkB zn4ala+Tx!W3le@=KF9<|5KaxUaG;M5RR9RQM6 z5`|>@q-oW5&fu;pMj7Y9cw5~>kwH!a@FcYo!AopH1Kcx#x~8q5h?6t1^Sx=FS@Wc2 zublyLc8enCavLB^=~sEZKlTgi*M>d9Ts0pJ-VR)y3wO!UMcW!aK4K3~XRkS|+1FdY zGx)iny{LGV`1E~UZgEBI83UF2xN;J9cdf@Pzh!}OjX6ADw8cN6IyYow2hd2L3gO)G zhLFV!_$-O(tUpXP1IW8f4G#adN^l*LOH7YBGMLp&Y+%37_F@jJ--mUp*I^(>J9 zb_d*7$FM{lzROuE#;+TT<`g89F@)jx7*=}QHYBtfxw#SvNEOY$5RKf7>kD8>kJ)`` z2h7Pc;Zb;&_d{zlG$Di+e4~DVdlk;i*jfM9zv;SOcve#B>b4DhM1wYvFUAssY}GiT zj}ttI@?ICpe8v3EM$$1P@7wNf3jpI)SfaPqFhb9-wE{dzIdZ<>7b=OX`eqi?fi9x0sVR7e|NO|Sg%7% z7hW`Y1U0W!;*DGTN^qvQlm{zGO4r zBT_m1Zq(*16v(1WpSM3x$oXOa{9WIrBI!6G!04AaeXvDsr4WVSF;L<=4(vmX=b!T@ zdZoe0gpiJ+M>rG)Vfqw;ueu(X0Ub2QGBewTjMmxMY@Z)Uk8+H$m8%+ZRm1rGt{64v zkEB8`E1B{mit~>tB-!fGEnI|oyhAlC0S%I$YzOj3S5gWCzOjjlD8fm0Ha3Iaujx8Z}bi3*b=G)Wo44Su}@V!8gJEx`uZ8t=#- zM%u%o*rzOm{|V|&wkF9%i%~PTDreomc9rLeBQQn`lRoXkbB4Jx7IA1t27Wf!ql6R* zRR)lTT9Tvd-SO#7b(A>E_v$REZ4zVvDHUr|&e0$M3G|a2y`F&ItZhf@3z3g0*h0Py z5Lnt$gQ&nh2hwJ>uffos`rTqMPG*=i5#(t>N-5o@G&z28DbL6K>Mbd# z@+~;hy+MF;r9mj*qvKB6sNh@EIzd;EdF0yKm53qtR|va2_V%yNB>tx!AFW9u3tD7t z&3M!Yo#8EXLrdo4?>-5*PcDZ@KJ98YVG$eZXo^?(kZvXIHWWv8Tw^jBG}W0SI>H^? zky2r2p!wH-T$|ixK)u08IcS82@d*)7ZReRqjk_aBx3Q z(C87U*Kvtl zKv)RXVs%u`vJjK}hjTUICv{&4))FtQP17s}*G`yQp34d+e3WGn=gHLl7gY~Y+i_o? z5=%cPYvbpb#|#7&2#DA}iNH4Dt6ecNs$o)w5@CO^+bOJh{X2aw-RrlE0^fETnL~_= zx_4BLY6ErpIDu~bo54&_zN7srHkPIan}1q|&f8k48OvIgNlKMwLQx;G%Drrm5BcI> zeeov&D`pNs8aR}4jGXS@(Rs+uMO>5R?BW)56(;vf~PFHHE#WH z6S$aPk??DHxw0x=%V+0)p-gn?1|UKJ0LF+pN*jV`(%qLGsG~s4yHA=DFBwPuMB>OL zIR}`Bo_VFmniBDk&4o9QTg$%Y0n`RnzLrPz$s2I_Dh>HyZqg*5APdNXyHrmyVu4=H zqVh3XyBlL`nzG{bXW4G*CbbKN-lQIihCwFPiPQvmV|XO5TIVEzqHFwK^K$D zTAy{$bky#={WJB|G(fcyqrt*v=C*o&zo&QCMLp)3Zpksht+%${zq>HqQ(d2%KNt>L z5$5X(K{D%Hb{U%F;;(oA_R^RH%xiQC@cp;>QpRhrm)8_|9p{blQ$nKFQAU_ zZ9%R6y$;brm!}$5?JoICm`+&Q+h-yo_v3teQ(oa_XRV!PhksvIR1AMM&;IAC55Ue1 zfyNKmMJL;Bj-p)^10R|a9S+DFJJ?>{-`R|t-`xgW@cXv)Xn4Mz4^ef^44EqT4Y;b? z{An`F8yMiq=bF=@-_`NjJ&@;DMGtpnjljs;8H;ahk^iZZK4Ow>*lPN-+|z$}cL@Lx zLXT_W)*a6aV&Lx(AP|&D*p1wm%79Jm3$H$2dIy*{1Hae`j)(gVYug!4h4l@5Ne-t3 zDS!~JKtK%&7L_ZAc1BA860l4+=!D6~nTS=rXLI4o%-+|eN$d=acFOx;PHDj+-p+VR z!ex!WS!Fa#SW7ed28zFa$qT1^nbXD^w}Id=T{1U)*E>NzE{>yM4VA!PCBo>80p z=qX9`$!2T7j&bV6?*Oeto2B;^*@cSTF`su14?cYku%CA}=Dm8Z#e0xz44+_meBu4!onoiKwjP;Vl6aOD1An-nAA|LE**QB=WC zBs(wwUIpI$dzoT{IV6f4od}9HK+r(F>;rbnsBM@8)2EbeaH$C^gRAoLO(Q0+!-U_l zj)6wFND2R@Qa=>nl>jgZ7zzCL7>h7pPOy4(qQn=1hrwlL<|>&vGVG#g9+I<#f&mI3 zzEs7iQ2;hu#V#)F1L6Jnmd$52BmzDRD1+c9T0n)?Mx7Xt#kCPIKUQ8IxT zHLLV}HFYcy7Yhdz9!*0ITYG7X^a8M(0AS?27}JeRm@4F~)#y){Vo9e75)Ovp5(D$R zQf*7p;!xu(I4DFhxXws24<3nJItQqP-Tin?b%-$OyK z1Z#!cP=GAf=Fd!@@o^Jtb92$w1gXW7#dKg21*k9Y-gC5$9JiggHPoTMmdiv88P;gcF%N$=dyaHVy9n|MigxrubCt93=)yP}eCAHV(U zOX;-sKCb*Y)A4pm8^$Y*|GGGvUsVi?nswwI`-P5_r)Zy;KVgc!3dH}(nrsuz!rGF> zE?#x8u>R#Ff8{3d@vQONgTQaETQ;9Q%a;1`b0+NZuS55xaotJ91C5OAJGG?Kfa=;G zG$B%jZ_BK|+Ra-09f_f@;k=Ddu~e&3{#Rv#25XDIDkkA)W5pUGZH`UU5uCQzrrxIE z6~G8cy>+!CqkW=uZ8;5GBJf5rBQ-8qE^Ix%*8tXV+v32P2AojyYxP@mO(Sl+p60hb z`CJ!Gyq=3BE7syjMd74H5W$pV-n|pak3n#cnIrwu6hEAhY{T2BI+uEl#$BD)VyUp1 zv;%TPg}&XmNRVaNImGG2H#59>S;76456&)$1NJCnz<0!MBa56U$)kHO+7;PQb+DqA zQY|BJg{j3lXcxu=uyLH__n)7Pss>1L$32sBBy`KKbIO0Zz@~As*DUFo@`_hLb*SLk zh2ZMcr|$*dp50;gy8@(q`y3LThld^)%qGwNn*ChMw4R6p5ZJLxD+mhiCxgncxl<>w z;HBy%@hGb=??h^|=<-jL!n0KoCgCN_+(yNOG~^*RT48yM{`qIpKcwctVa^Uyj4Hi+ z_Jl+rKS4FsSY#SutiW%6Wl8Ggpi{k{$30$KwO}1FV>t|By+7Lee)Qf12zOjp;ph$Bd=OtTYMx(c zvdQD{Vvv{?OL+9k{GR+qEX@6_l^bM;gR>5-)l+3G27OR2t_`Ci=fB`^jVhVk(Zvkp zCrAmM_S6eXKm}EkRfQO%IpOIeA_hH`FhLS%aTz#R*xE^#~nv~jbq0}7C7S* zlOvuxJlZ>(z$bB0%rQWx%W0?kXlkr1$5+Cl{xr? zq$TOjq?NgRvlhBscJ-05^VylB++}P=l<`WY@Wko4JR+rlH)EfwGL<@ zj#`=kVKO02n~JoTncsqDITPAc8}@`%<_Hb@7qP7q2j+h4g;Y3+4q1(DlGrL z^;9OCCOA$sy>>qQpNEnOVR->F3&`X|9@8L4uyv877r8Mg%KG|ox+%XQyKRX(LQ0I0 ziJgXp*{%we&!#gmcaOaYehZ2A=(=NK$w=Y?#w2zl@hx0|JM;n1;QGo^N^_@YgpaML z$)GcIFDb0FJbT@eWQ`k~aQ@Rd#kcu)UJh94p<^!!kfc*#X0rF1`=yu&=C6NZa-aF3 zM|40|Aza$VmWfPr%J-K|pwBv6VEsfxs)|_MnVGoL_su?0+njhS%?+oGDR%pugqLQ) z)l~U5*N)kS0gkXA_aVkcc$T-!s6R1EN6xg5SatuhFW?-f0)zoj?3W`^f=8J32mmKo zDH05dfXGEg&MCHZ*#r1)G^; zJ`!rz>cfFN$Qp5A(ecRJr$jL`bm^cp@M|?OXgIJicAtYtE!+RI>?H`psw#NyS%L%1Xq#C*9 zWvoU8O&j0N=t4MBqi3id)5$|(D+?L)2&q^cEdOiCUb@fpMtU*QG?2~5exJfqjM1ob zY??Bhdsv78ffAn^3b7FqX6PaJz+xww*Nh}1GyuX&gh5c;KUcj)7s-_=Bp#=XWVRl8 zS5;PbOWPIE{8F}kr>k}b#1*6dtL@0OWalz<^wf!kyjUqeN$NUbFlo;sYO&*%Z!1{I z1P>=F&dNQj@y&QDqmGCnyCF@=`1%VhgXx2D%f_iFURF~OVc*q$w_oF!t3Q!31*BSR2|1zTQNOK61?{q9wKK6czsO z8Xn2mu4HaI=LTQ;;YVgccG?7u2cHfSPYvpP0|iI2WL;eHmvO2-$^m3=UI=T^jC)F8 z&BXb$5z)K2bg`}fuvliNoBnBg=UG*UWNhl+=3nj8cN_sHv~P}GL|+0QYXZt=UTKCP zr;`%Xq(7tI8`!1#fpeJ*Rm;Gl?2D3hEIvv~WSsbLIl%U37XZk%HGs9AZi zWXV~xCrmc|d!P0%wNjBfM2YsGLV*fbb|0svJz-B%SK(cG5BchkBS%Im+H zv(J&)yOWf)+(j=T@f!jP^h+Jv|K0|aVhakuerzG6?vBkNmj1$JXT-sunb(hk7cS)G z>ijD+@6tO08zu;+aTtb1Sm;caFBzmqVjO+^V#WJ`gE8As%}eV{N4^4iRB4LY5+Z0j z9?(hWP(fVp#i=}?D0bxwV#znYb~kxQEOLYVCUj)WivDbCQQX;1xRG1FuTG;PO2JpD4r7n=1nInd4_Ttr z-}%nf>Cr0O`^8BAF9x7M2BFXd_z0t4@>2@Z>YOTnGmgX>A%n9_fIb7r@+w@Aq`Fxa zxae23s12JEwb=1WVJLep3>WIj&s`lJi9~YhklSD(k^KNZ!QjF55n&KIe4C6cinLN* zoZQTM$|AA66bC>lr;$y|mH~(^DV~m*bZ6wsu8(5D6U?!1MAQv1uLGocQTeJtw@uiV z|CtN-aVj1drWT)ECJ%8d-KSy}-z=Up{mDP%_kDf8o~QWj7?!gztLz|LcQk@v{kMis&xPcM z*39qK|7S4(=p{JQh2k-FrVRyluC!mES6r4tF@OxM3?KB?@l_-gl$Tov(YJ^VKa37U z2Qg)S(>v$L-#`O=y!=U`Q0l!;#Sps{AG!-NwRng@a^a6~u zq#q730METD*10y!Nb<~@3JNFYjR<9TWGX)zmDaS)eBI1+1oGBVe+_^0>ap2k0iCFx zQM!h^{+_HDa_pYX>>Jk7rG-{P2bfi7|HHdMkK^Q*N=Y|O}N2kRA zET97RxC9oKJaDcUfIz>JuNQdj&80Y_@NVF0g2_a z-7drIEO=ajF^$vZN2SPST>~btUXi>|0{TorrI&`?Rw6WR@1X5^ua}CFSLBbjzb)T+ z{6y33nD?&dURZBi8ndr%i=?beqGz_Kb*nhuKTG(8E|yDCN_IaSeKyGI~jc2b;XN>zvnS5PpG2@Ff`}k`hg*A|U4azwB#+!AH zNrnQ*7cQ3_^4I?9RDG({mKvv|`0^kC@$jhVCnDvZJZHDWk^2lW%tzuPp?!_I00>qh zB@3Z-63M6_i(j9L{5T%)5ifz62q_K$Qn40ZO%aidMvq1sK*Hq|(evWKLYJ>f(HtzFlLrr>_@}|2NcmI7v#IUXoco*8V=^G>nMV%y-8kscIjE`m1=X2|w zlF9}dcq>0*O*3BD-ybaSPOnp?;*FhWaRjy#cdpr+WN;^{w(&+YJ>bxvhjr~-jF=Pj z-E+xW&0kCx(2-jA2G*glAQ=GsNG3h@e18};+S?k1+@_&|q`Zq5$0E+XEwn{)vbqK2 zS(Do57J6c+7-xfoz~o*4=&7G13lo@&GZB~i_n;bP*=7i*(rKhKn6C_{aW;|JZ;UWv}dArVo04L#1QX@%t^ zU6zi-9d{H2Q7wPjoyHgD%ucs<%OD&CI640;VG;eh=e1I@jCe$Mn^Oa(<@WJ!>6hbV zMh1mV{v)?vBkJhPIqYVBg^Zhrx}N#uS@^kGig3LYO(}8?He764De5KLGF-vrZ#+Q_ z{I}$m)o|{l?$4fzddQq10J(^8(wg}35vD~JHe&cJRx}#;jjkGt5S(bM&v{k;#=)tt z;4+h#|KTUu4eNN>*a0|zfX%eXcewBpr-%%!QEUrPgt#(}8ry(_-b7~0wU>otRPh2D zmC?|yXv>V1e7(Ae{dNe@dXcqatnml&BN zZZhVrz2>B>GP%P7h)d8}2$b1=DT$!8e4?|?kM&2;!SH9j@pOm5#F6?2e?}2n-I%<9 zuQy9y<@U+A+4*$o+CC%L0u{cA)w%sN;93XDh+=01J66O7Jh3h#=Y>$woq_n|iy6BW zt3_a(Hs12PnuCZ%p+He|F{8JOQu^Z~07}i|`Ju%4&@dXXi+YC`El^Hv5Gt!bQDSr! zA*&*(dY?FIs{X#)XtDC|vXjRTyM@&s_?@RXZAVPw!NpiVo74kIj)Pt;bLmqe7PrtR zU2H%TRU7IWm$Nn#B}Y$N7hBkpFh|(t_&-Zn1C~Z*$PqhdEcP~6|LkXP{=6yrWc31L z+G91rZxS4s$N)mR%b|McfIV@@4*_#i`x}M@owcHv4w4G3jhimQMD9)PL!us*C>mWs z!6itmapT^$ppCk7`Wc511NJk>@?WDN$iuq;AX8-GrvOV)>OYl`Ta->B^rE4JvoP+9 zth!hSju3!=%n;(jEZDN^5xF!oFx0puIlPAI2Af@-h+N2PM3jR7KmlC(g4T9&6 z^IX@q*%QqwFP96Ta0(}s8^O15u6;C8(ws~=er^2}x@&^>&gpwic4`FOk-~I-VlLS{ zts&XBJhWz{ker@|XQ!rE3kOGJYweRn^73WJunwH5Cm<$}T@xTWPgSTbGEacji-*aU=g(!aVTRPJv3&fOtf^5La;LqqSxcI9nbe!t3^X z3Vuw;lmlfO*;~u97PA^kKh5MLyWvr2eVOOsb53X5c^(3Elu&*VN>wVcnUfp9%MNR? z>-*t!9Z@9*!~%NPjcLa|PDhKgVks3K*!+nD(t^2}3VGy61Hm^pWw#{Z$v6}6>e5|pBgU&v~0NRDgn zZc%_rIXf`kHMN;FUv&>poj&g0bl$Y;Z*1aOS0==FJiJ&~uG`8^aO4v4?U{_)WT1Lf zyOCsJzE=9q_@IFM5vl-xYAhb6Uz1EH(aJB*OdeOCa-+H!$O&<8pc5vIwr-`$WCr2m z(qZ!sTN2w{$zijg)CWP?Zi*_%gyr-qsvt zMk$7n&)<3sae9T0E&i&mMkFlE9BQh49LtJdi@XcDbT{d~F!j&oSXp)$=gJju`62N$ z22ba;tg*1?a43yvSMML&Rfd6YBD^bZK^=E5@C;|)6dy`{-(ry;6))&CDdTx{4l8?dQK5D3(_~9-CP&s5p3mPzKsv8kk7o3(V+MkM7Lali;f&IeC%A zxWw{t4!oTa2RC?TSqEsgac<-$vCID!{?<`cGB2#p?W5wSn%rbtF99PUIo0r0ax5xf zaf!Krzb0Tjp0_QFEoo8?ol|H)ey^Z%UKj;}r}4t#<1I=Obq#gKGDfH0Yv!gCMs3G8 z8H?#{Pn&H<=hT@7xA=*~aFy%Nk5O6+*rCbjoIWpMR{y=&0X_2J`BQD=i@ z`)fRQ@;b>CjcLX8>XP9c>C?5BaC$_Pqjgap!ftOYX^T_EXeqD>@O>VAh_l$OFPwXS zZ^ZxhZzUSFe8>i51BL>R>M1{_=K=^gv4|$&wdn6xx(px;-!cI8ZE%&|AA3o zim2@RQnKi1P{w!x(f0%y-a_Nait*jHzL6g?lEywK3t~kcpWe1B?$Jswh-&UBgFTk` zz;>-)$fOe!Qy6>7?Skpk?Cxzx>uX0x#@t?Z7O5=>cr||Y#~CQ;=tyQEG*q-7>5xur zJbE<|9CMnJTBeBl!s>b2@L%ZWNoQkIf@|Q!$I7!uKsqf)xkOXcPICP8>_B$Vf?_T= zkYv|PfnkSq+!V<^juj9|5b+wCX-RUdh7(&;i?tPlvuS-6rk3#cn}T;B@FwN+B-iub z6E{t~1{UnFipRvCOU)fw2e$*^coYz|?X{y!aYOu|UA87eRt-XSdG#KJB$Jmxz3i)| zR~2jCE+g#(J*1Gbd6#aRet)+xF>XeyY(s~n77FsX-)*CMN$+*9> zWH>EZT%uPk|5cCVQJaeGhs$Bfk#SqoQovjutw85QGhjWLxO{8fr+~R(GV`bm{*cV% z@aH`WtGIjomUt-&#-mtiNJ8EiWKgXHa89--HdD6#ow~rFEL!(EzoII|#O31-#{8E$ zcU|TH*HdP@{e%`y@(ZGj=UdM07n~Cr#?RntLOXAL=9v>0@1~WtgtSf+}-S|KlrzLd^S{IMgL2fu;dZGNbg(D4k-v;0@4QbuANay z-+C?rUrG1}(g+1WV#YAl5*D#EtnDkYIx=c+j?S#hxuis}zjB2)CdhLj5AsH@*yM|`dSmTeuJxZLw@nc7c z&sNG_S4p*u&+T@J*`bg zPTHzMzuS%51uD_xeuO`lNAuqIQLL(#^VXBx_;_n9=WChD!cGa!mn$G)tQGN9+Ii^!vWN;y0j**?}X?vsiLuDpL7XLrm{KJC!`rB4NZRy);gJY z$dvUwwU@WPwB@=TNd@^eH)c4S`7TmvgDuJ-J*B+&gEtX%oQpnICZ<~in+McNtqsOLlw|M zNS7i{n4=Y-_hBMZ^D78YqGb(@!W}D+O4kI)N28U0DkMo2h3h6H8iZ$=rF%Ycs#Ha2 z@MNBU5y4P)fM2H;C$|go6LxT|UG5kCUN-L1P+Vx?UibNsVlI+J$PRt?WHk4;pBqKe zBHU-CT2q?pf*>@*vi4MeE??5hn1|KjRA-=zUN^k|rhEiz#yBGO}d3qR>xGJA!1)M5V>jg02B zFddCmHF{83KYdgZeW+OLk&zSG-2_)LcCrZ+pwRjv1@-{+#;2m z;V<|8yCX?`(A9%*U}NEO)H&(0y0Wn+W_CZ^aPnqOPHlWej{vd=y09kp;iQxG`~l zA{~yey`&q=p`;YYqsa2ZVbzEAmP8AGeS}o-3ar^(m+~r^kmR(?bJ8G7Bhcbrh<1Gv zH@@3v_aCrR)_~Oc?0SG%-|)jr#PSV+NznFx$=Ex;{0BS}SOX@RPU0tWQy2&iqzSnf z<4YaFxXOL|2ii!!y7!NXgLJls?8mA!GX}0SaJPLXKnC zHwzVfS1q#-#OD2lBuhBq7||R0B%1qnXxO`S9Uv&F81gla$EEsLo!tA9C%X^45%J7m z`T2?CH{}Y&brg<*gGKO(!A}$;Tg1}fvQ|}YrCUOx7^#|~Z=WkXvZ+m|FNm+2-W?|~ zuakT?=PqZh8xIkhT3>|()~g!`(c!WCJKXt6Bx0|N^ohr<5Uo>iUCa0tzkEiFBjxt# z6>iy%snX_)Ol}Dw@jgAcLV`UlX!>E=?I)GD25zC$Eqo$DLarzP7cNusm4+lgahC%|A~#0 zLW!{$9-BgT8fH72Yi{XPdERgEJZ?BH-WE7*vsS$+p|!_U-2OyzoPk4*6$RFjEwAGj zoV3y#?ND{R!P=akbiUcdhjj=F@tCsJ`F{>&eMLCG+&)6~gM3E>umca#Z6%Uh!9~Bz zER9qYbt!Z)RT_S$iqIK!B3e^rd6JzaML^-tS59hj%-a_bGQX5WJokcBtZ}b{#cDfy zAiCfnPmZlix_kV;yK)2oMKT00j_|@wLv!IwQbL({X8=SsoF;1Igo%Tnl!$_`O$;y* zM1Kaibo6RFkC_&l%Y3{Zo5+p2rIs$joetbA+^5?;{|5|m@R zV>37P<)8arh~z$?#ykiR{thrINA4iV_--1H41y&;XiFMS$Y=&6Q%3P74h>xn4VerM z1BD+*S-AbNk}*Q`a2-tu4X5;;Jv~TFj8u$IiUwhey%{QF#)c)Vbkyd2_(_$)>ZcS; z+H1??tg3~Jc1v@W#p8q27fIgFg1p6j+oJlbf{a6tw-GO-k}W#DQ`Uxx@FRy<%Cz8K?qAOP+C`;RVAudkLG>AMa}62R z<@#qy_C&ylDpY5v9t&5hVH*{Wh>2(xuGT18O zrUGD`b39rTcE0n`8@MKQS>JO*E!Ty6(*=01U07_;e-_o` z)wz-4N#LVQ1IohTX?jSgU<3DQ-TTm6@z3rr2Gkd6I;Jow^^I}^pXXdfPwZA3T=gCy zSDsmH9X7q!T>Z~HaD~3ELJhQiO$6`u@`!Anbko22{N--o?wdtHmpF3!s=LKe?_F1+ z{HNN||EUvz!v=Q$X{N5?_@5t7vQ>$vs_lK34r0%$L z$Qv5c4-7L`_r`sdA+e{)qcIt~D*YaVzh$R9UKB`yId-wKZ0(Pt6kcz0X?Yi?!96?X zGAVA@pJ1H&m!@&kMeIa`M^Sl=n@~(T>rnmJY^J7|BYbLf0ozTxvXrkpPaBWt3? zc7qXKJP))*rE!*jEOcCGKK^L;^4NJin@jaVT9>bT>=&z@EdUFlRDs5)VHTNFx34Cx z&sVVnNc6}>cDeYhKHP?ib;2Ml;pv2;Rg&sNpcWPUb&Ez&{mWnHV_6mGP)(n#&*5SE z4Xk@4c_l>>=~&RX6++hxxQb+Y^LIom+`2D=b(f`ny3Q)2lbBJ+I@(BNUJyt?zTx&! zAA8=Sl?L(dZyG+>+4a)}Gqxx4Xl@Sm&B0BB1p9!?uYo3HVs#E&Yx8n zN6o~vV||WuH9Wu3VbsxVR%HmF*C4&A6x(BlMq_?UxON;O$8w^X-O?7}N&1a}e}j%* z(vE<4^L&(0XoFW#!=?hvI?`37s#rm}sper+;dnS{|~4wU=a{t20WNvrv8F zt7NuTGj)0?$u-_8?4Nb>YV3JlM}slFUoXc0EuVZ;$Yf{Bmsbjx!Y{5kj+1OxBX2Th ze))c%L-~BUcR0g-h^U;Mirm-41mPw`g@qRQqShl=)IxyKB(-QCbR>dp)xQwh+>(?_ zJrDNE-7ZOKAdda#s=t7nmPyZMtc4X4TDf}ah4KnMJ#_%E$*zOxK^hRI zD9gsw1b0@Iy0k&9b->OFNomAn`%CJqCnQ5(i}OCEkt445pc~Uw(Bd)Ecv&wi8@;_` zBJaJrvN5^3((my7uMtvr)?s70o?nllp^Jyt|Gw07?V@Pln6jDsfv^v$lDyCmma=c= zYy(i_FfSyufVl|@))J%T9pY-H7okpGbGi9GEISB0mgmdC{MLLOq7$ar^$)kXs&hVU z-I?K18qcgOb`bD{26+MKZr75XSI43=ia{^n-&#c*5~@E;mr5;oA zSVr#UX=e3)?W&4PMr)FGA!jC>iNT!?7qx^9Ewh8ADa&mml*DiH{VPu>{FLSrCnYCen&`P1| zF$nd|wl!0`=syMR0O(qxwA>Feu=d;CWh!av;T~0JGJoOFA!@Ac@;6hMWXp6D`#F>I zVdKb6HBqR=;J<*CsQ&!JuEyd9!YdM@HRLy ztHdFx&=CLFB>QIWBDD7XhZASnrvGd2y8qeW+I~W4j3Tj#M`FiL>`l;y#@;DzwQBY$ zrFT(ntSl*FG-hj8t(zECwK^4 zoa_5N>z#Ujy?c?j&|~4RdoOmaO8VBvb*e0DtlFB1)nRbNiGSngA_ad=KMr%LYc@=* zeP8m|2ggUKo^=yJ9h9r#9zm$!lm`nOCKEVqo^1l0FU2WKg$bO$IY1fZ0MlQUg9Dz* z%M(@5C2cM2G=ik_h_fhcsY*fGWbPwa<(UAO1>dzq)t>f6b8)*q{sz1N=7w9@bPl<* zt-Kb$<1JTR-gWMFCLc&i21tIohy<-_QM(;{u6;QNNog4g8-0fTrd+zv5_mgS$kdUW zbYY$hK(0;m%$x*M&c2^uAnxgauCzibgbtaZy)h22OACB%jPMY7Dpl_JnL|0#!cC1d zN4}SaY&>r?Ec^VRxh9>t-FRc}Gx1)cLW5IMS#WnpQle)fxB2t|BhdK8@3VBCAYoS( zw09{p7@&hp=wSv}PWE*5X$o@`ifBK9VCJmaNq$cx6hgq8ATz!|6ZwTR~r;z=AwRR z^5U-Kf+TPSTjXY0XzsDIo_41ZA38no)eY~e;ME^Lrsfh7t&uoBRfC_7YG~alpk4{f z-+h1Vv8P@gaTLx%ARQi-yBFdx&F1>AxdXp;nEbI@mAUrG_Mu1&e}TW|%O%2xqUaD= zm>T28=r?`!IvsoMQ(ypJ1q$yAA@Wj-SR;K|Qt(w$DuLvH08CkNWlOD<2x=8N`+zz8 z2DQ^HP(kj5#nbsC`G-aCL}^PZ_E$GblA?vQhyRA~9`fF0pZ1qa6+vbqP*0_QAL z?#!v4x?id#k&-VKA;=>PIK8D`2?c0niRf~esl!TJpq{S0kk5#~2nPn395dDKL~A+L zaans+>4jGChT6CPpoGkol*;>a?gYN>Y$A!CmA=>G*=3-QHfMEVF}*tySlzvj@m8d= zXQKkbpz8s`$Yq^Nd!l&r@)^1^iL(18DiABAkYH~)d-7;<|9#4V9_s0~61mTJ?21RR z&}VRR=BWjMNE*xSN-MJfA`wOz2%t4$edyd3q3)cMs=n9&q2HnUksz*D5_I~VgE|*F z+^FY2g_wV5BkVkq^>m`m7I%weX4KE|bk;NcVCtP1QX=DQ$af`Q@1QEXF`g}R+bOnU zEmVv~9lpq_5Y%jVxEZOVQ_EyqXl~co&M;Di%{ruVO?v2=UzoRlF|OGQFFc5fknpVQ z&+Vdpu2PKi4kSTcikd;>gm^z!yW~Om6*JgEx|_c$PJjAl>(<}(-=jpl1{(UFb~SClPyme-0uqrh(RaWD2fJIaaY5y3@|+b0YWPrrjrC3IJ}wWlXiFM93&62P=?~9IEw3QiviFgFmzLl zp9J|@AhP^OI!=_rx{Maf)2JjxI4%?XRRmy{wd#$G{tTC`YdDfh_G5HjG;$KjYeYAQ ze?8j}5j)p7^|?V7pScYk$bL{!sZ4U$k5b8AGC~`E+FnM;lhfxl1IENUU-#_%`lhn! zGGoxB=B6jTJN@X#kM%yC^G={<@sq^^jpj#|0D$AeKICr)EdUsU8K=Z7-LZ5cBJk?01u z7DJVi*=@PkJT{@?Zkbq)CIPk4R;qQrT81=qwD4)iYIcB?Fk{Lw~*R>)?R;5h? z4_9Y1&))lk*=j+%Z};L&wa1LB!6VUT)#~m@{3t$BtmpQn&O&V*Ix@I@!wYP3t>ME< zEw|X}cc?Tv3atLpwUTyD>&*xDaJE5IH2`4mL{3SSM77Dn-U`RUPAfeA?gb)9oZA^= zFE2t>ug%D@z8b+|IgZtx=yv`rmz%xuD({QCc67@4s)@%YB~T@IW0usa$y3}#x0S=i zb^M{D!YD|jXH?_TOJh{jbnS|}^fMI8z;_iE^w+9uT08AFA}jyNZan#0e0v5%OaN7I zgU<%1vtvUUxzu+98Ft*3v7j)O22f6k%9m^D@vpJb)gj6vd_y>c-apTk-2**DLmD>a z%0YbqfZ}H%1^Ml5)uJ0K+Cn0lp4z-HE$CAq@VA4;2;#{Jey0u^{n`>`_Mo<`KF66$ z_A=B;HWy;y&bH)Ax3b3Ch$^6Tt^sXOz&5i?D5t(M?IWhHU+9o(i|N};51JCg$qiGs zw0&woL30Ek>6Vl>H(Ccik3ij-kYj3;Z>|9z`ulbs4&@7YpU`Mrf|e*?9t=`3P&AJD z=}~5$d0hK6$~ePfDtR#UpP3lj4ej8O%`$Bh9CgxI+w#*@t+;;v)x*C91hSt~URfx~ z|BJizaoD!cYD!`5bu;Rj%B#UB=-8!IGy2qVz(+eM?B>?9s>d#Q^3bcB-oD%3abZut zT=_Bhp?z}Xe$R`=TQJOH>XttZBAmj}FLLB@yY~F?qc%WE7y(%8LZTLiQHo{DiiX+j z_z`M9VMq+1z)f8%pLDS-PVLW&O!h+Fycc6^OK`5Juoolvke`8}XXCkH02}bd^C2xq zm8tHOKw917KC2msN0G$UDl!bNY^+krZ1iSd6KaEdZ8s~s7FO58bq#X4pV(;>7$h2S zluhSb?(W2v9sgN;u(ZT<@sfF;{I2y3^EcSd5-JlYR?*u9*5l}{)*fb^!SxSs<8S20 zu+cdu?T#HCmm9>ht_+^{5Gjz5$%X~~V^2BM3iUkZvfA}x6HJm?koPxS~R=Y<5% zNbrTrL?<)+Vh+j@ZQD@4c4fprEn3;K-w;jk6{8lvPRs$Km{aV5eH<=rACiTZdgFr1 z1614tgfPm50D){GFNd$zA^+SQ`?l9ijb0gcro&9bdniVBHf~FIdkMJGy=pH|nl+R4 zWJv;ev1nFjU>dXLrs!rBddDNfIPxWm-% zW=k2KGi0U9^L`o09NE>m$3%vPvcL81d)FY42hq|srB97q)k7fh!UKy5Lu&b<>-*RS zcf|NwcR$44!VzGsFUeQAE~z?DdpQc_k(p5#71bUcgU$+_-y4n%$K6m2utUcttc*`^ zi-<)tt7X)Y1-t(^>KTn^pELElVDMUF-8u`L29jSmvR1PD28f&jQDCAz( zSH$p<*U${Gf+5}N6@jZSjYUM+o{ClDG4;)1ker^VjH{`@zJL73NNp?c$43>?*e_nt z5`7cMwFWnz@~S<#hVxF}$Fe0ivV`VJi|sf5f&E3TusLk9TyD%oFXKO3MWg{;92?1Y ztY=u4=Q&lsjHkD9g>$&A{p9a9V1Ms~F#>{p-y-YM-m?}|eeYc<)SRGa=`Fn-HGNki z*8UDUw~_VsWH~a>nfAd#;r-2>O9G||_;^!l9T70?@c12&=?R4u=d6=g5-5qnBBP*c z$C_{Dr?0}}b4Qx_<|+L-J9^KB8w5nUuzH5@6zf1^;DkoDc`N=?w^VwxEMvUV&2mq4 zJ=NG4FCi%@X#s4J6d<+2`3rii&fQuYE)Ln*a}-oIw8!;k99P=76Sm+#&lUdA>!{Ogk68aC+&YNY^DET zj)p^N!z-&L8Lo$Xs~J1#1B0a6`2^M6usW~nMi*Q85ZEH4T>a4o2T0uzD$BmtkuGQH zz7KHVb;{7_YA}#?*&@?5BGtDqxapj!$RBb3d%hhvLTA#_R?n?~2Pm!fAlG)^{s|K} zI~J~+qEgFt`{XG>xu3N0r1xO-O&)UVhpt2eIatUSshsoe13Y}X2C!cWuMU-zQ?_y= zoB>rINpMtPQmQHq9(l?1dLzKiHepSiLpDAsv3zUmf!aBAGvDW={@otF<|bj)Qz8gP zQOsTS03jTU*Es*(HrEB}@V{*nTffsDw_Ox!bf#_ln5ZOUeA@w{-hOZ3kvoxE;4y<& zzLn(v6ppFaa~^2>*9LN9uuO5FgyvFJe{}5m)7rGSIl@CU`BYOZ#$S=20m@>YA%tA> zJy(6Xg)xxlAnjV_T@B*VFTOCU&!sxhV*&-I}|zUII)SLp$A(0jURKGn~rB##Y#E9&t& zMB&U!IGzc9VHKn9d#4?n8_b_e*IP`82-lq~{{w#L)E%;Qt+87|Nk2Za=T!*2+GXqw zOPuJ)AJajLn*rM1K`|twmhAWu(DIP*tf#Ch_|<$U$FOkrD($?JP=*p$?lA54yLlQO zO5rWjUyD{M7ID3~KzEPUFl^meomTQe(U*kq`Tgx5J!O2_(0e?tM3%c;^aQ?`UX#-$ zE>dOKSQH)>wNiYlzD*eT3J{yPZ?@Zt;(gQhzL%(k=yMHJ^iOoFg(A45%~>Lik+)O5 zy1Y%_JT#45E)XfaxE!%hnH&rh(T?NiNr58ObS?b(W^K;-*r0*>d3RxE1X1gsPAQS+ zxyuVFp>84)D#Fqg(;FtLOM|6E93j82ob=}Tj(p;k6oaC6J(Lu&z1>*Dcz^FXy;w)l zvFZBWg;A>A#{%KSuW7@9lji7VffV@akBA3sxuM|vmwDUx{6Cc@BEp;%@F&9PsgEl_=wt_zalSB~XYIj>3pokoE%S6M%Dnpy#JlI+#P)4_w^L%op=inN z%RazBJ~Q+U$(BZ&3{6F`4i##D-m5sr8}D+fx7(zW^oJNp7Z@@c+s%=>#(x%@e-FzK z?!5mpWJ^p|EH!bk%NPFNUZMwitcDIE+3; Date: Thu, 7 Dec 2023 22:12:26 +0800 Subject: [PATCH 066/302] =?UTF-8?q?=E7=95=8C=E6=9B=B9=E5=BD=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/refresh.js | 72 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/character/refresh.js b/character/refresh.js index 98cb6c6ad..c99d56587 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -20,6 +20,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, connect:true, character:{ + ol_caozhang:['male','wei',4,['oljiangchi'],['unseen']], ol_jianyong:['male','shu',3,['olqiaoshui','jyzongshi'],['unseen']], ol_lingtong:['male','wu',4,['olxuanfeng'],['die_audio:re_lingtong','unseen']], re_xushu:['male','shu',4,['zhuhai','qianxin']], @@ -171,6 +172,73 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_guohuai:['xiahouyuan','zhanghe'], }, skill:{ + //界曹彰 + oljiangchi:{ + audio:2, + trigger:{player:'phaseDrawEnd'}, + direct:true, + content:function*(event,map){ + var player=map.player; + var choiceList=[ + '摸一张牌,本回合使用【杀】的次数上限-1,且【杀】不计入手牌上限。', + '重铸一张牌,本回合使用【杀】无距离限制,且使用【杀】的次数上限+1。', + ],list=['cancel2']; + if(player.countCards('he',card=>player.canRecast(card))) list.unshift('重铸,+1'); + else choiceList[1]=''+choiceList[1]+''; + list.unshift('摸牌,-1'); + var result=yield player.chooseControl(list).set('ai',()=>{ + var player=_status.event.player; + var controls=_status.event.controls.slice(); + if(controls.includes('重铸,+1')&&player.countCards('hs',card=>get.name(card)=='sha'&&player.hasValueTarget(card))>=2) return '重铸,+1'; + return '摸牌,-1'; + }).set('choiceList',choiceList).set('prompt',get.prompt('oljiangchi')); + if(result.control!='cancel2'){ + player.logSkill('oljiangchi'); + if(result.control=='摸牌,-1'){ + player.draw(); + player.addTempSkill('oljiangchi_less'); + player.addMark('oljiangchi_less',1,false); + } + else{ + var result2=yield player.chooseCard('he','将驰:请重铸一张牌',true,(card,player)=>player.canRecast(card)); + if(resulg2.bool){ + player.recast(result2.cards); + player.addTempSkill('oljiangchi_more'); + player.addMark('oljiangchi_more',1,false); + } + } + } + }, + subSkill:{ + less:{ + charlotte:true, + onremove:true, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num-player.countMark('oljiangchi_less'); + }, + ignoredHandcard:function(card,player){ + if(card.name=='sha') return true; + }, + cardDiscardable:function(card,player,name){ + if(name=='phaseDiscard'&&card.name=='sha') return false; + }, + }, + }, + more:{ + charlotte:true, + onremove:true, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+player.countMark('oljiangchi_more'); + }, + targetInRange:function (card,player){ + if(card.name=='sha') return true; + }, + }, + }, + }, + }, //界简雍 olqiaoshui:{ audio:2, @@ -15647,6 +15715,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_jianyong_prefix:'OL界', olqiaoshui:'巧说', olqiaoshui_info:'出牌阶段,你可与一名其他角色拼点。若你赢,你使用的下一张基本牌或普通锦囊牌可以额外指定任意一名其他角色为目标或减少指定一个目标;若你没赢,此技能于本回合失效且本回合你不能使用锦囊牌。', + ol_caozhang:'OL界曹彰', + ol_caozhang_prefix:'OL界', + oljiangchi:'将驰', + oljiangchi_info:'摸牌阶段结束时,你可以选择一项:①摸一张牌,本回合使用【杀】的次数上限-1,且【杀】不计入手牌上限。②重铸一张牌,本回合使用【杀】无距离限制,且使用【杀】的次数上限+1。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', From 0ac1d92f9b7692013b5b81b8dcf5818bc6154198 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 7 Dec 2023 22:16:46 +0800 Subject: [PATCH 067/302] =?UTF-8?q?OL=E7=95=8C=E6=9B=B9=E5=BD=B0=E9=85=8D?= =?UTF-8?q?=E5=9B=BE=EF=BC=88=E7=8E=B0=E6=9A=82unseen=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- image/character/ol_caozhang.jpg | Bin 0 -> 59801 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 image/character/ol_caozhang.jpg diff --git a/image/character/ol_caozhang.jpg b/image/character/ol_caozhang.jpg new file mode 100644 index 0000000000000000000000000000000000000000..10d876b8dfba2bb57ebfe6ebf30333adbb227679 GIT binary patch literal 59801 zcmb@t1ymf*w=O!kySuvucMmrB;O@>KgL??>Hb8K9cL|cE?m2g@ z^WI%=t+!{o>g!$K-nF}`x>t8s_20F>d$9I$z7DnkfT}8h6#xJr0}x>V0Jt~wmc1n~ z{|$2kVE@Gc0Cb}q0Pz3jKwxnH&3Utc;rSN_|EMMwQDZ9d|MvcmlmF2=fY#R2#>@e1VfU6=d(es) znXuDBY`_k_X4V#-7XPvD;pzpkvN7|tu=_XR-->@31O&0u{@1>lC&a?aiB{wvtt-UA z&cTINgx1T&$;H*jg_fPx)78_$*~}VZ;bZ3M0JfnOdG~+lEUY{oTwUHOc~d)E_}M@_ z%)C5otpBxd3GwoPAwS%WC#O!~&`X>@kS6Ao%v<#rN zg1EZTig3T_9X!lDJRPi@Y#_8EwieDFHte+jnA=#Jc{sSd9kH{8hv$DX%sec--vai8 zc)hW#TwOdZ99%r)wdJ(_4+lX20K)&h=V9Of&%F(+@=rhgzxDRtZvbqdypsGsL+Wj8 zy(NG5VVRX=Wz94|>hek|a{nrTCH}_`EH(fDcJYLO6lAFN4GgLO(fy}bSb4bpC;lJu zH@}Z7|1owKIsS+8|CRVI?!RHn|Au`$-8|noWB>52+}=(H0L<1K76Utb{ZrRJ@)kD$-Nr>n>n+!R+sFYP z01!X{AoGU*f0h4gPuF4qKe+YM*kV;f7$+5U;IBDEA^WV`P*^2zWwX~&Hx(#H9!gA z0}5f5g7>u85s!~83h#s4Fwe) z6&V=~3k@9u6B7#)1q~Yq8x!XZWB%g==FRXQD|mP$OcZ34H|_sN`TGTcgA6kVV+sdD z3xLIefy06MI|QJ7YYjMghhctM114I z!oefp01$C$khrDsXf-X|k@0y#QwZo}Kt)ZKUkT}XWg#Eu_kN@jF=!Px-=OeWd4vrR zGxA%%c_WAUcWwXK+<-T?aPUYl0OYq)ew=?=>YwTm;Nah)dK+4>062IY8U$Q!JZV}U zO$$W#(3B#4x~~K>P4m1z=s|lQ|84-#-?A-%_w1>}WZo zKy&)eGlZ5ij0^h|rLjX2J-BK>tG5XT^MZS+{-BJes0$(Xz(!eUo_*x5i#`B%|1vFOP#hH8f|RH;#cC$2m}- z?@`i3kdDw%A#ZkMq{Laj&AfE8X!w#RiqZ_(gVG$d6m^+4NTsn0#{*h(~$xsZYQ(wdw_%LZ>z`%U$!(#=tdC|(fZOx(Ty0?xe1dTcYQ z(%a59to(v2Z>zv?*nbnujozZVd zIn+8(WjV`+%C+raW1d@CpMHiViTGye>S$&^+HqAm`klH6F6s@ebwqyo?beX-B>`o< zo6O%rJ#oHaY52;1A5WXSNUIdoU)@0nn`5U0$TVr@$2+iLJ9fj7-)HmVV&GRR@7wZ= zg8`L6&ybmJ3TEnK)Mu-Pwu-m9N_g~0Sub=n96q!Oq?e{fuqmO!yC7+X0UJ=54RY8P zS$UdYS<)F0hE>Yb2pqOP02Q{YznC5gVg6L96~4hR%aiI#8Aa51e^Ap{6)DXr5b-f1 z7OErS{)ZvyV*VF%M}x7OPmEHPW_-`JelP*c=4&r*M&G#l3-qc1?4vxV$h zgAIwBCg;>*B|uOY@lpEOm}+m=QfgpHhcZQ6s~W4bgFg_XdO`vP=||`!Vf?w&Jg=OP zeimF`N&gLB;KiUE)@jj^hzXhLWox_2=@r&gp=!>}E@{QOhv-CTve2|l-Q0?UR^3Ez||yR zmtyd^K_bYf>4-q)S^Y?MjQM(ogKm9*_v{RlD;yc zhTc{#s?s&A+K_|b zt~ zYxF3~G*0D)oAIvsyB9;VJpdnMl0!d_teoEuhy9Y7TxZ2gD6fCCodR8CdEtiE-3s$f zTBZ8KS6ED?ef(Z|pfF@93%2GrRbQMv3%Rm%-b*?BF&Wn|=a{Nr*%&!-poqc@p4^o$ znu2Wk{xo+U2lJD0mr?*K1;^MX5pwk!#-~X7Y=AX|IyUSMu@MLXIV==Q%wgRLS8gP7 zkq47D%hcH7#f*H60ukLOyNnC3;m^Co(VGp_5=Wl6t&v<@rpMMen3^ zI_d5v_hq!+Q*0KpbgwN8?q>icSkd&34~cSOIn z8*LUoJ0=&Ks3%CR50$LR8F`STwja0{r_4RuCj7&E~3 zD`3iuq@T#G!ZEUw0?O3~n{X4%m8X}Pm!`D6?4u<_gM&HXTkvW3exW2;%cT#0pt|nfn zw{FVtXGGwhY;bg>4MsV=BL~??iL4+o@F=487cIDlp7zL;m*>%BU00osC2K5sV;j4F z^8+A~2G8%zjaN%D(OO4|Ke(R7aXQiIIV(12+q-s9>#Qc<2**WWLwOg+Tv(6QA)Mzj z{4A`TXbhsJ$B%b?I3hkEF5l{Aq^;45cntF=p`FNs{5*~6bUnuLh*X;{VB~lT_mg$& z#+toL88qFKXfx|jP^d9sxK!C|15ql579Pp4`z+i(?_Dqhd)y<(Gd0e!(x7SEfGN|m zL*p%`(MRUibrctQ+qyA*S@ljIWt3lPG=(lQezkeSk-U#V6CmFZMjN)M_3`SoMyQrJ z$l;P{$5`>&L1!F5_5mw&sF`%Z zrg>V|95UY(L6^tcC9_9SjK;d!RSV1Srv?gy%h}HrYetk4*h4D}yNa39LLOu?|=E=0&aL2LtsPzP3M;fj4oi+Szjg@#Atm zg(u3+T>yz4qn@3LHxI+IYFC0ohqb3`o7i+(r|h*Ud(jQph<}KGai+8j)fq;^@8U29 zv6g)d;#N5mKq9&hq!N>HCrxwOH}{}BoN)K7p_0=h>SL%&pk7mqSNR#|g$5Iiegw|W#ZT^uX8QF3EFXjMNtHZ^r(Gnla^#<|u2e7RbAN8J8^ zWyICvdTPLg#6?ACwn=9OehtI*(~6dF%g7C*l`EHmF2-+%Y`&8ZyHot#6o1FzOc#as z{njPs9g~v9H$UiOHPUIo^V+u#9=WuXmcU4AB_pU!Eh~B%8Vl?zO@NPf&f0E1UZ7$% z%B*sAVPyHV;HL>^*e#UB4W?hR`;?-4!nLB85{rGgB2fS3z`7|bw?LXenrZEm)hDMc zg4a+;I`$c;LHU$2`~bLQ-@g4%BQkX`9DKnAx1kvG& zK)VPrqjTXDg9Xz;1h{C2n{(R*W8|@RAa^WsLEe^i+D3x66`vif12oVg;;ak)ff$ad zr<>zzj@R9iA{^<|z4^4BRlxfrzk^ZQracyScnPH&&5^K)lCpF5XH8VOOn$~>a-=2L zTFE90qaXn8b&`Ia(>JlN)7f1)c70S#uUs~hVZsKXf-fN42N_M{FJMSxd+@-+>6UoP zEBegcMy10t-KaC+>3-zQk&|DdqRJ$8r*L0~mty{1Vs&d4>C`+PdLAIicw@YF7--aLxg$xpW4on$nVbQJhC_q@_* z(XbAfcz#2|$^uS~s6G_{ZA0Xjc#A*ZBWrI@ELqFVrRtKRdwnls-##RbQ9H)ZWErFV zM4aOK7r_3`b-&~wiKm5tTm1)*F_d#c6(^!j5dI^SM(Xl3>HY7{79fu+(RoU^9eIF| z+uD4VUn3vQ;p`G>_nJV5{0!k?_3h3o5kKMd~)pf)Hk2JRQVh1-hbG;X$*+tR1Jijm5x@XiL> zz3zTvJ`0T_z24YnT1z_Pr|r1~;D^2l5x-Qx8aax>1W72gjFSYt@DGT+p}-jS+FWrr zOr%5Ef0r0n0XGr@W z=$t0C&eLV_S7dQL)CS)V_OrNUcut&aSTx2C8wjjSd2H|#gLmAm?WHIgPrl&I6zQy_ zY={l$d7&G7GUU3$K_Y=!S-cDaNowGsvXit5kaI;$+m>Vs0Mf6{o1}94Xcm=zD=rd- zKrJ6W^Pxt+%6O^dScwTn8$C*GjD$v&y4=O05_|KGZ{q}{jlKPZOm^i%Z+s7U<<_G< zs?F1F&|b;-wzyv}JM!46*ct&+D0|V(r z{x`X<1!|2HktGQWX7T?1Y41;*#B-C(y$;PJhU%Z$VD*?b;IDNw$07lle8WDzw#qH) zuqk?MiB9u*p^_|?Xc^)uJcsJGlyW7AXnv><;3rO8l-B%_Z|GmZ0vc9CSAL4qZoY)_ zFd8cGi^i7!0p8HTh)?-^+S4vxw4Qf_~13JidO|$_x{&e4zZ2MVYkDGxEE%) zm;J-DXRbktU`XWmt}_9m5a<%un9&SD_vh-Bqu3)6T)F99w~XmPwIrjl9~D0a`93|o z=Sk5hU13(1%_}-K^xbYQpnEutp#MX&N~Z7d+37-yW_e&0X=!91*q%` z4`zgr4X?zo75g?Tea(M2IOUUBLsiOu^fL|?POvfu0qv2}t(riye#TK+@nAiB-odKc zE}HL6pbKk+#(>$rVkIzB;rtEG!~qKGFsw&cnNyLbH6aa?N(G5DwQv)4eko?~=K~7g z>CF?vcvM#Sr^L%wDyoi{zH`czEzlHdCT@zxlMYZVf~90fQ5@IbV=InIjH@6bn|Kdw zS)`GBvEEFW=cN4J0gXNxOEs#l&sW2(xmV2=&fTsIhgFfGBj^-?9__;C2I(jPV`ytw zE#_k3o>lv}6d!1@IcjIu=(#n~-nm^S(so@3k zjbY>z)g)Go*7KVxJf_UxSCe^8jp{h2tH)8GOGP1Fk=aul1sJE3<%Dh%61Lq$P@hmW z**AYA!B{f(a&lj0&hrr^!wfLWhdJviI`!gtDI)?Y&_j^mbF3d%uepn)MC(pWnL5Di zIj(VtnHID7m$m1FqLu-UqWT9N>a#qT5m@AgMep0Wk=yhJozuiZJJE5&U(RB3^XqH<|9ExKTZ5=~i0KdC-MwZ?r zlP2<#9)Z!4n8&WI)=4jh`IcVRQUMh|CBwgf!2q^vq+GHQ?-tJ( zXkUzURu-na(YhXpQGh;xxVY=6GPU%-0Q=xUzt}L*m&wyIk#cfCs!1Y$i7QSS^>f%s zL}GJ1fr~mV|GiN<=l$l_zW_10O~nL_at2K7JI*pz;GDMx?Vi*N)ha6aHgI3w09u`> zlW`dR!I9NLYBN|_ru~mT!8b{qtO7=LEXM^=k!|7povaN!KTWkqq$=0+evTeYerKI@ z{A7P{!eEO?M3Y)fgnM_S+1^EYVWsEp#GrZ1aV9RCaCxtuciAV%b+?)kOb7jFZ28=t zlK2CRCo}XSSi#wbeTwqZMA_m!wF!&~Qik|qwT)PnZbi2f-zPPmrl%VHi=S&QAcbh+ zsjicCCMNAOv>MIonWOLAsZ|7oy9`VG6mVLxO2^2GnnV)BFd=GfN;aZ-R%kb)YJEj= zZT^PjPAQl|?#V3LNj9hwYGt!w+BK>bvJFx-0dpt^CP33*I#?V(2&7GiT=1vjr|NP_t2VW79Rk37V$z?Wy@9dzwFDKEJwf z7K}@&RsSW@b&Wb5@2N(?cMZVrENnG-@iX@V$L2_`+yhs(0IgK&w+IaSQpa^Ux%oTC!dS?kwL-jw3UMDc#Ku zLd5jd8bZZXKj=AYw~0MW0T%btV3utX)N%4@Zv-mIKvRO{^mRUVQ|;8HoDlExSWKKV+}7XjVT@DgARG1sz3}gnd^o>;IOW~( z2Z-sh8H`jf*7u4u(VTL*fFe4N3v+(LhbPe=^rJT~(+Qr$+^{u=E8@Qxr6a*6Li@LSg49yYB6u$(^RpqtzTucpdNy~?{Pgx9Iw0;|m;;T;| zVmx*cZ!i5pYme5n)jH?1C3S~#wB?qM>v#4KrGHTSbs0YorQxVeH=cn>^5a(^K+Gu< z-}zd>`7+#xZLBCoezAj*GxKL|-7$qy#kq~~b7n4>^}{Xh(gy=-hfPJ0vxsBo7qyfi z+fh!G-36kV3Z^zaih*GN`QOJ8R^g4NhQZrYI;btw*MuTQA10zgF#yHlI$@pj%zk@E{WMO8DHOx|)NtN06ep%=D1bA5(cJcx>IXc*SX`@NqbPbvSo`HG@nPIULX z1xT=(R25_dXPgSv}N0JFsZ4&Tlx_jX18h)pUG~yDZ9W=f7f` zx&ggtBO-B7V!haaou)fXmaslx()_$osdp7P;l}oG{lNdD0hSJmnp{Sf zDJ=nR7&;#)69Ip_FLY>_&{kV;Bx|oB$~uZ}#hv~Pey+g$U9w)ES#4Jk--Zy^!WwA>t9*^DdaRDivmshZr|w+4q*pZgNJkxa9WvZ;o~XY3l5p~FB}$pBk+4KhEGwpk!@U!v zr}iPWVu`&Z_&m5`6m=u{JwX(!UW$gN(|cF=wB}r~1u<+vaq#k6CLl8=2atM z%@-~~o1Xf(4l|mEfpS+HQsFAqu&Z(<&gRU-D#%|z%==#`_vC$_W~JBGv%zyBxDgmj z^dRW%no;7I20EQ;YBbwNM*?60nL(C9`BZ@#1U5X$)4bMUK{fURjijhW4i-7D z5BEypQxFC6P6~$lLi|gN)-4Nr7bl&)TVys!%YFNo{G*^C6P$rlwDt?Hv%p}=Spxo9 zP~)lc#&S25t4UL^^JcKGE17k^lOyL24$WR3Kht#SV7yUnTUy{`H9h(?;snLlHN&F< ziI>vQu!QSfak3*umy<|lYH^*Co_0Z$i{8&~>)I@3`#~mo6?S>51Zveb*?*Md#A^#w z8-|S>*zkyfE8ZuTFiIy);@l~|RXM);52|PK`k}g7(+D)j4mvzb?`tZ%+Z+LR?Q3>? zzuJ4lA&W~VE7O+U9p5Gb$(R)^h8ZS}0_sl{WX&7M>58q#lB@2HL}otC>ub&8Cy0PJ z8t>>oh|O>>6shwnOL|c5;_#BjJ?1&mIcwPV?e8c$gmHBkmAaOH6;1S^>;x-)^Y)%G z7zj3(*H6e8>U$~bDKB}qzGhI0mdq}aMDauOYesJMarL96vF*e@4Y$R+g@qIn)-Fxb z=p|=dl#{NJkz#~wHm6{=(9Z^#giz_*zSjc*HRV;e%YFTHy5+6;C%70fj0W1-g=&1g z=;z`IG^w9dn+WqP9yM*qmpDfw5 z9VSgWnoWB9^e^*^w)V=?C78PrD1nSgbI;A zbxRYpG3lg}%joe1SsFziXk;hL#fhAb;e%6KlwoiW;W~`0KBnvvQi!?jrhM($2&>M& z6sg~?Cm=N^`pLT6hhS$-exkl&bJSJD(z~)~QtW-FdgIpK@@*pa-D7Bsdi2h7kQ=0S zPSr4sb_2hNp;y7lNVa&#fn`AHdn%m>4x?zw>a21li)1|tBuHw$GYVKmu_n8R%ieIc zx~=!!^>&yao4fYjMVEKxO5A$m8k3i0rptYl>s8QUB$oR(!`lLVDE3@QlS=?rK#GgX@KYY8$#WEbjr!hZoQV-vwETk;e0 zIhc%?R;iH-5fKzZG_B!)J&A%vXOvWa zu)WYQB2CYH4_EaY`R(nGvU3Y#8H(!|DERCheO<5(UGhV_z$`q^p`i&F;^-=0G;BlK zI%Y@)=VD!X>GH{R>O8-FrRbPYE!Q1NNIgVFSgB&ei6K9^bnnfvSd7n1a8bUgRu=J` zXnRuse3uP&Unk(7GSn{L@qL`=n_v~xpwzz?-DnY?cf9w%6y%(VL(RTZ2A<8rn$-Dx z;NB}Kuxa8{6i`~gO?8b&KuzqP70 z6_S%a9Ni|O%M6M;bxcn3aeBwkS*p9&xVnKy9GJSH+8_VChmv8j^u8PFuk7Sq#u7ec zQ;K;Oqv392SFBYApX-?aZpAl*Wg>`@x zvipQa6T)&Mr%)d&HNOY%#WtkaD;Lxly3ypDFCNJU6qS_6#6Us&uHN#L31OdiykA93 z-xn&n4U{*ZH`@TDwCZa+@5(nT9SvBdcD`VVIX2k+`Ykt2{;t|)!bEP|3%v*gNoVir z?=u9ItoH<_?~pm8BA+I48|^#oC7sgwC0f-jYExY(SG%fqpa2m!^ZI#!$?WRZ4Fw&Da~t0o7mJona=nAxrpq70xQfGfCAkS{A#OkDX4TnLVVi!=GPQUqt$S7I zcEs-b4U3$0rz(m5c@7F7IOM;f`U{B8P%7>zBemvSsS>A4%}LBNr_zC9<@4O1^d2|9 zZq09ynH3U0TKxq?CLxvD)TZYOZ5lbaXKGkobjuLN;m&Co)w}K&hNJni4IBMnl6H^Z}>eP?$6%KJqYEYdefZxdke!tRNN z0z!J0FA4gI1rv^7$+m1f&9E*#&dESCn(^6DgXwCsLsfUV6ru)w-s|c4(leZ0TwsiyQU96UC`rRQwA_|9bY^Vz*1VUri@ z9F(VE(jeeCq!N%4TNuY00Y74{9&@?5H$(D+$Feft9Rtf;dAONkd6|&sPC-kCE2%b9Ri*5sdJUw3jIBfAE0CYXUjS@x z;68lwH)1@Ap!_>@^wEpuf@T*B4gUmGoJ?Ao$nPJnz2y(8m4K;Y+VVVC`gL=+nb?j5 znY_4F&htjlDdYzFYGWvrg@b>aQ0IY8a}6AA%rKRXDhbz_Chw&t19iaolDzO*1Fz=5 z29_;CQ6k(V;_E5=<2#EV&GD$JP`hN5_$&2;ipy2U>i3KsqXN1~oQbC7QwwK}99xMy z11$*NQj%pN8fWbQIp=~&#$&$4xH<_8)2z&wb^u;?IF%>3jFMAZ3W*|=j^y%WKI-JUuL}qhinl@(4JW^nhIa6^d49`? zl7O1`KNfZl^=d4gsV<;ud$pr%W`F357ds+!r=8Wx8vM;hwL1|A>5AXmSi>lIV2q7 zS7*%r(iFv@)-8j=v>gp`7rc|i`N}TC_C5aqts^BA(xtf=N$x-i zQkQY{L@r__7Yjm=-h!5}zkqk5md5oMAd{s^ z9f!H=02+S^b*^_<=bls`s?3Q`4ym1b%BpA5FvUumdro@Qs-0 z?I7u|J2QvpJ$4jgMmZ_*6|3q=33SWj7(5IWuew8*mlDrXrb65I zNAA|ygn!2jv*s(O=wr&(wQb1CWZHDFl&13SrhxddwBzk1809KM)`OiQ$dsEFp0h6q zr$6(PeS8&nE_P{uVLemlc^8#u2ClFwus>S7bl=?YefspY7Q!|=PC0eMn_!5xRM62f zKU~3r91N z{zTS7fCISHc%pnJWur{$fupmL;2XJmBH%>SKj`zG#S{V6(o@Qvia04E|GFM)tze2PGm6!kzt*6}q5AflPu<+05svFFw3|T6GodC$_{g*>zHG9I@XO0@sv_9vRvvEjBKXOIRNDwQhkTGT<#Ietv>FTm&EL~ z*WW~V+4U-o6(_geXG%?boGl5*xVEuDjAC)IRX=W+*0D)TMpG3Lw?se-yyIy7c^RZ8 zEQiir^>;^30$ta$@>2?U7#MpM&{uA&7f9KACgsMsu=yFJKEh};cbCZqM^0pk5lm%8 z1~MGIl;E>B>7*W555}Lmg;ybW8$Qdee3NRfb5r|b(Lq#c;UCn#I0XYHVc#_J`Z?vH z6J``2#-kmfP3jEqUHzP#Zw^qc>ss^8Yg`FUIa}(ti!H$M0P1DXe3imqF;>J{DrNl| zUIrf_=;fka$QhoBxH@v_^RZQpO53DN%Y0_4t+KAwq(bn=iLYjE*11Wb7GA z#v}%X=IAluwv<=<{^~A(AQV`%0kb!gEjFb zq@AA&6JltOZ{50RVU;$^IoPI2cs_@=iN-3SY3!KjP$*c$d%8@(fvid0xzG;qyTF>I zFoMHzl!NuS_?*9D%QG7FV3?sj6E6u1I-s>JS4-cRaac+;6#%KHjBGqY4y@K2gt-`x ziSEZ7dCJ}!&6p^(=xn|I9Hc&~UOv@pAid^~7S{2b%WI43VQMrulgiZ%g~x2 zl3a0><5K36WDI7{%7+-WGE6&hf7Wy##;w3##HeEVp2uR6ia4-oDHjs=(>s5$s^a*? z1|P=!BIEbz7jPFw`)9mAbj~b^6-l6{wZYjXRX8$gNlUI@vphVbZ_|BIkVp55)y^0L zNI|9n(7HHklkY+40ppcvLShe!>FCo60yh$kRC6rnul z3@zDC?8V>=kCqBf%WovFi|>ad1olfe4)_SzMv?Bl-bgDWx?vQR4~IF^nWub1X?*zx z(q8K2=md-D5tOBi-F95+ESrY8A^mwaTebyG8SL?WpTXaXO#OVZXqEj(?`SC{!q^y0 z(dyKe0?_$Ex4Ztt){=GR<*;m3!liZ0Fly|v=ULRNO!PyMNF0kD=H_#>nr-c#{wI8^ z1q1cZT2`iC%e6c@LdC{!B=nu9Yh}lSXV@lMKhjNAeq~umH&9AUg^Obv1`6DDH^sNq z_WQjrrSXr=XHoktNHvR2tb;f~c0<^#pUzIF%oNKQ675?i7^zLZD#`@1!lXOAnwHy| z1S)AcR?A5}Q`x{Y_e$cZ&J67?Pjx^$Wqd`|rUE&OR9tD6Xqq_j&#cQPI%j=UE@6_Tw;i=l1d{!<{bIIjz_oWd5D;FqFS-861aMTzY(jT4-l_Zrv_Z^Jc?o6e1=<}A0{Fk?NbqiwaO2Rx zbImH*)5sPL%s$XA@X-l~qqDK@gbY2LrCoeZZLR<`|7J|d%=(i&QW5D$K*Bw+olaj$ zM4>5~Qkf^v2vS1NZg@>^=U(DHFbfs zP(_h&mUb(q;{$Ufx=PADi zuH$<0<=&0*#q@01YFYv{RzWipG{xR@*UhZaLXwZrRcv4Ro=F9q&8hgtiY!BHGH-J! z22~-vZBQ*{I)EU+^xJ{x&~(dtke$fn&Gth3(oY#@uoGHJaObj4eKkx0mFg#`$ZG4h zCPp^VkKrvZH2r6DZ;?OO`5acAUZzi@-w_K6hG-l_pn&0f+b6>B@Aw8c2*uthksRib zUC1+oLzy_pj`|Ztpj+U*M2tG7)P_EKSPrNC-dU^|jFIsnowm2x<2FMW)e#yYj6eE! zfn#^H;W?qsKFYRR-OmR<0XPA!fr^R}6z<1UxyRTj2(mqxqqy19Yj_sHro?}M5=Q$n zQtc8;_jnSPiw+#NjzQX>BGy2KxeK3V64FhO>Q~gZ5sa3e3Fq8C*7#c7@}LuD7(^pNQhc)R`h2!z0BJEV69?Kxlb z#R61MP$SHu@#`te75T&plrLme>raiU*-Zb4*8c^(qPujLJ47iLk4?4UzfMnNX4uLZ zf{a(TfzU-)2D?JG#Pp9Lq=4gETQ$xAR=YJ$yF^Cy=_TVY5#H%2?sP*Cx@sw%aYga3 z*2brOkBwVEPP9?9#t1VaWr<<6eLIw%lOOq29X0kj6 zsOza%j_H*mp>r&(Ncr@37f*EYJ;5c5cg}=oS-`yYUQh|Qtx;f=2=3Z^Goe=1Fgt|a za}(xgX0$f?Ts5I>Ifn-JVEtnC(o;P}{Kk@*Ip?ndU2;X;gFbdQD%hUiOpKB|EL01m z15;h8$o*Y3v!MVl(*)YB4;=}OWvYbSo9^V4UmL1!_~=j`L-w>;+s!6){11tjg;6f) zy5~RLYTyH5V?2Nwd9%t_&h84Iepm6@T9xubJNY7?JyO2M<1q26Idm{a&TNEkb5sQm zXnEoKCF&0wtn@4);lZ4iWpM@Fcj)YB+0%ZbB4BoPg%xw_42b497D-@ZDjkl^=M0TLFQ{HVW}UUeirx zNIpk*1w>3tobNrFgbz?a@Em3GWxcyWpmZPnqG@G8BE+?OHAJ~YdqgsB&?H7P85sE& zHAY9jq(tXnGTCRVXx*gudL=W*0(&uK?7x4(;90u{$HKRMu&kNrySMekR} z;P^TYG@O%a>Vh{4NxuQ&BAW~2c9^8b?Q_;}AAwpv-uf3@?tteX1Is99ceA?yITx8Q zSCzhdCRwYrh|Y3>quyfAH&d*Ga`em{?NJ=FAS~{g(MjAEN$kzKMe;aN&XICqQa!M0 z4xv_!vB{(Jd0+W`a@cb%G$+T!NVDF?c=@aMZtZ6tLhp+9B1&!jy&<5Lw1)EUZ>qJW z5dg&w4aHHF(`^-T>D|pRyykBAy3g8vH@pwQmBth4RvYQ zGw0#g_@ol|3qXwCB*{c0>#6{QT80 zIkcCeI^pSvXySEP(GILp=Zt3u={@l5k{Zx(fGoEx>ayR|f6;R8%*jiwD$yE2{~4-&in0)m#83K3q%6b|$SBg@Z5z~BU<}eBTiw@F_kTc9K|;cvrl9#)6ZFwbx=%$w1o*mn}baPe{9aZSUsTM z7$zd6-NSNukryQ-wVZ5_sk(I^D$F&O=0IzMZ@<&>Ljy z#!9kBsxT#v%&$1)*Aq&R&abYN-e(C=X44_(CeJsEIb z&I?Lo2~^c4n3}y;Y#5oc`AG2Cs+$4o&_;Ud{RAE^$$}T+^0Hz${3B$m(o<@8rcxL` zjR;e=x@5S-G$gs+-TGkU2xFo9y@A}(g(5)v#GgKfUnD|;s;9SNXWzb+HO|_E4XFO5 zQGx)jy^g6{K2g7O6$IAZ+n{^o|PFcJ-ZfdUW?J%QgM$ZtL8qS

Kg?;j~a+7JLJ@PCr z@9TvMEh3(LD)_St{0JoCV{=Q;qog6+S|kBm#H{ zXn10E^|PDc`6L2i>HX}AW%t1jADu@ee)p0DWt+A?U9Eg<$C;G|HLVbX;p|7C*2@9x z1Vr3a>+VQi34F5UUJh;90z$Qu#bMgTdH0dpFwLfNDRPn_M+{Mvm7wh~&f-P!I2Lv5 zLTG!M4Yo6q6!#&A75As6;!zu*TN&UKfQII`f8pqel$CJd%DXXwksLU~uCL!OejS^! z0t@1b0XOu|QWU#0OKs-O3Ga{aMF@QMP-8K41A92@7j9;-(fZTisc*qz^!et-pi&#B zg&t=(!wfyHI13KL+utxDV;7fy9o--P^C^a6fjz8qXwk_M>0BZg1nb?_v`mjxFH|MP zmM&TD!$RvKKjL!}S7W%ZAv35HwV?qR9Q!g6u zWw~h+TP%yFi_=3@y;LdkhXYt_URrsI=Fo*>N9HSV^hc%s!)QkE9LXxrp<@CTgY6kR z&;}Dq;mXyP>5zYkq3G_vbjDc>qsNmht<>2rE{9c`EWKqO!mU}ERlzn$sUJH*ZW$ctr$jrDSUj9Jn0JE zR2PlbyVItfA-G7MGrkQqMIA@XD(KKC*SiSZGNI3F0uB3YG)(m*lymuGIFNWEUOUV( z0-GiAdO1pnsLn9!*=9eEl3=IaD#Do^ty$TZry!h8EU(wc1j11%1r(- zKq==GuWC1z$3{>)0XzItg{16N++8bn%Yd6vI#W)&rk@iG6v=W(E~?S&?2fI6l|p>Q zhLJ;?W_=%u1_g@6xuc$lY4E(QA(W4xaOXqfDM(NVh?5$i$6c2roY) z0>HT6_n{O5qgbgePMw$Vj-i!U>gbq)8wxJ>H0dLyf$yD%%ut22RL6NMbjy}Z>vd0R zyI8G8`-)Y67Ce&I3Jh|79ucdM#W}^fqelfjK$mQV!f4zzB&atP5!A%|=$%uh-@{ls za97f1*Y9hAL)EsqPt+;Q`H7;FmcB>xy~NH`5DrYpmQut<(JHRxT3Sl4X4%A>Qvb@-!Irf&vRZWW-P=h#Y>YSK+rmmRNOp+~MM zb}zLNP)JaqFyZ^@#bU43m#1a#Gek|?mrJ`kJy&8{P3iw6Cv;EE&CXCP()(5^Nm8Ng zl2I$wt*z1MpZLh6gykmx!`dW>Rmsdg$@?>c=g&}(}t~?(SCj(n|zZ^OUeEXtpH1>|g86J?SAv&;`l!5hqran#2#aVZuw3xgc zm1vA+TfOxHA(lIN znOyho)vHx-U^VOgJwPx; z&-pcI!bZ~2r5IQAZAo{*J3&d!_=mxI`a|-K&eq(y_0nY@jLaojAYCyfd5?3`ozOzE zucmY!0UnL6T{-F#Fx#uG5R2iLq*g>vbsm{62JqC)&(s>Y;tJ6^4LXeg$^Z?dNXZgK zP8By!MhmizKEQWz*668_ipeQvT#f-bwHx*&;HECPOYDEal!|RwkELj2eEG$eLs41) zO85)VjMO4AV>~o&VU(>~gyi9%^i<7qUWp;?0TWivX5W{e1b-s$jk!&jwoVm}MkWC= z>hG1Lp55X`q7GH(7L88}D%;CH35wJTr}eX0N!XGO#SdoZ=bw2p=qjUEq%o5*&>hVV zrA1;92qo`88W_ce%NBW{WUs|$8fddwYYp(~93itRq;Y>VSfpVzUML=q(r^Z=adE3HJ`Nicx!o3I#7i=%Q6XWulX2 zH&o&6-4roj$(+@fhz)i?VNRZG*65kp098Z|9@#z>9%S^Fn%s&=<=AJdFW=tBf4^F+ z#;7EqG5^TXMD}esYrG0%nE9hSt!VF;?vTpfI%j7c0Ou&y5I^!j+t}u)ibLYC z(``H5b5d!hjMo1GZ9tO0%FB9QSVtY+3_qb&l}@jtTc6b5Ph%+ubg2i#d0zhjTpz`D zriralQ@+Lzf=zwH36n;sweNm9V671q)ar>P^M3hAkSZ+F7AjU0-?&qMuXR z<#C+YEdKz6@AAhHY;^r+M@yJ~QILk2szS2nCN$p6Xmq66b~`0jv9Rbxi0FD4qHMZl zMG&f?Ek5V=eX+l82UI#fKm9|f9c^lK*Qt|~QFJm1Pc4q;W9yD_B{e2HuxG|*d>1!y zi3rq%Td#;dV|-wGfZ}Rf36dDBH5x))EiEcSw$ehk7|wZx2yZscNlDU|2t~)?JCENQ z801qivi4T52*3~j0M4r{t-JUo(cT`42LQGH9A?>bQ6Y4;-FtMe-JT0cw<-Il@b%RjwLrE?=e8j*5|)WPHEjsxHs{|L`e@Ysyl%~;O~n7t0Lr+f!OLwS_=xg zukhl?$+I`VOjoIPxRRFWD)@2ptv4MpT4Y>*zBw0(P&?zv9co>N1->jrnNfoQ47oaU z5Sw-6vfAW2meQvc@SqYv)Oi8S^uz%m+--sE_moEvy_~p>l|*48M2x)q@o%|H?Ahjs z^VEPoc%th)D$D&P^;hcH5b?Np93T*Gn;xL!?5SQj@^2+^%ZXVthna4DI=s5PCp&2J zDYc?xwXK&3B`PPhK`2{%m2J6WL}jmSEVlDaF`M$7>P(wi*%Y@^C6IhV7E-W0u5pHr zp+&xUF!o18%%i~WA8EIevt!=rh;wJgflqc+xh=(v(selV%LqaTiBZ@OGlX3;+HZoj zFocZm%{9_4Td2f(IUb~>r}e=T++*P^sBWkJ(6Zd7OGGWRQEg>OAlzu?ZaQ0hZc7rz z?NSLaBV*lPE{FD%++)r8VXtSL%C~bRAxjZ%h7na{y6)rPNL|!-y@2VDJZKF>uIH*H zmI@N$o(l(Ir8%DK33)BN@^$(+?ushqA5boHGb#^@RQ67*jx^nSkiM0 z>McP{cCNBeNHgeA#~aYUs3fFqjW6HVU7~E+MnRhRdX*A z@^(w%Y*r`MT2j*1rKg&ex55Sj_!FAr@gq3rDvL1J8!kg(pu*IW*+a!@xCdjpcll$^ zc>q*rIWhXwrCBZDe109T3U`AHUMf-y1Srn zZyY45HHYCFk1WcS?9WD|vR9WJZajiipMWh_xbVI*W`Cq2Rc+F zOTnd~zz-myh2BP>CRZP*Eyr}narHWoK-~&UYE}OLL5yyDTZw6H>_bU;TCq!>W4966 z@d^8vm`c)ik7<3wp`jaS9UZ^2%ITw&^?K(S9e90=)%WPzBBF!~EEIS%F?F?k0 zgrz-IU`YC#V(fm>>PN8VQIc3x!|NJe&N)0*v+a8_OpDvosFc?TN|SWB^P@v)`V}9i zjv4YP8NVvmDkuV=zVkG< z?K{RCu}YHkneb=0*s(9u5X*u*8Awz=&OTg_EtJ2KFnsn1ePo%?CipdN?|LiCSJ z6!H3;#0d0g473pIZA(t1AwupbcGNfuRg$7$t(|l9rQQGDg-Mxr50C-_K{C`s%*xvBXZL2#+wD0cDX8L*x;Wr-sX9!QDNojbvWXE zGIc+&n8LtIt;vk8!QCo59a>PmC-eE>&W%*c`GE^|kjbb%5($WwmK;et0CbxRo?P&K zmN;KgG+H%NH_4Bemi0~Np~H44mm$|3Weq&i82oAlHzbghn`$832Ucy&Tr=RtLyJbp z5MtE$iu_RAn!=bsMLi^6S7wj9Q^w}p^z%IiG<42~lhiJ)5lLq!L+m}t)_|AYmYCH& zmYpj5{{VnI?q}IC9iYP>YO@ZNP*~OWY&P{e*ycND7EXi9x{-e|&kB6g#3rCrQx(S* zE%ftcqopm4`JW%x6nWo0JeM49JLUST$|{ojlvJyea-vS!GIUrbH5fs@# z*kg@N6M#jx107Ji5xzOx_+K29z4jKzn>&%&+_OW2mHOgCZWOF29q~?w2;TUXhYw|_ ztY5&4MqD8)5B7)_Hc;j%{D^#!up(7P5i>OLQFUWW=?=_gRgrNgiFs zytl&AT`w#*!e6#kTw9rybCl7h=?Ozk0kW^mley>zEzTdF(c0#5zLl6#H6u4x!VWQ_+bTGf_Lfs@UD_{qTty?Z@-o!#+K|vI9eyavW5BK+oIAFH7q>#^Ax(4 zLmYCa{oF_XT8^ym#il8WeaN&}X;kX0rqn@VJ7-d?dMKMDd8lBAI#T1+pOsmp#W7Zs z+B+0?ikc?Cj--M0wktBcPw2k^BgT9f)oj$_YBeV{ciDi|%SiF>Sx#I08)5}JIW8`9 zO;t!LV^|7~HyxkDpnsS4#XWndKU2$RCw;sLpQdA+TEO;bB^*GgBkbykTG&#;kWlK9 zQ_F7x4jL4*L8Q`=0w}1yhXvOew^Wp`#2qH*3;rom5tlfIL?LKXnMBxXPQya{K49SE zC+24&MW&V*3YzMYH5A;Z#E+IazCa77L#@t-iFVhrzzH5En8+2Zz-Y`-GWJn&mjEv7 zOHoRDMIXeq9)B~27H3sf23uLHFx$atA=b48XdL$g)Z)7>*DEK7aUKg=-)=K+xNp0S zD`KJOb~v=GiHeZQsu7-(0z-B#G2gHwWdJ$bsOyEN$*<46DqCh}SlL2Unv?HR<+Aiw z7EijZ-78O!Cz$obs#{9QJV>KvCDC1)+y|7WT4hKI(xjBDO|~Y+;`aGrsZ+?`WK&zK zdxP?t2Vc9k6qGoF$e}=8C!crp#nl%(P$N>BX{^5~NGj~ZQipC8w)P7EkUE>#b+!S% zQy171=&hib5+T&0qDo(hFlj@hZB48w4Z0D1(su`Aixz1Qu|YJ+Q9>#%LlIw$u3<%B zlA+VMfUiX-4T#)A$<4@^X^`o3xgeB#)EZl1%ihF=gd1)--=N55%h-TD)#W#>bGsDl>b|ip;Ey^@)t^m~@I#IH|_^*A=sTbqs@)qzMmd9w)tfq;Y!$wiKOPr(}W$UmSXIkTdTAGB*k`w-0ije1O(UqQy`KqL)~i zI$N8+DexKz*0O9YPL%8p4_RfEV;v8PzkvnW-p`@WY(Hg}vcc?l#8~a z6X*uR(-hQ-IDdt(ec=fO#FrElo_ds45B_W8;%65)PY)y1qn!6fnCmfI_hA+H6yvH0 zS7rbS1SpaRhUcai)s8%H;+2=$wrY;-c=4M?lr-R4icpl;0+C{DcE$`GcWXkC=6Gy= z-T2hVd|0Rd07*Ttrc+vS@uKLgzppzAk&(P(hF`CS;ofUDjV1y zqrmtZ9#<>{N~s#1Pd(3iIwaR+yD_#4p9L#o(Wz!+4EkS>>F8j;t(w3Z(wG}Sl6R0+Xr8eKaj#+W1Th4UIt)RB1 z19LrL6wHMdIa*AGHpl>TK@1@(zonEtP9ADX=&UOE5n$NX zIV0Wx=BeqW2jiwoG6lP@GO|#l+iP50dJql}MGx0=N+Plgg~fFJPAzjaW!aJoC~&V) z(g&6eGWK6IY=*^gZXp#Vx=K*5i6I3h$J7(_wgO~Y*|+v@;T~a1R8e02<)ri@F66hO zsv{~|8$fAl)D|@;fJKeEUwkH{I+Z%I>bdT3g1pUMT~ekL*(r?DOKrBJa*$2P^WTyA z^CulLmP~%VEvl6J#-jspZ)HDk%iuqY>3mt~zEk>DkF>E|QoZj7vbI~SRkMU=;zuct z(}7Mt=XJCs_@6%kzBaE5s8r4w=GOCFN(*nxLk^g#kOynpDHcl5kHQj3Ae(RFip;Y` zaS>4MHX}_%k13eReZVv_|_MOm$dh=H#ox480leUyL6J|mw>rqf8xyp^aO>)T&af8a{W#}Mj^rP7&0 zrBWcnF`~>^vw@`&PUn8{B%Sv=<2`1K*y9d9%Py(e?%!L4+@PLh`Qlz|%uYuRDaDmc zkPeVVt>&li8?f-xpyGN6d#-Ptzrgwd7V~o-spNN_D;@{= zKY7i~PCTWkm8nMRQ9F~4tuTe8l`7lY9Mj%ahdfJe6t~6D+L8xbTNSF8JOXAWBU;|4 z`WJPJi`x~iN4U889ABPC5!Tq!Y&PqT8W_UxX>5=U#f~66jVAadc^2u@6w-jVEKAJu zoyyHt>yNaretmJp?X=k1=W~hC*@mVe7iuX(k33NNdj%007ZzFk_XL{__VdSt%?LL> zHEquyNKn)X+;te?D74Ji+hRbF$`+)y?t-4tAndCh#m4qH;D^B-<7|1xrlIi7lf!oC z`Qw2HFV+6}psvB&8!e|0pSyKF2Ti?fMiN=yhZ&P4N_puG8jTZC>}pZlB^r8b9MFAs z@Hhyd=8B$Qkn@z;ZbwS=sd{-`2I)V`(Bo|I`-yaH_mxk(JkhH(*hNAHprX+`YO&^n z(EN_$3m0S@JO0KR82IFT@-e77YZib`$QY3Q?Aahrrkm_(L#9Z#x zKaQCg(v(=CITE8mLqU5jF2&S^EBK3z-u`$s_K>P&`Q`c^T#n2&CG?lqO&x(#$tKPn zByN&Uo7{8p#w^cSrRt9f^36(7OBEV*SS~`Xr%S9WO8)@r2LAx&!q#_CIhKH&DE?!Y zP3d3K)8A*z!}g2rElE?H3Cq>j5T&mvX11Js+r93S6QSOHH8wx$#$2jUl@g&-r=D>i zaycWYN{x@rBphxkmQH^+v7PcT8jX66@*(%Xyh?jkEq=O?k-v^It#wRI;eJKVDH>H) zq9KZ-ZJUuYB8*qOuAtjXKjZVq$$p!*T51jYOqWm^B&oanCf}|vawb@JIdP9K<&+-H zxw416xOp_f0dduzL?vexIfcM8O2BVIRN){VfQ(4XnU-!=%&yd6l9fLJ_)e`B4k5RZ zp?V4AN=X;+CmkaRT;M&Ge8D2ZQw^PY|JfIs#ThlU=YLZ2+&&_2BRX{Q*NEq zwmwJ43uU~f&acJzciR0i5uqjB`HkdPVh+e%o-+(=$CG$<6}H{?xCQSVl`FQ?f)9q1g8DK0DzOdq zvK&iGO43qpEDq!7aF!BXZQVgv0Q@9ueQmT1pJ_;|QEyNA=MEK2u!yml74YpLd>l1`6Z?mx^h86P_544+(F3DNYpf^N#& zDvu#I_>c!LmBsuqm@=mlCFSarNwFj<8?Bz=imuC^AS`SF{XDSzdy7=s#W_+Z2NH$Z z#}nBh^lIv>a=(g`YxNxPpLPYQX9Hlu_2e$Oj#P2?FjS!?mr2X=1d;-5-IjuRU%Ze& z^*A2QS?V_pO_H_svWXwV*9f|w7%6PQ>@w>!YBd4~ zPrF43LubU00LFFAmG`6<-K|ec4yxraqr2KYzcQr@fKUAJ#OdiK#`uP(&z7s=XbSfh z^R8f~%0^huMib0#mml^|_yg1~a+h5lCJg;CKanl**k(iApL-RmWvJS6zjuT`hMI|9iQ8yr7_8iTwMn9-^^w2%_bago* zt1Sh!tn3;=P$~&OnN|Rvg7)0(#=S1ORD~NnXv__m#D)e^O{+zff=aw@Io&M2k15&P|Zxgxw@YKk)bv>2L2OPVR z4`v1Vwxe{PK&`%bGm(g1wQ=n$!^+i+r`|M?EiW`lbge)e;;r`)H!#Cx@TX!hp!Afa zlie7h6TR8jbsHfB>c3AMd^0h~bcbZPveWOIsXa*iDe>j|;m7cwMqIw8uH)fOPxyg4 z=TkJ|HEZR#h1sJqNUv1lK&Pqjiw0vM=SsUVX3w!6%Vw4CEI8Xk zOn2E+sar#l7FkxIVnwglAFgqbulE>mXAZf}`xnf!tY)D^%yFl><8wXXNpw2eJ2Bl* zDOelnJ>4oz`K4X}oY9&y3(^bkxZx@n2^Z(A2uxL-=u zI;PuKvt#2Y8M1Obs(F{uPy=RJWqNug){|48{{YLOT7~(WV4E@5Q!b+=xGS_E;RtP8 zcL^mo^G>2YF;v-<>RF~!*>S>lLrj8Hzd_FooU4$%%}J?Nl7&n=w-_iXEp@t&;yzrl zb|xK`0E_yW_12<%NA`m`XCo?eh^kiEEkU-XqPeo1^H+fK=i}jry#|LOuRVy-nplop zLoFqS^(n=kO}3HD{=);Z=CL0!Qz>IqnX=umY#Zo61eIImZ=M}AtnkiO%NcEoTox0U zsWN3cCAKw%CHDJ0DjigTauhjg#y`Y8Vvd7=YsY<9+!N)1`s!`z7;n^a`|cY-&b$Nm zj2xkra^y-4ZdF>Snm$*j3)G!yTFjS|doqGg-nr1&X#|0MW$gW$A_|1+g6 z6@3Z(Df2y4dY_gjRdWotqBBiXy__iG>0l^?BK-Eg=bg_x-x~~v9 zbGv?~!+at1itxG)Gj)vDChNXl?pOow`IyVqva&jji_`I!RoCZS0)OaAX%Z*Z>hDT? z6~5uQ9FmdXJh3^tOKi8=&60*d7a>atA5(z&RT|5w0jIkr`Dkou{YLl@n%l0tr9At+ zp*yA53BT6^58}R`+*l!F^*j&rF&>$b+oC`pXxmkDE7OO1b0qV!Zs9*m;tSkGqBNkE zW66-85Rj4j;X0<4-N8xn#AR%E#9#4NdyniYsQXHnrqVuQO#c8;N^lHtQ^0M{5mx^I zn8bCxf5b0rbK~P;ObON3E}nPATiR87o|yb`xityhaUZue~FN8HLJ3XtJv@sr`*rhu97{s3k*8mV6f3Iu=LaC_M?q zPiJQ)X{kHTgab<3A$_KxboVW5Uj2Nq+RGUhp3e^2&RMUtRXOD-LxzVt6uOj~7hGQD zDZRi6-1v+o3&6Isr~o$aZH-f#XSJR^o0_L(7Mz^@K164pffYKO_j28~NZf?1i-F7Q zjCppN*-=irz2TfhQcJS;cKb!XTx4df?=F`~$~kyb*jh`{H|;9|NiMSu;D0CD>LV5^mgmE6N3D-+k5;7UrC z^X6%Sqm)0skug^M0KiaYFF+;e$6-9lgJe*Hr3Nn$2^lX=3)B;KQYE*mr9BY4N+I*b7owH6; ztT47F(;0efG`=)1LGCz`o?$^iTz?hD*v+2ME!OH@+iYiA(-7li?8zMD_GL$Q?-GVK zTjQ7^ZXro0np^TXDUQP135(2Hs~CM|3eAXhnxhVoZX799`fZAIl(^5153^l9MCuH{ z>qWYZWfV$mixjwpSpJ}lE8s{Z6f2EXZj}MYq%r z;}`MkHYiktu6to1cEh;xPm$~M#~{d=LRu}UNxi)>RZm`-YK*gE;d~g%!lxrj!^{~@ zP1GH!hK+`*EfqtMiE6dt>urF zwcgZmJS==MlC}rW9Mf4#&(%$q_e^DI@+y%1@XaKc_Z9$6#oF%^=HY%UMbkmPfN}c zSxN(v0UIe?f=7+c_`aq@GG->RP_u0&{_NL>neoJDBIV$gQyN-YVGGn6TDBw9Z;7uM zlNJ&7%vKw)0VxWye@r&?E|*tHr?H4F@ArWEj%()G-^dc`c4ZpFOf6lCJFS9l5(j|5 zgt^bkTFR8AT;AmFacGJ~HAB6aBmV%EC;6ONvqYfiPP)Qg-*PSV=ZEuUmnZ;$KQR~n z5PTQ_q`33Fnh;c?Y!U|N<%`NjQeD*jLPxl=cTh+Qab0cTK7ULch_nbSDaPtSfoqi{ zB{%utYF%=I$X8(F^%aA%QmrZZpY+5EQ9aM33 z>Z6LPwsJ&fN;QQ@zLd6;zt6+>!s=yuT$GeDl*DZE4W9MC#m@s$T@5x?d+R)bJkBv? z_3uWKQ0NJ5SZwxl$%mPLG}9nv=~djvR8vm&YHhY!NpZzoTV#$yU^;cjS)62X3$|XN z1QfHO56*VvE2@H12X|ktO6LICR`{7~r|xLnEnPYy)23 zb00B+Vb$3L>UobeRbf1-)i+YYuc@|d*f;dwd{@xvs(w=Bl$5pwuAjtz(+Bk&o>*($ zT$&hh&D&{hD5*&t$sk!bro-$RG0V*Mi%OM!&o9#&>dAC%12Ef&y`9^i=v>Jl5q+^8PhWfV#W|EuTa0p4 zo1S=M*AX<j#yMOdRCZW!ZFz&DJ2W{KlOMZN~|^kVl35N9%=Rjo(Vs&ze>G5r%~- zjYXwRW~-Lr$Aw#t3gfuqlv{NtWwN`UfoZx`;c$73dH0yJ1x^y#uTzwxSfxAfET;be z+aPS?N6AUJ^|l-oJ~~prqS0y%zFbSKg`^R<2c^G%JK!cIr#_OT@*(VuX2h{r3BG8Q ze2+gVx0tf_UxbLx5+p-ZBx{E1O_tilt_n`Xd0bp!H^vlZDmxJ~-wV|ptj$bFOp0SF zNhE__we9ihAl9S1>4Rd9K{{3sLGcrAbgbZY|FkZMAXR(#!GeVJaxK$h#D8?K9^d z_|qSXInE7#HD$PT{KHF+*alS~r3-8lt(sT@;YCNUGs_u54-n)v#9y}QZKf}{keAxi%M51uq7O0h++JmMdyN35wv;SVwvPt8DYi10E+7A;@xDtrdR z^3kD7Q(z^bU=D;1=)JdBGv$RW@92j$S>L~7{{V6G65PJPEvz6PNd||+ULaScNmW{~ z#%Y5yP?=4W5tm}GU&NIJi=-bApnM28KFqv7RZk;B&J_IDO<}al3`&7tb42zO+AN0A zEcae$1992_y8sG^7shR_L28-Bwbk)AbjTH8rj+3fx2dv79Aj`ukP-$Xm&W z5VFIC-@IEZ(w7(t-?VHbsY%@F(kyMZ2Kcp4Z#3|GJW?YAA;gxev>6TGy!35L1wLzG zZYRdz4wz_XI9xRTibbTeT%_dO^wUUE;kMBbWnCi3mfA*;Q~&{Bg$v)vu5$fqGr3WS zPco#)rPNnWEv>+N1Sl1-3W2hL@1QG@)8~!YxR%Eyj4e>w^{g-tBZcv;X{%dsSQf8<}ZuNm?~0L@g-L$9Z^0ycMypowJhl` zF;k=^Do83H5>G?>akd3|kx2vXgpRyDSM?5lBx>>7&_VK(D#AcJGL z*n0V3mME(zcDDpfb{DAk2&!CXSeMwm+M8ARDL9&%Qrw8Ao4tYNoHXZApj9A+C8R`f zpYHc;pHIVz7NFEC1B?g-^U9q?`TGx(`lXcp8~W%K~zYI=OMMuIW=`Ujp)f4`Y1D zN9c9@P1N-)fx$b1xqc<{Tr(j7O?H3)MZ$?Vc*v&&$6+XCC`w%iNI={H&ulHGJ4mNT zf?!Aw$ZhV`$1kz)7&>D!!>!U%$&{Ettq%b9PwKIWqC+bNns0ZNz$aKToj&T6>dhYNk?*YdClqA7n6V25fx0Vw%IC! z+bgGL;#5C;Hoi^Wp->PYodS83^W!$iGGg5=6Lq#nzGi^4vpW2rPZpv_xo!vZ3axZkS9Q;$ z^cn@|=7CzvD0!()6W=Tw}N4NX4CeWh%qENTZ8^xnBvRw`rXX>L)$<4iyA z>n_f~HD1=@@`u~pfB6-p_f93#=&n`g3jzXv7nUsL(%L0UkM}_DpproTcsj@{j~aU7 z)Z><0H!aFaN|DQwt#UlE=TyhHCZH?iZ^zbQqSZo4mU(X{6gb|NyS5iL=Y~P2N2F4< zXbO_EX2Ik<@KD6s3>W~lAug*$!caFq^UndYW_$H@GG~P*DOy8_WNw!4xJ~(+U+0Z| z3!qr`9E_ChuCcSfeRHWsUSg0dM%y9Eo5F9{{T#!%vA@d0YMHv;#oq%i0-8TkQ^q&*lskN+Sn_B?O&7f z^mMUH;cY^w+bIo4T*~rUZ3sXCBSUSSfB~`QgAKQF?6Q@;OnAqw^3ZwU#J2%!O$Z^;-7^;Ct zN%*yW>(=B{eDJDqm8wdTw2;2I(-rhnV^hlvM{Oxa*COgZWccA1nDmOd?9vf&U=!(r z*3h)46CHULT>QwHdXM&&V`@1UWxKli{1Bbb*O$)_IDqxDG(_nMA%k!_ca9nvVi(yN z2~yrj5~^y{pA@o_WRLSI=j1S;&k|EFH5E2OlGWR|I}$nmx4^1jzbEV=Ytz%i?)Nj@ zb0GBPj%s}B7_KiS+Z=II$5`JFlbcD)eD8hn6>pL(F%e57pY_Mh&yGGLVn}W(v&)au z>Iv+QhMh@LR8zOl8Q4_b%h}FFJ!`Z%Ks^fo00`83$ndy7xW>QCl!og$ZPpw}Q;ql9 z_3A!&%h}G08mE^P5uV8v7|QKo7d{f9%_qo>kIMp+&C&U{xIS-p%|={)=r>Mlo?vFnTS z>;9pO+=oZU(n}h{kEN}-5T7jOJcwaCGIY6+3r$@J5qn_bt~-HAJ053nIbhc?af+1# zFEtw|zG%lXXNGU|5h7_dp?uBkgK1SF{zZ#0$;f;0WSz`Qrz&dRv zuUCsdFjrrnvpxfbxkuPbH-<3h~Q*<KYa#OkMY!6W~jOu^0Zeq>zT~mzIroxX(am03Oli0hhP7YdPEwspgNmd6#P))6wKo>GG#o`xumOA6cAuiylQMJh7P&l|1Zc)QJhTg4tEVka}9mQh&{a zU1lJs*XBS&q3Fmrj^IDqG@+>q`J{{a-x`OBQ5RI9<|h#4gKW5>pswh#Bwy)_j=2ky zN@KTJOYGS#>QL`Ct-$#o(D`AOzli}5U8hHw4?Y=%R7;KDvsvyR4=hh&cq|6r8k38u zFn#Jaf=TWY*D6Fz_>qLO4j6*1a7c-C!P;~P>6fM(Sl7(Mzy%ohgxHUm{Sd@^5*+?(6;%sbx5b*-w+-yeT<9vKefk=y&+n)Q; z6iU>EHY`*K7YESyhsb#0Su-=qafX>pg|D(fLuXgOllVuMmIob|A>`R^5}yn0jSbc4 zUI5&zV%hFt?Ao;l-JU>*+p5?nxo;cb5$O?;G`S55XkOr6;CW&jge5mo{c+8tEppo$ zLRutT-)??ej3;OHr6*tw{h@q(7GMvwzl&Iu90_T%rFGKh{I)Ncuez7}GV`psIg6fu zTsU}l!+fKfsD%$zB*m&cf*X$)LY-|Rn!*+Rx<@mhg#b6P+XI|j;J$3(gYaq<6g4)L zA<~GISW48>wgF%ecS5wAfO(EY*x_M65M>KHRsJubg%3@mj^V@{ZoMsS=}fgNYh0Xt zCQOMNu1b_|$Q$7H23Mu#+>1@jG}xxk4#IL+7BM9xcanMCD;8Kj1dqaTW5n(j)p%i; zA|B`XjtZ)S^wV zYvNl>6uK9vi(30&H7lDkvh1haSXnnACd11F>{2GX96B9x+{$iF8>;KI*3m%x6KDu^a>4=W-5~lZ_P|@wB}F!Iw-9Xw4v{$fTU((^TDn;8v8`?k@@lndY21P4Cm4$D%clx=QUv2)!32*heYsBf4F zeND>w;Q$JiPM=O>0d+jE`o~U5+x5lMLL3(shvyobg*pn9kc3~!Bl(;xq-I*o=KxcV zFL82^ZO;W18f3SX_LTcA4H7#mfqU!;`QI1ib^f7cK9g8`PqyV%;bVsGRpw5UM@)wU zke*#VWZgP`YQB-87JDKid3w*m*C|1(GgLvDfZ;aaGRzBeACPEtX{+N@6=-+O(Nvb^9bQy z)Z52{Ge%}$wNg!bJ7L6<8>q9S9?=~aZxPo56X`T*X$#U=D^1e24#xZ61aYd()FHDu zhXd@oi-F7#d4ezlT50-h!j_5m2NX*ue&zoF0X|(Z?@q|tnqS%y$zFX#@jo1cJ_`#( zDQT3&w{6uM;Oi-Ir#R%c6HjV-g(w@UnNwg)gs=Yq62VG6Q)7imobnJ(t+56~<-U@Y zcYzz<8!zeDnIqy+zo?W~m3@91ZTb%vcr}{RrDr^b#TKjCsJAkcE<#~AyB$5FX9NUZ)GH^%dj0fUkh4ha;r;f?$BaMa`!LE zrXVR^s!p5YEncf!svt6^T46WXp*l1V07>QKFbrZkKWoE()G1wvTb=laBBM^5O@u^v z($(HT0IhfCRD4e$2EcmZDPDFwIy`D>5|b$?yQgAB_c!o9SnWPjG}V2>p7&AT??&yg zZOmVpz+&~Rt=Ct3o2hC&P6}68LD~cw&)jx=P6{9<;a0_KvK(3z&{~QwxGFXtnCR=e zltNE%b?R{#q$xv4zn&Oz@q2zIfo{m|I!_be3nvzI#e~#SllYB+Jq{xxGS|2Sr^F0* z5y)(iZQyW8>+eD)6>iqpg#;CXm5p62arCNeUdOah?8kylvHMSTGMWUBy#NLJ_~YuL z+l@ArB%5-z@V0yEZ3E0PwQvrlL#)MZWTi?T7dV#HB3y=piO|vr?uDBbALW89yGV@d z4bFYQ;?#Bra4m*hXz-dsJ2>bnxVcciH&a!%jWOWN7h09JfQdy=W@-U(lu_b^1p;x@ zQ)IL(Bdh`7oM;rY3B)9>DhdAp2*>EAK`xbu?Sgz$i8o9K{n8_-GV!RKq*SW3N6@(F zDr7j7mRw0F)Hx_vf|U=g70bL}SFjcR+9n5FmPI+J$P#O6S7 z@BQ4CoCFd(RNnYn8Z9}**~m?i(@n?o#5p-umf{1Ap-Cf>cG&qG4zr|uLAT;wy+ujU z6X$|;T1HFun5I*+l-ZQbsU~P@tJyd^G>a)Hanz7*ge^d*q-xR)x#MwrO&V5Zm}0?8 zQyGHN%yh85LDqmMd9Y6yJRriL<@_kb@|}J4oR;<;w46o^57Nh%f}gIhA+=uLRG;4sxHhIuBc4Q8%%;k1@xhU4xp9Z% zsZxkik1$2?YYT^zs@+MZS#Pr|>UoQQz6fb>Dpgr+p@ylNiMM7aIN9;)f*0|SNm zb(lYN%A811TCRFq{jsL=O>OCPlMz(O0SzeV0-*$`0n1?T>uhJ)xrG#$UumjUP1gyw zu(lO{BV})onNd#6@lBdLgKki$up3g^jD$4Mx``cd7f_tq0@9EgLhta4Uj!9w$R$Tw zMFyght&M^JC(`&{)MYsPWwT3^gxej2IHX};i#UTJu!pi z{3#uNcwELUpO|c6@T_Lz3lBj2Mh#}C0%B9?Edoy44?Vx0 z2_&}E8YDS4vQmV{1IJ2v{+JGFe`)av=|B}TA8-$?fcoI3vZXwzG~^5RESDBR>PQ3h zAFd18{oH`5?J(8-ta8WRdwPtMRz#l0QsT#We{`4oXD{KUu%ZvHC;tFJDhbpBt8vR* zAu*Nw_x&-J)9shUN?k!HnU<+^=7`pY7>cAQkMkea!xz8*05q!gNWq5VeU$elJmR$g zPl84^{{XB}?FE0MWK9^y59{l9c)_Omg}HtHLwryEgI1XW>?9)llW~7RYvVpb5{ z3NP;K!jZE!i-;`sBQj64A1O>&ruT@pI#ED7#ZD)njlS$cex4JF4G zy*<>6grNx|%VCGqt}j<5G#X|3G7XBA+sRV7Z+in_igvh*QBI=!lAJ0xDP>7-e_LW7 z>ePe1%hRLYqk%9zBOvFTtx$dps$`0lJTA&GDe@l;tebpEZ%w{{6$^^ZkX0BaXNX7Qp|VSQ5z1?Yq97_C-%o!+1{x7%A9e*w!oun z`CA#R&c=HKgQGStPRR+PCK9P|H!#PYE>z&0y+lI3qa-w-2ZW{{T`juBtU!6(`n+Z>j?* zDsp6`C6Mmh*(v4Z0Vl^FUDfh;{jw#sbjlC@Pct+|;p+`O{dt)|J})ULA3?qdSj)6} zW61Yti0ufnZUIsH?}tShQR_{H+}_*y;{DvFnJH7z^frYi=df)E zH|fX=j0|p}l;h*v+PyBaz$qG;j=w$nOoo!AHk2q_p-Vc{JOCWMP5`IY-h3@3L6#ML zlY86D<3Z*=5h`q_q#{eLN>JHrMx^}hzw3onLxOpUQj}9#VfO9t7K$zU;>>)CEIP6K ze>n^A@+$chkrcA(QILSsUw*N^l=AxGmD3_p!bl}IxJcwM!=J;7#U14~B0D`}Wht2I z&^~>BTVk>LOZ4{B?<|&Gol9DYut*(AJu#Jz|mt;B-6_!v`w-%#dl%!mecGwJS*nAP43WE+kda>>qwdTvtQd(s$CMd8eL#|(C zo^}@lmG6cYP{?$y7t@?`EX8Xv=kkJwYwm!S0ekDI_)xg7ny5&%+h%zMZuZ zYx4&hVy{YxnW*Yh=sRbp^s(~mf>d>; z^nkH;(*{pQ0>agwhE8^DSg^y7OKpHR`@#kOrxfbWv@{^3I^?1izhcq-)nSEuS!Ssz z-qxWkGIdy$tF&1E0G_xqfs|F@(x0IJ09FwTXtkF0zk~n> z@hEs;c4ZE=ZpPo*5X7)Gnyqyo`CHnfC&-;Cy!n!4G?_|KGHDY$U*;YNL)JW&|ILnYCQ@qT#rnha&KjbLhGI zx9V{lLc!&5h{W~$*q1ljvnENWsirs;1~TjdRsAcNn^<$Q0!8tT8L308JX26YW6V+7 za|jw#fBL8&`jfwiIH{TM(59|Di0v|@*xlIz$_J4a8-h6;S`CMVWBZx+_I=b%Q6rD} zY4W8W62fS!d#g0m7ykh5fU1WWAk2A2HbbOAzR4=7PjvpSjAzx%(k{77pdN^AOSkGV zUgbv1HjwJa@S!RH08@*_Sq<)gb0AJI9t3jA;scTvqM98k2HOwoDo^U}Dh_s&+7g;& z4JWPXVbA?aI97YhsuxNW<@st^$L*!83rB4m-*oEz?~8^t$IE{*qiqT}AH;LT;zRNI zL(9QK@TV=sSMHOG_Bh9wTS8M2iZekZ6qIF%Y0^g{e#;0(nVheQ(AsU&NWXe)aj24^cOhkO=vMlXaQ@D@f=OF8zi!r04o#IiM%w+FUnk{(pr8}w=StfsGpg@O>>5; zlIj_S9f(m=byy>r`EQ4#uY{ASKqsNZHy>!5_KDbdKW`d=tY#OH~ z14DLN0y<} z<%;D@oll*jR2dgx-pjRveO}awE2)QVHpE(-{Tz*#7`G^E4G@Uk6gQMFLv2=%>GH+V(d6 za2H$2l<5s?sZr4FwkldkKc@I&F`4JM^52sk=uwl=v#%^b>HU^)eafZ<+WxSb`S$(p*9~*e_SqWJS?3GE0083lm_4d zxgG%{a(w>)Olm~dP)SOQYHW?vru5s({qW1-uMFxuRLzeu5$0)GdY<2JTdcl7Vgmzp zDMbD&17U-db&TqW0k$Ap`gRMcC3X2vI4Ic{HD(IqwCYtBL-HDIxba#$G%|tBYg()l zJkQG;XMkKAIX<2jNv{{ZSN9$@T~Ze-!tpELIlT}%!b0&;s;1D| z_Zm`FVBP!Ak@(y^&ernW;V++KX8Jy1Th;VD>uOO$QjOHtqHVDB^TOTAiF_0}_k!D4 zTG$1j)Gu}^^8KM)4w+3OxSr^JP|wqf%44syQT#|ad2r3vEHWZ>8+{{Rw2wGW;$ zzHml&$&@{95Se!Jm+ z#k|ErIX*=?DiG|Is3i&t z765Z6Y(y2jz&E!)D%LbQYdoP1%jQTv#9*i z1|e4~Dy~ytu&lodn&fhHI|&XTtt#e~1t{%(_O-re0?{Nn7GrOrDRD_VC1T*=#Y@ZL zxsnZar<_@8M`1E7SiPf>N%%^MP#Q=(5#UEdi_;x3{x)e3QSBO06$zy~a7!e0+~Qhk z%1HrD?{0u&KtRY;x0xE-sl4D%c@D{8kJu{&DB+|hVh+NH5UlSmts z`ZstYW?>E6iy#5$G0_piU;EW04>e)uQOHiyC0*)VM-gpFY*dPhfc0+`VwptkQkl7R z*j7K<$8D(t<_QNBHd1>_Ml*RaRjwKU1=IjJlB*1GRJIx>#4KOCq~7?@l$s4DYs*C% zMLJWcPVFtUu<-u?5>^Ghd16gMl8Et7YV25RPcS96k^caz8QUcL31Z_e`7<#)Rapv3 z8dyB9*`M^q?nujzR4Vc+@3yoh0ZqpxC%mmUTD=mV)QmAEzX1hl`&u%W%S%p|RsR5# z9DT8wskw866`GTBTYj{;#w2L&BIO{na8u#E)S^X>l#C9@$iBqvRq|n6N-0Y_-0(Sy zT*~5H&1};dw`C03Ti)&-W96{=;&YCMV>FBM7#fTMs;#=E6_Tw=QjN(sxj2&|Np@0@ zi>+gF2SJ7!P*qq1+5o=KR^r~o&GAjE=h!t(HCjojFcEOL?^vtOXfFhWbRG|6)Jd!0|w+v$2%=O#cK4vDjp=QNz_Vw3BD%XAtWV90^Et; z6|XBo?aYyT+#lN(Er)V_s%0eT;4G=O5xCt!0{Hoh6_kK&rDwxzSS{P8*ZE>UXq`u3 zk~(8ZcKXPbS!mO`LQtK_7QOex#U%-AzDA`RT=c~pcGDtHbg8wC!3UlvNI}w;j-@MW z+*=h}VfxFJM7x5>SqVzUfOZKMAEpinm(00gv^7fT63TmcraNKikvC|-#fB&}_>NbyDQf)?A3P)ZWDE1*%g z&umo90UYcA-{QE$swAJhi)anOnK2_Q6*W#whZaY9Xa{c#94)gckhw{2K}s}@m_lrn z4_&wP7`DwER?0bOIGNRErO6ipG*hWW+o>B5t`JZ07c%i5h;-bklc^#+x|Ed1irY!l z>%^XS<}J+H!)!F+;$)NDMu*-m=4WG8HNBs-a%5f~RQQp^B+w~xS*ONnl}M{pWScQh zjFEM`;<^Ajbv6SGeD$B`usD3*3V2x4l>Qz=cU;-a8YN~4AnzgWx-alI$O~ipGP?(d z{2@mOGHlM+t!aBXR~p@QSzv!+5B>{hU^wO zT%0PhCR(IrterQBnaxXymLQUdj05+zIX3RJ&^*V9>4fch-1)~m`u$;Sw+fXUc1qC_ZcjXV%*~KH8(qHhN_H(oINsxvDDg{%S;{B$ez`FesShVdy4PAr zVcwQY!@G0SUZ2|n`QO>)QT^ttk+n$fcEXyq6@>%8-MBqPf!oguCs^Sh50c}PLimlD zP@AcuLvUJOg}JKVJNaM-HF2{)*Ptqs60~yWUI^^bO{9-?Yey|7Pk8O;hBdm(n)_@{ z;p|TaExljU+1*oX?d>dSHJNmr%Jn*>9m;%`j)$YX*+PN6h#>y>Agxk`R+44Yt?!JT zZ4qEd=2A~GFu2QnK#KEXhn`}J%`rnvS&kpShC$;!L#H`8L>1?f-vX$A%j_<%u;@epLPsrm$ z8jK3IU0Pph5+gj(OU>R{V;$@1FAsPw|+IkvM! zmgI_58f3+n01nh?sFbu3%TB$3`C+x5vqXB85L1{Ppj)9zT1X)lK3_~N)kzW}B?v)M zmNbhE$vm(^v7@mBUfUg~#22d3D!HxsnTR|dtV?rTs70XHdc$@=vPygqEJuODuAtlT z3XtPUZS<0m+S8<@^&}q*II6j7wMSQDQf{LGUJex`A4ACeu)eBN-7l93Q>5-xqDeno zAFmXG3qWm@3h83y#T1dOa_Nu6x|{4R<%`L5;%-!e2?; zq+Lka8~plVvBUh%oUxtQocn2VlKAW@an-tBWm_ua#C${2-EgdFl`$El?o_VvzAX~+ z8E0D8*&!R15z7MYaL|QI+9vgGg)I{cROoNi+f9`kQz+Nlp-Botw&qGmzf;eyD=O7t zKpLwKGfW`cOzMLX)DM^|C+IPTDx68p^$IjdQ?V3F`~BdZ7FPCz?9gYeNQd9 z3;??HiB26Psl&~D&#n32&jWoM50k{uZUAUal~dymQ+}rGI)Ynn3nYUfr3co3`)#L5 zKBR%;g@sRxR1bW$CXXsWzjaa_OJ!UBRO|ill7&fNxK|~`D#PLFh8AC^p}9ld+G&zb z%F;C)OR*D^Bj00ivP_)enJTXb<7K22{slV1m2aA?KTJgvGt;M2RLIO8ec0`!{{ZH` z7!JJMHSg=C@Kl?Gsj@zR{{W^wqg3c}AN%K|u%1MvfTM4j#5<4;>QB;kJ*ByeMMlrH zH-kaarC!Ch-a>v`TNRZ|hn;EcH7cV^a3$5*uv|)(qI?s3^zg>H%FsAp9IO1nBp;~5%9EAy944Zwoe_%dQbS#)h966=q#M|{>AG7M-=3}fafSMbtmrTC z3DeSE@$-K(%y5dWF$+Y>T&5iY+FfBu`R*`Tmf$?>Wro^Q(-bwh5ZdYHZ0a7|bQ(WVYILsYGr! zDk=W}ry5RmhabEw#yWbgSES7p)XI`VlG#nqR2_o7Jn&YDE(QbfWVjj!NwVyu9|aDW zRv}8(0UA$@@Jmap81IhV-pzKhT_WjF@L1|R@sa2bKJ!9aQ}T`syPWD2cY@O0IRX2tEIJ|s3p%1*^UPI&!!!Xp(F=^*kO<2TT=QYqz> zm*lvxt0jibk~})tpEHJxT;~PO%@r5ghWgHwuotarK6cx#0X{RMYzW6rU3Lz5FtKv1 zn}n5b(;qCawUPn8{RS!I<{BM2J*2v{HUZqFQWB*PP%tkuiWxEssv@GPO0~g^(LcSh z5k>Fvsh2iJI&#hgXefw?E~Ka~)=!oqH6iC@>T$&@=X@h-9BQXt)cSOpN09AZ2?yvf z4>O9n#-Sx>r#Bvy&_5Gt)S>5djY-n-?D>YK8#=xneh&WtAvS{*24cnwbxBG_`iZdl zlZtAW7V@PED$Pc{8GtYMZ8{dS<+bsKXUeWsNRwL3lb(%psX_9FN&XYp{Gi}rZqnh+ zF2srNvH{uoWULQFllq^g2-nb%{{ZA@D&NEptyZ7B*0rB$W{OtcRieqLE0B{S?X*8% z=Y$?+;=X*$Uwr118TheV)gw)FC&L;K7v^G%XQ1&K|Iyh>yJczp7IhnYr&VegHm88KITY;x-uL9 zE}IEg1@9%fxKCRQX3u8s5K7{oA8G7VBdM&ZP9jxWLX%{c(_$M3uA(jJe0nRJrKYc& z-EuTUF$sbhir7t(hMN{hA0dh|Z5#B^@9X~nQ|x5!ZNIcniZN7@wGy={dX4#x-nZed| zgC=~bl{s@AnETEsxbyB6xaxu3NQ}c@b03H47IN8pRg{7V z=1Ijv*Gh;t*md6)^{Sj$k{wdsN>R)e8(-4=@VKaE*oi9adq-8|n|!y!^%SwJ9eIiO z+C4+F2o&OpI)>h37xZk;E|BsAQ{RYCEX&LYqSmxl@WN6-3)g zihk{*{3EIJIP>C-#GKWaq%s7TB{JFWq16zi`W}5Tq;hw(domK#O0q%~$d`x&dMlCi zAbR7wtIYmz0GBcR8Fq^Nv=56En(g zV}9bLERd!*K=cQY`Cu&>YHMznDbu6X8tT_+rDM<>40d8Q38@?yypaST6}fPc%=us* zruwBw>>JuMXJg`gaMjFo`jTRHUgGp*5qAoaf0f1njXO{QV@p@>dHG`+sT`TD?B5Fp znT}l+ww8xa9Ct)j099bqLy_x(2~9S_ZUH-T#S_jtUN-Np*9qhR#&>dMh!sYs@N_ny zq<2t0C8*-|jb215gKooR`L6{I<3mW>#a6(%WyjPM;&qYBeTFTeN{Jb1Q|~F{p+fA( zP40ZpFW(v4kuOu)b|VJA{V%LUYGc&c)X2&`#jWsE2h@^&SR9Q-thpow)uS|dek1&` zbezRLWgIgSlGJ#@Yeand1ZoEyK zuQardsX-V0FjGyW=gLz3=9gAeWSc0*cnw{50D^rnLramGq)KhJR}JS}R+gGXWolZy z00#JYLWeq&K~&tt{7Pha$|7`xsM#tX-87NAs{?EDzTGjA?d>{k9l}-6E%=jTUh_X! zVdhD7^*vQ>*%KUIwK(I7)UEm0{P1;@t59h{-%<9 zEcj=OgOjsuKNtMWEv*-@O0Id_;zJ0v)T@!1b_w$ z2U2x9sqT+9(v-5m_!bG)$vr{pJVra#-mAh&Cc#rLMk4Ma*G<1NNa^A_VuTGLHv}7C znvXRt5gtX?63t57SlykFtTgK-$YsigzBEtW3!3WUVd*0n84Vq=D@`CC8IG zEiI8^f`7!KaS_C{74RiHZ()kr8IqXGg|&9BIyt2+oxZlkdsWEOUoEEXU*QWDC(_uT zZyS|&Z0cJAOoG}jrH$;3#wR8I%%`>Q*k3^S0rMSkK9`kq6-BY`P?p?s0qs;$gzw7b zSRsYOdi1Qq>;x&fPBNRy_f-db6Zup{fLE6>jIWhNN8&SDVq{y$SPeQ`^Pdhrtz{!h zH`yb=0mxztQ6xU47MUvv_=(sHc${e}e+y}l^p~lV>raGhQbN+pX#?{p-@AJUd>a_##!zt0PKR59)ykZ@i5Vl`Z zN~}9Hi+xTS`8O@Ys^*ArTI}M|`x)?|?9axAbERS~s!b7LP=kQ!kt3Q&@<6e_jj>ivgG0u};IN=YtlqglY{AqnYzvb|hM5Ii)`# zeW)FZ5-z11k)!}OCfHM^`)VDhl4W*S82#|{ zh!%1C3*SIcw%p2g#&pWG3Z7ZvlT{qz(-|V1wtePA?A1LGpOjQ?rJ=VEYT}OM1f-LE z32~p>4o+a=X^FuMy%v`2M%;|nbg08a)g>WhYWF~}M0V9=_wA`x1Od+(vWb){dE+`u zuV<>n%)u_<$xQBY(PD1f9G5bQ|88EV~|-wTyssr(vo{I;Cw%9 zbgUe|TUD_Ar#{V~)3#VLGW)@>r09wVBq2RK@x|I>i5n;_L(2ziCB+>{vGMW52cz7b zuZHAA3&dMCJOOc;F_u)`rq56g#~+B8;s~)@Y9EQSwf!(u^9_J+ea9n;N1+0uQHYVR z6VTi9KT#Qt+xK>SJD z6j+sA#f$#{zns#J%kr7`Ps}-^Csdj(KI$4tx=^x9XMTio`5bB-hsXA2C5TnDg#to# z5;c#X;{6UY^E;$2erRC|}` ze2I8;vA#YG-`R?bPR_Ix&!Ng;=UYKNj*(^U$lTp3`eQj%D6cU4$Xi9X8&TAqRv?a+ z=011>$s9(hQRcG3q$(W7`?{2Es@)V1JUeQchM$`$zWh*#8I`ns;2SeN0B>&x2TvYe z7{K)-uX-K-0LY$vRh<~NT&e7}p}8(4Bk(C&htT4RY*#9;+0(90kd!Btz~mEczF5DK zw7NB?sO5^KXi*%(f!OjO;8loq#M4{v%m$k+EAVyKD1F@H=9nH8can>mg`rFix;+EIjdd1rZmQB8c&nnX9;# z`^qF00&LO%*bO!%TbrI%7z0h z8}HsY8mjSYHD|^hr!G-pxu_9dm)L1TC^x%k0PIu=9Qv!q;R>^z>w1mv{{R!Gt0ngmJ`e{|MXlm(gl2Qglnj*?oT`+> zRx33SsZwD=@2QPvQ6}SLgWU(Mk4zq}>N4B4hlsp!vpRBmsCY3_+Y+L`?$0sVYPd)P zVtEbxF%imZ&euzJ2eD`^WOCn@4ymg`=0~Pf8%&kDKkoTzb3<+(fk&a~za!6`@$$tn z{{ZP7Wkmr6GJ7SZN(l+lkS)K@4I^E<5ix-Wm?nxzwzpQ2j#~?2)fA-1g2Su0Q=?KY zoh0dz0hoioDTQN-K^*gJ7oYm90O30br1Se=~~QeIBPzfF0BVv=no*q8vJ_N;e+fL4KbYx; z!xJ?+lY4+cxaoxJtjVp&3}d!6IF=wif_%|9dz7h8CR?!=K2luP%3O4ik~tDQx$@_O zxQ?O>Uw4Ncn5|!Aw%vg7`QnMGjfB|;bI%f6lHpd{k-sbgwXCr1j6G7-U&zk1{XyxyISyvgwUt@VHsmdPZ9 zqP)%u{OB2OEt}q_f({kgtUYr_5OV?SahUpXxQdz+0yWB2rm4j?YyO z%(LQuOmD{T?CvHjbwvKE&qaI>CTWU?99*t(b{RWBt6-)(5Vj5>G}Pj z?28iC(sQVQsN}5QU5d-_qBTx!N4}Yp5Zk-*^dGJWa{mAaYj7#gIP0+7kl?b4A1Y3f z()QoS57sheVdj?iVx=?%%AL3g^u%RT-lo0T_NeXC%R{NuPlm?h40ye43(FsB3*&a#ees;rMABax3t;O3qFav`YuCg6$ zkdk~z7^Zox3l{6k1yssKa&$IiNQIEU#@_nNB^tSi*>-CgRvJW)#=Ze)arCajpg49Z-)pl4Exyt5}Zp(+r z{vVzoPNqtUZr!8VtKnGPKU`Y2)pG3)Vl>w-O`{KO-q1z}} z;@CzG!UTMG=y$}D#zVoLYrD+(s8V6pqlJ}rQxZF_pjeaqUO44Nu1%rUTc=kLLwEb9 zz90qde+y&rsSZYbYC1?Zy|y^LP=i#b7}FXKG_R^ph&cMn6DRwX9@qZ>pUzsAdP7af zj5N}ksKHE#Zlw<^ypgttK7Y>vl{CqNImTo*SbYa{5zDX8_~IsAtxC$(_G#4xE!s1x z0huP}vp>tz4vx<(XLt@%7bz{zOJp-4q!6~Yzfs;!`;VBy>w;gg$7_8d5P_Gu3{EO- zp|Ukv_fo#U?TA#weWN*Wi-~P-FKt6*8(0i*%@k_BR<9aeS)D4;b{|IVzK_n8e=cLL zAk!vBewh466k3#phgfwxC|Fqk0I$~q9ZIUOaCV-174Zm!Qv_X!!&>f2>n2rZtxuh#~d zW{EaS%c>aSBsff&3w_5fmFVwS04_-&SYiTLLc266I=2_|#)QhWSLV^9z=0i4Ye?1r z+?)!`uvVPHy*j4Jzh6ihma@$*yPOSPLxs4JVTl!45|wlz!E)oCmas_j$HrvL)QW^? zapwA+hw_VN$zN>zD)LIp2!-)FC5X$Dgj_ z6E<-!p+w0!b`(g7emzQ-)j$QSZr@Un=AmJ9>p@nZ6?qIGV4M~ zRq`GHY%S%2o+(u6kfr6yQXf*Dr_(gJgKL7Nk^%7i-h^QbGcYNa?#pOOly@$Yqi;dW z3^+LIDh{KQ7rL%Zjd@br1H{(3Hk}T;kt?(6QCyE9fLTb;J13r4vR2;L3Ih6)HY0yQ ziVG5EXBwRrwKuY=c0o~>q!BEoAXpxxqyi5!W7iB^^<0hF#LL-bqeP?AnlHBFDbiAe z{7w_hsYC!doGND2Rhi+lRg9q$xgF%4je;D$#9NYAZ<4X9huZTn_xT(cxX%oV9E zloL#+DQVx6iXkce@VtbTOr2t)rxvnSqs;Xu%;U55ccn$Gx)PRMeTG|-fCwPAy~Vm4 z^T&LnPLo&7km<2bm!&!z*ZBs-tKuWT9DrIcCgn5IKf;?&l0o7Vs>iSZWJUsL}=(p)RBFP)oZCn-kum=#msx$ zg1Qjfy0!xbX@MNa4K(Jp z^;s4N(+hmPHIW$$eo|eOIUy?@-2~PMy3@mH=kY zW;#-kfR!8E^(Pf_YRh?Y>Jr>4edVdgPv$B-zm^4EnB*Qb^Xtv#$a73;U) zKU2)3;)LY;u2iEov)W00%7mZ~Ab=3qKQg2L0JbaR$S8vwv)w9A=CSc68OuBlLYJ)3tW zB<`|*2p{vF8eA&L5HqH5r)S481{;7-IF2iX>Q$oPnEHzW>us~tSw`71zEJ%SSO&xP1{pz-dBB=tph@^eyt!iq=guc&DI7qmQMf@zZe2DDg%Yz(MPQ-l z2gD;Isz?4J`ScdCFtgoiu}1bt&UG4N%Z#^LY7)v-WduCpP^%v>R6PzBzRQ_V<0JEqqUZ#fO-SZ3+%6M+>rZvLdDBW~|5%L4igIaHT+O7WMQZ+^up)hA{sC5IvBcLX+UP)Gy2OgySk4#eFWdH`QUkOjANEsvHl@QzWK;7PGx0BGMy(TaPlN z9D7L@x*AQ%xF@0T$0-T+b;?mvnl&c1#5$8;T2qKjIK^HeOVqMG5-_ctxSg_}edSD> z_@8}Bam61s8=MTwo~0pa3IR7J+^%rJk4@GejgRTXhC|k%gdD>v-w|Gtf8+X}L%|yf8xsyGnQz zRAajhXJX?W^dCJZf7cRZQy6`M^*U=a(QDZoEDtoD@L4k|VhS|C*!Hi?C1{W&KrKAj zTW6TI4S0UiQ9eZUD5X)+qrJ^qm2cP|t^(51+G)b#N=ik@BFE{2{J$CK)HtNDrrfBh zD`*|HBodHEh$mM60K##HspNMW*m7pP6#$TYM{Md%3p!16A zA0Ag6h}#(7I%Mj`M$La`)B$molBkng2eXi$5PBaG(;7mVR#a;I=aRCma!5^&;Z2f1 zY%*#T>Lzl@PE#v!z2+OFX;LlPFt5&o(Ej|fdLn10yg2@5o6)P&4+eSj?+z`!E;tsR zp+^wZ!>dlV zd;qqWskG9CZs7{zRFHzvl#<$lg~{ZsI}^mJeLo{bqtfR4ue}fZ&Qcpar)S8tn+w@O z_amm>IL+yX@Z{o;f^E#=Y+6j0+Y(T%f~-LWTls;3IT-ccJ~&eoD(prkuO?|4-yR-L zPemq-{KP3NhMIJcgtU+>0ukalZ}d16g)T;As?;-0d89*(DSex1ZM`WiHrPR3ylepT zQiZRDyA|;v^B2ivOpZoufHsQ)GPl0Ze^LY7)T*>5lvXDNts=dA;lRI6tBE>!>E(<>w)F4>*_1&dXvuw z&t!=V6ok%-b#LDbMTd#l{WrvCa?GZZoiiaUc&14D?`$2cBI{9p?_G%`d7DEr(VeX2 zRkW3coi-_L9JCL@ahm71B9B|`8c_+dl0u2HyiiBTV_2>IC00$mJg||^RJNBb%_-UL z^J=xUs|h%_xU)yZcFUm}y|1(Yn(7v#P({pnO?Gc6^S;_i^SA)wc2>>uvc*MiFonmG zzUn42uf1e)Aw4Xuu6gaY1CsiT2jDuRpsQLEc_m|FJg@$k=!4tEK~ej}*(*Licwum^ zx;_k9RyDTAnD(aECsnH=T*`yhV)o_to>IxTn!GVfSz*{UsS!#_k{7K9oziy)=x_&@ z+^VseBQ;99@4nz|ESnp;uXT)Twn0Hoj^yOOgOR<1Z}bj2{! zh}O)8mK1v>VCR{MUfTQ}M%$cBsIt*Zy2(#V zCx50I*#|Pnu4L-HMf7M>jwTx@uoq3j)_#4_jDq{pQ6)k_0E52WF{|<%RYBp69hXz1 zQzk-(n$D~J2*6y*X`;QVfJ`Tkk&$b5vvCRP@1#pibQ>Wb7n#L-WcH{R+T$GGS8F#? zm8hwEoOWTbxvjLGTE_nXJT2J7av`){H5D1KJl7gC3xHW^LK2dC4Joz-n~gG~Q;iBM zU8KoxA(oIo5|p3-`kXa*p-dFMFf}brt-5tm8cPxiPKR7T0bm|i8(ewf?}U^H>*7=O zxvBy+Dj9W^9q#*`!~h3?)~}Gkbg&9TpQNaPy$JKmR0vsHBEq3UA9WodIJ<7^hvHfF zC+Tb%Q|N`{srK2sZH-R4wP|gk;-x5nk?KYg*}IInTP{4PG|0m;))VnG9Vm+0hb?Ox zsNe9W-eh4i^-GGJWz0>|nPQ`u5)xL$5|a&OhEkEa47ND|&1$*vIKY)zVef7M`pL6_ z@T}DQPvS2KlfXQ|l49mHSL>46ZA_X=CD`pqLy1^Q-8M;1#V1a$9}HxwJw~+>1i0}k z@6q7OY&9vk?vyG+VCo4~xu*Nr;wyPeF~f08yF-?T8(oNbtqDQ%zg$#C)VcIQtB~fKFM)?tj3Uh0ULcVBRa7LIam*e z2;@P)3-cw(zNb{Ao{2X7u@Nzyby`vi$vmxdhAMFie8w+XmTW%=gt9XV2=4AY5)LYy zue)_wD;^w%J2RGQYHT>`LMuO=^=ShiVu1&=0#$96ZmS&)DRv*v8^YEOiGs^odDN&~ za$2up^dTY`3pJWs)&Bt1hP3|I$J~5}DrB88Dp2J$(QLbNf68~k z6r~vaCvz*<;B3JmRGWR)2g@CiR*;jq3OGDZ4_c1;TAwOP6n`rrBkQ=u)J_}I<~kdO z)X6IwsFj4I4-#!`X*hrni;0u^qC7w-wN$v9C=jnqPDGEr*3!yUH`v<;6&@SKq)m*; zdCt}3YwoNm1AADTd16xda>|>#bJp93kWwz6sNVsYP#Z|lrEP1b*?5!@bA*VXH!?aZ zOxndO*;ev6JEvyaHA+)1H7RiCGS_Cqa()C2>=V+!l58#Mg~eAS*Xg%kyP0wAaO)l6 z^Bl$n9AZNYA#JGya|CWNaBCM#M#O^z2k2&#eQrmnd%&@X;kq7cyqowF4uFHI8vwSM3kC*i~bYcKl95QF<-LY^g1NZ zY+_TijftaPpvTYID!G&o^F1IhFnu1Cul zf1-6i+A!GaHQ2qkFX|;j@v4;Nb`#oIPbBNTzDFDcHlIeNwxM&*;aB?ahKoE%Td_km zJiAYrlkpSE_=@=?~DM~e4e;eRhs`F`SX>kOm-3iA&QO^vjTwt+O5)rap z_`H-c1%(qMvoM1)Q(A30 zLywVg2;Ry~jqkE-PUhG+Z&auQ<}Dm@_iT8DJU7cwa;{%iX3WmD5^Ko;B1(cpbaT>w ziAKcRkg)N_i>GGnx|#uzNX*pwtz1~M39_UF1Jye8_Jk4ei+u5lKG&OEt2HX5@qP3- z11*u=WhCqpoFhH7Q>#{hpZ){Om} z9b#k}j&h$+?KM3XJE$$`SOrT62-qZmRb#!==ZwjiD)S}gSK661=hEU;eQuq>zn(5+ z<|*{I1JTxBOl5_#T~SeONjDqw(su-S6NS!yl!j)ip-WjyFO5uG0#b!;2gn>qeO`vrR*!dANCsWk-4inXdZxOOwHsZBTz#1!7!jjz+DDe5h^8lxUuO=g!c6-83j zbt2yrY9sL^?dB|c;9vSdHAO5;yR4J(k={-&;kx6rIZz1;MZM}K{M4P4Jg%Gl1{rEL zQb1_D%~iyel2skbopJ;=l1q}LA(Vi5>L7FZ<7TOZGUUb>05r=*4S~o3-5;RFS>fDq zQR2-8-Sn{VlC@gzlxSM2#r}a!Ix+Dm5&VkmDKoj-cD}LT=P3$6Kx| z!pD&FIL};0AW7ErQKO{`6?jH4c^ z`r^3)otmYx!|MTPR1%AU%IXeVYoD$G8A6qzCs9ZtDM;L?oqu02C z$eB?iTnw^>*;nYPN*@U8*^T^p+YDWm(O$Q+{{S#$VeGSKjlw=1a7I0P3iD28&5?56 zL5jb>sJjfM$u>74I!QgD>2bC2+Rh%+5Hj})&kcAFmzc;IW8tXQnJ4Xf$+fjQ_cS2$ z(htyWjNP61i(bxikgAk`+(r|kG)Ut^EFf}AXd5H}^TOF~tF}=CN$YH5S{~N!wEjcd zZnnx$1*~}Yg)%EO32zljn){bGAy25^^~Fs>yqbIuU!h4je3BF&x$u!mNP>8KxhQ&E)shm@%fm4V4O?x)anz{|~- zWLOPG+X0I<7?Dw_6g6;*^S0PvQ?mSMjHSh=w0Moly=L7kdK@?@F)Q^K8HkD;N>giasNK?|<9#EU-^UB=mj*-6w$(kQ z8L}Km9owl~w4`-DgU1_I9#=;X_#K$Dy;*5?u>vqeHid|0TckGGS>>%4D$q9?ZmVoD z&$GINEBZj}MyfD}rYtiyX4>@wE41w*WG}XB4D91&dQ!s3{6umi@{Rm(mt#LqizR7X zc4S5;WLSa+t|wHOT&k0=sm*UVqNNp$MMU!?p12aJMq#GZTt=0Rg8m!)u~juYohK$u zoYpi?5#2z}Sz4(}_jwLI3Z$>>*l_@+{I+xX5sK==h@6L_NQ9CAwaNmB9S!aKVFDaV z72R1%Z)=<}Xj!bK48p6pA7~9N$+)_FmF4I4!TJrg=vm@nv$oDb<_Fa%Mm0g?EwVI| zWe!AiJ7R>!d6zzL}w>OW_2xOHzB8(3kmR8xVZ2(z}+&2 z#LVMNiBCT7E=z#{U>yNAxg>dSgG!Y(RH}rUOv^fgJF3&Oi6fpEa4K3$RKym7@+>Yx z4-pN-Y=-Vus-~e$9`TpuuI(v1hE#XZPlr%^HtB_Ot`%%++B=Y@(dOkm!*`(**`-Q5 z=~uu(@;^%IkMk+1~Y zjyRg`%)cj8y3=RHvcTTV?d@60*-i z2FeED_1_Ds&PaAT*D8mWC{iSocBDGWl%yVqO|8$*9N1C;-03FL!$x2_#WG|%N+(H< zV~H12EVu|#k_Gi!71h~toyzb7G93&y@p%Z;N)ojrNmi4vJ6ibB_1+Be12JZoXVt1v z-jJhU3ra#;Pl83P1}>@G42e#L6I`jG*1;uBFpY>OmDP*;K+%~Sd*WrD9c5~zdx@}Q zso5_;VSS{hR-zH4Z_muw3`)-VrhFbR)yppjzg+eefN~&uY2xqjdcL$L_zl!tb8Y!bx+MPYS7D0FS3)S z%4uJU{{WZA_rU#W(yXk+MXKtI`AFX6q>V%9Z-9lgmA;iB!phQal>^HbuF7^@Aq$Xi zC9|c)4omPqsl@*PrwHJv;z6=(u{&GLsE`u05IK)5O`%IH%ZQa9>|g%?%4`qmd_!;> z-f9;i1OG7O1MD@qwf?n%XDC!eWQ znu!WBpkgXMYP|N^|n(R9$)ZS1L=YyN(lb zP4GmDV!>0hl%*|7x`p>Ri7&HC3K~Y6a<&I4=V#0)$=bhYGGeVex}bnLruQcmQy*!j zo>*@}QVNu{D)=NZoN;$hPz3I6(+f)U*50TXag})OEAJKg)#38NOiGQ`fILAtHVT(= zqD+O$o!Y2aAAui~f36HN?FnwF5@fezYPbie#YF;{@3kbYNxNZJB=5c(jW*OeYL=ih zAvZX23KVvTsP4?$gqc#84eZ3i=d_hTX=3eMfWKRG!FLn0wAxlxUk<3#kQjONF4Ymsh$ zPYiPl@zpP2!+{c&8y1Um6{rWE6s?x81OJn+Pz zM|rv-LSw1BZ>dJt`5b&chL<5u5R|6&QA(@<^v3)v>!r_p$(>EMASnW#qd_cb5fDd( zx5XU1tqI17kE$}x{O&NyTy`9?TX7|PfYr|x5>lpK?A$>@$m)}ZwYG~FK!X=MFGI*8 z2vX%%DX*rFEBf_0V(AB(2U~b;(;Z!kwkH=FLW^4VzlHI0DFF-zLDIDH^Tm2=)VOO) zl_>Aa(m_mi`=Nj0QRF;;z6dTwSoIy5F#c75C_F)84U5m*{iVan&O2ck)k z)Z{t|O2UGWuAtud2Uk>e$`*a*>u`spL}t|?qEdryrA@qxcfqoUmGSXep}ClHt91FZ z6*=&9(`8Bc<2!4FDD^`5c^hKc_mNV|(W>l#6tsQ#9SaVaq1Jc+4%vB$Ftu54m6MZQE00_c0wtDxFJ)!hb zRXd*LEITB);+aCbLwmSI_ZX~~88PF9IF^tJw{+b71}G=zL_?J!rqJ04Q2>_r`rt01 zoGLY$OhAl{A#S8yHXGlT!wF^7814Zu&Z{MukV^G-DbsRXu)n8VXWZYK(mQ0d;7ed# zP7`E-i>@Km1s=NkC(SKFOC{B6Hz-KkkmgC)4!FyFK&-nfBU5EGmBwM@Eog0O-ATW8 z{yT5;$H45*b*WRC>n~SgzY+_o_f)U%jj!6D^ulIqPez>MPF!i+1L1}?N~%I*GAWv% z0tAAN*o6SJ+o~_M{Epat<~+5+jK!A`6&bdfOOo1t>Gi&px`X^cj`x`LvBis#=vmss zgEHHX>!)&_W-%(i#4q8FYFBo^eQ?CBWG5-plpy8`HFh=ojzOrlRDDuNAoAM-3d_|1 zvXv!}2aJ}-{{XfQrIj$=;5Mq|_JhXiZ_ghkvZj=vwIyI10m}F-IYPFW3zCQnb%cwl zZ7nMU=uRmdjJBLxZlJc}c2ZOBdV zHSbQ%L}WI;-D?O-VLjqbzzi^{=})iydtEIUPpgiFyYZr8GyF| zRFk^gS2A%T6zH)aqC!xmEq{3-_qS4%KtCag66MHtoMnGkrbVzm^*P?nq1OBEua*>E z=e71@wR9~B+Jk{9ro?DA>#nRcgnUX`w4{8_6}4=|4m71V2nh>M_p10!yfDdbe+oig zdobpu<|&0XLn~qC<0SZmqvGqiRvw%a&R)(xYt*QD?tW3HQD2OtwCwD@zS*~Su}qMH zQL#T2!NiS*mG3HB^pv*jJ-Y&7X*KB%MtFzSsX%}M+tX|Vt+y2*g*pn9uJHq|Jy^`V zBH_($pkLuWVai$lobAYs0dWkb_PvW|N{-x!9##h!lZ!k#snD}OzBfdAo9@ZeHaEH! z^niAAO@_m*uy3UGOn0}_*KYp2K)pu}&r7@=>QQBw35!H;VW~p*!4!z%Tqh$c_E@m7 z-u*FGLvahEGNda~bo0S+SJ-K7aCU(gIU^n9wQQjNq`>e#m2;m~YLQ>Z5&K$~Bl z3@O=Cu~cX(B_eCa*Sm1tQ2i2d_V!V$#z91gQdo3uL$KUW?wmF*b}|0|aEk4Tcpoec z)JWW093OABV1dkH-bFpe5=xYSFKa1bC+KlXr%DOrpbd!z_}^YdPB`h#wq#fa-dAs5}MpL^@sXiLwj9ZyXoBZ1n-JjZ{A2+ zd^g){4pgZu%WZDQNGm(7zF#qcxp;|?yBTm=mG`7JN?Ty1 z1Sg?Y@3B0Mu%4*#MdyKPH39=|0dKuYaGx`{!hT!xnvmObA9eILoh=s@Riu7jFHC+j zAqqAsvGW*CdS1R7FeRPCdyPokLvTEjF{4I)4{Th;oEW-wrNW)rI4+y*iO6qT1xOb+@#%}&j08=KZ-vzEli+YY1>(%5#E?Q92V>)l z@29upNs7BRJ0Hw3%GFgg>$JC(_b-pT1Z}Is=l+pfY(%}rS{Do zD@oLnIvgE7;w95yR2$h3wsj8$4tRR#*(Ul8N7^oC(dpUVB&u2dm2e)fmSp#*z}_)e zihIqU-9Cp1c#S&S-LGbKCgR7TJ zikl0*r63OlcfXz|)h%;~y7CEA{v~+mzOg648-tT-3rsG_q7q2^!{vZ?)Es=M?l}Q` zT?@YQiih2V^gPZemDF+|?}f}-^~-sit}I5qr?GOft!+=ODu`Yud!ay#br9g>*bA)J zUu{wvK`ll}7rnOm;+DC_I4s6=HzQJjJ=QV8{e zo`lyXJ$DnpgL$%bSBRWJan%yVB)n9$6Sjo^0Jat!MV`dk&$uyW;KF1fB&xt|{Ibk4*5C!ghxnp1C-Xp@xMN(!w!!a5*amN-CkOtiO3<1jOR(E#P zCc%srzT!EVdZX-_UZgM-{$^n>0edb2^poLmf0h#2gM~SsfhEMLrfLB5opTp3?jSs?uD8R?X4blVXp#j_aTw9Z5+X@tboFYT?~(r7ct}-%Xr^0;Dgs&_L(7 zSO*bIysdmg_>rXroHFWS%3QjI61m$()Z6IU#+*&B-RfqP1K?#u4!%!d0VNXY_O3JyWY)NYEX|q`| zsx2f1rPfu+U~(!=^(6edoD`!ayMuwuuKZMGDts6lOF~r%^=bg6T7W%o&j-{x?IqZd zsCkMb>ZdfN2(n?il)BMTxws=rfj%}qcw5w)lSa(b>FH8jHYp2F!s0oFC)Feoj_o?9 zDc}QRr=Rn|%j;Wt9t;PJ=BC%UngX@s<#k#zIBZdoRSR3j@mb z!m~H3rJD0glNQkTWF0XgrDaHEzM7BXSBX7&cwv8(vjL4$TxXoo8e0X2LHs23^4ttQ z8f~QHGzj1+)BUMP+~G3ivl8w7W8NUIGNbm0H={Vq#R@}73D^$BHrwThG9yNi<>W?W z6Sk(&r2d#UtTd9M5Q`Ce?aKlVB}Lm2a5~>?7p>XXa2?>*{j!}@wKBfeD%Jp2ppdQ8 z=zr4$Q8VU$rZ|sq&2!e$QV?QIcitLOM@=qV4?%23L($NJmAr(X4Pzf#AxJ;lG^Ky{ z064pk_X&uCc-*{;TyC(-iE^7BlTumKry!uBI*(ho$rt_|v2tcR4#rzcMa9zMPNXb& zr1B%v0tte)h;f^R4Z#PW&jid?r3TX5t)XcomzYomw-4q3?3Es*Y3-r)H{{S*nLHZ13^(tR8aZ4O=10T*AckIBEl;r#2 z7X>v{C9+4Bf=8wBX~W92zv&wl+QTib z@6l=zt8$0J^p~xps396a2iFz(mL6E4x)mn75mEpnv1!d}zm|}3Q)E=%3JDKJz<%H&DOCpCQ*))I3P0Gg zl#{i;5gTEhm%XF%UxePq6 z&Bt0DIVgH~{C>3&}uC7LGZDin@|e3cxk(po zDs5c*yJPcI=!fr{?UQa~Z-ZjBB$TZsC(j&QLRQJTLbu-)v90;m=ieHiFmZ{DK0qV0 zRqbQ8Bq>hDl!+0ELy0%koN}E@3mu~aO2ETrFM1Je>JNeYYw^|Ykw zX?`j2^%yUP{;GB#GX_$2w{ptHUk=0z=B~a+1vzd(lR>G|)NZB^yfi$yC}0{P>}rZ+ zn<2rst_iZ-gu>5pH4qwkN@dIVEL-=s4B(TAln1deUD~#@xdSj21{jvtb!@x}ZTe&D zh?*x?=+$5>iL}HiRzHn52lON9iM8f5MwuGc?48@>tVFM)-gq}amZ9E_Ax!G<2XH?@ zgPlW?%6<8RXdVdm;s6bj0N4(gACf<=ItS)By}89Sr0JNiJ@5*WL7J`QCe%$jEKnp= zWc%BITs3VCr{&E2@kdw84Te|Q5F1F`gJ3*|fWWN!%kM2kN>c6TVSy=f(&CAE-+272 zqh`VLzdRtSo$SZpKpGMadbsqbQWJLziqOIV+^CxjGqQyZ6v`7Quu{}+zJ!yx-wL`@ z0;9ypiCR*m#c59~!ut)rxX~0w6Rm|mbh1`GZGYPVv+XK7RusalI}*{IUtJq1dond& zt4c#?`%OtiM5FI#J#CPW00!z&*bAO^#$J(G%-mVx1Eyo?r_&PQadG0OLlKdFKyp&8 z_?2^xykg8!tK3g|nqMoYQdG9sXl#(8X6+-`O&yh}c>^xdCrbheN=bmxmKuTDZ(lKViRMmqF>c2%rS*qXXZTxrP(8qS;8 zbM?fT(yKW;mez*V+Qs8^wH91*U)`V{?Z^V(%N%4OI-<1Pv`7I82>^mn0oZzPx6c+C z$*C=6$f^LC?mSStY;F^A{{TF&B}-{q5aM?4SmRx6tUIMv0*%?OWUBjx_Gprhkf_7m z7o`C=2~ko>@itYj<&IWMYqEAp-q@X0iK`{4;&hQME+BY-EKlqDVxX_?wO^8Y;H6e~ zRRP^uOUe4r)U3BKs1gAc*?8i;^eil5eRi^RfCF7`|Z;JQzTR;O#)MjLWtC~ zC1eEOaj@%&bht@oB#O+o^+sp9(hv8pAB7|JC&+n>b72cxsw+`()vr?3Ze;VvwWW0p zAdtP@#`upj;SrFeq$QA4Hr34H!J0hBP*l?jaB?#*gprF*OP7 zmtxt~xjq)gYw}GhSbI;X$6IU)PPY=G4Q?q5X_+y~NB3O5nEq=q&SFSvYeCy6YPis_ zKA77rW%_ACR+!rn)L=I=@Y0Q1j$A_?>m?xRTVllj0ImYp)@XO_v32)_?CAEY_f*ks zlPlD@wKkhm&Gw40Q%(?-IpyR>MRfGr47!n1bDfPwjF6$t$yd5|<`MkvewfQu{INGL zR+P$uzy|4X8xdo%!QNNmJmy4L)xW-Rl!n@xcT$i!A$~UKuMLlmHQ$VE9<3*1=_rWC}buB$Ij z$-R&bx|}WQyid>B+NDJgIqV^-@fq7M03of~OlU5r5l#}}mUc}*bQdA_#s7Q80%NISe%8%=bM}@LW zV$G6AOJIn%8BfIfi_V!1;WZaeRj8^-(Jt!$0PQP$Qa>u5;>wzNHwW?&{IJWL!z!Z< z7ZV)m>16Z3lbH&<^p!T;T?(i zU`7)aCLk6JN+oIZ7u=rMAVFQhckH4|G zjuvb1B)UtC8hni!P1IJ>kCEmvV%QGIZ3^AB3+hP(VKU8K-q8EPLV@a$YhaF@ zaO9LMY*Kk2D;{{I>t!1gO?NAKjG1vGDS(hHqp-m9ksWDD>{JwGyeQ zkQw+0Gb(f?zZX`!b!1|0;Jf7EpZ=mj`-%Eqa$^-f0PGNli06{1& zlVv{?H-9vne%Pt1NDz2i9w--7vH&NgyT|qzA)5Pt{{WeqmF*v_UgElIWVn@s&lV?< z#}(Z}mGBO>_@jm$>1MXW={i-VNGAOV{{U<-1>LMGf+7 z>IZ0u>ikVE+os+mTHSD=$?{;Z>!Bt@-JWkZ-*TxAfV>JmbmS3;9+f2IKA@S+SF zx>#?srjAwHx{2 zYVpW-Y*+*{W2qTwEoPNQC$f`FHmX_m-AOxgtN!S7FgBnc&OzNLuOo+L%0Q?BJ zK=D!J2bseQGBHTWnH~gqGFqEod8H-S+PMupt(*Y$?9f7PE;TIpVy4RYf+r-)(w#4J za0FG=i(+e3n9g>Q;gXWHD&faZ#;-xLN0NN-O_s9ImZDUGPMfEGxE`QDGO8$0NhupA zt~6F#rXoBh^&?8T?lw zwW%d4x@=Ws<3RAXjTyLNry)AlNYU29{P2Ngl__Z&FLSu@!}B21t1MH{U3j$&o1wiu zF^j3bs2~}?rXg&Ab-AVB2#ahDM4N4Ki|)L##+9>A zlX5*y7jo&Z!*r!cSCO_ku=1I@R5hUU7v<;cjSP!m+R7_-R?&{f9qip$aQ)D>*1oIw zWAEPSQX+elhRT>H;a#>qAoRc;KBy!^OlKY{Qa`hBn_PGwJV*a`6r5kfg z9^uc4!na9wkf8G_RGM3gvK}9R{!@UOqe@Xsroq;ai_;BiZAl>tjV%HAZfxU97X*5E z`QU!JKvgz7vmz5NivHT|bw?+nyu9$;i*dCy(Ptu$O}mx^H1}-@DZb-ziB$JLt3I7y zkC({erXO|HpdLrZ64+Tou94MO!7XbaUr0O6n-I39p(BS`cwcbyt&cDHd{Sn|!j%Rh z58TFVAOJrVh4EtB+VZpwLuTc;vGW7{F-19Ds}fyvbsMOY>M^O0sabRM0#-Jyp$3m5 zkBeU)idYvH#~#r5{+J8BOUM(@*cEo>srYX9lHv`4+SVNLnYfb$5V(h_w1lPh0?oW` zLH&jba?WU}OU^Aub+i?wB)ae#bSJI)U{5_%+OKDq7a4bIGhL8fwpqQ&{cx3D(}?u? zJczq=tvX6N8=o8*)1NAe+o)B7h0gtY;6c=>3$lhSDN@5vskQFXw%mLt#AEB1xNJ|W zJn9-H;-h5^O|QD*d4b@e<}n&gHEk~FZtW{{sXK#-G2=Vhq?FrM>EEBG3F*wp{>e;s zjo-SJD{KD%EC*`^Via1M!>vF81q%k?s>f@NM+dokHfI__gHUVII~0Lt-#wxS{XqVh zyqT4!H|}mdM}9Koq^W?m_gYhHsCjSC9|+48m7t}nM5jlJSRj2y*v$7)VEFWA+Um)y z={7$p@m0^c#%m=qtAzNtdZB2D#HhxPw6hpWh^UL%ga$2i3zZj z1w66O!wxE21rWlVRn~X6h8A>NC2gqKTam*S4Ad`Vo7-<(3d$_R?h?mPgNbcDLAnH$ zTXdrM&be(-{J2|D-Ky78x z0kB%Su&{lg{3Lc<&k$dXO}gxT9bbx%y(xJr3&xiw=Mr-wr&HkyP~d zstY=FZj_sY`iwT;l~z4mdqs*dEy=f1pC|DB+0)yU`0Nse1qPi#vbN`k_t~jp8d*ze zXeB#YJ8U@&6vu{!SZo&4-2;6fV}(V%QAt2I8{A`^Sh!(=ts+<`)@ge!4rqHhF)o^irH5*rR zHeG=jYG|P-xPVYLJjmY_v+71Xa)#InaE@zM$LWDNxu!iTD`{;=kexlil@3@5ots^h z4yBYNowgSrOiHX<9PeB~mt?Aq13#-Wq)MnQQdSQ8B|8D~z?-A`#gLs!=m$JYa#3|f zcPj_P-w=eilKO*5AznI3!xAY~(15%4+l5fzDR5G!QK3hn8{?~#bhysnOJc%>+DnWA zlH$nbREt{%P16e40V(D;z?&>&eMTxPTNiN~SIZ5)+QCRl$Tr(!g+)^?y9LE5NGTWk z<5^Cnt4fetxVJ1TYw$FMwoq+uM1QUdVrDox+#i>Or;)_Zp$ATX zo$o0i?#29nhr;TkBA!7=)HP@am?Nruu`;hjZY)GpY0f51 zE%Gd+n}*5h>EZg|{{Zy?>g^Ci)u-+ftu7X_ly>c9Dnif7!w_o7EoEe^p7PWI{qbV7 zYlTi`;259C?DGxBi4g4udRljf0V^dq(j0e_c746A_B-|2l&mBl5J7bv# MQN|tacn;_P+4PZQ!~g&Q literal 0 HcmV?d00001 From 31b3d4224ccb0957b9fd889b4132064a5ed975e8 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 7 Dec 2023 22:17:37 +0800 Subject: [PATCH 068/302] =?UTF-8?q?OL=E7=95=8C=E6=9B=B9=E5=BD=B0characterR?= =?UTF-8?q?eplace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/yijiang.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/yijiang.js b/character/yijiang.js index e890f60a6..419c4fc8e 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -13915,7 +13915,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ gaoshun:['gaoshun','xin_gaoshun','re_gaoshun','old_gaoshun'], zhonghui:['zhonghui','xin_zhonghui','re_zhonghui','old_zhonghui','pe_zhonghui'], wangyi:['wangyi','re_wangyi','old_wangyi'], - caozhang:['caozhang','re_caozhang','xin_caozhang'], + caozhang:['caozhang','ol_caozhang','re_caozhang','xin_caozhang'], guanzhang:['guanzhang','re_guanzhang','old_guanzhang'], madai:['old_madai','re_madai','tw_madai','madai'], liaohua:['liaohua','re_liaohua','xin_liaohua'], From 197a19c9e7b83d5a29050028ff79093d1ca7ad6d Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 7 Dec 2023 23:39:39 +0800 Subject: [PATCH 069/302] =?UTF-8?q?OL=E8=B0=8B=E5=A7=9C=E7=BB=B4=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0OL=E4=B8=93=E5=B1=9E=E6=AD=A6=E5=B0=86?= =?UTF-8?q?=E5=88=86=E5=8C=85=EF=BC=8C=E8=A7=A3=E7=A6=81OL=E7=95=8C?= =?UTF-8?q?=E5=87=8C=E7=BB=9F=E7=95=8C=E7=AE=80=E9=9B=8D=E7=95=8C=E6=9B=B9?= =?UTF-8?q?=E5=BD=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/onlyOL.js | 334 +++++++++++++++++++++++++++++ character/refresh.js | 153 ------------- game/package.js | 3 +- image/character/ol_sb_jiangwei.jpg | Bin 0 -> 43550 bytes 4 files changed, 336 insertions(+), 154 deletions(-) create mode 100644 character/onlyOL.js create mode 100644 image/character/ol_sb_jiangwei.jpg diff --git a/character/onlyOL.js b/character/onlyOL.js new file mode 100644 index 000000000..41498f6ec --- /dev/null +++ b/character/onlyOL.js @@ -0,0 +1,334 @@ +'use strict'; +game.import('character',function(lib,game,ui,get,ai,_status){ + return { + name:'onlyOL', + connect:true, + character:{ + ol_sb_jiangwei:['male','shu',4,['olsbzhuri','olsbranji']], + ol_caozhang:['male','wei',4,['oljiangchi']], + ol_jianyong:['male','shu',3,['olqiaoshui','jyzongshi']], + ol_lingtong:['male','wu',4,['olxuanfeng'],['die_audio:re_lingtong']], + }, + characterSort:{ + onlyOL:{ + onlyOL_standard:[], + onlyOL_yijiang1:['ol_caozhang','ol_jianyong','ol_lingtong'], + onlyOL_sb:['ol_sb_jiangwei'], + }, + }, + characterIntro:{ + }, + characterReplace:{ + }, + skill:{ + //OL谋姜维 + olsbzhuri:{ + audio:2, + trigger:{player:['phaseZhunbeiEnd','phaseJudgeEnd','phaseDrawEnd','phaseUseEnd','phaseDiscardEnd','phaseJieshuEnd']}, + filter:function(event,player){ + if(player.hasSkill('olsbzhuri_block')) return false; + if(!game.hasPlayer(target=>player.canCompare(target))) return false; + return player.getHistory('gain',evt=>evt.getParent(event.name)==event).length+player.getHistory('lose',evt=>evt.getParent(event.name)==event).length; + }, + direct:true, + content:function*(event,map){ + var player=map.player; + var result=yield player.chooseTarget(get.prompt('olsbzhuri'),'与一名角色进行拼点,若你赢,你可以使用其中的一张拼点牌;若你没赢,你失去1点体力或令此技能于本回合失效',(card,player,target)=>{ + return player.canCompare(target); + }).set('ai',target=>{ + var player=_status.event.player; + var ts=target.getCards('h').sort((a,b)=>get.number(a)-get.number(b)); + if(get.attitude(player,target)<0){ + var hs=player.getCards('h').sort((a,b)=>get.number(a)-get.number(b)); + if(!hs.length||!ts.length) return 0; + if(get.value(hs[0])>6) return 0; + if(get.number(hs[0])>get.number(ts[0])) return 1; + return Math.random()-0.7; + } + return 0; + }); + if(result.bool){ + var target=result.targets[0]; + player.logSkill('olsbzhuri',target); + var result2=yield player.chooseToCompare(target); + if(result2.bool){ + var cards=[result.player,result.target].filterInD('d'); + cards=cards.filter(card=>player.hasUseTarget(card)); + if(cards.length){ + var result3=yield player.chooseButton(['是否使用其中的牌?',cards]).set('ai',button=>_status.event.player.getUseValue(button.link)); + if(result3.bool){ + var card=result3.links[0]; + player.$gain2(card,false); + game.delayx(); + player.chooseUseTarget(true,card,false); + } + } + } + else{ + var result3=yield player.chooseControl('失去体力','技能失效').set('prompt','逐日:失去1点体力,或令此技能于本回合失效').set('ai',()=>{ + var player=_status.event.player; + if(get.effect(player,{name:'losehp'},player,player)>0) return '失去体力'; + return '技能失效'; + }); + player[result3.control=='失去体力'?'loseHp':'addTempSkill'](result3.control=='失去体力'?1:'olsbzhuri_block'); + } + } + }, + subSkill:{ + block:{ + charlotte:true, + mark:true, + marktext:'', + intro:{content:'追不动太阳了'}, + }, + }, + }, + olsbranji:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + prompt2:function(event,player){ + var str='获得技能'; + var num=event.getParent().phaseList.slice(0,event.getParent().num).filter(name=>player.getHistory('useCard',evt=>evt.getParent(name).name==name).length).length; + if(num>=player.getHp()) str+='【困奋】'; + if(num==player.getHp()) str+='和'; + if(num<=player.getHp()) str+='【诈降】'; + str+='。将手牌数调整至手牌或将体力值调整为体力上限。然后你不能回复体力直到你杀死角色。'; + }, + content:function*(event,map){ + var player=map.player; + var trigger=map.trigger; + player.awakenSkill('olsbranji'); + var num=trigger.getParent().phaseList.slice(0,trigger.getParent().num).filter(name=>player.getHistory('useCard',evt=>evt.getParent(name).name==name).length).length; + if(num>=player.getHp()) player.addSkillLog('kunfen'); + if(num<=player.getHp()) player.addSkillLog('zhaxiang'); + if(player.countCards('h')!=player.getHandcardLimit()||player.hp!=player.maxHp){ + var result; + if(player.countCards('h')==player.getHandcardLimit()) result={index:1}; + else if(player.hp==player.maxHp) result={index:0}; + else{ + var num1=player.countCards('h'){ + var player=_status.event.player; + var list=_status.event.list; + var num1=get.effect(player,{name:'wuzhong'},player,player)/2; + var num2=get.recoverEffect(player,player,player); + return num1*list[0]>num2*list[1]?0:1; + }).set('list',[-num1,-num2]); + } + if(result.index==0){ + if(player.countCards('h')0?'recover':'loseHp'](Math.abs(num)); + } + } + player.addSkill('olsbranji_norecover'); + }, + derivation:['kunfen','zhaxiang'], + subSkill:{ + norecover:{ + charlotte:true, + mark:true, + intro:{content:'不能回复体力直到杀死角色'}, + trigger:{ + player:'recoverBefore', + source:'dieAfter', + }, + forced:true, + popup:false, + firstDo:true, + content:function(){ + if(trigger.name=='recover') trigger.cancel(); + else player.removeSkill('olsbranji_norecover'); + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(get.tag(card,'recover')) return 'zeroplayertarget'; + }, + }, + }, + }, + }, + }, + //界曹彰 + oljiangchi:{ + audio:2, + trigger:{player:'phaseDrawEnd'}, + direct:true, + content:function*(event,map){ + var player=map.player; + var choiceList=[ + '摸一张牌,本回合使用【杀】的次数上限-1,且【杀】不计入手牌上限。', + '重铸一张牌,本回合使用【杀】无距离限制,且使用【杀】的次数上限+1。', + ],list=['cancel2']; + if(player.countCards('he',card=>player.canRecast(card))) list.unshift('重铸,+1'); + else choiceList[1]=''+choiceList[1]+''; + list.unshift('摸牌,-1'); + var result=yield player.chooseControl(list).set('ai',()=>{ + var player=_status.event.player; + var controls=_status.event.controls.slice(); + if(controls.includes('重铸,+1')&&player.countCards('hs',card=>get.name(card)=='sha'&&player.hasValueTarget(card))>=2) return '重铸,+1'; + return '摸牌,-1'; + }).set('choiceList',choiceList).set('prompt',get.prompt('oljiangchi')); + if(result.control!='cancel2'){ + player.logSkill('oljiangchi'); + if(result.control=='摸牌,-1'){ + player.draw(); + player.addTempSkill('oljiangchi_less'); + player.addMark('oljiangchi_less',1,false); + } + else{ + var result2=yield player.chooseCard('he','将驰:请重铸一张牌',true,(card,player)=>player.canRecast(card)); + if(result2.bool){ + player.recast(result2.cards); + player.addTempSkill('oljiangchi_more'); + player.addMark('oljiangchi_more',1,false); + } + } + } + }, + subSkill:{ + less:{ + charlotte:true, + onremove:true, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num-player.countMark('oljiangchi_less'); + }, + ignoredHandcard:function(card,player){ + if(card.name=='sha') return true; + }, + cardDiscardable:function(card,player,name){ + if(name=='phaseDiscard'&&card.name=='sha') return false; + }, + }, + }, + more:{ + charlotte:true, + onremove:true, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+player.countMark('oljiangchi_more'); + }, + targetInRange:function (card,player){ + if(card.name=='sha') return true; + }, + }, + }, + }, + }, + //界简雍 + olqiaoshui:{ + audio:2, + inherit:'reqiaoshui', + filter:function(event,player){ + return player.countCards('h')>0&&!player.hasSkill('olqiaoshui_used'); + }, + content:function(){ + 'step 0' + player.chooseToCompare(target); + 'step 1' + if(result.bool) player.addTempSkill('qiaoshui3',{player:'phaseUseAfter'}); + else{ + player.addTempSkill('qiaoshui2'); + player.addTempSkill('olqiaoshui_used'); + } + }, + subSkill:{ + used:{ + charlotte:true, + mark:true, + marktext:'', + intro:{content:'被迫闭嘴'}, + }, + }, + }, + //界凌统 + olxuanfeng:{ + audio:'xuanfeng', + audioname:['boss_lvbu3'], + audioname2:{ + lingtong:'xuanfeng', + ol_lingtong:'xuanfeng_re_lingtong', + }, + trigger:{ + player:['loseAfter'], + global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], + }, + filter:function(event,player){ + var evt=event.getl(player); + return evt&&(evt.es.length||evt.cards2.length>1); + }, + direct:true, + content:function(){ + 'step 0' + event.count=2; + event.logged=false; + 'step 1' + player.chooseTarget(get.prompt('olxuanfeng'),'弃置一名其他角色的一张牌',function(card,player,target){ + if(player==target) return false; + return target.countDiscardableCards(player,'he'); + }).set('ai',function(target){ + return -get.attitude(_status.event.player,target); + }); + 'step 2' + if(result.bool){ + if(!event.logged){ + player.logSkill('olxuanfeng',result.targets); + event.logged=true; + } + else player.line(result.targets[0],'green'); + player.discardPlayerCard(result.targets[0],'he',true); + event.count--; + } + else event.finish(); + 'step 3' + if(event.count) event.goto(1); + }, + ai:{ + reverseEquip:true, + noe:true, + effect:{ + target:function(card,player,target,current){ + if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; + }, + }, + }, + }, + xuanfeng_re_lingtong:{audio:2}, + }, + dynamicTranslate:{ + }, + translate:{ + ol_lingtong:'OL界凌统', + ol_lingtong_prefix:'OL界', + olxuanfeng:'旋风', + olxuanfeng_info:'当你一次性失去至少两张牌后,或失去装备区的牌后,你可以依次弃置一至两名其他角色的共计两张牌。', + ol_jianyong:'OL界简雍', + ol_jianyong_prefix:'OL界', + olqiaoshui:'巧说', + olqiaoshui_info:'出牌阶段,你可与一名其他角色拼点。若你赢,你使用的下一张基本牌或普通锦囊牌可以额外指定任意一名其他角色为目标或减少指定一个目标;若你没赢,此技能于本回合失效且本回合你不能使用锦囊牌。', + ol_caozhang:'OL界曹彰', + ol_caozhang_prefix:'OL界', + oljiangchi:'将驰', + oljiangchi_info:'摸牌阶段结束时,你可以选择一项:①摸一张牌,本回合使用【杀】的次数上限-1,且【杀】不计入手牌上限。②重铸一张牌,本回合使用【杀】无距离限制,且使用【杀】的次数上限+1。', + ol_sb_jiangwei:'OL谋姜维', + ol_sb_jiangwei_prefix:'OL谋', + olsbzhuri:'逐日', + olsbzhuri_info:'你的回合阶段结束时,若你本阶段失去或得到过牌,则你可以与一名角色拼点。若你赢,你可以使用其中一张拼点牌;若你没赢,你失去1点体力或令此技能于本回合无效。', + olsbranji:'燃己', + olsbranji_info:'限定技,结束阶段。若你本回合使用过牌的阶段数大于等于/小于等于体力值,你获得技能〖困奋〗/〖诈降〗(同时满足则都获得),然后你将手牌数调整至手牌上限或将体力值调整为体力上限,最后你不能回复体力直到你杀死角色。', + + onlyOL_standard:'OL专属·标准', + onlyOL_yijiang1:'OL专属·将1', + onlyOL_sb:'OL专属·上兵伐谋', + }, + }; +}); diff --git a/character/refresh.js b/character/refresh.js index c99d56587..16de23927 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -20,9 +20,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, connect:true, character:{ - ol_caozhang:['male','wei',4,['oljiangchi'],['unseen']], - ol_jianyong:['male','shu',3,['olqiaoshui','jyzongshi'],['unseen']], - ol_lingtong:['male','wu',4,['olxuanfeng'],['die_audio:re_lingtong','unseen']], re_xushu:['male','shu',4,['zhuhai','qianxin']], re_lidian:['male','wei',3,['xunxun','xinwangxi']], re_zhongyao:['male','wei',3,['rehuomo','zuoding'],['clan:颍川钟氏']], @@ -172,152 +169,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_guohuai:['xiahouyuan','zhanghe'], }, skill:{ - //界曹彰 - oljiangchi:{ - audio:2, - trigger:{player:'phaseDrawEnd'}, - direct:true, - content:function*(event,map){ - var player=map.player; - var choiceList=[ - '摸一张牌,本回合使用【杀】的次数上限-1,且【杀】不计入手牌上限。', - '重铸一张牌,本回合使用【杀】无距离限制,且使用【杀】的次数上限+1。', - ],list=['cancel2']; - if(player.countCards('he',card=>player.canRecast(card))) list.unshift('重铸,+1'); - else choiceList[1]=''+choiceList[1]+''; - list.unshift('摸牌,-1'); - var result=yield player.chooseControl(list).set('ai',()=>{ - var player=_status.event.player; - var controls=_status.event.controls.slice(); - if(controls.includes('重铸,+1')&&player.countCards('hs',card=>get.name(card)=='sha'&&player.hasValueTarget(card))>=2) return '重铸,+1'; - return '摸牌,-1'; - }).set('choiceList',choiceList).set('prompt',get.prompt('oljiangchi')); - if(result.control!='cancel2'){ - player.logSkill('oljiangchi'); - if(result.control=='摸牌,-1'){ - player.draw(); - player.addTempSkill('oljiangchi_less'); - player.addMark('oljiangchi_less',1,false); - } - else{ - var result2=yield player.chooseCard('he','将驰:请重铸一张牌',true,(card,player)=>player.canRecast(card)); - if(resulg2.bool){ - player.recast(result2.cards); - player.addTempSkill('oljiangchi_more'); - player.addMark('oljiangchi_more',1,false); - } - } - } - }, - subSkill:{ - less:{ - charlotte:true, - onremove:true, - mod:{ - cardUsable:function(card,player,num){ - if(card.name=='sha') return num-player.countMark('oljiangchi_less'); - }, - ignoredHandcard:function(card,player){ - if(card.name=='sha') return true; - }, - cardDiscardable:function(card,player,name){ - if(name=='phaseDiscard'&&card.name=='sha') return false; - }, - }, - }, - more:{ - charlotte:true, - onremove:true, - mod:{ - cardUsable:function(card,player,num){ - if(card.name=='sha') return num+player.countMark('oljiangchi_more'); - }, - targetInRange:function (card,player){ - if(card.name=='sha') return true; - }, - }, - }, - }, - }, - //界简雍 - olqiaoshui:{ - audio:2, - inherit:'reqiaoshui', - filter:function(event,player){ - return player.countCards('h')>0&&!player.hasSkill('olqiaoshui_used'); - }, - content:function(){ - 'step 0' - player.chooseToCompare(target); - 'step 1' - if(result.bool) player.addTempSkill('qiaoshui3',{player:'phaseUseAfter'}); - else{ - player.addTempSkill('qiaoshui2'); - player.addTempSkill('olqiaoshui_used'); - } - }, - subSkill:{ - used:{ - charlotte:true, - mark:true, - marktext:'', - intro:{content:'被迫闭嘴'}, - }, - }, - }, - //界凌统 - olxuanfeng:{ - audio:'xuanfeng', - audioname:['boss_lvbu3'], - audioname2:{ - lingtong:'xuanfeng', - ol_lingtong:'xuanfeng_re_lingtong', - }, - trigger:{ - player:['loseAfter'], - global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], - }, - filter:function(event,player){ - var evt=event.getl(player); - return evt&&(evt.es.length||evt.cards2.length>1); - }, - direct:true, - content:function(){ - 'step 0' - event.count=2; - event.logged=false; - 'step 1' - player.chooseTarget(get.prompt('olxuanfeng'),'弃置一名其他角色的一张牌',function(card,player,target){ - if(player==target) return false; - return target.countDiscardableCards(player,'he'); - }).set('ai',function(target){ - return -get.attitude(_status.event.player,target); - }); - 'step 2' - if(result.bool){ - if(!event.logged){ - player.logSkill('olxuanfeng',result.targets); - event.logged=true; - } - else player.line(result.targets[0],'green'); - player.discardPlayerCard(result.targets[0],'he',true); - event.count--; - } - else event.finish(); - 'step 3' - if(event.count) event.goto(1); - }, - ai:{ - effect:{ - target:function(card,player,target,current){ - if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; - } - }, - reverseEquip:true, - noe:true - }, - }, - xuanfeng_re_lingtong:{audio:2}, ollianhuan:{ audio:'xinlianhuan', audioname:['ol_pangtong'], @@ -15702,10 +15553,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caoren_prefix:'界', ollianhuan:'连环', ollianhuan_info:'你可以将一张♣牌当【铁索连环】使用或重铸。你使用【铁索连环】选择目标后,可以给此牌增加一个目标。', - ol_lingtong:'OL界凌统', - ol_lingtong_prefix:'OL界', - olxuanfeng:'旋风', - olxuanfeng_info:'当你一次性失去至少两张牌后,或失去装备区的牌后,你可以依次弃置一至两名其他角色的共计两张牌。', re_lidian:'界李典', gz_re_lidian:'李典', re_lidian_prefix:'界', diff --git a/game/package.js b/game/package.js index 7a9b66af8..10d012d9f 100644 --- a/game/package.js +++ b/game/package.js @@ -3,11 +3,12 @@ window.noname_package={ standard:'标准', refresh:'界限突破', shenhua:'神话再临', - xinghuoliaoyuan:'星火燎原', yijiang:'一将成名', sp:'璀璨星河', + onlyOL:'OL专属', yingbian:'文德武备', clan:'门阀士族', + xinghuoliaoyuan:'星火燎原', huicui:'群英荟萃', xianding:'限定专属', sp2:'系列专属', diff --git a/image/character/ol_sb_jiangwei.jpg b/image/character/ol_sb_jiangwei.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c20efd0417712d0b7f25dd81ff98a144526575b GIT binary patch literal 43550 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 gm@>8S|?x$5#*RCCvUG#QLA$7l$-&2x?J@=Ud+r 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 Date: Thu, 7 Dec 2023 23:43:44 +0800 Subject: [PATCH 070/302] =?UTF-8?q?OL=E8=B0=8Bprefix=E5=89=8D=E7=BC=80?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/game/game.js b/game/game.js index a80eb6678..eeb85aa57 100644 --- a/game/game.js +++ b/game/game.js @@ -36010,6 +36010,12 @@ new Promise(resolve=>{ * @returns {string} */ getSpan:()=>`${get.prefixSpan('OL')}${get.prefixSpan('界')}` + }], + ['OL谋',{ + /** + * @returns {string} + */ + getSpan:()=>`${get.prefixSpan('OL')}${get.prefixSpan('谋')}` }] ]), groupnature:{ From 1715a6f7f66ae6488e410c6e00211984dd599d8c Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 7 Dec 2023 23:44:23 +0800 Subject: [PATCH 071/302] bugfix --- character/onlyOL.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/onlyOL.js b/character/onlyOL.js index 41498f6ec..478429802 100644 --- a/character/onlyOL.js +++ b/character/onlyOL.js @@ -52,7 +52,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.logSkill('olsbzhuri',target); var result2=yield player.chooseToCompare(target); if(result2.bool){ - var cards=[result.player,result.target].filterInD('d'); + var cards=[result2.player,result2.target].filterInD('d'); cards=cards.filter(card=>player.hasUseTarget(card)); if(cards.length){ var result3=yield player.chooseButton(['是否使用其中的牌?',cards]).set('ai',button=>_status.event.player.getUseValue(button.link)); From d32e8699d252ef8623571ebc2e6d6ca44b42ce5b Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 7 Dec 2023 23:46:23 +0800 Subject: [PATCH 072/302] bugfix --- character/onlyOL.js | 1 + 1 file changed, 1 insertion(+) diff --git a/character/onlyOL.js b/character/onlyOL.js index 478429802..7f7f45def 100644 --- a/character/onlyOL.js +++ b/character/onlyOL.js @@ -93,6 +93,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(num==player.getHp()) str+='和'; if(num<=player.getHp()) str+='【诈降】'; str+='。将手牌数调整至手牌或将体力值调整为体力上限。然后你不能回复体力直到你杀死角色。'; + return str; }, content:function*(event,map){ var player=map.player; From 6b8af2edb24cc5092786ec6521604cce06a92a00 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 7 Dec 2023 23:47:57 +0800 Subject: [PATCH 073/302] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E3=80=90=E7=87=83?= =?UTF-8?q?=E5=B7=B1=E3=80=91=E7=9A=84skillAnimatio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/onlyOL.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/character/onlyOL.js b/character/onlyOL.js index 7f7f45def..50e7ceb16 100644 --- a/character/onlyOL.js +++ b/character/onlyOL.js @@ -95,6 +95,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ str+='。将手牌数调整至手牌或将体力值调整为体力上限。然后你不能回复体力直到你杀死角色。'; return str; }, + skillAnimation:true, + animationColor:'fire', content:function*(event,map){ var player=map.player; var trigger=map.trigger; From efe2a99c088bad30a3d3b1640558974d5a1bc419 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Thu, 7 Dec 2023 23:54:50 +0800 Subject: [PATCH 074/302] =?UTF-8?q?OL=E4=B8=93=E5=B1=9E=E6=AD=A6=E5=B0=86?= =?UTF-8?q?=E8=AF=84=E7=BA=A7+=E5=87=8C=E7=BB=9F=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/rank.js | 8 ++++++++ character/yijiang.js | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/character/rank.js b/character/rank.js index d6b6dc98d..855b1fb04 100644 --- a/character/rank.js +++ b/character/rank.js @@ -348,6 +348,8 @@ window.noname_character_rank={ 'caoyi', 'sb_sp_zhugeliang', 'sb_zhugeliang', + 'ol_jianyong', + 'ol_sb_jiangwei', ], am:[ 'diy_caiwenji', @@ -1321,6 +1323,8 @@ window.noname_character_rank={ 'baoxin', 'mb_xianglang', 'lvboshe', + 'ol_caozhang', + 'ol_lingtong', ], bm:[ 'diy_xizhenxihong', @@ -2070,8 +2074,12 @@ window.noname_character_rank={ 'clan_xunyou', 'lvboshe', 'yj_zhoubuyi', + 'ol_jianyong', + 'ol_sb_jiangwei', ], rare:[ + 'ol_caozhang', + 'ol_lingtong', 'luoxian', 'ol_mengda', 'tw_menghuo', diff --git a/character/yijiang.js b/character/yijiang.js index 419c4fc8e..c18d6172d 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -44,7 +44,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhuran:['male','wu',4,['danshou']], xusheng:['male','wu',4,['xinpojun']], wuguotai:['female','wu',3,['ganlu','buyi']], - lingtong:['male','wu',4,['olxuanfeng']], + lingtong:['male','wu',4,['xuanfeng']], liubiao:['male','qun',3,['rezishou','zongshi']], yufan:['male','wu',3,['zhiyan','zongxuan']], chengong:['male','qun',3,['mingce','zhichi']], From 611658114f785b31a0882ab3abac0d483127eff9 Mon Sep 17 00:00:00 2001 From: Tipx-L <138244655+Tipx-L@users.noreply.github.com> Date: Tue, 5 Dec 2023 00:14:34 -0800 Subject: [PATCH 075/302] Start modularization. --- .eslintrc.json | 29 ++-- .gitignore | 25 +++- noname.js | 4 + noname/ai.js | 7 + noname/ai/basic.js | 180 ++++++++++++++++++++++++ noname/get.js | 17 +++ noname/library.js | 69 +++++++++ noname/library/animate.js | 7 + noname/library/animate/card.d.ts | 3 + noname/library/animate/card.js | 1 + noname/library/animate/skill.d.ts | 3 + noname/library/animate/skill.js | 1 + noname/library/card-pack.d.ts | 3 + noname/library/card-pack.js | 1 + noname/library/card-type.d.ts | 3 + noname/library/card-type.js | 1 + noname/library/character-filter.d.ts | 3 + noname/library/character-filter.js | 1 + noname/library/character-information.ts | 4 + noname/library/character-intro.d.ts | 3 + noname/library/character-intro.js | 1 + noname/library/character-pack.d.ts | 5 + noname/library/character-pack.js | 1 + noname/library/character-replace.d.ts | 3 + noname/library/character-replace.js | 1 + noname/library/character-sort.d.ts | 3 + noname/library/character-sort.js | 1 + noname/library/character-title.d.ts | 3 + noname/library/character-title.js | 1 + noname/library/dynamic-translate.d.ts | 5 + noname/library/dynamic-translate.js | 1 + noname/library/element.js | 7 + noname/library/element/game-event.js | 50 +++++++ noname/library/element/player.js | 1 + noname/library/emotion-list.d.ts | 3 + noname/library/emotion-list.js | 10 ++ noname/library/extension-pack.js | 1 + noname/library/skin.d.ts | 3 + noname/library/skin.js | 1 + noname/library/update-urls.d.ts | 3 + noname/library/update-urls.js | 4 + noname/status.js | 34 +++++ noname/status/ai.d.ts | 7 + noname/status/ai.js | 3 + noname/status/card-tag.d.ts | 3 + noname/status/card-tag.js | 7 + noname/status/global-history.d.ts | 9 ++ noname/status/post-reconnect.js | 1 + 48 files changed, 519 insertions(+), 18 deletions(-) create mode 100644 noname.js create mode 100644 noname/ai.js create mode 100644 noname/ai/basic.js create mode 100644 noname/get.js create mode 100644 noname/library.js create mode 100644 noname/library/animate.js create mode 100644 noname/library/animate/card.d.ts create mode 100644 noname/library/animate/card.js create mode 100644 noname/library/animate/skill.d.ts create mode 100644 noname/library/animate/skill.js create mode 100644 noname/library/card-pack.d.ts create mode 100644 noname/library/card-pack.js create mode 100644 noname/library/card-type.d.ts create mode 100644 noname/library/card-type.js create mode 100644 noname/library/character-filter.d.ts create mode 100644 noname/library/character-filter.js create mode 100644 noname/library/character-information.ts create mode 100644 noname/library/character-intro.d.ts create mode 100644 noname/library/character-intro.js create mode 100644 noname/library/character-pack.d.ts create mode 100644 noname/library/character-pack.js create mode 100644 noname/library/character-replace.d.ts create mode 100644 noname/library/character-replace.js create mode 100644 noname/library/character-sort.d.ts create mode 100644 noname/library/character-sort.js create mode 100644 noname/library/character-title.d.ts create mode 100644 noname/library/character-title.js create mode 100644 noname/library/dynamic-translate.d.ts create mode 100644 noname/library/dynamic-translate.js create mode 100644 noname/library/element.js create mode 100644 noname/library/element/game-event.js create mode 100644 noname/library/element/player.js create mode 100644 noname/library/emotion-list.d.ts create mode 100644 noname/library/emotion-list.js create mode 100644 noname/library/extension-pack.js create mode 100644 noname/library/skin.d.ts create mode 100644 noname/library/skin.js create mode 100644 noname/library/update-urls.d.ts create mode 100644 noname/library/update-urls.js create mode 100644 noname/status.js create mode 100644 noname/status/ai.d.ts create mode 100644 noname/status/ai.js create mode 100644 noname/status/card-tag.d.ts create mode 100644 noname/status/card-tag.js create mode 100644 noname/status/global-history.d.ts create mode 100644 noname/status/post-reconnect.js diff --git a/.eslintrc.json b/.eslintrc.json index f0d2bdc86..fde84ce4b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -2,16 +2,19 @@ "extends": "eslint:recommended", "env": { "browser": true, - "node": true, "es6": true, + "node": true, + "serviceworker": true, "worker": true }, "rules": { "no-console": 0, - "no-unused-vars": 0, - "no-undef": 0, - "no-redeclare": 0, - "require-yield": 0, + "no-constant-condition": [ + "error", + { + "checkLoops": false + } + ], "no-irregular-whitespace": [ "error", { @@ -19,13 +22,13 @@ "skipTemplates": true } ], - "no-constant-condition": [ - "error", - { - "checkLoops": false - } - ] /* , - "comma-dangle": ["error", "only-multiline"], - "complexity": ["error",100] */ + "no-redeclare": 0, + "no-undef": 0, + "no-unused-vars": 0, + "require-yield": 0 + }, + "parserOptions": { + "ecmaVersion": 13, + "sourceType": "module" } } \ No newline at end of file diff --git a/.gitignore b/.gitignore index 576ce9437..41a5761d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,25 @@ +!extension/boss +!extension/cardpile +!extension/coin +!extension/wuxing +!node_modules/options +!node_modules/ultron +!node_modules/ws +._* .DS_Store .DS_Store? -._* +.idea .Spotlight-V100 .Trashes -ehthumbs.db -Thumbs.db -localStorage.json .vscode -.idea +app +app.html +ehthumbs.db +extension +jsconfig.json +localStorage.json +main.js +node_modules +noname.ico +package.json +Thumbs.db diff --git a/noname.js b/noname.js new file mode 100644 index 000000000..517b9e043 --- /dev/null +++ b/noname.js @@ -0,0 +1,4 @@ +export * from "./noname/ai.js"; +export * from "./noname/status.js"; +export * from "./noname/library.js"; +export * from "./noname/get.js"; diff --git a/noname/ai.js b/noname/ai.js new file mode 100644 index 000000000..67ad92185 --- /dev/null +++ b/noname/ai.js @@ -0,0 +1,7 @@ +import { Get } from "../noname.js"; +import { BasicAI } from "./ai/basic.js"; + +export const ai = { + basic: BasicAI, + get: Get +}; diff --git a/noname/ai/basic.js b/noname/ai/basic.js new file mode 100644 index 000000000..ac6e2569e --- /dev/null +++ b/noname/ai/basic.js @@ -0,0 +1,180 @@ +import { status as _status } from "../../noname.js"; + +export class BasicAI { + static chooseButton(check) { + var event = _status.event; + var i, j, range, buttons, buttons2; + var ok = false, forced = event.forced; + var iwhile = 100; + while (iwhile--) { + range = get.select(event.selectButton); + if (ui.selected.buttons.length >= range[0]) { + ok = true; + } + if (range[1] <= -1) { + j = 0; + for (i = 0; i < ui.selected.buttons.length; i++) { + j += check(ui.selected.buttons[i]); + } + return (j > 0); + } + buttons = get.selectableButtons(); + if (buttons.length == 0) { + return ok; + } + buttons2 = buttons.slice(0); + var ix = 0; + var checkix = check(buttons[0], buttons2); + for (i = 1; i < buttons.length; i++) { + var checkixtmp = check(buttons[i], buttons2); + if (checkixtmp > checkix) { + ix = i; + checkix = checkixtmp; + } + } + // buttons.sort(function(a,b){ + // return check(b,buttons2)-check(a,buttons2); + // }); + if (check(buttons[ix]) <= 0) { + if (!forced || ok) { + return ok; + } + } + buttons[ix].classList.add('selected'); + ui.selected.buttons.add(buttons[ix]); + game.check(); + if (ui.selected.buttons.length >= range[0]) { + ok = true; + } + if (ui.selected.buttons.length == range[1]) { + return true; + } + } + } + static chooseCard(check) { + var event = _status.event; + if (event.filterCard == undefined) return (check() > 0); + var i, j, range, cards, cards2, skills, check, effect; + var ok = false, forced = event.forced; + var iwhile = 100; + while (iwhile--) { + range = get.select(event.selectCard); + if (ui.selected.cards.length >= range[0]) { + ok = true; + } + if (range[1] <= -1) { + if (ui.selected.cards.length == 0) return true; + j = 0; + for (i = 0; i < ui.selected.cards.length; i++) { + effect = check(ui.selected.cards[i]); + if (effect < 0) j -= Math.sqrt(-effect); + else j += Math.sqrt(effect); + } + return (j > 0); + } + cards = get.selectableCards(); + if (!_status.event.player._noSkill) { + cards = cards.concat(get.skills()); + } + if (cards.length == 0) { + return ok; + } + cards2 = cards.slice(0); + // cards.sort(function(a,b){ + // return (check(b,cards2)-check(a,cards2)); + // }); + var ix = 0; + var checkix = check(cards[0], cards2); + for (i = 1; i < cards.length; i++) { + var checkixtmp = check(cards[i], cards2); + if (checkixtmp > checkix) { + ix = i; + checkix = checkixtmp; + } + } + if (check(cards[ix]) <= 0) { + if (!forced || ok) { + return ok; + } + } + if (typeof cards[ix] == 'string') { + ui.click.skill(cards[ix]); + var info = get.info(event.skill); + if (info.filterCard) { + check = info.check || get.unuseful2; + return (ai.basic.chooseCard(check)); + } + else { + return true; + } + } + else { + cards[ix].classList.add('selected'); + ui.selected.cards.add(cards[ix]); + game.check(); + if (ui.selected.cards.length >= range[0]) { + ok = true; + } + if (ui.selected.cards.length == range[1]) { + return true; + } + } + } + } + static chooseTarget(check) { + var event = _status.event; + if (event.filterTarget == undefined) return (check() > 0); + var i, j, range, targets, targets2, effect; + var ok = false, forced = event.forced; + var iwhile = 100; + while (iwhile--) { + range = get.select(event.selectTarget); + if (ui.selected.targets.length >= range[0]) { + ok = true; + } + if (range[1] <= -1) { + j = 0; + for (i = 0; i < ui.selected.targets.length; i++) { + effect = check(ui.selected.targets[i]); + if (effect < 0) j -= Math.sqrt(-effect); + else j += Math.sqrt(effect); + } + return (j > 0); + } + else if (range[1] == 0) { + return check() > 0 + } + targets = get.selectableTargets(); + if (targets.length == 0) { + return range[0] == 0 || ok; + } + targets2 = targets.slice(0); + // targets.sort(function(a,b){ + // return check(b)-check(a); + // }); + var ix = 0; + var checkix = check(targets[0], targets2); + for (i = 1; i < targets.length; i++) { + var checkixtmp = check(targets[i], targets2); + if (checkixtmp > checkix) { + ix = i; + checkix = checkixtmp; + } + } + if (check(targets[ix]) <= 0) { + if (!forced || ok) { + return ok; + } + } + targets[ix].classList.add('selected'); + ui.selected.targets.add(targets[ix]); + game.check(); + if (ui.selected.targets.length >= range[0]) { + ok = true; + } + if (ui.selected.targets.length == range[1]) { + return true; + } + } + } +} diff --git a/noname/get.js b/noname/get.js new file mode 100644 index 000000000..a4645e9dd --- /dev/null +++ b/noname/get.js @@ -0,0 +1,17 @@ +import { Library as lib, status as _status } from "../noname.js"; + +export class Get { + /** + * @template T + * @overload + * @param {T} key + * @returns {typeof _status.event[T]} + */ + /** + * @overload + * @returns {typeof _status.event} + */ + static event(key) { + return key ? _status.event[key] : _status.event; + } +} diff --git a/noname/library.js b/noname/library.js new file mode 100644 index 000000000..5776826ec --- /dev/null +++ b/noname/library.js @@ -0,0 +1,69 @@ +import { animate } from "./library/animate.js"; +import { cardPack } from "./library/card-pack.js"; +import { cardType } from "./library/card-type.js"; +import { characterFilter } from "./library/character-filter.js"; +import { characterIntro } from "./library/character-intro.js"; +import { characterPack } from "./library/character-pack.js"; +import { characterReplace } from "./library/character-replace.js"; +import { characterSort } from "./library/character-sort.js"; +import { characterTitle } from "./library/character-title.js"; +import { dynamicTranslate } from "./library/dynamic-translate.js"; +import { element } from "./library/element.js"; +import { emotionList } from "./library/emotion-list.js"; +import { extensionPack } from "./library/extension-pack.js"; +import { skin } from "./library/skin.js"; +import { updateURLs } from "./library/update-urls.js"; + +const nonameInitialized = localStorage.getItem('noname_inited'); + +export class Library { + static configprefix = "noname_0.9_"; + static versionOL = 27; + static updateURLS = updateURLs; + static updateURL = updateURLs.github; + static mirrorURL = updateURLs.coding; + static hallURL = "47.99.105.222"; + static assetURL = typeof nonameInitialized != 'string' || nonameInitialized == 'nodejs' ? '' : nonameInitialized; + static userAgent = navigator.userAgent.toLowerCase(); + static compatibleEdition = Boolean(typeof nonameInitialized == 'string' && nonameInitialized.match(/\/(?:com\.widget|yuri\.nakamura)\.noname\//)); + static changeLog = []; + static updates = []; + static canvasUpdates = []; + static video = []; + static skilllist = []; + static connectBanned = []; + static characterIntro = characterIntro; + static characterTitle = characterTitle; + static characterPack = characterPack; + static characterFilter = characterFilter; + static characterSort = characterSort; + static characterReplace = characterReplace; + static characterGuozhanFilter = ["mode_guozhan"]; + static dynamicTranslate = dynamicTranslate; + static cardPack = cardPack; + static skin = skin; + static onresize = []; + static onphase = []; + static onwash = []; + static onover = []; + static ondb = []; + static ondb2 = []; + static chatHistory = []; + static emotionList = emotionList; + static animate = animate; + static onload = []; + static onload2 = []; + static onprepare = []; + static arenaReady = []; + static onfree = []; + static inpile = []; + static inpile_nature = []; + static extensions = []; + static extensionPack = extensionPack; + static cardType = cardType; + static element = element; + + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } +} diff --git a/noname/library/animate.js b/noname/library/animate.js new file mode 100644 index 000000000..cace6e142 --- /dev/null +++ b/noname/library/animate.js @@ -0,0 +1,7 @@ +import { animateCard } from "./animate/card.js"; +import { animateSkill } from "./animate/skill.js"; + +export const animate = { + skill: animateSkill, + card: animateCard +}; diff --git a/noname/library/animate/card.d.ts b/noname/library/animate/card.d.ts new file mode 100644 index 000000000..5534c58dd --- /dev/null +++ b/noname/library/animate/card.d.ts @@ -0,0 +1,3 @@ +interface AnimateCard extends Record { } + +export const animateCard: AnimateCard; diff --git a/noname/library/animate/card.js b/noname/library/animate/card.js new file mode 100644 index 000000000..57b8ce511 --- /dev/null +++ b/noname/library/animate/card.js @@ -0,0 +1 @@ +export const animateCard = {}; diff --git a/noname/library/animate/skill.d.ts b/noname/library/animate/skill.d.ts new file mode 100644 index 000000000..d4bd33ef5 --- /dev/null +++ b/noname/library/animate/skill.d.ts @@ -0,0 +1,3 @@ +interface AnimateSkill extends Record { } + +export const animateSkill: AnimateSkill; diff --git a/noname/library/animate/skill.js b/noname/library/animate/skill.js new file mode 100644 index 000000000..316153f39 --- /dev/null +++ b/noname/library/animate/skill.js @@ -0,0 +1 @@ +export const animateSkill = {}; diff --git a/noname/library/card-pack.d.ts b/noname/library/card-pack.d.ts new file mode 100644 index 000000000..069481296 --- /dev/null +++ b/noname/library/card-pack.d.ts @@ -0,0 +1,3 @@ +interface CardPack extends Record { } + +export const cardPack: CardPack; diff --git a/noname/library/card-pack.js b/noname/library/card-pack.js new file mode 100644 index 000000000..1ca34c63a --- /dev/null +++ b/noname/library/card-pack.js @@ -0,0 +1 @@ +export const cardPack = {}; diff --git a/noname/library/card-type.d.ts b/noname/library/card-type.d.ts new file mode 100644 index 000000000..9c383d7a6 --- /dev/null +++ b/noname/library/card-type.d.ts @@ -0,0 +1,3 @@ +interface CardType extends Record { } + +export const cardType: CardType; diff --git a/noname/library/card-type.js b/noname/library/card-type.js new file mode 100644 index 000000000..b38a1eb64 --- /dev/null +++ b/noname/library/card-type.js @@ -0,0 +1 @@ +export const cardType = {}; diff --git a/noname/library/character-filter.d.ts b/noname/library/character-filter.d.ts new file mode 100644 index 000000000..63f38953a --- /dev/null +++ b/noname/library/character-filter.d.ts @@ -0,0 +1,3 @@ +interface CharacterFilter extends Record boolean> { } + +export const characterFilter: CharacterFilter; diff --git a/noname/library/character-filter.js b/noname/library/character-filter.js new file mode 100644 index 000000000..c83393b66 --- /dev/null +++ b/noname/library/character-filter.js @@ -0,0 +1 @@ +export const characterFilter = {}; diff --git a/noname/library/character-information.ts b/noname/library/character-information.ts new file mode 100644 index 000000000..5457cce90 --- /dev/null +++ b/noname/library/character-information.ts @@ -0,0 +1,4 @@ +type CharacterSex = "double" | "female" | "male" | "none" | "unknown" | string & {}; +type CharacterGroup = "wei" | "shu" | "wu" | "qun" | "jin"; +type CharacterHP = number | `${number}/${number}` | `${number}/${number}/${number}`; +export type CharacterInformation = [CharacterSex, CharacterGroup, CharacterHP, string[], string[]?]; diff --git a/noname/library/character-intro.d.ts b/noname/library/character-intro.d.ts new file mode 100644 index 000000000..1bb84d5b6 --- /dev/null +++ b/noname/library/character-intro.d.ts @@ -0,0 +1,3 @@ +interface CharacterIntro extends Record { } + +export const characterIntro: CharacterIntro; diff --git a/noname/library/character-intro.js b/noname/library/character-intro.js new file mode 100644 index 000000000..5e82988b8 --- /dev/null +++ b/noname/library/character-intro.js @@ -0,0 +1 @@ +export const characterIntro = {}; diff --git a/noname/library/character-pack.d.ts b/noname/library/character-pack.d.ts new file mode 100644 index 000000000..9ee07cc77 --- /dev/null +++ b/noname/library/character-pack.d.ts @@ -0,0 +1,5 @@ +import { CharacterInformation } from "./character-information"; + +interface CharacterPack extends Record> { } + +export const characterPack: CharacterPack; diff --git a/noname/library/character-pack.js b/noname/library/character-pack.js new file mode 100644 index 000000000..5c62945fc --- /dev/null +++ b/noname/library/character-pack.js @@ -0,0 +1 @@ +export const characterPack = {}; diff --git a/noname/library/character-replace.d.ts b/noname/library/character-replace.d.ts new file mode 100644 index 000000000..56f2742f6 --- /dev/null +++ b/noname/library/character-replace.d.ts @@ -0,0 +1,3 @@ +interface CharacterReplace extends Record { } + +export const characterReplace: CharacterReplace; diff --git a/noname/library/character-replace.js b/noname/library/character-replace.js new file mode 100644 index 000000000..0b94a222e --- /dev/null +++ b/noname/library/character-replace.js @@ -0,0 +1 @@ +export const characterReplace = {}; diff --git a/noname/library/character-sort.d.ts b/noname/library/character-sort.d.ts new file mode 100644 index 000000000..c2771a0cc --- /dev/null +++ b/noname/library/character-sort.d.ts @@ -0,0 +1,3 @@ +interface CharacterSort extends Record> { } + +export const characterSort: CharacterSort; diff --git a/noname/library/character-sort.js b/noname/library/character-sort.js new file mode 100644 index 000000000..4728ab53a --- /dev/null +++ b/noname/library/character-sort.js @@ -0,0 +1 @@ +export const characterSort = {}; diff --git a/noname/library/character-title.d.ts b/noname/library/character-title.d.ts new file mode 100644 index 000000000..54e55a647 --- /dev/null +++ b/noname/library/character-title.d.ts @@ -0,0 +1,3 @@ +interface CharacterTitle extends Record { } + +export const characterTitle: CharacterTitle; diff --git a/noname/library/character-title.js b/noname/library/character-title.js new file mode 100644 index 000000000..12e7faed4 --- /dev/null +++ b/noname/library/character-title.js @@ -0,0 +1 @@ +export const characterTitle = {}; diff --git a/noname/library/dynamic-translate.d.ts b/noname/library/dynamic-translate.d.ts new file mode 100644 index 000000000..a04a11534 --- /dev/null +++ b/noname/library/dynamic-translate.d.ts @@ -0,0 +1,5 @@ +import { Player } from "./element/player"; + +interface DynamicTranslate extends Record string> { } + +export const dynamicTranslate: DynamicTranslate; diff --git a/noname/library/dynamic-translate.js b/noname/library/dynamic-translate.js new file mode 100644 index 000000000..d4ef217a6 --- /dev/null +++ b/noname/library/dynamic-translate.js @@ -0,0 +1 @@ +export const dynamicTranslate = {}; diff --git a/noname/library/element.js b/noname/library/element.js new file mode 100644 index 000000000..f14913cbf --- /dev/null +++ b/noname/library/element.js @@ -0,0 +1,7 @@ +import { GameEvent } from "./element/game-event.js"; +import { Player } from "./element/player.js"; + +export const element = { + Player: Player, + GameEvent: GameEvent +}; diff --git a/noname/library/element/game-event.js b/noname/library/element/game-event.js new file mode 100644 index 000000000..e13272baa --- /dev/null +++ b/noname/library/element/game-event.js @@ -0,0 +1,50 @@ +import { Get as get } from "../../../noname.js"; + +export class GameEvent { + /** + * @param {string} [name] + * @param {false} [trigger] + */ + constructor(name, trigger) { + if (typeof name == 'string') { + this.name = name; + const gameEvent = get.event(); + + if (gameEvent) { + const type = `onNext${name[0].toUpperCase()}${name.slice(1)}`; + if (gameEvent.hasHandler(type)) this.pushHandler(...gameEvent.getHandler(type)); + } + + game.globalEventHandlers.addHandlerToEvent(this); + } + + this.step = 0; + this.finished = false; + /** + * @type {GameEvent[]} + */ + this.next = []; + /** + * @type {GameEvent[]} + */ + this.after = []; + this.custom = { + add: {}, + replace: {} + }; + this._aiexclude = []; + this._notrigger = []; + this._result = {}; + this._set = []; + if (trigger !== false && !game.online) this._triggered = 0; + } + + static initialGameEvent() { + return (new this).finish(); + } + + finish() { + this.finished = true; + return this; + } +} diff --git a/noname/library/element/player.js b/noname/library/element/player.js new file mode 100644 index 000000000..c5810f777 --- /dev/null +++ b/noname/library/element/player.js @@ -0,0 +1 @@ +export class Player { } diff --git a/noname/library/emotion-list.d.ts b/noname/library/emotion-list.d.ts new file mode 100644 index 000000000..1bfe44410 --- /dev/null +++ b/noname/library/emotion-list.d.ts @@ -0,0 +1,3 @@ +interface EmotionList extends Record { } + +export const emotionList: EmotionList; diff --git a/noname/library/emotion-list.js b/noname/library/emotion-list.js new file mode 100644 index 000000000..cc82d5f14 --- /dev/null +++ b/noname/library/emotion-list.js @@ -0,0 +1,10 @@ +export const emotionList = { + xiaowu_emotion: 14, + xiaokuo_emotion: 8, + shibing_emotion: 15, + guojia_emotion: 20, + zhenji_emotion: 20, + xiaosha_emotion: 20, + xiaotao_emotion: 20, + xiaojiu_emotion: 20 +}; diff --git a/noname/library/extension-pack.js b/noname/library/extension-pack.js new file mode 100644 index 000000000..b712adc52 --- /dev/null +++ b/noname/library/extension-pack.js @@ -0,0 +1 @@ +export const extensionPack = {}; diff --git a/noname/library/skin.d.ts b/noname/library/skin.d.ts new file mode 100644 index 000000000..58e09182c --- /dev/null +++ b/noname/library/skin.d.ts @@ -0,0 +1,3 @@ +interface Skin extends Record { } + +export const skin: Skin; diff --git a/noname/library/skin.js b/noname/library/skin.js new file mode 100644 index 000000000..62b959fb8 --- /dev/null +++ b/noname/library/skin.js @@ -0,0 +1 @@ +export const skin = {}; diff --git a/noname/library/update-urls.d.ts b/noname/library/update-urls.d.ts new file mode 100644 index 000000000..57c2799ae --- /dev/null +++ b/noname/library/update-urls.d.ts @@ -0,0 +1,3 @@ +interface UpdateURLs extends Record { } + +export const updateURLs: UpdateURLs; diff --git a/noname/library/update-urls.js b/noname/library/update-urls.js new file mode 100644 index 000000000..e69287285 --- /dev/null +++ b/noname/library/update-urls.js @@ -0,0 +1,4 @@ +export const updateURLs = { + coding: "https://gitcode.net/sinat_33405273/noname/-/raw/", + github: "https://raw.githubusercontent.com/libccy/noname" +}; diff --git a/noname/status.js b/noname/status.js new file mode 100644 index 000000000..d91bb53d0 --- /dev/null +++ b/noname/status.js @@ -0,0 +1,34 @@ +import { Library as lib } from "../noname.js"; +import { aiStatus } from "./status/ai.js"; +import { cardTag } from "./status/card-tag.js"; +import { postReconnect } from "./status/post-reconnect.js"; + +export const status = { + paused: false, + paused2: false, + paused3: false, + over: false, + clicked: false, + auto: false, + event: lib.element.GameEvent.initialGameEvent(), + ai: aiStatus, + lastdragchange: [], + skillaudio: [], + dieClose: [], + dragline: [], + dying: [], + /** + * @type {import("./status/global-history.js").GlobalHistory[]} + */ + globalHistory: [{ + cardMove: [], + custom: [], + useCard: [], + changeHp: [], + everything: [] + }], + cardtag: cardTag, + renku: [], + prehidden_skills: [], + postReconnect: postReconnect +} diff --git a/noname/status/ai.d.ts b/noname/status/ai.d.ts new file mode 100644 index 000000000..2e5307f7b --- /dev/null +++ b/noname/status/ai.d.ts @@ -0,0 +1,7 @@ +import { Player } from "../library/element/player"; + +interface AIStatus extends Record { + customAttitude: ((from: Player, to: Player) => number)[]; +} + +export const aiStatus: AIStatus; diff --git a/noname/status/ai.js b/noname/status/ai.js new file mode 100644 index 000000000..1c105a077 --- /dev/null +++ b/noname/status/ai.js @@ -0,0 +1,3 @@ +export const aiStatus = { + customAttitude: [] +}; diff --git a/noname/status/card-tag.d.ts b/noname/status/card-tag.d.ts new file mode 100644 index 000000000..59b4fdce0 --- /dev/null +++ b/noname/status/card-tag.d.ts @@ -0,0 +1,3 @@ +interface CardTag extends Record { } + +export const cardTag: CardTag; diff --git a/noname/status/card-tag.js b/noname/status/card-tag.js new file mode 100644 index 000000000..6006ca59e --- /dev/null +++ b/noname/status/card-tag.js @@ -0,0 +1,7 @@ +export const cardTag = { + yingbian_zhuzhan: [], + yingbian_kongchao: [], + yingbian_fujia: [], + yingbian_canqu: [], + yingbian_force: [] +}; diff --git a/noname/status/global-history.d.ts b/noname/status/global-history.d.ts new file mode 100644 index 000000000..79347d87e --- /dev/null +++ b/noname/status/global-history.d.ts @@ -0,0 +1,9 @@ +import { GameEvent } from "../library/element/game-event"; + +export interface GlobalHistory { + cardMove: GameEvent[]; + custom: any[]; + useCard: GameEvent[]; + changeHp: GameEvent[]; + everything: GameEvent[]; +} diff --git a/noname/status/post-reconnect.js b/noname/status/post-reconnect.js new file mode 100644 index 000000000..81d5bfa86 --- /dev/null +++ b/noname/status/post-reconnect.js @@ -0,0 +1 @@ +export const postReconnect = {}; From c53db8f4f57061be56d802da9ade7b3a106c800c Mon Sep 17 00:00:00 2001 From: Tipx-L <138244655+Tipx-L@users.noreply.github.com> Date: Tue, 5 Dec 2023 06:23:52 -0800 Subject: [PATCH 076/302] Change the structure. --- noname.js | 4 - noname/ai.js | 6 +- noname/ai/basic.js | 88 ++++---- noname/game.js | 5 + noname/get.js | 104 +++++++++- noname/library.js | 61 +++++- noname/library/animate.js | 8 +- noname/library/animate/card.d.ts | 4 +- noname/library/animate/card.js | 2 +- noname/library/animate/skill.d.ts | 4 +- noname/library/animate/skill.js | 2 +- noname/library/announce.js | 101 ++++++++++ noname/library/channel.js | 98 +++++++++ noname/library/character-dialog-group.js | 17 ++ noname/library/config-menu.js | 5 + noname/library/config-menu/general.js | 6 + noname/library/config-menu/general/config.js | 7 + .../general/config/low-performance.js | 17 ++ .../general/config/mount-combine.js | 9 + noname/library/config.d.ts | 5 + noname/library/config.js | 1 + noname/library/element.js | 4 +- noname/library/element/game-event.js | 13 +- noname/library/element/v-card.js | 1 + noname/library/handler-option.d.ts | 3 + noname/library/hook-map.d.ts | 3 + noname/library/hook-map.js | 1 + noname/library/hook.js | 5 + noname/library/hook/global-skill.js | 1 + noname/library/hooks.js | 190 ++++++++++++++++++ noname/library/imported.js | 1 + noname/library/pinyins.js | 5 + noname/library/pinyins/metadata.js | 10 + noname/library/pinyins/metadata/non-medial.js | 5 + noname/library/pinyins/metadata/rhyme.js | 16 ++ noname/library/promise-resolve.d.ts | 1 + noname/library/stratagem-buff.js | 72 +++++++ noname/library/yingbian.js | 42 ++++ noname/library/yingbian/condition.js | 132 ++++++++++++ noname/status.js | 6 +- noname/ui.js | 21 ++ noname/ui/click.js | 5 + noname/ui/selected.js | 5 + 43 files changed, 1025 insertions(+), 71 deletions(-) create mode 100644 noname/game.js create mode 100644 noname/library/announce.js create mode 100644 noname/library/channel.js create mode 100644 noname/library/character-dialog-group.js create mode 100644 noname/library/config-menu.js create mode 100644 noname/library/config-menu/general.js create mode 100644 noname/library/config-menu/general/config.js create mode 100644 noname/library/config-menu/general/config/low-performance.js create mode 100644 noname/library/config-menu/general/config/mount-combine.js create mode 100644 noname/library/config.d.ts create mode 100644 noname/library/config.js create mode 100644 noname/library/element/v-card.js create mode 100644 noname/library/handler-option.d.ts create mode 100644 noname/library/hook-map.d.ts create mode 100644 noname/library/hook-map.js create mode 100644 noname/library/hook.js create mode 100644 noname/library/hook/global-skill.js create mode 100644 noname/library/hooks.js create mode 100644 noname/library/imported.js create mode 100644 noname/library/pinyins.js create mode 100644 noname/library/pinyins/metadata.js create mode 100644 noname/library/pinyins/metadata/non-medial.js create mode 100644 noname/library/pinyins/metadata/rhyme.js create mode 100644 noname/library/promise-resolve.d.ts create mode 100644 noname/library/stratagem-buff.js create mode 100644 noname/library/yingbian.js create mode 100644 noname/library/yingbian/condition.js create mode 100644 noname/ui.js create mode 100644 noname/ui/click.js create mode 100644 noname/ui/selected.js diff --git a/noname.js b/noname.js index 517b9e043..e69de29bb 100644 --- a/noname.js +++ b/noname.js @@ -1,4 +0,0 @@ -export * from "./noname/ai.js"; -export * from "./noname/status.js"; -export * from "./noname/library.js"; -export * from "./noname/get.js"; diff --git a/noname/ai.js b/noname/ai.js index 67ad92185..69a980d9a 100644 --- a/noname/ai.js +++ b/noname/ai.js @@ -1,7 +1,7 @@ -import { Get } from "../noname.js"; -import { BasicAI } from "./ai/basic.js"; +import { Basic } from "./ai/basic.js"; +import { Get } from "./get.js"; export const ai = { - basic: BasicAI, + basic: Basic, get: Get }; diff --git a/noname/ai/basic.js b/noname/ai/basic.js index ac6e2569e..739447fb1 100644 --- a/noname/ai/basic.js +++ b/noname/ai/basic.js @@ -1,24 +1,32 @@ -import { status as _status } from "../../noname.js"; +import { Game } from "../game.js"; +import { Get } from "../get.js"; +import { status } from "../status.js"; +import { Click } from "../ui/click.js"; +import { selected } from "../ui/selected.js"; + +export class Basic { + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } -export class BasicAI { static chooseButton(check) { - var event = _status.event; + var event = status.event; var i, j, range, buttons, buttons2; var ok = false, forced = event.forced; var iwhile = 100; while (iwhile--) { - range = get.select(event.selectButton); - if (ui.selected.buttons.length >= range[0]) { + range = Get.select(event.selectButton); + if (selected.buttons.length >= range[0]) { ok = true; } if (range[1] <= -1) { j = 0; - for (i = 0; i < ui.selected.buttons.length; i++) { - j += check(ui.selected.buttons[i]); + for (i = 0; i < selected.buttons.length; i++) { + j += check(selected.buttons[i]); } return (j > 0); } - buttons = get.selectableButtons(); + buttons = Get.selectableButtons(); if (buttons.length == 0) { return ok; } @@ -41,40 +49,41 @@ export class BasicAI { } } buttons[ix].classList.add('selected'); - ui.selected.buttons.add(buttons[ix]); - game.check(); - if (ui.selected.buttons.length >= range[0]) { + selected.buttons.add(buttons[ix]); + Game.check(); + if (selected.buttons.length >= range[0]) { ok = true; } - if (ui.selected.buttons.length == range[1]) { + if (selected.buttons.length == range[1]) { return true; } } } + static chooseCard(check) { - var event = _status.event; + var event = status.event; if (event.filterCard == undefined) return (check() > 0); var i, j, range, cards, cards2, skills, check, effect; var ok = false, forced = event.forced; var iwhile = 100; while (iwhile--) { - range = get.select(event.selectCard); - if (ui.selected.cards.length >= range[0]) { + range = Get.select(event.selectCard); + if (selected.cards.length >= range[0]) { ok = true; } if (range[1] <= -1) { - if (ui.selected.cards.length == 0) return true; + if (selected.cards.length == 0) return true; j = 0; - for (i = 0; i < ui.selected.cards.length; i++) { - effect = check(ui.selected.cards[i]); + for (i = 0; i < selected.cards.length; i++) { + effect = check(selected.cards[i]); if (effect < 0) j -= Math.sqrt(-effect); else j += Math.sqrt(effect); } return (j > 0); } - cards = get.selectableCards(); - if (!_status.event.player._noSkill) { - cards = cards.concat(get.skills()); + cards = Get.selectableCards(); + if (!status.event.player._noSkill) { + cards = cards.concat(Get.skills()); } if (cards.length == 0) { return ok; @@ -98,11 +107,11 @@ export class BasicAI { } } if (typeof cards[ix] == 'string') { - ui.click.skill(cards[ix]); - var info = get.info(event.skill); + Click.skill(cards[ix]); + var info = Get.info(event.skill); if (info.filterCard) { - check = info.check || get.unuseful2; - return (ai.basic.chooseCard(check)); + check = info.check || Get.unuseful2; + return (this.chooseCard(check)); } else { return true; @@ -110,32 +119,33 @@ export class BasicAI { } else { cards[ix].classList.add('selected'); - ui.selected.cards.add(cards[ix]); - game.check(); - if (ui.selected.cards.length >= range[0]) { + selected.cards.add(cards[ix]); + Game.check(); + if (selected.cards.length >= range[0]) { ok = true; } - if (ui.selected.cards.length == range[1]) { + if (selected.cards.length == range[1]) { return true; } } } } + static chooseTarget(check) { - var event = _status.event; + var event = status.event; if (event.filterTarget == undefined) return (check() > 0); var i, j, range, targets, targets2, effect; var ok = false, forced = event.forced; var iwhile = 100; while (iwhile--) { - range = get.select(event.selectTarget); - if (ui.selected.targets.length >= range[0]) { + range = Get.select(event.selectTarget); + if (selected.targets.length >= range[0]) { ok = true; } if (range[1] <= -1) { j = 0; - for (i = 0; i < ui.selected.targets.length; i++) { - effect = check(ui.selected.targets[i]); + for (i = 0; i < selected.targets.length; i++) { + effect = check(selected.targets[i]); if (effect < 0) j -= Math.sqrt(-effect); else j += Math.sqrt(effect); } @@ -144,7 +154,7 @@ export class BasicAI { else if (range[1] == 0) { return check() > 0 } - targets = get.selectableTargets(); + targets = Get.selectableTargets(); if (targets.length == 0) { return range[0] == 0 || ok; } @@ -167,12 +177,12 @@ export class BasicAI { } } targets[ix].classList.add('selected'); - ui.selected.targets.add(targets[ix]); - game.check(); - if (ui.selected.targets.length >= range[0]) { + selected.targets.add(targets[ix]); + Game.check(); + if (selected.targets.length >= range[0]) { ok = true; } - if (ui.selected.targets.length == range[1]) { + if (selected.targets.length == range[1]) { return true; } } diff --git a/noname/game.js b/noname/game.js new file mode 100644 index 000000000..b90a68079 --- /dev/null +++ b/noname/game.js @@ -0,0 +1,5 @@ +export class Game { + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } +} diff --git a/noname/get.js b/noname/get.js index a4645e9dd..e7d543a8b 100644 --- a/noname/get.js +++ b/noname/get.js @@ -1,6 +1,10 @@ -import { Library as lib, status as _status } from "../noname.js"; +import { status as _status } from "./status"; export class Get { + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } + /** * @template T * @overload @@ -14,4 +18,102 @@ export class Get { static event(key) { return key ? _status.event[key] : _status.event; } + + /** + * @returns {string} + */ + static translation(str, arg) { + if (str && typeof str == "object" && (str.name || str._tempTranslate)) { + if (str._tempTranslate) return str._tempTranslate; + var str2; + if (arg == "viewAs" && str.viewAs) { + str2 = get.translation(str.viewAs); + } + else { + str2 = get.translation(str.name); + } + if (str2 == "杀") { + str2 = ""; + if (typeof str.nature == "string") { + let natures = str.nature.split(lib.natureSeparator).sort(lib.sort.nature); + for (let nature of natures) { + str2 += lib.translate["nature_" + nature] || lib.translate[nature] || ""; + } + } + str2 += "杀"; + } + if (get.itemtype(str) == "card" || str.isCard) { + if (_status.cardtag && str.cardid) { + var tagstr = ""; + for (var i in _status.cardtag) { + if (_status.cardtag[i].contains(str.cardid)) { + tagstr += lib.translate[i + "_tag"]; + } + } + if (tagstr) { + str2 += "·" + tagstr; + } + } + if (str.suit && str.number || str.isCard) { + var cardnum = get.number(str, false) || ""; + if ([1, 11, 12, 13].contains(cardnum)) { + cardnum = { "1": "A", "11": "J", "12": "Q", "13": "K" }[cardnum] + } + if (arg == "viewAs" && str.viewAs != str.name && str.viewAs) { + str2 += "(" + get.translation(str) + ")"; + } + else { + str2 += "【" + get.translation(get.suit(str, false)) + cardnum + "】"; + } + } + } + return str2; + } + if (Array.isArray(str)) { + var str2 = get.translation(str[0], arg); + for (var i = 1; i < str.length; i++) { + str2 += "、" + get.translation(str[i], arg); + } + return str2; + } + if (get.itemtype(str) == "natures") { + let natures = str.split(lib.natureSeparator).sort(lib.sort.nature); + var str2 = ""; + for (var nature of natures) { + str2 += lib.translate["nature_" + nature] || lib.translate[nature] || ""; + } + return str2; + } + if (arg == "skill") { + if (lib.translate[str + "_ab"]) return lib.translate[str + "_ab"]; + if (lib.translate[str]) return lib.translate[str].slice(0, 2); + return str; + } + else if (arg == "info") { + if (lib.translate[str + "_info"]) return lib.translate[str + "_info"]; + var str2 = str.slice(0, str.length - 1); + if (lib.translate[str2 + "_info"]) return lib.translate[str2 + "_info"]; + if (str.lastIndexOf("_") > 0) { + str2 = str.slice(0, str.lastIndexOf("_")); + if (lib.translate[str2 + "_info"]) return lib.translate[str2 + "_info"]; + } + str2 = str.slice(0, str.length - 2); + if (lib.translate[str2 + "_info"]) return lib.translate[str2 + "_info"]; + if (lib.skill[str] && lib.skill[str].prompt) return lib.skill[str].prompt; + } + if (lib.translate[str]) { + return lib.translate[str]; + } + if (typeof str == "string") { + if (lib.translate["nature_" + str]) return lib.translate["nature_" + str]; + return str; + } + if (typeof str == "number" || typeof str == "boolean") { + return str.toString(); + } + if (str && str.toString) { + return str.toString(); + } + return ""; + } } diff --git a/noname/library.js b/noname/library.js index 5776826ec..b92d40f92 100644 --- a/noname/library.js +++ b/noname/library.js @@ -1,20 +1,31 @@ import { animate } from "./library/animate.js"; +import { announce } from "./library/announce.js"; import { cardPack } from "./library/card-pack.js"; import { cardType } from "./library/card-type.js"; +import { Channel } from "./library/channel.js"; +import { CharacterDialogGroup } from "./library/character-dialog-group.js"; import { characterFilter } from "./library/character-filter.js"; import { characterIntro } from "./library/character-intro.js"; import { characterPack } from "./library/character-pack.js"; import { characterReplace } from "./library/character-replace.js"; import { characterSort } from "./library/character-sort.js"; import { characterTitle } from "./library/character-title.js"; +import { configMenu } from "./library/config-menu.js"; import { dynamicTranslate } from "./library/dynamic-translate.js"; import { element } from "./library/element.js"; import { emotionList } from "./library/emotion-list.js"; import { extensionPack } from "./library/extension-pack.js"; +import { hookMap } from "./library/hook-map.js"; +import { hook } from "./library/hook.js"; +import { hooks } from "./library/hooks.js"; +import { imported } from "./library/imported.js"; +import { pinyins } from "./library/pinyins.js"; import { skin } from "./library/skin.js"; +import { stratagemBuff } from "./library/stratagem-buff.js"; import { updateURLs } from "./library/update-urls.js"; +import { yingbian } from "./library/yingbian.js"; -const nonameInitialized = localStorage.getItem('noname_inited'); +const nonameInitialized = localStorage.getItem("noname_inited"); export class Library { static configprefix = "noname_0.9_"; @@ -23,9 +34,9 @@ export class Library { static updateURL = updateURLs.github; static mirrorURL = updateURLs.coding; static hallURL = "47.99.105.222"; - static assetURL = typeof nonameInitialized != 'string' || nonameInitialized == 'nodejs' ? '' : nonameInitialized; + static assetURL = typeof nonameInitialized != "string" || nonameInitialized == "nodejs" ? "" : nonameInitialized; static userAgent = navigator.userAgent.toLowerCase(); - static compatibleEdition = Boolean(typeof nonameInitialized == 'string' && nonameInitialized.match(/\/(?:com\.widget|yuri\.nakamura)\.noname\//)); + static compatibleEdition = Boolean(typeof nonameInitialized == "string" && nonameInitialized.match(/\/(?:com\.widget|yuri\.nakamura)\.noname\//)); static changeLog = []; static updates = []; static canvasUpdates = []; @@ -61,9 +72,53 @@ export class Library { static extensions = []; static extensionPack = extensionPack; static cardType = cardType; + static hook = hook; + static hooks = hooks; static element = element; + static Channel = Channel; + /** + * @todo Waiting for [Rintim](https://github.com/Rintim)’s pull request. + */ + static announce = announce; + /** + * @type {Map} + */ + static objectURL = new Map(); + static hookmap = hookMap; + static imported = imported; + static layoutfixed = ["chess", "tafang", "stone"]; + static pinyins = pinyins; + static yingbian = yingbian; + static stratagemBuff = stratagemBuff; + /** + * The actual card name + * + * 实际的卡牌名称 + */ + static actualCardName = new Map([ + ["挟令", "挟天子以令诸侯"], + ["霹雳投石车", "霹雳车"] + ]) + static characterDialogGroup = CharacterDialogGroup; + static configMenu = configMenu; constructor() { throw new TypeError(`${new.target.name} is not a constructor`); } + + static listenEnd(node) { + if (!node._listeningEnd) { + node._listeningEnd = true; + node.listenTransition(function () { + delete node._listeningEnd; + if (node._onEndMoveDelete) { + node.moveDelete(node._onEndMoveDelete); + } + else if (node._onEndDelete) { + node.delete(); + } + node._transitionEnded = true; + }); + } + } } diff --git a/noname/library/animate.js b/noname/library/animate.js index cace6e142..7da77889e 100644 --- a/noname/library/animate.js +++ b/noname/library/animate.js @@ -1,7 +1,7 @@ -import { animateCard } from "./animate/card.js"; -import { animateSkill } from "./animate/skill.js"; +import { card } from "./animate/card.js"; +import { skill } from "./animate/skill.js"; export const animate = { - skill: animateSkill, - card: animateCard + skill, + card }; diff --git a/noname/library/animate/card.d.ts b/noname/library/animate/card.d.ts index 5534c58dd..35193ec9b 100644 --- a/noname/library/animate/card.d.ts +++ b/noname/library/animate/card.d.ts @@ -1,3 +1,3 @@ -interface AnimateCard extends Record { } +interface Card extends Record { } -export const animateCard: AnimateCard; +export const card: Card; diff --git a/noname/library/animate/card.js b/noname/library/animate/card.js index 57b8ce511..9dd692f57 100644 --- a/noname/library/animate/card.js +++ b/noname/library/animate/card.js @@ -1 +1 @@ -export const animateCard = {}; +export const card = {}; diff --git a/noname/library/animate/skill.d.ts b/noname/library/animate/skill.d.ts index d4bd33ef5..4d324ed95 100644 --- a/noname/library/animate/skill.d.ts +++ b/noname/library/animate/skill.d.ts @@ -1,3 +1,3 @@ -interface AnimateSkill extends Record { } +interface Skill extends Record { } -export const animateSkill: AnimateSkill; +export const skill: Skill; diff --git a/noname/library/animate/skill.js b/noname/library/animate/skill.js index 316153f39..b5128ac48 100644 --- a/noname/library/animate/skill.js +++ b/noname/library/animate/skill.js @@ -1 +1 @@ -export const animateSkill = {}; +export const skill = {}; diff --git a/noname/library/announce.js b/noname/library/announce.js new file mode 100644 index 000000000..1e1c7c091 --- /dev/null +++ b/noname/library/announce.js @@ -0,0 +1,101 @@ + +/** + * **无名杀消息推送库** + * + * 通过`EventTarget`机制,实现消息推送和接收的解耦, + * 从而使消息接收方无需依赖发布方,发布方也无需考虑接收方 + * + * > `lib.announce`不是`actor`模型,若不存在订阅者,则消息发送将无意义 + * + * @example + * // 甲扩展(如《千幻聆音》)在角色皮肤切换后,调用: + * lib.announce.publish("skinChange", { + * player, + * playerName: "zhangfei", + * originSkin: "image/xxx.jpg", + * currentSkin: "image/yyy.jpg" + * }); + * + * // 乙扩展监听此`skinChange`事件,并修改自己扩展相关界面的图片: + * const method = lib.announce.subscribe("skinChange", (e) => { + * div.setBackgroundImage(e.currentSkin); + * }); + * + * // 若此时乙扩展不想继续订阅`skinChange`事件,可以通过`unsubscribe`解除订阅 + * lib.announce.unsubscribe("skinChange", method); + */ +export const announce = { + _announce: document.createElement("Announce"), + /** + * @type {Map<(values: T) => void, Map void>>} + */ + _announce_cache: new Map(), + /** + * 推送任意数据给所有监听了指定事件的订阅者,并返回给定的数据 + * + * 若不存在订阅指定事件的订阅者,则推送的数据将无意义 + * + * @template T + * @param {string} name - 要推送事件的名称 + * @param {T} values - 要推送的数据 + * @returns {T} + */ + publish(name, values) { + if (this._announce) this._announce.dispatchEvent(new CustomEvent(name, { + detail: values + })); + return values; + }, + /** + * 订阅给定名字的事件,并返回给定的函数 + * + * 在事件触发时执行给定的函数 + * + * 给定的函数将被存储至当前实例中,用于取消订阅时获取 + * + * @template T + * @param {string} name - 要订阅事件的名称 + * @param {(values: T) => void} method - 事件触发时执行的函数 + * @returns {(values: T) => void} + */ + subscribe(name, method) { + if (this._announce && this._announce_cache) { + let subscribeFunction; + if (this._announce_cache.has(method)) { + let records = this._announce_cache.get(method); + subscribeFunction = records.get("Listener"); + records.get("EventTargets").add(name); + } + else { + subscribeFunction = event => method(event.detail); + let records = new Map(); + records.set("Listener", subscribeFunction); + records.set("EventTargets", [name]); + this._announce_cache.set(method, records); + } + this._announce.addEventListener(name, subscribeFunction); + } + return method; + }, + /** + * 取消指定事件某一函数的订阅,并返回该函数 + * + * 给定的函数将不再于事件触发时执行,其余同事件需触发的函数不受限制 + * + * @template T + * @param {string} name - 要取消订阅事件的名称 + * @param {(values: T) => void} method - 订阅指定事件的函数 + * @returns {(values: T) => void} + */ + unsubscribe(name, method) { + if (this._announce && this._announce_cache && this._announce_cache.has(method)) { + let records = this._announce_cache.get(method); + const listener = records.get("Listener"); + let eventTargets = records.get("EventTargets"); + eventTargets.remove(name); + if (eventTargets.length <= 0) this._announce_cache.remove(method); + this._announce.removeEventListener(name, listener); + } + return method; + } +}; diff --git a/noname/library/channel.js b/noname/library/channel.js new file mode 100644 index 000000000..3927f87ed --- /dev/null +++ b/noname/library/channel.js @@ -0,0 +1,98 @@ +/** + * **无名杀频道推送机制** + * + * 鉴于`Javascript`的特性及自身对所需功能的思考,这是一个参考`Golang`的`channel`设计的、完全和`go channel`不一样的异步消息传递对象 + * + * 当且仅当接收方和发送方均存在时进行消息传递,完全保证信息传递的单一性(发送方/接收方一旦确定则无法更改)和准确性(发送方必然将消息发送给接收方) + * + * 若存在发送方/接收方时调用`send`/`receive`,将报错 + * + * 若需要异步/不报错发送信息,请等待`lib.actor` + * + * @template T + * @example + * // 创建一个频道 + * const channel = new lib.channel(); + * + * // 从某个角落接收channel发出的消息,若无消息则等待 + * const message = await channel.receive(); + * + * // 从某个角落向channel发消息,若无消息接收则等待 + * await channel.send(item); + */ +export class Channel { + constructor() { + /** + * @type {"active" | "receiving" | "sending"} + */ + this.status = "active"; + + /** + * @type {import("./promise-resolve").PromiseResolve | [T, import("./promise-resolve").PromiseResolve] | null} + */ + this._buffer = null; + } + + /** + * 向该频道发送消息,在消息未被接受前将等待 + * + * @param {T} value - 要发送的消息 + * @returns {Promise} + */ + send(value) { + return new Promise((resolve, reject) => { + switch (this.status) { + case "sending": + // TODO: handle the error. + reject(new Error()); + break; + case "receiving": { + /** + * @type {import("./promise-resolve").PromiseResolve} + */ + const buffer = this._buffer; + this._buffer = null; + buffer(value); + this.status = "active"; + resolve(); + break; + } + case "active": + this.status = "sending"; + this._buffer = [value, resolve]; + break; + } + }); + } + + /** + * 接收频道所发送的消息,若无消息发送则等待 + * + * @returns {Promise} 接收到的消息 + */ + receive() { + return new Promise((resolve, reject) => { + switch (this.status) { + case "receiving": + // TODO: handle the error. + reject(new Error()); + break; + case "sending": { + /** + * @type {[T, import("./promise-resolve").PromiseResolve]} + */ + const buffer = this._buffer; + this._buffer = null; + resolve(buffer[0]); + this.status = "active"; + buffer[1](); + break; + } + case "active": + this.status = "receiving"; + this._buffer = resolve; + break; + } + }); + } +} diff --git a/noname/library/character-dialog-group.js b/noname/library/character-dialog-group.js new file mode 100644 index 000000000..f3d9fa11a --- /dev/null +++ b/noname/library/character-dialog-group.js @@ -0,0 +1,17 @@ +import { Get } from "../get.js"; +import { config } from "./config.js"; + +export class CharacterDialogGroup { + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } + + static 收藏(name, capt) { + return config.favouriteCharacter.includes(name) ? capt : null; + } + + static 最近(name, capt) { + var list = Get.config("recentCharacter") || []; + return list.includes(name) ? capt : null; + } +} diff --git a/noname/library/config-menu.js b/noname/library/config-menu.js new file mode 100644 index 000000000..13f8e0057 --- /dev/null +++ b/noname/library/config-menu.js @@ -0,0 +1,5 @@ +import { general } from "./config-menu/general.js"; + +export const configMenu = { + general +}; diff --git a/noname/library/config-menu/general.js b/noname/library/config-menu/general.js new file mode 100644 index 000000000..655aaca25 --- /dev/null +++ b/noname/library/config-menu/general.js @@ -0,0 +1,6 @@ +import { config } from "./general/config.js"; + +export const general = { + name: "通用", + config: config +}; diff --git a/noname/library/config-menu/general/config.js b/noname/library/config-menu/general/config.js new file mode 100644 index 000000000..d2731c967 --- /dev/null +++ b/noname/library/config-menu/general/config.js @@ -0,0 +1,7 @@ +import { lowPerformance } from "./config/low-performance.js"; +import { mountCombine } from "./config/mount-combine.js"; + +export const config = { + mount_combine: mountCombine, + low_performance: lowPerformance +}; diff --git a/noname/library/config-menu/general/config/low-performance.js b/noname/library/config-menu/general/config/low-performance.js new file mode 100644 index 000000000..45b9b857f --- /dev/null +++ b/noname/library/config-menu/general/config/low-performance.js @@ -0,0 +1,17 @@ +import { Game } from "../../../../game.js"; +import { UI } from "../../../../ui.js"; + +export const lowPerformance = { + name: "流畅模式", + init: false, + intro: "减少部分游戏特效,提高游戏速度", + onclick(bool) { + Game.saveConfig("low_performance", bool); + if (bool) { + UI.window.classList.add("low_performance"); + } + else { + UI.window.classList.remove("low_performance"); + } + } +}; diff --git a/noname/library/config-menu/general/config/mount-combine.js b/noname/library/config-menu/general/config/mount-combine.js new file mode 100644 index 000000000..aa285adef --- /dev/null +++ b/noname/library/config-menu/general/config/mount-combine.js @@ -0,0 +1,9 @@ +const listItem = document.createElement("li"); +listItem.textContent = "将进攻坐骑栏和防御坐骑栏合并为同一个位置(重启后生效)。"; + +export const mountCombine = { + name: "合并坐骑栏", + init: false, + intro: listItem.outerHTML, + restart: true +}; diff --git a/noname/library/config.d.ts b/noname/library/config.d.ts new file mode 100644 index 000000000..5a3b8cd63 --- /dev/null +++ b/noname/library/config.d.ts @@ -0,0 +1,5 @@ +interface Config extends Record { + favouriteCharacter: string[]; +} + +export const config: Config; diff --git a/noname/library/config.js b/noname/library/config.js new file mode 100644 index 000000000..c4470d209 --- /dev/null +++ b/noname/library/config.js @@ -0,0 +1 @@ +export const config = {}; diff --git a/noname/library/element.js b/noname/library/element.js index f14913cbf..16f281fd8 100644 --- a/noname/library/element.js +++ b/noname/library/element.js @@ -2,6 +2,6 @@ import { GameEvent } from "./element/game-event.js"; import { Player } from "./element/player.js"; export const element = { - Player: Player, - GameEvent: GameEvent + Player, + GameEvent }; diff --git a/noname/library/element/game-event.js b/noname/library/element/game-event.js index e13272baa..40733c345 100644 --- a/noname/library/element/game-event.js +++ b/noname/library/element/game-event.js @@ -1,4 +1,5 @@ -import { Get as get } from "../../../noname.js"; +import { Game } from "../../game.js"; +import { Get } from "../../get.js"; export class GameEvent { /** @@ -8,24 +9,24 @@ export class GameEvent { constructor(name, trigger) { if (typeof name == 'string') { this.name = name; - const gameEvent = get.event(); + const gameEvent = Get.event(); if (gameEvent) { const type = `onNext${name[0].toUpperCase()}${name.slice(1)}`; if (gameEvent.hasHandler(type)) this.pushHandler(...gameEvent.getHandler(type)); } - game.globalEventHandlers.addHandlerToEvent(this); + Game.globalEventHandlers.addHandlerToEvent(this); } this.step = 0; this.finished = false; /** - * @type {GameEvent[]} + * @type {this[]} */ this.next = []; /** - * @type {GameEvent[]} + * @type {this[]} */ this.after = []; this.custom = { @@ -36,7 +37,7 @@ export class GameEvent { this._notrigger = []; this._result = {}; this._set = []; - if (trigger !== false && !game.online) this._triggered = 0; + if (trigger !== false && !Game.online) this._triggered = 0; } static initialGameEvent() { diff --git a/noname/library/element/v-card.js b/noname/library/element/v-card.js new file mode 100644 index 000000000..db1e43907 --- /dev/null +++ b/noname/library/element/v-card.js @@ -0,0 +1 @@ +export class VCard { } diff --git a/noname/library/handler-option.d.ts b/noname/library/handler-option.d.ts new file mode 100644 index 000000000..1eafddc46 --- /dev/null +++ b/noname/library/handler-option.d.ts @@ -0,0 +1,3 @@ +export interface HandlerOption extends Record { + state: "begin" | "end"; +} diff --git a/noname/library/hook-map.d.ts b/noname/library/hook-map.d.ts new file mode 100644 index 000000000..b1f9045ae --- /dev/null +++ b/noname/library/hook-map.d.ts @@ -0,0 +1,3 @@ +interface HookMap extends Record { } + +export const hookMap: HookMap; diff --git a/noname/library/hook-map.js b/noname/library/hook-map.js new file mode 100644 index 000000000..e6b7bd544 --- /dev/null +++ b/noname/library/hook-map.js @@ -0,0 +1 @@ +export const hookMap = {}; diff --git a/noname/library/hook.js b/noname/library/hook.js new file mode 100644 index 000000000..66f9be85b --- /dev/null +++ b/noname/library/hook.js @@ -0,0 +1,5 @@ +import { globalSkill } from "./hook/global-skill.js"; + +export const hook = { + globalskill: globalSkill +}; diff --git a/noname/library/hook/global-skill.js b/noname/library/hook/global-skill.js new file mode 100644 index 000000000..ce47b7528 --- /dev/null +++ b/noname/library/hook/global-skill.js @@ -0,0 +1 @@ +export const globalSkill = {}; diff --git a/noname/library/hooks.js b/noname/library/hooks.js new file mode 100644 index 000000000..4fb7176f1 --- /dev/null +++ b/noname/library/hooks.js @@ -0,0 +1,190 @@ +import { Game } from "../game.js"; +import { Library } from "../library.js"; + +/** + * 函数钩子 + */ +export const hooks = { + /** + * 本体势力的颜色 + */ + addGroup: [(id, _short, _name, config) => { + if ("color" in config && config.color != null) { + let color1, color2, color3, color4; + if (typeof config.color == "string" && /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(config.color)) { + let c1 = parseInt(`0x${config.color.slice(1, 3)}`); + let c2 = parseInt(`0x${config.color.slice(3, 5)}`); + let c3 = parseInt(`0x${config.color.slice(5, 7)}`); + color1 = color2 = color3 = color4 = [c1, c2, c3, 1]; + } + else if (Array.isArray(config.color) && config.color.length == 4) { + if (config.color.every(item => Array.isArray(item))) { + color1 = config.color[0]; + color2 = config.color[1]; + color3 = config.color[2]; + color4 = config.color[3]; + } + else color1 = color2 = color3 = color4 = config.color; + } + if (color1 && color2 && color3 && color4) { + const cs = Library.linq.cselector; + const g1 = cs.group( + cs.of( + cs.class("player", "identity"), + cs.isAttr("data-color", `"${id}"`) + ), + cs.of( + "div", + cs.isAttr("data-nature", `"${id}"`) + ), + cs.of( + "span", + cs.isAttr("data-nature", `"${id}"`) + ) + ); + const g2 = cs.group( + cs.of( + "div", + cs.isAttr("data-nature", `"${id}m"`) + ), + cs.of( + "span", + cs.isAttr("data-nature", `"${id}m"`) + ) + ); + const g3 = cs.group( + cs.of( + "div", + cs.isAttr("data-nature", `"${id}mm"`) + ), + cs.of( + "span", + cs.isAttr("data-nature", `"${id}mm"`) + ) + ); + let result = {}; + result[g1] = { + textShadow: cs.group( + "black 0 0 1px", + `rgba(${color1.join()}) 0 0 2px`, + `rgba(${color2.join()}) 0 0 5px`, + `rgba(${color3.join()}) 0 0 10px`, + `rgba(${color4.join()}) 0 0 10px` + ) + }; + result[g2] = { + textShadow: cs.group( + "black 0 0 1px", + `rgba(${color1.join()}) 0 0 2px`, + `rgba(${color2.join()}) 0 0 5px`, + `rgba(${color3.join()}) 0 0 5px`, + `rgba(${color4.join()}) 0 0 5px`, + "black 0 0 1px" + ) + }; + result[g3] = { + textShadow: cs.group( + "black 0 0 1px", + `rgba(${color1.join()}) 0 0 2px`, + `rgba(${color2.join()}) 0 0 2px`, + `rgba(${color3.join()}) 0 0 2px`, + `rgba(${color4.join()}) 0 0 2px`, + "black 0 0 1px" + ) + }; + Game.dynamicStyle.addObject(result); + Library.groupnature[id] = id; + } + } + if (typeof config.image == "string") Object.defineProperty(Library.card, `group_${id}`, { + configurable: true, + enumerable: false, + writable: true, + value: { + fullskin: true, + image: config.image + } + }); + }], + /** + * 增加新属性杀 + */ + addNature: [(nature, _translation, config) => { + if (typeof config != "object") config = {}; + let linked = config.linked, order = config.order, background = config.background, lineColor = config.lineColor; + if (typeof linked != "boolean") linked = true; + if (typeof order != "number") order = 0; + if (typeof background != "string") background = ""; + if (!Array.isArray(lineColor) || lineColor.length != 3) lineColor = []; + else if (background.startsWith("ext:")) { + background = background.replace(/^ext:/, "extension/"); + } + if (linked) Library.linked.add(nature); + if (lineColor.length) Library.lineColor.set(nature, lineColor); + Library.nature.set(nature, order); + if (background.length > 0) Library.natureBg.set(nature, background); + if (config.audio) { + for (let key in config.audio) { + if (!Library.natureAudio[key]) { + Library.natureAudio[key] = config.audio[key]; + } else { + for (let key2 in config.audio[key]) { + Library.natureAudio[key][key2] = config.audio[key][key2]; + } + } + } + } + + let color1, color2; + if (typeof config.color == "string" && /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(config.color)) { + let c1 = parseInt(`0x${item[1].slice(1, 3)}`); + let c2 = parseInt(`0x${item[1].slice(3, 5)}`); + let c3 = parseInt(`0x${item[1].slice(5, 7)}`); + color1 = color2 = [c1, c2, c3, 1]; + } + else if (Array.isArray(config.color) && config.color.length >= 2 && config.color.length <= 4) { + if (config.color.every(item => Array.isArray(item))) { + color1 = config.color[0]; + color2 = config.color[1]; + } + else { + let color = config.color.slice(); + if (color.length == 3) color.push(1); + color1 = color2 = color; + } + } + if (color1 && color2) { + const cs = Library.linq.cselector; + const g1 = cs.group( + cs.of( + cs.class("card", "fullskin", `${nature}`), + ">", + cs.class("name") + ) + ); + let result = {}; + result[g1] = { + color: `rgba(${color1.join()})`, + border: cs.merge( + "1px", + "solid", + `rgba(${color2.join()})` + ), + }; + Game.dynamicStyle.addObject(result); + + const g2 = cs.group( + cs.of( + cs.class("tempname", `${nature}`), + ":not([data-nature])>", + cs.class("span") + ) + ) + let result2 = {}; + result2[g2] = { + color: `rgba(${color1.join()})`, + }; + Game.dynamicStyle.addObject(result2); + } + }] +}; diff --git a/noname/library/imported.js b/noname/library/imported.js new file mode 100644 index 000000000..9e11b3747 --- /dev/null +++ b/noname/library/imported.js @@ -0,0 +1 @@ +export const imported = {}; diff --git a/noname/library/pinyins.js b/noname/library/pinyins.js new file mode 100644 index 000000000..942ed99d4 --- /dev/null +++ b/noname/library/pinyins.js @@ -0,0 +1,5 @@ +import { pinyinsMetadata } from "./pinyins/metadata.js"; + +export const pinyins = { + _metadata: pinyinsMetadata +}; diff --git a/noname/library/pinyins/metadata.js b/noname/library/pinyins/metadata.js new file mode 100644 index 000000000..b47c726f1 --- /dev/null +++ b/noname/library/pinyins/metadata.js @@ -0,0 +1,10 @@ +import { nonMedial } from "./metadata/non-medial.js"; +import { rhyme } from "./metadata/rhyme.js"; + +export const pinyinsMetadata = { + shengmu: ["zh", "ch", "sh", "b", "p", "m", "f", "d", "t", "l", "n", "g", "k", "h", "j", "q", "x", "r", "z", "c", "s", "y", "w"], + special_shengmu: ["j", "q", "x", "y"], + feijiemu: nonMedial, + zhengtirendu: ["zhi", "chi", "shi", "ri", "zi", "ci", "si"], + yunjiao: rhyme +}; diff --git a/noname/library/pinyins/metadata/non-medial.js b/noname/library/pinyins/metadata/non-medial.js new file mode 100644 index 000000000..c40cfa75d --- /dev/null +++ b/noname/library/pinyins/metadata/non-medial.js @@ -0,0 +1,5 @@ +export const nonMedial = { + i: ["ing", "iu", "ie", "in"], + u: ["ui", "un"], + ü: ["üe", "ün"], +}; diff --git a/noname/library/pinyins/metadata/rhyme.js b/noname/library/pinyins/metadata/rhyme.js new file mode 100644 index 000000000..f6215f3a3 --- /dev/null +++ b/noname/library/pinyins/metadata/rhyme.js @@ -0,0 +1,16 @@ +export const rhyme = { + 一麻: ["a", "ia", "ua"], + 二波: ["o", "e", "uo"], + 三皆: ["ie", "üe"], + 四开: ["ai", "uai"], + 五微: ["ei", "ui"], + 六豪: ["ao", "iao"], + 七尤: ["ou", "iu"], + 八寒: ["an", "ian", "uan", "üan"], + 九文: ["en", "in", "un", "ün"], + 十唐: ["ang", "iang", "uang"], + 十一庚: ["eng", "ing", "ong", "ung"], + 十二齐: ["i", "er", "ü"], + 十三支: ["-i"], + 十四姑: ["u"] +}; diff --git a/noname/library/promise-resolve.d.ts b/noname/library/promise-resolve.d.ts new file mode 100644 index 000000000..37290ecda --- /dev/null +++ b/noname/library/promise-resolve.d.ts @@ -0,0 +1 @@ +export type PromiseResolve = (value: T) => void; diff --git a/noname/library/stratagem-buff.js b/noname/library/stratagem-buff.js new file mode 100644 index 000000000..549cb781f --- /dev/null +++ b/noname/library/stratagem-buff.js @@ -0,0 +1,72 @@ +import { Game } from "../game.js"; +import { Get } from "../get.js"; +import { GameEvent } from "./element/game-event.js"; +import { VCard } from "./element/v-card.js"; + +export const stratagemBuff = { + cost: new Map([ + ["sha", 1], + ["shan", 1], + ["juedou", 2], + ["huogong", 2], + ["tao", 3] + ]), + /** + * @type {Map void>} + */ + effect: new Map([ + ["sha", (event, option) => { + if (event.step != 0 || option.state != "end") return; + Game.log(event.player, "触发了强化效果"); + Game.log(event.card, "抵消所需要的", new VCard({ + name: "shan" + }), "数+1"); + const map = event.customArgs; + Game.players.concat(Game.dead).forEach(current => { + const id = current.playerid; + if (!map[id]) map[id] = {}; + if (typeof map[id].shanRequired == "number") map[id].shanRequired++; + else map[id].shanRequired = 2; + }); + }], + ["shan", (event, option) => { + if (event.step != 0 || option.state != "end") return; + Game.log(event.player, "触发了强化效果"); + Game.log("使用", event.card, "时视为两张", new VCard({ + name: "shan" + }), "的效果"); + event.player.when("useCard").filter(evt => evt == event).then(() => { + trigger.getParent(2).decrease("shanRequired", 1); + }); + }], + ["juedou", (event, option) => { + if (event.step != 0 || option.state != "end") return; + Game.log(event.player, "触发了强化效果"); + Game.log("对", event.card, "的目标造成伤害时,伤害+1"); + event.player.when({ + source: "damageBegin1" + }).filter(evt => evt.getParent(2) == event && event.targets.includes(evt.player)).then(() => { + trigger.increase("num"); + }); + }], + ["huogong", (event, option) => { + if (event.step != 0 || option.state != "end") return; + Game.log(event.player, "触发了强化效果"); + Game.log(event.card, "造成的伤害+1"); + event.increase("baseDamage", 1); + }], + ["tao", (event, option) => { + if (event.step != 0 || option.state != "end") return; + Game.log(event.player, "触发了强化效果"); + Game.log(event.card, "回复的体力+1"); + event.increase("baseDamage", 1); + }] + ]), + prompt: new Map([ + ["sha", () => `抵消所需要的【${Get.translation("shan")}】数+1。`], + ["shan", () => `使用时视为两张【${Get.translation("shan")}】的效果。`], + ["juedou", () => "对此牌的目标造成伤害时,伤害+1。"], + ["huogong", () => "造成的伤害+1。"], + ["tao", () => "回复的体力+1。"] + ]) +}; diff --git a/noname/library/yingbian.js b/noname/library/yingbian.js new file mode 100644 index 000000000..09a11d89f --- /dev/null +++ b/noname/library/yingbian.js @@ -0,0 +1,42 @@ +import { condition } from "./yingbian/condition.js"; + +export const yingbian = { + condition, + effect: new Map([ + ["add", () => { + trigger.yingbian_addTarget = true; + }], + ["remove", () => { + trigger.yingbian_removeTarget = true; + }], + ["damage", () => { + if (typeof trigger.baseDamage != "number") trigger.baseDamage = 1; + trigger.baseDamage++; + game.log(card, "的伤害值基数+1"); + }], + ["draw", () => { + player.draw(); + }], + ["gain", () => { + const cardx = trigger.respondTo; + if (cardx && cardx[1] && cardx[1].cards && cardx[1].cards.filterInD("od").length) player.gain(cardx[1].cards.filterInD("od"), "gain2"); + }], + ["hit", () => { + trigger.directHit.addArray(game.players).addArray(game.dead); + game.log(card, "不可被响应"); + }], + ["all", () => { + card.yingbian_all = true; + game.log(card, "执行所有选项"); + }] + ]), + prompt: new Map([ + ["add", "目标+1"], + ["remove", "目标-1"], + ["damage", "伤害+1"], + ["draw", "摸一张牌"], + ["gain", "获得响应的牌"], + ["hit", "此牌不可被响应"], + ["all", "无视条件执行所有选项"] + ]) +}; diff --git a/noname/library/yingbian/condition.js b/noname/library/yingbian/condition.js new file mode 100644 index 000000000..fb80cd59e --- /dev/null +++ b/noname/library/yingbian/condition.js @@ -0,0 +1,132 @@ +export const condition = { + color: new Map([ + ["zhuzhan", "wood"], + ["kongchao", "soil"], + ["fujia", "orange"], + ["canqu", "fire"], + ["force", "metal"] + ]), + complex: new Map([ + ["zhuzhan", function (event) { + const yingbianZhuzhan = game.createEvent("yingbianZhuzhan"); + yingbianZhuzhan.player = event.player; + yingbianZhuzhan.card = event.card; + yingbianZhuzhan._trigger = event; + yingbianZhuzhan.yingbianZhuzhanAI = event.yingbianZhuzhanAI; + yingbianZhuzhan.afterYingbianZhuzhan = event.afterYingbianZhuzhan; + yingbianZhuzhan.setContent(() => { + "step 0" + event._global_waiting = true; + event.send = (player, card, source, targets, id, id2, yingbianZhuzhanAI, skillState) => { + if (skillState) player.applySkills(skillState); + var type = get.type2(card), str = get.translation(source); + if (targets && targets.length) str += `对${get.translation(targets)}`; + str += `使用了${get.translation(card)},是否弃置一张${get.translation(type)}为其助战?`; + player.chooseCard({ + filterCard: (card, player) => get.type2(card) == type && lib.filter.cardDiscardable(card, player), + prompt: str, + position: "h", + _global_waiting: true, + id: id, + id2: id2, + ai: typeof yingbianZhuzhanAI == "function" ? yingbianZhuzhanAI(player, card, source, targets) : cardx => { + var info = get.info(card); + if (info && info.ai && info.ai.yingbian) { + var ai = info.ai.yingbian(card, source, targets, player); + if (!ai) return 0; + return ai - get.value(cardx); + } + else if (get.attitude(player, source) <= 0) return 0; + return 5 - get.value(cardx); + } + }); + if (!game.online) return; + _status.event._resultid = id; + game.resume(); + }; + "step 1" + var type = get.type2(card); + event.list = game.filterPlayer(current => current != player && current.countCards("h") && (_status.connectMode || current.hasCard(cardx => get.type2(cardx) == type, "h"))).sortBySeat(_status.currentPhase || player); + event.id = get.id(); + "step 2" + if (!event.list.length) event.finish(); + else if (_status.connectMode && (event.list[0].isOnline() || event.list[0] == game.me)) event.goto(4); + else event.send(event.current = event.list.shift(), event.card, player, trigger.targets, event.id, trigger.parent.id, trigger.yingbianZhuzhanAI); + "step 3" + if (result.bool) { + event.zhuzhanresult = event.current; + event.zhuzhanresult2 = result; + if (event.current != game.me) game.delayx(); + event.goto(8); + } + else event.goto(2); + "step 4" + var id = event.id, sendback = (result, player) => { + if (result && result.id == id && !event.zhuzhanresult && result.bool) { + event.zhuzhanresult = player; + event.zhuzhanresult2 = result; + game.broadcast("cancel", id); + if (_status.event.id == id && _status.event.name == "chooseCard" && _status.paused) return () => { + event.resultOL = _status.event.resultOL; + ui.click.cancel(); + if (ui.confirm) ui.confirm.close(); + }; + } + else if (_status.event.id == id && _status.event.name == "chooseCard" && _status.paused) return () => event.resultOL = _status.event.resultOL; + }, withme = false, withol = false, list = event.list; + for (var i = 0; i < list.length; i++) { + var current = list[i]; + if (current.isOnline()) { + withol = true; + current.wait(sendback); + current.send(event.send, current, event.card, player, trigger.targets, event.id, trigger.parent.id, trigger.yingbianZhuzhanAI, get.skillState(current)); + list.splice(i--, 1); + } + else if (current == game.me) { + withme = true; + event.send(current, event.card, player, trigger.targets, event.id, trigger.parent.id, trigger.yingbianZhuzhanAI); + list.splice(i--, 1); + } + } + if (!withme) event.goto(6); + if (_status.connectMode && (withme || withol)) game.players.forEach(value => { + if (value != player) value.showTimer(); + }); + event.withol = withol; + "step 5" + if (!result || !result.bool || event.zhuzhanresult) return; + game.broadcast("cancel", event.id); + event.zhuzhanresult = game.me; + event.zhuzhanresult2 = result; + "step 6" + if (event.withol && !event.resultOL) game.pause(); + "step 7" + game.players.forEach(value => value.hideTimer()); + "step 8" + if (event.zhuzhanresult) { + var target = event.zhuzhanresult; + target.line(player, "green"); + target.discard(event.zhuzhanresult2.cards).discarder = target; + if (typeof event.afterYingbianZhuzhan == "function") event.afterYingbianZhuzhan(event, trigger); + var yingbianCondition = event.name.slice(8).toLowerCase(), yingbianConditionTag = `yingbian_${yingbianCondition}_tag`; + target.popup(yingbianConditionTag, lib.yingbian.condition.color.get(yingbianCondition)); + game.log(target, "响应了", player, "发起的", yingbianConditionTag); + target.addExpose(0.2); + event.result = { + bool: true + } + } + else event.result = { + bool: false + }; + }); + yingbianZhuzhan._args = Array.from(arguments); + return yingbianZhuzhan; + }] + ]), + simple: new Map([ + ["kongchao", event => !event.player.countCards("h")], + ["fujia", event => event.player.isMaxHandcard()], + ["canqu", event => event.player.getHp() == 1] + ]) +}; diff --git a/noname/status.js b/noname/status.js index d91bb53d0..7251ce88d 100644 --- a/noname/status.js +++ b/noname/status.js @@ -1,4 +1,4 @@ -import { Library as lib } from "../noname.js"; +import { GameEvent } from "./library/element/game-event.js"; import { aiStatus } from "./status/ai.js"; import { cardTag } from "./status/card-tag.js"; import { postReconnect } from "./status/post-reconnect.js"; @@ -10,7 +10,7 @@ export const status = { over: false, clicked: false, auto: false, - event: lib.element.GameEvent.initialGameEvent(), + event: GameEvent.initialGameEvent(), ai: aiStatus, lastdragchange: [], skillaudio: [], @@ -30,5 +30,5 @@ export const status = { cardtag: cardTag, renku: [], prehidden_skills: [], - postReconnect: postReconnect + postReconnect } diff --git a/noname/ui.js b/noname/ui.js new file mode 100644 index 000000000..fe554e0a0 --- /dev/null +++ b/noname/ui.js @@ -0,0 +1,21 @@ +import { Click } from "./ui/click.js"; +import { selected } from "./ui/selected.js"; + +class HTMLWindowElement extends HTMLDivElement { } + +customElements.define("window", HTMLWindowElement, { + extends: "div" +}); + +export class UI { + static click = Click; + static selected = selected; + /** + * @type {HTMLWindowElement} + */ + static window; + + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } +} diff --git a/noname/ui/click.js b/noname/ui/click.js new file mode 100644 index 000000000..46ee65410 --- /dev/null +++ b/noname/ui/click.js @@ -0,0 +1,5 @@ +export class Click { + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } +} diff --git a/noname/ui/selected.js b/noname/ui/selected.js new file mode 100644 index 000000000..a51887017 --- /dev/null +++ b/noname/ui/selected.js @@ -0,0 +1,5 @@ +export const selected = { + buttons: [], + cards: [], + targets: [] +}; From 076b86f851434d724eb469ced988c228bb235802 Mon Sep 17 00:00:00 2001 From: Tipx-L <138244655+Tipx-L@users.noreply.github.com> Date: Wed, 6 Dec 2023 02:25:36 -0800 Subject: [PATCH 077/302] Add the general config menu. --- noname/get.js | 63 +++--- noname/get/is.js | 1 + noname/library/character-pack.d.ts | 2 +- noname/library/cheat.js | 1 + noname/library/config-menu/general.js | 2 +- noname/library/config-menu/general/config.js | 188 +++++++++++++++++- .../general/config/auto-check-update.js | 6 + .../general/config/auto-confirm.js | 6 + .../general/config/compatible-mode.js | 17 ++ .../general/config/confirm-exit.js | 6 + .../config-menu/general/config/developer.js | 26 +++ .../config/double-click-introduction.js | 6 + .../general/config/enable-drag-line.js | 6 + .../config-menu/general/config/enable-drag.js | 6 + .../general/config/enable-touch-drag-line.js | 6 + .../general/config/enable-vibrate.js | 5 + .../config-menu/general/config/error-stop.js | 5 + .../general/config/extension-create.js | 51 +++++ .../general/config/extension-delete.js | 38 ++++ .../general/config/extension-source.js | 13 ++ .../general/config/fuck-so-json.js | 4 + .../config-menu/general/config/game-speed.js | 8 + .../general/config/game-speed/item.js | 8 + .../config-menu/general/config/hover-all.js | 7 + .../general/config/hover-hand-card.js | 6 + .../config-menu/general/config/hoveration.js | 9 + .../general/config/hoveration/item.js | 7 + .../config-menu/general/config/keep-awake.js | 24 +++ .../general/config/long-press-information.js | 7 + .../general/config/low-performance.js | 2 +- .../config-menu/general/config/lucky-star.js | 6 + .../general/config/maximum-load-time.js | 20 ++ .../general/config/maximum-load-time/item.js | 6 + .../general/config/mount-combine.js | 2 +- .../config-menu/general/config/mouse-wheel.js | 23 +++ .../config-menu/general/config/right-click.js | 15 ++ .../general/config/right-click/item.js | 6 + .../general/config/right-information.js | 7 + .../general/config/round-menu-function.js | 15 ++ .../config/round-menu-function/item.js | 6 + .../config-menu/general/config/show-splash.js | 8 + .../general/config/show-splash/item.js | 5 + .../config-menu/general/config/skip-shan.js | 6 + .../config-menu/general/config/swipe-down.js | 15 ++ .../config-menu/general/config/swipe-item.js | 8 + .../config-menu/general/config/swipe-left.js | 15 ++ .../config-menu/general/config/swipe-right.js | 15 ++ .../config-menu/general/config/swipe-up.js | 15 ++ .../config-menu/general/config/swipe.js | 6 + .../general/config/synchronize-speed.js | 5 + .../config-menu/general/config/tao-enemy.js | 6 + .../config-menu/general/config/touchscreen.js | 14 ++ .../general/config/un-auto-choose.js | 6 + .../config-menu/general/config/update-link.js | 15 ++ .../general/config/update-link/item.js | 4 + .../config-menu/general/config/video.js | 9 + .../config-menu/general/config/video/item.js | 8 + .../config-menu/general/config/wuxie-self.js | 6 + noname/library/config.d.ts | 1 + noname/library/dynamic-translate.d.ts | 2 +- noname/library/element.js | 2 + noname/status.js | 4 +- noname/status/ai.d.ts | 6 +- noname/status/ai.js | 2 +- noname/status/global-history.d.ts | 2 +- noname/ui/create.js | 1 + 66 files changed, 781 insertions(+), 47 deletions(-) create mode 100644 noname/get/is.js create mode 100644 noname/library/cheat.js create mode 100644 noname/library/config-menu/general/config/auto-check-update.js create mode 100644 noname/library/config-menu/general/config/auto-confirm.js create mode 100644 noname/library/config-menu/general/config/compatible-mode.js create mode 100644 noname/library/config-menu/general/config/confirm-exit.js create mode 100644 noname/library/config-menu/general/config/developer.js create mode 100644 noname/library/config-menu/general/config/double-click-introduction.js create mode 100644 noname/library/config-menu/general/config/enable-drag-line.js create mode 100644 noname/library/config-menu/general/config/enable-drag.js create mode 100644 noname/library/config-menu/general/config/enable-touch-drag-line.js create mode 100644 noname/library/config-menu/general/config/enable-vibrate.js create mode 100644 noname/library/config-menu/general/config/error-stop.js create mode 100644 noname/library/config-menu/general/config/extension-create.js create mode 100644 noname/library/config-menu/general/config/extension-delete.js create mode 100644 noname/library/config-menu/general/config/extension-source.js create mode 100644 noname/library/config-menu/general/config/fuck-so-json.js create mode 100644 noname/library/config-menu/general/config/game-speed.js create mode 100644 noname/library/config-menu/general/config/game-speed/item.js create mode 100644 noname/library/config-menu/general/config/hover-all.js create mode 100644 noname/library/config-menu/general/config/hover-hand-card.js create mode 100644 noname/library/config-menu/general/config/hoveration.js create mode 100644 noname/library/config-menu/general/config/hoveration/item.js create mode 100644 noname/library/config-menu/general/config/keep-awake.js create mode 100644 noname/library/config-menu/general/config/long-press-information.js create mode 100644 noname/library/config-menu/general/config/lucky-star.js create mode 100644 noname/library/config-menu/general/config/maximum-load-time.js create mode 100644 noname/library/config-menu/general/config/maximum-load-time/item.js create mode 100644 noname/library/config-menu/general/config/mouse-wheel.js create mode 100644 noname/library/config-menu/general/config/right-click.js create mode 100644 noname/library/config-menu/general/config/right-click/item.js create mode 100644 noname/library/config-menu/general/config/right-information.js create mode 100644 noname/library/config-menu/general/config/round-menu-function.js create mode 100644 noname/library/config-menu/general/config/round-menu-function/item.js create mode 100644 noname/library/config-menu/general/config/show-splash.js create mode 100644 noname/library/config-menu/general/config/show-splash/item.js create mode 100644 noname/library/config-menu/general/config/skip-shan.js create mode 100644 noname/library/config-menu/general/config/swipe-down.js create mode 100644 noname/library/config-menu/general/config/swipe-item.js create mode 100644 noname/library/config-menu/general/config/swipe-left.js create mode 100644 noname/library/config-menu/general/config/swipe-right.js create mode 100644 noname/library/config-menu/general/config/swipe-up.js create mode 100644 noname/library/config-menu/general/config/swipe.js create mode 100644 noname/library/config-menu/general/config/synchronize-speed.js create mode 100644 noname/library/config-menu/general/config/tao-enemy.js create mode 100644 noname/library/config-menu/general/config/touchscreen.js create mode 100644 noname/library/config-menu/general/config/un-auto-choose.js create mode 100644 noname/library/config-menu/general/config/update-link.js create mode 100644 noname/library/config-menu/general/config/update-link/item.js create mode 100644 noname/library/config-menu/general/config/video.js create mode 100644 noname/library/config-menu/general/config/video/item.js create mode 100644 noname/library/config-menu/general/config/wuxie-self.js create mode 100644 noname/ui/create.js diff --git a/noname/get.js b/noname/get.js index e7d543a8b..7a5c2bc4f 100644 --- a/noname/get.js +++ b/noname/get.js @@ -1,4 +1,5 @@ -import { status as _status } from "./status"; +import { Library } from "./library.js"; +import { status } from "./status.js"; export class Get { constructor() { @@ -9,14 +10,14 @@ export class Get { * @template T * @overload * @param {T} key - * @returns {typeof _status.event[T]} + * @returns {typeof status.event[T]} */ /** * @overload - * @returns {typeof _status.event} + * @returns {typeof status.event} */ static event(key) { - return key ? _status.event[key] : _status.event; + return key ? status.event[key] : status.event; } /** @@ -27,27 +28,27 @@ export class Get { if (str._tempTranslate) return str._tempTranslate; var str2; if (arg == "viewAs" && str.viewAs) { - str2 = get.translation(str.viewAs); + str2 = this.translation(str.viewAs); } else { - str2 = get.translation(str.name); + str2 = this.translation(str.name); } if (str2 == "杀") { str2 = ""; if (typeof str.nature == "string") { - let natures = str.nature.split(lib.natureSeparator).sort(lib.sort.nature); + let natures = str.nature.split(Library.natureSeparator).sort(Library.sort.nature); for (let nature of natures) { - str2 += lib.translate["nature_" + nature] || lib.translate[nature] || ""; + str2 += Library.translate["nature_" + nature] || Library.translate[nature] || ""; } } str2 += "杀"; } - if (get.itemtype(str) == "card" || str.isCard) { - if (_status.cardtag && str.cardid) { + if (this.itemtype(str) == "card" || str.isCard) { + if (status.cardtag && str.cardid) { var tagstr = ""; - for (var i in _status.cardtag) { - if (_status.cardtag[i].contains(str.cardid)) { - tagstr += lib.translate[i + "_tag"]; + for (var i in status.cardtag) { + if (status.cardtag[i].contains(str.cardid)) { + tagstr += Library.translate[i + "_tag"]; } } if (tagstr) { @@ -55,57 +56,57 @@ export class Get { } } if (str.suit && str.number || str.isCard) { - var cardnum = get.number(str, false) || ""; + var cardnum = this.number(str, false) || ""; if ([1, 11, 12, 13].contains(cardnum)) { cardnum = { "1": "A", "11": "J", "12": "Q", "13": "K" }[cardnum] } if (arg == "viewAs" && str.viewAs != str.name && str.viewAs) { - str2 += "(" + get.translation(str) + ")"; + str2 += "(" + this.translation(str) + ")"; } else { - str2 += "【" + get.translation(get.suit(str, false)) + cardnum + "】"; + str2 += "【" + this.translation(this.suit(str, false)) + cardnum + "】"; } } } return str2; } if (Array.isArray(str)) { - var str2 = get.translation(str[0], arg); + var str2 = this.translation(str[0], arg); for (var i = 1; i < str.length; i++) { - str2 += "、" + get.translation(str[i], arg); + str2 += "、" + this.translation(str[i], arg); } return str2; } - if (get.itemtype(str) == "natures") { - let natures = str.split(lib.natureSeparator).sort(lib.sort.nature); + if (this.itemtype(str) == "natures") { + let natures = str.split(Library.natureSeparator).sort(Library.sort.nature); var str2 = ""; for (var nature of natures) { - str2 += lib.translate["nature_" + nature] || lib.translate[nature] || ""; + str2 += Library.translate["nature_" + nature] || Library.translate[nature] || ""; } return str2; } if (arg == "skill") { - if (lib.translate[str + "_ab"]) return lib.translate[str + "_ab"]; - if (lib.translate[str]) return lib.translate[str].slice(0, 2); + if (Library.translate[str + "_ab"]) return Library.translate[str + "_ab"]; + if (Library.translate[str]) return Library.translate[str].slice(0, 2); return str; } else if (arg == "info") { - if (lib.translate[str + "_info"]) return lib.translate[str + "_info"]; + if (Library.translate[str + "_info"]) return Library.translate[str + "_info"]; var str2 = str.slice(0, str.length - 1); - if (lib.translate[str2 + "_info"]) return lib.translate[str2 + "_info"]; + if (Library.translate[str2 + "_info"]) return Library.translate[str2 + "_info"]; if (str.lastIndexOf("_") > 0) { str2 = str.slice(0, str.lastIndexOf("_")); - if (lib.translate[str2 + "_info"]) return lib.translate[str2 + "_info"]; + if (Library.translate[str2 + "_info"]) return Library.translate[str2 + "_info"]; } str2 = str.slice(0, str.length - 2); - if (lib.translate[str2 + "_info"]) return lib.translate[str2 + "_info"]; - if (lib.skill[str] && lib.skill[str].prompt) return lib.skill[str].prompt; + if (Library.translate[str2 + "_info"]) return Library.translate[str2 + "_info"]; + if (Library.skill[str] && Library.skill[str].prompt) return Library.skill[str].prompt; } - if (lib.translate[str]) { - return lib.translate[str]; + if (Library.translate[str]) { + return Library.translate[str]; } if (typeof str == "string") { - if (lib.translate["nature_" + str]) return lib.translate["nature_" + str]; + if (Library.translate["nature_" + str]) return Library.translate["nature_" + str]; return str; } if (typeof str == "number" || typeof str == "boolean") { diff --git a/noname/get/is.js b/noname/get/is.js new file mode 100644 index 000000000..8ac69bb1c --- /dev/null +++ b/noname/get/is.js @@ -0,0 +1 @@ +export class Is { } diff --git a/noname/library/character-pack.d.ts b/noname/library/character-pack.d.ts index 9ee07cc77..ad279f7a9 100644 --- a/noname/library/character-pack.d.ts +++ b/noname/library/character-pack.d.ts @@ -1,4 +1,4 @@ -import { CharacterInformation } from "./character-information"; +import { CharacterInformation } from "./character-information.js"; interface CharacterPack extends Record> { } diff --git a/noname/library/cheat.js b/noname/library/cheat.js new file mode 100644 index 000000000..f66f2b755 --- /dev/null +++ b/noname/library/cheat.js @@ -0,0 +1 @@ +export class Cheat { } diff --git a/noname/library/config-menu/general.js b/noname/library/config-menu/general.js index 655aaca25..d3d34ce08 100644 --- a/noname/library/config-menu/general.js +++ b/noname/library/config-menu/general.js @@ -2,5 +2,5 @@ import { config } from "./general/config.js"; export const general = { name: "通用", - config: config + config }; diff --git a/noname/library/config-menu/general/config.js b/noname/library/config-menu/general/config.js index d2731c967..b33d1d444 100644 --- a/noname/library/config-menu/general/config.js +++ b/noname/library/config-menu/general/config.js @@ -1,7 +1,187 @@ -import { lowPerformance } from "./config/low-performance.js"; -import { mountCombine } from "./config/mount-combine.js"; +import { Is } from "../../../get/is.js"; +import { Library } from "../../../library.js"; +import { AUTO_CHECK_UPDATE } from "./config/auto-check-update.js"; +import { AUTO_CONFIRM } from "./config/auto-confirm.js"; +import { COMPATIBLE_MODE } from "./config/compatible-mode.js"; +import { CONFIRM_EXIT } from "./config/confirm-exit.js"; +import { DEVELOPER } from "./config/developer.js"; +import { DOUBLE_CLICK_INTRODUCTION } from "./config/double-click-introduction.js"; +import { ENABLE_DRAG_LINE } from "./config/enable-drag-line.js"; +import { ENABLE_DRAG } from "./config/enable-drag.js"; +import { ENABLE_TOUCH_DRAG_LINE } from "./config/enable-touch-drag-line.js"; +import { ENABLE_VIBRATE } from "./config/enable-vibrate.js"; +import { ERROR_STOP } from "./config/error-stop.js"; +import { EXTENSION_CREATE } from "./config/extension-create.js"; +import { EXTENSION_DELETE } from "./config/extension-delete.js"; +import { EXTENSION_SOURCE } from "./config/extension-source.js"; +import { FUCK_SO_JSON } from "./config/fuck-so-json.js"; +import { GAME_SPEED } from "./config/game-speed.js"; +import { HOVER_ALL } from "./config/hover-all.js"; +import { HOVER_HAND_CARD } from "./config/hover-hand-card.js"; +import { HOVERATION } from "./config/hoveration.js"; +import { KEEP_AWAKE } from "./config/keep-awake.js"; +import { LONG_PRESS_INFORMATION } from "./config/long-press-information.js"; +import { LOW_PERFORMANCE } from "./config/low-performance.js"; +import { LUCKY_STAR } from "./config/lucky-star.js"; +import { MAXIMUM_LOAD_TIME } from "./config/maximum-load-time.js"; +import { MOUNT_COMBINE } from "./config/mount-combine.js"; +import { MOUSE_WHEEL } from "./config/mouse-wheel.js"; +import { RIGHT_CLICK } from "./config/right-click.js"; +import { RIGHT_INFORMATION } from "./config/right-information.js"; +import { ROUND_MENU_FUNCTION } from "./config/round-menu-function.js"; +import { SHOW_SPLASH } from "./config/show-splash.js"; +import { SKIP_SHAN } from "./config/skip-shan.js"; +import { SWIPE_DOWN } from "./config/swipe-down.js"; +import { SWIPE_LEFT } from "./config/swipe-left.js"; +import { SWIPE_RIGHT } from "./config/swipe-right.js"; +import { SWIPE_UP } from "./config/swipe-up.js"; +import { SWIPE } from "./config/swipe.js"; +import { SYNCHRONIZE_SPEED } from "./config/synchronize-speed.js"; +import { TAO_ENEMY } from "./config/tao-enemy.js"; +import { TOUCHSCREEN } from "./config/touchscreen.js"; +import { UN_AUTO_CHOOSE } from "./config/un-auto-choose.js"; +import { UPDATE_LINK } from "./config/update-link.js"; +import { VIDEO } from "./config/video.js"; +import { WUXIE_SELF } from "./config/wuxie-self.js"; export const config = { - mount_combine: mountCombine, - low_performance: lowPerformance + mount_combine: MOUNT_COMBINE, + low_performance: LOW_PERFORMANCE, + compatiblemode: COMPATIBLE_MODE, + confirm_exit: CONFIRM_EXIT, + keep_awake: KEEP_AWAKE, + auto_confirm: AUTO_CONFIRM, + skip_shan: SKIP_SHAN, + unauto_choose: UN_AUTO_CHOOSE, + wuxie_self: WUXIE_SELF, + tao_enemy: TAO_ENEMY, + enable_drag: ENABLE_DRAG, + enable_dragline: ENABLE_DRAG_LINE, + enable_touchdragline: ENABLE_TOUCH_DRAG_LINE, + touchscreen: TOUCHSCREEN, + swipe: SWIPE, + swipe_down: SWIPE_DOWN, + swipe_up: SWIPE_UP, + swipe_left: SWIPE_LEFT, + swipe_right: SWIPE_RIGHT, + round_menu_func: ROUND_MENU_FUNCTION, + show_splash: SHOW_SPLASH, + game_speed: GAME_SPEED, + sync_speed: SYNCHRONIZE_SPEED, + enable_vibrate: ENABLE_VIBRATE, + right_click: RIGHT_CLICK, + longpress_info: LONG_PRESS_INFORMATION, + right_info: RIGHT_INFORMATION, + hover_all: HOVER_ALL, + hover_handcard: HOVER_HAND_CARD, + hoveration: HOVERATION, + doubleclick_intro: DOUBLE_CLICK_INTRODUCTION, + video: VIDEO, + max_loadtime: MAXIMUM_LOAD_TIME, + mousewheel: MOUSE_WHEEL, + auto_check_update: AUTO_CHECK_UPDATE, + lucky_star: LUCKY_STAR, + dev: DEVELOPER, + fuck_sojson: FUCK_SO_JSON, + errstop: ERROR_STOP, + update_link: UPDATE_LINK, + extension_source: EXTENSION_SOURCE, + extension_create: EXTENSION_CREATE, + extension_delete: EXTENSION_DELETE, + update(config, map) { + if ("ontouchstart" in document) { + map.touchscreen.show(); + } + else { + map.touchscreen.hide(); + } + if (Library.device || Library.node) { + map.auto_check_update.show(); + } + else { + map.auto_check_update.hide(); + } + if (Library.device) { + map.enable_vibrate.show(); + map.keep_awake.show(); + } + else { + map.enable_vibrate.hide(); + map.keep_awake.hide(); + } + if (config.touchscreen) { + map.mousewheel.hide(); + map.hover_all.hide(); + map.hover_handcard.hide(); + map.hoveration.hide(); + map.right_info.hide(); + map.right_click.hide(); + map.longpress_info.show(); + map.swipe.show(); + if (config.swipe) { + map.swipe_up.show(); + map.swipe_down.show(); + map.swipe_left.show(); + map.swipe_right.show(); + } + else { + map.swipe_up.hide(); + map.swipe_down.hide(); + map.swipe_left.hide(); + map.swipe_right.hide(); + } + } + else { + map.mousewheel.show(); + map.hover_all.show(); + map.right_info.show(); + map.right_click.show(); + map.longpress_info.hide(); + if (!config.hover_all) { + map.hover_handcard.hide(); + map.hoveration.hide(); + } + else { + map.hover_handcard.show(); + map.hoveration.show(); + } + map.swipe.hide(); + map.swipe_up.hide(); + map.swipe_down.hide(); + map.swipe_left.hide(); + map.swipe_right.hide(); + } + if (config.enable_drag) { + if (config.touchscreen) { + map.enable_dragline.hide(); + map.enable_touchdragline.show(); + } + else { + map.enable_dragline.show(); + map.enable_touchdragline.hide(); + } + } + else { + map.enable_dragline.hide(); + map.enable_touchdragline.hide(); + } + if (!Is.phoneLayout()) { + map.round_menu_func.hide(); + } + else { + map.round_menu_func.show(); + } + if (!Library.node && Library.device != "ios") { + map.confirm_exit.show(); + } + else { + map.confirm_exit.hide(); + } + if (config.dev) { + map.errstop.show(); + } + else { + map.errstop.hide(); + } + } }; diff --git a/noname/library/config-menu/general/config/auto-check-update.js b/noname/library/config-menu/general/config/auto-check-update.js new file mode 100644 index 000000000..9d0eabda5 --- /dev/null +++ b/noname/library/config-menu/general/config/auto-check-update.js @@ -0,0 +1,6 @@ +export const AUTO_CHECK_UPDATE = { + name: "自动检查游戏更新", + intro: "进入游戏时检查更新", + init: false, + unfrequent: true +}; diff --git a/noname/library/config-menu/general/config/auto-confirm.js b/noname/library/config-menu/general/config/auto-confirm.js new file mode 100644 index 000000000..ffecbc305 --- /dev/null +++ b/noname/library/config-menu/general/config/auto-confirm.js @@ -0,0 +1,6 @@ +export const AUTO_CONFIRM = { + name: "自动确认", + init: true, + unfrequent: true, + intro: "当候选目标只有1个时,点击目标后无需再点击确认" +}; diff --git a/noname/library/config-menu/general/config/compatible-mode.js b/noname/library/config-menu/general/config/compatible-mode.js new file mode 100644 index 000000000..3eceacf21 --- /dev/null +++ b/noname/library/config-menu/general/config/compatible-mode.js @@ -0,0 +1,17 @@ +import { Game } from "../../../../game.js"; +import { UI } from "../../../../ui.js"; + +export const COMPATIBLE_MODE = { + name: "兼容模式", + init: false, + intro: "开启兼容模式可防止扩展使游戏卡死并提高对旧扩展的兼容性,但对游戏速度有一定影响,若无不稳定或不兼容的扩展建议关闭", + onclick(bool) { + Game.saveConfig("compatiblemode", bool); + if (bool) { + UI.window.classList.add("compatiblemode"); + } + else { + UI.window.classList.remove("compatiblemode"); + } + } +}; diff --git a/noname/library/config-menu/general/config/confirm-exit.js b/noname/library/config-menu/general/config/confirm-exit.js new file mode 100644 index 000000000..6b41ac4b3 --- /dev/null +++ b/noname/library/config-menu/general/config/confirm-exit.js @@ -0,0 +1,6 @@ +export const CONFIRM_EXIT = { + name: "确认退出", + init: false, + unfrequent: true, + intro: "离开游戏前弹出确认对话框" +}; diff --git a/noname/library/config-menu/general/config/developer.js b/noname/library/config-menu/general/config/developer.js new file mode 100644 index 000000000..8c4d0e25f --- /dev/null +++ b/noname/library/config-menu/general/config/developer.js @@ -0,0 +1,26 @@ +import { Game } from "../../../../game.js"; +import { status } from "../../../../status.js"; +import { Cheat } from "../../../cheat.js"; + +export const DEVELOPER = { + name: "开发者模式", + intro: "开启后可使用浏览器控制台控制游戏,同时可更新到开发版", + init: false, + onclick(bool) { + Game.saveConfig("dev", bool); + if (status.connectMode) return; + if (bool) { + Cheat.i(); + } + else { + delete window.cheat; + delete window.game; + delete window.ui; + delete window.get; + delete window.ai; + delete window.lib; + delete window._status; + } + }, + unfrequent: true +}; diff --git a/noname/library/config-menu/general/config/double-click-introduction.js b/noname/library/config-menu/general/config/double-click-introduction.js new file mode 100644 index 000000000..8fc08de74 --- /dev/null +++ b/noname/library/config-menu/general/config/double-click-introduction.js @@ -0,0 +1,6 @@ +export const DOUBLE_CLICK_INTRODUCTION = { + name: "双击显示武将资料", + init: true, + unfrequent: true, + intro: "双击武将头像后显示其资料卡" +}; diff --git a/noname/library/config-menu/general/config/enable-drag-line.js b/noname/library/config-menu/general/config/enable-drag-line.js new file mode 100644 index 000000000..5b12bc7a6 --- /dev/null +++ b/noname/library/config-menu/general/config/enable-drag-line.js @@ -0,0 +1,6 @@ +export const ENABLE_DRAG_LINE = { + name: "拖拽指示线", + init: true, + unfrequent: true, + intro: "拖拽时显示虚线,可能降低游戏速度" +}; diff --git a/noname/library/config-menu/general/config/enable-drag.js b/noname/library/config-menu/general/config/enable-drag.js new file mode 100644 index 000000000..e8295f14f --- /dev/null +++ b/noname/library/config-menu/general/config/enable-drag.js @@ -0,0 +1,6 @@ +export const ENABLE_DRAG = { + name: "启用拖拽", + init: true, + intro: "按住卡牌后可将卡牌拖至目标", + unfrequent: true +}; diff --git a/noname/library/config-menu/general/config/enable-touch-drag-line.js b/noname/library/config-menu/general/config/enable-touch-drag-line.js new file mode 100644 index 000000000..25a13e11d --- /dev/null +++ b/noname/library/config-menu/general/config/enable-touch-drag-line.js @@ -0,0 +1,6 @@ +export const ENABLE_TOUCH_DRAG_LINE = { + name: "拖拽指示线", + init: false, + unfrequent: true, + intro: "拖拽时显示虚线,可能降低游戏速度" +}; diff --git a/noname/library/config-menu/general/config/enable-vibrate.js b/noname/library/config-menu/general/config/enable-vibrate.js new file mode 100644 index 000000000..51aae6869 --- /dev/null +++ b/noname/library/config-menu/general/config/enable-vibrate.js @@ -0,0 +1,5 @@ +export const ENABLE_VIBRATE = { + name: "开启震动", + intro: "回合开始时使手机震动", + init: false +}; diff --git a/noname/library/config-menu/general/config/error-stop.js b/noname/library/config-menu/general/config/error-stop.js new file mode 100644 index 000000000..a94d4edae --- /dev/null +++ b/noname/library/config-menu/general/config/error-stop.js @@ -0,0 +1,5 @@ +export const ERROR_STOP = { + name: "出错时停止游戏", + init: false, + unfrequent: true +}; diff --git a/noname/library/config-menu/general/config/extension-create.js b/noname/library/config-menu/general/config/extension-create.js new file mode 100644 index 000000000..5bbd99b0a --- /dev/null +++ b/noname/library/config-menu/general/config/extension-create.js @@ -0,0 +1,51 @@ +import { Game } from "../../../../game.js"; +import { UI } from "../../../../ui.js"; +import { Create } from "../../../../ui/create.js"; +import { config } from "../../../config.js"; + +export const EXTENSION_CREATE = { + name: "添加获取扩展地址", + clear: true, + unfrequent: true, + onclick() { + Game.prompt("请输入地址名称", str => { + if (!str) return; + + var map = config.extension_sources; + Game.prompt(`请输入${str}的地址`, str2 => { + if (!str2) return; + + delete map[str]; + map[str] = str2; + Game.saveConfig("extension_sources", map); + Game.saveConfig("extension_source", str); + var nodexx = UI.extension_source; + nodexx.updateInner(); + var nodeyy = nodexx._link.menu; + var nodezz = nodexx._link.config; + for (var i = 0; i < nodeyy.childElementCount; i++) { + if (nodeyy.childNodes[i]._link != str) continue; + + nodeyy.childNodes[i].remove(); + break; + } + var textMenu = Create.div("", str, nodeyy, function () { + var node = this.parentNode._link; + var config = node._link.config; + node._link.current = this.link; + var tmpName = node.lastChild.innerHTML; + node.lastChild.innerHTML = config.item[this._link]; + if (config.onclick && config.onclick.call(node, this._link, this) === false) { + node.lastChild.innerHTML = tmpName; + } + if (config.update) { + config.update(); + } + }); + textMenu._link = str; + nodezz.item[name] = str; + alert(`已添加扩展地址:${str}`); + }); + }); + } +}; diff --git a/noname/library/config-menu/general/config/extension-delete.js b/noname/library/config-menu/general/config/extension-delete.js new file mode 100644 index 000000000..93c364822 --- /dev/null +++ b/noname/library/config-menu/general/config/extension-delete.js @@ -0,0 +1,38 @@ +import { Game } from "../../../../game.js"; +import { UI } from "../../../../ui.js"; +import { config } from "../../../config.js"; + +export const EXTENSION_DELETE = { + name: "删除当前扩展地址", + clear: true, + unfrequent: true, + onclick() { + var bool = false, map = config.extension_sources; + for (var i in map) { + if (i != config.extension_source) { + bool = true; + break; + } + } + if (!bool) { + alert("不能删除最后一个扩展地址!"); + return; + } + var name = config.extension_source; + Game.saveConfig("extension_source", i); + delete map[name]; + Game.saveConfig("extension_sources", map); + var nodexx = UI.extension_source; + nodexx.updateInner(); + var nodeyy = nodexx._link.menu; + var nodezz = nodexx._link.config; + for (var i = 0; i < nodeyy.childElementCount; i++) { + if (nodeyy.childNodes[i]._link == name) { + nodeyy.childNodes[i].remove(); + break; + } + } + delete nodezz.item[name]; + alert(`已删除扩展地址:${name}`); + } +}; diff --git a/noname/library/config-menu/general/config/extension-source.js b/noname/library/config-menu/general/config/extension-source.js new file mode 100644 index 000000000..8e21745c5 --- /dev/null +++ b/noname/library/config-menu/general/config/extension-source.js @@ -0,0 +1,13 @@ +import { config } from "../../../config.js"; + +export const EXTENSION_SOURCE = { + name: "获取扩展地址", + init: "GitHub Proxy", + unfrequent: true, + get item() { + return config.extension_sources; + }, + intro() { + return `获取在线扩展时的地址。当前地址:${document.createElement("br").outerHTML}${config.extension_sources[config.extension_source]}`; + } +}; diff --git a/noname/library/config-menu/general/config/fuck-so-json.js b/noname/library/config-menu/general/config/fuck-so-json.js new file mode 100644 index 000000000..2ce8b8b2a --- /dev/null +++ b/noname/library/config-menu/general/config/fuck-so-json.js @@ -0,0 +1,4 @@ +export const FUCK_SO_JSON = { + name: "检测加密扩展", + init: false +}; diff --git a/noname/library/config-menu/general/config/game-speed.js b/noname/library/config-menu/general/config/game-speed.js new file mode 100644 index 000000000..ff6d197c7 --- /dev/null +++ b/noname/library/config-menu/general/config/game-speed.js @@ -0,0 +1,8 @@ +import { ITEM } from "./game-speed/item.js"; + +export const GAME_SPEED = { + name: "游戏速度", + init: "mid", + item: ITEM, + intro: "设置不同游戏操作间的时间间隔" +}; diff --git a/noname/library/config-menu/general/config/game-speed/item.js b/noname/library/config-menu/general/config/game-speed/item.js new file mode 100644 index 000000000..7b1214f9c --- /dev/null +++ b/noname/library/config-menu/general/config/game-speed/item.js @@ -0,0 +1,8 @@ +export const ITEM = { + vslow: "慢", + slow: "较慢", + mid: "中", + fast: "较快", + vfast: "快", + vvfast: "很快" +}; diff --git a/noname/library/config-menu/general/config/hover-all.js b/noname/library/config-menu/general/config/hover-all.js new file mode 100644 index 000000000..931dd5db2 --- /dev/null +++ b/noname/library/config-menu/general/config/hover-all.js @@ -0,0 +1,7 @@ +export const HOVER_ALL = { + name: "悬停显示信息", + init: true, + unfrequent: true, + restart: true, + intro: "悬停后弹出菜单" +}; diff --git a/noname/library/config-menu/general/config/hover-hand-card.js b/noname/library/config-menu/general/config/hover-hand-card.js new file mode 100644 index 000000000..12e6df9aa --- /dev/null +++ b/noname/library/config-menu/general/config/hover-hand-card.js @@ -0,0 +1,6 @@ +export const HOVER_HAND_CARD = { + name: "悬停手牌显示信息", + init: true, + unfrequent: true, + intro: "悬停手牌后弹出菜单" +}; diff --git a/noname/library/config-menu/general/config/hoveration.js b/noname/library/config-menu/general/config/hoveration.js new file mode 100644 index 000000000..8017f172a --- /dev/null +++ b/noname/library/config-menu/general/config/hoveration.js @@ -0,0 +1,9 @@ +import { ITEM } from "./hoveration/item.js"; + +export const HOVERATION = { + name: "悬停菜单弹出时间", + unfrequent: true, + intro: "鼠标移至目标到弹出菜单的时间间隔", + init: "1000", + item: ITEM +}; diff --git a/noname/library/config-menu/general/config/hoveration/item.js b/noname/library/config-menu/general/config/hoveration/item.js new file mode 100644 index 000000000..b850049b8 --- /dev/null +++ b/noname/library/config-menu/general/config/hoveration/item.js @@ -0,0 +1,7 @@ +export const ITEM = { + "500": "0.5秒", + "700": "0.7秒", + "1000": "1秒", + "1500": "1.5秒", + "2500": "2.5秒" +}; diff --git a/noname/library/config-menu/general/config/keep-awake.js b/noname/library/config-menu/general/config/keep-awake.js new file mode 100644 index 000000000..f748aea1d --- /dev/null +++ b/noname/library/config-menu/general/config/keep-awake.js @@ -0,0 +1,24 @@ +import { Game } from "../../../../game.js"; + +export const KEEP_AWAKE = { + name: "屏幕常亮", + init: false, + unfrequent: true, + intro: `防止屏幕自动关闭${document.createElement("br").outerHTML}注:旧版本通过NoSleep.js实现的屏幕常亮可能会影响外置音频的音量`, + onclick(bool) { + Game.saveConfig("keep_awake", bool); + if (bool) { + if (window.plugins && window.plugins.insomnia) window.plugins.insomnia.keepAwake(); + else if (window.noSleep) { + document.addEventListener(lib.config.touchscreen ? "touchend" : "click", function enableNoSleepX() { + document.removeEventListener(lib.config.touchscreen ? "touchend" : "click", enableNoSleepX, false); + window.noSleep.enable(); + }, false); + } + } + else { + if (window.plugins && window.plugins.insomnia) window.plugins.insomnia.allowSleepAgain(); + else if (window.noSleep) window.noSleep.disable(); + } + } +}; diff --git a/noname/library/config-menu/general/config/long-press-information.js b/noname/library/config-menu/general/config/long-press-information.js new file mode 100644 index 000000000..ea5a75b8a --- /dev/null +++ b/noname/library/config-menu/general/config/long-press-information.js @@ -0,0 +1,7 @@ +export const LONG_PRESS_INFORMATION = { + name: "长按显示信息", + init: true, + unfrequent: true, + restart: true, + intro: "长按后弹出菜单" +}; diff --git a/noname/library/config-menu/general/config/low-performance.js b/noname/library/config-menu/general/config/low-performance.js index 45b9b857f..e05c2b2dd 100644 --- a/noname/library/config-menu/general/config/low-performance.js +++ b/noname/library/config-menu/general/config/low-performance.js @@ -1,7 +1,7 @@ import { Game } from "../../../../game.js"; import { UI } from "../../../../ui.js"; -export const lowPerformance = { +export const LOW_PERFORMANCE = { name: "流畅模式", init: false, intro: "减少部分游戏特效,提高游戏速度", diff --git a/noname/library/config-menu/general/config/lucky-star.js b/noname/library/config-menu/general/config/lucky-star.js new file mode 100644 index 000000000..cb57ad1b7 --- /dev/null +++ b/noname/library/config-menu/general/config/lucky-star.js @@ -0,0 +1,6 @@ +export const LUCKY_STAR = { + name: "幸运星模式", + intro: "在涉及随机数等的技能中,必定得到效果最好的结果。(联机模式无效)", + init: false, + unfrequent: true +}; diff --git a/noname/library/config-menu/general/config/maximum-load-time.js b/noname/library/config-menu/general/config/maximum-load-time.js new file mode 100644 index 000000000..5e8968b13 --- /dev/null +++ b/noname/library/config-menu/general/config/maximum-load-time.js @@ -0,0 +1,20 @@ +import { Game } from "../../../../game.js"; +import { Library } from "../../../../library.js"; +import { ITEM } from "./maximum-load-time/item.js"; + +export const MAXIMUM_LOAD_TIME = { + name: "最长载入时间", + intro: "设置游戏从启动到完成载入所需的最长时间,超过此时间未完成载入会报错,若设备较慢或安装了较多扩展可适当延长此时间", + init: "5000", + unfrequent: true, + item: ITEM, + onclick(item) { + Game.saveConfig("max_loadtime", item); + if (item == "5000") { + localStorage.removeItem(`${Library.configprefix}loadtime`); + } + else { + localStorage.setItem(`${Library.configprefix}loadtime`, item); + } + } +}; diff --git a/noname/library/config-menu/general/config/maximum-load-time/item.js b/noname/library/config-menu/general/config/maximum-load-time/item.js new file mode 100644 index 000000000..ab901e30c --- /dev/null +++ b/noname/library/config-menu/general/config/maximum-load-time/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + 5000: "5秒", + 10000: "10秒", + 20000: "20秒", + 60000: "60秒" +}; diff --git a/noname/library/config-menu/general/config/mount-combine.js b/noname/library/config-menu/general/config/mount-combine.js index aa285adef..317a47b81 100644 --- a/noname/library/config-menu/general/config/mount-combine.js +++ b/noname/library/config-menu/general/config/mount-combine.js @@ -1,7 +1,7 @@ const listItem = document.createElement("li"); listItem.textContent = "将进攻坐骑栏和防御坐骑栏合并为同一个位置(重启后生效)。"; -export const mountCombine = { +export const MOUNT_COMBINE = { name: "合并坐骑栏", init: false, intro: listItem.outerHTML, diff --git a/noname/library/config-menu/general/config/mouse-wheel.js b/noname/library/config-menu/general/config/mouse-wheel.js new file mode 100644 index 000000000..01c40fb48 --- /dev/null +++ b/noname/library/config-menu/general/config/mouse-wheel.js @@ -0,0 +1,23 @@ +import { Game } from "../../../../game.js"; +import { UI } from "../../../../ui.js"; +import { Click } from "../../../../ui/click.js"; +import { config } from "../../../config.js"; + +export const MOUSE_WHEEL = { + name: "滚轮控制手牌", + init: true, + unfrequent: true, + intro: "开启后滚轮可使手牌横向滚动,在mac等可横向滚动的设备上建议关闭", + onclick(bool) { + Game.saveConfig("mousewheel", bool); + if (config.touchscreen) return; + if (config.mousewheel) { + UI.handcards1Container.onmousewheel = Click.mousewheel; + UI.handcards2Container.onmousewheel = Click.mousewheel; + } + else { + UI.handcards1Container.onmousewheel = null; + UI.handcards2Container.onmousewheel = null; + } + } +}; diff --git a/noname/library/config-menu/general/config/right-click.js b/noname/library/config-menu/general/config/right-click.js new file mode 100644 index 000000000..3893168f8 --- /dev/null +++ b/noname/library/config-menu/general/config/right-click.js @@ -0,0 +1,15 @@ +import { Game } from "../../../../game.js"; +import { Is } from "../../../../get/is.js"; +import { ITEM } from "./right-click/item.js"; + +export const RIGHT_CLICK = { + name: "右键操作", + init: "pause", + intro: "在空白区域点击右键时的操作", + unfrequent: true, + item: ITEM, + onclick(item) { + if (Is.nomenu("right_click", item)) return false; + Game.saveConfig("right_click", item); + } +}; diff --git a/noname/library/config-menu/general/config/right-click/item.js b/noname/library/config-menu/general/config/right-click/item.js new file mode 100644 index 000000000..884ca8e36 --- /dev/null +++ b/noname/library/config-menu/general/config/right-click/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + pause: "暂停", + shortcut: "工具", + config: "选项", + auto: "托管" +}; diff --git a/noname/library/config-menu/general/config/right-information.js b/noname/library/config-menu/general/config/right-information.js new file mode 100644 index 000000000..6f2bb9710 --- /dev/null +++ b/noname/library/config-menu/general/config/right-information.js @@ -0,0 +1,7 @@ +export const RIGHT_INFORMATION = { + name: "右键显示信息", + init: true, + unfrequent: true, + restart: true, + intro: "右键点击后弹出菜单" +}; diff --git a/noname/library/config-menu/general/config/round-menu-function.js b/noname/library/config-menu/general/config/round-menu-function.js new file mode 100644 index 000000000..3ff6e4eed --- /dev/null +++ b/noname/library/config-menu/general/config/round-menu-function.js @@ -0,0 +1,15 @@ +import { Game } from "../../../../game.js"; +import { Is } from "../../../../get/is.js"; +import { ITEM } from "./round-menu-function/item.js"; + +export const ROUND_MENU_FUNCTION = { + name: "触屏按钮操作", + intro: "点击屏幕中圆形按钮时执行的操作", + init: "system", + unfrequent: true, + item: ITEM, + onclick(item) { + if (Is.nomenu("round_menu_func", item)) return false; + Game.saveConfig("round_menu_func", item); + } +}; diff --git a/noname/library/config-menu/general/config/round-menu-function/item.js b/noname/library/config-menu/general/config/round-menu-function/item.js new file mode 100644 index 000000000..c47a2c3f1 --- /dev/null +++ b/noname/library/config-menu/general/config/round-menu-function/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + system: "显示按钮", + menu: "打开菜单", + pause: "切换暂停", + auto: "切换托管" +}; diff --git a/noname/library/config-menu/general/config/show-splash.js b/noname/library/config-menu/general/config/show-splash.js new file mode 100644 index 000000000..2a8387eed --- /dev/null +++ b/noname/library/config-menu/general/config/show-splash.js @@ -0,0 +1,8 @@ +import { ITEM } from "./show-splash/item.js"; + +export const SHOW_SPLASH = { + name: "显示开始界面", + intro: "游戏开始前进入模式选择画面", + init: "init", + item: ITEM +}; diff --git a/noname/library/config-menu/general/config/show-splash/item.js b/noname/library/config-menu/general/config/show-splash/item.js new file mode 100644 index 000000000..15e80da89 --- /dev/null +++ b/noname/library/config-menu/general/config/show-splash/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + off: "关闭", + init: "首次启动", + always: "保持开启" +}; diff --git a/noname/library/config-menu/general/config/skip-shan.js b/noname/library/config-menu/general/config/skip-shan.js new file mode 100644 index 000000000..ccb494e23 --- /dev/null +++ b/noname/library/config-menu/general/config/skip-shan.js @@ -0,0 +1,6 @@ +export const SKIP_SHAN = { + name: "无闪自动取消", + init: false, + unfrequent: true, + intro: "当自己需要使用或打出【闪】时,若自己没有【闪】,则跳过该步骤" +}; diff --git a/noname/library/config-menu/general/config/swipe-down.js b/noname/library/config-menu/general/config/swipe-down.js new file mode 100644 index 000000000..3d1af3144 --- /dev/null +++ b/noname/library/config-menu/general/config/swipe-down.js @@ -0,0 +1,15 @@ +import { Game } from "../../../../game.js"; +import { Is } from "../../../../get/is.js"; +import { SWIPE_ITEM } from "./swipe-item.js"; + +export const SWIPE_DOWN = { + name: "下划操作", + init: "menu", + unfrequent: true, + intro: "向下滑动时执行的操作", + item: SWIPE_ITEM, + onclick(item) { + if (Is.nomenu("swipe_down", item)) return false; + Game.saveConfig("swipe_down", item); + } +}; diff --git a/noname/library/config-menu/general/config/swipe-item.js b/noname/library/config-menu/general/config/swipe-item.js new file mode 100644 index 000000000..5992db082 --- /dev/null +++ b/noname/library/config-menu/general/config/swipe-item.js @@ -0,0 +1,8 @@ +export const SWIPE_ITEM = { + system: "显示按钮", + menu: "打开菜单", + pause: "切换暂停", + auto: "切换托管", + chat: "显示聊天", + off: "关闭" +}; diff --git a/noname/library/config-menu/general/config/swipe-left.js b/noname/library/config-menu/general/config/swipe-left.js new file mode 100644 index 000000000..9ef49fd47 --- /dev/null +++ b/noname/library/config-menu/general/config/swipe-left.js @@ -0,0 +1,15 @@ +import { Game } from "../../../../game.js"; +import { Is } from "../../../../get/is.js"; +import { SWIPE_ITEM } from "./swipe-item.js"; + +export const SWIPE_LEFT = { + name: "左划操作", + intro: "向左滑动时执行的操作", + init: "system", + unfrequent: true, + item: SWIPE_ITEM, + onclick(item) { + if (Is.nomenu("swipe_left", item)) return false; + Game.saveConfig("swipe_left", item); + } +}; diff --git a/noname/library/config-menu/general/config/swipe-right.js b/noname/library/config-menu/general/config/swipe-right.js new file mode 100644 index 000000000..807af7e7d --- /dev/null +++ b/noname/library/config-menu/general/config/swipe-right.js @@ -0,0 +1,15 @@ +import { Game } from "../../../../game.js"; +import { Is } from "../../../../get/is.js"; +import { SWIPE_ITEM } from "./swipe-item.js"; + +export const SWIPE_RIGHT = { + name: "右划操作", + intro: "向右滑动时执行的操作", + init: "system", + unfrequent: true, + item: SWIPE_ITEM, + onclick(item) { + if (Is.nomenu("swipe_right", item)) return false; + Game.saveConfig("swipe_right", item); + } +}; diff --git a/noname/library/config-menu/general/config/swipe-up.js b/noname/library/config-menu/general/config/swipe-up.js new file mode 100644 index 000000000..d6c85db8f --- /dev/null +++ b/noname/library/config-menu/general/config/swipe-up.js @@ -0,0 +1,15 @@ +import { Game } from "../../../../game.js"; +import { Is } from "../../../../get/is.js"; +import { SWIPE_ITEM } from "./swipe-item.js"; + +export const SWIPE_UP = { + name: "上划操作", + intro: "向上滑动时执行的操作", + init: "auto", + unfrequent: true, + item: SWIPE_ITEM, + onclick(item) { + if (Is.nomenu("swipe_up", item)) return false; + Game.saveConfig("swipe_up", item); + } +}; diff --git a/noname/library/config-menu/general/config/swipe.js b/noname/library/config-menu/general/config/swipe.js new file mode 100644 index 000000000..026eb62cd --- /dev/null +++ b/noname/library/config-menu/general/config/swipe.js @@ -0,0 +1,6 @@ +export const SWIPE = { + name: "滑动手势", + init: true, + unfrequent: true, + intro: "在非滚动区域向四个方向滑动可执行对应操作" +}; diff --git a/noname/library/config-menu/general/config/synchronize-speed.js b/noname/library/config-menu/general/config/synchronize-speed.js new file mode 100644 index 000000000..f89dceeec --- /dev/null +++ b/noname/library/config-menu/general/config/synchronize-speed.js @@ -0,0 +1,5 @@ +export const SYNCHRONIZE_SPEED = { + name: "限制结算速度", + intro: "在动画结算完成前不执行下一步操作,开启后游戏操作的间隔更长但画面更浏畅,在游戏较卡时建议开启", + init: true +}; diff --git a/noname/library/config-menu/general/config/tao-enemy.js b/noname/library/config-menu/general/config/tao-enemy.js new file mode 100644 index 000000000..1dfc9d7f0 --- /dev/null +++ b/noname/library/config-menu/general/config/tao-enemy.js @@ -0,0 +1,6 @@ +export const TAO_ENEMY = { + name: "不对敌方出桃", + init: false, + intro: "双方阵营明确的模式中(如对决),敌方角色濒死时不询问出桃", + unfrequent: true +}; diff --git a/noname/library/config-menu/general/config/touchscreen.js b/noname/library/config-menu/general/config/touchscreen.js new file mode 100644 index 000000000..f20c99056 --- /dev/null +++ b/noname/library/config-menu/general/config/touchscreen.js @@ -0,0 +1,14 @@ +import { Game } from "../../../../game.js"; +import { Is } from "../../../../get/is.js"; + +export const TOUCHSCREEN = { + name: "触屏模式", + init: false, + restart: true, + unfrequent: true, + intro: "开启后可使触屏设备反应更快,但无法使用鼠标操作", + onclick(bool) { + if (Is.nomenu("touchscreen", bool)) return false; + Game.saveConfig("touchscreen", bool); + } +}; diff --git a/noname/library/config-menu/general/config/un-auto-choose.js b/noname/library/config-menu/general/config/un-auto-choose.js new file mode 100644 index 000000000..bd2902b6c --- /dev/null +++ b/noname/library/config-menu/general/config/un-auto-choose.js @@ -0,0 +1,6 @@ +export const UN_AUTO_CHOOSE = { + name: "拆顺手牌选择", + init: false, + unfrequent: true, + intro: "拆牌或者顺牌时,就算只能选择对方的手牌依然手动选择" +}; diff --git a/noname/library/config-menu/general/config/update-link.js b/noname/library/config-menu/general/config/update-link.js new file mode 100644 index 000000000..d539377cb --- /dev/null +++ b/noname/library/config-menu/general/config/update-link.js @@ -0,0 +1,15 @@ +import { Game } from "../../../../game.js"; +import { Library } from "../../../../library.js"; +import { updateURLs } from "../../../update-urls.js"; +import { ITEM } from "./update-link/item.js"; + +export const UPDATE_LINK = { + name: "更新地址", + init: "coding", + unfrequent: true, + item: ITEM, + onclick(item) { + Game.saveConfig("update_link", item); + Library.updateURL = updateURLs[item] || updateURLs.coding; + } +}; diff --git a/noname/library/config-menu/general/config/update-link/item.js b/noname/library/config-menu/general/config/update-link/item.js new file mode 100644 index 000000000..a5667de4c --- /dev/null +++ b/noname/library/config-menu/general/config/update-link/item.js @@ -0,0 +1,4 @@ +export const ITEM = { + coding: "CSDN", + github: "GitHub" +}; diff --git a/noname/library/config-menu/general/config/video.js b/noname/library/config-menu/general/config/video.js new file mode 100644 index 000000000..59a7fb4c9 --- /dev/null +++ b/noname/library/config-menu/general/config/video.js @@ -0,0 +1,9 @@ +import { ITEM } from "./video/item.js"; + +export const VIDEO = { + name: "保存录像", + init: "20", + intro: "游戏结束后保存录像在最大条数,超过后将从最早的录像开始删除(已收藏的录像不计入条数)", + item: ITEM, + unfrequent: true +}; diff --git a/noname/library/config-menu/general/config/video/item.js b/noname/library/config-menu/general/config/video/item.js new file mode 100644 index 000000000..51f4b1320 --- /dev/null +++ b/noname/library/config-menu/general/config/video/item.js @@ -0,0 +1,8 @@ +export const ITEM = { + "0": "关闭", + "5": "五局", + "10": "十局", + "20": "二十局", + "50": "五十局", + "10000": "无限" +}; diff --git a/noname/library/config-menu/general/config/wuxie-self.js b/noname/library/config-menu/general/config/wuxie-self.js new file mode 100644 index 000000000..2a7e28ba3 --- /dev/null +++ b/noname/library/config-menu/general/config/wuxie-self.js @@ -0,0 +1,6 @@ +export const WUXIE_SELF = { + name: "不无懈自己", + init: true, + unfrequent: true, + intro: "自己使用的单目标普通锦囊即将生效时,不询问无懈" +}; diff --git a/noname/library/config.d.ts b/noname/library/config.d.ts index 5a3b8cd63..75890ba8b 100644 --- a/noname/library/config.d.ts +++ b/noname/library/config.d.ts @@ -1,4 +1,5 @@ interface Config extends Record { + extension_sources: Record; favouriteCharacter: string[]; } diff --git a/noname/library/dynamic-translate.d.ts b/noname/library/dynamic-translate.d.ts index a04a11534..8f1700f75 100644 --- a/noname/library/dynamic-translate.d.ts +++ b/noname/library/dynamic-translate.d.ts @@ -1,4 +1,4 @@ -import { Player } from "./element/player"; +import { Player } from "./element/player.js"; interface DynamicTranslate extends Record string> { } diff --git a/noname/library/element.js b/noname/library/element.js index 16f281fd8..2b1a49366 100644 --- a/noname/library/element.js +++ b/noname/library/element.js @@ -1,7 +1,9 @@ import { GameEvent } from "./element/game-event.js"; import { Player } from "./element/player.js"; +import { VCard } from "./element/v-card.js"; export const element = { Player, + VCard, GameEvent }; diff --git a/noname/status.js b/noname/status.js index 7251ce88d..4a54b1d68 100644 --- a/noname/status.js +++ b/noname/status.js @@ -1,5 +1,5 @@ import { GameEvent } from "./library/element/game-event.js"; -import { aiStatus } from "./status/ai.js"; +import { ai } from "./status/ai.js"; import { cardTag } from "./status/card-tag.js"; import { postReconnect } from "./status/post-reconnect.js"; @@ -11,7 +11,7 @@ export const status = { clicked: false, auto: false, event: GameEvent.initialGameEvent(), - ai: aiStatus, + ai, lastdragchange: [], skillaudio: [], dieClose: [], diff --git a/noname/status/ai.d.ts b/noname/status/ai.d.ts index 2e5307f7b..614bad741 100644 --- a/noname/status/ai.d.ts +++ b/noname/status/ai.d.ts @@ -1,7 +1,7 @@ -import { Player } from "../library/element/player"; +import { Player } from "../library/element/player.js"; -interface AIStatus extends Record { +interface AI extends Record { customAttitude: ((from: Player, to: Player) => number)[]; } -export const aiStatus: AIStatus; +export const ai: AI; diff --git a/noname/status/ai.js b/noname/status/ai.js index 1c105a077..746fcf74d 100644 --- a/noname/status/ai.js +++ b/noname/status/ai.js @@ -1,3 +1,3 @@ -export const aiStatus = { +export const ai = { customAttitude: [] }; diff --git a/noname/status/global-history.d.ts b/noname/status/global-history.d.ts index 79347d87e..d93c2ca1e 100644 --- a/noname/status/global-history.d.ts +++ b/noname/status/global-history.d.ts @@ -2,7 +2,7 @@ import { GameEvent } from "../library/element/game-event"; export interface GlobalHistory { cardMove: GameEvent[]; - custom: any[]; + custom: unknown[]; useCard: GameEvent[]; changeHp: GameEvent[]; everything: GameEvent[]; diff --git a/noname/ui/create.js b/noname/ui/create.js new file mode 100644 index 000000000..adc8eb691 --- /dev/null +++ b/noname/ui/create.js @@ -0,0 +1 @@ +export class Create { } From 47a1531291ac51a23bcd3a2641bbdf0e6e84d86d Mon Sep 17 00:00:00 2001 From: Tipx-L <138244655+Tipx-L@users.noreply.github.com> Date: Wed, 6 Dec 2023 21:34:53 -0800 Subject: [PATCH 078/302] Start migrating the appearance configuration menu. --- noname/gnc.js | 38 +++++ noname/gnc/is.js | 18 ++ noname/library.js | 4 +- noname/library/character-dialog-group.js | 4 +- noname/library/config-menu.js | 5 - noname/library/config-menu/general.js | 6 - noname/library/config.d.ts | 6 - noname/library/config.js | 1 - noname/library/configuration-menu.js | 7 + .../library/configuration-menu/appearance.js | 6 + .../appearance/configuration.js | 17 ++ .../configuration/image-background.js | 159 ++++++++++++++++++ .../configuration/image-background/item.js | 1 + .../appearance/configuration/layout.js | 158 +++++++++++++++++ .../appearance/configuration/layout/item.js | 7 + .../configuration/player-height-nova.js | 12 ++ .../configuration/player-height-nova/item.js | 5 + .../appearance/configuration/player-height.js | 13 ++ .../configuration/player-height/item.js | 5 + .../appearance/configuration/splash-style.js | 16 ++ .../configuration/splash-style/item.js | 4 + .../appearance/configuration/theme.js | 46 +++++ .../appearance/configuration/theme/item.js | 1 + .../appearance/configuration/ui-zoom.js | 33 ++++ .../appearance/configuration/ui-zoom/item.js | 12 ++ noname/library/configuration-menu/general.js | 6 + .../general/configuration.js} | 88 +++++----- .../configuration}/auto-check-update.js | 0 .../general/configuration}/auto-confirm.js | 0 .../general/configuration}/compatible-mode.js | 0 .../general/configuration}/confirm-exit.js | 0 .../general/configuration}/developer.js | 0 .../double-click-introduction.js | 0 .../configuration}/enable-drag-line.js | 0 .../general/configuration}/enable-drag.js | 0 .../configuration}/enable-touch-drag-line.js | 0 .../general/configuration}/enable-vibrate.js | 0 .../general/configuration}/error-stop.js | 0 .../configuration}/extension-create.js | 4 +- .../configuration}/extension-delete.js | 8 +- .../configuration}/extension-source.js | 6 +- .../general/configuration}/fuck-so-json.js | 0 .../general/configuration}/game-speed.js | 0 .../general/configuration}/game-speed/item.js | 0 .../general/configuration}/hover-all.js | 0 .../general/configuration}/hover-hand-card.js | 0 .../general/configuration}/hoveration.js | 0 .../general/configuration}/hoveration/item.js | 0 .../general/configuration}/keep-awake.js | 0 .../configuration}/long-press-information.js | 0 .../general/configuration}/low-performance.js | 0 .../general/configuration}/lucky-star.js | 0 .../configuration}/maximum-load-time.js | 0 .../configuration}/maximum-load-time/item.js | 0 .../general/configuration}/mount-combine.js | 0 .../general/configuration}/mouse-wheel.js | 6 +- .../general/configuration}/right-click.js | 0 .../configuration}/right-click/item.js | 0 .../configuration}/right-information.js | 0 .../configuration}/round-menu-function.js | 0 .../round-menu-function/item.js | 0 .../general/configuration}/show-splash.js | 0 .../configuration}/show-splash/item.js | 0 .../general/configuration}/skip-shan.js | 0 .../general/configuration}/swipe-down.js | 0 .../general/configuration}/swipe-item.js | 0 .../general/configuration}/swipe-left.js | 0 .../general/configuration}/swipe-right.js | 0 .../general/configuration}/swipe-up.js | 0 .../general/configuration}/swipe.js | 0 .../configuration}/synchronize-speed.js | 0 .../general/configuration}/tao-enemy.js | 0 .../general/configuration}/touchscreen.js | 0 .../general/configuration}/un-auto-choose.js | 0 .../general/configuration}/update-link.js | 0 .../configuration}/update-link/item.js | 0 .../general/configuration}/video.js | 0 .../general/configuration}/video/item.js | 0 .../general/configuration}/wuxie-self.js | 0 noname/library/configuration.d.ts | 6 + noname/library/configuration.js | 1 + noname/library/initialization.js | 1 + noname/ui/css.d.ts | 3 + noname/ui/css.js | 1 + 84 files changed, 636 insertions(+), 78 deletions(-) create mode 100644 noname/gnc.js create mode 100644 noname/gnc/is.js delete mode 100644 noname/library/config-menu.js delete mode 100644 noname/library/config-menu/general.js delete mode 100644 noname/library/config.d.ts delete mode 100644 noname/library/config.js create mode 100644 noname/library/configuration-menu.js create mode 100644 noname/library/configuration-menu/appearance.js create mode 100644 noname/library/configuration-menu/appearance/configuration.js create mode 100644 noname/library/configuration-menu/appearance/configuration/image-background.js create mode 100644 noname/library/configuration-menu/appearance/configuration/image-background/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/layout.js create mode 100644 noname/library/configuration-menu/appearance/configuration/layout/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/player-height-nova.js create mode 100644 noname/library/configuration-menu/appearance/configuration/player-height-nova/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/player-height.js create mode 100644 noname/library/configuration-menu/appearance/configuration/player-height/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/splash-style.js create mode 100644 noname/library/configuration-menu/appearance/configuration/splash-style/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/theme.js create mode 100644 noname/library/configuration-menu/appearance/configuration/theme/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/ui-zoom.js create mode 100644 noname/library/configuration-menu/appearance/configuration/ui-zoom/item.js create mode 100644 noname/library/configuration-menu/general.js rename noname/library/{config-menu/general/config.js => configuration-menu/general/configuration.js} (53%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/auto-check-update.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/auto-confirm.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/compatible-mode.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/confirm-exit.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/developer.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/double-click-introduction.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/enable-drag-line.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/enable-drag.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/enable-touch-drag-line.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/enable-vibrate.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/error-stop.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/extension-create.js (93%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/extension-delete.js (79%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/extension-source.js (50%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/fuck-so-json.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/game-speed.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/game-speed/item.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/hover-all.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/hover-hand-card.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/hoveration.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/hoveration/item.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/keep-awake.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/long-press-information.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/low-performance.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/lucky-star.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/maximum-load-time.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/maximum-load-time/item.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/mount-combine.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/mouse-wheel.js (82%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/right-click.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/right-click/item.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/right-information.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/round-menu-function.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/round-menu-function/item.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/show-splash.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/show-splash/item.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/skip-shan.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/swipe-down.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/swipe-item.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/swipe-left.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/swipe-right.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/swipe-up.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/swipe.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/synchronize-speed.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/tao-enemy.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/touchscreen.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/un-auto-choose.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/update-link.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/update-link/item.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/video.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/video/item.js (100%) rename noname/library/{config-menu/general/config => configuration-menu/general/configuration}/wuxie-self.js (100%) create mode 100644 noname/library/configuration.d.ts create mode 100644 noname/library/configuration.js create mode 100644 noname/library/initialization.js create mode 100644 noname/ui/css.d.ts create mode 100644 noname/ui/css.js diff --git a/noname/gnc.js b/noname/gnc.js new file mode 100644 index 000000000..b149621ed --- /dev/null +++ b/noname/gnc.js @@ -0,0 +1,38 @@ +import { Is } from "./gnc/is.js"; + +export const gnc = { + of(fn) { + return Is.generatorFunc(fn) ? function genCoroutine() { + let gen = fn.apply(this, arguments); + gen.status = "next"; + gen.state = undefined; + const callback = (resolve, reject) => { + let result, + nexts = resolve, + throws = reject; + try { + result = gen[gen.status](gen.state); + } catch (error) { + reject(error); + return; + } + if (!result.done) { + nexts = (item) => { + gen.state = item; + gen.status = "next"; + callback(resolve, reject); + } + throws = (err) => { + gen.state = err; + gen.status = "throw"; + callback(resolve, reject); + } + } + result = result.value; + Promise.resolve(result).then(nexts, throws); + } + return new Promise(callback); + } : (() => { throw new TypeError("gnc.of needs a GeneratorFunction.") })(); + }, + is: Is +}; diff --git a/noname/gnc/is.js b/noname/gnc/is.js new file mode 100644 index 000000000..b0715d035 --- /dev/null +++ b/noname/gnc/is.js @@ -0,0 +1,18 @@ +const GeneratorFunction = (function* () { }).constructor; + +export class Is { + static coroutine(item) { + return typeof item == "function" && item.name == "genCoroutine"; + } + + /** + * @returns {item is GeneratorFunction} + */ + static generatorFunc(item) { + return item instanceof GeneratorFunction; + } + + static generator(item) { + return typeof item == "object" && "constructor" in item && item.constructor && "constructor" in item.constructor && item.constructor.constructor === GeneratorFunction; + } +} diff --git a/noname/library.js b/noname/library.js index b92d40f92..8869613f3 100644 --- a/noname/library.js +++ b/noname/library.js @@ -10,7 +10,7 @@ import { characterPack } from "./library/character-pack.js"; import { characterReplace } from "./library/character-replace.js"; import { characterSort } from "./library/character-sort.js"; import { characterTitle } from "./library/character-title.js"; -import { configMenu } from "./library/config-menu.js"; +import { CONFIGURATION_MENU } from "./library/configuration-menu.js"; import { dynamicTranslate } from "./library/dynamic-translate.js"; import { element } from "./library/element.js"; import { emotionList } from "./library/emotion-list.js"; @@ -100,7 +100,7 @@ export class Library { ["霹雳投石车", "霹雳车"] ]) static characterDialogGroup = CharacterDialogGroup; - static configMenu = configMenu; + static configMenu = CONFIGURATION_MENU; constructor() { throw new TypeError(`${new.target.name} is not a constructor`); diff --git a/noname/library/character-dialog-group.js b/noname/library/character-dialog-group.js index f3d9fa11a..a4ed6040a 100644 --- a/noname/library/character-dialog-group.js +++ b/noname/library/character-dialog-group.js @@ -1,5 +1,5 @@ import { Get } from "../get.js"; -import { config } from "./config.js"; +import { configuration } from "./configuration.js"; export class CharacterDialogGroup { constructor() { @@ -7,7 +7,7 @@ export class CharacterDialogGroup { } static 收藏(name, capt) { - return config.favouriteCharacter.includes(name) ? capt : null; + return configuration.favouriteCharacter.includes(name) ? capt : null; } static 最近(name, capt) { diff --git a/noname/library/config-menu.js b/noname/library/config-menu.js deleted file mode 100644 index 13f8e0057..000000000 --- a/noname/library/config-menu.js +++ /dev/null @@ -1,5 +0,0 @@ -import { general } from "./config-menu/general.js"; - -export const configMenu = { - general -}; diff --git a/noname/library/config-menu/general.js b/noname/library/config-menu/general.js deleted file mode 100644 index d3d34ce08..000000000 --- a/noname/library/config-menu/general.js +++ /dev/null @@ -1,6 +0,0 @@ -import { config } from "./general/config.js"; - -export const general = { - name: "通用", - config -}; diff --git a/noname/library/config.d.ts b/noname/library/config.d.ts deleted file mode 100644 index 75890ba8b..000000000 --- a/noname/library/config.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -interface Config extends Record { - extension_sources: Record; - favouriteCharacter: string[]; -} - -export const config: Config; diff --git a/noname/library/config.js b/noname/library/config.js deleted file mode 100644 index c4470d209..000000000 --- a/noname/library/config.js +++ /dev/null @@ -1 +0,0 @@ -export const config = {}; diff --git a/noname/library/configuration-menu.js b/noname/library/configuration-menu.js new file mode 100644 index 000000000..e984fcf0a --- /dev/null +++ b/noname/library/configuration-menu.js @@ -0,0 +1,7 @@ +import { APPEARANCE } from "./configuration-menu/appearance.js"; +import { GENERAL } from "./configuration-menu/general.js"; + +export const CONFIGURATION_MENU = { + general: GENERAL, + appearence: APPEARANCE +}; diff --git a/noname/library/configuration-menu/appearance.js b/noname/library/configuration-menu/appearance.js new file mode 100644 index 000000000..56f8d0e33 --- /dev/null +++ b/noname/library/configuration-menu/appearance.js @@ -0,0 +1,6 @@ +import { CONFIGURATION } from "./appearance/configuration.js"; + +export const APPEARANCE = { + name: "外观", + config: CONFIGURATION +}; diff --git a/noname/library/configuration-menu/appearance/configuration.js b/noname/library/configuration-menu/appearance/configuration.js new file mode 100644 index 000000000..56a52ca69 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration.js @@ -0,0 +1,17 @@ +import { IMAGE_BACKGROUND } from "./configuration/image-background.js"; +import { LAYOUT } from "./configuration/layout.js"; +import { PLAYER_HEIGHT_NOVA } from "./configuration/player-height-nova.js"; +import { PLAYER_HEIGHT } from "./configuration/player-height.js"; +import { SPLASH_STYLE } from "./configuration/splash-style.js"; +import { THEME } from "./configuration/theme.js"; +import { UI_ZOOM } from "./configuration/ui-zoom.js"; + +export const CONFIGURATION = { + theme: THEME, + layout: LAYOUT, + splash_style: SPLASH_STYLE, + player_height: PLAYER_HEIGHT, + player_height_nova: PLAYER_HEIGHT_NOVA, + ui_zoom: UI_ZOOM, + image_background: IMAGE_BACKGROUND +}; diff --git a/noname/library/configuration-menu/appearance/configuration/image-background.js b/noname/library/configuration-menu/appearance/configuration/image-background.js new file mode 100644 index 000000000..8994d42bc --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/image-background.js @@ -0,0 +1,159 @@ +import { Game } from "../../../../game.js"; +import { Create } from "../../../../ui/create.js"; +import { configuration } from "../../../configuration.js"; +import { Initialization } from "../../../initialization.js"; +import { ITEM } from "./image-background/item.js"; + +export const IMAGE_BACKGROUND = { + name: "游戏背景", + init: "default", + item: ITEM, + visualBar(node, item, create) { + if (node.created) { + node.lastChild.classList.remove("active"); + return; + } + node.created = true; + Create.filediv(".menubutton", "添加背景", node, function (file) { + if (file) { + var name = file.name; + if (name.includes(".")) { + name = name.slice(0, name.indexOf(".")); + } + var link = `${Game.writeFile ? "cdv_" : "custom_"}${name}`; + if (item[link]) { + for (var i = 1; i < 1000; i++) { + if (!item[`${link}_${i}`]) { + link = `${link}_${i}`; break; + } + } + } + item[link] = name; + var callback = function () { + create(link, node.parentNode.defaultNode); + node.parentNode.updateBr(); + configuration.customBackgroundPack.add(link); + Game.saveConfig("customBackgroundPack", configuration.customBackgroundPack); + }; + if (Game.writeFile) { + Game.writeFile(file, "image/background", `${link}.jpg`, callback); + } + else { + Game.putDB("image", link, file, callback); + } + if (node.lastChild.classList.contains("active")) { + editbg.call(node.lastChild); + } + } + }).inputNode.accept = "image/*"; + var editbg = function () { + this.classList.toggle("active"); + var page = this.parentNode.parentNode; + for (var i = 0; i < page.childElementCount; i++) { + if (page.childNodes[i].classList.contains("button")) { + var link = page.childNodes[i]._link; + if (link && link != "default") { + var str; + if (this.classList.contains("active")) { + if (link.startsWith("custom_") || link.startsWith("cdv_")) { + str = "删除"; + } + else { + str = "隐藏"; + } + } + else { + str = item[link]; + } + page.childNodes[i].firstChild.innerHTML = get.verticalStr(str); + } + } + } + }; + Create.div(".menubutton", "编辑背景", node, editbg); + }, + visualMenu(node, link, name, config) { + node.className = "button character"; + node.style.backgroundImage = ""; + node.style.backgroundSize = ""; + if (node.firstChild) { + node.firstChild.innerHTML = get.verticalStr(name); + } + if (link == "default" || link.startsWith("custom_")) { + node.style.backgroundImage = "none"; + node.classList.add("dashedmenubutton"); + if (link.startsWith("custom_")) { + Game.getDB("image", link, function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + node.style.backgroundImage = `url(${data})`; + node.style.backgroundSize = "cover"; + node.classList.remove("dashedmenubutton"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + else { + node.parentNode.defaultNode = node; + } + } + else { + node.setBackgroundImage(`image/background/${link}.jpg`); + node.style.backgroundSize = "cover"; + } + }, + onclick(background, node) { + if (node && node.firstChild) { + var menu = node.parentNode; + if (node.firstChild.innerHTML == get.verticalStr("隐藏")) { + menu.parentNode.noclose = true; + node.remove(); + menu.updateBr(); + if (!configuration.prompt_hidebg) { + alert("隐藏的背景可通过选项-其它-重置隐藏内容恢复"); + Game.saveConfig("prompt_hidebg", true); + } + configuration.hiddenBackgroundPack.add(background); + Game.saveConfig("hiddenBackgroundPack", configuration.hiddenBackgroundPack); + delete ITEM[background]; + if (configuration.image_background == background) { + background = "default"; + this.lastChild.innerHTML = "默认"; + } + else { + this.lastChild.innerHTML = ITEM[configuration.image_background]; + return; + } + } + else if (node.firstChild.innerHTML == get.verticalStr("删除")) { + menu.parentNode.noclose = true; + if (confirm("是否删除此背景?(此操作不可撤销)")) { + node.remove(); + menu.updateBr(); + configuration.customBackgroundPack.remove(background); + Game.saveConfig("customBackgroundPack", configuration.customBackgroundPack); + if (background.startsWith("cdv_")) { + Game.removeFile(`image/background/${background}.jpg`); + } + else { + Game.deleteDB("image", background); + } + delete ITEM[background]; + if (configuration.image_background == background) { + background = "default"; + this.lastChild.innerHTML = "默认"; + } + else { + this.lastChild.innerHTML = ITEM[configuration.image_background]; + return; + } + } + } + } + Game.saveConfig("image_background", background); + Initialization.background(); + Game.updateBackground(); + }, +}; diff --git a/noname/library/configuration-menu/appearance/configuration/image-background/item.js b/noname/library/configuration-menu/appearance/configuration/image-background/item.js new file mode 100644 index 000000000..69a1c7a1a --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/image-background/item.js @@ -0,0 +1 @@ +export const ITEM = {}; diff --git a/noname/library/configuration-menu/appearance/configuration/layout.js b/noname/library/configuration-menu/appearance/configuration/layout.js new file mode 100644 index 000000000..ac22ad375 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/layout.js @@ -0,0 +1,158 @@ +import { Game } from "../../../../game.js"; +import { Library } from "../../../../library.js"; +import { Create } from "../../../../ui/create.js"; +import { configuration } from "../../../configuration.js"; +import { Initialization } from "../../../initialization.js"; +import { ITEM } from "./layout/item.js"; + +export const LAYOUT = { + name: "布局", + init: "mobile", + item: ITEM, + visualMenu(node, link) { + node.className = `button character themebutton ${configuration.theme}`; + if (!node.created) { + node.created = true; + node.style.overflow = "hidden"; + node.firstChild.style.display = "none"; + var me = Create.div(node); + me.style.top = "auto"; + if (link == "default" || link == "newlayout") { + me.style.width = "calc(100% - 6px)"; + me.style.left = "3px"; + me.style.bottom = "3px"; + me.style.height = "25px"; + if (link == "newlayout") { + me.style.height = "23px"; + me.style.bottom = "4px"; + } + } + else if (link == "long2" || link == "nova") { + me.style.display = "none"; + } + else { + me.style.width = "120%"; + me.style.left = "-10%"; + me.style.bottom = "0"; + me.style.height = "22px"; + } + me.style.borderRadius = "2px"; + var list = ["re_caocao", "re_liubei", "sp_zhangjiao", "sunquan"]; + for (var i = 0; i < 4; i++) { + var player = Create.div(".fakeplayer", node); + Create.div(".avatar", player).setBackground(list.randomRemove(), "character"); + player.style.borderRadius = "2px"; + if (i != 3) { + player.style.top = "auto"; + } + if (link == "default") { + player.style.height = "19px"; + player.style.width = "38px"; + player.classList.add("oldlayout") + } + else if (link == "mobile" || link == "newlayout") { + player.style.width = "24px"; + player.style.height = "29px"; + } + else if (link == "nova") { + player.style.width = "20px"; + player.style.height = "24px"; + } + else { + player.style.width = "20px"; + player.style.height = "34px"; + } + if (i == 1) { + player.style.left = "3px"; + } + if (i == 2) { + player.style.left = "auto"; + player.style.right = "3px"; + } + if (i == 3) { + player.style.top = "3px"; + } + if (link == "default") { + if (i == 0) { + player.style.bottom = "6px"; + } + if (i == 0 || i == 3) { + player.style.left = "calc(50% - 18px)"; + } + if (i == 1 || i == 2) { + player.style.bottom = "36px"; + } + } + else if (link == "newlayout") { + if (i == 0) { + player.style.bottom = "1px"; + } + if (i == 0 || i == 3) { + player.style.left = "calc(50% - 12px)"; + } + if (i == 1 || i == 2) { + player.style.bottom = "32px"; + } + } + else if (link == "mobile") { + if (i == 0 || i == 3) { + player.style.left = "calc(50% - 12px)"; + } + if (i == 1 || i == 2) { + player.style.bottom = "30px"; + } + } + else if (link == "long") { + if (i == 0 || i == 3) { + player.style.left = "calc(50% - 10px)"; + } + if (i == 1 || i == 2) { + player.style.bottom = "45px"; + } + } + else if (link == "long2") { + if (i == 0) { + player.style.bottom = "2px"; + player.style.left = "3px"; + } + if (i == 3) { + player.style.left = "calc(50% - 10px)"; + } + if (i == 1 || i == 2) { + player.style.bottom = "45px"; + } + } + else if (link == "nova") { + if (i == 0) { + player.style.bottom = "2px"; + player.style.left = "3px"; + } + if (i == 3) { + player.style.left = "calc(50% - 10px)"; + } + if (i == 1 || i == 2) { + player.style.left = "3px"; + player.style.bottom = (i * 30) + "px"; + } + } + + if (i == 0 && (link == "mobile" || link == "long")) { + player.classList.add("me"); + player.style.borderRadius = "0px"; + player.style.width = "25px"; + player.style.height = "25px"; + player.style.bottom = "-3px"; + player.style.left = "-3px"; + } + } + } + }, + onclick(layout) { + if (Library.layoutfixed.includes(configuration.mode)) { + Game.saveConfig("layout", layout); + } + else { + Initialization.layout(layout); + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/layout/item.js b/noname/library/configuration-menu/appearance/configuration/layout/item.js new file mode 100644 index 000000000..c4e69294f --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/layout/item.js @@ -0,0 +1,7 @@ +export const ITEM = { + newlayout: "对称", + mobile: "默认", + long: "宽屏", + long2: "手杀", + nova: "新版" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/player-height-nova.js b/noname/library/configuration-menu/appearance/configuration/player-height-nova.js new file mode 100644 index 000000000..d0b49a6b9 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/player-height-nova.js @@ -0,0 +1,12 @@ +import { UI } from "../../../../ui.js"; +import { ITEM } from "./player-height-nova/item.js"; + +export const PLAYER_HEIGHT_NOVA = { + name: "角色高度", + init: "short", + item: ITEM, + onclick(item) { + game.saveConfig("player_height_nova", item); + UI.arena.dataset.player_height_nova = item; + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/player-height-nova/item.js b/noname/library/configuration-menu/appearance/configuration/player-height-nova/item.js new file mode 100644 index 000000000..839d310c1 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/player-height-nova/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + short: "矮", + default: "中", + long: "高" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/player-height.js b/noname/library/configuration-menu/appearance/configuration/player-height.js new file mode 100644 index 000000000..731059c13 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/player-height.js @@ -0,0 +1,13 @@ +import { Game } from "../../../../game.js"; +import { UI } from "../../../../ui.js"; +import { ITEM } from "./player-height/item.js"; + +export const PLAYER_HEIGHT = { + name: "角色高度", + init: "long", + item: ITEM, + onclick(item) { + Game.saveConfig("player_height", item); + UI.arena.dataset.player_height = item; + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/player-height/item.js b/noname/library/configuration-menu/appearance/configuration/player-height/item.js new file mode 100644 index 000000000..839d310c1 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/player-height/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + short: "矮", + default: "中", + long: "高" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/splash-style.js b/noname/library/configuration-menu/appearance/configuration/splash-style.js new file mode 100644 index 000000000..bf230e5db --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/splash-style.js @@ -0,0 +1,16 @@ +import { ITEM } from "./splash-style/item.js"; + +export const SPLASH_STYLE = { + name: "启动页", + item: ITEM, + visualMenu(node, link) { + node.className = "button character"; + node.style.width = "200px"; + node.style.height = `${node.offsetWidth * 1080 / 2400}px`; + node.style.display = "flex"; + node.style.flexDirection = "column"; + node.style.alignItems = "center"; + node.style.backgroundSize = "100% 100%"; + node.setBackgroundImage(`image/splash/${link}.jpg`); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/splash-style/item.js b/noname/library/configuration-menu/appearance/configuration/splash-style/item.js new file mode 100644 index 000000000..8ea88f873 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/splash-style/item.js @@ -0,0 +1,4 @@ +export const ITEM = { + style1: "样式一", + style2: "样式二" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/theme.js b/noname/library/configuration-menu/appearance/configuration/theme.js new file mode 100644 index 000000000..80b3f6b11 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/theme.js @@ -0,0 +1,46 @@ +import { Game } from "../../../../game.js"; +import { gnc } from "../../../../gnc.js"; +import { Library } from "../../../../library.js"; +import { UI } from "../../../../ui.js"; +import { Create } from "../../../../ui/create.js"; +import { css } from "../../../../ui/css.js"; +import { announce } from "../../../announce.js"; +import { configuration } from "../../../configuration.js"; +import { Initialization } from "../../../initialization.js"; +import { ITEM } from "./theme/item.js"; + +export const THEME = { + name: "主题", + init: "woodden", + item: ITEM, + visualMenu(node, link) { + if (!node.menu) { + node.className = `button character themebutton ${link}`; + node.menu = Create.div(node, "", "
"); + } + }, + onclick: gnc.of(function* (theme) { + Game.saveConfig("theme", theme); + UI.arena.hide(); + Initialization.background(); + if (configuration.autostyle) { + if (theme === "simple") { + Library.configMenu.appearence.config.player_border.onclick("slim"); + } + else { + Library.configMenu.appearence.config.player_border.onclick("normal"); + } + } + announce.publish("Noname.Apperaence.Theme.onChanging", theme); + yield new Promise(resolve => setTimeout(resolve, 500)); + + const deletingTheme = css.theme; + css.theme = Initialization.css(`${Library.assetURL}theme/${configuration.theme}`, "style"); + deletingTheme.remove(); + announce.publish("Noname.Apperaence.Theme.onChanged", theme); + yield new Promise(resolve => setTimeout(resolve, 100)); + + UI.arena.show(); + announce.publish("Noname.Apperaence.Theme.onChangeFinished", theme); + }) +}; diff --git a/noname/library/configuration-menu/appearance/configuration/theme/item.js b/noname/library/configuration-menu/appearance/configuration/theme/item.js new file mode 100644 index 000000000..69a1c7a1a --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/theme/item.js @@ -0,0 +1 @@ +export const ITEM = {}; diff --git a/noname/library/configuration-menu/appearance/configuration/ui-zoom.js b/noname/library/configuration-menu/appearance/configuration/ui-zoom.js new file mode 100644 index 000000000..242a8f34f --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/ui-zoom.js @@ -0,0 +1,33 @@ +import { Game } from "../../../../game.js"; +import { Library } from "../../../../library.js"; +import { UI } from "../../../../ui.js"; +import { ITEM } from "./ui-zoom/item.js"; + +export const UI_ZOOM = { + name: "界面缩放", + unfrequent: true, + init: "normal", + item: ITEM, + onclick(zoom) { + Game.saveConfig("ui_zoom", zoom); + switch (zoom) { + case "esmall": zoom = 0.8; break; + case "vsmall": zoom = 0.9; break; + case "small": zoom = 0.93; break; + case "big": zoom = 1.05; break; + case "vbig": zoom = 1.1; break; + case "ebig": zoom = 1.2; break; + case "eebig": zoom = 1.5; break; + case "eeebig": zoom = 1.8; break; + case "eeeebig": zoom = 2; break; + default: zoom = 1; + } + Game.documentZoom = Game.deviceZoom * zoom; + UI.updatez(); + if (Array.isArray(Library.onresize)) { + Library.onresize.forEach(fun => { + if (typeof fun == "function") fun(); + }); + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/ui-zoom/item.js b/noname/library/configuration-menu/appearance/configuration/ui-zoom/item.js new file mode 100644 index 000000000..ac58ff7dc --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/ui-zoom/item.js @@ -0,0 +1,12 @@ +export const ITEM = { + esmall: "80%", + vsmall: "90%", + small: "95%", + normal: "100%", + big: "105%", + vbig: "110%", + ebig: "120%", + eebig: "150%", + eeebig: "180%", + eeeebig: "200%" +}; diff --git a/noname/library/configuration-menu/general.js b/noname/library/configuration-menu/general.js new file mode 100644 index 000000000..c7112b78a --- /dev/null +++ b/noname/library/configuration-menu/general.js @@ -0,0 +1,6 @@ +import { CONFIGURATION } from "./general/configuration.js"; + +export const GENERAL = { + name: "通用", + config: CONFIGURATION +}; diff --git a/noname/library/config-menu/general/config.js b/noname/library/configuration-menu/general/configuration.js similarity index 53% rename from noname/library/config-menu/general/config.js rename to noname/library/configuration-menu/general/configuration.js index b33d1d444..23b63f69d 100644 --- a/noname/library/config-menu/general/config.js +++ b/noname/library/configuration-menu/general/configuration.js @@ -1,50 +1,50 @@ import { Is } from "../../../get/is.js"; import { Library } from "../../../library.js"; -import { AUTO_CHECK_UPDATE } from "./config/auto-check-update.js"; -import { AUTO_CONFIRM } from "./config/auto-confirm.js"; -import { COMPATIBLE_MODE } from "./config/compatible-mode.js"; -import { CONFIRM_EXIT } from "./config/confirm-exit.js"; -import { DEVELOPER } from "./config/developer.js"; -import { DOUBLE_CLICK_INTRODUCTION } from "./config/double-click-introduction.js"; -import { ENABLE_DRAG_LINE } from "./config/enable-drag-line.js"; -import { ENABLE_DRAG } from "./config/enable-drag.js"; -import { ENABLE_TOUCH_DRAG_LINE } from "./config/enable-touch-drag-line.js"; -import { ENABLE_VIBRATE } from "./config/enable-vibrate.js"; -import { ERROR_STOP } from "./config/error-stop.js"; -import { EXTENSION_CREATE } from "./config/extension-create.js"; -import { EXTENSION_DELETE } from "./config/extension-delete.js"; -import { EXTENSION_SOURCE } from "./config/extension-source.js"; -import { FUCK_SO_JSON } from "./config/fuck-so-json.js"; -import { GAME_SPEED } from "./config/game-speed.js"; -import { HOVER_ALL } from "./config/hover-all.js"; -import { HOVER_HAND_CARD } from "./config/hover-hand-card.js"; -import { HOVERATION } from "./config/hoveration.js"; -import { KEEP_AWAKE } from "./config/keep-awake.js"; -import { LONG_PRESS_INFORMATION } from "./config/long-press-information.js"; -import { LOW_PERFORMANCE } from "./config/low-performance.js"; -import { LUCKY_STAR } from "./config/lucky-star.js"; -import { MAXIMUM_LOAD_TIME } from "./config/maximum-load-time.js"; -import { MOUNT_COMBINE } from "./config/mount-combine.js"; -import { MOUSE_WHEEL } from "./config/mouse-wheel.js"; -import { RIGHT_CLICK } from "./config/right-click.js"; -import { RIGHT_INFORMATION } from "./config/right-information.js"; -import { ROUND_MENU_FUNCTION } from "./config/round-menu-function.js"; -import { SHOW_SPLASH } from "./config/show-splash.js"; -import { SKIP_SHAN } from "./config/skip-shan.js"; -import { SWIPE_DOWN } from "./config/swipe-down.js"; -import { SWIPE_LEFT } from "./config/swipe-left.js"; -import { SWIPE_RIGHT } from "./config/swipe-right.js"; -import { SWIPE_UP } from "./config/swipe-up.js"; -import { SWIPE } from "./config/swipe.js"; -import { SYNCHRONIZE_SPEED } from "./config/synchronize-speed.js"; -import { TAO_ENEMY } from "./config/tao-enemy.js"; -import { TOUCHSCREEN } from "./config/touchscreen.js"; -import { UN_AUTO_CHOOSE } from "./config/un-auto-choose.js"; -import { UPDATE_LINK } from "./config/update-link.js"; -import { VIDEO } from "./config/video.js"; -import { WUXIE_SELF } from "./config/wuxie-self.js"; +import { AUTO_CHECK_UPDATE } from "./configuration/auto-check-update.js"; +import { AUTO_CONFIRM } from "./configuration/auto-confirm.js"; +import { COMPATIBLE_MODE } from "./configuration/compatible-mode.js"; +import { CONFIRM_EXIT } from "./configuration/confirm-exit.js"; +import { DEVELOPER } from "./configuration/developer.js"; +import { DOUBLE_CLICK_INTRODUCTION } from "./configuration/double-click-introduction.js"; +import { ENABLE_DRAG_LINE } from "./configuration/enable-drag-line.js"; +import { ENABLE_DRAG } from "./configuration/enable-drag.js"; +import { ENABLE_TOUCH_DRAG_LINE } from "./configuration/enable-touch-drag-line.js"; +import { ENABLE_VIBRATE } from "./configuration/enable-vibrate.js"; +import { ERROR_STOP } from "./configuration/error-stop.js"; +import { EXTENSION_CREATE } from "./configuration/extension-create.js"; +import { EXTENSION_DELETE } from "./configuration/extension-delete.js"; +import { EXTENSION_SOURCE } from "./configuration/extension-source.js"; +import { FUCK_SO_JSON } from "./configuration/fuck-so-json.js"; +import { GAME_SPEED } from "./configuration/game-speed.js"; +import { HOVER_ALL } from "./configuration/hover-all.js"; +import { HOVER_HAND_CARD } from "./configuration/hover-hand-card.js"; +import { HOVERATION } from "./configuration/hoveration.js"; +import { KEEP_AWAKE } from "./configuration/keep-awake.js"; +import { LONG_PRESS_INFORMATION } from "./configuration/long-press-information.js"; +import { LOW_PERFORMANCE } from "./configuration/low-performance.js"; +import { LUCKY_STAR } from "./configuration/lucky-star.js"; +import { MAXIMUM_LOAD_TIME } from "./configuration/maximum-load-time.js"; +import { MOUNT_COMBINE } from "./configuration/mount-combine.js"; +import { MOUSE_WHEEL } from "./configuration/mouse-wheel.js"; +import { RIGHT_CLICK } from "./configuration/right-click.js"; +import { RIGHT_INFORMATION } from "./configuration/right-information.js"; +import { ROUND_MENU_FUNCTION } from "./configuration/round-menu-function.js"; +import { SHOW_SPLASH } from "./configuration/show-splash.js"; +import { SKIP_SHAN } from "./configuration/skip-shan.js"; +import { SWIPE_DOWN } from "./configuration/swipe-down.js"; +import { SWIPE_LEFT } from "./configuration/swipe-left.js"; +import { SWIPE_RIGHT } from "./configuration/swipe-right.js"; +import { SWIPE_UP } from "./configuration/swipe-up.js"; +import { SWIPE } from "./configuration/swipe.js"; +import { SYNCHRONIZE_SPEED } from "./configuration/synchronize-speed.js"; +import { TAO_ENEMY } from "./configuration/tao-enemy.js"; +import { TOUCHSCREEN } from "./configuration/touchscreen.js"; +import { UN_AUTO_CHOOSE } from "./configuration/un-auto-choose.js"; +import { UPDATE_LINK } from "./configuration/update-link.js"; +import { VIDEO } from "./configuration/video.js"; +import { WUXIE_SELF } from "./configuration/wuxie-self.js"; -export const config = { +export const CONFIGURATION = { mount_combine: MOUNT_COMBINE, low_performance: LOW_PERFORMANCE, compatiblemode: COMPATIBLE_MODE, diff --git a/noname/library/config-menu/general/config/auto-check-update.js b/noname/library/configuration-menu/general/configuration/auto-check-update.js similarity index 100% rename from noname/library/config-menu/general/config/auto-check-update.js rename to noname/library/configuration-menu/general/configuration/auto-check-update.js diff --git a/noname/library/config-menu/general/config/auto-confirm.js b/noname/library/configuration-menu/general/configuration/auto-confirm.js similarity index 100% rename from noname/library/config-menu/general/config/auto-confirm.js rename to noname/library/configuration-menu/general/configuration/auto-confirm.js diff --git a/noname/library/config-menu/general/config/compatible-mode.js b/noname/library/configuration-menu/general/configuration/compatible-mode.js similarity index 100% rename from noname/library/config-menu/general/config/compatible-mode.js rename to noname/library/configuration-menu/general/configuration/compatible-mode.js diff --git a/noname/library/config-menu/general/config/confirm-exit.js b/noname/library/configuration-menu/general/configuration/confirm-exit.js similarity index 100% rename from noname/library/config-menu/general/config/confirm-exit.js rename to noname/library/configuration-menu/general/configuration/confirm-exit.js diff --git a/noname/library/config-menu/general/config/developer.js b/noname/library/configuration-menu/general/configuration/developer.js similarity index 100% rename from noname/library/config-menu/general/config/developer.js rename to noname/library/configuration-menu/general/configuration/developer.js diff --git a/noname/library/config-menu/general/config/double-click-introduction.js b/noname/library/configuration-menu/general/configuration/double-click-introduction.js similarity index 100% rename from noname/library/config-menu/general/config/double-click-introduction.js rename to noname/library/configuration-menu/general/configuration/double-click-introduction.js diff --git a/noname/library/config-menu/general/config/enable-drag-line.js b/noname/library/configuration-menu/general/configuration/enable-drag-line.js similarity index 100% rename from noname/library/config-menu/general/config/enable-drag-line.js rename to noname/library/configuration-menu/general/configuration/enable-drag-line.js diff --git a/noname/library/config-menu/general/config/enable-drag.js b/noname/library/configuration-menu/general/configuration/enable-drag.js similarity index 100% rename from noname/library/config-menu/general/config/enable-drag.js rename to noname/library/configuration-menu/general/configuration/enable-drag.js diff --git a/noname/library/config-menu/general/config/enable-touch-drag-line.js b/noname/library/configuration-menu/general/configuration/enable-touch-drag-line.js similarity index 100% rename from noname/library/config-menu/general/config/enable-touch-drag-line.js rename to noname/library/configuration-menu/general/configuration/enable-touch-drag-line.js diff --git a/noname/library/config-menu/general/config/enable-vibrate.js b/noname/library/configuration-menu/general/configuration/enable-vibrate.js similarity index 100% rename from noname/library/config-menu/general/config/enable-vibrate.js rename to noname/library/configuration-menu/general/configuration/enable-vibrate.js diff --git a/noname/library/config-menu/general/config/error-stop.js b/noname/library/configuration-menu/general/configuration/error-stop.js similarity index 100% rename from noname/library/config-menu/general/config/error-stop.js rename to noname/library/configuration-menu/general/configuration/error-stop.js diff --git a/noname/library/config-menu/general/config/extension-create.js b/noname/library/configuration-menu/general/configuration/extension-create.js similarity index 93% rename from noname/library/config-menu/general/config/extension-create.js rename to noname/library/configuration-menu/general/configuration/extension-create.js index 5bbd99b0a..cbc60ef29 100644 --- a/noname/library/config-menu/general/config/extension-create.js +++ b/noname/library/configuration-menu/general/configuration/extension-create.js @@ -1,7 +1,7 @@ import { Game } from "../../../../game.js"; import { UI } from "../../../../ui.js"; import { Create } from "../../../../ui/create.js"; -import { config } from "../../../config.js"; +import { configuration } from "../../../configuration.js"; export const EXTENSION_CREATE = { name: "添加获取扩展地址", @@ -11,7 +11,7 @@ export const EXTENSION_CREATE = { Game.prompt("请输入地址名称", str => { if (!str) return; - var map = config.extension_sources; + var map = configuration.extension_sources; Game.prompt(`请输入${str}的地址`, str2 => { if (!str2) return; diff --git a/noname/library/config-menu/general/config/extension-delete.js b/noname/library/configuration-menu/general/configuration/extension-delete.js similarity index 79% rename from noname/library/config-menu/general/config/extension-delete.js rename to noname/library/configuration-menu/general/configuration/extension-delete.js index 93c364822..9ddec9cdb 100644 --- a/noname/library/config-menu/general/config/extension-delete.js +++ b/noname/library/configuration-menu/general/configuration/extension-delete.js @@ -1,15 +1,15 @@ import { Game } from "../../../../game.js"; import { UI } from "../../../../ui.js"; -import { config } from "../../../config.js"; +import { configuration } from "../../../configuration.js"; export const EXTENSION_DELETE = { name: "删除当前扩展地址", clear: true, unfrequent: true, onclick() { - var bool = false, map = config.extension_sources; + var bool = false, map = configuration.extension_sources; for (var i in map) { - if (i != config.extension_source) { + if (i != configuration.extension_source) { bool = true; break; } @@ -18,7 +18,7 @@ export const EXTENSION_DELETE = { alert("不能删除最后一个扩展地址!"); return; } - var name = config.extension_source; + var name = configuration.extension_source; Game.saveConfig("extension_source", i); delete map[name]; Game.saveConfig("extension_sources", map); diff --git a/noname/library/config-menu/general/config/extension-source.js b/noname/library/configuration-menu/general/configuration/extension-source.js similarity index 50% rename from noname/library/config-menu/general/config/extension-source.js rename to noname/library/configuration-menu/general/configuration/extension-source.js index 8e21745c5..652f04ea8 100644 --- a/noname/library/config-menu/general/config/extension-source.js +++ b/noname/library/configuration-menu/general/configuration/extension-source.js @@ -1,13 +1,13 @@ -import { config } from "../../../config.js"; +import { configuration } from "../../../configuration.js"; export const EXTENSION_SOURCE = { name: "获取扩展地址", init: "GitHub Proxy", unfrequent: true, get item() { - return config.extension_sources; + return configuration.extension_sources; }, intro() { - return `获取在线扩展时的地址。当前地址:${document.createElement("br").outerHTML}${config.extension_sources[config.extension_source]}`; + return `获取在线扩展时的地址。当前地址:${document.createElement("br").outerHTML}${configuration.extension_sources[configuration.extension_source]}`; } }; diff --git a/noname/library/config-menu/general/config/fuck-so-json.js b/noname/library/configuration-menu/general/configuration/fuck-so-json.js similarity index 100% rename from noname/library/config-menu/general/config/fuck-so-json.js rename to noname/library/configuration-menu/general/configuration/fuck-so-json.js diff --git a/noname/library/config-menu/general/config/game-speed.js b/noname/library/configuration-menu/general/configuration/game-speed.js similarity index 100% rename from noname/library/config-menu/general/config/game-speed.js rename to noname/library/configuration-menu/general/configuration/game-speed.js diff --git a/noname/library/config-menu/general/config/game-speed/item.js b/noname/library/configuration-menu/general/configuration/game-speed/item.js similarity index 100% rename from noname/library/config-menu/general/config/game-speed/item.js rename to noname/library/configuration-menu/general/configuration/game-speed/item.js diff --git a/noname/library/config-menu/general/config/hover-all.js b/noname/library/configuration-menu/general/configuration/hover-all.js similarity index 100% rename from noname/library/config-menu/general/config/hover-all.js rename to noname/library/configuration-menu/general/configuration/hover-all.js diff --git a/noname/library/config-menu/general/config/hover-hand-card.js b/noname/library/configuration-menu/general/configuration/hover-hand-card.js similarity index 100% rename from noname/library/config-menu/general/config/hover-hand-card.js rename to noname/library/configuration-menu/general/configuration/hover-hand-card.js diff --git a/noname/library/config-menu/general/config/hoveration.js b/noname/library/configuration-menu/general/configuration/hoveration.js similarity index 100% rename from noname/library/config-menu/general/config/hoveration.js rename to noname/library/configuration-menu/general/configuration/hoveration.js diff --git a/noname/library/config-menu/general/config/hoveration/item.js b/noname/library/configuration-menu/general/configuration/hoveration/item.js similarity index 100% rename from noname/library/config-menu/general/config/hoveration/item.js rename to noname/library/configuration-menu/general/configuration/hoveration/item.js diff --git a/noname/library/config-menu/general/config/keep-awake.js b/noname/library/configuration-menu/general/configuration/keep-awake.js similarity index 100% rename from noname/library/config-menu/general/config/keep-awake.js rename to noname/library/configuration-menu/general/configuration/keep-awake.js diff --git a/noname/library/config-menu/general/config/long-press-information.js b/noname/library/configuration-menu/general/configuration/long-press-information.js similarity index 100% rename from noname/library/config-menu/general/config/long-press-information.js rename to noname/library/configuration-menu/general/configuration/long-press-information.js diff --git a/noname/library/config-menu/general/config/low-performance.js b/noname/library/configuration-menu/general/configuration/low-performance.js similarity index 100% rename from noname/library/config-menu/general/config/low-performance.js rename to noname/library/configuration-menu/general/configuration/low-performance.js diff --git a/noname/library/config-menu/general/config/lucky-star.js b/noname/library/configuration-menu/general/configuration/lucky-star.js similarity index 100% rename from noname/library/config-menu/general/config/lucky-star.js rename to noname/library/configuration-menu/general/configuration/lucky-star.js diff --git a/noname/library/config-menu/general/config/maximum-load-time.js b/noname/library/configuration-menu/general/configuration/maximum-load-time.js similarity index 100% rename from noname/library/config-menu/general/config/maximum-load-time.js rename to noname/library/configuration-menu/general/configuration/maximum-load-time.js diff --git a/noname/library/config-menu/general/config/maximum-load-time/item.js b/noname/library/configuration-menu/general/configuration/maximum-load-time/item.js similarity index 100% rename from noname/library/config-menu/general/config/maximum-load-time/item.js rename to noname/library/configuration-menu/general/configuration/maximum-load-time/item.js diff --git a/noname/library/config-menu/general/config/mount-combine.js b/noname/library/configuration-menu/general/configuration/mount-combine.js similarity index 100% rename from noname/library/config-menu/general/config/mount-combine.js rename to noname/library/configuration-menu/general/configuration/mount-combine.js diff --git a/noname/library/config-menu/general/config/mouse-wheel.js b/noname/library/configuration-menu/general/configuration/mouse-wheel.js similarity index 82% rename from noname/library/config-menu/general/config/mouse-wheel.js rename to noname/library/configuration-menu/general/configuration/mouse-wheel.js index 01c40fb48..5e15c1670 100644 --- a/noname/library/config-menu/general/config/mouse-wheel.js +++ b/noname/library/configuration-menu/general/configuration/mouse-wheel.js @@ -1,7 +1,7 @@ import { Game } from "../../../../game.js"; import { UI } from "../../../../ui.js"; import { Click } from "../../../../ui/click.js"; -import { config } from "../../../config.js"; +import { configuration } from "../../../configuration.js"; export const MOUSE_WHEEL = { name: "滚轮控制手牌", @@ -10,8 +10,8 @@ export const MOUSE_WHEEL = { intro: "开启后滚轮可使手牌横向滚动,在mac等可横向滚动的设备上建议关闭", onclick(bool) { Game.saveConfig("mousewheel", bool); - if (config.touchscreen) return; - if (config.mousewheel) { + if (configuration.touchscreen) return; + if (configuration.mousewheel) { UI.handcards1Container.onmousewheel = Click.mousewheel; UI.handcards2Container.onmousewheel = Click.mousewheel; } diff --git a/noname/library/config-menu/general/config/right-click.js b/noname/library/configuration-menu/general/configuration/right-click.js similarity index 100% rename from noname/library/config-menu/general/config/right-click.js rename to noname/library/configuration-menu/general/configuration/right-click.js diff --git a/noname/library/config-menu/general/config/right-click/item.js b/noname/library/configuration-menu/general/configuration/right-click/item.js similarity index 100% rename from noname/library/config-menu/general/config/right-click/item.js rename to noname/library/configuration-menu/general/configuration/right-click/item.js diff --git a/noname/library/config-menu/general/config/right-information.js b/noname/library/configuration-menu/general/configuration/right-information.js similarity index 100% rename from noname/library/config-menu/general/config/right-information.js rename to noname/library/configuration-menu/general/configuration/right-information.js diff --git a/noname/library/config-menu/general/config/round-menu-function.js b/noname/library/configuration-menu/general/configuration/round-menu-function.js similarity index 100% rename from noname/library/config-menu/general/config/round-menu-function.js rename to noname/library/configuration-menu/general/configuration/round-menu-function.js diff --git a/noname/library/config-menu/general/config/round-menu-function/item.js b/noname/library/configuration-menu/general/configuration/round-menu-function/item.js similarity index 100% rename from noname/library/config-menu/general/config/round-menu-function/item.js rename to noname/library/configuration-menu/general/configuration/round-menu-function/item.js diff --git a/noname/library/config-menu/general/config/show-splash.js b/noname/library/configuration-menu/general/configuration/show-splash.js similarity index 100% rename from noname/library/config-menu/general/config/show-splash.js rename to noname/library/configuration-menu/general/configuration/show-splash.js diff --git a/noname/library/config-menu/general/config/show-splash/item.js b/noname/library/configuration-menu/general/configuration/show-splash/item.js similarity index 100% rename from noname/library/config-menu/general/config/show-splash/item.js rename to noname/library/configuration-menu/general/configuration/show-splash/item.js diff --git a/noname/library/config-menu/general/config/skip-shan.js b/noname/library/configuration-menu/general/configuration/skip-shan.js similarity index 100% rename from noname/library/config-menu/general/config/skip-shan.js rename to noname/library/configuration-menu/general/configuration/skip-shan.js diff --git a/noname/library/config-menu/general/config/swipe-down.js b/noname/library/configuration-menu/general/configuration/swipe-down.js similarity index 100% rename from noname/library/config-menu/general/config/swipe-down.js rename to noname/library/configuration-menu/general/configuration/swipe-down.js diff --git a/noname/library/config-menu/general/config/swipe-item.js b/noname/library/configuration-menu/general/configuration/swipe-item.js similarity index 100% rename from noname/library/config-menu/general/config/swipe-item.js rename to noname/library/configuration-menu/general/configuration/swipe-item.js diff --git a/noname/library/config-menu/general/config/swipe-left.js b/noname/library/configuration-menu/general/configuration/swipe-left.js similarity index 100% rename from noname/library/config-menu/general/config/swipe-left.js rename to noname/library/configuration-menu/general/configuration/swipe-left.js diff --git a/noname/library/config-menu/general/config/swipe-right.js b/noname/library/configuration-menu/general/configuration/swipe-right.js similarity index 100% rename from noname/library/config-menu/general/config/swipe-right.js rename to noname/library/configuration-menu/general/configuration/swipe-right.js diff --git a/noname/library/config-menu/general/config/swipe-up.js b/noname/library/configuration-menu/general/configuration/swipe-up.js similarity index 100% rename from noname/library/config-menu/general/config/swipe-up.js rename to noname/library/configuration-menu/general/configuration/swipe-up.js diff --git a/noname/library/config-menu/general/config/swipe.js b/noname/library/configuration-menu/general/configuration/swipe.js similarity index 100% rename from noname/library/config-menu/general/config/swipe.js rename to noname/library/configuration-menu/general/configuration/swipe.js diff --git a/noname/library/config-menu/general/config/synchronize-speed.js b/noname/library/configuration-menu/general/configuration/synchronize-speed.js similarity index 100% rename from noname/library/config-menu/general/config/synchronize-speed.js rename to noname/library/configuration-menu/general/configuration/synchronize-speed.js diff --git a/noname/library/config-menu/general/config/tao-enemy.js b/noname/library/configuration-menu/general/configuration/tao-enemy.js similarity index 100% rename from noname/library/config-menu/general/config/tao-enemy.js rename to noname/library/configuration-menu/general/configuration/tao-enemy.js diff --git a/noname/library/config-menu/general/config/touchscreen.js b/noname/library/configuration-menu/general/configuration/touchscreen.js similarity index 100% rename from noname/library/config-menu/general/config/touchscreen.js rename to noname/library/configuration-menu/general/configuration/touchscreen.js diff --git a/noname/library/config-menu/general/config/un-auto-choose.js b/noname/library/configuration-menu/general/configuration/un-auto-choose.js similarity index 100% rename from noname/library/config-menu/general/config/un-auto-choose.js rename to noname/library/configuration-menu/general/configuration/un-auto-choose.js diff --git a/noname/library/config-menu/general/config/update-link.js b/noname/library/configuration-menu/general/configuration/update-link.js similarity index 100% rename from noname/library/config-menu/general/config/update-link.js rename to noname/library/configuration-menu/general/configuration/update-link.js diff --git a/noname/library/config-menu/general/config/update-link/item.js b/noname/library/configuration-menu/general/configuration/update-link/item.js similarity index 100% rename from noname/library/config-menu/general/config/update-link/item.js rename to noname/library/configuration-menu/general/configuration/update-link/item.js diff --git a/noname/library/config-menu/general/config/video.js b/noname/library/configuration-menu/general/configuration/video.js similarity index 100% rename from noname/library/config-menu/general/config/video.js rename to noname/library/configuration-menu/general/configuration/video.js diff --git a/noname/library/config-menu/general/config/video/item.js b/noname/library/configuration-menu/general/configuration/video/item.js similarity index 100% rename from noname/library/config-menu/general/config/video/item.js rename to noname/library/configuration-menu/general/configuration/video/item.js diff --git a/noname/library/config-menu/general/config/wuxie-self.js b/noname/library/configuration-menu/general/configuration/wuxie-self.js similarity index 100% rename from noname/library/config-menu/general/config/wuxie-self.js rename to noname/library/configuration-menu/general/configuration/wuxie-self.js diff --git a/noname/library/configuration.d.ts b/noname/library/configuration.d.ts new file mode 100644 index 000000000..a4a9c8433 --- /dev/null +++ b/noname/library/configuration.d.ts @@ -0,0 +1,6 @@ +interface Configuration extends Record { + extension_sources: Record; + favouriteCharacter: string[]; +} + +export const configuration: Configuration; diff --git a/noname/library/configuration.js b/noname/library/configuration.js new file mode 100644 index 000000000..b067409b7 --- /dev/null +++ b/noname/library/configuration.js @@ -0,0 +1 @@ +export const configuration = {}; diff --git a/noname/library/initialization.js b/noname/library/initialization.js new file mode 100644 index 000000000..9f52d9904 --- /dev/null +++ b/noname/library/initialization.js @@ -0,0 +1 @@ +export class Initialization { } diff --git a/noname/ui/css.d.ts b/noname/ui/css.d.ts new file mode 100644 index 000000000..9dd2f98b5 --- /dev/null +++ b/noname/ui/css.d.ts @@ -0,0 +1,3 @@ +interface CSS extends Record { } + +export const css: CSS; diff --git a/noname/ui/css.js b/noname/ui/css.js new file mode 100644 index 000000000..b6d078a00 --- /dev/null +++ b/noname/ui/css.js @@ -0,0 +1 @@ +export const css = {}; From 7bb8ba9a8e5576678a154ba8ff69d115f1e3650c Mon Sep 17 00:00:00 2001 From: Tipx-L <138244655+Tipx-L@users.noreply.github.com> Date: Thu, 7 Dec 2023 17:24:06 -0800 Subject: [PATCH 079/302] Finish migrating the appearance configuration menu. --- .../appearance/configuration.js | 172 ++++++++++++++++- .../appearance/configuration/animation.js | 6 + .../configuration/automatic-border-count.js | 20 ++ .../automatic-border-count/item.js | 5 + .../configuration/automatic-border-start.js | 8 + .../automatic-border-start/item.js | 5 + .../appearance/configuration/blur-ui.js | 15 ++ .../appearance/configuration/border-style.js | 125 +++++++++++++ .../configuration/border-style/item.js | 11 ++ .../configuration/button-character-prefix.js | 8 + .../button-character-prefix/item.js | 5 + .../configuration/button-character-style.js | 8 + .../button-character-style/item.js | 5 + .../appearance/configuration/button-press.js | 6 + .../configuration/card-back-style.js | 138 ++++++++++++++ .../configuration/card-back-style/item.js | 8 + .../appearance/configuration/card-shape.js | 34 ++++ .../configuration/card-shape/item.js | 4 + .../appearance/configuration/card-style.js | 114 +++++++++++ .../configuration/card-style/item.js | 8 + .../configuration/card-temporary-name.js | 28 +++ .../configuration/card-temporary-name/item.js | 6 + .../configuration/card-text-font.js | 18 ++ .../configuration/card-text-font/item.js | 1 + .../change-skin-automatically.js | 18 ++ .../change-skin-automatically/item.js | 7 + .../appearance/configuration/change-skin.js | 5 + .../appearance/configuration/control-style.js | 116 ++++++++++++ .../configuration/control-style/item.js | 7 + .../appearance/configuration/cursor-style.js | 18 ++ .../configuration/cursor-style/item.js | 4 + .../custom-button-control-bottom.js | 12 ++ .../custom-button-control-top.js | 12 ++ .../configuration/custom-button-item.js | 13 ++ .../custom-button-system-bottom.js | 12 ++ .../configuration/custom-button-system-top.js | 12 ++ .../appearance/configuration/custom-button.js | 34 ++++ .../appearance/configuration/damage-shake.js | 6 + .../appearance/configuration/die-move.js | 9 + .../appearance/configuration/die-move/item.js | 5 + .../appearance/configuration/fold-card.js | 5 + .../appearance/configuration/fold-mode.js | 6 + .../appearance/configuration/glass-ui.js | 15 ++ .../appearance/configuration/global-font.js | 21 +++ .../configuration/global-font/item.js | 1 + .../appearance/configuration/glow-phase.js | 13 ++ .../configuration/glow-phase/item.js | 6 + .../appearance/configuration/hp-style.js | 177 ++++++++++++++++++ .../appearance/configuration/hp-style/item.js | 10 + .../appearance/configuration/identity-font.js | 18 ++ .../configuration/identity-font/item.js | 1 + .../configuration/image-background-blur.js | 21 +++ .../configuration/image-background-random.js | 11 ++ .../appearance/configuration/jiu-effect.js | 5 + .../appearance/configuration/link-style-2.js | 35 ++++ .../configuration/link-style-2/item.js | 5 + .../appearance/configuration/menu-style.js | 114 +++++++++++ .../configuration/menu-style/item.js | 7 + .../appearance/configuration/name-font.js | 18 ++ .../configuration/name-font/item.js | 1 + .../appearance/configuration/phone-layout.js | 22 +++ .../appearance/configuration/player-border.js | 37 ++++ .../configuration/player-border/item.js | 6 + .../item.js => player-height-item.js} | 2 +- .../configuration/player-height-nova.js | 7 +- .../appearance/configuration/player-height.js | 4 +- .../configuration/player-height/item.js | 5 - .../appearance/configuration/player-style.js | 115 ++++++++++++ .../configuration/player-style/item.js | 7 + .../appearance/configuration/radius-size.js | 12 ++ .../configuration/radius-size/item.js | 6 + .../configuration/separate-control.js | 6 + .../configuration/skill-animation-type.js | 9 + .../skill-animation-type/item.js | 5 + .../appearance/configuration/suits-font.js | 6 + .../appearance/configuration/target-shake.js | 13 ++ .../configuration/target-shake/item.js | 5 + .../appearance/configuration/turned-style.js | 15 ++ .../general/configuration.js | 12 +- ...pdate.js => automatically-check-update.js} | 2 +- ...to-confirm.js => automatically-confirm.js} | 2 +- .../general/configuration/extension-source.js | 5 +- .../general/configuration/keep-awake.js | 6 +- ...o-choose.js => un-automatically-choose.js} | 2 +- 84 files changed, 1826 insertions(+), 23 deletions(-) create mode 100644 noname/library/configuration-menu/appearance/configuration/animation.js create mode 100644 noname/library/configuration-menu/appearance/configuration/automatic-border-count.js create mode 100644 noname/library/configuration-menu/appearance/configuration/automatic-border-count/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/automatic-border-start.js create mode 100644 noname/library/configuration-menu/appearance/configuration/automatic-border-start/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/blur-ui.js create mode 100644 noname/library/configuration-menu/appearance/configuration/border-style.js create mode 100644 noname/library/configuration-menu/appearance/configuration/border-style/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/button-character-prefix.js create mode 100644 noname/library/configuration-menu/appearance/configuration/button-character-prefix/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/button-character-style.js create mode 100644 noname/library/configuration-menu/appearance/configuration/button-character-style/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/button-press.js create mode 100644 noname/library/configuration-menu/appearance/configuration/card-back-style.js create mode 100644 noname/library/configuration-menu/appearance/configuration/card-back-style/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/card-shape.js create mode 100644 noname/library/configuration-menu/appearance/configuration/card-shape/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/card-style.js create mode 100644 noname/library/configuration-menu/appearance/configuration/card-style/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/card-temporary-name.js create mode 100644 noname/library/configuration-menu/appearance/configuration/card-temporary-name/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/card-text-font.js create mode 100644 noname/library/configuration-menu/appearance/configuration/card-text-font/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/change-skin-automatically.js create mode 100644 noname/library/configuration-menu/appearance/configuration/change-skin-automatically/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/change-skin.js create mode 100644 noname/library/configuration-menu/appearance/configuration/control-style.js create mode 100644 noname/library/configuration-menu/appearance/configuration/control-style/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/cursor-style.js create mode 100644 noname/library/configuration-menu/appearance/configuration/cursor-style/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/custom-button-control-bottom.js create mode 100644 noname/library/configuration-menu/appearance/configuration/custom-button-control-top.js create mode 100644 noname/library/configuration-menu/appearance/configuration/custom-button-item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/custom-button-system-bottom.js create mode 100644 noname/library/configuration-menu/appearance/configuration/custom-button-system-top.js create mode 100644 noname/library/configuration-menu/appearance/configuration/custom-button.js create mode 100644 noname/library/configuration-menu/appearance/configuration/damage-shake.js create mode 100644 noname/library/configuration-menu/appearance/configuration/die-move.js create mode 100644 noname/library/configuration-menu/appearance/configuration/die-move/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/fold-card.js create mode 100644 noname/library/configuration-menu/appearance/configuration/fold-mode.js create mode 100644 noname/library/configuration-menu/appearance/configuration/glass-ui.js create mode 100644 noname/library/configuration-menu/appearance/configuration/global-font.js create mode 100644 noname/library/configuration-menu/appearance/configuration/global-font/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/glow-phase.js create mode 100644 noname/library/configuration-menu/appearance/configuration/glow-phase/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/hp-style.js create mode 100644 noname/library/configuration-menu/appearance/configuration/hp-style/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/identity-font.js create mode 100644 noname/library/configuration-menu/appearance/configuration/identity-font/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/image-background-blur.js create mode 100644 noname/library/configuration-menu/appearance/configuration/image-background-random.js create mode 100644 noname/library/configuration-menu/appearance/configuration/jiu-effect.js create mode 100644 noname/library/configuration-menu/appearance/configuration/link-style-2.js create mode 100644 noname/library/configuration-menu/appearance/configuration/link-style-2/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/menu-style.js create mode 100644 noname/library/configuration-menu/appearance/configuration/menu-style/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/name-font.js create mode 100644 noname/library/configuration-menu/appearance/configuration/name-font/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/phone-layout.js create mode 100644 noname/library/configuration-menu/appearance/configuration/player-border.js create mode 100644 noname/library/configuration-menu/appearance/configuration/player-border/item.js rename noname/library/configuration-menu/appearance/configuration/{player-height-nova/item.js => player-height-item.js} (57%) delete mode 100644 noname/library/configuration-menu/appearance/configuration/player-height/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/player-style.js create mode 100644 noname/library/configuration-menu/appearance/configuration/player-style/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/radius-size.js create mode 100644 noname/library/configuration-menu/appearance/configuration/radius-size/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/separate-control.js create mode 100644 noname/library/configuration-menu/appearance/configuration/skill-animation-type.js create mode 100644 noname/library/configuration-menu/appearance/configuration/skill-animation-type/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/suits-font.js create mode 100644 noname/library/configuration-menu/appearance/configuration/target-shake.js create mode 100644 noname/library/configuration-menu/appearance/configuration/target-shake/item.js create mode 100644 noname/library/configuration-menu/appearance/configuration/turned-style.js rename noname/library/configuration-menu/general/configuration/{auto-check-update.js => automatically-check-update.js} (71%) rename noname/library/configuration-menu/general/configuration/{auto-confirm.js => automatically-confirm.js} (77%) rename noname/library/configuration-menu/general/configuration/{un-auto-choose.js => un-automatically-choose.js} (78%) diff --git a/noname/library/configuration-menu/appearance/configuration.js b/noname/library/configuration-menu/appearance/configuration.js index 56a52ca69..d71b7d1b6 100644 --- a/noname/library/configuration-menu/appearance/configuration.js +++ b/noname/library/configuration-menu/appearance/configuration.js @@ -1,9 +1,55 @@ +import { ANIMATION } from "./configuration/animation.js"; +import { AUTOMATIC_BORDER_COUNT } from "./configuration/automatic-border-count.js"; +import { AUTOMATIC_BORDER_START } from "./configuration/automatic-border-start.js"; +import { BLUR_UI } from "./configuration/blur-ui.js"; +import { BORDER_STYLE } from "./configuration/border-style.js"; +import { BUTTON_CHARACTER_PREFIX } from "./configuration/button-character-prefix.js"; +import { BUTTON_CHARACTER_STYLE } from "./configuration/button-character-style.js"; +import { BUTTON_PRESS } from "./configuration/button-press.js"; +import { CARD_BACK_STYLE } from "./configuration/card-back-style.js"; +import { CARD_SHAPE } from "./configuration/card-shape.js"; +import { CARD_STYLE } from "./configuration/card-style.js"; +import { CARD_TEMPORARY_NAME } from "./configuration/card-temporary-name.js"; +import { CARD_TEXT_FONT } from "./configuration/card-text-font.js"; +import { CHANGE_SKIN_AUTOMATICALLY } from "./configuration/change-skin-automatically.js"; +import { CHANGE_SKIN } from "./configuration/change-skin.js"; +import { CONTROL_STYLE } from "./configuration/control-style.js"; +import { CURSOR_STYLE } from "./configuration/cursor-style.js"; +import { CUSTOM_BUTTON_CONTROL_BOTTOM } from "./configuration/custom-button-control-bottom.js"; +import { CUSTOM_BUTTON_CONTROL_TOP } from "./configuration/custom-button-control-top.js"; +import { CUSTOM_BUTTON_SYSTEM_BOTTOM } from "./configuration/custom-button-system-bottom.js"; +import { CUSTOM_BUTTON_SYSTEM_TOP } from "./configuration/custom-button-system-top.js"; +import { CUSTOM_BUTTON } from "./configuration/custom-button.js"; +import { DAMAGE_SHAKE } from "./configuration/damage-shake.js"; +import { DIE_MOVE } from "./configuration/die-move.js"; +import { FOLD_CARD } from "./configuration/fold-card.js"; +import { FOLD_MODE } from "./configuration/fold-mode.js"; +import { GLASS_UI } from "./configuration/glass-ui.js"; +import { GLOBAL_FONT } from "./configuration/global-font.js"; +import { GLOW_PHASE } from "./configuration/glow-phase.js"; +import { HP_STYLE } from "./configuration/hp-style.js"; +import { IDENTITY_FONT } from "./configuration/identity-font.js"; +import { IMAGE_BACKGROUND_BLUR } from "./configuration/image-background-blur.js"; +import { IMAGE_BACKGROUND_RANDOM } from "./configuration/image-background-random.js"; import { IMAGE_BACKGROUND } from "./configuration/image-background.js"; +import { JIU_EFFECT } from "./configuration/jiu-effect.js"; import { LAYOUT } from "./configuration/layout.js"; +import { LINK_STYLE_2 } from "./configuration/link-style-2.js"; +import { MENU_STYLE } from "./configuration/menu-style.js"; +import { NAME_FONT } from "./configuration/name-font.js"; +import { PHONE_LAYOUT } from "./configuration/phone-layout.js"; +import { PLAYER_BORDER } from "./configuration/player-border.js"; import { PLAYER_HEIGHT_NOVA } from "./configuration/player-height-nova.js"; import { PLAYER_HEIGHT } from "./configuration/player-height.js"; +import { PLAYER_STYLE } from "./configuration/player-style.js"; +import { RADIUS_SIZE } from "./configuration/radius-size.js"; +import { SEPARATE_CONTROL } from "./configuration/separate-control.js"; +import { SKILL_ANIMATION_TYPE } from "./configuration/skill-animation-type.js"; import { SPLASH_STYLE } from "./configuration/splash-style.js"; +import { SUITS_FONT } from "./configuration/suits-font.js"; +import { TARGET_SHAKE } from "./configuration/target-shake.js"; import { THEME } from "./configuration/theme.js"; +import { TURNED_STYLE } from "./configuration/turned-style.js"; import { UI_ZOOM } from "./configuration/ui-zoom.js"; export const CONFIGURATION = { @@ -13,5 +59,129 @@ export const CONFIGURATION = { player_height: PLAYER_HEIGHT, player_height_nova: PLAYER_HEIGHT_NOVA, ui_zoom: UI_ZOOM, - image_background: IMAGE_BACKGROUND + image_background: IMAGE_BACKGROUND, + image_background_random: IMAGE_BACKGROUND_RANDOM, + image_background_blur: IMAGE_BACKGROUND_BLUR, + phonelayout: PHONE_LAYOUT, + change_skin: CHANGE_SKIN, + change_skin_auto: CHANGE_SKIN_AUTOMATICALLY, + card_style: CARD_STYLE, + cardback_style: CARD_BACK_STYLE, + hp_style: HP_STYLE, + player_style: PLAYER_STYLE, + border_style: BORDER_STYLE, + autoborder_count: AUTOMATIC_BORDER_COUNT, + autoborder_start: AUTOMATIC_BORDER_START, + player_border: PLAYER_BORDER, + menu_style: MENU_STYLE, + control_style: CONTROL_STYLE, + custom_button: CUSTOM_BUTTON, + custom_button_system_top: CUSTOM_BUTTON_SYSTEM_TOP, + custom_button_system_bottom: CUSTOM_BUTTON_SYSTEM_BOTTOM, + custom_button_control_top: CUSTOM_BUTTON_CONTROL_TOP, + custom_button_control_bottom: CUSTOM_BUTTON_CONTROL_BOTTOM, + radius_size: RADIUS_SIZE, + glow_phase: GLOW_PHASE, + fold_card: FOLD_CARD, + fold_mode: FOLD_MODE, + seperate_control: SEPARATE_CONTROL, + blur_ui: BLUR_UI, + glass_ui: GLASS_UI, + damage_shake: DAMAGE_SHAKE, + button_press: BUTTON_PRESS, + jiu_effect: JIU_EFFECT, + animation: ANIMATION, + skill_animation_type: SKILL_ANIMATION_TYPE, + die_move: DIE_MOVE, + target_shake: TARGET_SHAKE, + turned_style: TURNED_STYLE, + link_style2: LINK_STYLE_2, + cardshape: CARD_SHAPE, + cardtempname: CARD_TEMPORARY_NAME, + buttoncharacter_style: BUTTON_CHARACTER_STYLE, + buttoncharacter_prefix: BUTTON_CHARACTER_PREFIX, + cursor_style: CURSOR_STYLE, + name_font: NAME_FONT, + identity_font: IDENTITY_FONT, + cardtext_font: CARD_TEXT_FONT, + global_font: GLOBAL_FONT, + suits_font: SUITS_FONT, + update(config, map) { + if (config.custom_button) { + map.custom_button_system_top.show(); + map.custom_button_system_bottom.show(); + map.custom_button_control_top.show(); + map.custom_button_control_bottom.show(); + } + else { + map.custom_button_system_top.hide(); + map.custom_button_system_bottom.hide(); + map.custom_button_control_top.hide(); + map.custom_button_control_bottom.hide(); + } + if (config.change_skin) { + map.change_skin_auto.show(); + } + else { + map.change_skin_auto.hide(); + } + if (config.image_background_random) { + map.image_background_blur.show(); + map.image_background.hide(); + } + else { + map.image_background.show(); + if (config.image_background == "default") { + map.image_background_blur.hide(); + } + else { + map.image_background_blur.show(); + } + } + if (config.layout == "long" || config.layout == "mobile") { + map.cardshape.show(); + map.phonelayout.show(); + } + else { + if (config.layout == "long2" || config.layout == "nova") { + map.phonelayout.show(); + map.cardshape.show(); + } + else { + map.phonelayout.hide(); + map.cardshape.hide(); + } + } + if (config.layout == "long") { + map.player_height.show(); + } + else { + if (config.layout == "long2") { + map.player_height.show(); + } + else { + map.player_height.hide(); + } + } + if (config.layout == "nova") { + map.player_height_nova.show(); + } + else { + map.player_height_nova.hide(); + } + if (config.touchscreen) { + map.cursor_style.hide(); + } + else { + map.cursor_style.show(); + } + if (config.border_style == "auto") { + map.autoborder_count.show(); + map.autoborder_start.show(); + } + else { + map.autoborder_count.hide(); + map.autoborder_start.hide(); + } + } }; diff --git a/noname/library/configuration-menu/appearance/configuration/animation.js b/noname/library/configuration-menu/appearance/configuration/animation.js new file mode 100644 index 000000000..5b66b618b --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/animation.js @@ -0,0 +1,6 @@ +export const ANIMATION = { + name: "游戏特效", + intro: "开启后出现属性伤害、回复体力等情况时会显示动画", + init: false, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/automatic-border-count.js b/noname/library/configuration-menu/appearance/configuration/automatic-border-count.js new file mode 100644 index 000000000..9ff63d87e --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/automatic-border-count.js @@ -0,0 +1,20 @@ +import { ITEM } from "./automatic-border-count/item.js"; + +const introduction = document.createElement("body"); +const kill = document.createElement("strong"); +kill.textContent = "击杀"; +introduction.append(kill, " 每击杀一人,边框提升两级", document.createElement("br")); +const damage = document.createElement("strong"); +damage.textContent = "伤害"; +introduction.append(damage, " 每造成两点伤害,边框提升一级", document.createElement("br")); +const mix = document.createElement("strong"); +mix.textContent = "混合"; +introduction.append(mix, " 击杀量决定边框颜色,伤害量决定边框装饰"); + +export const AUTOMATIC_BORDER_COUNT = { + name: "边框升级方式", + intro: introduction.innerHTML, + init: "kill", + item: ITEM, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/automatic-border-count/item.js b/noname/library/configuration-menu/appearance/configuration/automatic-border-count/item.js new file mode 100644 index 000000000..f9ec4eb19 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/automatic-border-count/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + kill: "击杀", + damage: "伤害", + mix: "混合" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/automatic-border-start.js b/noname/library/configuration-menu/appearance/configuration/automatic-border-start.js new file mode 100644 index 000000000..f473e7262 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/automatic-border-start.js @@ -0,0 +1,8 @@ +import { ITEM } from "./automatic-border-start/item.js"; + +export const AUTOMATIC_BORDER_START = { + name: "基础边框颜色", + init: "bronze", + item: ITEM, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/automatic-border-start/item.js b/noname/library/configuration-menu/appearance/configuration/automatic-border-start/item.js new file mode 100644 index 000000000..4b8f3ff94 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/automatic-border-start/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + bronze: "铜", + silver: "银", + gold: "金" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/blur-ui.js b/noname/library/configuration-menu/appearance/configuration/blur-ui.js new file mode 100644 index 000000000..9f1db757d --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/blur-ui.js @@ -0,0 +1,15 @@ +export const BLUR_UI = { + name: "模糊效果", + intro: "在暂停或打开菜单时开启模糊效果", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("blur_ui", bool); + if (bool) { + ui.window.classList.add("blur_ui"); + } + else { + ui.window.classList.remove("blur_ui"); + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/border-style.js b/noname/library/configuration-menu/appearance/configuration/border-style.js new file mode 100644 index 000000000..2cab0544d --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/border-style.js @@ -0,0 +1,125 @@ +import { ITEM } from "./border-style/item.js"; + +export const BORDER_STYLE = { + name: "角色边框", + init: "default", + intro: "设置角色边框的样式,当设为自动时,样式将随着一局游戏中伤害或击杀的数量自动改变", + item: ITEM, + visualBar(node, item, create, switcher) { + if (node.created) { + return; + } + var button; + for (var i = 0; i < node.parentNode.childElementCount; i++) { + if (node.parentNode.childNodes[i]._link == "custom") { + button = node.parentNode.childNodes[i]; + } + } + if (!button) { + return; + } + node.created = true; + var deletepic; + ui.create.filediv(".menubutton", "添加图片", node, function (file) { + if (file) { + game.putDB("image", "border_style", file, function () { + game.getDB("image", "border_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + button.style.backgroundImage = "url(" + data + ")"; + button.className = "button character"; + button.style.backgroundSize = "100% 100%"; + node.classList.add("showdelete"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + }); + } + }).inputNode.accept = "image/*"; + deletepic = ui.create.div(".menubutton.deletebutton", "删除图片", node, function () { + if (confirm("确定删除自定义图片?(此操作不可撤销)")) { + game.deleteDB("image", "border_style"); + button.style.backgroundImage = "none"; + button.className = "button character dashedmenubutton"; + node.classList.remove("showdelete"); + if (lib.config.border_style == "custom") { + lib.configMenu.appearence.config.border_style.onclick("default"); + switcher.lastChild.innerHTML = "默认"; + } + button.classList.add("transparent"); + } + }); + }, + visualMenu(node, link, name, config) { + node.className = "button character"; + node.style.backgroundSize = ""; + node.style.height = "108px"; + node.dataset.decoration = ""; + if (link == "default" || link == "custom" || link == "auto") { + node.style.backgroundImage = "none"; + node.className = "button character dashedmenubutton"; + } + else { + if (link.startsWith("dragon_")) { + link = link.slice(7); + node.dataset.decoration = link; + } + node.setBackgroundImage("theme/style/player/" + link + "1.png"); + node.style.backgroundSize = "100% 100%"; + } + if (link == "custom") { + node.classList.add("transparent"); + game.getDB("image", "border_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + node.style.backgroundImage = "url(" + data + ")"; + node.className = "button character"; + node.parentNode.lastChild.classList.add("showdelete"); + node.style.backgroundSize = "100% 100%"; + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + }, + onclick(layout) { + game.saveConfig("border_style", layout); + if (ui.css.border_stylesheet) { + ui.css.border_stylesheet.remove(); + delete ui.css.border_stylesheet; + } + if (layout == "custom") { + game.getDB("image", "border_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.border_stylesheet) { + ui.css.border_stylesheet.remove(); + } + ui.css.border_stylesheet = lib.init.sheet(); + ui.css.border_stylesheet.id = "ui.css.border"; + ui.css.border_stylesheet.sheet.insertRule(`#window .player>.framebg{display:block;background-image:url("${fileLoadedEvent.target.result}")}`, 0); + ui.css.border_stylesheet.sheet.insertRule(".player>.count{z-index: 3 !important;border-radius: 2px !important;text-align: center !important;}", 0); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + else if (layout != "default" && layout != "auto") { + ui.css.border_stylesheet = lib.init.sheet(); + if (layout.startsWith("dragon_")) { + layout = layout.slice(7); + ui.arena.dataset.framedecoration = layout; + } + else { + ui.arena.dataset.framedecoration = ""; + } + ui.css.border_stylesheet.sheet.insertRule(`#window .player>.framebg,#window #arena.long.mobile:not(.fewplayer) .player[data-position="0"]>.framebg{display:block;background-image:url("${lib.assetURL}theme/style/player/${layout}1.png")}`, 0); + ui.css.border_stylesheet.sheet.insertRule(`#window #arena.long:not(.fewplayer) .player>.framebg, #arena.oldlayout .player>.framebg{background-image:url("${lib.assetURL}theme/style/player/${layout}3.png")}`, 0); + ui.css.border_stylesheet.sheet.insertRule(".player>.count{z-index: 3 !important;border-radius: 2px !important;text-align: center !important;}", 0); + } + }, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/border-style/item.js b/noname/library/configuration-menu/appearance/configuration/border-style/item.js new file mode 100644 index 000000000..4c23e0ecc --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/border-style/item.js @@ -0,0 +1,11 @@ +export const ITEM = { + gold: "金框", + silver: "银框", + bronze: "铜框", + dragon_gold: "金龙", + dragon_silver: "银龙", + dragon_bronze: "玉龙", + custom: "自定", + auto: "自动", + default: "默认" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/button-character-prefix.js b/noname/library/configuration-menu/appearance/configuration/button-character-prefix.js new file mode 100644 index 000000000..f75a8aece --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/button-character-prefix.js @@ -0,0 +1,8 @@ +import { ITEM } from "./button-character-prefix/item.js"; + +export const BUTTON_CHARACTER_PREFIX = { + name: "武将前缀", + init: "default", + item: ITEM, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/button-character-prefix/item.js b/noname/library/configuration-menu/appearance/configuration/button-character-prefix/item.js new file mode 100644 index 000000000..941d1a567 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/button-character-prefix/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + default: "默认", + simple: "不显示颜色", + off: "不显示前缀" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/button-character-style.js b/noname/library/configuration-menu/appearance/configuration/button-character-style.js new file mode 100644 index 000000000..b20618757 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/button-character-style.js @@ -0,0 +1,8 @@ +import { ITEM } from "./button-character-style/item.js"; + +export const BUTTON_CHARACTER_STYLE = { + name: "选将样式", + init: "default", + item: ITEM, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/button-character-style/item.js b/noname/library/configuration-menu/appearance/configuration/button-character-style/item.js new file mode 100644 index 000000000..1d8569f82 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/button-character-style/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + default: "默认", + simple: "精简", + old: "旧版" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/button-press.js b/noname/library/configuration-menu/appearance/configuration/button-press.js new file mode 100644 index 000000000..9ea96bb1d --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/button-press.js @@ -0,0 +1,6 @@ +export const BUTTON_PRESS = { + name: "按钮效果", + intro: "选项条被按下时将有按下效果", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/card-back-style.js b/noname/library/configuration-menu/appearance/configuration/card-back-style.js new file mode 100644 index 000000000..cb6696124 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/card-back-style.js @@ -0,0 +1,138 @@ +import { ITEM } from "./card-back-style/item.js"; + +export const CARD_BACK_STYLE = { + name: "卡背样式", + intro: "设置背面朝上的卡牌的样式", + init: "default", + item: ITEM, + visualBar(node, item, create, switcher) { + if (node.created) { + return; + } + var button; + for (var i = 0; i < node.parentNode.childElementCount; i++) { + if (node.parentNode.childNodes[i]._link == "custom") { + button = node.parentNode.childNodes[i]; + } + } + if (!button) { + return; + } + node.created = true; + var deletepic; + ui.create.filediv(".menubutton", "添加图片", node, function (file) { + if (file) { + game.putDB("image", "cardback_style", file, function () { + game.getDB("image", "cardback_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + button.style.backgroundImage = "url(" + data + ")"; + button.className = "button character"; + node.classList.add("showdelete"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + }); + } + }).inputNode.accept = "image/*"; + ui.create.filediv(".menubutton.deletebutton.addbutton", "添加翻转图片", node, function (file) { + if (file) { + game.putDB("image", "cardback_style2", file, function () { + node.classList.add("hideadd"); + }); + } + }).inputNode.accept = "image/*"; + deletepic = ui.create.div(".menubutton.deletebutton", "删除图片", node, function () { + if (confirm("确定删除自定义图片?(此操作不可撤销)")) { + game.deleteDB("image", "cardback_style"); + game.deleteDB("image", "cardback_style2"); + button.style.backgroundImage = "none"; + button.className = "button character dashedmenubutton"; + node.classList.remove("showdelete"); + node.classList.remove("hideadd"); + if (lib.config.cardback_style == "custom") { + lib.configMenu.appearence.config.cardback_style.onclick("default"); + switcher.lastChild.innerHTML = "默认"; + } + button.classList.add("transparent"); + } + }); + }, + visualMenu(node, link, name, config) { + node.style.backgroundSize = "100% 100%"; + switch (link) { + case "default": case "custom": { + node.style.backgroundImage = "none"; + node.className = "button character dashedmenubutton"; + break; + } + case "new": node.className = "button character"; node.setBackgroundImage("theme/style/cardback/image/new.png"); break; + case "feicheng": node.className = "button character"; node.setBackgroundImage("theme/style/cardback/image/feicheng.png"); break; + case "official": node.className = "button character"; node.setBackgroundImage("theme/style/cardback/image/official.png"); break; + case "liusha": node.className = "button character"; node.setBackgroundImage("theme/style/cardback/image/liusha.png"); break; + case "ol": node.className = "button character"; node.setBackgroundImage("theme/style/cardback/image/ol.png"); break; + case "wood": node.className = "button card fullskin"; node.setBackgroundImage("theme/woodden/wood.jpg"); node.style.backgroundSize = "initial"; break; + case "music": node.className = "button card fullskin"; node.setBackgroundImage("theme/music/wood3.png"); break; + } + if (link == "custom") { + node.classList.add("transparent"); + game.getDB("image", "cardback_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + node.style.backgroundImage = "url(" + data + ")"; + node.className = "button character"; + node.parentNode.lastChild.classList.add("showdelete"); + game.getDB("image", "cardback_style2", function (file) { + if (file) { + node.parentNode.lastChild.classList.add("hideadd"); + } + }); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + }, + onclick(layout) { + game.saveConfig("cardback_style", layout); + var style = ui.css.cardback_style; + ui.css.cardback_style = lib.init.css(lib.assetURL + "theme/style/cardback", lib.config.cardback_style); + style.remove(); + if (ui.css.cardback_stylesheet) { + ui.css.cardback_stylesheet.remove(); + delete ui.css.cardback_stylesheet; + } + if (ui.css.cardback_stylesheet2) { + ui.css.cardback_stylesheet2.remove(); + delete ui.css.cardback_stylesheet2; + } + if (layout == "custom") { + game.getDB("image", "cardback_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.cardback_stylesheet) { + ui.css.cardback_stylesheet.remove(); + } + ui.css.cardback_stylesheet = lib.init.sheet(".card:empty,.card.infohidden{background-image:url(" + fileLoadedEvent.target.result + ")}"); + game.getDB("image", "cardback_style2", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.cardback_stylesheet2) { + ui.css.cardback_stylesheet2.remove(); + } + ui.css.cardback_stylesheet2 = lib.init.sheet(".card.infohidden:not(.infoflip){background-image:url(" + fileLoadedEvent.target.result + ")}"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + }, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/card-back-style/item.js b/noname/library/configuration-menu/appearance/configuration/card-back-style/item.js new file mode 100644 index 000000000..14ac8f52a --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/card-back-style/item.js @@ -0,0 +1,8 @@ +export const ITEM = { + official: "原版", + feicheng: "废城", + liusha: "流沙", + ol: "手杀", + custom: "自定", + default: "默认" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/card-shape.js b/noname/library/configuration-menu/appearance/configuration/card-shape.js new file mode 100644 index 000000000..691d628e3 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/card-shape.js @@ -0,0 +1,34 @@ +import { ITEM } from "./card-shape/item.js"; + +export const CARD_SHAPE = { + name: "手牌显示", + intro: "将手牌设置为正方形或长方形", + init: "default", + unfrequent: true, + item: ITEM, + onclick(item) { + var linked = false; + if (game.me && game.me.isLinked()) { + linked = true; + } + game.saveConfig("cardshape", item); + if (item == "oblong" && (game.layout == "long" || game.layout == "mobile" || game.layout == "long2" || game.layout == "nova")) { + ui.arena.classList.add("oblongcard"); + ui.window.classList.add("oblongcard"); + } + else { + ui.arena.classList.remove("oblongcard"); + ui.window.classList.remove("oblongcard"); + } + if (linked) { + if (get.is.linked2(game.me)) { + game.me.classList.remove("linked"); + game.me.classList.add("linked2"); + } + else { + game.me.classList.add("linked"); + game.me.classList.remove("linked2"); + } + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/card-shape/item.js b/noname/library/configuration-menu/appearance/configuration/card-shape/item.js new file mode 100644 index 000000000..b778bf649 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/card-shape/item.js @@ -0,0 +1,4 @@ +export const ITEM = { + default: "默认", + oblong: "长方" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/card-style.js b/noname/library/configuration-menu/appearance/configuration/card-style.js new file mode 100644 index 000000000..1cb3110ff --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/card-style.js @@ -0,0 +1,114 @@ +import { ITEM } from "./card-style/item.js"; + +export const CARD_STYLE = { + name: "卡牌样式", + init: "default", + intro: "设置正面朝上的卡牌的样式", + item: ITEM, + visualBar(node, item, create, switcher) { + if (node.created) { + return; + } + var button; + for (var i = 0; i < node.parentNode.childElementCount; i++) { + if (node.parentNode.childNodes[i]._link == "custom") { + button = node.parentNode.childNodes[i]; + } + } + if (!button) { + return; + } + node.created = true; + var deletepic; + ui.create.filediv(".menubutton", "添加图片", node, function (file) { + if (file) { + game.putDB("image", "card_style", file, function () { + game.getDB("image", "card_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + button.style.backgroundImage = "url(" + data + ")"; + button.className = "button card fullskin"; + node.classList.add("showdelete"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + }); + } + }).inputNode.accept = "image*"; + deletepic = ui.create.div(".menubutton.deletebutton", "删除图片", node, function () { + if (confirm("确定删除自定义图片?(此操作不可撤销)")) { + game.deleteDB("image", "card_style"); + button.style.backgroundImage = "none"; + button.className = "button character dashedmenubutton"; + node.classList.remove("showdelete"); + if (lib.config.card_style == "custom") { + lib.configMenu.appearence.config.card_style.onclick("default"); + switcher.lastChild.innerHTML = "默认"; + } + button.classList.add("transparent"); + } + }); + }, + visualMenu(node, link, name, config) { + node.className = "button card fullskin"; + node.style.backgroundSize = "100% 100%"; + switch (link) { + case "default": case "custom": { + if (lib.config.theme == "simple") { + node.style.backgroundImage = "linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4))"; + node.className = "button character"; + } + else { + node.style.backgroundImage = "none"; + node.className = "button character dashedmenubutton"; + } + break; + } + case "new": node.setBackgroundImage("theme/style/card/image/new.png"); break; + case "ol": node.setBackgroundImage("theme/style/card/image/ol.png"); break; + case "wood": node.setBackgroundImage("theme/woodden/wood.jpg"); node.style.backgroundSize = "initial"; break; + case "music": node.setBackgroundImage("theme/music/wood3.png"); break; + case "simple": node.setBackgroundImage("theme/simple/card.png"); break; + } + if (link == "custom") { + node.classList.add("transparent"); + game.getDB("image", "card_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + node.style.backgroundImage = "url(" + data + ")"; + node.className = "button card fullskin"; + node.parentNode.lastChild.classList.add("showdelete"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + }, + onclick(layout) { + game.saveConfig("card_style", layout); + var style = ui.css.card_style; + ui.css.card_style = lib.init.css(lib.assetURL + "theme/style/card", lib.config.card_style); + style.remove(); + if (ui.css.card_stylesheet) { + ui.css.card_stylesheet.remove(); + delete ui.css.card_stylesheet; + } + if (layout == "custom") { + game.getDB("image", "card_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.card_stylesheet) { + ui.css.card_stylesheet.remove(); + } + ui.css.card_stylesheet = lib.init.sheet(".card:not(*:empty){background-image:url(" + fileLoadedEvent.target.result + ")}"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + }, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/card-style/item.js b/noname/library/configuration-menu/appearance/configuration/card-style/item.js new file mode 100644 index 000000000..d6b45d906 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/card-style/item.js @@ -0,0 +1,8 @@ +export const ITEM = { + wood: "木纹", + music: "音乐", + simple: "原版", + ol: "手杀", + custom: "自定", + default: "默认" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/card-temporary-name.js b/noname/library/configuration-menu/appearance/configuration/card-temporary-name.js new file mode 100644 index 000000000..f5598d07e --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/card-temporary-name.js @@ -0,0 +1,28 @@ +import { ITEM } from "./card-temporary-name/item.js"; + +export const CARD_TEMPORARY_NAME = { + name: "视为卡牌名称显示", + intro: "显示强制视为类卡牌(如武魂),包括拆顺对话框内的判定牌(国色)转换等名称的显示方式", + init: "image", + unfrequent: true, + item: ITEM, + onclick(item) { + game.saveConfig("cardtempname", item); + if (!game.me || !game.me.getCards) return; + var hs = game.me.getCards("h"); + for (var i = 0; i < hs.length; i++) { + if (hs[i]._tempName) { + switch (item) { + case "default": + case "horizon": + case "image": + ui.create.cardTempName(hs[i]); + break; + default: + hs[i]._tempName.delete(); + delete hs[i]._tempName; + } + } + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/card-temporary-name/item.js b/noname/library/configuration-menu/appearance/configuration/card-temporary-name/item.js new file mode 100644 index 000000000..827633983 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/card-temporary-name/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + default: "纵向", + horizon: "横向", + image: "图片", + off: "禁用" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/card-text-font.js b/noname/library/configuration-menu/appearance/configuration/card-text-font.js new file mode 100644 index 000000000..cb7f93318 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/card-text-font.js @@ -0,0 +1,18 @@ +import { ITEM } from "./card-text-font/item.js"; + +export const CARD_TEXT_FONT = { + name: "卡牌字体", + init: "default", + unfrequent: true, + item: ITEM, + textMenu(node, link) { + if (link != "default") { + node.style.fontFamily = link; + } + node.style.fontSize = "20px"; + }, + onclick(font) { + game.saveConfig("cardtext_font", font); + lib.init.cssstyles(); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/card-text-font/item.js b/noname/library/configuration-menu/appearance/configuration/card-text-font/item.js new file mode 100644 index 000000000..34bd11ce8 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/card-text-font/item.js @@ -0,0 +1 @@ +export const ITEM = {}; \ No newline at end of file diff --git a/noname/library/configuration-menu/appearance/configuration/change-skin-automatically.js b/noname/library/configuration-menu/appearance/configuration/change-skin-automatically.js new file mode 100644 index 000000000..d808c1a0c --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/change-skin-automatically.js @@ -0,0 +1,18 @@ +import { Game } from "../../../../game.js"; +import { status } from "../../../../status.js"; +import { Click } from "../../../../ui/click.js"; +import { ITEM } from "./change-skin-automatically/item.js"; + +export const CHANGE_SKIN_AUTOMATICALLY = { + name: "自动换肤", + init: "off", + item: ITEM, + intro: "游戏每进行一段时间自动为一个随机角色更换皮肤", + onclick(item) { + Game.saveConfig("change_skin_auto", item); + clearTimeout(status.skintimeout); + if (item != "off") { + status.skintimeout = setTimeout(Click.autoskin, parseInt(item)); + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/change-skin-automatically/item.js b/noname/library/configuration-menu/appearance/configuration/change-skin-automatically/item.js new file mode 100644 index 000000000..6a9ec12fa --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/change-skin-automatically/item.js @@ -0,0 +1,7 @@ +export const ITEM = { + off: "关闭", + "30000": "半分钟", + "60000": "一分钟", + "120000": "两分钟", + "300000": "五分钟" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/change-skin.js b/noname/library/configuration-menu/appearance/configuration/change-skin.js new file mode 100644 index 000000000..a88d82463 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/change-skin.js @@ -0,0 +1,5 @@ +export const CHANGE_SKIN = { + name: "开启换肤", + init: true, + intro: "在武将的右键菜单中换肤,皮肤可在选项-文件-图片文件-皮肤图片中添加" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/control-style.js b/noname/library/configuration-menu/appearance/configuration/control-style.js new file mode 100644 index 000000000..8b35cc9d4 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/control-style.js @@ -0,0 +1,116 @@ +import { ITEM } from "./control-style/item.js"; + +export const CONTROL_STYLE = { + name: "按钮背景", + init: "default", + item: ITEM, + visualBar(node, item, create, switcher) { + if (node.created) { + return; + } + var button; + for (var i = 0; i < node.parentNode.childElementCount; i++) { + if (node.parentNode.childNodes[i]._link == "custom") { + button = node.parentNode.childNodes[i]; + } + } + if (!button) { + return; + } + node.created = true; + var deletepic; + ui.create.filediv(".menubutton", "添加图片", node, function (file) { + if (file) { + game.putDB("image", "control_style", file, function () { + game.getDB("image", "control_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + button.style.backgroundImage = "url(" + data + ")"; + button.className = "button character controlbutton"; + node.classList.add("showdelete"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + }); + } + }).inputNode.accept = "image/*"; + deletepic = ui.create.div(".menubutton.deletebutton", "删除图片", node, function () { + if (confirm("确定删除自定义图片?(此操作不可撤销)")) { + game.deleteDB("image", "control_style"); + button.style.backgroundImage = "none"; + button.className = "button character controlbutton dashedmenubutton"; + node.classList.remove("showdelete"); + if (lib.config.control_style == "custom") { + lib.configMenu.appearence.config.control_style.onclick("default"); + switcher.lastChild.innerHTML = "默认"; + } + button.classList.add("transparent"); + } + }); + }, + visualMenu(node, link, name, config) { + node.className = "button character controlbutton"; + node.style.backgroundSize = ""; + switch (link) { + case "default": case "custom": { + node.style.backgroundImage = "none"; + node.classList.add("dashedmenubutton"); + break; + } + case "wood": node.setBackgroundImage("theme/woodden/wood.jpg"); break; + case "music": node.style.backgroundImage = "linear-gradient(#4b4b4b, #464646)"; break; + case "simple": node.style.backgroundImage = "linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4))"; break; + } + if (link == "custom") { + node.classList.add("transparent"); + game.getDB("image", "control_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + node.style.backgroundImage = "url(" + data + ")"; + node.className = "button character controlbutton"; + node.parentNode.lastChild.classList.add("showdelete"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + }, + onclick(layout) { + game.saveConfig("control_style", layout); + if (ui.css.control_stylesheet) { + ui.css.control_stylesheet.remove(); + delete ui.css.control_stylesheet; + } + if (layout == "custom") { + game.getDB("image", "control_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.control_stylesheet) { + ui.css.control_stylesheet.remove(); + } + ui.css.control_stylesheet = lib.init.sheet(`#window .control,.menubutton:not(.active):not(.highlight):not(.red):not(.blue),#window #system>div>div{background-image:url("${fileLoadedEvent.target.result}")}`); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + else if (layout != "default") { + var str = ""; + switch (layout) { + case "wood": str = `url("${lib.assetURL}theme/woodden/wood.jpg")`; break; + case "music": str = "linear-gradient(#4b4b4b, #464646);color:white;text-shadow:black 0 0 2px"; break; + case "simple": str = "linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4));color:white;text-shadow:black 0 0 2px"; break; + } + if (layout == "wood") { + ui.css.control_stylesheet = lib.init.sheet("#window .control,#window .menubutton,#window #system>div>div,#window #system>div>.pressdown2{background-image:" + str + "}"); + } + else { + ui.css.control_stylesheet = lib.init.sheet("#window .control,.menubutton:not(.active):not(.highlight):not(.red):not(.blue),#window #system>div>div{background-image:" + str + "}"); + } + } + }, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/control-style/item.js b/noname/library/configuration-menu/appearance/configuration/control-style/item.js new file mode 100644 index 000000000..d24a30c12 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/control-style/item.js @@ -0,0 +1,7 @@ +export const ITEM = { + wood: "木纹", + music: "音乐", + simple: "简约", + custom: "自定", + default: "默认" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/cursor-style.js b/noname/library/configuration-menu/appearance/configuration/cursor-style.js new file mode 100644 index 000000000..939a7589f --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/cursor-style.js @@ -0,0 +1,18 @@ +import { ITEM } from "./cursor-style/item.js"; + +export const CURSOR_STYLE = { + name: "鼠标指针", + init: "auto", + intro: "设置为固定后鼠标指针将不随移动到的区域而变化", + unfrequent: true, + item: ITEM, + onclick(item) { + game.saveConfig("cursor_style", item); + if (item == "pointer") { + ui.window.classList.add("nopointer"); + } + else { + ui.window.classList.remove("nopointer"); + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/cursor-style/item.js b/noname/library/configuration-menu/appearance/configuration/cursor-style/item.js new file mode 100644 index 000000000..4def114e0 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/cursor-style/item.js @@ -0,0 +1,4 @@ +export const ITEM = { + auto: "自动", + pointer: "固定" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/custom-button-control-bottom.js b/noname/library/configuration-menu/appearance/configuration/custom-button-control-bottom.js new file mode 100644 index 000000000..72c0e0956 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/custom-button-control-bottom.js @@ -0,0 +1,12 @@ +import { CUSTOM_BUTTON_ITEM } from "./custom-button-item.js"; + +export const CUSTOM_BUTTON_CONTROL_BOTTOM = { + name: "技能下部高度", + init: "0x", + item: CUSTOM_BUTTON_ITEM, + unfrequent: true, + onclick(item) { + game.saveConfig("custom_button_control_bottom", item); + lib.configMenu.appearence.config.custom_button.onclick("skip"); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/custom-button-control-top.js b/noname/library/configuration-menu/appearance/configuration/custom-button-control-top.js new file mode 100644 index 000000000..c265d9a71 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/custom-button-control-top.js @@ -0,0 +1,12 @@ +import { CUSTOM_BUTTON_ITEM } from "./custom-button-item.js"; + +export const CUSTOM_BUTTON_CONTROL_TOP = { + name: "技能上部高度", + init: "0x", + item: CUSTOM_BUTTON_ITEM, + unfrequent: true, + onclick(item) { + game.saveConfig("custom_button_control_top", item); + lib.configMenu.appearence.config.custom_button.onclick("skip"); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/custom-button-item.js b/noname/library/configuration-menu/appearance/configuration/custom-button-item.js new file mode 100644 index 000000000..0799dc9a6 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/custom-button-item.js @@ -0,0 +1,13 @@ +export const CUSTOM_BUTTON_ITEM = { + "-5x": "-5px", + "-4x": "-4px", + "-3x": "-3px", + "-2x": "-2px", + "-1x": "-1px", + "0x": "默认", + "1x": "1px", + "2x": "2px", + "3x": "3px", + "4x": "4px", + "5x": "5px" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/custom-button-system-bottom.js b/noname/library/configuration-menu/appearance/configuration/custom-button-system-bottom.js new file mode 100644 index 000000000..5b68ab220 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/custom-button-system-bottom.js @@ -0,0 +1,12 @@ +import { CUSTOM_BUTTON_ITEM } from "./custom-button-item.js"; + +export const CUSTOM_BUTTON_SYSTEM_BOTTOM = { + name: "菜单下部高度", + init: "0x", + item: CUSTOM_BUTTON_ITEM, + unfrequent: true, + onclick(item) { + game.saveConfig("custom_button_system_bottom", item); + lib.configMenu.appearence.config.custom_button.onclick("skip"); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/custom-button-system-top.js b/noname/library/configuration-menu/appearance/configuration/custom-button-system-top.js new file mode 100644 index 000000000..42010d5a9 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/custom-button-system-top.js @@ -0,0 +1,12 @@ +import { CUSTOM_BUTTON_ITEM } from "./custom-button-item.js"; + +export const CUSTOM_BUTTON_SYSTEM_TOP = { + name: "菜单上部高度", + init: "0x", + item: CUSTOM_BUTTON_ITEM, + unfrequent: true, + onclick(item) { + game.saveConfig("custom_button_system_top", item); + lib.configMenu.appearence.config.custom_button.onclick("skip"); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/custom-button.js b/noname/library/configuration-menu/appearance/configuration/custom-button.js new file mode 100644 index 000000000..cb40ae74d --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/custom-button.js @@ -0,0 +1,34 @@ +export const CUSTOM_BUTTON = { + name: "自定义按钮高度", + init: false, + unfrequent: true, + onclick(bool) { + if (bool !== "skip") { + game.saveConfig("custom_button", bool); + } + if (ui.css.buttonsheet) { + ui.css.buttonsheet.remove(); + } + if (lib.config.custom_button) { + var cbnum1 = 6 + (parseInt(lib.config.custom_button_system_top) || 0); + var cbnum2 = 6 + (parseInt(lib.config.custom_button_system_bottom) || 0); + var cbnum3 = 3 + (parseInt(lib.config.custom_button_control_top) || 0); + var cbnum4 = 3 + (parseInt(lib.config.custom_button_control_bottom) || 0); + var cbnum5 = 2; + var cbnum6 = 2; + if (cbnum3 < 0) { + cbnum5 += cbnum3; + cbnum3 = 0; + } + if (cbnum4 < 0) { + cbnum6 += cbnum4; + cbnum4 = 0; + } + ui.css.buttonsheet = lib.init.sheet( + "#system>div>div, .caption>div>.tdnode{padding-top:" + cbnum1 + "px !important;padding-bottom:" + cbnum2 + "px !important}", + "#control>.control>div{padding-top:" + cbnum3 + "px;padding-bottom:" + cbnum4 + "px}", + "#control>.control{padding-top:" + cbnum5 + "px;padding-bottom:" + cbnum6 + "px}" + ); + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/damage-shake.js b/noname/library/configuration-menu/appearance/configuration/damage-shake.js new file mode 100644 index 000000000..c86dc762f --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/damage-shake.js @@ -0,0 +1,6 @@ +export const DAMAGE_SHAKE = { + name: "伤害抖动", + intro: "角色受到伤害时的抖动效果", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/die-move.js b/noname/library/configuration-menu/appearance/configuration/die-move.js new file mode 100644 index 000000000..e81c239ed --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/die-move.js @@ -0,0 +1,9 @@ +import { ITEM } from "./die-move/item.js"; + +export const DIE_MOVE = { + name: "阵亡效果", + intro: "阵亡后武将的显示效果", + init: "flip", + unfrequent: true, + item: ITEM +}; diff --git a/noname/library/configuration-menu/appearance/configuration/die-move/item.js b/noname/library/configuration-menu/appearance/configuration/die-move/item.js new file mode 100644 index 000000000..6e94766b2 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/die-move/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + off: "关闭", + move: "移动", + flip: "翻面" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/fold-card.js b/noname/library/configuration-menu/appearance/configuration/fold-card.js new file mode 100644 index 000000000..6c6971b6a --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/fold-card.js @@ -0,0 +1,5 @@ +export const FOLD_CARD = { + name: "折叠手牌", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/fold-mode.js b/noname/library/configuration-menu/appearance/configuration/fold-mode.js new file mode 100644 index 000000000..493bfc1ec --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/fold-mode.js @@ -0,0 +1,6 @@ +export const FOLD_MODE = { + name: "折叠模式菜单", + intro: "关闭后模式菜单中“更多”内的项目将直接展开", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/glass-ui.js b/noname/library/configuration-menu/appearance/configuration/glass-ui.js new file mode 100644 index 000000000..d4224263e --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/glass-ui.js @@ -0,0 +1,15 @@ +export const GLASS_UI = { + name: "玻璃主题", + intro: "为游戏主题打开玻璃效果(手机暂不支持)", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("glass_ui", bool); + if (bool) { + ui.window.classList.add("glass_ui"); + } + else { + ui.window.classList.remove("glass_ui"); + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/global-font.js b/noname/library/configuration-menu/appearance/configuration/global-font.js new file mode 100644 index 000000000..98b29cd24 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/global-font.js @@ -0,0 +1,21 @@ +import { ITEM } from "./global-font/item.js"; + +export const GLOBAL_FONT = { + name: "界面字体", + init: "default", + unfrequent: true, + item: ITEM, + textMenu(node, link) { + if (link != "default") { + node.style.fontFamily = link; + } + else { + node.style.fontFamily = `"STHeiti","SimHei","Microsoft JhengHei","Microsoft YaHei","WenQuanYi Micro Hei","Suits",Helvetica,Arial,sans-serif`; + } + node.style.fontSize = "20px"; + }, + onclick(font) { + game.saveConfig("global_font", font); + lib.init.cssstyles(); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/global-font/item.js b/noname/library/configuration-menu/appearance/configuration/global-font/item.js new file mode 100644 index 000000000..69a1c7a1a --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/global-font/item.js @@ -0,0 +1 @@ +export const ITEM = {}; diff --git a/noname/library/configuration-menu/appearance/configuration/glow-phase.js b/noname/library/configuration-menu/appearance/configuration/glow-phase.js new file mode 100644 index 000000000..9c89d28bd --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/glow-phase.js @@ -0,0 +1,13 @@ +import { ITEM } from "./glow-phase/item.js"; + +export const GLOW_PHASE = { + name: "当前回合角色高亮", + unfrequent: true, + init: "yellow", + intro: "设置当前回合角色的边框颜色", + item: ITEM, + onclick(bool) { + game.saveConfig("glow_phase", bool); + lib.init.cssstyles(); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/glow-phase/item.js b/noname/library/configuration-menu/appearance/configuration/glow-phase/item.js new file mode 100644 index 000000000..58949f7d8 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/glow-phase/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + none: "无", + yellow: "黄色", + green: "绿色", + purple: "紫色" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/hp-style.js b/noname/library/configuration-menu/appearance/configuration/hp-style.js new file mode 100644 index 000000000..47da26b82 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/hp-style.js @@ -0,0 +1,177 @@ +import { ITEM } from "./hp-style/item.js"; + +export const HP_STYLE = { + name: "体力条样式", + init: "ol", + item: ITEM, + visualBar(node, item, create, switcher) { + if (node.created) { + return; + } + var button; + for (var i = 0; i < node.parentNode.childElementCount; i++) { + if (node.parentNode.childNodes[i]._link == "custom") { + button = node.parentNode.childNodes[i]; + } + } + if (!button) { + return; + } + node.created = true; + var deletepic; + ui.create.filediv(".menubutton.addbutton", "添加图片", node, function (file) { + if (file && node.currentDB) { + game.putDB("image", "hp_style" + node.currentDB, file, function () { + game.getDB("image", "hp_style" + node.currentDB, function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + button.childNodes[node.currentDB - 1].style.backgroundImage = "url(" + data + ")"; + button.classList.add("shown"); + node.classList.add("showdelete"); + node.currentDB++; + if (node.currentDB > 4) { + node.classList.add("hideadd"); + button.classList.remove("transparent"); + delete node.currentDB; + } + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + }); + } + }).inputNode.accept = "image/*"; + deletepic = ui.create.div(".menubutton.deletebutton", "删除图片", node, function () { + if (confirm("确定删除自定义图片?(此操作不可撤销)")) { + game.deleteDB("image", "hp_style1"); + game.deleteDB("image", "hp_style2"); + game.deleteDB("image", "hp_style3"); + game.deleteDB("image", "hp_style4"); + for (var i = 0; i < button.childElementCount; i++) { + button.childNodes[i].style.backgroundImage = "none"; + } + node.classList.remove("showdelete"); + node.classList.remove("hideadd"); + if (lib.config.hp_style == "custom") { + lib.configMenu.appearence.config.hp_style.onclick("default"); + switcher.lastChild.innerHTML = "默认"; + } + button.classList.add("transparent"); + button.classList.remove("shown"); + node.currentDB = 1; + } + }); + }, + visualMenu(node, link, name, config) { + node.className = "button hpbutton dashedmenubutton"; + node.innerHTML = ""; + for (var i = 1; i <= 4; i++) { + var div = ui.create.div(node); + if (link == "default") { + ui.create.div(div); + } + else if (link != "custom") { + div.setBackgroundImage("theme/style/hp/image/" + link + i + ".png"); + } + if (i == 4) { + div.style.webkitFilter = "grayscale(1)"; + } + } + if (link == "custom") { + node.classList.add("transparent"); + var getDB = function (num) { + node.parentNode.lastChild.currentDB = num; + game.getDB("image", "hp_style" + num, function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + node.childNodes[num - 1].style.backgroundImage = "url(" + data + ")"; + node.classList.add("shown"); + node.parentNode.lastChild.classList.add("showdelete"); + if (num < 4) { + getDB(num + 1); + } + else { + node.parentNode.lastChild.classList.add("hideadd"); + node.classList.remove("transparent"); + delete node.parentNode.firstChild.currentDB; + } + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + getDB(1); + } + }, + onclick(layout) { + game.saveConfig("hp_style", layout); + var style = ui.css.hp_style; + ui.css.hp_style = lib.init.css(lib.assetURL + "theme/style/hp", lib.config.hp_style); + style.remove(); + if (ui.css.hp_stylesheet1) { + ui.css.hp_stylesheet1.remove(); + delete ui.css.hp_stylesheet1; + } + if (ui.css.hp_stylesheet2) { + ui.css.hp_stylesheet2.remove(); + delete ui.css.hp_stylesheet2; + } + if (ui.css.hp_stylesheet3) { + ui.css.hp_stylesheet3.remove(); + delete ui.css.hp_stylesheet3; + } + if (ui.css.hp_stylesheet4) { + ui.css.hp_stylesheet4.remove(); + delete ui.css.hp_stylesheet4; + } + if (layout == "custom") { + game.getDB("image", "hp_style1", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.hp_stylesheet1) { + ui.css.hp_stylesheet1.remove(); + } + ui.css.hp_stylesheet1 = lib.init.sheet(`.hp:not(.text):not(.actcount)[data-condition="high"]>div:not(.lost){background-image:url(${fileLoadedEvent.target.result})}`); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + game.getDB("image", "hp_style2", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.hp_stylesheet2) { + ui.css.hp_stylesheet2.remove(); + } + ui.css.hp_stylesheet2 = lib.init.sheet(`.hp:not(.text):not(.actcount)[data-condition="mid"]>div:not(.lost){background-image:url(${fileLoadedEvent.target.result})}`); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + game.getDB("image", "hp_style3", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.hp_stylesheet3) { + ui.css.hp_stylesheet3.remove(); + } + ui.css.hp_stylesheet3 = lib.init.sheet(`.hp:not(.text):not(.actcount)[data-condition="low"]>div:not(.lost){background-image:url(${fileLoadedEvent.target.result})}`); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + game.getDB("image", "hp_style4", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.hp_stylesheet4) { + ui.css.hp_stylesheet4.remove(); + } + ui.css.hp_stylesheet4 = lib.init.sheet(`.hp:not(.text):not(.actcount)>.lost{background-image:url(${fileLoadedEvent.target.result})}`); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + }, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/hp-style/item.js b/noname/library/configuration-menu/appearance/configuration/hp-style/item.js new file mode 100644 index 000000000..5b5db306d --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/hp-style/item.js @@ -0,0 +1,10 @@ +export const ITEM = { + default: "默认", + emotion: "表情", + glass: "勾玉", + round: "国战", + ol: "手杀", + xinglass: "双鱼", + xinround: "OL", + custom: "自定" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/identity-font.js b/noname/library/configuration-menu/appearance/configuration/identity-font.js new file mode 100644 index 000000000..7b2a7968c --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/identity-font.js @@ -0,0 +1,18 @@ +import { ITEM } from "./identity-font/item.js"; + +export const IDENTITY_FONT = { + name: "身份字体", + init: "huangcao", + unfrequent: true, + item: ITEM, + textMenu(node, link) { + if (link != "default") { + node.style.fontFamily = link; + } + node.style.fontSize = "20px"; + }, + onclick(font) { + game.saveConfig("identity_font", font); + lib.init.cssstyles(); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/identity-font/item.js b/noname/library/configuration-menu/appearance/configuration/identity-font/item.js new file mode 100644 index 000000000..69a1c7a1a --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/identity-font/item.js @@ -0,0 +1 @@ +export const ITEM = {}; diff --git a/noname/library/configuration-menu/appearance/configuration/image-background-blur.js b/noname/library/configuration-menu/appearance/configuration/image-background-blur.js new file mode 100644 index 000000000..818ac2423 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/image-background-blur.js @@ -0,0 +1,21 @@ +import { Game } from "../../../../game.js"; +import { UI } from "../../../../ui.js"; +import { configuration } from "../../../configuration.js"; + +export const IMAGE_BACKGROUND_BLUR = { + name: "背景模糊", + init: false, + onclick(bool) { + Game.saveConfig("image_background_blur", bool); + if (configuration.image_background_blur) { + UI.background.style.filter = "blur(8px)"; + UI.background.style.webkitFilter = "blur(8px)"; + UI.background.style.transform = "scale(1.05)"; + } + else { + UI.background.style.filter = ""; + UI.background.style.webkitFilter = ""; + UI.background.style.transform = ""; + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/image-background-random.js b/noname/library/configuration-menu/appearance/configuration/image-background-random.js new file mode 100644 index 000000000..1340ddf8e --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/image-background-random.js @@ -0,0 +1,11 @@ +import { Game } from "../../../../game.js"; +import { Initialization } from "../../../initialization.js"; + +export const IMAGE_BACKGROUND_RANDOM = { + name: "随机背景", + init: false, + onclick(bool) { + Game.saveConfig("image_background_random", bool); + Initialization.background(); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/jiu-effect.js b/noname/library/configuration-menu/appearance/configuration/jiu-effect.js new file mode 100644 index 000000000..694c9d3fb --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/jiu-effect.js @@ -0,0 +1,5 @@ +export const JIU_EFFECT = { + name: "喝酒效果", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/link-style-2.js b/noname/library/configuration-menu/appearance/configuration/link-style-2.js new file mode 100644 index 000000000..2042baca2 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/link-style-2.js @@ -0,0 +1,35 @@ +import { ITEM } from "./link-style-2/item.js"; + +export const LINK_STYLE_2 = { + name: "横置样式", + intro: "设置角色被横置时的样式", + init: "chain", + unfrequent: true, + item: ITEM, + onclick(style) { + var list = []; + for (var i = 0; i < game.players.length; i++) { + if (game.players[i].isLinked()) { + list.push(game.players[i]); + } + } + game.saveConfig("link_style2", style); + for (var i = 0; i < list.length; i++) { + if (get.is.linked2(list[i])) { + list[i].classList.add("linked2"); + list[i].classList.remove("linked"); + } + else { + list[i].classList.add("linked"); + list[i].classList.remove("linked2"); + } + } + if (style == "chain") { + ui.arena.classList.remove("nolink"); + } + else { + ui.arena.classList.add("nolink"); + } + ui.updatem(); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/link-style-2/item.js b/noname/library/configuration-menu/appearance/configuration/link-style-2/item.js new file mode 100644 index 000000000..de0ffc37c --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/link-style-2/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + chain: "铁索", + rotate: "横置", + mark: "标记" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/menu-style.js b/noname/library/configuration-menu/appearance/configuration/menu-style.js new file mode 100644 index 000000000..d2db6a1da --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/menu-style.js @@ -0,0 +1,114 @@ +import { ITEM } from "./menu-style/item.js"; + +export const MENU_STYLE = { + name: "菜单背景", + init: "default", + item: ITEM, + visualBar(node, item, create, switcher) { + if (node.created) { + return; + } + var button; + for (var i = 0; i < node.parentNode.childElementCount; i++) { + if (node.parentNode.childNodes[i]._link == "custom") { + button = node.parentNode.childNodes[i]; + } + } + if (!button) { + return; + } + node.created = true; + var deletepic; + ui.create.filediv(".menubutton", "添加图片", node, function (file) { + if (file) { + game.putDB("image", "menu_style", file, function () { + game.getDB("image", "menu_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + button.style.backgroundImage = `url(${data})`; + button.style.backgroundSize = "cover"; + button.className = "button character"; + node.classList.add("showdelete"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + }); + } + }).inputNode.accept = "image/*"; + deletepic = ui.create.div(".menubutton.deletebutton", "删除图片", node, function () { + if (confirm("确定删除自定义图片?(此操作不可撤销)")) { + game.deleteDB("image", "menu_style"); + button.style.backgroundImage = "none"; + button.style.backgroundSize = "auto"; + button.className = "button character dashedmenubutton"; + node.classList.remove("showdelete"); + if (lib.config.menu_style == "custom") { + lib.configMenu.appearence.config.menu_style.onclick("default"); + switcher.lastChild.innerHTML = "默认"; + } + button.classList.add("transparent"); + } + }); + }, + visualMenu(node, link, name, config) { + node.className = "button character"; + node.style.backgroundSize = "auto"; + switch (link) { + case "default": case "custom": { + node.style.backgroundImage = "none"; + node.classList.add("dashedmenubutton"); + break; + } + case "wood": node.setBackgroundImage("theme/woodden/wood2.png"); break; + case "music": node.style.backgroundImage = "linear-gradient(#4b4b4b, #464646)"; break; + case "simple": node.style.backgroundImage = "linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4))"; break; + } + if (link == "custom") { + node.classList.add("transparent"); + game.getDB("image", "menu_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + node.style.backgroundImage = "url(" + data + ")"; + node.style.backgroundSize = "cover"; + node.className = "button character"; + node.parentNode.lastChild.classList.add("showdelete"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + }, + onclick(layout) { + game.saveConfig("menu_style", layout); + if (ui.css.menu_stylesheet) { + ui.css.menu_stylesheet.remove(); + delete ui.css.menu_stylesheet; + } + if (layout == "custom") { + game.getDB("image", "menu_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.menu_stylesheet) { + ui.css.menu_stylesheet.remove(); + } + ui.css.menu_stylesheet = lib.init.sheet(`html #window>.dialog.popped,html .menu,html .menubg{background-image:url("${fileLoadedEvent.target.result}");background-size:cover}`); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + else if (layout != "default") { + var str = ""; + switch (layout) { + case "wood": str = `url("${lib.assetURL}theme/woodden/wood2.png")`; break; + case "music": str = "linear-gradient(#4b4b4b, #464646);color:white;text-shadow:black 0 0 2px"; break; + case "simple": str = "linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4));color:white;text-shadow:black 0 0 2px"; break; + } + ui.css.menu_stylesheet = lib.init.sheet(`html #window>.dialog.popped,html .menu,html .menubg{background-image:${str}}`); + } + }, + unfrequent: true, +}; diff --git a/noname/library/configuration-menu/appearance/configuration/menu-style/item.js b/noname/library/configuration-menu/appearance/configuration/menu-style/item.js new file mode 100644 index 000000000..d24a30c12 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/menu-style/item.js @@ -0,0 +1,7 @@ +export const ITEM = { + wood: "木纹", + music: "音乐", + simple: "简约", + custom: "自定", + default: "默认" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/name-font.js b/noname/library/configuration-menu/appearance/configuration/name-font.js new file mode 100644 index 000000000..5fa4950a2 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/name-font.js @@ -0,0 +1,18 @@ +import { ITEM } from "./name-font/item.js"; + +export const NAME_FONT = { + name: "人名字体", + init: "xingkai", + unfrequent: true, + item: ITEM, + textMenu(node, link) { + if (link != "default") { + node.style.fontFamily = link; + } + node.style.fontSize = "20px"; + }, + onclick(font) { + game.saveConfig("name_font", font); + lib.init.cssstyles(); + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/name-font/item.js b/noname/library/configuration-menu/appearance/configuration/name-font/item.js new file mode 100644 index 000000000..69a1c7a1a --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/name-font/item.js @@ -0,0 +1 @@ +export const ITEM = {}; diff --git a/noname/library/configuration-menu/appearance/configuration/phone-layout.js b/noname/library/configuration-menu/appearance/configuration/phone-layout.js new file mode 100644 index 000000000..1097352e7 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/phone-layout.js @@ -0,0 +1,22 @@ +import { Game } from "../../../../game.js"; +import { Is } from "../../../../get/is.js"; +import { Library } from "../../../../library.js"; +import { UI } from "../../../../ui.js"; +import { css } from "../../../../ui/css.js"; + +export const PHONE_LAYOUT = { + name: "触屏布局", + init: false, + onclick(bool) { + if (Is.nomenu("phonelayout", bool)) return false; + Game.saveConfig("phonelayout", bool); + if (Is.phoneLayout()) { + css.phone.href = `${Library.assetURL}layout/default/phone.css`; + UI.arena.classList.add("phone"); + } + else { + css.phone.href = ""; + UI.arena.classList.remove("phone"); + } + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/player-border.js b/noname/library/configuration-menu/appearance/configuration/player-border.js new file mode 100644 index 000000000..ecf365a34 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/player-border.js @@ -0,0 +1,37 @@ +import { ITEM } from "./player-border/item.js"; + +export const PLAYER_BORDER = { + name: "边框宽度", + init: "normal", + intro: "设置角色的边框宽度", + unfrequent: true, + item: ITEM, + onclick(item) { + game.saveConfig("player_border", item); + if (item != "wide" || game.layout == "long" || game.layout == "long2") { + ui.arena.classList.add("slim_player"); + } + else { + ui.arena.classList.remove("slim_player"); + } + if (item == "slim") { + ui.arena.classList.add("uslim_player"); + } + else { + ui.arena.classList.remove("uslim_player"); + } + if (item == "narrow") { + ui.arena.classList.add("mslim_player"); + } + else { + ui.arena.classList.remove("mslim_player"); + } + if (item == "normal" && lib.config.mode != "brawl" && (game.layout == "long" || game.layout == "long2")) { + ui.arena.classList.add("lslim_player"); + } + else { + ui.arena.classList.remove("lslim_player"); + } + ui.window.dataset.player_border = item; + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/player-border/item.js b/noname/library/configuration-menu/appearance/configuration/player-border/item.js new file mode 100644 index 000000000..fe4b10145 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/player-border/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + slim: "细", + narrow: "窄", + normal: "中", + wide: "宽" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/player-height-nova/item.js b/noname/library/configuration-menu/appearance/configuration/player-height-item.js similarity index 57% rename from noname/library/configuration-menu/appearance/configuration/player-height-nova/item.js rename to noname/library/configuration-menu/appearance/configuration/player-height-item.js index 839d310c1..339f0e038 100644 --- a/noname/library/configuration-menu/appearance/configuration/player-height-nova/item.js +++ b/noname/library/configuration-menu/appearance/configuration/player-height-item.js @@ -1,4 +1,4 @@ -export const ITEM = { +export const PLAYER_HEIGHT_ITEM = { short: "矮", default: "中", long: "高" diff --git a/noname/library/configuration-menu/appearance/configuration/player-height-nova.js b/noname/library/configuration-menu/appearance/configuration/player-height-nova.js index d0b49a6b9..93a2c13a9 100644 --- a/noname/library/configuration-menu/appearance/configuration/player-height-nova.js +++ b/noname/library/configuration-menu/appearance/configuration/player-height-nova.js @@ -1,12 +1,13 @@ +import { Game } from "../../../../game.js"; import { UI } from "../../../../ui.js"; -import { ITEM } from "./player-height-nova/item.js"; +import { PLAYER_HEIGHT_ITEM } from "./player-height-item.js"; export const PLAYER_HEIGHT_NOVA = { name: "角色高度", init: "short", - item: ITEM, + item: PLAYER_HEIGHT_ITEM, onclick(item) { - game.saveConfig("player_height_nova", item); + Game.saveConfig("player_height_nova", item); UI.arena.dataset.player_height_nova = item; } }; diff --git a/noname/library/configuration-menu/appearance/configuration/player-height.js b/noname/library/configuration-menu/appearance/configuration/player-height.js index 731059c13..ee2fd0d4f 100644 --- a/noname/library/configuration-menu/appearance/configuration/player-height.js +++ b/noname/library/configuration-menu/appearance/configuration/player-height.js @@ -1,11 +1,11 @@ import { Game } from "../../../../game.js"; import { UI } from "../../../../ui.js"; -import { ITEM } from "./player-height/item.js"; +import { PLAYER_HEIGHT_ITEM } from "./player-height-item.js"; export const PLAYER_HEIGHT = { name: "角色高度", init: "long", - item: ITEM, + item: PLAYER_HEIGHT_ITEM, onclick(item) { Game.saveConfig("player_height", item); UI.arena.dataset.player_height = item; diff --git a/noname/library/configuration-menu/appearance/configuration/player-height/item.js b/noname/library/configuration-menu/appearance/configuration/player-height/item.js deleted file mode 100644 index 839d310c1..000000000 --- a/noname/library/configuration-menu/appearance/configuration/player-height/item.js +++ /dev/null @@ -1,5 +0,0 @@ -export const ITEM = { - short: "矮", - default: "中", - long: "高" -}; diff --git a/noname/library/configuration-menu/appearance/configuration/player-style.js b/noname/library/configuration-menu/appearance/configuration/player-style.js new file mode 100644 index 000000000..97a75bce8 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/player-style.js @@ -0,0 +1,115 @@ +import { ITEM } from "./player-style/item.js"; + +export const PLAYER_STYLE = { + name: "角色背景", + init: "default", + intro: "设置角色的背景图片", + item: ITEM, + visualBar(node, item, create, switcher) { + if (node.created) { + return; + } + var button; + for (var i = 0; i < node.parentNode.childElementCount; i++) { + if (node.parentNode.childNodes[i]._link == "custom") { + button = node.parentNode.childNodes[i]; + } + } + if (!button) { + return; + } + node.created = true; + var deletepic; + ui.create.filediv(".menubutton", "添加图片", node, function (file) { + if (file) { + game.putDB("image", "player_style", file, function () { + game.getDB("image", "player_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + button.style.backgroundImage = "url(" + data + ")"; + button.className = "button character"; + button.style.backgroundSize = "100% 100%"; + node.classList.add("showdelete"); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + }); + } + }).inputNode.accept = "image/*"; + deletepic = ui.create.div(".menubutton.deletebutton", "删除图片", node, function () { + if (confirm("确定删除自定义图片?(此操作不可撤销)")) { + game.deleteDB("image", "player_style"); + button.style.backgroundImage = "none"; + button.className = "button character dashedmenubutton"; + node.classList.remove("showdelete"); + if (lib.config.player_style == "custom") { + lib.configMenu.appearence.config.player_style.onclick("default"); + switcher.lastChild.innerHTML = "默认"; + } + button.classList.add("transparent"); + } + }); + }, + visualMenu(node, link, name, config) { + node.className = "button character"; + node.style.backgroundSize = ""; + node.style.height = "108px"; + switch (link) { + case "default": case "custom": { + node.style.backgroundImage = "none"; + node.className = "button character dashedmenubutton"; + break; + } + case "wood": node.setBackgroundImage("theme/woodden/wood.jpg"); break; + case "music": node.style.backgroundImage = "linear-gradient(#4b4b4b, #464646)"; break; + case "simple": node.style.backgroundImage = "linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4))"; break; + } + if (link == "custom") { + node.classList.add("transparent"); + game.getDB("image", "player_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + var data = fileLoadedEvent.target.result; + node.style.backgroundImage = "url(" + data + ")"; + node.className = "button character"; + node.parentNode.lastChild.classList.add("showdelete"); + node.style.backgroundSize = "100% 100%"; + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + }, + onclick(layout) { + game.saveConfig("player_style", layout); + if (ui.css.player_stylesheet) { + ui.css.player_stylesheet.remove(); + delete ui.css.player_stylesheet; + } + if (layout == "custom") { + game.getDB("image", "player_style", function (fileToLoad) { + if (!fileToLoad) return; + var fileReader = new FileReader(); + fileReader.onload = function (fileLoadedEvent) { + if (ui.css.player_stylesheet) { + ui.css.player_stylesheet.remove(); + } + ui.css.player_stylesheet = lib.init.sheet(`#window .player{background-image:url("${fileLoadedEvent.target.result}");background-size:100% 100%;}`); + }; + fileReader.readAsDataURL(fileToLoad, "UTF-8"); + }); + } + else if (layout != "default") { + var str = ""; + switch (layout) { + case "wood": str = `url("${lib.assetURL}theme/woodden/wood.jpg")`; break; + case "music": str = "linear-gradient(#4b4b4b, #464646)"; break; + case "simple": str = "linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.4))"; break; + } + ui.css.player_stylesheet = lib.init.sheet(`#window .player{background-image:${str}}`); + } + }, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/appearance/configuration/player-style/item.js b/noname/library/configuration-menu/appearance/configuration/player-style/item.js new file mode 100644 index 000000000..d24a30c12 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/player-style/item.js @@ -0,0 +1,7 @@ +export const ITEM = { + wood: "木纹", + music: "音乐", + simple: "简约", + custom: "自定", + default: "默认" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/radius-size.js b/noname/library/configuration-menu/appearance/configuration/radius-size.js new file mode 100644 index 000000000..6b5bc027f --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/radius-size.js @@ -0,0 +1,12 @@ +import { ITEM } from "./radius-size/item.js"; + +export const RADIUS_SIZE = { + name: "圆角大小", + init: "default", + item: ITEM, + unfrequent: true, + onclick(item) { + game.saveConfig("radius_size", item); + ui.window.dataset.radius_size = item; + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/radius-size/item.js b/noname/library/configuration-menu/appearance/configuration/radius-size/item.js new file mode 100644 index 000000000..3839d7906 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/radius-size/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + off: "关闭", + reduce: "减小", + default: "默认", + increase: "增大" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/separate-control.js b/noname/library/configuration-menu/appearance/configuration/separate-control.js new file mode 100644 index 000000000..f2598cfe2 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/separate-control.js @@ -0,0 +1,6 @@ +export const SEPARATE_CONTROL = { + name: "分离选项条", + init: true, + unfrequent: true, + intro: "开启后玩家在进行选择时不同的选项将分开,而不是连在一起" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/skill-animation-type.js b/noname/library/configuration-menu/appearance/configuration/skill-animation-type.js new file mode 100644 index 000000000..4a0a9bd0c --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/skill-animation-type.js @@ -0,0 +1,9 @@ +import { ITEM } from "./skill-animation-type/item.js"; + +export const SKILL_ANIMATION_TYPE = { + name: "技能特效", + intro: "开启后觉醒技、限定技将显示全屏文字", + init: "default", + unfrequent: true, + item: ITEM +}; diff --git a/noname/library/configuration-menu/appearance/configuration/skill-animation-type/item.js b/noname/library/configuration-menu/appearance/configuration/skill-animation-type/item.js new file mode 100644 index 000000000..46ba99fe0 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/skill-animation-type/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + default: "默认", + old: "旧版", + off: "关闭" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/suits-font.js b/noname/library/configuration-menu/appearance/configuration/suits-font.js new file mode 100644 index 000000000..4a1d7a4a6 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/suits-font.js @@ -0,0 +1,6 @@ +export const SUITS_FONT = { + name: "替换花色字体", + init: true, + unfrequent: true, + intro: "使用全角字符的花色替代系统自带的花色(重启游戏后生效)" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/target-shake.js b/noname/library/configuration-menu/appearance/configuration/target-shake.js new file mode 100644 index 000000000..9e0fddd55 --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/target-shake.js @@ -0,0 +1,13 @@ +import { ITEM } from "./target-shake/item.js"; + +export const TARGET_SHAKE = { + name: "目标效果", + intro: "一名玩家成为卡牌或技能的目标时的显示效果", + init: "off", + item: ITEM, + unfrequent: true, + onclick(bool) { + game.saveConfig("target_shake", bool); + ui.arena.dataset.target_shake = bool; + } +}; diff --git a/noname/library/configuration-menu/appearance/configuration/target-shake/item.js b/noname/library/configuration-menu/appearance/configuration/target-shake/item.js new file mode 100644 index 000000000..64663612b --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/target-shake/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + off: "关闭", + zoom: "缩放", + shake: "抖动" +}; diff --git a/noname/library/configuration-menu/appearance/configuration/turned-style.js b/noname/library/configuration-menu/appearance/configuration/turned-style.js new file mode 100644 index 000000000..9d156ed1e --- /dev/null +++ b/noname/library/configuration-menu/appearance/configuration/turned-style.js @@ -0,0 +1,15 @@ +export const TURNED_STYLE = { + name: "翻面文字", + intro: "角色被翻面时显示“翻面”", + init: true, + unfrequent: true, + onclick(bool) { + game.saveConfig("turned_style", bool); + if (bool) { + ui.arena.classList.remove("hide_turned"); + } + else { + ui.arena.classList.add("hide_turned"); + } + } +}; diff --git a/noname/library/configuration-menu/general/configuration.js b/noname/library/configuration-menu/general/configuration.js index 23b63f69d..449cde010 100644 --- a/noname/library/configuration-menu/general/configuration.js +++ b/noname/library/configuration-menu/general/configuration.js @@ -1,7 +1,7 @@ import { Is } from "../../../get/is.js"; import { Library } from "../../../library.js"; -import { AUTO_CHECK_UPDATE } from "./configuration/auto-check-update.js"; -import { AUTO_CONFIRM } from "./configuration/auto-confirm.js"; +import { AUTOMATICALLY_CHECK_UPDATE } from "./configuration/automatically-check-update.js"; +import { AUTOMATICALLY_CONFIRM } from "./configuration/automatically-confirm.js"; import { COMPATIBLE_MODE } from "./configuration/compatible-mode.js"; import { CONFIRM_EXIT } from "./configuration/confirm-exit.js"; import { DEVELOPER } from "./configuration/developer.js"; @@ -39,7 +39,7 @@ import { SWIPE } from "./configuration/swipe.js"; import { SYNCHRONIZE_SPEED } from "./configuration/synchronize-speed.js"; import { TAO_ENEMY } from "./configuration/tao-enemy.js"; import { TOUCHSCREEN } from "./configuration/touchscreen.js"; -import { UN_AUTO_CHOOSE } from "./configuration/un-auto-choose.js"; +import { UN_AUTOMATICALLY_CHOOSE } from "./configuration/un-automatically-choose.js"; import { UPDATE_LINK } from "./configuration/update-link.js"; import { VIDEO } from "./configuration/video.js"; import { WUXIE_SELF } from "./configuration/wuxie-self.js"; @@ -50,9 +50,9 @@ export const CONFIGURATION = { compatiblemode: COMPATIBLE_MODE, confirm_exit: CONFIRM_EXIT, keep_awake: KEEP_AWAKE, - auto_confirm: AUTO_CONFIRM, + auto_confirm: AUTOMATICALLY_CONFIRM, skip_shan: SKIP_SHAN, - unauto_choose: UN_AUTO_CHOOSE, + unauto_choose: UN_AUTOMATICALLY_CHOOSE, wuxie_self: WUXIE_SELF, tao_enemy: TAO_ENEMY, enable_drag: ENABLE_DRAG, @@ -79,7 +79,7 @@ export const CONFIGURATION = { video: VIDEO, max_loadtime: MAXIMUM_LOAD_TIME, mousewheel: MOUSE_WHEEL, - auto_check_update: AUTO_CHECK_UPDATE, + auto_check_update: AUTOMATICALLY_CHECK_UPDATE, lucky_star: LUCKY_STAR, dev: DEVELOPER, fuck_sojson: FUCK_SO_JSON, diff --git a/noname/library/configuration-menu/general/configuration/auto-check-update.js b/noname/library/configuration-menu/general/configuration/automatically-check-update.js similarity index 71% rename from noname/library/configuration-menu/general/configuration/auto-check-update.js rename to noname/library/configuration-menu/general/configuration/automatically-check-update.js index 9d0eabda5..ef554d1a5 100644 --- a/noname/library/configuration-menu/general/configuration/auto-check-update.js +++ b/noname/library/configuration-menu/general/configuration/automatically-check-update.js @@ -1,4 +1,4 @@ -export const AUTO_CHECK_UPDATE = { +export const AUTOMATICALLY_CHECK_UPDATE = { name: "自动检查游戏更新", intro: "进入游戏时检查更新", init: false, diff --git a/noname/library/configuration-menu/general/configuration/auto-confirm.js b/noname/library/configuration-menu/general/configuration/automatically-confirm.js similarity index 77% rename from noname/library/configuration-menu/general/configuration/auto-confirm.js rename to noname/library/configuration-menu/general/configuration/automatically-confirm.js index ffecbc305..93b54b8e7 100644 --- a/noname/library/configuration-menu/general/configuration/auto-confirm.js +++ b/noname/library/configuration-menu/general/configuration/automatically-confirm.js @@ -1,4 +1,4 @@ -export const AUTO_CONFIRM = { +export const AUTOMATICALLY_CONFIRM = { name: "自动确认", init: true, unfrequent: true, diff --git a/noname/library/configuration-menu/general/configuration/extension-source.js b/noname/library/configuration-menu/general/configuration/extension-source.js index 652f04ea8..3498dec4e 100644 --- a/noname/library/configuration-menu/general/configuration/extension-source.js +++ b/noname/library/configuration-menu/general/configuration/extension-source.js @@ -8,6 +8,9 @@ export const EXTENSION_SOURCE = { return configuration.extension_sources; }, intro() { - return `获取在线扩展时的地址。当前地址:${document.createElement("br").outerHTML}${configuration.extension_sources[configuration.extension_source]}`; + const introduction = document.createElement("body"); + introduction.append("获取在线扩展时的地址。当前地址:", document.createElement("br")); + introduction.append(configuration.extension_sources[configuration.extension_source]); + return introduction.innerHTML; } }; diff --git a/noname/library/configuration-menu/general/configuration/keep-awake.js b/noname/library/configuration-menu/general/configuration/keep-awake.js index f748aea1d..da83738b1 100644 --- a/noname/library/configuration-menu/general/configuration/keep-awake.js +++ b/noname/library/configuration-menu/general/configuration/keep-awake.js @@ -1,10 +1,14 @@ import { Game } from "../../../../game.js"; +const introduction = document.createElement("body"); +introduction.append("防止屏幕自动关闭", document.createElement("br")); +introduction.append("注:旧版本通过NoSleep.js实现的屏幕常亮可能会影响外置音频的音量"); + export const KEEP_AWAKE = { name: "屏幕常亮", init: false, unfrequent: true, - intro: `防止屏幕自动关闭${document.createElement("br").outerHTML}注:旧版本通过NoSleep.js实现的屏幕常亮可能会影响外置音频的音量`, + intro: introduction.innerHTML, onclick(bool) { Game.saveConfig("keep_awake", bool); if (bool) { diff --git a/noname/library/configuration-menu/general/configuration/un-auto-choose.js b/noname/library/configuration-menu/general/configuration/un-automatically-choose.js similarity index 78% rename from noname/library/configuration-menu/general/configuration/un-auto-choose.js rename to noname/library/configuration-menu/general/configuration/un-automatically-choose.js index bd2902b6c..e8943c263 100644 --- a/noname/library/configuration-menu/general/configuration/un-auto-choose.js +++ b/noname/library/configuration-menu/general/configuration/un-automatically-choose.js @@ -1,4 +1,4 @@ -export const UN_AUTO_CHOOSE = { +export const UN_AUTOMATICALLY_CHOOSE = { name: "拆顺手牌选择", init: false, unfrequent: true, From db22d22dd6a53a6242cb4b94ac2e4bd429e4f666 Mon Sep 17 00:00:00 2001 From: Tipx-L <138244655+Tipx-L@users.noreply.github.com> Date: Thu, 7 Dec 2023 17:26:06 -0800 Subject: [PATCH 080/302] Start migrating the view configuration menu. --- noname/library/configuration-menu.js | 4 +- noname/library/configuration-menu/view.js | 6 ++ .../configuration-menu/view/configuration.js | 95 +++++++++++++++++++ .../view/configuration/pop-logv.js | 5 + .../view/configuration/show-history.js | 26 +++++ .../view/configuration/show-history/item.js | 5 + 6 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 noname/library/configuration-menu/view.js create mode 100644 noname/library/configuration-menu/view/configuration.js create mode 100644 noname/library/configuration-menu/view/configuration/pop-logv.js create mode 100644 noname/library/configuration-menu/view/configuration/show-history.js create mode 100644 noname/library/configuration-menu/view/configuration/show-history/item.js diff --git a/noname/library/configuration-menu.js b/noname/library/configuration-menu.js index e984fcf0a..650171cc5 100644 --- a/noname/library/configuration-menu.js +++ b/noname/library/configuration-menu.js @@ -1,7 +1,9 @@ import { APPEARANCE } from "./configuration-menu/appearance.js"; import { GENERAL } from "./configuration-menu/general.js"; +import { VIEW } from "./configuration-menu/view.js"; export const CONFIGURATION_MENU = { general: GENERAL, - appearence: APPEARANCE + appearence: APPEARANCE, + view: VIEW }; diff --git a/noname/library/configuration-menu/view.js b/noname/library/configuration-menu/view.js new file mode 100644 index 000000000..5533fc0a4 --- /dev/null +++ b/noname/library/configuration-menu/view.js @@ -0,0 +1,6 @@ +import { CONFIGURATION } from "./view/configuration.js"; + +export const VIEW = { + name: "显示", + config: CONFIGURATION +}; diff --git a/noname/library/configuration-menu/view/configuration.js b/noname/library/configuration-menu/view/configuration.js new file mode 100644 index 000000000..7a8c69df1 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration.js @@ -0,0 +1,95 @@ +import { POP_LOGV } from "./configuration/pop-logv.js"; +import { SHOW_HISTORY } from "./configuration/show-history.js"; + +export const CONFIGURATION = { + update(config, map) { + if (config.mode == "versus" || config.mode == "chess" || config.mode == "tafang" || config.mode == "boss") { + map.show_handcardbutton.show(); + } + else { + map.show_handcardbutton.hide(); + } + if (config.touchscreen) { + map.pop_logv.hide(); + } + else { + map.pop_logv.show(); + } + if (device) { + if (device == "android") { + map.show_statusbar_android.show(); + map.show_statusbar_ios.hide(); + } + else if (device == "ios") { + map.show_statusbar_ios.show(); + map.show_statusbar_android.hide(); + } + if (!game.download) { + setTimeout(function () { + if (!window.StatusBar) { + map.show_statusbar.hide(); + } + }, 5000); + } + } + else { + map.show_statusbar_ios.hide(); + map.show_statusbar_android.hide(); + } + if (get.is.phoneLayout()) { + map.remember_round_button.show(); + map.popequip.show(); + map.filternode_button.show(); + map.show_pause.hide(); + map.show_auto.hide(); + map.show_replay.hide(); + map.show_round_menu.show(); + } + else { + map.show_pause.show(); + map.show_auto.show(); + map.show_replay.show(); + map.show_round_menu.hide(); + map.remember_round_button.hide(); + map.popequip.hide(); + map.filternode_button.hide(); + } + if (config.show_card_prompt) { + map.hide_card_prompt_basic.show(); + map.hide_card_prompt_equip.show(); + } + else { + map.hide_card_prompt_basic.hide(); + map.hide_card_prompt_equip.hide(); + } + if (config.show_log != "off") { + map.clear_log.show(); + } + else { + map.clear_log.hide(); + } + if (get.is.phoneLayout()) { + map.show_time2.show(); + map.show_time.hide(); + if (config.show_time2) { + map.watchface.show(); + } + else { + map.watchface.hide(); + } + } + else { + map.show_time2.hide(); + map.show_time.show(); + map.watchface.hide(); + } + if (config.show_extensionmaker) { + map.show_extensionshare.show(); + } + else { + map.show_extensionshare.hide(); + } + }, + show_history: SHOW_HISTORY, + pop_logv: POP_LOGV +}; \ No newline at end of file diff --git a/noname/library/configuration-menu/view/configuration/pop-logv.js b/noname/library/configuration-menu/view/configuration/pop-logv.js new file mode 100644 index 000000000..cbcf07965 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/pop-logv.js @@ -0,0 +1,5 @@ +export const POP_LOGV = { + name: "自动弹出记录", + init: false, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-history.js b/noname/library/configuration-menu/view/configuration/show-history.js new file mode 100644 index 000000000..f9eae643f --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-history.js @@ -0,0 +1,26 @@ +import { ITEM } from "./show-history/item.js"; + +export const SHOW_HISTORY = { + name: "出牌记录栏", + init: "off", + intro: "在屏幕左侧或右侧显示出牌记录", + unfrequent: true, + item: ITEM, + onclick(bool) { + if (lib.config.show_history == "right") ui.window.animate("rightbar2"); + game.saveConfig("show_history", bool); + if (_status.video || !_status.prepareArena) return; + if (bool == "left") { + ui.window.classList.add("leftbar"); + ui.window.classList.remove("rightbar"); + } + else if (bool == "right") { + ui.window.classList.remove("leftbar"); + ui.window.classList.add("rightbar"); + } + else { + ui.window.classList.remove("leftbar"); + ui.window.classList.remove("rightbar"); + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-history/item.js b/noname/library/configuration-menu/view/configuration/show-history/item.js new file mode 100644 index 000000000..592e12857 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-history/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + off: "关闭", + left: "靠左", + right: "靠右" +}; From 9cd9115eedb28a2e1ef38c42ac9f9fd9d0d02aac Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Fri, 8 Dec 2023 10:29:22 +0800 Subject: [PATCH 081/302] =?UTF-8?q?OL=E8=B0=8B=E5=A7=9C=E7=BB=B4=E5=86=99?= =?UTF-8?q?=E6=B3=95=E4=BC=98=E5=8C=96+=E8=AF=88=E9=99=8D/=E5=9B=B0?= =?UTF-8?q?=E5=A5=8Baudioname?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/onlyOL.js | 82 +++++++++++++++++++++++++++----------------- character/refresh.js | 6 +++- character/sp.js | 1 + 3 files changed, 56 insertions(+), 33 deletions(-) diff --git a/character/onlyOL.js b/character/onlyOL.js index 50e7ceb16..65a119828 100644 --- a/character/onlyOL.js +++ b/character/onlyOL.js @@ -11,7 +11,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, characterSort:{ onlyOL:{ - onlyOL_standard:[], onlyOL_yijiang1:['ol_caozhang','ol_jianyong','ol_lingtong'], onlyOL_sb:['ol_sb_jiangwei'], }, @@ -33,17 +32,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, content:function*(event,map){ var player=map.player; + var trigger=map.trigger; var result=yield player.chooseTarget(get.prompt('olsbzhuri'),'与一名角色进行拼点,若你赢,你可以使用其中的一张拼点牌;若你没赢,你失去1点体力或令此技能于本回合失效',(card,player,target)=>{ return player.canCompare(target); }).set('ai',target=>{ var player=_status.event.player; var ts=target.getCards('h').sort((a,b)=>get.number(a)-get.number(b)); if(get.attitude(player,target)<0){ - var hs=player.getCards('h').sort((a,b)=>get.number(a)-get.number(b)); - if(!hs.length||!ts.length) return 0; + if(get.effect(player,{name:'losehp'},player,player)>0) return Math.random()*0.8; + var hs=player.getCards('h').sort((a,b)=>get.number(b)-get.number(a)); + var ts=target.getCards('h').sort((a,b)=>get.number(b)-get.number(a)); if(get.value(hs[0])>6) return 0; if(get.number(hs[0])>get.number(ts[0])) return 1; - return Math.random()-0.7; + return Math.random()+0.2; } return 0; }); @@ -65,11 +66,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } else{ + var list=lib.skill.olsbranji.getList(trigger); var result3=yield player.chooseControl('失去体力','技能失效').set('prompt','逐日:失去1点体力,或令此技能于本回合失效').set('ai',()=>{ var player=_status.event.player; + if(player.getHp>2){ + var list=_status.event.list; + list.removeArray(player.skipList); + if(list.includes('phaseDraw')||list.includes('phaseUse')) return '失去体力'; + } if(get.effect(player,{name:'losehp'},player,player)>0) return '失去体力'; return '技能失效'; - }); + }).set('list',list.slice(trigger.getParent().num,list.length)); player[result3.control=='失去体力'?'loseHp':'addTempSkill'](result3.control=='失去体力'?1:'olsbzhuri_block'); } } @@ -88,67 +95,79 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseJieshuBegin'}, prompt2:function(event,player){ var str='获得技能'; - var num=event.getParent().phaseList.slice(0,event.getParent().num).filter(name=>player.getHistory('useCard',evt=>evt.getParent(name).name==name).length).length; + var num=lib.skill.olsbranji.getNum(event,player); if(num>=player.getHp()) str+='【困奋】'; if(num==player.getHp()) str+='和'; if(num<=player.getHp()) str+='【诈降】'; - str+='。将手牌数调整至手牌或将体力值调整为体力上限。然后你不能回复体力直到你杀死角色。'; + str+=',然后'; + var num1=(player.countCards('h')-player.getHandcardLimit()); + if(num1||player.isDamaged()){ + if(num1) str+=(num1<0?'摸'+get.cnNumber(-num1)+'张牌':'弃置'+get.cnNumber(num1)+'张牌'); + if(num1&&player.isDamaged()) str+='或'; + if(player.isDamaged()) str+=('回复'+player.getDamagedHp()+'点体力'); + str+=',最后'; + } + str+='你不能回复体力直到你杀死角色。'; return str; }, + check:function(event,player){ + var num=lib.skill.olsbranji.getNum(event,player); + if(num==player.getHp()) return true; + return player.getHandcardLimit()-player.countCards('h')>=3&&player.getDamagedHp()>=2; + }, skillAnimation:true, animationColor:'fire', content:function*(event,map){ var player=map.player; var trigger=map.trigger; player.awakenSkill('olsbranji'); - var num=trigger.getParent().phaseList.slice(0,trigger.getParent().num).filter(name=>player.getHistory('useCard',evt=>evt.getParent(name).name==name).length).length; + var num=lib.skill.olsbranji.getNum(trigger,player); if(num>=player.getHp()) player.addSkillLog('kunfen'); if(num<=player.getHp()) player.addSkillLog('zhaxiang'); - if(player.countCards('h')!=player.getHandcardLimit()||player.hp!=player.maxHp){ - var result; - if(player.countCards('h')==player.getHandcardLimit()) result={index:1}; - else if(player.hp==player.maxHp) result={index:0}; + if(player.countCards('h')!=player.getHandcardLimit()||player.isDamaged()){ + var result,num1=player.countCards('h')-player.getHandcardLimit(); + if(!num1) result={index:1}; + else if(player.isHealthy()) result={index:0}; else{ - var num1=player.countCards('h'){ var player=_status.event.player; var list=_status.event.list; var num1=get.effect(player,{name:'wuzhong'},player,player)/2; var num2=get.recoverEffect(player,player,player); return num1*list[0]>num2*list[1]?0:1; - }).set('list',[-num1,-num2]); + }).set('list',[-num1,player.getDamagedHp()]); } if(result.index==0){ - if(player.countCards('h')0?'recover':'loseHp'](Math.abs(num)); + player.recover(player.maxHp-player.hp); } } - player.addSkill('olsbranji_norecover'); + player.when('olsbranjiAfter').then(()=>player.addSkill('olsbranji_norecover')); + player.when({source:'dieAfter'}).then(()=>player.removeSkill('olsbranji_norecover')); }, derivation:['kunfen','zhaxiang'], + getList:function(event){ + return event.getParent().phaseList.map(list=>list.split('|')[0]); + }, + getNum:function(event,player){ + return lib.skill.olsbranji.getList(event).slice(0,event.getParent().num).filter(name=>player.getHistory('useCard',evt=>evt.getParent(name).name==name).length).length; + }, subSkill:{ norecover:{ charlotte:true, mark:true, - intro:{content:'不能回复体力直到杀死角色'}, - trigger:{ - player:'recoverBefore', - source:'dieAfter', - }, + intro:{content:'不能回复体力'}, + trigger:{player:'recoverBefore'}, forced:true, - popup:false, firstDo:true, content:function(){ - if(trigger.name=='recover') trigger.cancel(); - else player.removeSkill('olsbranji_norecover'); + trigger.cancel(); }, ai:{ effect:{ @@ -325,11 +344,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_sb_jiangwei:'OL谋姜维', ol_sb_jiangwei_prefix:'OL谋', olsbzhuri:'逐日', - olsbzhuri_info:'你的回合阶段结束时,若你本阶段失去或得到过牌,则你可以与一名角色拼点。若你赢,你可以使用其中一张拼点牌;若你没赢,你失去1点体力或令此技能于本回合无效。', + olsbzhuri_info:'你的阶段结束时,若你本阶段失去或得到过牌,则你可以与一名角色拼点。若你赢,你可以使用其中一张拼点牌;若你没赢,你失去1点体力或令此技能于本回合无效。', olsbranji:'燃己', - olsbranji_info:'限定技,结束阶段。若你本回合使用过牌的阶段数大于等于/小于等于体力值,你获得技能〖困奋〗/〖诈降〗(同时满足则都获得),然后你将手牌数调整至手牌上限或将体力值调整为体力上限,最后你不能回复体力直到你杀死角色。', + olsbranji_info:'限定技,结束阶段。若你本回合使用过牌的阶段数大于等于/小于等于体力值,你可以获得技能〖困奋〗/〖诈降〗(同时满足则都获得)。若如此做,你将手牌数调整至手牌上限或将体力值回复至体力上限,然后你不能回复体力直到你杀死角色。', - onlyOL_standard:'OL专属·标准', onlyOL_yijiang1:'OL专属·将1', onlyOL_sb:'OL专属·上兵伐谋', }, diff --git a/character/refresh.js b/character/refresh.js index 16de23927..05e8b7644 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -13917,9 +13917,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, zhaxiang:{ + audio:2, + audioname:['ol_sb_jiangwei'], trigger:{player:'loseHpEnd'}, forced:true, - audio:2, content:function(){ var num=trigger.num; player.draw(3*num); @@ -13960,7 +13961,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(card.name=='sha') return num+player.storage.zhaxiang2; } }, + charlotte:true, onremove:true, + audio:'zhaxiang', + audioname:['ol_sb_jiangwei'], trigger:{player:'useCard'}, forced:true, filter:function(event,player){ diff --git a/character/sp.js b/character/sp.js index 6cf560637..d09f2e737 100755 --- a/character/sp.js +++ b/character/sp.js @@ -21110,6 +21110,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, kunfen:{ audio:2, + audioname:['ol_sb_jiangwei'], trigger:{player:'phaseJieshuBegin'}, locked:function(skill,player){ if(!player||!player.storage.kunfen) return true; From c4a644f0c7538b1ed6b9e4924eb01b499107b5cb Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Fri, 8 Dec 2023 16:22:22 +0800 Subject: [PATCH 082/302] bugfix --- game/game.js | 1 + 1 file changed, 1 insertion(+) diff --git a/game/game.js b/game/game.js index 64984f49a..bacb4a790 100644 --- a/game/game.js +++ b/game/game.js @@ -1756,6 +1756,7 @@ new Promise(resolve=>{ }, splash_style:{ name:'启动页', + init:'style1', item:{ style1:'样式一', style2:'样式二', From defec71b6c60994a06ae39679e95d81a292102b5 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Fri, 8 Dec 2023 16:29:27 +0800 Subject: [PATCH 083/302] bugfix --- character/onlyOL.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/onlyOL.js b/character/onlyOL.js index 65a119828..26574859f 100644 --- a/character/onlyOL.js +++ b/character/onlyOL.js @@ -27,7 +27,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ if(player.hasSkill('olsbzhuri_block')) return false; if(!game.hasPlayer(target=>player.canCompare(target))) return false; - return player.getHistory('gain',evt=>evt.getParent(event.name)==event).length+player.getHistory('lose',evt=>evt.getParent(event.name)==event).length; + return player.getHistory('gain',evt=>evt.getParent(event.name)==event).length+player.getHistory('lose',evt=>evt.getParent(event.name)==event&&evt.hs.length).length; }, direct:true, content:function*(event,map){ @@ -344,7 +344,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_sb_jiangwei:'OL谋姜维', ol_sb_jiangwei_prefix:'OL谋', olsbzhuri:'逐日', - olsbzhuri_info:'你的阶段结束时,若你本阶段失去或得到过牌,则你可以与一名角色拼点。若你赢,你可以使用其中一张拼点牌;若你没赢,你失去1点体力或令此技能于本回合无效。', + olsbzhuri_info:'你的阶段结束时,若你本阶段失去过手牌或得到过牌,则你可以与一名角色拼点。若你赢,你可以使用其中一张拼点牌;若你没赢,你失去1点体力或令此技能于本回合无效。', olsbranji:'燃己', olsbranji_info:'限定技,结束阶段。若你本回合使用过牌的阶段数大于等于/小于等于体力值,你可以获得技能〖困奋〗/〖诈降〗(同时满足则都获得)。若如此做,你将手牌数调整至手牌上限或将体力值回复至体力上限,然后你不能回复体力直到你杀死角色。', From af73425f94f70bec2f272db31f6119ffa8aa3ec2 Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Fri, 8 Dec 2023 22:11:46 +0800 Subject: [PATCH 084/302] Update standard.js --- card/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/card/standard.js b/card/standard.js index 7dd7c4089..b60bfe028 100644 --- a/card/standard.js +++ b/card/standard.js @@ -497,7 +497,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ if(target.hp>0){ if(!player.isPhaseUsing()) return 0; let min = 7.2-4*player.hp/player.maxHp, - nd = player.needsToDiscard(-player.countCards('h',i=>!taos.includes(i)&&get.value(i)taos.includes(i)||get.value(i)>=min), keep = nd?0:2; if(nd>2 || taos.length>1&&(nd>1||nd&&player.hp<1+taos.length) || target.identity==='zhu'&&(nd||target.hp<3)&&(mode==='identity'||mode==='versus'||mode==='chess') || !player.hasFriend()) return 2; if(game.hasPlayer(current=>{ From fb534ef868e23cbb94d715e63afce603a9cdb61b Mon Sep 17 00:00:00 2001 From: Tipx-L <138244655+Tipx-L@users.noreply.github.com> Date: Fri, 8 Dec 2023 06:41:06 -0800 Subject: [PATCH 085/302] Finish the configuration menu. --- noname/library/configuration-menu.js | 8 +- .../configuration/automatic-border-count.js | 6 +- noname/library/configuration-menu/audio.js | 6 + .../configuration-menu/audio/configuration.js | 32 ++++++ .../audio/configuration/background-audio.js | 4 + .../audio/configuration/background-music.js | 18 +++ .../configuration/background-music/item.js | 3 + .../audio/configuration/background-speak.js | 4 + .../configuration/clear-background-music.js | 21 ++++ .../audio/configuration/equip-audio.js | 4 + .../audio/configuration/import-music.js | 18 +++ .../audio/configuration/repeat-audio.js | 4 + .../audio/configuration/volume-audio.js | 10 ++ .../audio/configuration/volume-background.js | 11 ++ .../audio/configuration/volume-item.js | 11 ++ noname/library/configuration-menu/others.js | 6 + .../others/configuration.js | 25 ++++ .../others/configuration/export-data.js | 30 +++++ .../configuration/import-data-button.js | 18 +++ .../others/configuration/import-data.js | 7 ++ .../others/configuration/redownload-game.js | 24 ++++ .../others/configuration/reset-game.js | 34 ++++++ .../others/configuration/reset-hidden-pack.js | 23 ++++ .../others/configuration/reset-tutorial.js | 16 +++ noname/library/configuration-menu/skill.js | 6 + .../configuration-menu/skill/configuration.js | 22 ++++ .../configuration-menu/view/configuration.js | 108 +++++++++++++++++- .../automatically-popped-configuration.js | 6 + .../automatically-popped-history.js | 6 + .../configuration/character-dialog-tool.js | 9 ++ .../character-dialog-tool/item.js | 5 + .../view/configuration/clear-log.js | 6 + .../view/configuration/hide-card-image.js | 7 ++ .../configuration/hide-card-prompt-basic.js | 6 + .../configuration/hide-card-prompt-equip.js | 6 + .../view/configuration/log-highlight.js | 6 + .../view/configuration/mark-identity-style.js | 9 ++ .../configuration/mark-identity-style/item.js | 4 + .../view/configuration/pop-equip.js | 6 + .../configuration/recent-character-number.js | 9 ++ .../recent-character-number/item.js | 6 + .../view/configuration/remember-dialog.js | 24 ++++ .../configuration/remember-round-button.js | 12 ++ .../view/configuration/right-range.js | 6 + .../view/configuration/show-automatic.js | 14 +++ .../view/configuration/show-ban-menu.js | 6 + .../configuration/show-card-pile-number.js | 14 +++ .../view/configuration/show-card-pile.js | 14 +++ .../view/configuration/show-card-prompt.js | 6 + .../view/configuration/show-character-card.js | 6 + .../show-character-name-pinyin.js | 43 +++++++ .../show-character-name-pinyin/item.js | 7 ++ .../view/configuration/show-discard-pile.js | 5 + .../configuration/show-extension-maker.js | 5 + .../configuration/show-extension-share.js | 5 + .../view/configuration/show-favorite-menu.js | 6 + .../view/configuration/show-favorite-mode.js | 6 + .../view/configuration/show-favorite.js | 6 + .../view/configuration/show-give-up.js | 8 ++ .../view/configuration/show-group.js | 6 + .../configuration/show-hand-card-button.js | 8 ++ .../view/configuration/show-log.js | 20 ++++ .../view/configuration/show-log/item.js | 6 + .../view/configuration/show-name.js | 14 +++ .../view/configuration/show-pause.js | 14 +++ .../view/configuration/show-phase-prompt.js | 6 + .../configuration/show-phase-use-prompt.js | 6 + .../view/configuration/show-player-ids.js | 14 +++ .../view/configuration/show-rarity.js | 9 ++ .../view/configuration/show-replay.js | 14 +++ .../view/configuration/show-round-menu.js | 16 +++ .../view/configuration/show-sex.js | 6 + .../configuration/show-skill-name-pinyin.js | 18 +++ .../view/configuration/show-sort-card.js | 14 +++ .../configuration/show-status-bar-android.js | 18 +++ .../view/configuration/show-status-bar-ios.js | 29 +++++ .../configuration/show-status-bar-ios/item.js | 6 + .../view/configuration/show-time-2.js | 15 +++ .../view/configuration/show-time-3.js | 5 + .../view/configuration/show-time.js | 15 +++ .../view/configuration/show-volume.js | 14 +++ .../view/configuration/show-wuxie.js | 15 +++ .../view/configuration/transparent-dialog.js | 22 ++++ .../view/configuration/watch-face.js | 12 ++ .../view/configuration/watch-face/item.js | 4 + .../view/configuration/wuxie-right.js | 5 + 86 files changed, 1088 insertions(+), 6 deletions(-) create mode 100644 noname/library/configuration-menu/audio.js create mode 100644 noname/library/configuration-menu/audio/configuration.js create mode 100644 noname/library/configuration-menu/audio/configuration/background-audio.js create mode 100644 noname/library/configuration-menu/audio/configuration/background-music.js create mode 100644 noname/library/configuration-menu/audio/configuration/background-music/item.js create mode 100644 noname/library/configuration-menu/audio/configuration/background-speak.js create mode 100644 noname/library/configuration-menu/audio/configuration/clear-background-music.js create mode 100644 noname/library/configuration-menu/audio/configuration/equip-audio.js create mode 100644 noname/library/configuration-menu/audio/configuration/import-music.js create mode 100644 noname/library/configuration-menu/audio/configuration/repeat-audio.js create mode 100644 noname/library/configuration-menu/audio/configuration/volume-audio.js create mode 100644 noname/library/configuration-menu/audio/configuration/volume-background.js create mode 100644 noname/library/configuration-menu/audio/configuration/volume-item.js create mode 100644 noname/library/configuration-menu/others.js create mode 100644 noname/library/configuration-menu/others/configuration.js create mode 100644 noname/library/configuration-menu/others/configuration/export-data.js create mode 100644 noname/library/configuration-menu/others/configuration/import-data-button.js create mode 100644 noname/library/configuration-menu/others/configuration/import-data.js create mode 100644 noname/library/configuration-menu/others/configuration/redownload-game.js create mode 100644 noname/library/configuration-menu/others/configuration/reset-game.js create mode 100644 noname/library/configuration-menu/others/configuration/reset-hidden-pack.js create mode 100644 noname/library/configuration-menu/others/configuration/reset-tutorial.js create mode 100644 noname/library/configuration-menu/skill.js create mode 100644 noname/library/configuration-menu/skill/configuration.js create mode 100644 noname/library/configuration-menu/view/configuration/automatically-popped-configuration.js create mode 100644 noname/library/configuration-menu/view/configuration/automatically-popped-history.js create mode 100644 noname/library/configuration-menu/view/configuration/character-dialog-tool.js create mode 100644 noname/library/configuration-menu/view/configuration/character-dialog-tool/item.js create mode 100644 noname/library/configuration-menu/view/configuration/clear-log.js create mode 100644 noname/library/configuration-menu/view/configuration/hide-card-image.js create mode 100644 noname/library/configuration-menu/view/configuration/hide-card-prompt-basic.js create mode 100644 noname/library/configuration-menu/view/configuration/hide-card-prompt-equip.js create mode 100644 noname/library/configuration-menu/view/configuration/log-highlight.js create mode 100644 noname/library/configuration-menu/view/configuration/mark-identity-style.js create mode 100644 noname/library/configuration-menu/view/configuration/mark-identity-style/item.js create mode 100644 noname/library/configuration-menu/view/configuration/pop-equip.js create mode 100644 noname/library/configuration-menu/view/configuration/recent-character-number.js create mode 100644 noname/library/configuration-menu/view/configuration/recent-character-number/item.js create mode 100644 noname/library/configuration-menu/view/configuration/remember-dialog.js create mode 100644 noname/library/configuration-menu/view/configuration/remember-round-button.js create mode 100644 noname/library/configuration-menu/view/configuration/right-range.js create mode 100644 noname/library/configuration-menu/view/configuration/show-automatic.js create mode 100644 noname/library/configuration-menu/view/configuration/show-ban-menu.js create mode 100644 noname/library/configuration-menu/view/configuration/show-card-pile-number.js create mode 100644 noname/library/configuration-menu/view/configuration/show-card-pile.js create mode 100644 noname/library/configuration-menu/view/configuration/show-card-prompt.js create mode 100644 noname/library/configuration-menu/view/configuration/show-character-card.js create mode 100644 noname/library/configuration-menu/view/configuration/show-character-name-pinyin.js create mode 100644 noname/library/configuration-menu/view/configuration/show-character-name-pinyin/item.js create mode 100644 noname/library/configuration-menu/view/configuration/show-discard-pile.js create mode 100644 noname/library/configuration-menu/view/configuration/show-extension-maker.js create mode 100644 noname/library/configuration-menu/view/configuration/show-extension-share.js create mode 100644 noname/library/configuration-menu/view/configuration/show-favorite-menu.js create mode 100644 noname/library/configuration-menu/view/configuration/show-favorite-mode.js create mode 100644 noname/library/configuration-menu/view/configuration/show-favorite.js create mode 100644 noname/library/configuration-menu/view/configuration/show-give-up.js create mode 100644 noname/library/configuration-menu/view/configuration/show-group.js create mode 100644 noname/library/configuration-menu/view/configuration/show-hand-card-button.js create mode 100644 noname/library/configuration-menu/view/configuration/show-log.js create mode 100644 noname/library/configuration-menu/view/configuration/show-log/item.js create mode 100644 noname/library/configuration-menu/view/configuration/show-name.js create mode 100644 noname/library/configuration-menu/view/configuration/show-pause.js create mode 100644 noname/library/configuration-menu/view/configuration/show-phase-prompt.js create mode 100644 noname/library/configuration-menu/view/configuration/show-phase-use-prompt.js create mode 100644 noname/library/configuration-menu/view/configuration/show-player-ids.js create mode 100644 noname/library/configuration-menu/view/configuration/show-rarity.js create mode 100644 noname/library/configuration-menu/view/configuration/show-replay.js create mode 100644 noname/library/configuration-menu/view/configuration/show-round-menu.js create mode 100644 noname/library/configuration-menu/view/configuration/show-sex.js create mode 100644 noname/library/configuration-menu/view/configuration/show-skill-name-pinyin.js create mode 100644 noname/library/configuration-menu/view/configuration/show-sort-card.js create mode 100644 noname/library/configuration-menu/view/configuration/show-status-bar-android.js create mode 100644 noname/library/configuration-menu/view/configuration/show-status-bar-ios.js create mode 100644 noname/library/configuration-menu/view/configuration/show-status-bar-ios/item.js create mode 100644 noname/library/configuration-menu/view/configuration/show-time-2.js create mode 100644 noname/library/configuration-menu/view/configuration/show-time-3.js create mode 100644 noname/library/configuration-menu/view/configuration/show-time.js create mode 100644 noname/library/configuration-menu/view/configuration/show-volume.js create mode 100644 noname/library/configuration-menu/view/configuration/show-wuxie.js create mode 100644 noname/library/configuration-menu/view/configuration/transparent-dialog.js create mode 100644 noname/library/configuration-menu/view/configuration/watch-face.js create mode 100644 noname/library/configuration-menu/view/configuration/watch-face/item.js create mode 100644 noname/library/configuration-menu/view/configuration/wuxie-right.js diff --git a/noname/library/configuration-menu.js b/noname/library/configuration-menu.js index 650171cc5..5f5bcc431 100644 --- a/noname/library/configuration-menu.js +++ b/noname/library/configuration-menu.js @@ -1,9 +1,15 @@ import { APPEARANCE } from "./configuration-menu/appearance.js"; +import { AUDIO } from "./configuration-menu/audio.js"; import { GENERAL } from "./configuration-menu/general.js"; +import { OTHERS } from "./configuration-menu/others.js"; +import { SKILL } from "./configuration-menu/skill.js"; import { VIEW } from "./configuration-menu/view.js"; export const CONFIGURATION_MENU = { general: GENERAL, appearence: APPEARANCE, - view: VIEW + view: VIEW, + audio: AUDIO, + skill: SKILL, + others: OTHERS }; diff --git a/noname/library/configuration-menu/appearance/configuration/automatic-border-count.js b/noname/library/configuration-menu/appearance/configuration/automatic-border-count.js index 9ff63d87e..f4d1bbcac 100644 --- a/noname/library/configuration-menu/appearance/configuration/automatic-border-count.js +++ b/noname/library/configuration-menu/appearance/configuration/automatic-border-count.js @@ -2,13 +2,13 @@ import { ITEM } from "./automatic-border-count/item.js"; const introduction = document.createElement("body"); const kill = document.createElement("strong"); -kill.textContent = "击杀"; +kill.append("击杀"); introduction.append(kill, " 每击杀一人,边框提升两级", document.createElement("br")); const damage = document.createElement("strong"); -damage.textContent = "伤害"; +damage.append("伤害"); introduction.append(damage, " 每造成两点伤害,边框提升一级", document.createElement("br")); const mix = document.createElement("strong"); -mix.textContent = "混合"; +mix.append("混合"); introduction.append(mix, " 击杀量决定边框颜色,伤害量决定边框装饰"); export const AUTOMATIC_BORDER_COUNT = { diff --git a/noname/library/configuration-menu/audio.js b/noname/library/configuration-menu/audio.js new file mode 100644 index 000000000..c799d0a27 --- /dev/null +++ b/noname/library/configuration-menu/audio.js @@ -0,0 +1,6 @@ +import { CONFIGURATION } from "./audio/configuration.js"; + +export const AUDIO = { + name: "音效", + config: CONFIGURATION +}; diff --git a/noname/library/configuration-menu/audio/configuration.js b/noname/library/configuration-menu/audio/configuration.js new file mode 100644 index 000000000..1885f4ecc --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration.js @@ -0,0 +1,32 @@ +import { BACKGROUND_AUDIO } from "./configuration/background-audio.js"; +import { BACKGROUND_MUSIC } from "./configuration/background-music.js"; +import { BACKGROUND_SPEAK } from "./configuration/background-speak.js"; +import { CLEAR_BACKGROUND_MUSIC } from "./configuration/clear-background-music.js"; +import { EQUIP_AUDIO } from "./configuration/equip-audio.js"; +import { IMPORT_MUSIC } from "./configuration/import-music.js"; +import { REPEAT_AUDIO } from "./configuration/repeat-audio.js"; +import { VOLUME_AUDIO } from "./configuration/volume-audio.js"; +import { VOLUME_BACKGROUND } from "./configuration/volume-background.js"; + +export const CONFIGURATION = { + update(config, map) { + if (config.background_music == "music_custom" && (lib.device || lib.node)) { + map.import_music.show(); + } + else { + map.import_music.hide(); + } + map.clear_background_music[get.is.object(config.customBackgroundMusic) ? "show" : "hide"](); + ui.background_music_setting = map.background_music; + map.background_music._link.config.updatex.call(map.background_music, []); + }, + background_music: BACKGROUND_MUSIC, + import_music: IMPORT_MUSIC, + background_audio: BACKGROUND_AUDIO, + background_speak: BACKGROUND_SPEAK, + equip_audio: EQUIP_AUDIO, + repeat_audio: REPEAT_AUDIO, + volumn_audio: VOLUME_AUDIO, + volumn_background: VOLUME_BACKGROUND, + clear_background_music: CLEAR_BACKGROUND_MUSIC +}; diff --git a/noname/library/configuration-menu/audio/configuration/background-audio.js b/noname/library/configuration-menu/audio/configuration/background-audio.js new file mode 100644 index 000000000..f627a8219 --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/background-audio.js @@ -0,0 +1,4 @@ +export const BACKGROUND_AUDIO = { + name: "游戏音效", + init: true +}; diff --git a/noname/library/configuration-menu/audio/configuration/background-music.js b/noname/library/configuration-menu/audio/configuration/background-music.js new file mode 100644 index 000000000..4be23a96c --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/background-music.js @@ -0,0 +1,18 @@ +import { ITEM } from "./background-music/item.js"; + +export const BACKGROUND_MUSIC = { + updatex() { + this.lastChild.innerHTML = this._link.config.item[lib.config.background_music]; + var menu = this._link.menu; + for (var i = 0; i < menu.childElementCount; i++) { + if (!["music_off", "music_custom", "music_random"].concat(lib.config.all.background_music).includes(menu.childNodes[i]._link)) menu.childNodes[i].delete(); + } + }, + name: "背景音乐", + init: true, + item: ITEM, + onclick(item) { + game.saveConfig("background_music", item); + game.playBackgroundMusic(); + } +}; diff --git a/noname/library/configuration-menu/audio/configuration/background-music/item.js b/noname/library/configuration-menu/audio/configuration/background-music/item.js new file mode 100644 index 000000000..fd62bea33 --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/background-music/item.js @@ -0,0 +1,3 @@ +export const ITEM = { + music_default: "默认" +}; diff --git a/noname/library/configuration-menu/audio/configuration/background-speak.js b/noname/library/configuration-menu/audio/configuration/background-speak.js new file mode 100644 index 000000000..434cb80e7 --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/background-speak.js @@ -0,0 +1,4 @@ +export const BACKGROUND_SPEAK = { + name: "人物配音", + init: true +}; diff --git a/noname/library/configuration-menu/audio/configuration/clear-background-music.js b/noname/library/configuration-menu/audio/configuration/clear-background-music.js new file mode 100644 index 000000000..77344c6bf --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/clear-background-music.js @@ -0,0 +1,21 @@ +export const CLEAR_BACKGROUND_MUSIC = { + name: "清除自定义背景音乐", + clear: true, + onclick() { + if (confirm("是否清除已导入的所有自定义背景音乐?(该操作不可撤销!)")) { + for (var i in lib.config.customBackgroundMusic) { + lib.config.all.background_music.remove(i); + if (i.startsWith("cdv_")) { + game.removeFile("audio/background/" + i + ".mp3"); + } + else { + game.deleteDB("audio", i); + } + } + lib.config.customBackgroundMusic = null; + game.saveConfig("customBackgroundMusic", null); + game.saveConfig("background_music", "music_off"); + if (!_status._aozhan) game.playBackgroundMusic(); + } + } +}; diff --git a/noname/library/configuration-menu/audio/configuration/equip-audio.js b/noname/library/configuration-menu/audio/configuration/equip-audio.js new file mode 100644 index 000000000..8601de4f7 --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/equip-audio.js @@ -0,0 +1,4 @@ +export const EQUIP_AUDIO = { + name: "装备配音", + init: false +}; diff --git a/noname/library/configuration-menu/audio/configuration/import-music.js b/noname/library/configuration-menu/audio/configuration/import-music.js new file mode 100644 index 000000000..77e806ea9 --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/import-music.js @@ -0,0 +1,18 @@ +const div = document.createElement("div"); +const style = div.style; +style.whiteSpace = "nowrap"; +style.width = "calc(100% - 5px)"; +const input = document.createElement("input"); +input.accept = "audio/*"; +input.style.width = "calc(100% - 40px)"; +input.type = "file"; +div.append(input); +const button = document.createElement("button"); +button.style.width = "40px"; +button.append("确定"); +div.append(button); + +export const IMPORT_MUSIC = { + name: div.outerHTML, + clear: true +} diff --git a/noname/library/configuration-menu/audio/configuration/repeat-audio.js b/noname/library/configuration-menu/audio/configuration/repeat-audio.js new file mode 100644 index 000000000..84bbaf69b --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/repeat-audio.js @@ -0,0 +1,4 @@ +export const REPEAT_AUDIO = { + name: "播放重复语音", + init: false +}; diff --git a/noname/library/configuration-menu/audio/configuration/volume-audio.js b/noname/library/configuration-menu/audio/configuration/volume-audio.js new file mode 100644 index 000000000..e18726bab --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/volume-audio.js @@ -0,0 +1,10 @@ +import { VOLUME_ITEM } from "./volume-item.js"; + +export const VOLUME_AUDIO = { + name: "音效音量", + init: 8, + item: VOLUME_ITEM, + onclick(volume) { + game.saveConfig("volumn_audio", parseInt(volume)); + } +}; diff --git a/noname/library/configuration-menu/audio/configuration/volume-background.js b/noname/library/configuration-menu/audio/configuration/volume-background.js new file mode 100644 index 000000000..ef52f0a34 --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/volume-background.js @@ -0,0 +1,11 @@ +import { VOLUME_ITEM } from "./volume-item.js"; + +export const VOLUME_BACKGROUND = { + name: "音乐音量", + init: 8, + item: VOLUME_ITEM, + onclick(volume) { + game.saveConfig("volumn_background", parseInt(volume)); + ui.backgroundMusic.volume = volume / 8; + } +}; diff --git a/noname/library/configuration-menu/audio/configuration/volume-item.js b/noname/library/configuration-menu/audio/configuration/volume-item.js new file mode 100644 index 000000000..99f1fb27d --- /dev/null +++ b/noname/library/configuration-menu/audio/configuration/volume-item.js @@ -0,0 +1,11 @@ +export const VOLUME_ITEM = { + "0": "〇", + "1": "一", + "2": "二", + "3": "三", + "4": "四", + "5": "五", + "6": "六", + "7": "七", + "8": "八" +}; diff --git a/noname/library/configuration-menu/others.js b/noname/library/configuration-menu/others.js new file mode 100644 index 000000000..ffc19f967 --- /dev/null +++ b/noname/library/configuration-menu/others.js @@ -0,0 +1,6 @@ +import { CONFIGURATION } from "./others/configuration.js"; + +export const OTHERS = { + name: "其它", + config: CONFIGURATION +}; diff --git a/noname/library/configuration-menu/others/configuration.js b/noname/library/configuration-menu/others/configuration.js new file mode 100644 index 000000000..491a070c2 --- /dev/null +++ b/noname/library/configuration-menu/others/configuration.js @@ -0,0 +1,25 @@ +import { EXPORT_DATA } from "./configuration/export-data.js"; +import { IMPORT_DATA_BUTTON } from "./configuration/import-data-button.js"; +import { IMPORT_DATA } from "./configuration/import-data.js"; +import { REDOWNLOAD_GAME } from "./configuration/redownload-game.js"; +import { RESET_GAME } from "./configuration/reset-game.js"; +import { RESET_HIDDEN_PACK } from "./configuration/reset-hidden-pack.js"; +import { RESET_TUTORIAL } from "./configuration/reset-tutorial.js"; + +export const CONFIGURATION = { + reset_game: RESET_GAME, + reset_hiddenpack: RESET_HIDDEN_PACK, + reset_tutorial: RESET_TUTORIAL, + import_data: IMPORT_DATA, + import_data_button: IMPORT_DATA_BUTTON, + export_data: EXPORT_DATA, + redownload_game: REDOWNLOAD_GAME, + update(config, map) { + if (lib.device || lib.node) { + map.redownload_game.show(); + } + else { + map.redownload_game.hide(); + } + } +}; diff --git a/noname/library/configuration-menu/others/configuration/export-data.js b/noname/library/configuration-menu/others/configuration/export-data.js new file mode 100644 index 000000000..ecf0522e9 --- /dev/null +++ b/noname/library/configuration-menu/others/configuration/export-data.js @@ -0,0 +1,30 @@ +export const EXPORT_DATA = { + name: "导出游戏设置", + onclick() { + var data; + var export_data = function (data) { + game.export(lib.init.encode(JSON.stringify(data)), "无名杀 - 数据 - " + (new Date()).toLocaleString()); + } + if (!lib.db) { + data = {}; + for (var i in localStorage) { + if (i.startsWith(lib.configprefix)) { + data[i] = localStorage[i]; + } + } + export_data(data); + } + else { + game.getDB("config", null, function (data1) { + game.getDB("data", null, function (data2) { + export_data({ + config: data1, + data: data2 + }); + }); + }); + } + + }, + clear: true +}; diff --git a/noname/library/configuration-menu/others/configuration/import-data-button.js b/noname/library/configuration-menu/others/configuration/import-data-button.js new file mode 100644 index 000000000..e310cc600 --- /dev/null +++ b/noname/library/configuration-menu/others/configuration/import-data-button.js @@ -0,0 +1,18 @@ +const div = document.createElement("div"); +const style = div.style; +style.whiteSpace = "nowrap"; +style.width = "calc(100% - 10px)"; +const input = document.createElement("input"); +input.accept = "*/*"; +input.style.width = "calc(100% - 40px)"; +input.type = "file"; +div.append(input); +const button = document.createElement("button"); +button.style.width = "40px"; +button.append("确定"); +div.append(button); + +export const IMPORT_DATA_BUTTON = { + name: div.outerHTML, + clear: true +}; diff --git a/noname/library/configuration-menu/others/configuration/import-data.js b/noname/library/configuration-menu/others/configuration/import-data.js new file mode 100644 index 000000000..0db98e92d --- /dev/null +++ b/noname/library/configuration-menu/others/configuration/import-data.js @@ -0,0 +1,7 @@ +export const IMPORT_DATA = { + name: "导入游戏设置", + onclick() { + ui.import_data_button.classList.toggle("hidden"); + }, + clear: true +}; diff --git a/noname/library/configuration-menu/others/configuration/redownload-game.js b/noname/library/configuration-menu/others/configuration/redownload-game.js new file mode 100644 index 000000000..61de58616 --- /dev/null +++ b/noname/library/configuration-menu/others/configuration/redownload-game.js @@ -0,0 +1,24 @@ +export const REDOWNLOAD_GAME = { + name: "重新下载游戏", + onclick() { + var node = this; + if (node._clearing) { + localStorage.removeItem("noname_inited"); + game.reload(); + return; + } + node._clearing = true; + node.firstChild.innerHTML = "单击以确认 (3)"; + setTimeout(function () { + node.firstChild.innerHTML = "单击以确认 (2)"; + setTimeout(function () { + node.firstChild.innerHTML = "单击以确认 (1)"; + setTimeout(function () { + node.firstChild.innerHTML = "重新下载游戏"; + delete node._clearing; + }, 1000); + }, 1000); + }, 1000); + }, + clear: true +}; diff --git a/noname/library/configuration-menu/others/configuration/reset-game.js b/noname/library/configuration-menu/others/configuration/reset-game.js new file mode 100644 index 000000000..ec6b047be --- /dev/null +++ b/noname/library/configuration-menu/others/configuration/reset-game.js @@ -0,0 +1,34 @@ +export const RESET_GAME = { + name: "重置游戏设置", + onclick() { + var node = this; + if (node._clearing) { + var noname_inited = localStorage.getItem("noname_inited"); + var onlineKey = localStorage.getItem(lib.configprefix + "key"); + localStorage.clear(); + if (noname_inited) { + localStorage.setItem("noname_inited", noname_inited); + } + if (onlineKey) { + localStorage.setItem(lib.configprefix + "key", onlineKey); + } + game.deleteDB("config"); + game.deleteDB("data"); + game.reload(); + return; + } + node._clearing = true; + node.firstChild.innerHTML = "单击以确认 (3)"; + setTimeout(function () { + node.firstChild.innerHTML = "单击以确认 (2)"; + setTimeout(function () { + node.firstChild.innerHTML = "单击以确认 (1)"; + setTimeout(function () { + node.firstChild.innerHTML = "重置游戏设置"; + delete node._clearing; + }, 1000); + }, 1000); + }, 1000); + }, + clear: true +}; diff --git a/noname/library/configuration-menu/others/configuration/reset-hidden-pack.js b/noname/library/configuration-menu/others/configuration/reset-hidden-pack.js new file mode 100644 index 000000000..005e33471 --- /dev/null +++ b/noname/library/configuration-menu/others/configuration/reset-hidden-pack.js @@ -0,0 +1,23 @@ +export const RESET_HIDDEN_PACK = { + name: "重置隐藏内容", + onclick() { + if (this.firstChild.innerHTML != "已重置") { + this.firstChild.innerHTML = "已重置" + game.saveConfig("hiddenModePack", []); + game.saveConfig("hiddenCharacterPack", []); + game.saveConfig("hiddenCardPack", []); + game.saveConfig("hiddenPlayPack", []); + game.saveConfig("hiddenBackgroundPack", []); + var that = this; + setTimeout(function () { + that.firstChild.innerHTML = "重置隐藏内容"; + setTimeout(function () { + if (confirm("是否重新启动使改变生效?")) { + game.reload(); + } + }); + }, 500); + } + }, + clear: true +}; diff --git a/noname/library/configuration-menu/others/configuration/reset-tutorial.js b/noname/library/configuration-menu/others/configuration/reset-tutorial.js new file mode 100644 index 000000000..58ffa1907 --- /dev/null +++ b/noname/library/configuration-menu/others/configuration/reset-tutorial.js @@ -0,0 +1,16 @@ +export const RESET_TUTORIAL = { + name: "重置新手向导", + onclick() { + if (this.firstChild.innerHTML != "已重置") { + this.firstChild.innerHTML = "已重置" + game.saveConfig("new_tutorial", false); + game.saveConfig("prompt_hidebg"); + game.saveConfig("prompt_hidepack"); + var that = this; + setTimeout(function () { + that.firstChild.innerHTML = "重置新手向导"; + }, 500); + } + }, + clear: true +}; diff --git a/noname/library/configuration-menu/skill.js b/noname/library/configuration-menu/skill.js new file mode 100644 index 000000000..03ffa67c6 --- /dev/null +++ b/noname/library/configuration-menu/skill.js @@ -0,0 +1,6 @@ +import { CONFIGURATION } from "./skill/configuration.js"; + +export const SKILL = { + name: "技能", + config: CONFIGURATION +}; diff --git a/noname/library/configuration-menu/skill/configuration.js b/noname/library/configuration-menu/skill/configuration.js new file mode 100644 index 000000000..c57a0eac5 --- /dev/null +++ b/noname/library/configuration-menu/skill/configuration.js @@ -0,0 +1,22 @@ +export const CONFIGURATION = { + update(config, map) { + for (var i in map) { + if (map[i]._link.config.type == "autoskill") { + if (!config.autoskilllist.contains(i)) { + map[i].classList.add("on"); + } + else { + map[i].classList.remove("on"); + } + } + else if (map[i]._link.config.type == "banskill") { + if (!config.forbidlist.contains(i)) { + map[i].classList.add("on"); + } + else { + map[i].classList.remove("on"); + } + } + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration.js b/noname/library/configuration-menu/view/configuration.js index 7a8c69df1..372fdca52 100644 --- a/noname/library/configuration-menu/view/configuration.js +++ b/noname/library/configuration-menu/view/configuration.js @@ -1,5 +1,57 @@ +import { AUTOMATICALLY_POPPED_CONFIGURATION } from "./configuration/automatically-popped-configuration.js"; +import { AUTOMATICALLY_POPPED_HISTORY } from "./configuration/automatically-popped-history.js"; +import { CHARACTER_DIALOG_TOOL } from "./configuration/character-dialog-tool.js"; +import { CLEAR_LOG } from "./configuration/clear-log.js"; +import { HIDE_CARD_IMAGE } from "./configuration/hide-card-image.js"; +import { HIDE_CARD_PROMPT_BASIC } from "./configuration/hide-card-prompt-basic.js"; +import { HIDE_CARD_PROMPT_EQUIP } from "./configuration/hide-card-prompt-equip.js"; +import { LOG_HIGHLIGHT } from "./configuration/log-highlight.js"; +import { MARK_IDENTITY_STYLE } from "./configuration/mark-identity-style.js"; +import { POP_EQUIP } from "./configuration/pop-equip.js"; import { POP_LOGV } from "./configuration/pop-logv.js"; +import { RECENT_CHARACTER_NUMBER } from "./configuration/recent-character-number.js"; +import { REMEMBER_DIALOG } from "./configuration/remember-dialog.js"; +import { REMEMBER_ROUND_BUTTON } from "./configuration/remember-round-button.js"; +import { RIGHT_RANGE } from "./configuration/right-range.js"; +import { SHOW_AUTOMATIC } from "./configuration/show-automatic.js"; +import { SHOW_BAN_MENU } from "./configuration/show-ban-menu.js"; +import { SHOW_CARD_PILE_NUMBER } from "./configuration/show-card-pile-number.js"; +import { SHOW_CARD_PILE } from "./configuration/show-card-pile.js"; +import { SHOW_CARD_PROMPT } from "./configuration/show-card-prompt.js"; +import { SHOW_CHARACTER_CARD } from "./configuration/show-character-card.js"; +import { SHOW_CHARACTER_NAME_PINYIN } from "./configuration/show-character-name-pinyin.js"; +import { SHOW_DISCARD_PILE } from "./configuration/show-discard-pile.js"; +import { SHOW_EXTENSION_MAKER } from "./configuration/show-extension-maker.js"; +import { SHOW_EXTENSION_SHARE } from "./configuration/show-extension-share.js"; +import { SHOW_FAVORITE_MENU } from "./configuration/show-favorite-menu.js"; +import { SHOW_FAVORITE_MODE } from "./configuration/show-favorite-mode.js"; +import { SHOW_FAVORITE } from "./configuration/show-favorite.js"; +import { SHOW_GIVE_UP } from "./configuration/show-give-up.js"; +import { SHOW_GROUP } from "./configuration/show-group.js"; +import { SHOW_HAND_CARD_BUTTON } from "./configuration/show-hand-card-button.js"; import { SHOW_HISTORY } from "./configuration/show-history.js"; +import { SHOW_LOG } from "./configuration/show-log.js"; +import { SHOW_NAME } from "./configuration/show-name.js"; +import { SHOW_PAUSE } from "./configuration/show-pause.js"; +import { SHOW_PHASE_PROMPT } from "./configuration/show-phase-prompt.js"; +import { SHOW_PHASE_USE_PROMPT } from "./configuration/show-phase-use-prompt.js"; +import { SHOW_PLAYER_IDS } from "./configuration/show-player-ids.js"; +import { SHOW_RARITY } from "./configuration/show-rarity.js"; +import { SHOW_REPLAY } from "./configuration/show-replay.js"; +import { SHOW_ROUND_MENU } from "./configuration/show-round-menu.js"; +import { SHOW_SEX } from "./configuration/show-sex.js"; +import { SHOW_SKILL_NAME_PINYIN } from "./configuration/show-skill-name-pinyin.js"; +import { SHOW_SORT_CARD } from "./configuration/show-sort-card.js"; +import { SHOW_STATUS_BAR_ANDROID } from "./configuration/show-status-bar-android.js"; +import { SHOW_STATUS_BAR_IOS } from "./configuration/show-status-bar-ios.js"; +import { SHOW_TIME_2 } from "./configuration/show-time-2.js"; +import { SHOW_TIME_3 } from "./configuration/show-time-3.js"; +import { SHOW_TIME } from "./configuration/show-time.js"; +import { SHOW_VOLUME } from "./configuration/show-volume.js"; +import { SHOW_WUXIE } from "./configuration/show-wuxie.js"; +import { TRANSPARENT_DIALOG } from "./configuration/transparent-dialog.js"; +import { WATCH_FACE } from "./configuration/watch-face.js"; +import { WUXIE_RIGHT } from "./configuration/wuxie-right.js"; export const CONFIGURATION = { update(config, map) { @@ -91,5 +143,57 @@ export const CONFIGURATION = { } }, show_history: SHOW_HISTORY, - pop_logv: POP_LOGV -}; \ No newline at end of file + pop_logv: POP_LOGV, + show_log: SHOW_LOG, + clear_log: CLEAR_LOG, + log_highlight: LOG_HIGHLIGHT, + show_time: SHOW_TIME, + show_time2: SHOW_TIME_2, + watchface: WATCH_FACE, + show_time3: SHOW_TIME_3, + show_statusbar_android: SHOW_STATUS_BAR_ANDROID, + show_statusbar_ios: SHOW_STATUS_BAR_IOS, + show_card_prompt: SHOW_CARD_PROMPT, + hide_card_prompt_basic: HIDE_CARD_PROMPT_BASIC, + hide_card_prompt_equip: HIDE_CARD_PROMPT_EQUIP, + show_phase_prompt: SHOW_PHASE_PROMPT, + show_phaseuse_prompt: SHOW_PHASE_USE_PROMPT, + auto_popped_config: AUTOMATICALLY_POPPED_CONFIGURATION, + auto_popped_history: AUTOMATICALLY_POPPED_HISTORY, + show_round_menu: SHOW_ROUND_MENU, + remember_round_button: REMEMBER_ROUND_BUTTON, + remember_dialog: REMEMBER_DIALOG, + transparent_dialog: TRANSPARENT_DIALOG, + show_rarity: SHOW_RARITY, + mark_identity_style: MARK_IDENTITY_STYLE, + character_dialog_tool: CHARACTER_DIALOG_TOOL, + recent_character_number: RECENT_CHARACTER_NUMBER, + popequip: POP_EQUIP, + show_charactercard: SHOW_CHARACTER_CARD, + show_favourite: SHOW_FAVORITE, + show_favmode: SHOW_FAVORITE_MODE, + show_favourite_menu: SHOW_FAVORITE_MENU, + show_ban_menu: SHOW_BAN_MENU, + right_range: RIGHT_RANGE, + hide_card_image: HIDE_CARD_IMAGE, + show_name: SHOW_NAME, + show_sex: SHOW_SEX, + show_group: SHOW_GROUP, + show_replay: SHOW_REPLAY, + show_playerids: SHOW_PLAYER_IDS, + show_sortcard: SHOW_SORT_CARD, + show_pause: SHOW_PAUSE, + show_auto: SHOW_AUTOMATIC, + show_volumn: SHOW_VOLUME, + show_cardpile: SHOW_CARD_PILE, + show_cardpile_number: SHOW_CARD_PILE_NUMBER, + show_handcardbutton: SHOW_HAND_CARD_BUTTON, + show_giveup: SHOW_GIVE_UP, + show_wuxie: SHOW_WUXIE, + wuxie_right: WUXIE_RIGHT, + show_discardpile: SHOW_DISCARD_PILE, + show_extensionmaker: SHOW_EXTENSION_MAKER, + show_extensionshare: SHOW_EXTENSION_SHARE, + show_characternamepinyin: SHOW_CHARACTER_NAME_PINYIN, + show_skillnamepinyin: SHOW_SKILL_NAME_PINYIN +}; diff --git a/noname/library/configuration-menu/view/configuration/automatically-popped-configuration.js b/noname/library/configuration-menu/view/configuration/automatically-popped-configuration.js new file mode 100644 index 000000000..c75e38a03 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/automatically-popped-configuration.js @@ -0,0 +1,6 @@ +export const AUTOMATICALLY_POPPED_CONFIGURATION = { + name: "自动弹出选项", + intro: "鼠标移至选项按钮时弹出模式选择菜单", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/automatically-popped-history.js b/noname/library/configuration-menu/view/configuration/automatically-popped-history.js new file mode 100644 index 000000000..c0e863c32 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/automatically-popped-history.js @@ -0,0 +1,6 @@ +export const AUTOMATICALLY_POPPED_HISTORY = { + name: "自动弹出历史", + intro: "鼠标移至暂停按钮时弹出历史记录菜单", + init: false, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/character-dialog-tool.js b/noname/library/configuration-menu/view/configuration/character-dialog-tool.js new file mode 100644 index 000000000..bc1eeb0f8 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/character-dialog-tool.js @@ -0,0 +1,9 @@ +import { ITEM } from "./character-dialog-tool/item.js"; + +export const CHARACTER_DIALOG_TOOL = { + name: "自由选将显示", + intro: "点击自由选将时默认显示的条目", + init: "最近", + item: ITEM, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/character-dialog-tool/item.js b/noname/library/configuration-menu/view/configuration/character-dialog-tool/item.js new file mode 100644 index 000000000..27b23013b --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/character-dialog-tool/item.js @@ -0,0 +1,5 @@ +export const ITEM = { + 收藏: "收藏", + 最近: "最近", + all: "全部" +}; diff --git a/noname/library/configuration-menu/view/configuration/clear-log.js b/noname/library/configuration-menu/view/configuration/clear-log.js new file mode 100644 index 000000000..739d65577 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/clear-log.js @@ -0,0 +1,6 @@ +export const CLEAR_LOG = { + name: "自动清除历史记录", + init: false, + unfrequent: true, + intro: "开启后将定时清除历史记录栏的条目(而不是等记录栏满后再清除)" +}; diff --git a/noname/library/configuration-menu/view/configuration/hide-card-image.js b/noname/library/configuration-menu/view/configuration/hide-card-image.js new file mode 100644 index 000000000..d4554a9ec --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/hide-card-image.js @@ -0,0 +1,7 @@ +export const HIDE_CARD_IMAGE = { + name: "隐藏卡牌背景", + intro: "所有卡牌将使用文字作为背景", + init: false, + unfrequent: true, + restart: true +}; diff --git a/noname/library/configuration-menu/view/configuration/hide-card-prompt-basic.js b/noname/library/configuration-menu/view/configuration/hide-card-prompt-basic.js new file mode 100644 index 000000000..f91980fe9 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/hide-card-prompt-basic.js @@ -0,0 +1,6 @@ +export const HIDE_CARD_PROMPT_BASIC = { + name: "隐藏基本牌信息", + intro: "不显示基本牌名称", + init: false, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/hide-card-prompt-equip.js b/noname/library/configuration-menu/view/configuration/hide-card-prompt-equip.js new file mode 100644 index 000000000..3a2deba6c --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/hide-card-prompt-equip.js @@ -0,0 +1,6 @@ +export const HIDE_CARD_PROMPT_EQUIP = { + name: "隐藏装备牌信息", + intro: "不显示装备牌名称", + init: false, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/log-highlight.js b/noname/library/configuration-menu/view/configuration/log-highlight.js new file mode 100644 index 000000000..a5ed3b301 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/log-highlight.js @@ -0,0 +1,6 @@ +export const LOG_HIGHLIGHT = { + name: "历史记录高亮", + init: true, + unfrequent: true, + intro: "开启后历史记录不同类别的信息将以不同颜色显示" +}; diff --git a/noname/library/configuration-menu/view/configuration/mark-identity-style.js b/noname/library/configuration-menu/view/configuration/mark-identity-style.js new file mode 100644 index 000000000..7dfff2d09 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/mark-identity-style.js @@ -0,0 +1,9 @@ +import { ITEM } from "./mark-identity-style/item.js"; + +export const MARK_IDENTITY_STYLE = { + name: "标记身份操作", + intro: "设置单击身份按钮时的操作", + unfrequent: true, + init: "menu", + item: ITEM +}; diff --git a/noname/library/configuration-menu/view/configuration/mark-identity-style/item.js b/noname/library/configuration-menu/view/configuration/mark-identity-style/item.js new file mode 100644 index 000000000..e91a17cf0 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/mark-identity-style/item.js @@ -0,0 +1,4 @@ +export const ITEM = { + menu: "菜单", + click: "单击" +}; diff --git a/noname/library/configuration-menu/view/configuration/pop-equip.js b/noname/library/configuration-menu/view/configuration/pop-equip.js new file mode 100644 index 000000000..333fe2cb4 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/pop-equip.js @@ -0,0 +1,6 @@ +export const POP_EQUIP = { + name: "触屏装备选择", + intro: "设置触屏布局中选择装备的方式", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/recent-character-number.js b/noname/library/configuration-menu/view/configuration/recent-character-number.js new file mode 100644 index 000000000..b7fbb19b0 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/recent-character-number.js @@ -0,0 +1,9 @@ +import { ITEM } from "./recent-character-number/item.js"; + +export const RECENT_CHARACTER_NUMBER = { + name: "最近使用武将", + intro: "自由选将对话框中最近使用武将的数量", + init: "12", + item: ITEM, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/recent-character-number/item.js b/noname/library/configuration-menu/view/configuration/recent-character-number/item.js new file mode 100644 index 000000000..e4206404a --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/recent-character-number/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + "6": "6", + "12": "12", + "20": "24", + "30": "36", +}; diff --git a/noname/library/configuration-menu/view/configuration/remember-dialog.js b/noname/library/configuration-menu/view/configuration/remember-dialog.js new file mode 100644 index 000000000..83ff5d6f1 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/remember-dialog.js @@ -0,0 +1,24 @@ +export const REMEMBER_DIALOG = { + name: "记住对话框位置", + intro: "移动对话框后新的对话框也将在移动后的位置显示", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("remember_dialog", bool); + if (!bool) { + if (ui.dialog) { + var dialog = ui.dialog; + dialog.style.transform = ""; + dialog._dragtransform = [0, 0]; + dialog.style.transition = "all 0.3s"; + dialog._dragtouches; + dialog._dragorigin; + dialog._dragorigintransform; + setTimeout(function () { + dialog.style.transition = ""; + }, 500); + } + game.saveConfig("dialog_transform", [0, 0]); + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/remember-round-button.js b/noname/library/configuration-menu/view/configuration/remember-round-button.js new file mode 100644 index 000000000..a80d04dd4 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/remember-round-button.js @@ -0,0 +1,12 @@ +export const REMEMBER_ROUND_BUTTON = { + name: "记住按钮位置", + intro: "重新开始后触屏按钮将保存的上一局的位置", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("remember_round_button", bool); + if (!bool) { + ui.click.resetround(); + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/right-range.js b/noname/library/configuration-menu/view/configuration/right-range.js new file mode 100644 index 000000000..606bcc138 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/right-range.js @@ -0,0 +1,6 @@ +export const RIGHT_RANGE = { + name: "显示距离信息", + intro: "在角色的右键菜单中显示距离等信息", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-automatic.js b/noname/library/configuration-menu/view/configuration/show-automatic.js new file mode 100644 index 000000000..f331465f8 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-automatic.js @@ -0,0 +1,14 @@ +export const SHOW_AUTOMATIC = { + name: "显示托管按钮", + init: true, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_auto", bool); + if (lib.config.show_auto) { + ui.auto.style.display = ""; + } + else { + ui.auto.style.display = "none"; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-ban-menu.js b/noname/library/configuration-menu/view/configuration/show-ban-menu.js new file mode 100644 index 000000000..b1bb00afd --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-ban-menu.js @@ -0,0 +1,6 @@ +export const SHOW_BAN_MENU = { + name: "显示禁将菜单", + intro: "在选项-武将中显示禁将一栏", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-card-pile-number.js b/noname/library/configuration-menu/view/configuration/show-card-pile-number.js new file mode 100644 index 000000000..9398b0c2d --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-card-pile-number.js @@ -0,0 +1,14 @@ +export const SHOW_CARD_PILE_NUMBER = { + name: "显示剩余牌数", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_cardpile_number", bool); + if (bool) { + ui.cardPileNumber.style.display = ""; + } + else { + ui.cardPileNumber.style.display = "none"; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-card-pile.js b/noname/library/configuration-menu/view/configuration/show-card-pile.js new file mode 100644 index 000000000..9551e4201 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-card-pile.js @@ -0,0 +1,14 @@ +export const SHOW_CARD_PILE = { + name: "显示牌堆按钮", + init: true, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_cardpile", bool); + if (bool) { + ui.cardPileButton.style.display = ""; + } + else { + ui.cardPileButton.style.display = "none"; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-card-prompt.js b/noname/library/configuration-menu/view/configuration/show-card-prompt.js new file mode 100644 index 000000000..d4c002b0f --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-card-prompt.js @@ -0,0 +1,6 @@ +export const SHOW_CARD_PROMPT = { + name: "显示出牌信息", + intro: "出牌时在使用者上显示卡牌名称", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-character-card.js b/noname/library/configuration-menu/view/configuration/show-character-card.js new file mode 100644 index 000000000..b86346998 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-character-card.js @@ -0,0 +1,6 @@ +export const SHOW_CHARACTER_CARD = { + name: "显示武将资料", + intro: "在武将界面单击时弹出武将资料卡", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-character-name-pinyin.js b/noname/library/configuration-menu/view/configuration/show-character-name-pinyin.js new file mode 100644 index 000000000..b2b41c931 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-character-name-pinyin.js @@ -0,0 +1,43 @@ +import { ITEM } from "./show-character-name-pinyin/item.js"; + +export const SHOW_CHARACTER_NAME_PINYIN = { + name: "显示武将名注解", + intro: "在武将资料卡显示武将名及其注解、性别、势力、体力等信息", + init: "showPinyin", + unfrequent: true, + item: ITEM, + visualMenu(node, link, name) { + node.classList.add("button", "character"); + const style = node.style; + style.alignItems = "center"; + style.animation = "background-position-left-center-right-center-left-center 15s ease infinite"; + style.background = "linear-gradient(-45deg, #EE7752, #E73C7E, #23A6D5, #23D5AB)"; + style.backgroundSize = "400% 400%"; + style.display = "flex"; + style.height = "60px"; + style.justifyContent = "center"; + style.width = "180px"; + const firstChild = node.firstChild; + firstChild.removeAttribute("class"); + firstChild.style.position = "initial"; + if (link == "doNotShow") return; + const ruby = document.createElement("ruby"); + ruby.textContent = name; + const rt = document.createElement("rt"); + rt.style.fontSize = "smaller"; + if (link == "showPinyin2" || link == "showCodeIdentifier2") { + rt.textContent = link == "showCodeIdentifier2" ? "[" + link + "]" : "[" + get.pinyin(name) + "]"; + ruby.appendChild(rt); + } else { + const leftParenthesisRP = document.createElement("rp"); + leftParenthesisRP.textContent = "("; + ruby.appendChild(leftParenthesisRP); + rt.textContent = link == "showCodeIdentifier" ? link : get.pinyin(name).join(" "); + ruby.appendChild(rt); + const rightParenthesisRP = document.createElement("rp"); + rightParenthesisRP.textContent = ")"; + ruby.appendChild(rightParenthesisRP); + } + firstChild.innerHTML = ruby.outerHTML; + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-character-name-pinyin/item.js b/noname/library/configuration-menu/view/configuration/show-character-name-pinyin/item.js new file mode 100644 index 000000000..2b32bfc28 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-character-name-pinyin/item.js @@ -0,0 +1,7 @@ +export const ITEM = { + doNotShow: "不显示", + showPinyin: "拼音(样式一)", + showCodeIdentifier: "代码ID(样式一)", + showPinyin2: "拼音(样式二)", + showCodeIdentifier2: "代码ID(样式二)" +}; diff --git a/noname/library/configuration-menu/view/configuration/show-discard-pile.js b/noname/library/configuration-menu/view/configuration/show-discard-pile.js new file mode 100644 index 000000000..9cbd388ff --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-discard-pile.js @@ -0,0 +1,5 @@ +export const SHOW_DISCARD_PILE = { + name: "暂停时显示弃牌堆", + init: false, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-extension-maker.js b/noname/library/configuration-menu/view/configuration/show-extension-maker.js new file mode 100644 index 000000000..bca3a3c9d --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-extension-maker.js @@ -0,0 +1,5 @@ +export const SHOW_EXTENSION_MAKER = { + name: "显示制作扩展", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-extension-share.js b/noname/library/configuration-menu/view/configuration/show-extension-share.js new file mode 100644 index 000000000..47010482f --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-extension-share.js @@ -0,0 +1,5 @@ +export const SHOW_EXTENSION_SHARE = { + name: "显示分享扩展", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-favorite-menu.js b/noname/library/configuration-menu/view/configuration/show-favorite-menu.js new file mode 100644 index 000000000..dab7508a6 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-favorite-menu.js @@ -0,0 +1,6 @@ +export const SHOW_FAVORITE_MENU = { + name: "显示收藏菜单", + intro: "在选项-武将中显示收藏一栏", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-favorite-mode.js b/noname/library/configuration-menu/view/configuration/show-favorite-mode.js new file mode 100644 index 000000000..20ddfb310 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-favorite-mode.js @@ -0,0 +1,6 @@ +export const SHOW_FAVORITE_MODE = { + name: "显示模式收藏", + intro: "快捷菜单中显示收藏模式", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-favorite.js b/noname/library/configuration-menu/view/configuration/show-favorite.js new file mode 100644 index 000000000..bd0d85b0d --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-favorite.js @@ -0,0 +1,6 @@ +export const SHOW_FAVORITE = { + name: "显示添加收藏", + intro: "在角色的右键菜单中显示添加收藏", + init: false, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-give-up.js b/noname/library/configuration-menu/view/configuration/show-give-up.js new file mode 100644 index 000000000..b2ce71cc7 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-give-up.js @@ -0,0 +1,8 @@ +export const SHOW_GIVE_UP = { + name: "显示投降按钮", + init: true, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_giveup", bool); + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-group.js b/noname/library/configuration-menu/view/configuration/show-group.js new file mode 100644 index 000000000..348a09feb --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-group.js @@ -0,0 +1,6 @@ +export const SHOW_GROUP = { + name: "显示角色势力", + intro: "在角色的右键菜单中显示角色势力", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-hand-card-button.js b/noname/library/configuration-menu/view/configuration/show-hand-card-button.js new file mode 100644 index 000000000..bdc71d71d --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-hand-card-button.js @@ -0,0 +1,8 @@ +export const SHOW_HAND_CARD_BUTTON = { + name: '显示手牌按钮', + init: true, + unfrequent: true, + onclick(bool) { + game.saveConfig('show_handcardbutton', bool); + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-log.js b/noname/library/configuration-menu/view/configuration/show-log.js new file mode 100644 index 000000000..7f8abd10d --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-log.js @@ -0,0 +1,20 @@ +import { ITEM } from "./show-log/item.js"; + +export const SHOW_LOG = { + name: "历史记录栏", + init: "off", + intro: "在屏幕中部显示出牌文字记录", + unfrequent: true, + item: ITEM, + onclick(bool) { + game.saveConfig("show_log", bool); + if (lib.config.show_log != "off") { + ui.arenalog.style.display = ""; + ui.arenalog.dataset.position = bool; + } + else { + ui.arenalog.style.display = "none"; + ui.arenalog.innerHTML = ""; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-log/item.js b/noname/library/configuration-menu/view/configuration/show-log/item.js new file mode 100644 index 000000000..a894c1df3 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-log/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + off: "关闭", + left: "靠左", + center: "居中", + right: "靠右" +}; diff --git a/noname/library/configuration-menu/view/configuration/show-name.js b/noname/library/configuration-menu/view/configuration/show-name.js new file mode 100644 index 000000000..093da972b --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-name.js @@ -0,0 +1,14 @@ +export const SHOW_NAME = { + name: "显示角色名称", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_name", bool); + if (bool) { + ui.arena.classList.remove("hide_name"); + } + else { + ui.arena.classList.add("hide_name"); + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-pause.js b/noname/library/configuration-menu/view/configuration/show-pause.js new file mode 100644 index 000000000..9d89516a1 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-pause.js @@ -0,0 +1,14 @@ +export const SHOW_PAUSE = { + name: "显示暂停按钮", + init: true, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_pause", bool); + if (lib.config.show_pause) { + ui.pause.style.display = ""; + } + else { + ui.pause.style.display = "none"; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-phase-prompt.js b/noname/library/configuration-menu/view/configuration/show-phase-prompt.js new file mode 100644 index 000000000..b15d399af --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-phase-prompt.js @@ -0,0 +1,6 @@ +export const SHOW_PHASE_PROMPT = { + name: "显示阶段信息", + intro: "在当前回合不同阶段开始时显示阶段名称", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-phase-use-prompt.js b/noname/library/configuration-menu/view/configuration/show-phase-use-prompt.js new file mode 100644 index 000000000..f30730d98 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-phase-use-prompt.js @@ -0,0 +1,6 @@ +export const SHOW_PHASE_USE_PROMPT = { + name: "出牌阶段提示", + intro: "在你出牌时显示提示文字", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-player-ids.js b/noname/library/configuration-menu/view/configuration/show-player-ids.js new file mode 100644 index 000000000..14251c7ef --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-player-ids.js @@ -0,0 +1,14 @@ +export const SHOW_PLAYER_IDS = { + name: "显示身份按钮", + init: true, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_playerids", bool); + if (lib.config.show_playerids) { + ui.playerids.style.display = ""; + } + else { + ui.playerids.style.display = "none"; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-rarity.js b/noname/library/configuration-menu/view/configuration/show-rarity.js new file mode 100644 index 000000000..14f99724b --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-rarity.js @@ -0,0 +1,9 @@ +export const SHOW_RARITY = { + name: "显示武将评级", + init: false, + intro: "仅供娱乐,重启后生效", + unfrequent: true, + onclick(bool) { + game.saveConfig("show_rarity", bool); + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-replay.js b/noname/library/configuration-menu/view/configuration/show-replay.js new file mode 100644 index 000000000..5155d52e3 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-replay.js @@ -0,0 +1,14 @@ +export const SHOW_REPLAY = { + name: "显示重来按钮", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_replay", bool); + if (lib.config.show_replay) { + ui.replay.style.display = ""; + } + else { + ui.replay.style.display = "none"; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-round-menu.js b/noname/library/configuration-menu/view/configuration/show-round-menu.js new file mode 100644 index 000000000..45c4e285c --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-round-menu.js @@ -0,0 +1,16 @@ +export const SHOW_ROUND_MENU = { + name: "显示触屏按钮", + init: true, + unfrequent: true, + onclick(bool) { + if (get.is.nomenu("show_round_menu", bool)) return false; + game.saveConfig("show_round_menu", bool); + if (bool && ui.roundmenu) { + ui.roundmenu.style.display = ""; + } + else { + ui.roundmenu.style.display = "none"; + alert("关闭触屏按钮后可通过手势打开菜单(默认为下划)") + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-sex.js b/noname/library/configuration-menu/view/configuration/show-sex.js new file mode 100644 index 000000000..82da6d633 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-sex.js @@ -0,0 +1,6 @@ +export const SHOW_SEX = { + name: "显示角色性别", + intro: "在角色的右键菜单中显示角色性别", + init: true, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-skill-name-pinyin.js b/noname/library/configuration-menu/view/configuration/show-skill-name-pinyin.js new file mode 100644 index 000000000..9c6d03a49 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-skill-name-pinyin.js @@ -0,0 +1,18 @@ +import { SHOW_CHARACTER_NAME_PINYIN } from "./show-character-name-pinyin.js"; + +export const SHOW_SKILL_NAME_PINYIN = { + name: "显示技能名注解", + intro: "在武将资料卡显示技能名注解", + get init() { + return SHOW_CHARACTER_NAME_PINYIN.init; + }, + get unfrequent() { + return SHOW_CHARACTER_NAME_PINYIN.unfrequent; + }, + get item() { + return SHOW_CHARACTER_NAME_PINYIN.item; + }, + get visualMenu() { + return SHOW_CHARACTER_NAME_PINYIN.visualMenu; + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-sort-card.js b/noname/library/configuration-menu/view/configuration/show-sort-card.js new file mode 100644 index 000000000..a869d022e --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-sort-card.js @@ -0,0 +1,14 @@ +export const SHOW_SORT_CARD = { + name: "显示整理手牌按钮", + init: true, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_sortcard", bool); + if (lib.config.show_sortcard) { + ui.sortCard.style.display = ""; + } + else { + ui.sortCard.style.display = "none"; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-status-bar-android.js b/noname/library/configuration-menu/view/configuration/show-status-bar-android.js new file mode 100644 index 000000000..0baf51bd1 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-status-bar-android.js @@ -0,0 +1,18 @@ +export const SHOW_STATUS_BAR_ANDROID = { + name: "显示状态栏", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_statusbar", bool); + if (window.StatusBar && lib.device == "android") { + if (bool) { + window.StatusBar.overlaysWebView(false); + window.StatusBar.backgroundColorByName("black"); + window.StatusBar.show(); + } + else { + window.StatusBar.hide(); + } + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-status-bar-ios.js b/noname/library/configuration-menu/view/configuration/show-status-bar-ios.js new file mode 100644 index 000000000..4c4cb231e --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-status-bar-ios.js @@ -0,0 +1,29 @@ +import { ITEM } from "./show-status-bar-ios/item.js"; + +export const SHOW_STATUS_BAR_IOS = { + name: "显示状态栏", + init: "off", + unfrequent: true, + item: ITEM, + onclick(bool) { + game.saveConfig("show_statusbar_ios", bool); + if (window.StatusBar && lib.device == "ios") { + if (bool != "off" && bool != "auto") { + if (lib.config.show_statusbar_ios == "default") { + window.StatusBar.overlaysWebView(false); + document.body.classList.remove("statusbar"); + } + else { + window.StatusBar.overlaysWebView(true); + document.body.classList.add("statusbar"); + } + window.StatusBar.backgroundColorByName("black"); + window.StatusBar.show(); + } + else { + document.body.classList.remove("statusbar"); + window.StatusBar.hide(); + } + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-status-bar-ios/item.js b/noname/library/configuration-menu/view/configuration/show-status-bar-ios/item.js new file mode 100644 index 000000000..fbff5ec7e --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-status-bar-ios/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + default: "默认", + overlay: "嵌入", + auto: "自动", + off: "关闭" +}; diff --git a/noname/library/configuration-menu/view/configuration/show-time-2.js b/noname/library/configuration-menu/view/configuration/show-time-2.js new file mode 100644 index 000000000..b66b41d04 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-time-2.js @@ -0,0 +1,15 @@ +export const SHOW_TIME_2 = { + name: "显示时间", + intro: "在触屏按钮处显示当前时间", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_time2", bool); + if (bool) { + ui.roundmenu.classList.add("clock"); + } + else { + ui.roundmenu.classList.remove("clock"); + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-time-3.js b/noname/library/configuration-menu/view/configuration/show-time-3.js new file mode 100644 index 000000000..bdf8d2c7b --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-time-3.js @@ -0,0 +1,5 @@ +export const SHOW_TIME_3 = { + name: "显示游戏时间", + init: false, + unfrequent: true +}; diff --git a/noname/library/configuration-menu/view/configuration/show-time.js b/noname/library/configuration-menu/view/configuration/show-time.js new file mode 100644 index 000000000..dff5d5d24 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-time.js @@ -0,0 +1,15 @@ +export const SHOW_TIME = { + name: "显示时间", + intro: "在屏幕顶部显示当前时间", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_time", bool); + if (bool) { + ui.time.style.display = ""; + } + else { + ui.time.style.display = "none"; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-volume.js b/noname/library/configuration-menu/view/configuration/show-volume.js new file mode 100644 index 000000000..1dd459e5b --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-volume.js @@ -0,0 +1,14 @@ +export const SHOW_VOLUME = { + name: "显示音量按钮", + init: true, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_volumn", bool); + if (lib.config.show_volumn) { + ui.volumn.style.display = ""; + } + else { + ui.volumn.style.display = "none"; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/show-wuxie.js b/noname/library/configuration-menu/view/configuration/show-wuxie.js new file mode 100644 index 000000000..2d5194874 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/show-wuxie.js @@ -0,0 +1,15 @@ +export const SHOW_WUXIE = { + name: "显示无懈按钮", + intro: "在右上角显示不询问无懈", + init: false, + unfrequent: true, + onclick(bool) { + game.saveConfig("show_wuxie", bool); + if (lib.config.show_wuxie) { + ui.wuxie.style.display = ""; + } + else { + ui.wuxie.style.display = "none"; + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/transparent-dialog.js b/noname/library/configuration-menu/view/configuration/transparent-dialog.js new file mode 100644 index 000000000..1dcc3f4b2 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/transparent-dialog.js @@ -0,0 +1,22 @@ +export const TRANSPARENT_DIALOG = { + name: "堆叠对话框虚化", + init: false, + intro: "当具有static属性的对话框堆叠(如五谷丰登对话框中提示无懈可击)时,将后方的对话框变为半透明", + onclick(bool) { + game.saveConfig("transparent_dialog", bool); + if (bool) { + for (var i = 0; i < ui.dialogs.length; i++) { + if (ui.dialogs[i] != ui.dialog && ui.dialogs[i].static) { + ui.dialogs[i].unfocus(); + } + } + } + else { + for (var i = 0; i < ui.dialogs.length; i++) { + if (ui.dialogs[i] != ui.dialog && ui.dialogs[i].static) { + ui.dialogs[i].refocus(); + } + } + } + } +}; diff --git a/noname/library/configuration-menu/view/configuration/watch-face.js b/noname/library/configuration-menu/view/configuration/watch-face.js new file mode 100644 index 000000000..5db60a6cf --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/watch-face.js @@ -0,0 +1,12 @@ +import { ITEM } from "./watch-face/item.js"; + +export const WATCH_FACE = { + name: "表盘样式", + init: "none", + unfrequent: true, + item: ITEM, + onclick(item) { + game.saveConfig("watchface", item); + ui.roundmenu.dataset.watchface = item; + } +}; diff --git a/noname/library/configuration-menu/view/configuration/watch-face/item.js b/noname/library/configuration-menu/view/configuration/watch-face/item.js new file mode 100644 index 000000000..373e84912 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/watch-face/item.js @@ -0,0 +1,4 @@ +export const ITEM = { + none: "默认", + simple: "简约" +}; diff --git a/noname/library/configuration-menu/view/configuration/wuxie-right.js b/noname/library/configuration-menu/view/configuration/wuxie-right.js new file mode 100644 index 000000000..0c7e6f1e2 --- /dev/null +++ b/noname/library/configuration-menu/view/configuration/wuxie-right.js @@ -0,0 +1,5 @@ +export const WUXIE_RIGHT = { + name: "无懈按钮靠左", + init: true, + unfrequent: true +}; From a04a2d4732274b5e709394554e8f6a2474234d9d Mon Sep 17 00:00:00 2001 From: Tipx-L <138244655+Tipx-L@users.noreply.github.com> Date: Fri, 8 Dec 2023 07:23:31 -0800 Subject: [PATCH 086/302] Migrate the extension menu. --- noname/library.js | 2 + noname/library/extension-menu.js | 11 ++++++ noname/library/extension-menu/boss.js | 11 ++++++ .../library/extension-menu/boss/enable-ai.js | 4 ++ noname/library/extension-menu/boss/enable.js | 37 +++++++++++++++++++ noname/library/extension-menu/boss/hide.js | 19 ++++++++++ .../extension-menu/boss/introduction.js | 5 +++ noname/library/extension-menu/card-pile.js | 33 +++++++++++++++++ .../card-pile/card-pile-item.js | 5 +++ .../extension-menu/card-pile/enable.js | 5 +++ .../library/extension-menu/card-pile/guohe.js | 7 ++++ .../library/extension-menu/card-pile/hide.js | 19 ++++++++++ .../extension-menu/card-pile/introduction.js | 5 +++ .../library/extension-menu/card-pile/jiu.js | 7 ++++ .../extension-menu/card-pile/nanman.js | 7 ++++ .../extension-menu/card-pile/sha-fire.js | 7 ++++ .../extension-menu/card-pile/sha-thunder.js | 7 ++++ .../library/extension-menu/card-pile/sha.js | 7 ++++ .../library/extension-menu/card-pile/shan.js | 7 ++++ .../extension-menu/card-pile/shunshou.js | 7 ++++ .../library/extension-menu/card-pile/tao.js | 7 ++++ .../extension-menu/card-pile/tiesuo.js | 7 ++++ .../extension-menu/card-pile/wanjian.js | 7 ++++ .../library/extension-menu/card-pile/wuxie.js | 7 ++++ noname/library/extension-menu/coin.js | 13 +++++++ noname/library/extension-menu/coin/canvas.js | 13 +++++++ noname/library/extension-menu/coin/display.js | 11 ++++++ .../extension-menu/coin/display/item.js | 4 ++ noname/library/extension-menu/coin/enable.js | 14 +++++++ noname/library/extension-menu/coin/hide.js | 19 ++++++++++ .../extension-menu/coin/introduction.js | 5 +++ noname/library/extension-menu/wuxing.js | 11 ++++++ .../library/extension-menu/wuxing/enable.js | 5 +++ noname/library/extension-menu/wuxing/hide.js | 19 ++++++++++ .../extension-menu/wuxing/introduction.js | 5 +++ .../library/extension-menu/wuxing/number.js | 7 ++++ .../extension-menu/wuxing/number/item.js | 6 +++ 37 files changed, 372 insertions(+) create mode 100644 noname/library/extension-menu.js create mode 100644 noname/library/extension-menu/boss.js create mode 100644 noname/library/extension-menu/boss/enable-ai.js create mode 100644 noname/library/extension-menu/boss/enable.js create mode 100644 noname/library/extension-menu/boss/hide.js create mode 100644 noname/library/extension-menu/boss/introduction.js create mode 100644 noname/library/extension-menu/card-pile.js create mode 100644 noname/library/extension-menu/card-pile/card-pile-item.js create mode 100644 noname/library/extension-menu/card-pile/enable.js create mode 100644 noname/library/extension-menu/card-pile/guohe.js create mode 100644 noname/library/extension-menu/card-pile/hide.js create mode 100644 noname/library/extension-menu/card-pile/introduction.js create mode 100644 noname/library/extension-menu/card-pile/jiu.js create mode 100644 noname/library/extension-menu/card-pile/nanman.js create mode 100644 noname/library/extension-menu/card-pile/sha-fire.js create mode 100644 noname/library/extension-menu/card-pile/sha-thunder.js create mode 100644 noname/library/extension-menu/card-pile/sha.js create mode 100644 noname/library/extension-menu/card-pile/shan.js create mode 100644 noname/library/extension-menu/card-pile/shunshou.js create mode 100644 noname/library/extension-menu/card-pile/tao.js create mode 100644 noname/library/extension-menu/card-pile/tiesuo.js create mode 100644 noname/library/extension-menu/card-pile/wanjian.js create mode 100644 noname/library/extension-menu/card-pile/wuxie.js create mode 100644 noname/library/extension-menu/coin.js create mode 100644 noname/library/extension-menu/coin/canvas.js create mode 100644 noname/library/extension-menu/coin/display.js create mode 100644 noname/library/extension-menu/coin/display/item.js create mode 100644 noname/library/extension-menu/coin/enable.js create mode 100644 noname/library/extension-menu/coin/hide.js create mode 100644 noname/library/extension-menu/coin/introduction.js create mode 100644 noname/library/extension-menu/wuxing.js create mode 100644 noname/library/extension-menu/wuxing/enable.js create mode 100644 noname/library/extension-menu/wuxing/hide.js create mode 100644 noname/library/extension-menu/wuxing/introduction.js create mode 100644 noname/library/extension-menu/wuxing/number.js create mode 100644 noname/library/extension-menu/wuxing/number/item.js diff --git a/noname/library.js b/noname/library.js index 8869613f3..957725c5c 100644 --- a/noname/library.js +++ b/noname/library.js @@ -14,6 +14,7 @@ import { CONFIGURATION_MENU } from "./library/configuration-menu.js"; import { dynamicTranslate } from "./library/dynamic-translate.js"; import { element } from "./library/element.js"; import { emotionList } from "./library/emotion-list.js"; +import { extensionMenu } from "./library/extension-menu.js"; import { extensionPack } from "./library/extension-pack.js"; import { hookMap } from "./library/hook-map.js"; import { hook } from "./library/hook.js"; @@ -101,6 +102,7 @@ export class Library { ]) static characterDialogGroup = CharacterDialogGroup; static configMenu = CONFIGURATION_MENU; + static extensionMenu = extensionMenu; constructor() { throw new TypeError(`${new.target.name} is not a constructor`); diff --git a/noname/library/extension-menu.js b/noname/library/extension-menu.js new file mode 100644 index 000000000..7bd3dbc75 --- /dev/null +++ b/noname/library/extension-menu.js @@ -0,0 +1,11 @@ +import { BOSS } from "./extension-menu/boss.js"; +import { CARD_PILE } from "./extension-menu/card-pile.js"; +import { COIN } from "./extension-menu/coin.js"; +import { WUXING } from "./extension-menu/wuxing.js"; + +export const extensionMenu = { + cardpile: CARD_PILE, + boss: BOSS, + wuxing: WUXING, + coin: COIN +}; diff --git a/noname/library/extension-menu/boss.js b/noname/library/extension-menu/boss.js new file mode 100644 index 000000000..c5ede908f --- /dev/null +++ b/noname/library/extension-menu/boss.js @@ -0,0 +1,11 @@ +import { ENABLE_AI } from "./boss/enable-ai.js"; +import { ENABLE } from "./boss/enable.js"; +import { HIDE } from "./boss/hide.js"; +import { INTRODUCTION } from "./boss/introduction.js"; + +export const BOSS = { + enable: ENABLE, + intro: INTRODUCTION, + enableai: ENABLE_AI, + hide: HIDE +}; diff --git a/noname/library/extension-menu/boss/enable-ai.js b/noname/library/extension-menu/boss/enable-ai.js new file mode 100644 index 000000000..9ff95df58 --- /dev/null +++ b/noname/library/extension-menu/boss/enable-ai.js @@ -0,0 +1,4 @@ +export const ENABLE_AI = { + name: "随机选将可用", + init: false +}; diff --git a/noname/library/extension-menu/boss/enable.js b/noname/library/extension-menu/boss/enable.js new file mode 100644 index 000000000..7c4bfb19b --- /dev/null +++ b/noname/library/extension-menu/boss/enable.js @@ -0,0 +1,37 @@ +export const ENABLE = { + name: "开启", + init: false, + restart: true, + onswitch(bool) { + if (bool) { + var storage = { boss: {}, versus: {}, translate: {} }; + var loadversus = function () { + game.loadModeAsync("versus", function (mode) { + for (var i in mode.translate) { + storage.translate[i] = mode.translate[i]; + } + for (var i in mode.jiangeboss) { + if (mode.jiangeboss[i][4].contains("bossallowed")) { + storage.versus[i] = mode.jiangeboss[i]; + } + } + localStorage.setItem("boss_storage_playpackconfig", JSON.stringify(storage)); + }); + }; + game.loadModeAsync("boss", function (mode) { + for (var i in mode.translate) { + storage.translate[i] = mode.translate[i]; + } + for (var i in mode.characterPack.mode_boss) { + if (mode.characterPack.mode_boss[i][4].contains("bossallowed")) { + storage.boss[i] = mode.characterPack.mode_boss[i]; + } + } + loadversus(); + }); + } + else { + localStorage.removeItem("boss_storage_playpackconfig"); + } + } +}; diff --git a/noname/library/extension-menu/boss/hide.js b/noname/library/extension-menu/boss/hide.js new file mode 100644 index 000000000..07d0af97a --- /dev/null +++ b/noname/library/extension-menu/boss/hide.js @@ -0,0 +1,19 @@ +export const HIDE = { + name: "隐藏此扩展", + clear: true, + onclick() { + if (this.firstChild.innerHTML == "隐藏此扩展") { + this.firstChild.innerHTML = "此扩展将在重启后隐藏"; + lib.config.hiddenPlayPack.add("boss"); + if (!lib.config.prompt_hidepack) { + alert("隐藏的扩展包可通过选项-其它-重置隐藏内容恢复"); + game.saveConfig("prompt_hidepack", true); + } + } + else { + this.firstChild.innerHTML = "隐藏此扩展"; + lib.config.hiddenPlayPack.remove("boss"); + } + game.saveConfig("hiddenPlayPack", lib.config.hiddenPlayPack); + } +}; diff --git a/noname/library/extension-menu/boss/introduction.js b/noname/library/extension-menu/boss/introduction.js new file mode 100644 index 000000000..c8477163a --- /dev/null +++ b/noname/library/extension-menu/boss/introduction.js @@ -0,0 +1,5 @@ +export const INTRODUCTION = { + name: "将剑阁和挑战模式的武将添加到其它模式", + clear: true, + nopointer: true +}; diff --git a/noname/library/extension-menu/card-pile.js b/noname/library/extension-menu/card-pile.js new file mode 100644 index 000000000..ca6998e8f --- /dev/null +++ b/noname/library/extension-menu/card-pile.js @@ -0,0 +1,33 @@ +import { ENABLE } from "./card-pile/enable.js"; +import { GUOHE } from "./card-pile/guohe.js"; +import { HIDE } from "./card-pile/hide.js"; +import { INTRODUCTION } from "./card-pile/introduction.js"; +import { JIU } from "./card-pile/jiu.js"; +import { NANMAN } from "./card-pile/nanman.js"; +import { SHA_FIRE } from "./card-pile/sha-fire.js"; +import { SHA_THUNDER } from "./card-pile/sha-thunder.js"; +import { SHA } from "./card-pile/sha.js"; +import { SHAN } from "./card-pile/shan.js"; +import { SHUNSHOU } from "./card-pile/shunshou.js"; +import { TAO } from "./card-pile/tao.js"; +import { TIESUO } from "./card-pile/tiesuo.js"; +import { WANJIAN } from "./card-pile/wanjian.js"; +import { WUXIE } from "./card-pile/wuxie.js"; + +export const CARD_PILE = { + enable: ENABLE, + intro: INTRODUCTION, + sha: SHA, + huosha: SHA_FIRE, + leisha: SHA_THUNDER, + shan: SHAN, + tao: TAO, + jiu: JIU, + wuxie: WUXIE, + nanman: NANMAN, + wanjian: WANJIAN, + guohe: GUOHE, + shunshou: SHUNSHOU, + tiesuo: TIESUO, + hide: HIDE +}; diff --git a/noname/library/extension-menu/card-pile/card-pile-item.js b/noname/library/extension-menu/card-pile/card-pile-item.js new file mode 100644 index 000000000..75e2b86e2 --- /dev/null +++ b/noname/library/extension-menu/card-pile/card-pile-item.js @@ -0,0 +1,5 @@ +export const CARD_PILE_ITEM = { + "1": "补充全部", + "0.5": "补充一半", + "0": "不补充" +}; diff --git a/noname/library/extension-menu/card-pile/enable.js b/noname/library/extension-menu/card-pile/enable.js new file mode 100644 index 000000000..51f7c7be1 --- /dev/null +++ b/noname/library/extension-menu/card-pile/enable.js @@ -0,0 +1,5 @@ +export const ENABLE = { + name: "开启", + init: false, + restart: true +}; diff --git a/noname/library/extension-menu/card-pile/guohe.js b/noname/library/extension-menu/card-pile/guohe.js new file mode 100644 index 000000000..ef9adb615 --- /dev/null +++ b/noname/library/extension-menu/card-pile/guohe.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const GUOHE = { + name: "过河拆桥", + init: "0", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/hide.js b/noname/library/extension-menu/card-pile/hide.js new file mode 100644 index 000000000..07d0af97a --- /dev/null +++ b/noname/library/extension-menu/card-pile/hide.js @@ -0,0 +1,19 @@ +export const HIDE = { + name: "隐藏此扩展", + clear: true, + onclick() { + if (this.firstChild.innerHTML == "隐藏此扩展") { + this.firstChild.innerHTML = "此扩展将在重启后隐藏"; + lib.config.hiddenPlayPack.add("boss"); + if (!lib.config.prompt_hidepack) { + alert("隐藏的扩展包可通过选项-其它-重置隐藏内容恢复"); + game.saveConfig("prompt_hidepack", true); + } + } + else { + this.firstChild.innerHTML = "隐藏此扩展"; + lib.config.hiddenPlayPack.remove("boss"); + } + game.saveConfig("hiddenPlayPack", lib.config.hiddenPlayPack); + } +}; diff --git a/noname/library/extension-menu/card-pile/introduction.js b/noname/library/extension-menu/card-pile/introduction.js new file mode 100644 index 000000000..64aea608f --- /dev/null +++ b/noname/library/extension-menu/card-pile/introduction.js @@ -0,0 +1,5 @@ +export const INTRODUCTION = { + name: "将杀闪等牌在牌堆中的比例维持在与军争牌堆相同,防止开启扩展包后被过多地稀释", + clear: true, + nopointer: true +}; diff --git a/noname/library/extension-menu/card-pile/jiu.js b/noname/library/extension-menu/card-pile/jiu.js new file mode 100644 index 000000000..63c96809b --- /dev/null +++ b/noname/library/extension-menu/card-pile/jiu.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const JIU = { + name: "酒", + init: "0", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/nanman.js b/noname/library/extension-menu/card-pile/nanman.js new file mode 100644 index 000000000..12e50737e --- /dev/null +++ b/noname/library/extension-menu/card-pile/nanman.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const NANMAN = { + name: "南蛮入侵", + init: "0", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/sha-fire.js b/noname/library/extension-menu/card-pile/sha-fire.js new file mode 100644 index 000000000..411f3e23f --- /dev/null +++ b/noname/library/extension-menu/card-pile/sha-fire.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const SHA_FIRE = { + name: "火杀", + init: "1", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/sha-thunder.js b/noname/library/extension-menu/card-pile/sha-thunder.js new file mode 100644 index 000000000..aa7d4ef2d --- /dev/null +++ b/noname/library/extension-menu/card-pile/sha-thunder.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const SHA_THUNDER = { + name: "雷杀", + init: "1", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/sha.js b/noname/library/extension-menu/card-pile/sha.js new file mode 100644 index 000000000..a70b973f1 --- /dev/null +++ b/noname/library/extension-menu/card-pile/sha.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const SHA = { + name: "杀", + init: "1", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/shan.js b/noname/library/extension-menu/card-pile/shan.js new file mode 100644 index 000000000..6242ddcff --- /dev/null +++ b/noname/library/extension-menu/card-pile/shan.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const SHAN = { + name: "闪", + init: "1", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/shunshou.js b/noname/library/extension-menu/card-pile/shunshou.js new file mode 100644 index 000000000..270860eb7 --- /dev/null +++ b/noname/library/extension-menu/card-pile/shunshou.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const SHUNSHOU = { + name: "顺手牵羊", + init: "0", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/tao.js b/noname/library/extension-menu/card-pile/tao.js new file mode 100644 index 000000000..0bddad0d1 --- /dev/null +++ b/noname/library/extension-menu/card-pile/tao.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const TAO = { + name: "桃", + init: "0", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/tiesuo.js b/noname/library/extension-menu/card-pile/tiesuo.js new file mode 100644 index 000000000..4d0ba22d5 --- /dev/null +++ b/noname/library/extension-menu/card-pile/tiesuo.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const TIESUO = { + name: "铁索连环", + init: "0", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/wanjian.js b/noname/library/extension-menu/card-pile/wanjian.js new file mode 100644 index 000000000..796ff2822 --- /dev/null +++ b/noname/library/extension-menu/card-pile/wanjian.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const WANJIAN = { + name: "万箭齐发", + init: "0", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/card-pile/wuxie.js b/noname/library/extension-menu/card-pile/wuxie.js new file mode 100644 index 000000000..b72584853 --- /dev/null +++ b/noname/library/extension-menu/card-pile/wuxie.js @@ -0,0 +1,7 @@ +import { CARD_PILE_ITEM } from "./card-pile-item.js"; + +export const WUXIE = { + name: "无懈可击", + init: "0.5", + item: CARD_PILE_ITEM +}; diff --git a/noname/library/extension-menu/coin.js b/noname/library/extension-menu/coin.js new file mode 100644 index 000000000..b02ba4736 --- /dev/null +++ b/noname/library/extension-menu/coin.js @@ -0,0 +1,13 @@ +import { CANVAS } from "./coin/canvas.js"; +import { DISPLAY } from "./coin/display.js"; +import { ENABLE } from "./coin/enable.js"; +import { HIDE } from "./coin/hide.js"; +import { INTRODUCTION } from "./coin/introduction.js"; + +export const COIN = { + enable: ENABLE, + intro: INTRODUCTION, + display: DISPLAY, + canvas: CANVAS, + hide: HIDE +}; diff --git a/noname/library/extension-menu/coin/canvas.js b/noname/library/extension-menu/coin/canvas.js new file mode 100644 index 000000000..48265efa1 --- /dev/null +++ b/noname/library/extension-menu/coin/canvas.js @@ -0,0 +1,13 @@ +export const CANVAS = { + name: "特效置顶", + init: false, + onclick(bool) { + game.saveConfig("coin_canvas_playpackconfig", bool); + if (bool) { + ui.window.classList.add("canvas_top"); + } + else { + ui.window.classList.remove("canvas_top"); + } + } +}; diff --git a/noname/library/extension-menu/coin/display.js b/noname/library/extension-menu/coin/display.js new file mode 100644 index 000000000..84a97f577 --- /dev/null +++ b/noname/library/extension-menu/coin/display.js @@ -0,0 +1,11 @@ +import { ITEM } from "./display/item.js"; + +export const DISPLAY = { + name: "金币显示", + init: "text", + item: ITEM, + onclick(item) { + game.saveConfig("coin_display_playpackconfig", item); + if (game.changeCoin) game.changeCoin(0); + } +}; diff --git a/noname/library/extension-menu/coin/display/item.js b/noname/library/extension-menu/coin/display/item.js new file mode 100644 index 000000000..f52e1e586 --- /dev/null +++ b/noname/library/extension-menu/coin/display/item.js @@ -0,0 +1,4 @@ +export const ITEM = { + symbol: "符号", + text: "文字" +}; diff --git a/noname/library/extension-menu/coin/enable.js b/noname/library/extension-menu/coin/enable.js new file mode 100644 index 000000000..dc06677b4 --- /dev/null +++ b/noname/library/extension-menu/coin/enable.js @@ -0,0 +1,14 @@ +export const ENABLE = { + name: '开启', + init: false, + restart: true, + onclick(bool) { + if (bool) { + lib.config.plays.add('coin'); + } + else { + lib.config.plays.remove('coin'); + } + game.saveConfig('plays', lib.config.plays); + } +}; diff --git a/noname/library/extension-menu/coin/hide.js b/noname/library/extension-menu/coin/hide.js new file mode 100644 index 000000000..f4bf9c7d7 --- /dev/null +++ b/noname/library/extension-menu/coin/hide.js @@ -0,0 +1,19 @@ +export const HIDE = { + name: "隐藏此扩展", + clear: true, + onclick() { + if (this.firstChild.innerHTML == "隐藏此扩展") { + this.firstChild.innerHTML = "此扩展将在重启后隐藏"; + lib.config.hiddenPlayPack.add("coin"); + if (!lib.config.prompt_hidepack) { + alert("隐藏的扩展包可通过选项-其它-重置隐藏内容恢复"); + game.saveConfig("prompt_hidepack", true); + } + } + else { + this.firstChild.innerHTML = "隐藏此扩展"; + lib.config.hiddenPlayPack.remove("coin"); + } + game.saveConfig("hiddenPlayPack", lib.config.hiddenPlayPack); + } +}; diff --git a/noname/library/extension-menu/coin/introduction.js b/noname/library/extension-menu/coin/introduction.js new file mode 100644 index 000000000..3daf55ea4 --- /dev/null +++ b/noname/library/extension-menu/coin/introduction.js @@ -0,0 +1,5 @@ +export const INTRODUCTION = { + name: "每完成一次对局,可获得一定数量的金币;金币可用于购买游戏特效", + clear: true, + nopointer: true +}; diff --git a/noname/library/extension-menu/wuxing.js b/noname/library/extension-menu/wuxing.js new file mode 100644 index 000000000..d40e69020 --- /dev/null +++ b/noname/library/extension-menu/wuxing.js @@ -0,0 +1,11 @@ +import { ENABLE } from "./wuxing/enable.js"; +import { HIDE } from "./wuxing/hide.js"; +import { INTRODUCTION } from "./wuxing/introduction.js"; +import { NUMBER } from "./wuxing/number.js"; + +export const WUXING = { + enable: ENABLE, + intro: INTRODUCTION, + num: NUMBER, + hide: HIDE +}; diff --git a/noname/library/extension-menu/wuxing/enable.js b/noname/library/extension-menu/wuxing/enable.js new file mode 100644 index 000000000..51f7c7be1 --- /dev/null +++ b/noname/library/extension-menu/wuxing/enable.js @@ -0,0 +1,5 @@ +export const ENABLE = { + name: "开启", + init: false, + restart: true +}; diff --git a/noname/library/extension-menu/wuxing/hide.js b/noname/library/extension-menu/wuxing/hide.js new file mode 100644 index 000000000..6c54ab6fe --- /dev/null +++ b/noname/library/extension-menu/wuxing/hide.js @@ -0,0 +1,19 @@ +export const HIDE = { + name: "隐藏此扩展", + clear: true, + onclick() { + if (this.firstChild.innerHTML == "隐藏此扩展") { + this.firstChild.innerHTML = "此扩展将在重启后隐藏"; + lib.config.hiddenPlayPack.add("wuxing"); + if (!lib.config.prompt_hidepack) { + alert("隐藏的扩展包可通过选项-其它-重置隐藏内容恢复"); + game.saveConfig("prompt_hidepack", true); + } + } + else { + this.firstChild.innerHTML = "隐藏此扩展"; + lib.config.hiddenPlayPack.remove("wuxing"); + } + game.saveConfig("hiddenPlayPack", lib.config.hiddenPlayPack); + } +}; diff --git a/noname/library/extension-menu/wuxing/introduction.js b/noname/library/extension-menu/wuxing/introduction.js new file mode 100644 index 000000000..355a56658 --- /dev/null +++ b/noname/library/extension-menu/wuxing/introduction.js @@ -0,0 +1,5 @@ +export const INTRODUCTION = { + name: "每名角色和部分卡牌在游戏开始时随机获得一个属性", + clear: true, + nopointer: true +}; diff --git a/noname/library/extension-menu/wuxing/number.js b/noname/library/extension-menu/wuxing/number.js new file mode 100644 index 000000000..cb7ee5641 --- /dev/null +++ b/noname/library/extension-menu/wuxing/number.js @@ -0,0 +1,7 @@ +import { ITEM } from "./number/item.js"; + +export const NUMBER = { + name: "带属性卡牌", + init: "0.3", + item: ITEM +}; diff --git a/noname/library/extension-menu/wuxing/number/item.js b/noname/library/extension-menu/wuxing/number/item.js new file mode 100644 index 000000000..05c59627d --- /dev/null +++ b/noname/library/extension-menu/wuxing/number/item.js @@ -0,0 +1,6 @@ +export const ITEM = { + "0.1": "10%", + "0.2": "20%", + "0.3": "30%", + "0.5": "50%" +}; From 3ae6612119be38b2ffb701517765ce1ec158007b Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Fri, 8 Dec 2023 23:39:13 +0800 Subject: [PATCH 087/302] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=B0=E6=9D=80?= =?UTF-8?q?=E8=B0=8Bprefix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/game/game.js b/game/game.js index eeb85aa57..b21757687 100644 --- a/game/game.js +++ b/game/game.js @@ -36016,6 +36016,12 @@ new Promise(resolve=>{ * @returns {string} */ getSpan:()=>`${get.prefixSpan('OL')}${get.prefixSpan('谋')}` + }], + ['新杀谋',{ + /** + * @returns {string} + */ + getSpan:()=>`${get.prefixSpan('新杀')}${get.prefixSpan('谋')}` }] ]), groupnature:{ From 61968ebf8352f272685b0b189755a982311545d8 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Fri, 8 Dec 2023 23:51:04 +0800 Subject: [PATCH 088/302] =?UTF-8?q?OL=E8=B0=8B=E5=A7=9C=E7=BB=B4=E3=80=90?= =?UTF-8?q?=E9=80=90=E6=97=A5=E3=80=91ai=E4=BC=98=E5=8C=96+ai=20bugfix?= =?UTF-8?q?=EF=BC=8C=E3=80=90=E7=87=83=E5=B7=B1=E3=80=91=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=99=90=E5=AE=9A=E6=8A=80=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/onlyOL.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/character/onlyOL.js b/character/onlyOL.js index 26574859f..130adb17c 100644 --- a/character/onlyOL.js +++ b/character/onlyOL.js @@ -39,12 +39,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var player=_status.event.player; var ts=target.getCards('h').sort((a,b)=>get.number(a)-get.number(b)); if(get.attitude(player,target)<0){ - if(get.effect(player,{name:'losehp'},player,player)>0) return Math.random()*0.8; var hs=player.getCards('h').sort((a,b)=>get.number(b)-get.number(a)); var ts=target.getCards('h').sort((a,b)=>get.number(b)-get.number(a)); - if(get.value(hs[0])>6) return 0; if(get.number(hs[0])>get.number(ts[0])) return 1; - return Math.random()+0.2; + if(get.effect(player,{name:'losehp'},player,player)>0) return Math.random()+0.2; + if(player.getHp()>2) return Math.random()-0.5; + return 0; } return 0; }); @@ -69,7 +69,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var list=lib.skill.olsbranji.getList(trigger); var result3=yield player.chooseControl('失去体力','技能失效').set('prompt','逐日:失去1点体力,或令此技能于本回合失效').set('ai',()=>{ var player=_status.event.player; - if(player.getHp>2){ + if(player.getHp()>2){ var list=_status.event.list; list.removeArray(player.skipList); if(list.includes('phaseDraw')||list.includes('phaseUse')) return '失去体力'; @@ -115,6 +115,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(num==player.getHp()) return true; return player.getHandcardLimit()-player.countCards('h')>=3&&player.getDamagedHp()>=2; }, + limited:true, skillAnimation:true, animationColor:'fire', content:function*(event,map){ From bf1d77a515f6de6f366d667cf9d6eade3f5b4c44 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Fri, 8 Dec 2023 23:54:04 +0800 Subject: [PATCH 089/302] bugfix --- character/onlyOL.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/onlyOL.js b/character/onlyOL.js index 130adb17c..1081b13cb 100644 --- a/character/onlyOL.js +++ b/character/onlyOL.js @@ -113,7 +113,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ check:function(event,player){ var num=lib.skill.olsbranji.getNum(event,player); if(num==player.getHp()) return true; - return player.getHandcardLimit()-player.countCards('h')>=3&&player.getDamagedHp()>=2; + return player.getHandcardLimit()-player.countCards('h')>=3||player.getDamagedHp()>=2; }, limited:true, skillAnimation:true, From 6ea7c7a963ddff9a7671f15a82c845f98e6d14a0 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Sat, 9 Dec 2023 00:11:41 +0800 Subject: [PATCH 090/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=95=8C=E9=BB=84?= =?UTF-8?q?=E7=9B=96=E3=80=90=E8=AF=88=E9=99=8D=E3=80=91=E4=BA=8E=E5=9B=9E?= =?UTF-8?q?=E5=90=88=E5=86=85=E9=9D=9E=E5=87=BA=E7=89=8C=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E5=A4=B1=E5=8E=BB=E4=BD=93=E5=8A=9B=E4=B9=9F=E4=BC=9A=E8=8E=B7?= =?UTF-8?q?=E5=BE=97buff=E7=9A=84bug=EF=BC=8C=E4=BF=AE=E6=94=B9OL=E8=B0=8B?= =?UTF-8?q?=E5=A7=9C=E7=BB=B4=E8=8E=B7=E5=BE=97=E7=9A=84=E3=80=90=E5=9B=B0?= =?UTF-8?q?=E5=A5=8B=E3=80=91=E4=B8=BA=E7=9B=B4=E6=8E=A5=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E9=9D=9E=E9=94=81=E5=AE=9A=E6=8A=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/onlyOL.js | 11 ++++++++--- character/refresh.js | 25 +++++++++++++++---------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/character/onlyOL.js b/character/onlyOL.js index 1081b13cb..3b0ac2d7f 100644 --- a/character/onlyOL.js +++ b/character/onlyOL.js @@ -123,7 +123,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var trigger=map.trigger; player.awakenSkill('olsbranji'); var num=lib.skill.olsbranji.getNum(trigger,player); - if(num>=player.getHp()) player.addSkillLog('kunfen'); + if(num>=player.getHp()){ + player.addSkillLog('kunfen'); + player.storage.kunfen=true; + } if(num<=player.getHp()) player.addSkillLog('zhaxiang'); if(player.countCards('h')!=player.getHandcardLimit()||player.isDamaged()){ var result,num1=player.countCards('h')-player.getHandcardLimit(); @@ -152,7 +155,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.when('olsbranjiAfter').then(()=>player.addSkill('olsbranji_norecover')); player.when({source:'dieAfter'}).then(()=>player.removeSkill('olsbranji_norecover')); }, - derivation:['kunfen','zhaxiang'], + derivation:['kunfenx','zhaxiang'], getList:function(event){ return event.getParent().phaseList.map(list=>list.split('|')[0]); }, @@ -347,7 +350,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ olsbzhuri:'逐日', olsbzhuri_info:'你的阶段结束时,若你本阶段失去过手牌或得到过牌,则你可以与一名角色拼点。若你赢,你可以使用其中一张拼点牌;若你没赢,你失去1点体力或令此技能于本回合无效。', olsbranji:'燃己', - olsbranji_info:'限定技,结束阶段。若你本回合使用过牌的阶段数大于等于/小于等于体力值,你可以获得技能〖困奋〗/〖诈降〗(同时满足则都获得)。若如此做,你将手牌数调整至手牌上限或将体力值回复至体力上限,然后你不能回复体力直到你杀死角色。', + olsbranji_info:'限定技,结束阶段。若你本回合使用过牌的阶段数大于等于/小于等于体力值,你可以获得技能〖困奋〗/〖诈降〗(同时满足则都获得,以此法获得的〖困奋〗直接修改为非锁定技)。若如此做,你将手牌数调整至手牌上限或将体力值回复至体力上限,然后你不能回复体力直到你杀死角色。', + kunfenx:'困奋', + kunfenx_info:'结束阶段开始时,你可以失去1点体力,然后摸两张牌。', onlyOL_yijiang1:'OL专属·将1', onlyOL_sb:'OL专属·上兵伐谋', diff --git a/character/refresh.js b/character/refresh.js index 05e8b7644..42e049de3 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -13922,15 +13922,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'loseHpEnd'}, forced:true, content:function(){ - var num=trigger.num; - player.draw(3*num); - if(_status.currentPhase==player){ - if(!player.storage.zhaxiang2) player.storage.zhaxiang2=0; - player.storage.zhaxiang2+=num; - player.addTempSkill('zhaxiang2',{player:'phaseAfter'}); + 'step 0' + event.count=trigger.num; + 'step 1' + event.count--; + player.draw(3); + if(player.isPhaseUsing()){ + player.addTempSkill('zhaxiang2'); + player.addMark('zhaxiang2',1,false); } - else{ - game.trySkillAudio('zhaxiang',player); + 'step 2' + if(event.count>0&&player.hasSkill('zhaxiang')&&!get.is.blocked('zhaxiang',player)){ + player.logSkill('zhaxiang'); + event.goto(1); } }, ai:{ @@ -13966,13 +13970,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:'zhaxiang', audioname:['ol_sb_jiangwei'], trigger:{player:'useCard'}, - forced:true, filter:function(event,player){ return event.card&&event.card.name=='sha'&&get.color(event.card)=='red'; }, + forced:true, content:function(){ trigger.directHit.addArray(game.players); }, + intro:{content:'
  • 使用【杀】的次数上限+#
  • 使用红色【杀】无距离限制且不能被【闪】响应'}, ai:{ directHit_ai:true, skillTagFilter:function(player,tag,arg){ @@ -14953,7 +14958,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ qianxin_info:'觉醒技,当你造成一次伤害后,若你已受伤,你须减1点体力上限,并获得技能“荐言”。', jianyan_info:'出牌阶段限一次,你可以声明一种牌的类别或颜色,并亮出牌库中第一张符合你声明的牌,然后你令一名男性角色获得此牌。', rekurou_info:'出牌阶段限一次,你可以弃置一张牌,然后失去1点体力。', - zhaxiang_info:'锁定技,每当你失去1点体力后,你摸三张牌。然后若此时是你的出牌阶段,则直到回合结束,你使用红色【杀】无距离限制且不能被【闪】响应,你可以额外使用一张【杀】。', + zhaxiang_info:'锁定技。当你失去1点体力后,你摸三张牌。然后若此时是你的出牌阶段,则你本回合获得此下效果:使用【杀】的次数上限+1,使用红色【杀】无距离限制且不能被【闪】响应。', qiaomeng_info:'当你使用黑色【杀】对一名角色造成伤害后,你可以弃置该角色装备区里的一张牌,若此牌是坐骑牌,你于此牌置入弃牌堆后获得之。', reyicong_info:'锁定技,你计算与其他角色的距离时-1。若你的体力值不大于2,则其他角色计算与你的距离时+1。', refankui_info:'每当你受到1点伤害后,你可以获得伤害来源的一张牌。', From b2957ab11ed16fee55890c4911589a3a462474fc Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Sat, 9 Dec 2023 00:35:21 +0800 Subject: [PATCH 091/302] =?UTF-8?q?=E8=B5=B7=E5=8D=97=E5=8D=8E=E3=80=90?= =?UTF-8?q?=E6=8E=88=E4=B9=A6=E3=80=91=E6=94=B9=E5=9B=9E=E5=B7=B2=E5=8F=91?= =?UTF-8?q?=E5=94=AE=E5=AE=9E=E4=BD=93=E5=8D=A1=E7=89=88=E6=9C=AC=EF=BC=8C?= =?UTF-8?q?=E8=B5=B7=E5=AD=99=E5=9D=9A=E3=80=90=E7=BB=9D=E7=83=88=E3=80=91?= =?UTF-8?q?=E6=95=88=E6=9E=9C=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/jsrg.js | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/character/jsrg.js b/character/jsrg.js index 628d6cc20..abab8d8de 100644 --- a/character/jsrg.js +++ b/character/jsrg.js @@ -4217,7 +4217,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ direct:true, content:function(){ 'step 0' - player.chooseToDiscard(get.prompt('jsrgjuelie',trigger.target),'当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌,然后弃置其等量的牌,然后若你的手牌数或体力值最小,此【杀】对其的伤害基数+1。',[1,Infinity],'he').set('ai',card=>{ + player.chooseToDiscard(get.prompt('jsrgjuelie',trigger.target),'当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌,然后弃置其等量的牌',[1,Infinity],'he').set('ai',card=>{ if(ui.selected.cards.length>=_status.event.max) return 0; if(_status.event.goon) return 4.5-get.value(card); return 0; @@ -4227,6 +4227,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var num=result.cards.length; if(trigger.target.countDiscardableCards(player,'he')) player.discardPlayerCard('平讨:弃置'+get.translation(trigger.target)+get.cnNumber(num)+'张牌',num,'he',trigger.target,true); } + /* else event.finish(); 'step 2' if(player.isMinHandcard()||player.isMinHp()){ @@ -4238,6 +4239,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } map[id].extraDamage++; } + */ }, shaRelated:true, ai:{ @@ -4251,6 +4253,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); }, }, + group:'jsrgjuelie_pojun', + subSkill:{ + pojun:{ + trigger:{source:'damageBegin1'}, + filter:function(event,player){ + if(!player.isMinHandcard()&&!player.isMinHp()) return false; + return event.getParent().name=='sha'; + }, + forced:true, + locked:false, + logTarget:'player', + content:function(){ + trigger.num++; + }, + }, + }, }, //皇甫嵩 jsrgguanhuo:{ @@ -5709,14 +5727,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, forced:true, trigger:{ - player:'enterGame', - global:'phaseBefore', + //player:'enterGame', + //global:'phaseBefore', + global:'roundStart', }, filter:function(event,player){ if(game.hasPlayer(function(current){ return current.countCards('hej','taipingyaoshu'); })) return false; - return event.name!='phase'||game.phaseNumber==0; + return true; + //return event.name!='phase'||game.phaseNumber==0; }, direct:true, group:'jsrgshoushu_destroy', @@ -5968,7 +5988,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrgpingtao:'平讨', jsrgpingtao_info:'出牌阶段限一次。你可以令一名其他角色选择一项:1.交给你一张牌,然后你于此回合使用【杀】的次数上限+1;2.令你视为对其使用一张【杀】。', jsrgjuelie:'绝烈', - jsrgjuelie_info:'当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌并弃置其等量的牌,然后若你的手牌数或体力值最小,此【杀】对其的伤害基数+1。', + jsrgjuelie_info:'①当你使用【杀】指定一名角色为目标后,你可以弃置任意张牌并弃置其等量的牌。②若你的手牌数或体力值为全场最小,则你使用【杀】造成的伤害+1。', jsrg_huangfusong:'起皇甫嵩', jsrg_huangfusong_prefix:'起', jsrgguanhuo:'观火', @@ -6043,7 +6063,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ jsrg_nanhualaoxian:'起南华老仙', jsrg_nanhualaoxian_prefix:'起', jsrgshoushu:'授术', - jsrgshoushu_info:'锁定技。①游戏开始时,若场上没有【太平要术】,你可以从游戏外将【太平要术】置于一名角色的装备区内。②当【太平要术】离开一名角色的装备区后,你令此牌销毁。', + jsrgshoushu_info:'锁定技。①一轮游戏开始时,若场上没有【太平要术】,你可以从游戏外将【太平要术】置于一名角色的装备区内。②当【太平要术】离开一名角色的装备区后,你令此牌销毁。', jsrgxundao:'寻道', jsrgxundao_info:'当你的判定牌生效前,你可以令至多两名角色依次弃置一张牌,然后你选择一张以此法弃置且位于弃牌堆中的牌代替此判定牌。', jsrglinghua:'灵化', From 235100e50ce367fca35b5c4386d2c260c45850f2 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 10:40:10 +0800 Subject: [PATCH 092/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E7=89=88=E5=8C=85?= =?UTF-8?q?=E6=8A=80=E8=83=BDstdshushen=E6=8A=80=E8=83=BD=E4=BD=BF?= =?UTF-8?q?=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/character/standard.js b/character/standard.js index 6308d4dff..ac9d86b80 100755 --- a/character/standard.js +++ b/character/standard.js @@ -99,23 +99,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:'shushen', trigger:{player:'recoverEnd'}, direct:true, - content:function(){ - 'step 0' + async content(event,trigger,player){ event.num=trigger.num||1; - 'step 1' - player.chooseTarget(get.prompt2('stdshushen'),lib.filter.notMe).set('ai',function(target){ - return get.attitude(_status.event.player,target); - }); - 'step 2' - if(result.bool){ - var target=result.targets[0]; + while(player.hasSkill('stdshushen')){ + const {result:{targets}}=await player.promises.chooseTarget(get.prompt2('stdshushen'),lib.filter.notMe) + .set('ai',target=>get.attitude(_status.event.player,target)); + const target=targets[0]; player.logSkill('stdshushen',target); - target.draw(target.countCards('h')?1:2); - if(event.num>1&&player.hasSkill('stdshushen')){ - event.num--; - event.goto(1); - } - } + await target.promises.draw(target.countCards('h')?1:2); + if(--event.num<1) break; + }; }, ai:{threaten:0.8,expose:0.1}, }, From dbceeddb5ec9512e42d605363b2c02de2e05d66d Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 10:42:05 +0800 Subject: [PATCH 093/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E7=89=88=E5=8C=85?= =?UTF-8?q?=E6=8A=80=E8=83=BDstdkuangfu=E6=8A=80=E8=83=BD=E4=BD=BF?= =?UTF-8?q?=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/character/standard.js b/character/standard.js index ac9d86b80..68fe475a6 100755 --- a/character/standard.js +++ b/character/standard.js @@ -120,9 +120,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return player.isPhaseUsing()&&event.card&&event.card.name=='sha'&&event.player!=player&&event.player.isIn(); }, - content:function(){ - if(trigger.player.hp Date: Sat, 9 Dec 2023 10:44:59 +0800 Subject: [PATCH 094/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E7=89=88=E5=8C=85?= =?UTF-8?q?=E6=8A=80=E8=83=BDrewangzun=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8?= =?UTF-8?q?async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/character/standard.js b/character/standard.js index 68fe475a6..26cf98e6e 100755 --- a/character/standard.js +++ b/character/standard.js @@ -136,10 +136,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.player.hp>player.hp; }, logTarget:'player', - content:function(){ - player.draw(); - var zhu=false; - var target=trigger.player; + async content(event,trigger,player){ + await player.promises.draw(); + let zhu=false; + const target=trigger.player; switch(get.mode()){ case 'identity':{ zhu=target.isZhu; @@ -159,7 +159,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } if(zhu){ - player.draw(); + await player.promises.draw(); target.addTempSkill('rewangzun2'); target.addMark('rewangzun2',1,false); } From 469e9fd8397639bf50de542c720d8f0c8599d23d Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 10:50:06 +0800 Subject: [PATCH 095/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E7=89=88=E5=8C=85?= =?UTF-8?q?=E6=8A=80=E8=83=BDretongji=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8a?= =?UTF-8?q?sync=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/character/standard.js b/character/standard.js index 26cf98e6e..6fd397e34 100755 --- a/character/standard.js +++ b/character/standard.js @@ -183,12 +183,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.card.name=='sha'&&event.player!=player&&!event.targets.contains(player)&& event.target.inRange(player)&&event.target.countCards('he')>0; }, - content:function(){ - 'step 0' - trigger.target.chooseCard('he','是否对'+get.translation(player)+'发动【同疾】?','弃置一张牌,将'+get.translation(trigger.card)+'转移给'+get.translation(player)).set('ai',function(card){ + async content(event,trigger,player){ + const {result:{bool,cards}}=await trigger.promises.target.chooseCard('he','是否对'+get.translation(player)+'发动【同疾】?','弃置一张牌,将'+get.translation(trigger.card)+'转移给'+get.translation(player)) + .set('ai',card=>{ if(!_status.event.check) return -1; return get.unuseful(card)+9; - }).set('check',function(){ + }) + .set('check',(()=>{ if(trigger.target.countCards('h','shan')){ return -get.attitude(trigger.target,player); } @@ -202,12 +203,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 8-get.attitude(trigger.target,player); } return -1; - }()>0); - 'step 1' - if(result.bool){ + })()>0); + if(bool){ player.logSkill('retongji',trigger.target); - trigger.target.discard(result.cards); - var evt=trigger.getParent(); + await trigger.target.promises.discard(cards); + const evt=trigger.getParent(); evt.triggeredTargets2.remove(trigger.target); evt.targets.remove(trigger.target); evt.targets.push(player); From 280043d78c6a5e52425ba1fa8dace485c3fb9796 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 11:02:46 +0800 Subject: [PATCH 096/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E7=89=88=E5=8C=85huj?= =?UTF-8?q?ia=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 67 +++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/character/standard.js b/character/standard.js index 6fd397e34..e8d500d1b 100755 --- a/character/standard.js +++ b/character/standard.js @@ -233,42 +233,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.damageEffect(player,event.player,player)>=0) return false; return true; }, - content:function(){ - "step 0" - if(event.current==undefined) event.current=player.next; - if(event.current==player){ - event.finish(); - } - else if(event.current.group=='wei'){ - if((event.current==game.me&&!_status.auto)||( - get.attitude(event.current,player)>2)|| - event.current.isOnline()){ - player.storage.hujiaing=true; - var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张闪?',{name:'shan'}); - next.set('ai',function(){ - var event=_status.event; - return (get.attitude(event.player,event.source)-2); - }); - next.set('skillwarn','替'+get.translation(player)+'打出一张闪'); - next.autochoose=lib.filter.autoRespondShan; - next.set('source',player); + async content(event,trigger,player){ + while(true){ + let bool; + if(!event.current) event.current=player.next; + if(event.current==player) return; + else if(event.current.group=='wei'){ + if((event.current==game.me&&!_status.auto)||( + get.attitude(event.current,player)>2)|| + event.current.isOnline()){ + player.storage.hujiaing=true; + const next=event.current.promises.chooseToRespond('是否替'+get.translation(player)+'打出一张闪?',{name:'shan'}); + next.set('ai',()=>{ + const event=_status.event; + return (get.attitude(event.player,event.source)-2); + }); + next.set('skillwarn','替'+get.translation(player)+'打出一张闪'); + next.autochoose=lib.filter.autoRespondShan; + next.set('source',player); + bool=(await next).result.bool; + } } - } - "step 1" - player.storage.hujiaing=false; - if(result.bool){ - event.finish(); - trigger.result={bool:true,card:{name:'shan',isCard:true}}; - trigger.responded=true; - trigger.animate=false; - if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ - event.current.ai.shown+=0.3; - if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; + player.storage.hujiaing=false; + if(bool){ + trigger.result={bool:true,card:{name:'shan',isCard:true}}; + trigger.responded=true; + trigger.animate=false; + if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ + event.current.ai.shown+=0.3; + if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; + } + return; + } + else{ + event.current=event.current.next; } - } - else{ - event.current=event.current.next; - event.goto(0); } }, ai:{ From f63d5be2e5e41173b962c464776c2c676a92f240 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 11:04:10 +0800 Subject: [PATCH 097/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85jianxiong?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index e8d500d1b..966576c93 100755 --- a/character/standard.js +++ b/character/standard.js @@ -288,8 +288,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return get.itemtype(event.cards)=='cards'&&get.position(event.cards[0],true)=='o'; }, - content:function(){ - player.gain(trigger.cards,'gain2'); + async content(event,trigger,player){ + await player.promises.gain(trigger.cards,'gain2'); }, ai:{ maixie:true, From e1d5866eadadcd72f189e3fd798041140b1cc5fc Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 11:06:16 +0800 Subject: [PATCH 098/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85fankui?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index 966576c93..06b970707 100755 --- a/character/standard.js +++ b/character/standard.js @@ -310,8 +310,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return (event.source&&event.source.countGainableCards(player,event.source!=player?'he':'e')&&event.num>0); }, - content:function(){ - player.gainPlayerCard(true,trigger.source,trigger.source!=player?'he':'e'); + async content(event,trigger,player){ + await player.promises.gainPlayerCard(true,trigger.source,trigger.source!=player?'he':'e'); }, ai:{ maixie_defend:true, From e31b7dc734e5ab1f0fcdb519fca6386d18a4b08e Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 11:25:14 +0800 Subject: [PATCH 099/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85guicai?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 63 +++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 36 deletions(-) diff --git a/character/standard.js b/character/standard.js index 06b970707..336d3c269 100755 --- a/character/standard.js +++ b/character/standard.js @@ -333,22 +333,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return player.countCards(get.mode()=='guozhan'?'hes':'hs')>0; }, - content:function(){ - "step 0" - player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ - get.translation(trigger.player.judging[0])+','+get.prompt('guicai'),get.mode()=='guozhan'?'hes':'hs',function(card){ - var player=_status.event.player; - var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); + async content(event,trigger,player){ + const {result:{bool:chooseCardResultBool,cards:chooseCardResultCards}}=await player.promises.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ + get.translation(trigger.player.judging[0])+','+get.prompt('guicai'),get.mode()=='guozhan'?'hes':'hs',card=>{ + const player=_status.event.player; + const mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player); if(mod2!='unchanged') return mod2; - var mod=game.checkMod(card,player,'unchanged','cardRespondable',player); + const mod=game.checkMod(card,player,'unchanged','cardRespondable',player); if(mod!='unchanged') return mod; return true; - }).set('ai',function(card){ - var trigger=_status.event.getTrigger(); - var player=_status.event.player; - var judging=_status.event.judging; - var result=trigger.judge(card)-trigger.judge(judging); - var attitude=get.attitude(player,trigger.player); + }).set('ai',card=>{ + const trigger=_status.event.getTrigger(); + const player=_status.event.player; + const judging=_status.event.judging; + const result=trigger.judge(card)-trigger.judge(judging); + const attitude=get.attitude(player,trigger.player); if(attitude==0||result==0) return 0; if(attitude>0){ return result-get.value(card)/2; @@ -357,30 +356,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return -result-get.value(card)/2; } }).set('judging',trigger.player.judging[0]).setHiddenSkill('guicai'); - "step 1" - if(result.bool){ - player.respond(result.cards,'guicai','highlight','noOrdering'); - } - else{ - event.finish(); - } - "step 2" - if(result.bool){ - if(trigger.player.judging[0].clone){ - trigger.player.judging[0].clone.classList.remove('thrownhighlight'); - game.broadcast(function(card){ - if(card.clone){ - card.clone.classList.remove('thrownhighlight'); - } - },trigger.player.judging[0]); - game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); - } - game.cardsDiscard(trigger.player.judging[0]); - trigger.player.judging[0]=result.cards[0]; - trigger.orderingCards.addArray(result.cards); - game.log(trigger.player,'的判定牌改为',result.cards[0]); - game.delay(2); + if(!chooseCardResultBool) return; + await player.promises.respond(chooseCardResultCards,'guicai','highlight','noOrdering'); + if(trigger.player.judging[0].clone){ + trigger.player.judging[0].clone.classList.remove('thrownhighlight'); + game.broadcast(function(card){ + if(card.clone){ + card.clone.classList.remove('thrownhighlight'); + } + },trigger.player.judging[0]); + game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone])); } + await game.cardsDiscard(trigger.player.judging[0]).toPromise(); + trigger.player.judging[0]=chooseCardResultCards[0]; + trigger.orderingCards.addArray(chooseCardResultCards); + game.log(trigger.player,'的判定牌改为',chooseCardResultCards[0]); + game.delay(2); }, ai:{ rejudge:true, From c61d214cb750670847a0861416ba0674226adddd Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 12:19:10 +0800 Subject: [PATCH 100/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85ganglie?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/character/standard.js b/character/standard.js index 336d3c269..6eb916d4b 100755 --- a/character/standard.js +++ b/character/standard.js @@ -390,25 +390,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return (get.attitude(player,event.source)<=0); }, logTarget:'source', - content:function(){ - "step 0" - player.judge(function(card){ + async content(event,trigger,player){ + const judgeEvent=player.promises.judge(card=>{ if(get.suit(card)=='heart') return -2; return 2; - }).judge2=function(result){ - return result.bool; - }; - "step 1" - if(result.judge<2){ - event.finish();return; - } - trigger.source.chooseToDiscard(2).set('ai',function(card){ + }); + judgeEvent.judge2=result=>result.bool; + const {result:{judge}}=await judgeEvent; + if(judge<2) return; + const {result:{bool}}=await trigger.source.promises.chooseToDiscard(2) + .set('ai',card=>{ if(card.name=='tao') return -10; if(card.name=='jiu'&&_status.event.player.hp==1) return -10; return get.unuseful(card)+2.5*(5-get.owner(card).hp); }); - "step 2" - if(result.bool==false){ + if(bool==false){ trigger.source.damage(); } }, From 10ab434921641f1c34f2cf7d865a6bd3c569e0df Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 12:27:14 +0800 Subject: [PATCH 101/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85ganglie=5Fth?= =?UTF-8?q?ree=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/character/standard.js b/character/standard.js index 6eb916d4b..4b12947be 100755 --- a/character/standard.js +++ b/character/standard.js @@ -423,38 +423,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:'ganglie', trigger:{player:'damageEnd'}, direct:true, - content:function(){ - "step 0" - player.chooseTarget(get.prompt2('ganglie_three'),function(card,player,target){ + async content(event,trigger,player){ + const {result:{bool:chooseTargetResultBool,targets:chooseTargetResultTargets}}=await player.promises.chooseTarget(get.prompt2('ganglie_three'),(card,player,target)=>{ return target.isEnemyOf(player); - }).set('ai',function(target){ + }).set('ai',target=>{ return -get.attitude(_status.event.player,target)/(1+target.countCards('h')); }); - "step 1" - if(result.bool){ - event.target=result.targets[0]; - player.logSkill('ganglie_three',target); - } - else event.finish(); - "step 2" - player.judge(function(card){ + if(!chooseTargetResultBool) return; + event.target=chooseTargetResultTargets[0]; + player.logSkill('ganglie_three',event.target); + const judgeEvent=player.promises.judge(card=>{ if(get.suit(card)=='heart') return -2; return 2; - }).judge2=function(result){ - return result.bool; - }; - "step 3" - if(result.judge<2){ - event.finish();return; - } - target.chooseToDiscard(2).set('ai',function(card){ + }); + judgeEvent.judge2=result=>result.bool; + const {result:{judge}}=await judgeEvent; + if(judge<2) return; + const {result:{bool:chooseToDiscardResultBool}}=await player.promises.chooseToDiscard(2).set('ai',card=>{ if(card.name=='tao') return -10; if(card.name=='jiu'&&_status.event.player.hp==1) return -10; return get.unuseful(card)+2.5*(5-get.owner(card).hp); }); - "step 4" - if(result.bool==false){ - target.damage(); + if(chooseToDiscardResultBool==false){ + event.target.damage(); } }, ai:{ From ae6f6cefd982ea9480806803ac6b30ac9afe6d16 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 12:31:27 +0800 Subject: [PATCH 102/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85tuxi?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/character/standard.js b/character/standard.js index 4b12947be..e16a467d0 100755 --- a/character/standard.js +++ b/character/standard.js @@ -466,31 +466,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return !event.numFixed; }, - content:function(){ - "step 0" - var check; - var i,num=game.countPlayer(function(current){ + async content(event,trigger,player){ + let check; + let i,num=game.countPlayer(function(current){ return current!=player&¤t.countCards('h')&&get.attitude(player,current)<=0; }); check=(num>=2); - player.chooseTarget(get.prompt('tuxi'),'获得其他一至两名角色的各一张手牌',[1,2],function(card,player,target){ + const {result:{bool,targets}}=await player.promises.chooseTarget(get.prompt('tuxi'),'获得其他一至两名角色的各一张手牌',[1,2],(card,player,target)=>{ return target.countCards('h')>0&&player!=target; - },function(target){ + },target=>{ if(!_status.event.aicheck) return 0; - var att=get.attitude(_status.event.player,target); + const att=get.attitude(_status.event.player,target); if(target.hasSkill('tuntian')) return att/10; return 1-att; }).set('aicheck',check); - "step 1" - if(result.bool){ - player.logSkill('tuxi',result.targets); - player.gainMultiple(result.targets); - trigger.changeToZero(); - } - else{ - event.finish(); - } - "step 2" + if(!bool) return; + player.logSkill('tuxi',targets); + await player.promises.gainMultiple(targets); + trigger.changeToZero(); game.delay(); }, ai:{ From b0aa085628e649965d217ec8a285f6af777581d2 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 12:32:11 +0800 Subject: [PATCH 103/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85luoyi?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index e16a467d0..8875b708c 100755 --- a/character/standard.js +++ b/character/standard.js @@ -505,7 +505,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return !event.numFixed&&event.num>0; }, - content:function(){ + async content(event,trigger,player){ player.addTempSkill('luoyi2','phaseJieshuBegin'); trigger.num--; } From 73e719c376292b522108cb3e40ff0f0bbf1b3d47 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 12:32:32 +0800 Subject: [PATCH 104/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85luoyi2?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index 8875b708c..d2b6b0a52 100755 --- a/character/standard.js +++ b/character/standard.js @@ -516,7 +516,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.notLink(); }, forced:true, - content:function(){ + async content(event,trigger,player){ trigger.num++; }, ai:{ From 1ab59753649073d2a2e6831ea31568159613675d Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 12:33:14 +0800 Subject: [PATCH 105/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85tiandu?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index d2b6b0a52..f66fa3eea 100755 --- a/character/standard.js +++ b/character/standard.js @@ -540,8 +540,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return get.position(event.result.card,true)=='o'; }, - content:function(){ - player.gain(trigger.result.card,'gain2'); + async content(event,trigger,player){ + await player.promises.gain(trigger.result.card,'gain2'); } }, yiji:{ From 60596cd0c089de07fdf6c227d1e8968e3d3c8221 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 12:38:27 +0800 Subject: [PATCH 106/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85yiji?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E8=B0=83=E6=95=B4=E7=BC=A9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 87 +++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/character/standard.js b/character/standard.js index f66fa3eea..76cc25f04 100755 --- a/character/standard.js +++ b/character/standard.js @@ -551,68 +551,67 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event){ return event.num>0; }, - async content(event, trigger, player) { - event.count = trigger.num; + async content(event,trigger,player){ + event.count=trigger.num; // event.goto -> while - while (event.count > 0) { + while(event.count>0){ event.count--; - const { cards } = await game.cardsGotoOrdering(get.cards(2)).toPromise(); - if (_status.connectMode) game.broadcastAll(function () { _status.noclearcountdown = true }); - event.given_map = {}; - if (!cards.length) return; + const {cards}=await game.cardsGotoOrdering(get.cards(2)).toPromise(); + if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true}); + event.given_map={}; + if(!cards.length) return; // event.goto -> do while - do { - const { result: { bool, links } } = - cards.length == 1 ? - { result: { links: cards.slice(0), bool: true } } : - await player.promises.chooseCardButton('遗计:请选择要分配的牌', true, cards, [1, cards.length]) - .set('ai', function (button) { - if (ui.selected.buttons.length == 0) return 1; + do{ + const {result:{bool,links}} = + cards.length==1? + {result:{links:cards.slice(0),bool: true}}: + await player.promises.chooseCardButton('遗计:请选择要分配的牌',true,cards,[1,cards.length]) + .set('ai',button=>{ + if(ui.selected.buttons.length==0) return 1; return 0; }); - if (!bool) return; + if(!bool) return; cards.removeArray(links); - event.togive = links.slice(0); - const { result: { targets } } = await player.promises.chooseTarget('选择一名角色获得' + get.translation(links), true) - .set('ai', function (target) { - var att = get.attitude(_status.event.player, target); - if (_status.event.enemy) { + event.togive=links.slice(0); + const {result:{targets}}=await player.promises.chooseTarget('选择一名角色获得'+get.translation(links),true) + .set('ai',target=>{ + const att=get.attitude(_status.event.player,target); + if(_status.event.enemy){ return -att; } - else if (att > 0) { - return att / (1 + target.countCards('h')); + else if(att>0){ + return att/(1+target.countCards('h')); } - else { - return att / 100; + else{ + return att/100; } }) - .set('enemy', get.value(event.togive[0], player, 'raw') < 0); - if (targets.length) { - const id = targets[0].playerid, - map = event.given_map; - if (!map[id]) map[id] = []; + .set('enemy',get.value(event.togive[0],player,'raw')<0); + if(targets.length){ + const id=targets[0].playerid, + map=event.given_map; + if(!map[id]) map[id]=[]; map[id].addArray(event.togive); } - } while (cards.length > 0); - if (_status.connectMode) { - game.broadcastAll(function () { delete _status.noclearcountdown; game.stopCountChoose() }); + }while(cards.length>0); + if(_status.connectMode){ + game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()}); } - const list = []; - for (const i in event.given_map) { - const source = (_status.connectMode ? lib.playerOL : game.playerMap)[i]; - player.line(source, 'green'); + const list=[]; + for(const i in event.given_map){ + const source=(_status.connectMode?lib.playerOL:game.playerMap)[i]; + player.line(source,'green'); list.push([source, event.given_map[i]]); } await game.loseAsync({ - gain_list: list, - giver: player, - animate: 'draw', + gain_list:list, + giver:player, + animate:'draw', }).toPromise().setContent('gaincardMultiple'); - if (event.count > 0 && player.hasSkill(event.name) && !get.is.blocked(event.name, player)) { - const { result: { bool: repeat } } = await player.promises.chooseBool(get.prompt2(event.name)).set('frequentSkill', event.name); - if (repeat) { - player.logSkill(event.name); - } else return; + if(event.count>0&&player.hasSkill(event.name)&&!get.is.blocked(event.name, player)){ + const {result:{bool:chooseBoolResultBool}}=await player.promises.chooseBool(get.prompt2(event.name)).set('frequentSkill',event.name); + if(chooseBoolResultBool) player.logSkill(event.name); + else return; } else return; } From 5a7349860123a6972261afe605d6e93c25d61be7 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 13:35:03 +0800 Subject: [PATCH 107/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85luoshen?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 71 +++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/character/standard.js b/character/standard.js index 76cc25f04..11a20de7c 100755 --- a/character/standard.js +++ b/character/standard.js @@ -646,45 +646,42 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseZhunbeiBegin'}, frequent:true, preHidden:true, - content:function(){ - "step 0" - if(event.cards==undefined) event.cards=[]; - var next=player.judge(function(card){ - if(get.color(card)=='black') return 1.5; - return -1.5; - }); - next.judge2=function(result){ - return result.bool; - }; - if(get.mode()!='guozhan'&&!player.hasSkillTag('rejudge')) next.set('callback',function(){ - if(event.judgeResult.color=='black'&&get.position(card,true)=='o') player.gain(card,'gain2'); - }); - else next.set('callback',function(){ - if(event.judgeResult.color=='black') event.getParent().orderingCards.remove(card); - }); - "step 1" - if(result.judge>0){ - event.cards.push(result.card); - player.chooseBool('是否再次发动【洛神】?').set('frequentSkill','luoshen'); - } - else{ - for(var i=0;i{ + if(get.color(card)=='black') return 1.5; + return -1.5; + }); + judgeEvent.judge2=result=>result.bool; + if(get.mode()!='guozhan'&&!player.hasSkillTag('rejudge')) judgeEvent.set('callback',async event=>{ + if(event.judgeResult.color=='black'&&get.position(event.card,true)=='o') await player.promises.gain(event.card,'gain2'); + }); + else judgeEvent.set('callback',async event=>{ + if(event.judgeResult.color=='black') event.getParent().orderingCards.remove(event.card); + }); + const {result:{judge,card}}=await judgeEvent; + let bool; + if(judge>0){ + event.cards.push(card); + bool=(await player.promises.chooseBool('是否再次发动【洛神】?').set('frequentSkill','luoshen')).result.bool; + } + else{ + for(let i=0;i Date: Sat, 9 Dec 2023 13:39:52 +0800 Subject: [PATCH 108/302] =?UTF-8?q?=E9=92=88=E5=AF=B9game.delay=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0game.asyncDelay=E5=92=8Cgame.asyncDelayx=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- game/game.js | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index 11a20de7c..6f345a764 100755 --- a/character/standard.js +++ b/character/standard.js @@ -371,7 +371,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger.player.judging[0]=chooseCardResultCards[0]; trigger.orderingCards.addArray(chooseCardResultCards); game.log(trigger.player,'的判定牌改为',chooseCardResultCards[0]); - game.delay(2); + await game.asyncDelay(2); }, ai:{ rejudge:true, diff --git a/game/game.js b/game/game.js index 818105c53..c40142075 100644 --- a/game/game.js +++ b/game/game.js @@ -41664,6 +41664,39 @@ new Promise(resolve=>{ } return game.delay(time,time2); }, + /** + * 在async content中对game.delay的代替使用方法 + * + * 因为async content里不应该使用game.pause和game.resume + */ + asyncDelay:function(time,time2){ + // if(_status.paused) return; + // game.pause(); + if(typeof time!='number') time=1; + if(typeof time2!='number') time2=0; + time=time*lib.config.duration+time2; + if(lib.config.speed=='vvfast') time/=3; + //_status.timeout=setTimeout(game.resume,time); + return new Promise(resolve=>{ + setTimeout(resolve,time); + }); + }, + /** + * 在async content中对game.delayx的代替使用方法 + * + * 因为async content里不应该使用game.pause和game.resume + */ + asyncDelayx:function(time,time2){ + if(typeof time!='number') time=1; + switch(lib.config.game_speed){ + case 'vslow':time*=2.5;break; + case 'slow':time*=1.5;break; + case 'fast':time*=0.7;break; + case 'vfast':time*=0.4;break; + case 'vvfast':time*=0.2;break; + } + return game.asyncDelay(time,time2); + }, check:function(event){ var i,j,range; if(event==undefined) event=_status.event; From 95572ccaad01ec7844f0cfbf6f37a77db9ef7dc6 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 13:49:41 +0800 Subject: [PATCH 109/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xinluoshen?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 62 +++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/character/standard.js b/character/standard.js index 6f345a764..8a9046c8b 100755 --- a/character/standard.js +++ b/character/standard.js @@ -691,44 +691,38 @@ game.import('character',function(lib,game,ui,get,ai,_status){ // alter:true, trigger:{player:'phaseZhunbeiBegin'}, frequent:true, - content:function(){ - "step 0" - if(event.cards==undefined) event.cards=[]; - player.judge(function(card){ - if(get.color(card)=='black') return 1.5; - return -1.5; - },ui.special).judge2=function(result){ - return result.bool; - }; - "step 1" - if(result.judge>0){ - event.cards.push(result.card); - if(lib.config.autoskilllist.contains('luoshen')){ - player.chooseBool('是否再次发动【洛神】?'); + async content(event,trigger,player){ + while(true){ + if(event.cards==undefined) event.cards=[]; + const judgeEvent=player.promises.judge(card=>{ + if(get.color(card)=='black') return 1.5; + return -1.5; + },ui.special); + judgeEvent.judge2=result=>result.bool; + const {result:{judge,card}}=await judgeEvent; + let bool; + if(judge>0){ + event.cards.push(card); + bool=lib.config.autoskilllist.contains('luoshen')?(await player.promises.chooseBool('是否再次发动【洛神】?')).result.bool:true; } else{ - event._result={bool:true}; - } - } - else{ - for(var i=0;i Date: Sat, 9 Dec 2023 14:00:52 +0800 Subject: [PATCH 110/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85rende?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/character/standard.js b/character/standard.js index 8a9046c8b..2e1341cc1 100755 --- a/character/standard.js +++ b/character/standard.js @@ -835,14 +835,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } return 10-get.value(card); }, - content:function(){ - player.give(cards,target); - var evt2=event.getParent(3); - var num=0; - player.getHistory('lose',function(evt){ + async content(event,trigger,player){ + const evt2=event.getParent(3); + let num=0; + player.getHistory('lose',evt=>{ if(evt.getParent(2).name=='rende'&&evt.getParent(5)==evt2) num+=evt.cards.length; }); - if(num<2&&num+cards.length>1) player.recover(); + await player.promises.give(event.cards,event.target); + if(num<2&&num+event.cards.length>1) await player.promises.recover(); }, ai:{ order:function(skill,player){ From 301da21725d73985912234ff1da3b34f151ab5ee Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:01:49 +0800 Subject: [PATCH 111/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85rende1?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index 2e1341cc1..fa9eed7ce 100755 --- a/character/standard.js +++ b/character/standard.js @@ -887,7 +887,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rende1:{ trigger:{player:'phaseUseBegin'}, silent:true, - content:function(){ + async content(event,trigger,player){ player.storage.rende=0; } }, From cc55589fb505fe9c4a0aec2ac1a32c2f03870c59 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:16:02 +0800 Subject: [PATCH 112/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85jijiang1?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 73 ++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/character/standard.js b/character/standard.js index fa9eed7ce..b7119137e 100755 --- a/character/standard.js +++ b/character/standard.js @@ -928,48 +928,43 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.skill=='jijiang'; }, forced:true, - content:function(){ - "step 0" + async content(event,trigger,player){ delete trigger.skill; trigger.getParent().set('jijiang',true); - "step 1" - if(event.current==undefined) event.current=player.next; - if(event.current==player){ - player.addTempSkill('jijiang3'); - event.finish(); - trigger.cancel(); - trigger.getParent().goto(0); - } - else if(event.current.group=='shu'){ - var next=event.current.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'}); - next.set('ai',function(){ - var event=_status.event; - return (get.attitude(event.player,event.source)-2); - }); - next.set('source',player); - next.set('jijiang',true); - next.set('skillwarn','替'+get.translation(player)+'打出一张杀'); - next.noOrdering=true; - next.autochoose=lib.filter.autoRespondSha; - } - else{ - event.current=event.current.next; - event.redo(); - } - "step 2" - if(result.bool){ - event.finish(); - trigger.card=result.card; - trigger.cards=result.cards; - trigger.throw=false; - if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ - event.current.ai.shown+=0.3; - if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; + while(true){ + let bool,card,cards; + if(event.current==undefined) event.current=player.next; + if(event.current==player){ + player.addTempSkill('jijiang3'); + trigger.cancel(); + trigger.getParent().goto(0); + return; } - } - else{ - event.current=event.current.next; - event.goto(1); + else if(event.current.group=='shu'){ + const next=event.current.promises.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'}); + next.set('ai',()=>{ + const event=_status.event; + return (get.attitude(event.player,event.source)-2); + }); + next.set('source',player); + next.set('jijiang',true); + next.set('skillwarn','替'+get.translation(player)+'打出一张杀'); + next.noOrdering=true; + next.autochoose=lib.filter.autoRespondSha; + ({bool,card,cards}=(await next).result); + if(bool){ + trigger.card=card; + trigger.cards=cards; + trigger.throw=false; + if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){ + event.current.ai.shown+=0.3; + if(event.current.ai.shown>0.95) event.current.ai.shown=0.95; + } + return; + } + else event.current=event.current.next; + } + else event.current=event.current.next; } } }, From 7630d68d9f1bb18b8756027b270385b794d84bf8 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:16:23 +0800 Subject: [PATCH 113/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85jijiang3?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index b7119137e..f25e49c7d 100755 --- a/character/standard.js +++ b/character/standard.js @@ -975,7 +975,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event){ return event.skill!='jijiang'&&event.skill!='qinwang'; }, - content:function(){ + async content(event,trigger,player){ player.removeSkill('jijiang3'); } }, From 5e8090b33b2f99f7271383a0b93d77ae0c2ab6c5 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:18:38 +0800 Subject: [PATCH 114/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85zhongyi?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index f25e49c7d..13a922e76 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1033,10 +1033,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, discard:false, lose:false, - content:function(){ + async content(event,trigger,player){ player.awakenSkill('zhongyi'); player.addTempSkill('zhongyi2','roundStart'); - player.addToExpansion(player,'give',cards).gaintag.add('zhongyi2'); + await player.promise.addToExpansion(player,'give',event.cards).gaintag.add('zhongyi2'); }, }, zhongyi2:{ From 4c89703368f6c24a3723031fa21fab99a2644c59 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:19:18 +0800 Subject: [PATCH 115/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85zhongyi2?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index 13a922e76..d49877787 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1036,7 +1036,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ async content(event,trigger,player){ player.awakenSkill('zhongyi'); player.addTempSkill('zhongyi2','roundStart'); - await player.promise.addToExpansion(player,'give',event.cards).gaintag.add('zhongyi2'); + await player.promises.addToExpansion(player,'give',event.cards).gaintag.add('zhongyi2'); }, }, zhongyi2:{ @@ -1047,7 +1047,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return event.getParent().name=='sha'&&event.source&&event.source.isFriendOf(player); }, - content:function(){trigger.num++}, + async content(event,trigger,player){trigger.num++}, intro:{content:'expansion',markcount:'expansion'}, onremove:function(player,skill){ var cards=player.getExpansions(skill); From 1c034983d90577c0a8da4dc831e6b102514d1c12 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:19:58 +0800 Subject: [PATCH 116/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85paoxiao?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index d49877787..d13f3549e 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1067,7 +1067,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return !event.audioed&&event.card.name=='sha'&&player.countUsed('sha',true)>1&&event.getParent().type=='phase'; }, - content:function(){ + async content(event,trigger,player){ trigger.audioed=true; }, mod:{ From 6c5e9ec96dda4bb2c707490198d0793e89ab0dbe Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:29:35 +0800 Subject: [PATCH 117/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85guanxing?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 53 ++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/character/standard.js b/character/standard.js index d13f3549e..20f09ab80 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1092,31 +1092,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseZhunbeiBegin'}, frequent:true, preHidden:true, - content:function(){ - "step 0" - var num=Math.min(5,game.countPlayer()); - if(player.hasSkill('yizhi')&&player.hasSkill('guanxing')){ - num=5; - } - var cards=get.cards(num); - game.cardsGotoOrdering(cards); - var next=player.chooseToMove(); + async content(event,trigger,player){ + const num=player.hasSkill('yizhi')&&player.hasSkill('guanxing')?5:Math.min(5,game.countPlayer()); + const cards=get.cards(num); + await game.cardsGotoOrdering(cards).toPromise(); + const next=player.promises.chooseToMove(); next.set('list',[ ['牌堆顶',cards], ['牌堆底'], ]); next.set('prompt','观星:点击将牌移动到牌堆顶或牌堆底'); - next.processAI=function(list){ - var cards=list[0][1],player=_status.event.player; - var top=[]; - var judges=player.getCards('j'); - var stopped=false; + next.processAI=list=>{ + const cards=list[0][1],player=_status.event.player; + const top=[]; + const judges=player.getCards('j'); + let stopped=false; if(!player.hasWuxie()){ - for(var i=0;ijudge(b)-judge(a)); if(judge(cards[0])<0){ stopped=true;break; } @@ -1125,11 +1119,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } } } - var bottom; + let bottom; if(!stopped){ - cards.sort(function(a,b){ - return get.value(b,player)-get.value(a,player); - }); + cards.sort((a,b)=>get.value(b,player)-get.value(a,player)); while(cards.length){ if(get.value(cards[0],player)<=5) break; top.unshift(cards.shift()); @@ -1138,22 +1130,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ bottom=cards; return [top,bottom]; } - "step 1" - var top=result.moved[0]; - var bottom=result.moved[1]; + const {result:{moved}}=await next; + const top=moved[0]; + const bottom=moved[1]; top.reverse(); - game.cardsGotoPile( + await game.cardsGotoPile( top.concat(bottom), ['top_cards',top], - function(event,card){ + (event,card)=>{ if(event.top_cards.includes(card)) return ui.cardPile.firstChild; return null; } - ) + ).toPromise(); player.popup(get.cnNumber(top.length)+'上'+get.cnNumber(bottom.length)+'下'); game.log(player,'将'+get.cnNumber(top.length)+'张牌置于牌堆顶'); - "step 2" - game.delayx(); + await game.asyncDelayx(); }, ai:{ threaten:1.2 From 9cf1d6334ea5beb6da0163e56426dfef6e2cf8b0 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:31:03 +0800 Subject: [PATCH 118/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85longdan?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index 20f09ab80..e61a5eb16 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1198,8 +1198,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!get.zhu(player,'shouyue')) return false; return event.skill=='longdan_sha'||event.skill=='longdan_shan'; }, - content:function(){ - player.draw(); + async content(event,trigger,player){ + await player.promises.draw(); player.storage.fanghun2++; } }, From 8a044c6292941051ac5ea8182602423105d1623c Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:33:54 +0800 Subject: [PATCH 119/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85tieji?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/character/standard.js b/character/standard.js index e61a5eb16..86eebe67f 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1294,9 +1294,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, logTarget:'target', preHidden:true, - content:function(){ - "step 0" - player.judge(function(card){ + async content(event,trigger,player){ + const judgeEvent=player.promises.judge(card=>{ if(get.zhu(_status.event.player,'shouyue')){ if(get.suit(card)!='spade') return 2; } @@ -1304,11 +1303,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.color(card)=='red') return 2; } return -0.5; - }).judge2=function(result){ - return result.bool; - }; - "step 1" - if(result.bool){ + }); + judgeEvent.judge2=result=>result.bool; + const {result:{bool}}=await judgeEvent; + if(bool){ trigger.getParent().directHit.add(trigger.target); } }, From 72e0d6274db9c6442e7a5ce09b062affe4c9a6a2 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:34:27 +0800 Subject: [PATCH 120/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85jizhi?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index 86eebe67f..4bef811cb 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1326,8 +1326,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event){ return (get.type(event.card)=='trick'&&event.card.isCard); }, - content:function(){ - player.draw(); + async content(event,trigger,player){ + await player.promises.draw(); }, ai:{ threaten:1.4, From 8957b3920f76f1867b6da719a4f4446d5c1111bc Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:37:13 +0800 Subject: [PATCH 121/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xinjizhi?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/character/standard.js b/character/standard.js index 4bef811cb..ce562169e 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1346,25 +1346,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ init:function(player){ player.storage.xinjizhi=0; }, - content:function(){ - 'step 0' - player.draw(); - 'step 1' + async content(event, trigger, player){ + const {result}=await player.promises.draw(); if(get.is.altered('xinjizhi')&&get.type(result[0])=='basic'){ event.card=result[0]; - player.chooseBool('是否弃置'+get.translation(event.card)+'并令本回合手牌上限+1?').set('ai',function(evt,player){ + const {result:{bool}}=await player.promises.chooseBool('是否弃置'+get.translation(event.card)+'并令本回合手牌上限+1?').set('ai',(evt,player)=>{ return _status.currentPhase==player&&player.needsToDiscard(-3)&&_status.event.value<6; }).set('value',get.value(event.card,player)); - } - else{ - event.finish(); - } - 'step 2' - if(result.bool){ - player.discard(event.card); - player.storage.xinjizhi++; - if(_status.currentPhase==player){ - player.markSkill('xinjizhi'); + if(bool){ + player.discard(event.card); + player.storage.xinjizhi++; + if(_status.currentPhase==player){ + player.markSkill('xinjizhi'); + } } } }, @@ -1388,7 +1382,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ clear:{ trigger:{global:'phaseAfter'}, silent:true, - content:function(){ + async content(event, trigger, player){ player.storage.xinjizhi=0; player.unmarkSkill('xinjizhi'); } From f58869b8b6330eadb7ac76a84266017f6ab6d19a Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:40:47 +0800 Subject: [PATCH 122/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xinzhiheng?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/character/standard.js b/character/standard.js index ce562169e..578dd8118 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1438,11 +1438,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 6-get.value(card) }, delay:0, - content:function(){ - 'step 0' - if(!player.hasSkill('xinzhiheng_delay')) game.delayx(); - 'step 1' - player.draw(cards.length); + async content(event,trigger,player){ + if(!player.hasSkill('xinzhiheng_delay')) await game.asyncDelayx(); + await player.draw(event.cards.length); }, group:'xinzhiheng_draw', subSkill:{ @@ -1458,7 +1456,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } return false; }, - content:function(){ + async content(event,trigger,player){ player.draw(); player.addTempSkill('xinzhiheng_delay','xinzhihengAfter'); } From 133d7263bbd40b3f5a50cf90c8ac38d9ad60312b Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:41:12 +0800 Subject: [PATCH 123/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85zhiheng?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index 578dd8118..4c934cbe8 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1498,8 +1498,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ check:function(card){ return 6-get.value(card) }, - content:function(){ - player.draw(cards.length); + async content(event,trigger,player){ + player.draw(event.cards.length); }, ai:{ order:1, From aa61be899f3a1b2b3cf684427eeb29da2f3ab3f4 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:41:28 +0800 Subject: [PATCH 124/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85jiuyuan?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index 4c934cbe8..2c62cd2e4 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1521,7 +1521,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(event.player.group!='wu') return false; return true; }, - content:function(){ + async content(event,trigger,player){ trigger.baseDamage++; } }, From e7f8e89d5c1f35ef6df2e004d86a287f9d7482b6 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:42:11 +0800 Subject: [PATCH 125/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xinjiuyuan?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index 2c62cd2e4..360ce1bc6 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1540,8 +1540,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(event.player.group!='wu') return false; return true; }, - content:function(){ - player.recover(); + async content(event,trigger,player){ + await player.promises.recover(); }, global:'xinjiuyuan2', }, From 9fc9ebe5470ee8d74f39d20c2a7258a2e6bcd61b Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:46:03 +0800 Subject: [PATCH 126/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xinjiuyuan2?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/character/standard.js b/character/standard.js index 360ce1bc6..8e1805dbc 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1557,29 +1557,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); }, direct:true, - content:function(){ - 'step 0' - var list=game.filterPlayer(function(target){ - return player!=target&&target.isDamaged()&&target.hpplayer!=target&&target.isDamaged()&&target.hp0){ + const current=event.list.shift(); event.current=current; - player.chooseBool(get.prompt('xinjiuyuan',current)).set('choice',get.attitude(player,current)>0); + const {result:{bool}}=await player.promises.chooseBool(get.prompt('xinjiuyuan',current)).set('choice',get.attitude(player,current)>0); + if(bool){ + player.logSkill('xinjiuyuan',event.current); + await event.current.promises.recover(); + await player.promises.draw(); + } } - else{ - event.finish(); - } - 'step 2' - if(result.bool){ - player.logSkill('xinjiuyuan',event.current); - event.current.recover(); - player.draw(); - } - event.goto(1); } }, qixi:{ From bd4fe272a24f98110974a810f6e4e7e32cf2d3d0 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:48:28 +0800 Subject: [PATCH 127/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xinjizhi?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E5=88=A0=E9=99=A4alter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 42 ++---------------------------------------- 1 file changed, 2 insertions(+), 40 deletions(-) diff --git a/character/standard.js b/character/standard.js index 8e1805dbc..4f51e93ab 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1340,54 +1340,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ frequent:true, // alter:true, filter:function(event){ - if(!get.is.altered('xinjizhi')&&get.type(event.card)=='delay') return false; + if(get.type(event.card)=='delay') return false; return (get.type(event.card,'trick')=='trick'&&event.cards[0]&&event.cards[0]==event.card); }, - init:function(player){ - player.storage.xinjizhi=0; - }, async content(event, trigger, player){ - const {result}=await player.promises.draw(); - if(get.is.altered('xinjizhi')&&get.type(result[0])=='basic'){ - event.card=result[0]; - const {result:{bool}}=await player.promises.chooseBool('是否弃置'+get.translation(event.card)+'并令本回合手牌上限+1?').set('ai',(evt,player)=>{ - return _status.currentPhase==player&&player.needsToDiscard(-3)&&_status.event.value<6; - }).set('value',get.value(event.card,player)); - if(bool){ - player.discard(event.card); - player.storage.xinjizhi++; - if(_status.currentPhase==player){ - player.markSkill('xinjizhi'); - } - } - } + await player.promises.draw(); }, ai:{ threaten:1.4, noautowuxie:true, }, - mod:{ - maxHandcard:function(player,num){ - if(get.is.altered('xinjizhi')&&_status.currentPhase==player){ - return num+player.storage.xinjizhi; - } - return num; - } - }, - intro:{ - content:'本回合手牌上限+#' - }, - group:'xinjizhi_clear', - subSkill:{ - clear:{ - trigger:{global:'phaseAfter'}, - silent:true, - async content(event, trigger, player){ - player.storage.xinjizhi=0; - player.unmarkSkill('xinjizhi'); - } - } - } }, qicai:{ mod:{ From 6cfc6f09a4b4fbee8a15d8d7ac59e7883d4de93d Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:49:08 +0800 Subject: [PATCH 128/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85keji?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index 4f51e93ab..d15d9c156 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1563,7 +1563,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } return true; }, - content:function(){ + async content(event,trigger,player){ trigger.cancel(); } }, From a160e4e065aa0ae93d2f3e59a3a74e3b3c20f063 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:50:43 +0800 Subject: [PATCH 129/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85kurou?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/character/standard.js b/character/standard.js index d15d9c156..a710170d0 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1571,11 +1571,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, enable:'phaseUse', prompt:'失去1点体力并摸两张牌', - content:function(){ - "step 0" - player.loseHp(1); - "step 1" - player.draw(2); + async content(event,trigger,player){ + await player.promises.loseHp(1); + await player.promises.draw(2); }, ai:{ basic:{ From 93271e4676c30d82377d06896256dd1b5b42f8a5 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:51:08 +0800 Subject: [PATCH 130/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85yingzi?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index a710170d0..d8ebb3e35 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1596,7 +1596,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:function(event,player){ return !event.numFixed; }, - content:function(){ + async content(event,trigger,player){ trigger.num++; }, ai:{ From 29e6c17a08e0120827a9e96194b5cc9041400f96 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 14:54:03 +0800 Subject: [PATCH 131/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85fanjian?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/character/standard.js b/character/standard.js index d8ebb3e35..9274e17fa 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1613,9 +1613,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filterTarget:function(card,player,target){ return player!=target; }, - content:function(){ - "step 0" - target.chooseControl('heart2','diamond2','club2','spade2').set('ai',function(event){ + async content(event,trigger,player){ + const target=event.target; + const {result:{control}}=await target.promises.chooseControl('heart2','diamond2','club2','spade2').set('ai',event=>{ switch(Math.floor(Math.random()*6)){ case 0:return 'heart2'; case 1:case 4:case 5:return 'diamond2'; @@ -1623,13 +1623,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ case 3:return 'spade2'; } }); - "step 1" - game.log(target,'选择了'+get.translation(result.control)); - event.choice=result.control; + game.log(target,'选择了'+get.translation(control)); + event.choice=control; target.chat('我选'+get.translation(event.choice)); - target.gainPlayerCard(player,true,'h'); - "step 2" - if(result.bool&&get.suit(result.cards[0],player)+'2'!=event.choice) target.damage('nocard'); + const {result:{bool,cards}}=await target.promises.gainPlayerCard(player,true,'h'); + if(bool&&get.suit(cards[0],player)+'2'!=event.choice) await target.promises.damage('nocard'); }, ai:{ order:1, From ee7c41a849b845642054ea9baa452d8d7e727f22 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:16:41 +0800 Subject: [PATCH 132/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85liuli?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/character/standard.js b/character/standard.js index 9274e17fa..9ab79254e 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1678,22 +1678,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ current!=player&&lib.filter.targetEnabled(event.card,event.player,current); }); }, - content:function(){ - "step 0" - var next=player.chooseCardTarget({ + async content(event,trigger,player){ + const {result:{bool,targets,cards}}=await player.promises.chooseCardTarget({ position:'he', filterCard:lib.filter.cardDiscardable, - filterTarget:function(card,player,target){ - var trigger=_status.event; + filterTarget:(card,player,target)=>{ + const trigger=_status.event; if(player.inRange(target)&&target!=trigger.source){ if(lib.filter.targetEnabled(trigger.card,trigger.source,target)) return true; } return false; }, - ai1:function(card){ - return get.unuseful(card)+9; - }, - ai2:function(target){ + ai1:card=>get.unuseful(card)+9, + ai2:target=>{ if(_status.event.player.countCards('h','shan')){ return -get.attitude(_status.event.player,target); } @@ -1713,12 +1710,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ source:trigger.player, card:trigger.card, }).setHiddenSkill(event.name); - "step 1" - if(result.bool){ - var target=result.targets[0]; + if(bool){ + const target=targets[0]; player.logSkill(event.name,target); - player.discard(result.cards); - var evt=trigger.getParent(); + await player.promises.discard(cards); + const evt=trigger.getParent(); evt.triggeredTargets2.remove(player); evt.targets.remove(player); evt.targets.push(target); From 4be531224ef833a6672c1f24a0ae370696ef390c Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:18:07 +0800 Subject: [PATCH 133/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85lianying?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index 9ab79254e..e33794d56 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1767,8 +1767,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var evt=event.getl(player); return evt&&evt.player==player&&evt.hs&&evt.hs.length>0; }, - content:function(){ - player.draw(); + async content(event,trigger,player){ + await player.promises.draw(); }, ai:{ threaten:0.8, From e2664760dd1d83b773506efafd9a1f68187bbf32 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:26:42 +0800 Subject: [PATCH 134/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xiaoji?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96yiji=E6=8A=80=E8=83=BD=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/character/standard.js b/character/standard.js index e33794d56..1bb078e9d 100755 --- a/character/standard.js +++ b/character/standard.js @@ -554,7 +554,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ async content(event,trigger,player){ event.count=trigger.num; // event.goto -> while - while(event.count>0){ + while(true){ event.count--; const {cards}=await game.cardsGotoOrdering(get.cards(2)).toPromise(); if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true}); @@ -1797,20 +1797,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var evt=event.getl(player); return evt&&evt.player==player&&evt.es&&evt.es.length>0; }, - content:function(){ - "step 0" + async content(event,trigger,player){ event.count=trigger.getl(player).es.length; - "step 1" - event.count--; - player.draw(2); - "step 2" - if(event.count>0&&player.hasSkill(event.name)&&!get.is.blocked(event.name,player)){ - player.chooseBool(get.prompt2('xiaoji')).set('frequentSkill','xiaoji').ai=lib.filter.all; - } - "step 3" - if(result.bool){ - player.logSkill('xiaoji'); - event.goto(1); + while(true){ + event.count--; + await player.promises.draw(2); + if(event.count>0&&player.hasSkill(event.name)&&!get.is.blocked(event.name,player)){ + const chooseBoolEvent=player.promises.chooseBool(get.prompt2('xiaoji')).set('frequentSkill','xiaoji'); + chooseBoolEvent.ai=lib.filter.all; + const {result:{bool}}=await chooseBoolEvent; + if(bool){ + player.logSkill('xiaoji'); + }else break; + } } }, ai:{ From 2fa474b4e7e4167abfcf33f9fe7e2b18fd7c73e7 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:27:37 +0800 Subject: [PATCH 135/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85jieyin?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/character/standard.js b/character/standard.js index 1bb078e9d..b4c75ec1a 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1842,9 +1842,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(target==player) return false; return true; }, - content:function(){ - player.recover(); - target.recover(); + async content(event,trigger,player){ + await player.promises.recover(); + await event.target.promises.recover(); }, ai:{ order:5.5, From e1aaf6037bb3e0c87bb9ad80972e955480f46fa4 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:31:52 +0800 Subject: [PATCH 136/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xinjieyin?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/character/standard.js b/character/standard.js index b4c75ec1a..c8d037ad6 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1901,23 +1901,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){ discard:false, delay:0, lose:false, - content:function(){ - 'step 0' + async content(event,trigger,player){ + const {cards,target}=event; if(get.position(cards[0])=='e'){ player.$give(cards,target); - target.equip(cards[0]); + await target.promises.equip(cards[0]); } else{ - player.discard(cards); + await player.promises.discard(cards); } - 'step 1' if(player.hp>target.hp){ - player.draw(); - if(target.isDamaged()) target.recover(); + await player.promises.draw(); + if(target.isDamaged()) await target.promises.recover(); } else if(player.hp Date: Sat, 9 Dec 2023 15:32:16 +0800 Subject: [PATCH 137/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85qingnang?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index c8d037ad6..fe7341a22 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2013,8 +2013,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(target.hp>=target.maxHp) return false; return true; }, - content:function(){ - target.recover(); + async content(event,trigger,player){ + await event.target.promises.recover(); }, ai:{ order:9, From 97887dcc585c89ffbf04df7fdf1ba0d28816c409 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:33:20 +0800 Subject: [PATCH 138/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85wushuang1?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/character/standard.js b/character/standard.js index fe7341a22..44dd5e943 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2087,9 +2087,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, //priority:-1, logTarget:'target', - content:function(){ - var id=trigger.target.playerid; - var map=trigger.getParent().customArgs; + async content(event,trigger,player){ + const id=trigger.target.playerid; + const map=trigger.getParent().customArgs; if(!map[id]) map[id]={}; if(typeof map[id].shanRequired=='number'){ map[id].shanRequired++; From 9c9f9d04c2e880ae2471b704f5e1085d221be094 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:33:51 +0800 Subject: [PATCH 139/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85wushuang2?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/character/standard.js b/character/standard.js index 44dd5e943..0368e29bd 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2117,10 +2117,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return event.card.name=='juedou'; }, //priority:-1, - content:function(){ - var id=(player==trigger.player?trigger.target:trigger.player)['playerid']; - var idt=trigger.target.playerid; - var map=trigger.getParent().customArgs; + async content(event,trigger,player){ + const id=(player==trigger.player?trigger.target:trigger.player)['playerid']; + const idt=trigger.target.playerid; + const map=trigger.getParent().customArgs; if(!map[idt]) map[idt]={}; if(!map[idt].shaReq) map[idt].shaReq={}; if(!map[idt].shaReq[id]) map[idt].shaReq[id]=1; From 4247130d288381d9647a8109f9751ea8f4b1a7d1 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:37:00 +0800 Subject: [PATCH 140/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85zhanshen?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/character/standard.js b/character/standard.js index 0368e29bd..ce746cc32 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2144,11 +2144,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return target.isFriendOf(player); }).length>0 }, - content:function(){ + async content(event,trigger,player){ player.awakenSkill('zhanshen'); - var card=player.getEquips(1); - if(cards.length) player.discard(card); - player.loseMaxHp(); + const cards=player.getEquips(1); + if(cards.length) await player.promises.discard(cards); + await player.promises.loseMaxHp(); player.addSkill('mashu'); player.addSkill('shenji'); }, From 4c18380ea3b9737d3447eb0f69be081bbdd49082 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:39:00 +0800 Subject: [PATCH 141/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85lijian?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/character/standard.js b/character/standard.js index ce746cc32..be97c5996 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2189,9 +2189,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ targetprompt:['先出杀','后出杀'], selectTarget:2, multitarget:true, - content:function(){ - targets[1].useCard({name:'juedou',isCard:true},'nowuxie',targets[0],'noai').animate=false; - game.delay(0.5); + async content(event,trigger,player){ + const useCardEvent=event.targets[1].useCard({name:'juedou',isCard:true},'nowuxie',event.targets[0],'noai'); + useCardEvent.animate = false; + await useCardEvent; + await game.asyncDelay(0.5); }, ai:{ order:8, From 7e6b94cf738aaa686454f8bda08abb4638689877 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:39:36 +0800 Subject: [PATCH 142/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85biyue?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index be97c5996..63268c6fb 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2216,8 +2216,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseJieshuBegin'}, frequent:true, preHidden:true, - content:function(){ - player.draw(); + async content(event,trigger,player){ + await player.promise.draw(); }, }, xinbiyue:{ From 3fb277914aed4464cea5e129073c149f5eea4f30 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:40:55 +0800 Subject: [PATCH 143/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xinbiyue?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/character/standard.js b/character/standard.js index 63268c6fb..39c60f9eb 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2225,12 +2225,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'phaseJieshuBegin'}, frequent:true, // alter:true, - content:function(){ - var num=1; - if(get.is.altered('xinbiyue')&&!player.countCards('h')){ - num=2; - } - player.draw(num); + async content(event,trigger,player){ + await player.promise.draw(1); }, }, yaowu:{ From 395131abb188d25ae392b0fe440d4e9f070ba530 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:41:40 +0800 Subject: [PATCH 144/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85yaowu?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index 39c60f9eb..8f1f4368a 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2243,8 +2243,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ check:function(){ return false; }, - content:function(){ - trigger.source.chooseDrawRecover(true); + async content(event,trigger,player){ + await trigger.source.promise.chooseDrawRecover(true); }, ai:{ effect:{ From 78b159049f06e644ff9d2c26547a6ef3127029a1 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:44:57 +0800 Subject: [PATCH 145/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85new=5Fjiangc?= =?UTF-8?q?hi=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content,=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E4=B8=A4=E5=A4=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/character/standard.js b/character/standard.js index 8f1f4368a..d3226aa18 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2217,7 +2217,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ frequent:true, preHidden:true, async content(event,trigger,player){ - await player.promise.draw(); + await player.promises.draw(); }, }, xinbiyue:{ @@ -2226,7 +2226,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ frequent:true, // alter:true, async content(event,trigger,player){ - await player.promise.draw(1); + await player.promises.draw(1); }, }, yaowu:{ @@ -2244,7 +2244,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return false; }, async content(event,trigger,player){ - await trigger.source.promise.chooseDrawRecover(true); + await trigger.source.promises.chooseDrawRecover(true); }, ai:{ effect:{ @@ -2262,13 +2262,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player:"phaseDrawEnd", }, direct:true, - content:function (){ - "step 0" - var list=['弃牌','摸牌','取消']; + async content(event,trigger,player){ + const list=['弃牌','摸牌','取消']; if(!player.countCards('he')) list.remove('弃牌'); - player.chooseControl(list,function(){ - var player=_status.event.player; - if(list.contains('弃牌')){ + const {result:{control}}=await player.promises.chooseControl(list,()=>{ + const player=_status.event.player; + if(list.includes('弃牌')){ if(player.countCards('h')>3&&player.countCards('h','sha')>1){ return '弃牌'; } @@ -2281,14 +2280,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } return 'cancel2'; }).set('prompt',get.prompt2('new_jiangchi')); - "step 1" - if(result.control=='弃牌'){ - player.chooseToDiscard(true,'he'); + if(control=='弃牌'){ + await player.promises.chooseToDiscard(true,'he'); player.addTempSkill('jiangchi2','phaseUseEnd'); player.logSkill('new_jiangchi'); } - else if(result.control=='摸牌'){ - player.draw(); + else if(control=='摸牌'){ + await player.promises.draw(); player.addTempSkill('new_jiangchi3','phaseEnd'); player.logSkill('new_jiangchi'); } From 093507cc9d6fb7d3b0d0dbe9c52eb08b62d6d38a Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:47:51 +0800 Subject: [PATCH 146/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xinfu=5Fjiji?= =?UTF-8?q?e=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/character/standard.js b/character/standard.js index d3226aa18..658c05174 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2316,13 +2316,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ enable:"phaseUse", usable:1, audio:2, - content:function(){ - 'step 0' - var card=get.bottomCards()[0]; - game.cardsGotoOrdering(card); + async content(event,trigger,player){ + const card=get.bottomCards()[0]; + await game.cardsGotoOrdering(card).toPromise(); event.card=card; - player.chooseTarget(true).set('ai',function(target){ - var att=get.attitude(_status.event.player,target); + const {result:{bool,targets}}=await player.promises.chooseTarget(true).set('ai',target=>{ + let att=get.attitude(_status.event.player,target); if(_status.event.du){ if(target.hasSkillTag('nodu')) return 0.5; return -att; @@ -2336,12 +2335,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ '机捷:选择一名角色获得此牌', [card] ]); - 'step 1' - if(result.bool){ - var target=result.targets[0]; + if(bool){ + const target=targets[0]; player.line(target,'green'); - var next=target.gain(card,'draw'); - next.giver=player; + const gainEvent=target.promises.gain(card,'draw'); + gainEvent.giver=player; + await gainEvent; } }, ai:{ From cac9ab08f00ad8c951f9e7aa8a39557c41aeec4b Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:50:45 +0800 Subject: [PATCH 147/302] =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=85xinfu=5Fjiyu?= =?UTF-8?q?an=E6=8A=80=E8=83=BD=E4=BD=BF=E7=94=A8async=20content?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/character/standard.js b/character/standard.js index 658c05174..d005526fe 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2366,25 +2366,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); }, direct:true, - content:function(){ - 'step 0' + async content(event,trigger,player){ if(trigger.name!='loseAsync') event.targets=[trigger.player]; - else event.targets=game.filterPlayer(function(current){ - return current!=player&&trigger.getg(current).length>0; - }); - 'step 1' - var target=event.targets.shift(); - event.target=target; - player.chooseBool(get.prompt2('xinfu_jiyuan',target)).set('ai',function(){ - var evt=_status.event; - return get.attitude(player,evt.getParent().target)>0; - }); - 'step 2' - if(result.bool){ - player.logSkill('xinfu_jiyuan',target); - target.draw(); - } - if(targets.length>0) event.goto(1); + else event.targets=game.filterPlayer(current=>current!=player&&trigger.getg(current).length>0); + do{ + const target=event.targets.shift(); + event.target=target; + const {result:{bool}}=await player.promises.chooseBool(get.prompt2('xinfu_jiyuan',target)).set('ai',()=>{ + const evt=_status.event; + return get.attitude(player,evt.getParent().target)>0; + }); + if(bool){ + player.logSkill('xinfu_jiyuan',target); + await target.promises.draw(); + } + }while(event.targets.length>0); }, }, }, From b6a395c3b00fdf83b83c0ff95614d2879c103eb8 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Sat, 9 Dec 2023 15:54:46 +0800 Subject: [PATCH 148/302] =?UTF-8?q?=E9=AB=98=E6=9C=9B=E3=80=90=E5=AE=89?= =?UTF-8?q?=E5=BC=B1=EF=BC=88=E5=B7=B2=E5=BA=9F=E5=BC=83=EF=BC=89=E3=80=91?= =?UTF-8?q?bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/mobile.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/mobile.js b/character/mobile.js index cf0588a74..90a1c44bf 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -2718,7 +2718,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' var trigger=event.getParent().getTrigger(); if(trigger.name=='useCard'){ - var target=lib.skill.chongzhen1.logTarget(trigger,player); + var target=lib.skill.chongzhen.logTarget(trigger,player); } else{ var target=trigger.source; From 5bdafa9de25fb1d25cf95f962afeaf6dd9abb954 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 15:55:55 +0800 Subject: [PATCH 149/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dstdkuangfu=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E6=B2=A1=E4=BD=BF=E7=94=A8await=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/character/standard.js b/character/standard.js index d005526fe..ca3a24aa1 100755 --- a/character/standard.js +++ b/character/standard.js @@ -121,8 +121,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return player.isPhaseUsing()&&event.card&&event.card.name=='sha'&&event.player!=player&&event.player.isIn(); }, async content(event,trigger,player){ - if(trigger.player.hp Date: Sat, 9 Dec 2023 15:58:05 +0800 Subject: [PATCH 150/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dtuxi=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E6=B2=A1=E4=BD=BF=E7=94=A8game.delay=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index ca3a24aa1..e8d18d97c 100755 --- a/character/standard.js +++ b/character/standard.js @@ -484,7 +484,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.logSkill('tuxi',targets); await player.promises.gainMultiple(targets); trigger.changeToZero(); - game.delay(); + await game.asyncDelay(); }, ai:{ threaten:2, From 8195f4f3db9530a137254a2d1327e96320e4ad8c Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 16:03:35 +0800 Subject: [PATCH 151/302] =?UTF-8?q?xinqicai=E6=8A=80=E8=83=BD=E5=88=A0?= =?UTF-8?q?=E9=99=A4alter=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/character/standard.js b/character/standard.js index e8d18d97c..7ef2ca5c5 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1365,12 +1365,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ targetInRange:function(card,player,target,now){ var type=get.type(card); if(type=='trick'||type=='delay') return true; - }, - canBeDiscarded:function(card){ - if(get.is.altered('xinqicai')&&get.position(card)=='e') return false; - }, - cardDiscardable:function(card){ - if(get.is.altered('xinqicai')&&get.position(card)=='e') return false; } }, }, From 9480300dd20c7a03cdc3fab7d5f4d7ca6ce2ad7f Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 16:04:19 +0800 Subject: [PATCH 152/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dxinzhiheng=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E6=B2=A1=E4=BD=BF=E7=94=A8promises=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index 7ef2ca5c5..c406b390f 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1396,7 +1396,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ delay:0, async content(event,trigger,player){ if(!player.hasSkill('xinzhiheng_delay')) await game.asyncDelayx(); - await player.draw(event.cards.length); + await player.promises.draw(event.cards.length); }, group:'xinzhiheng_draw', subSkill:{ From bbf5e455cd5e3e37b2e12cb57e438fe9cbcae77d Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 16:04:41 +0800 Subject: [PATCH 153/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dzhiheng=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E6=B2=A1=E4=BD=BF=E7=94=A8promises=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index c406b390f..3eddb5c38 100755 --- a/character/standard.js +++ b/character/standard.js @@ -1455,7 +1455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 6-get.value(card) }, async content(event,trigger,player){ - player.draw(event.cards.length); + await player.promises.draw(event.cards.length); }, ai:{ order:1, From 75474dfd2e9047c2fa28bff97ad0590162e8170a Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 16:07:20 +0800 Subject: [PATCH 154/302] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dlijian=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E7=9A=84=E7=BC=A9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/character/standard.js b/character/standard.js index 3eddb5c38..892b61ff6 100755 --- a/character/standard.js +++ b/character/standard.js @@ -2185,7 +2185,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ multitarget:true, async content(event,trigger,player){ const useCardEvent=event.targets[1].useCard({name:'juedou',isCard:true},'nowuxie',event.targets[0],'noai'); - useCardEvent.animate = false; + useCardEvent.animate=false; await useCardEvent; await game.asyncDelay(0.5); }, From 2da3b7423e9f9385c265cb837f62bae97287a7cf Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 16:36:54 +0800 Subject: [PATCH 155/302] =?UTF-8?q?=E4=BC=98=E5=8C=96jijiang1=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E7=9A=84=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/character/standard.js b/character/standard.js index 892b61ff6..0fdab6f3a 100755 --- a/character/standard.js +++ b/character/standard.js @@ -932,7 +932,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ delete trigger.skill; trigger.getParent().set('jijiang',true); while(true){ - let bool,card,cards; if(event.current==undefined) event.current=player.next; if(event.current==player){ player.addTempSkill('jijiang3'); @@ -941,17 +940,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return; } else if(event.current.group=='shu'){ - const next=event.current.promises.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'}); - next.set('ai',()=>{ + const chooseToRespondEvent=event.current.promises.chooseToRespond('是否替'+get.translation(player)+'打出一张杀?',{name:'sha'}); + chooseToRespondEvent.set('ai',()=>{ const event=_status.event; return (get.attitude(event.player,event.source)-2); }); - next.set('source',player); - next.set('jijiang',true); - next.set('skillwarn','替'+get.translation(player)+'打出一张杀'); - next.noOrdering=true; - next.autochoose=lib.filter.autoRespondSha; - ({bool,card,cards}=(await next).result); + chooseToRespondEvent.set('source',player); + chooseToRespondEvent.set('jijiang',true); + chooseToRespondEvent.set('skillwarn','替'+get.translation(player)+'打出一张杀'); + chooseToRespondEvent.noOrdering=true; + chooseToRespondEvent.autochoose=lib.filter.autoRespondSha; + const {bool,card,cards}=(await chooseToRespondEvent).result; if(bool){ trigger.card=card; trigger.cards=cards; From 3f1f0a4514d134723a7a007997e525fd874d1c36 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 16:54:55 +0800 Subject: [PATCH 156/302] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=86=99=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/standard.js | 300 +++++++++++++++++++++--------------------- 1 file changed, 149 insertions(+), 151 deletions(-) diff --git a/character/standard.js b/character/standard.js index 0fdab6f3a..cbac476e5 100755 --- a/character/standard.js +++ b/character/standard.js @@ -117,7 +117,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{source:'damageSource'}, forced:true, usable:1, - filter:function(event,player){ + filter(event,player){ return player.isPhaseUsing()&&event.card&&event.card.name=='sha'&&event.player!=player&&event.player.isIn(); }, async content(event,trigger,player){ @@ -132,7 +132,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:'phaseZhunbeiBegin'}, forced:true, audio:'wangzun', - filter:function(event,player){ + filter(event,player){ return event.player.hp>player.hp; }, logTarget:'player', @@ -168,7 +168,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ rewangzun2:{ onremove:true, mod:{ - maxHandcard:function(player,num){ + maxHandcard(player,num){ return num-player.countMark('rewangzun2'); }, }, @@ -179,7 +179,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ logTarget:'target', audio:'tongji', direct:true, - filter:function(event,player){ + filter(event,player){ return event.card.name=='sha'&&event.player!=player&&!event.targets.contains(player)&& event.target.inRange(player)&&event.target.countCards('he')>0; }, @@ -220,7 +220,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ unique:true, zhuSkill:true, trigger:{player:['chooseToRespondBefore','chooseToUseBefore']}, - filter:function(event,player){ + filter(event,player){ if(event.responded) return false; if(player.storage.hujiaing) return false; if(!player.hasZhuSkill('hujia')) return false; @@ -229,7 +229,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return current!=player&¤t.group=='wei'; }); }, - check:function(event,player){ + check(event,player){ if(get.damageEffect(player,event.player,player)>=0) return false; return true; }, @@ -272,7 +272,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai:{ respondShan:true, - skillTagFilter:function(player){ + skillTagFilter(player){ if(player.storage.hujiaing) return false; if(!player.hasZhuSkill('hujia')) return false; return game.hasPlayer(function(current){ @@ -285,7 +285,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, preHidden:true, trigger:{player:'damageEnd'}, - filter:function(event,player){ + filter(event,player){ return get.itemtype(event.cards)=='cards'&&get.position(event.cards[0],true)=='o'; }, async content(event,trigger,player){ @@ -295,7 +295,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ maixie:true, maixie_hp:true, effect:{ - target:function(card,player,target){ + target(card,player,target){ if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; if(get.tag(card,'damage')) return [1,0.55]; } @@ -307,7 +307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'damageEnd'}, logTarget:'source', preHidden:true, - filter:function(event,player){ + filter(event,player){ return (event.source&&event.source.countGainableCards(player,event.source!=player?'he':'e')&&event.num>0); }, async content(event,trigger,player){ @@ -316,7 +316,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ maixie_defend:true, effect:{ - target:function(card,player,target){ + target(card,player,target){ if(player.countCards('he')>1&&get.tag(card,'damage')){ if(player.hasSkillTag('jueqing',false,target)) return [1,-1.5]; if(get.attitude(target,player)<0) return [1,1]; @@ -330,7 +330,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:'judge'}, direct:true, preHidden:true, - filter:function(event,player){ + filter(event,player){ return player.countCards(get.mode()=='guozhan'?'hes':'hs')>0; }, async content(event,trigger,player){ @@ -383,10 +383,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ganglie:{ audio:2, trigger:{player:'damageEnd'}, - filter:function(event,player){ + filter(event,player){ return (event.source!=undefined); }, - check:function(event,player){ + check(event,player){ return (get.attitude(player,event.source)<=0); }, logTarget:'source', @@ -411,7 +411,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ maixie_defend:true, effect:{ - target:function(card,player,target){ + target(card,player,target){ if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; return 0.8; // if(get.tag(card,'damage')&&get.damageEffect(target,player,player)>0) return [1,0,0,-1.5]; @@ -451,7 +451,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ maixie_defend:true, effect:{ - target:function(card,player,target){ + target(card,player,target){ if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; return 0.8; // if(get.tag(card,'damage')&&get.damageEffect(target,player,player)>0) return [1,0,0,-1.5]; @@ -463,7 +463,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{player:'phaseDrawBegin1'}, direct:true, - filter:function(event,player){ + filter(event,player){ return !event.numFixed; }, async content(event,trigger,player){ @@ -494,7 +494,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ luoyi:{ audio:2, trigger:{player:'phaseDrawBegin2'}, - check:function(event,player){ + check(event,player){ if(player.skipList.includes('phaseUse')||player.countCards('h')<3) return false; if(!player.hasSha()) return false; return game.hasPlayer(function(current){ @@ -502,7 +502,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }); }, preHidden:true, - filter:function(event,player){ + filter(event,player){ return !event.numFixed&&event.num>0; }, async content(event,trigger,player){ @@ -512,7 +512,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, luoyi2:{ trigger:{source:'damageBegin1'}, - filter:function(event){ + filter(event){ return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&&event.notLink(); }, forced:true, @@ -528,16 +528,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audioname:['re_guojia','xizhicai','gz_nagisa'], trigger:{player:'judgeEnd'}, preHidden:true, - frequent:function(event){ + frequent(event){ if(event.result.card.name=='du') return false; //if(get.mode()=='guozhan') return false; return true; }, - check:function(event){ + check(event){ if(event.result.card.name=='du') return false; return true; }, - filter:function(event,player){ + filter(event,player){ return get.position(event.result.card,true)=='o'; }, async content(event,trigger,player){ @@ -548,7 +548,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{player:'damageEnd'}, frequent:true, - filter:function(event){ + filter(event){ return event.num>0; }, async content(event,trigger,player){ @@ -620,7 +620,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ maixie:true, maixie_hp:true, effect:{ - target:function(card,player,target){ + target(card,player,target){ if(get.tag(card,'damage')){ if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; if(!target.hasFriend()) return; @@ -726,7 +726,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, mod:{ - ignoredHandcard:function(card,player){ + ignoredHandcard(card,player){ if(get.is.altered('xinluoshen')&&player.storage.xinluoshen&&player.storage.xinluoshen.contains(card)){ return true; } @@ -745,7 +745,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, qingguo:{ mod:{ - aiValue:function(player,card,num){ + aiValue(player,card,num){ if(get.name(card)!='shan'&&get.color(card)!='black') return; var cards=player.getCards('hs',function(card){ return get.name(card)=='shan'||get.color(card)=='black'; @@ -762,7 +762,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(get.name(card)=='shan') return Math.min(num,[6,4,3][Math.min(geti(),2)])*0.6; return Math.max(num,[6.5,4,3][Math.min(geti(),2)]); }, - aiUseful:function(){ + aiUseful(){ return lib.skill.qingguo.mod.aiValue.apply(this,arguments); }, }, @@ -770,24 +770,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, audioname:['sb_zhenji'], enable:['chooseToRespond','chooseToUse'], - filterCard:function(card){ + filterCard(card){ return get.color(card)=='black'; }, viewAs:{name:'shan'}, - viewAsFilter:function(player){ + viewAsFilter(player){ if(!player.countCards('hs',{color:'black'})) return false; }, position:'hs', prompt:'将一张黑色手牌当闪使用或打出', - check:function(){return 1}, + check(){return 1}, ai:{ order:3, respondShan:true, - skillTagFilter:function(player){ + skillTagFilter(player){ if(!player.countCards('hs',{color:'black'})) return false; }, effect:{ - target:function(card,player,target,current){ + target(card,player,target,current){ if(get.tag(card,'respondShan')&¤t<0) return 0.6 } } @@ -801,10 +801,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ discard:false, lose:false, delay:0, - filterTarget:function(card,player,target){ + filterTarget(card,player,target){ return player!=target; }, - check:function(card){ + check(card){ if(ui.selected.cards.length>1) return 0; if(ui.selected.cards.length&&ui.selected.cards[0].name=='du') return 0; if(!ui.selected.cards.length&&card.name=='du') return 20; @@ -845,14 +845,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(num<2&&num+event.cards.length>1) await player.promises.recover(); }, ai:{ - order:function(skill,player){ + order(skill,player){ if(player.hp1){ return 10; } return 1; }, result:{ - target:function(player,target){ + target(player,target){ if(target.hasSkillTag('nogain')) return 0; if(ui.selected.cards.length&&ui.selected.cards[0].name=='du'){ if(target.hasSkillTag('nodu')) return 0; @@ -868,7 +868,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, effect:{ - target:function(card,player,target){ + target(card,player,target){ if(player==target&&get.type(card)=='equip'){ if(player.countCards('e',{subtype:get.subtype(card)})){ var players=game.filterPlayer(); @@ -897,7 +897,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ unique:true, group:['jijiang1'], zhuSkill:true, - filter:function(event,player){ + filter(event,player){ if(!player.hasZhuSkill('jijiang')||!game.hasPlayer(function(current){ return current!=player&¤t.group=='shu'; })) return false; @@ -905,14 +905,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, enable:['chooseToUse','chooseToRespond'], viewAs:{name:'sha'}, - filterCard:function(){return false}, + filterCard(){return false}, selectCard:-1, ai:{ - order:function(){ + order(){ return get.order({name:'sha'})+0.3; }, respondSha:true, - skillTagFilter:function(player){ + skillTagFilter(player){ if(!player.hasZhuSkill('jijiang')||!game.hasPlayer(function(current){ return current!=player&¤t.group=='shu'; })) return false; @@ -924,7 +924,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audioname:['liushan','re_liubei','re_liushan','ol_liushan'], trigger:{player:['useCardBegin','respondBegin']}, logTarget:'targets', - filter:function(event,player){ + filter(event,player){ return event.skill=='jijiang'; }, forced:true, @@ -971,7 +971,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:['useCardAfter','useSkillAfter','phaseAfter']}, silent:true, charlotte:true, - filter:function(event){ + filter(event){ return event.skill!='jijiang'&&event.skill!='qinwang'; }, async content(event,trigger,player){ @@ -986,13 +986,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, audioname:['re_guanyu','guanzhang','jsp_guanyu','guansuo','re_guanzhang','dc_jsp_guanyu'], enable:['chooseToRespond','chooseToUse'], - filterCard:function(card,player){ + filterCard(card,player){ if(get.zhu(player,'shouyue')) return true; return get.color(card)=='red'; }, position:'hes', viewAs:{name:'sha'}, - viewAsFilter:function(player){ + viewAsFilter(player){ if(get.zhu(player,'shouyue')){ if(!player.countCards('hes')) return false; } @@ -1001,13 +1001,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, prompt:'将一张红色牌当杀使用或打出', - check:function(card){ + check(card){ var val=get.value(card); if(_status.event.name=='chooseToRespond') return 1/Math.max(0.1,val); return 5-val; }, ai:{ - skillTagFilter:function(player){ + skillTagFilter(player){ if(get.zhu(player,'shouyue')){ if(!player.countCards('hes')) return false; } @@ -1027,7 +1027,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ animationColor:'orange', filterCard:true, position:'he', - filter:function(event,player){ + filter(event,player){ return player.countCards('he')>0; }, discard:false, @@ -1043,12 +1043,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, popup:false, logTarget:'source', - filter:function(event,player){ + filter(event,player){ return event.getParent().name=='sha'&&event.source&&event.source.isFriendOf(player); }, async content(event,trigger,player){trigger.num++}, intro:{content:'expansion',markcount:'expansion'}, - onremove:function(player,skill){ + onremove(player,skill){ var cards=player.getExpansions(skill); if(cards.length) player.loseToDiscardpile(cards); }, @@ -1063,20 +1063,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, trigger:{player:'useCard1'}, forced:true, - filter:function(event,player){ + filter(event,player){ return !event.audioed&&event.card.name=='sha'&&player.countUsed('sha',true)>1&&event.getParent().type=='phase'; }, async content(event,trigger,player){ trigger.audioed=true; }, mod:{ - cardUsable:function(card,player,num){ + cardUsable(card,player,num){ if(card.name=='sha') return Infinity; } }, ai:{ unequip:true, - skillTagFilter:function(player,tag,arg){ + skillTagFilter(player,tag,arg){ if(!get.zhu(player,'shouyue')) return false; if(arg&&arg.name=='sha') return true; return false; @@ -1151,7 +1151,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, kongcheng:{ mod:{ - targetEnabled:function(card,player,target,now){ + targetEnabled(card,player,target,now){ if(target.countCards('h')==0){ if(card.name=='sha'||card.name=='juedou') return false; } @@ -1162,7 +1162,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audioname:['re_zhugeliang'], ai:{ noh:true, - skillTagFilter:function(player,tag){ + skillTagFilter(player,tag){ if(tag=='noh'){ if(player.countCards('h')!=1) return false; } @@ -1175,14 +1175,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, firstDo:true, audioname:['re_zhugeliang'], - filter:function(event,player){ + filter(event,player){ if(player.countCards('h')) return false; for(var i=0;i0||arg.card.name!='sha'||!ui.cardPile.firstChild||get.color(ui.cardPile.firstChild,player)!='red') return false; }, }, @@ -1322,7 +1322,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'useCard'}, frequent:true, preHidden:true, - filter:function(event){ + filter(event){ return (get.type(event.card)=='trick'&&event.card.isCard); }, async content(event,trigger,player){ @@ -1338,7 +1338,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'useCard'}, frequent:true, // alter:true, - filter:function(event){ + filter(event){ if(get.type(event.card)=='delay') return false; return (get.type(event.card,'trick')=='trick'&&event.cards[0]&&event.cards[0]==event.card); }, @@ -1352,7 +1352,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, qicai:{ mod:{ - targetInRange:function(card,player,target,now){ + targetInRange(card,player,target,now){ var type=get.type(card); if(type=='trick'||type=='delay') return true; } @@ -1361,7 +1361,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinqicai:{ // alter:true, mod:{ - targetInRange:function(card,player,target,now){ + targetInRange(card,player,target,now){ var type=get.type(card); if(type=='trick'||type=='delay') return true; } @@ -1370,7 +1370,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinzhiheng:{ audio:'zhiheng', mod:{ - aiOrder:function(player,card,num){ + aiOrder(player,card,num){ if(num<=0||get.itemtype(card)!=='card'||get.type(card)!=='equip') return num; let eq=player.getEquip(get.subtype(card)); if(eq&&get.equipValue(card)-get.equipValue(eq)=8; @@ -1402,7 +1402,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ draw:{ trigger:{player:'loseEnd'}, silent:true, - filter:function(event,player){ + filter(event,player){ if(event.getParent(2).skill!='xinzhiheng') return false; if(!get.is.altered('xinzhiheng')) return false; if(player.countCards('h')) return false; @@ -1419,7 +1419,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ delay:{} }, ai:{ - order:function(item,player){ + order(item,player){ if(player.hasCard((i)=>get.value(i)>Math.max(6,9-player.hp),'he')) return 1; return 10; }, @@ -1427,7 +1427,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player:1 }, nokeep:true, - skillTagFilter:function(player,tag,arg){ + skillTagFilter(player,tag,arg){ if(tag==='nokeep') return (!arg||arg&&arg.card&&get.name(arg.card)==='tao')&&player.isPhaseUsing()&&!player.getStat().skill.xinzhiheng&&player.hasCard((card)=>get.name(card)!=='tao','h'); }, threaten:1.55 @@ -1437,7 +1437,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, audioname:['gz_jun_sunquan'], mod:{ - aiOrder:function(player,card,num){ + aiOrder(player,card,num){ if(num<=0||get.itemtype(card)!=='card'||get.type(card)!=='equip') return num; let eq=player.getEquip(get.subtype(card)); if(eq&&get.equipValue(card)-get.equipValue(eq)=player.hp-1) return -1; if(player.hp<3) return -1; return 1; @@ -1586,7 +1586,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audioname:['sp_lvmeng'], trigger:{player:'phaseDrawBegin2'}, frequent:true, - filter:function(event,player){ + filter(event,player){ return !event.numFixed; }, async content(event,trigger,player){ @@ -1600,10 +1600,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, enable:'phaseUse', usable:1, - filter:function(event,player){ + filter(event,player){ return player.countCards('h')>0; }, - filterTarget:function(card,player,target){ + filterTarget(card,player,target){ return player!=target; }, async content(event,trigger,player){ @@ -1625,7 +1625,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ order:1, result:{ - target:function(player,target){ + target(player,target){ var eff=get.damageEffect(target,player); if(eff>=0) return 1+eff; var value=0,i; @@ -1642,17 +1642,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, guose:{ audio:2, - filter:function(event,player){ + filter(event,player){ return player.countCards('hes',{suit:'diamond'})>0; }, enable:'chooseToUse', - filterCard:function(card){ + filterCard(card){ return get.suit(card)=='diamond'; }, position:'hes', viewAs:{name:'lebu'}, prompt:'将一张方片牌当乐不思蜀使用', - check:function(card){return 6-get.value(card)}, + check(card){return 6-get.value(card)}, ai:{ threaten:1.5 } @@ -1663,7 +1663,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{target:'useCardToTarget'}, direct:true, preHidden:true, - filter:function(event,player){ + filter(event,player){ if(event.card.name!='sha') return false; if(player.countCards('he')==0) return false; return game.hasPlayer(function(current){ @@ -1715,7 +1715,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai:{ effect:{ - target:function(card,player,target){ + target(card,player,target){ if(target.countCards('he')==0) return; if(card.name!='sha') return; var min=1; @@ -1742,7 +1742,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, qianxun:{ mod:{ - targetEnabled:function(card,player,target,now){ + targetEnabled(card,player,target,now){ if(card.name=='shunshou'||card.name=='lebu') return false; } }, @@ -1755,7 +1755,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], }, frequent:true, - filter:function(event,player){ + filter(event,player){ if(player.countCards('h')) return false; var evt=event.getl(player); return evt&&evt.player==player&&evt.hs&&evt.hs.length>0; @@ -1766,12 +1766,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ threaten:0.8, effect:{ - target:function(card){ + target(card){ if(card.name=='guohe'||card.name=='liuxinghuoyu') return 0.5; } }, noh:true, - skillTagFilter:function(player,tag){ + skillTagFilter(player,tag){ if(tag=='noh'){ if(player.countCards('h')!=1) return false; } @@ -1786,7 +1786,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], }, frequent:true, - filter:function(event,player){ + filter(event,player){ var evt=event.getl(player); return evt&&evt.player==player&&evt.es&&evt.es.length>0; }, @@ -1809,7 +1809,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ noe:true, reverseEquip:true, effect:{ - target:function(card,player,target,current){ + target(card,player,target,current){ if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; } } @@ -1821,7 +1821,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filterCard:true, usable:1, selectCard:2, - check:function(card){ + check(card){ var player=get.owner(card); if(player.countCards('h')>player.hp) return 8-get.value(card) @@ -1829,7 +1829,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 6-get.value(card) return 4-get.value(card) }, - filterTarget:function(card,player,target){ + filterTarget(card,player,target){ if(!target.hasSex('male')) return false; if(target.hp>=target.maxHp) return false; if(target==player) return false; @@ -1842,7 +1842,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ order:5.5, result:{ - player:function(player){ + player(player){ if(player.hpplayer.hp) return 0 return -1; @@ -1862,11 +1862,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filterCard:true, usable:1, position:'he', - filter:function(event,player){ + filter(event,player){ if(!get.is.altered('xinjieyin')) return false; return player.countCards('he')>0; }, - check:function(card){ + check(card){ var player=_status.event.player; if(get.position(card)=='e'){ var subtype=get.subtype(card); @@ -1884,7 +1884,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 8-get.value(card); } }, - filterTarget:function(card,player,target){ + filterTarget(card,player,target){ if(!target.hasSex('male')) return false; var card=ui.selected.cards[0]; if(!card) return false; @@ -1913,7 +1913,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, ai:{ - order:function(){ + order(){ var player=_status.event.player; var es=player.getCards('e'); for(var i=0;i=2; }, - check:function(card){ + check(card){ var player=get.owner(card); if(player.countCards('h')>player.hp) return 8-get.value(card) @@ -1967,7 +1967,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return 6-get.value(card) return 4-get.value(card) }, - filterTarget:function(card,player,target){ + filterTarget(card,player,target){ if(!target.hasSex('male')) return false; if(target.hp>=target.maxHp) return false; if(target==player) return false; @@ -1980,7 +1980,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ order:5.5, result:{ - player:function(player){ + player(player){ if(player.hpplayer.hp) return 0 return -1; @@ -1999,10 +1999,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ enable:'phaseUse', filterCard:true, usable:1, - check:function(card){ + check(card){ return 9-get.value(card) }, - filterTarget:function(card,player,target){ + filterTarget(card,player,target){ if(target.hp>=target.maxHp) return false; return true; }, @@ -2012,7 +2012,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ order:9, result:{ - target:function(player,target){ + target(player,target){ if(target.hp==1) return 5; if(player==target&&player.countCards('h')>player.hp) return 5; return 2; @@ -2023,7 +2023,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, jijiu:{ mod:{ - aiValue:function(player,card,num){ + aiValue(player,card,num){ if(get.name(card)!='tao'&&get.color(card)!='red') return; var cards=player.getCards('hs',function(card){ return get.name(card)=='tao'||get.color(card)=='red'; @@ -2039,7 +2039,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }; return Math.max(num,[6.5,4,3,2][Math.min(geti(),2)]); }, - aiUseful:function(){ + aiUseful(){ return lib.skill.kanpo.mod.aiValue.apply(this,arguments); }, }, @@ -2047,16 +2047,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, audioname:['re_huatuo'], enable:'chooseToUse', - viewAsFilter:function(player){ + viewAsFilter(player){ return player!=_status.currentPhase&&player.countCards('hes',{color:'red'})>0; }, - filterCard:function(card){ + filterCard(card){ return get.color(card)=='red'; }, position:'hes', viewAs:{name:'tao'}, prompt:'将一张红色牌当桃使用', - check:function(card){return 15-get.value(card)}, + check(card){return 15-get.value(card)}, ai:{ threaten:1.5, } @@ -2075,7 +2075,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audioname:['re_lvbu','shen_lvbu','lvlingqi'], trigger:{player:'useCardToPlayered'}, forced:true, - filter:function(event,player){ + filter(event,player){ return event.card.name=='sha'&&!event.getParent().directHit.contains(event.target); }, //priority:-1, @@ -2093,7 +2093,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai:{ directHit_ai:true, - skillTagFilter:function(player,tag,arg){ + skillTagFilter(player,tag,arg){ if(arg.card.name!='sha'||arg.target.countCards('h','shan')>1) return false; }, }, @@ -2103,10 +2103,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audioname:['re_lvbu','shen_lvbu','lvlingqi'], trigger:{player:'useCardToPlayered',target:'useCardToTargeted'}, forced:true, - logTarget:function(trigger,player){ + logTarget(trigger,player){ return player==trigger.player?trigger.target:trigger.player }, - filter:function(event,player){ + filter(event,player){ return event.card.name=='juedou'; }, //priority:-1, @@ -2121,7 +2121,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, ai:{ directHit_ai:true, - skillTagFilter:function(player,tag,arg){ + skillTagFilter(player,tag,arg){ if(arg.card.name!='juedou'||Math.floor(arg.target.countCards('h','sha')/2)>player.countCards('h','sha')) return false; } } @@ -2132,7 +2132,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ forced:true, skillAnimation:true, animationColor:'gray', - filter:function(event,player){ + filter(event,player){ return player.isDamaged()&&game.dead.filter(function(target){ return target.isFriendOf(player); }).length>0 @@ -2149,11 +2149,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, shenji:{ mod:{ - selectTarget:function(card,player,range){ + selectTarget(card,player,range){ if(range[1]==-1) return; if(card.name=='sha') range[1]+=2; }, - cardUsable:function(card,player,num){ + cardUsable(card,player,num){ if(card.name=='sha') return num+1; } }, @@ -2163,15 +2163,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audioname:['re_diaochan'], enable:'phaseUse', usable:1, - filter:function(event,player){ + filter(event,player){ return game.countPlayer(function(current){ return current!=player&¤t.hasSex('male'); })>1; }, - check:function(card){return 10-get.value(card)}, + check(card){return 10-get.value(card)}, filterCard:true, position:'he', - filterTarget:function(card,player,target){ + filterTarget(card,player,target){ if(player==target) return false; if(!target.hasSex('male')) return false; if(ui.selected.targets.length==1){ @@ -2191,7 +2191,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ai:{ order:8, result:{ - target:function(player,target){ + target(player,target){ if(ui.selected.targets.length==0){ return -3; } @@ -2226,22 +2226,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{player:'damageBegin3'}, //priority:1, audio:2, - filter:function(event){ + filter(event){ if(event.card&&(event.card.name=='sha')){ if(get.color(event.card)=='red') return true; } return false; }, forced:true, - check:function(){ - return false; - }, + check(){return false;}, async content(event,trigger,player){ await trigger.source.promises.chooseDrawRecover(true); }, ai:{ effect:{ - target:function(card,player,target,current){ + target(card,player,target,current){ if(card.name=='sha'&&(get.color(card)=='red')){ return [1,-2]; } @@ -2287,18 +2285,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, new_jiangchi3:{ mod:{ - cardEnabled:function(card){ + cardEnabled(card){ if(card.name=='sha') return false; }, - cardRespondable:function(card){ + cardRespondable(card){ if(card.name=='sha') return false; }, - ignoredHandcard:function(card,player){ + ignoredHandcard(card,player){ if(get.name(card)=='sha'){ return true; } }, - cardDiscardable:function(card,player,name){ + cardDiscardable(card,player,name){ if(name=='phaseDiscard'&&get.name(card)=='sha'){ return false; } @@ -2348,7 +2346,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ global:['dying','gainAfter','loseAsyncAfter'], }, audio:2, - filter:function(event,player){ + filter(event,player){ if(event.name=='dying') return true; if(event.giver!=player) return false; if(event.name=='gain'){ From ad62579b8f13b720d2239fe45d826c64442624ed Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Sat, 9 Dec 2023 19:27:50 +0800 Subject: [PATCH 157/302] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E5=9B=BD=E6=88=98=E6=B8=85=E7=A9=BAlib.chara?= =?UTF-8?q?cterReplace?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mode/guozhan.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mode/guozhan.js b/mode/guozhan.js index 2985b2ef7..559eb26a8 100644 --- a/mode/guozhan.js +++ b/mode/guozhan.js @@ -150,12 +150,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){ else lib.character[i][1]='qun'; } } - lib.characterReplace={}; + //lib.characterReplace={}; },_status.mode,_status.separatism); game.randomMapOL(); } else{ - lib.characterReplace={}; + //lib.characterReplace={}; for(var i=0;i Date: Sat, 9 Dec 2023 20:09:49 +0800 Subject: [PATCH 158/302] =?UTF-8?q?=E5=A2=9E=E5=8A=A0get#stringify?= =?UTF-8?q?=E5=AF=B9=E5=A4=9A=E7=A7=8D=E5=87=BD=E6=95=B0=E5=86=99=E6=B3=95?= =?UTF-8?q?=E7=9A=84=E8=A7=A3=E6=9E=90=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/game/game.js b/game/game.js index c40142075..3ec0ba9ea 100644 --- a/game/game.js +++ b/game/game.js @@ -59934,11 +59934,59 @@ new Promise(resolve=>{ if(get.objtype(obj)=='object'){ str='{\n'; for(var i in obj){ + var insertDefaultString; + var insertFunctionString=indent+' '+get.stringify(obj[i],level+1)+',\n'; + var parseFunction=i=>{ + var string=obj[i].toString(); + var execResult; + if(obj[i] instanceof GeneratorFunction){ + // *content(){} + execResult=new RegExp(`\\*\\s*${i}[\\s\\S]*?\\(`).exec(obj[i]); + if(execResult&&execResult.index===0){ + return insertFunctionString; + } + // content:function*(){} + else{ + return insertDefaultString; + } + } + else if(obj[i] instanceof AsyncFunction){ + execResult=new RegExp(`async\\s*${i}[\\s\\S]*?\\(`).exec(obj[i]); + // async content(){} + if(execResult&&execResult.index===0){ + return insertFunctionString; + } + // content:async function(){} + else{ + return insertDefaultString; + } + }else{ + execResult=new RegExp(`${i}[\\s\\S]*?\\(`).exec(obj[i]); + // content(){} + if(execResult&&execResult.index===0){ + return insertFunctionString; + } + // content:function(){} + else{ + return insertDefaultString; + } + } + }; if(/[^a-zA-Z]/.test(i)){ - str+=indent+' "'+i+'":'+get.stringify(obj[i],level+1)+',\n'; + insertDefaultString=indent+' "'+i+'":'+get.stringify(obj[i],level+1)+',\n'; + if(typeof obj[i]!=='function'){ + str+=insertDefaultString; + }else{ + str+=parseFunction(i); + } } else{ - str+=indent+' '+i+':'+get.stringify(obj[i],level+1)+',\n'; + insertDefaultString=indent+' '+i+':'+get.stringify(obj[i],level+1)+',\n'; + if(typeof obj[i]!=='function'){ + str+=insertDefaultString; + }else{ + str+=parseFunction(i); + } } } str+=indent+'}'; From 45bf4aa20f102b46de4277c88c1cabcc2660a439 Mon Sep 17 00:00:00 2001 From: shijian <2954700422@qq.com> Date: Sat, 9 Dec 2023 20:54:28 +0800 Subject: [PATCH 159/302] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=88=96=E5=BC=95=E7=94=A8=E6=8A=80=E8=83=BD=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=97=B6=E5=87=BA=E7=8E=B0=E7=9A=84=5Fpriority=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/game.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/game/game.js b/game/game.js index 3ec0ba9ea..f17dbdf9a 100644 --- a/game/game.js +++ b/game/game.js @@ -49655,8 +49655,7 @@ new Promise(resolve=>{ } newSkill.querySelector('.new_description').value=page.content.pack.translate[this.link+'_info']; var info=page.content.pack.skill[this.link]; - container.code='skill='+get.stringify(info); - + container.code='skill='+get.stringify(Object.defineProperty({...info}, '_priority', {enumerable:false,writable:true,configurable:true})); toggle.innerHTML='编辑技能
    >
    '; editnode.innerHTML='编辑技能'; editnode.classList.remove('disabled'); @@ -49872,7 +49871,7 @@ new Promise(resolve=>{ skillopt.style.display='none'; addSkillButton.style.display='none'; cancelSkillButton.style.display='none'; - container.code='skill='+get.stringify(lib.skill[skillopt.value]); + container.code='skill='+get.stringify(Object.defineProperty({...lib.skill[skillopt.value]}, '_priority', {enumerable:false,writable:true,configurable:true})); editbutton.onclick.call(editbutton); if(lib.translate[skillopt.value+'_info']){ newSkill.querySelector('input.new_description').value=lib.translate[skillopt.value+'_info']; From b5433f71a9bebec05439ed2546af6e19212801ad Mon Sep 17 00:00:00 2001 From: PZ157 <3619242020@qq.com> Date: Sun, 10 Dec 2023 19:07:30 +0800 Subject: [PATCH 160/302] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=85=B8=E5=AD=99?= =?UTF-8?q?=E6=9D=83=E3=80=90=E5=88=B6=E8=A1=A1=E3=80=91=E5=92=8C=E3=80=90?= =?UTF-8?q?=E9=85=92=E3=80=91ai?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- card/extra.js | 5 +++-- character/collab.js | 13 ++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/card/extra.js b/card/extra.js index d85e983b8..a02ea45bc 100644 --- a/card/extra.js +++ b/card/extra.js @@ -155,10 +155,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ effs[i].eff=temp; return false; }); - if(effs[i].target&&(target.hasSkillTag('directHit_ai',true,{ + if(!effs[i].target) continue; + if(target.hasSkillTag('directHit_ai',true,{ target:effs[i].target, card:i - },true) || target.needsToDiscard()>Math.max(0,3-target.hp) || !effs[i].target.mayHaveShan(player,'use'))){ + },true) || usable===1&&(target.needsToDiscard()>Math.max(0,3-target.hp) || !effs[i].target.mayHaveShan(player,'use'))){ delete target._jiu_temp; return 1; } diff --git a/character/collab.js b/character/collab.js index cc55af7b4..b5dc6b50d 100644 --- a/character/collab.js +++ b/character/collab.js @@ -372,10 +372,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, ai:{ - order:1, + order:function(item,player){ + if(player.hasCard((i)=>{ + return get.value(i)>Math.max(6,9-player.hp); + },'he')) return 1; + return 10; + }, result:{ player:1 }, + nokeep:true, + skillTagFilter:function(player,tag,arg){ + if(tag==='nokeep') return (!arg||arg&&arg.card&&get.name(arg.card)==='tao')&&player.isPhaseUsing()&&player.countSkill('dczhiheng')<1+player.getStorage('dczhiheng_hit').length&&player.hasCard((card)=>{ + return get.name(card)!=='tao'; + },'h'); + }, threaten:1.55 }, }, From 82d6a7be2bda24f442ede9ff76ba9424c6de2228 Mon Sep 17 00:00:00 2001 From: mengxinzxz <2223529500@qq.com> Date: Sun, 10 Dec 2023 23:04:28 +0800 Subject: [PATCH 161/302] =?UTF-8?q?=E5=BC=A0=E8=AE=A9bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- character/diy.js | 4 ++-- character/yijiang.js | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/character/diy.js b/character/diy.js index 01eecb361..6689d1847 100755 --- a/character/diy.js +++ b/character/diy.js @@ -12637,10 +12637,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.getStorage('junktaoluan2').includes(get.suit(card))) return false; if(player.getStorage('junktaoluan').includes(name)) return false; if(get.type(name)!='basic'&&get.type(name)!='trick') return false; - if(event.filterCard({name:name,isCard:true,cards:[card]})) return true; + if(event.filterCard({name:name,isCard:true,cards:[card]},player,event)) return true; if(name=='sha'){ for(var nature of lib.inpile_nature){ - if(event.filterCard({name:name,nature:nature,isCard:true,cards:[card]})) return true; + if(event.filterCard({name:name,nature:nature,isCard:true,cards:[card]},player,event)) return true; } } return false; diff --git a/character/yijiang.js b/character/yijiang.js index c18d6172d..4061d9e8a 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -2681,10 +2681,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return !player.hasSkill('xintaoluan3')&&player.countCards('hes',card=>lib.inpile.some(name=>{ if(player.getStorage('xintaoluan').includes(name)) return false; if(get.type(name)!='basic'&&get.type(name)!='trick') return false; - if(event.filterCard({name:name,isCard:true,cards:[card]})) return true; + if(event.filterCard({name:name,isCard:true,cards:[card]},player,event)) return true; if(name=='sha'){ for(var nature of lib.inpile_nature){ - if(event.filterCard({name:name,nature:nature,isCard:true,cards:[card]})) return true; + if(event.filterCard({name:name,nature:nature,isCard:true,cards:[card]},player,event)) return true; } } return false; @@ -5263,10 +5263,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return !player.hasSkill('taoluan3')&&player.countCards('hes',card=>lib.inpile.some(name=>{ if(player.getStorage('taoluan').includes(name)) return false; if(get.type(name)!='basic'&&get.type(name)!='trick') return false; - if(event.filterCard({name:name,isCard:true,cards:[card]})) return true; + if(event.filterCard({name:name,isCard:true,cards:[card]},player,event)) return true; if(name=='sha'){ for(var nature of lib.inpile_nature){ - if(event.filterCard({name:name,nature:nature,isCard:true,cards:[card]})) return true; + if(event.filterCard({name:name,nature:nature,isCard:true,cards:[card]},player,event)) return true; } } return false; From eff1fdd8a64fc0fe259b012df4a5a2ca981bc1eb Mon Sep 17 00:00:00 2001 From: Tipx-L <138244655+Tipx-L@users.noreply.github.com> Date: Mon, 11 Dec 2023 22:07:18 -0800 Subject: [PATCH 162/302] Migrate `Library`. --- noname/{status => game-status}/ai.d.ts | 0 noname/{status => game-status}/ai.js | 0 noname/{status => game-status}/card-tag.d.ts | 0 noname/{status => game-status}/card-tag.js | 0 .../global-history.d.ts | 0 .../{status => game-status}/post-reconnect.js | 0 noname/gnc.js | 32 +- noname/gnc/is.js | 18 - noname/internal/internal-library.js | 1 + noname/library.js | 910 +- noname/library/card-pile.js | 1 + noname/library/card.js | 93 + noname/library/character.js | 1 + noname/library/cheat.js | 694 +- noname/library/color.js | 5 + noname/library/comparator.js | 41 + .../appearance/configuration/theme.js | 4 +- noname/library/creation.js | 21 + noname/library/element.js | 8205 +++++++++++++- noname/library/element/button.js | 30 + noname/library/element/card.js | 775 ++ noname/library/element/client.js | 61 + noname/library/element/control.js | 119 + noname/library/element/dialog.js | 168 + noname/library/element/game-event-promise.js | 74 + noname/library/element/game-event.js | 792 +- noname/library/element/node-ws.js | 17 + noname/library/element/player.js | 9437 ++++++++++++++++- noname/library/element/v-card.js | 108 +- noname/library/element/ws.js | 62 + noname/library/filter.js | 453 + noname/library/group-nature.js | 11 + noname/library/help.js | 32 + noname/library/initialization.js | 3363 +++++- noname/library/initialization/promises.js | 71 + noname/library/internal-status.js | 10 + noname/library/linq.js | 106 + noname/library/message.js | 1092 ++ noname/library/mode.js | 2453 +++++ noname/library/nature-audio.js | 39 + noname/library/other.js | 7 + noname/library/perfect-pair.js | 1 + noname/library/skill.js | 1307 +++ noname/library/sort.js | 133 + noname/library/translate.js | 217 + noname/status.js | 10 +- 46 files changed, 30935 insertions(+), 39 deletions(-) rename noname/{status => game-status}/ai.d.ts (100%) rename noname/{status => game-status}/ai.js (100%) rename noname/{status => game-status}/card-tag.d.ts (100%) rename noname/{status => game-status}/card-tag.js (100%) rename noname/{status => game-status}/global-history.d.ts (100%) rename noname/{status => game-status}/post-reconnect.js (100%) delete mode 100644 noname/gnc/is.js create mode 100644 noname/internal/internal-library.js create mode 100644 noname/library/card-pile.js create mode 100644 noname/library/card.js create mode 100644 noname/library/character.js create mode 100644 noname/library/color.js create mode 100644 noname/library/comparator.js create mode 100644 noname/library/creation.js create mode 100644 noname/library/element/button.js create mode 100644 noname/library/element/card.js create mode 100644 noname/library/element/client.js create mode 100644 noname/library/element/control.js create mode 100644 noname/library/element/dialog.js create mode 100644 noname/library/element/game-event-promise.js create mode 100644 noname/library/element/node-ws.js create mode 100644 noname/library/element/ws.js create mode 100644 noname/library/filter.js create mode 100644 noname/library/group-nature.js create mode 100644 noname/library/help.js create mode 100644 noname/library/initialization/promises.js create mode 100644 noname/library/internal-status.js create mode 100644 noname/library/linq.js create mode 100644 noname/library/message.js create mode 100644 noname/library/mode.js create mode 100644 noname/library/nature-audio.js create mode 100644 noname/library/other.js create mode 100644 noname/library/perfect-pair.js create mode 100644 noname/library/skill.js create mode 100644 noname/library/sort.js create mode 100644 noname/library/translate.js diff --git a/noname/status/ai.d.ts b/noname/game-status/ai.d.ts similarity index 100% rename from noname/status/ai.d.ts rename to noname/game-status/ai.d.ts diff --git a/noname/status/ai.js b/noname/game-status/ai.js similarity index 100% rename from noname/status/ai.js rename to noname/game-status/ai.js diff --git a/noname/status/card-tag.d.ts b/noname/game-status/card-tag.d.ts similarity index 100% rename from noname/status/card-tag.d.ts rename to noname/game-status/card-tag.d.ts diff --git a/noname/status/card-tag.js b/noname/game-status/card-tag.js similarity index 100% rename from noname/status/card-tag.js rename to noname/game-status/card-tag.js diff --git a/noname/status/global-history.d.ts b/noname/game-status/global-history.d.ts similarity index 100% rename from noname/status/global-history.d.ts rename to noname/game-status/global-history.d.ts diff --git a/noname/status/post-reconnect.js b/noname/game-status/post-reconnect.js similarity index 100% rename from noname/status/post-reconnect.js rename to noname/game-status/post-reconnect.js diff --git a/noname/gnc.js b/noname/gnc.js index b149621ed..69eeba414 100644 --- a/noname/gnc.js +++ b/noname/gnc.js @@ -1,8 +1,12 @@ -import { Is } from "./gnc/is.js"; +const GeneratorFunction = (function* () { }).constructor; -export const gnc = { - of(fn) { - return Is.generatorFunc(fn) ? function genCoroutine() { +export class GNC { + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } + + static of(fn) { + return this.isGeneratorFunc(fn) ? function genCoroutine() { let gen = fn.apply(this, arguments); gen.status = "next"; gen.state = undefined; @@ -33,6 +37,20 @@ export const gnc = { } return new Promise(callback); } : (() => { throw new TypeError("gnc.of needs a GeneratorFunction.") })(); - }, - is: Is -}; + } + + static isCoroutine(item) { + return typeof item == "function" && item.name == "genCoroutine"; + } + + /** + * @returns {item is GeneratorFunction} + */ + static isGeneratorFunc(item) { + return item instanceof GeneratorFunction; + } + + static isGenerator(item) { + return typeof item == "object" && "constructor" in item && item.constructor && "constructor" in item.constructor && item.constructor.constructor === GeneratorFunction; + } +} diff --git a/noname/gnc/is.js b/noname/gnc/is.js deleted file mode 100644 index b0715d035..000000000 --- a/noname/gnc/is.js +++ /dev/null @@ -1,18 +0,0 @@ -const GeneratorFunction = (function* () { }).constructor; - -export class Is { - static coroutine(item) { - return typeof item == "function" && item.name == "genCoroutine"; - } - - /** - * @returns {item is GeneratorFunction} - */ - static generatorFunc(item) { - return item instanceof GeneratorFunction; - } - - static generator(item) { - return typeof item == "object" && "constructor" in item && item.constructor && "constructor" in item.constructor && item.constructor.constructor === GeneratorFunction; - } -} diff --git a/noname/internal/internal-library.js b/noname/internal/internal-library.js new file mode 100644 index 000000000..10496c084 --- /dev/null +++ b/noname/internal/internal-library.js @@ -0,0 +1 @@ +export { Library as InternalLibrary } from "../library.js"; diff --git a/noname/library.js b/noname/library.js index 957725c5c..7841dba0b 100644 --- a/noname/library.js +++ b/noname/library.js @@ -1,7 +1,13 @@ +import { Game } from "./game.js"; +import { Get } from "./get.js"; +import { GNC } from "./gnc.js"; +import { InternalLibrary } from "./internal/internal-library.js"; import { animate } from "./library/animate.js"; import { announce } from "./library/announce.js"; import { cardPack } from "./library/card-pack.js"; +import { cardPile } from "./library/card-pile.js"; import { cardType } from "./library/card-type.js"; +import { card } from "./library/card.js"; import { Channel } from "./library/channel.js"; import { CharacterDialogGroup } from "./library/character-dialog-group.js"; import { characterFilter } from "./library/character-filter.js"; @@ -10,21 +16,45 @@ import { characterPack } from "./library/character-pack.js"; import { characterReplace } from "./library/character-replace.js"; import { characterSort } from "./library/character-sort.js"; import { characterTitle } from "./library/character-title.js"; +import { character } from "./library/character.js"; +import { Cheat } from "./library/cheat.js"; +import { color } from "./library/color.js"; +import { Comparator } from "./library/comparator.js"; import { CONFIGURATION_MENU } from "./library/configuration-menu.js"; +import { configuration } from "./library/configuration.js"; +import { Creation } from "./library/creation.js"; import { dynamicTranslate } from "./library/dynamic-translate.js"; import { element } from "./library/element.js"; import { emotionList } from "./library/emotion-list.js"; import { extensionMenu } from "./library/extension-menu.js"; import { extensionPack } from "./library/extension-pack.js"; +import { Filter } from "./library/filter.js"; +import { groupNature } from "./library/group-nature.js"; +import { HELP } from "./library/help.js"; import { hookMap } from "./library/hook-map.js"; import { hook } from "./library/hook.js"; import { hooks } from "./library/hooks.js"; import { imported } from "./library/imported.js"; +import { Initialization } from "./library/initialization.js"; +import { internalStatus } from "./library/internal-status.js"; +import { linq } from "./library/linq.js"; +import { message } from "./library/message.js"; +import { MODE } from "./library/mode.js"; +import { natureAudio } from "./library/nature-audio.js"; +import { Other } from "./library/other.js"; +import { perfectPair } from "./library/perfect-pair.js"; import { pinyins } from "./library/pinyins.js"; +import { skill } from "./library/skill.js"; import { skin } from "./library/skin.js"; +import { Sort } from "./library/sort.js"; import { stratagemBuff } from "./library/stratagem-buff.js"; +import { translate } from "./library/translate.js"; import { updateURLs } from "./library/update-urls.js"; import { yingbian } from "./library/yingbian.js"; +import { status } from "./status.js"; +import { UI } from "./ui.js"; +import { Click } from "./ui/click.js"; +import { Create } from "./ui/create.js"; const nonameInitialized = localStorage.getItem("noname_inited"); @@ -75,7 +105,6 @@ export class Library { static cardType = cardType; static hook = hook; static hooks = hooks; - static element = element; static Channel = Channel; /** * @todo Waiting for [Rintim](https://github.com/Rintim)’s pull request. @@ -103,6 +132,349 @@ export class Library { static characterDialogGroup = CharacterDialogGroup; static configMenu = CONFIGURATION_MENU; static extensionMenu = extensionMenu; + static mode = MODE; + static status = internalStatus; + static help = HELP; + /** + * @type {import("path")} + */ + // @ts-ignore + static path = {}; + static gnc = GNC; + static comparator = Comparator; + static creation = Creation; + static linq = linq; + static init = Initialization; + static cheat = Cheat; + static translate = translate; + static element = element; + static card = card; + static filter = Filter; + static sort = Sort; + static skill = skill; + static character = character; + static perfectPair = perfectPair; + static cardPile = cardPile; + static message = message; + static suit = ["club", "spade", "diamond", "heart"]; + static suits = ["club", "spade", "diamond", "heart", "none"]; + static color = color; + static group = ["wei", "shu", "wu", "qun", "jin", "shen"]; + /** + * 数值代表各元素在名称中排列的先后顺序 + */ + static nature = new Map([ + ["fire", 20], + ["thunder", 30], + ["kami", 60], + ["ice", 40], + ["stab", 10], + ["poison", 50] + ]); + static natureAudio = natureAudio; + static linked = ["fire", "thunder", "kami", "ice"]; + static natureBg = new Map([ + ["stab", "image/card/cisha.png"] + ]); + static natureSeparator = "|"; + static namePrefix = new Map([ + ["界", { + color: "#fdd559", + nature: "soilmm", + }], + ["谋", { + color: "#def7ca", + nature: "woodmm", + }], + ["武", { + color: "#fd8359", + nature: "soilmm", + }], + ["乐", { + color: "#f7f4fc", + nature: "keymm", + }], + ["神", { + color: "#faecd1", + nature: "orangemm", + }], + ["族", { + color: "#ee9ac7", + nature: "firemm", + }], + ["晋", { + color: "#f3c5ff", + nature: "blackmm", + }], + ["侠", { + color: "#eeeeee", + nature: "qunmm", + }], + ["起", { + color: "#c3f9ff", + nature: "thundermm", + }], + ["承", { + color: "#c3f9ff", + nature: "thundermm", + }], + ["转", { + color: "#c3f9ff", + nature: "thundermm", + }], + ["梦", { + color: "#6affe2", + nature: "watermm", + }], + ["用间", { + color: "#c3f9ff", + nature: "thundermm", + }], + ["战役篇", { + color: "#c3f9ff", + nature: "thundermm", + showName: "战", + }], + ["武将传", { + color: "#c3f9ff", + nature: "thundermm", + showName: "传", + }], + ["将", { + nature: "firemm", + }], + ["新杀", { + color: "#fefedc", + nature: "metalmm", + showName: "新", + }], + ["旧", { + color: "#a4a4a4", + nature: "black", + }], + ["旧界", { + color: "#a4a4a4", + nature: "black", + }], + ["节钺", { + color: "#a4a4a4", + nature: "black", + }], + ["毅重", { + color: "#a4a4a4", + nature: "black", + }], + ["★SP", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("SP")}` + }], + ["☆SP", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("SP")}` + }], + ["J.SP", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("SP")}` + }], + ["K系列", { + showName: "K", + }], + ["经典", { + showName: "典", + }], + ["君", { + color: "#fefedc", + nature: "shenmm", + }], + ["骰子", { + getSpan: () => { + const span = document.createElement("span"); + span.style.fontFamily = "NonameSuits"; + span.textContent = "🎲"; + return span.outerHTML; + } + }], + ["SP", { + getSpan: () => { + const span = document.createElement("span"), style = span.style; + style.writingMode = style.webkitWritingMode = "horizontal-tb"; + style.fontFamily = "MotoyaLMaru"; + style.transform = "scaleY(0.85)"; + span.textContent = "SP"; + return span.outerHTML; + }, + }], + ["OL", { + getSpan: () => { + const span = document.createElement("span"), style = span.style; + style.writingMode = style.webkitWritingMode = "horizontal-tb"; + style.fontFamily = "MotoyaLMaru"; + style.transform = "scaleY(0.85)"; + span.textContent = "OL"; + return span.outerHTML; + }, + }], + ["RE", { + getSpan: () => { + const span = document.createElement("span"), style = span.style; + style.writingMode = style.webkitWritingMode = "horizontal-tb"; + style.fontFamily = "MotoyaLMaru"; + style.transform = "scaleY(0.85)"; + span.textContent = "RE"; + return span.outerHTML; + }, + }], + ["手杀", { + getSpan: (prefix, name) => { + const simple = configuration.buttoncharacter_prefix == "simple", span = document.createElement("span"); + if (characterPack.shiji && name in characterPack.shiji) { + for (const entry of Object.entries(characterSort.shiji)) { + if (!entry[1].includes(name)) continue; + prefix = Get.translation(entry[0]).slice(-1); + break; + } + if (!simple) { + span.style.color = "#def7ca"; + span.dataset.nature = "watermm"; + } + span.innerHTML = prefix; + } + else if (simple) span.textContent = "手杀"; + else { + span.style.fontFamily = "NonameSuits"; + span.textContent = "📱"; + } + return span.outerHTML; + }, + }], + ["TW", { + getSpan: () => { + const span = document.createElement("span"), style = span.style; + style.writingMode = style.webkitWritingMode = "horizontal-tb"; + style.fontFamily = "MotoyaLMaru"; + style.transform = "scaleY(0.85)"; + span.textContent = "TW"; + return span.outerHTML; + }, + }], + ["TW神", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("TW")}${Get.prefixSpan("神")}` + }], + ["TW将", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("TW")}${Get.prefixSpan("将")}` + }], + ["OL神", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("OL")}${Get.prefixSpan("神")}` + }], + ["旧神", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("旧")}${Get.prefixSpan("神")}` + }], + ["旧晋", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("旧")}${Get.prefixSpan("晋")}` + }], + ["新杀SP", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("新杀")}${Get.prefixSpan("SP")}` + }], + ["界SP", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("界")}${Get.prefixSpan("SP")}` + }], + ["S特神", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("★")}${Get.prefixSpan("神")}` + }], + ["手杀界", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("手杀")}${Get.prefixSpan("界")}` + }], + ["战役篇神", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("战役篇")}${Get.prefixSpan("神")}` + }], + ["星", { + color: "#ffd700", + nature: "glodenmm", + }], + ["OL界", { + /** + * @returns {string} + */ + getSpan: () => `${Get.prefixSpan("OL")}${Get.prefixSpan("界")}` + }] + ]); + static groupnature = groupNature; + static lineColor = new Map([ + ["fire", [255, 146, 68]], + ["yellow", [255, 255, 122]], + ["blue", [150, 202, 255]], + ["green", [141, 255, 216]], + ["ice", [59, 98, 115]], + ["thunder", [141, 216, 255]], + ["kami", [90, 118, 99]], + ["white", [255, 255, 255]], + ["poison", [104, 221, 127]], + ["brown", [195, 161, 223]], + ["legend", [233, 131, 255]] + ]); + static phaseName = ["phaseZhunbei", "phaseJudge", "phaseDraw", "phaseUse", "phaseDiscard", "phaseJieshu"]; + static quickVoice = [ + "我从未见过如此厚颜无耻之人!", + "这波不亏", + "请收下我的膝盖", + "你咋不上天呢", + "放开我的队友,冲我来", + "你随便杀,闪不了算我输", + "见证奇迹的时刻到了", + "能不能快一点啊,兵贵神速啊", + "主公,别开枪,自己人", + "小内再不跳,后面还怎么玩儿啊", + "你们忍心,就这么让我酱油了?", + "我,我惹你们了吗", + "姑娘,你真是条汉子", + "三十六计,走为上,容我去去便回", + "人心散了,队伍不好带啊", + "昏君,昏君啊!", + "风吹鸡蛋壳,牌去人安乐", + "小内啊,您老悠着点儿", + "不好意思,刚才卡了", + "你可以打得再烂一点吗", + "哥们,给力点儿行嘛", + "哥哥,交个朋友吧", + "妹子,交个朋友吧", + ]; + static other = Other; constructor() { throw new TypeError(`${new.target.name} is not a constructor`); @@ -123,4 +495,540 @@ export class Library { }); } } + + static getErrorTip(msg) { + if (typeof msg != "string") { + try { + msg = msg.toString(); + if (typeof msg != "string") throw "err"; + } catch (_) { + throw `传参错误:${msg}`; + } + } + if (msg.startsWith("Uncaught ")) msg = msg.slice(9); + let newMessage = msg; + if (/RangeError/.test(newMessage)) { + if (newMessage.includes("Maximum call stack size exceeded")) { + newMessage = "堆栈溢出"; + } else if (/argument must be between 0 and 20/.test(newMessage)) { + let funName = newMessage.slice(newMessage.indexOf("RangeError: ") + 12, newMessage.indexOf(")") + 1); + newMessage = funName + "参数必须在0和20之间"; + } else { + newMessage = "传递错误值到数值计算方法"; + } + } else if (/ReferenceError/.test(newMessage)) { + let messageName; + if (newMessage.includes("is not defined")) { + messageName = newMessage.replace("ReferenceError: ", "").replace(" is not defined", ""); + newMessage = "引用了一个未定义的变量:" + messageName; + } else if (newMessage.includes("invalid assignment left-hand side")) { + newMessage = "赋值运算符或比较运算符不匹配"; + } else if (newMessage.includes("Octal literals are not allowed in strict mode")) { + newMessage = "八进制字面量与八进制转义序列语法已经被废弃"; + } else if (newMessage.includes("Illegal \x27use strict\x27 directive in function with non-simple parameter list")) { + newMessage = "\x27use strict\x27指令不能使用在带有‘非简单参数’列表的函数"; + } else if (newMessage.includes("Invalid left-hand side in assignment")) { + newMessage = "赋值中的左侧无效,即number,string等不可赋值的非变量数据"; + } + } else if (/SyntaxError/.test(newMessage)) { + let messageName; + if (newMessage.includes("Unexpected token ")) { + messageName = newMessage.replace("SyntaxError: Unexpected token ", ""); + newMessage = "使用了未定义或错误的语法 : (" + messageName + ")"; + } else if (newMessage.includes( + "Block-scoped declarations (let, const, function, class) not yet supported outside strict mode")) { + newMessage = "请在严格模式下运行let,const,class"; + } else if (newMessage.includes("for-of loop variable declaration may not have an initializer.")) { + newMessage = "for...of 循环的头部包含有初始化表达式"; + } else if (newMessage.includes("for-in loop variable declaration may not have an initializer.")) { + newMessage = "for...in 循环的头部包含有初始化表达式"; + } else if (newMessage.includes("Delete of an unqualified identifier in strict mode.")) { + newMessage = "普通变量不能通过 delete 操作符来删除"; + } else if (newMessage.includes("Unexpected identifier")) { + newMessage = "不合法的标识符或错误的语法"; + } else if (newMessage.includes("Invalid or unexpected token")) { + newMessage = "非法的或者不期望出现的标记符号出现在不该出现的位置"; + } else if (newMessage.includes("Invalid regular expression flags")) { + newMessage = "无效的正则表达式的标记"; + } else if (newMessage.includes("missing ) after argument list")) { + newMessage = "参数列表后面缺少“)” (丢失运算符或者转义字符等)"; + } else if (newMessage.includes("Invalid shorthand property initializer")) { + newMessage = "在定义一个{}对象时,应该使用“:”而不是“=”"; + } else if (newMessage.includes("Missing initializer in const declaration")) { + newMessage = "在使用const定义一个对象时,必须指定初始值"; + } else if (newMessage.includes("Unexpected number") || newMessage.includes("Unexpected string")) { + newMessage = "在定义函数时,函数参数必须为合法标记符"; + } else if (newMessage.includes("Unexpected end of input")) { + newMessage = "遗漏了符号或符号顺序不对(小括号,花括号等)"; + } else if (newMessage.includes("has already been declared")) { + messageName = newMessage.replace("SyntaxError: Identifier ", "").replace(" has already been declared", ""); + newMessage = messageName + "变量已经被声明过,不能被重新声明"; + } else if (newMessage.includes("Duplicate parameter name not allowed in this context")) { + newMessage = "参数名不允许重复"; + } else if (newMessage.includes("Unexpected reserved word") || newMessage.includes( + "Unexpected strict mode reserved word")) { + newMessage = "保留字被用作标记符"; + } + } else if (/TypeError/.test(newMessage)) { + let messageName; + if (newMessage.includes(" is not a function")) { + messageName = newMessage.replace("TypeError: ", "").replace(" is not a function", ""); + newMessage = messageName + "不是一个函数"; + } else if (newMessage.includes(" is not a constructor")) { + messageName = newMessage.replace("TypeError: ", "").replace(" is not a constructor", ""); + newMessage = messageName + "不是一个构造函数"; + } else if (newMessage.includes("Cannot read property")) { + messageName = newMessage.replace("TypeError: Cannot read property ", "").replace(" of null", "").replace(" of undefined", ""); + let ofName = newMessage.slice(newMessage.indexOf(" of ") + 4); + newMessage = `无法读取“${ofName}”的属性值${messageName}`; + } else if (newMessage.includes("Cannot read properties")) { + messageName = newMessage.slice(newMessage.indexOf("reading \x27") + 9, -2); + let ofName = newMessage.slice(newMessage.indexOf(" of ") + 4, newMessage.indexOf("(") - 1); + newMessage = `无法读取“${ofName}”的属性值${messageName}`; + } else if (newMessage.includes("Property description must be an object")) { + messageName = newMessage.replace("TypeError: Property description must be an object: ", ""); + newMessage = messageName + "是非对象类型的值"; + } else if (newMessage.includes("Cannot assign to read only property ")) { + messageName = newMessage.slice(47, newMessage.lastIndexOf(" of ") + 1); + newMessage = messageName + "属性禁止写入"; + } else if (newMessage.includes("Object prototype may only be an Object or null")) { + newMessage = messageName + "对象原型只能是对象或null"; + } else if (newMessage.includes("Cannot create property")) { + messageName = newMessage.slice(newMessage.indexOf("\x27") + 1); + messageName = messageName.slice(0, messageName.indexOf("\x27")); + let obj = newMessage.slice(newMessage.indexOf(messageName) + 16); + newMessage = `${obj}不能添加或修改“${messageName}”属性,任何 Primitive 值都不允许有property`; + } else if (newMessage.includes("Can\x27t add property") && newMessage.includes("is not extensible")) { + newMessage = "对象不可添加属性(不可扩展)"; + } else if (newMessage.includes("Cannot redefine property")) { + messageName = newMessage.slice(37); + newMessage = messageName + "不可配置"; + } else if (newMessage.includes("Converting circular structure to JSON")) { + messageName = newMessage.slice(37); + newMessage = "JSON.stringify() 方法处理循环引用结构的JSON会失败"; + } else if (newMessage.includes("Cannot use \x27in\x27 operator to search for ")) { + newMessage = "in不能用来在字符串、数字或者其他基本类型的数据中进行检索"; + } else if (newMessage.includes("Right-hand side of \x27instanceof\x27 is not an object")) { + newMessage = "instanceof 操作符 希望右边的操作数为一个构造对象,即一个有 prototype 属性且可以调用的对象"; + } else if (newMessage.includes("Assignment to constant variable")) { + newMessage = "const定义的变量不可修改"; + } else if (newMessage.includes("Cannot delete property")) { + newMessage = "不可配置的属性不能删除"; + } else if (newMessage.includes("which has only a getter")) { + newMessage = "仅设置了getter特性的属性不可被赋值"; + } else if (newMessage.includes("called on incompatible receiver undefined")) { + newMessage = "this提供的绑定对象与预期的不匹配"; + } + } else if (/URIError/.test(newMessage)) { + newMessage = "一个不合法的URI"; + } else if (/EvalError/.test(newMessage)) { + newMessage = "非法调用 eval()"; + } else if (/InternalError/.test(newMessage)) { + if (newMessage.includes("too many switch cases")) { + newMessage = "过多case子句"; + } else if (newMessage.includes("too many parentheses in regular expression")) { + newMessage = "正则表达式中括号过多"; + } else if (newMessage.includes("array initializer too large")) { + newMessage = "超出数组大小的限制"; + } else if (newMessage.includes("too much recursion")) { + newMessage = "递归过深"; + } + } + if (newMessage != msg) { + return newMessage; + } + } + + static codeMirrorReady(node, editor) { + UI.window.appendChild(node); + node.style.fontSize = `${20 / Game.documentZoom}px`; + const mirror = window.CodeMirror(editor, { + value: node.code, + mode: "javascript", + lineWrapping: !configuration.touchscreen && configuration.mousewheel, + lineNumbers: true, + indentUnit: 4, + autoCloseBrackets: true, + fixedGutter: false, + hintOptions: { completeSingle: false }, + theme: configuration.codeMirror_theme || "mdn-like", + extraKeys: { + "Ctrl-Z": "undo",//撤销 + "Ctrl-Y": "redo",//恢复撤销 + //"Ctrl-A":"selectAll",//全选 + }, + }); + InternalLibrary.setScroll(editor.querySelector(".CodeMirror-scroll")); + node.aced = true; + node.editor = mirror; + setTimeout(() => mirror.refresh(), 0); + node.editor.on("change", (e, change) => { + let code; + if (node.editor) { + code = node.editor.getValue(); + } else if (node.textarea) { + code = node.textarea.value; + } + //动态绑定文本 + if (code.length && change.origin == "+input" && + /{|}|\s|=|;|:|,|,|。|?|!|!|\?|&|#|%|@|‘|’|;/.test(change.text[0]) == false && + change.text.length == 1) { + //输入了代码,并且不包括空格,{},=, ; , : , 逗号等,才可以自动提示 + node.editor.showHint(); + } + }); + //防止每次输出字符都创建以下元素 + const event = status.event; + const trigger = status.event; + const player = Create.player().init("sunce"); + const target = player; + const targets = [player]; + const source = player; + const card = Game.createCard(); + const cards = [card]; + const result = { bool: true }; + function forEach(arr, f) { + Array.from(arr).forEach(v => f(v)); + } + function forAllProps(obj, callback) { + if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) { + for (let name in obj) callback(name); + } else { + for (let o = obj; o; o = Object.getPrototypeOf(o)) Object.getOwnPropertyNames(o).forEach(callback); + } + } + function scriptHint(editor, keywords, getToken, options) { + //Find the token at the cursor + let cur = editor.getCursor(), token = editor.getTokenAt(cur); + if (/\b(?:string|comment)\b/.test(token.type)) return; + const innerMode = CodeMirror.innerMode(editor.getMode(), token.state); + if (innerMode.mode.helperType === "json") return; + token.state = innerMode.state; + //If it’s not a “word-style” token, ignore the token. + if (!/^[\w$_]*$/.test(token.string)) { + token = { + start: cur.ch, + end: cur.ch, + string: "", + state: token.state, + type: token.string == "." ? "property" : null + }; + } else if (token.end > cur.ch) { + token.end = cur.ch; + token.string = token.string.slice(0, cur.ch - token.start); + } + let tprop = token, context; + //If it is a property, find out what it is a property of. + while (tprop.type == "property") { + tprop = editor.getTokenAt(CodeMirror.Pos(cur.line, tprop.start)); + if (tprop.string != ".") return; + tprop = editor.getTokenAt(CodeMirror.Pos(cur.line, tprop.start)); + if (!context) context = []; + context.push(tprop); + } + const list = []; + let obj; + if (Array.isArray(context)) { + try { + const code = context.length == 1 ? context[0].string : context.reduceRight((pre, cur) => `${pre.string || pre}.${cur.string}`); + obj = eval(code); + if (![null, undefined].includes(obj)) { + const keys = Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertyNames(Object.getPrototypeOf(obj))).filter(key => key.startsWith(token.string)); + list.addArray(keys); + } + } catch (_) { return; } + } else if (token && typeof token.string == "string") { + //非开发者模式下,提示这些单词 + list.addArray(["player", "card", "cards", "result", "trigger", "source", "target", "targets", "lib", "game", "ui", "get", "ai", "_status"]); + } + return { + list: [...new Set(getCompletions(token, context, keywords, options).concat(list))] + .filter(key => key.startsWith(token.string)) + .sort((a, b) => `${a}`.localeCompare(`${b}`)) + .map(text => { + return { + render(elt, data, cur) { + var icon = document.createElement("span"); + var className = "cm-completionIcon cm-completionIcon-"; + if (obj) { + const type = typeof obj[text]; + if (type == "function") { + className += "function"; + } + else if (type == "string") { + className += "text"; + } + else if (type == "boolean") { + className += "variable"; + } + else { + className += "namespace"; + } + } else { + if (javascriptKeywords.includes(text)) { + className += "keyword"; + } + else if (window[text]) { + const type = typeof window[text]; + if (type == "function") { + className += "function"; + } + else if (type == "string") { + className += "text"; + } + else if (text == "window" || type == "boolean") { + className += "variable"; + } + else { + className += "namespace"; + } + } else { + className += "namespace"; + } + } + icon.className = className; + elt.appendChild(icon); + elt.appendChild(document.createTextNode(text)); + }, + displayText: text, + text: text, + } + }), + from: CodeMirror.Pos(cur.line, token.start), + to: CodeMirror.Pos(cur.line, token.end) + }; + } + function javascriptHint(editor, options) { + return scriptHint(editor, javascriptKeywords, function (e, cur) { return e.getTokenAt(cur); }, options); + } + //覆盖原本的javascript提示 + CodeMirror.registerHelper("hint", "javascript", javascriptHint); + const stringProps = Object.getOwnPropertyNames(String.prototype); + const arrayProps = Object.getOwnPropertyNames(Array.prototype); + const funcProps = Object.getOwnPropertyNames(Array.prototype); + const javascriptKeywords = ("break case catch class const continue debugger default delete do else export extends from false finally for function " + + "if in import instanceof let new null return super switch this throw true try typeof var void while with yield").split(" "); + function getCompletions(token, context, keywords, options) { + let found = [], start = token.string, global = options && options.globalScope || window; + function maybeAdd(str) { + if (str.lastIndexOf(start, 0) == 0 && !found.includes(str)) found.push(str); + } + function gatherCompletions(obj) { + if (typeof obj == "string") forEach(stringProps, maybeAdd); + else if (obj instanceof Array) forEach(arrayProps, maybeAdd); + else if (obj instanceof Function) forEach(funcProps, maybeAdd); + forAllProps(obj, maybeAdd); + } + if (context && context.length) { + //If this is a property, see if it belongs to some object we can + //find in the current environment. + let obj = context.pop(), base; + if (obj.type && obj.type.indexOf("variable") === 0) { + if (options && options.additionalContext) + base = options.additionalContext[obj.string]; + if (!options || options.useGlobalScope !== false) + base = base || global[obj.string]; + } else if (obj.type == "string") { + base = ""; + } else if (obj.type == "atom") { + base = 1; + } else if (obj.type == "function") { + if (global.jQuery != null && (obj.string == "$" || obj.string == "jQuery") && (typeof global.jQuery == "function")) + base = global.jQuery(); + else if (global._ != null && (obj.string == "_") && (typeof global._ == "function")) + base = global._(); + } + while (base != null && context.length) + base = base[context.pop().string]; + if (base != null) gatherCompletions(base); + } else { + //If not, just look in the global object, any local scope, and optional additional-context + //(reading into JS mode internals to get at the local and global variables) + for (let v = token.state.localVars; v; v = v.next) maybeAdd(v.name); + for (let c = token.state.context; c; c = c.prev) for (let v = c.vars; v; v = v.next) maybeAdd(v.name) + for (let v = token.state.globalVars; v; v = v.next) maybeAdd(v.name); + if (options && options.additionalContext != null) for (let key in options.additionalContext) maybeAdd(key); + if (!options || options.useGlobalScope !== false) gatherCompletions(global); + forEach(keywords, maybeAdd); + } + return found.sort((a, b) => `${a}`.localeCompare(`${b}`)); + } + } + + static setIntro(node, func, left) { + if (configuration.touchscreen) { + if (left) { + node.listen(Click.touchintro); + } + else { + InternalLibrary.setLongPress(node, Click.intro); + } + } + else { + if (left) { + node.listen(Click.intro); + } + if (configuration.hover_all && !InternalLibrary.device) { + InternalLibrary.setHover(node, Click.hoverplayer); + } + if (configuration.right_info) { + node.oncontextmenu = Click.rightplayer; + } + } + if (func) { + node._customintro = func; + } + } + + static setPopped(node, func, width, height, forceclick, paused2) { + node._poppedfunc = func; + node._poppedwidth = width; + node._poppedheight = height; + if (forceclick) { + node.forceclick = true; + } + if (configuration.touchscreen || forceclick) { + node.listen(Click.hoverpopped); + } + else { + node.addEventListener("mouseenter", Click.hoverpopped); + } + if (paused2) { + node._paused2 = true; + } + } + + static placePoppedDialog(dialog, e) { + if (dialog._place_text) { + if (dialog._place_text.firstChild.offsetWidth >= 190 || dialog._place_text.firstChild.offsetHeight >= 30) { + dialog._place_text.style.marginLeft = "14px"; + dialog._place_text.style.marginRight = "14px"; + dialog._place_text.style.textAlign = "left"; + dialog._place_text.style.width = "calc(100% - 28px)"; + } + } + if (e.touches && e.touches[0]) { + e = e.touches[0]; + } + var height = Math.min(UI.window.offsetHeight - 20, dialog.content.scrollHeight); + if (dialog._mod_height) { + height += dialog._mod_height; + } + dialog.style.height = `${height}px`; + if (e.clientX / Game.documentZoom < UI.window.offsetWidth / 2) { + dialog.style.left = `${e.clientX / Game.documentZoom + 10}px`; + } + else { + dialog.style.left = `${e.clientX / Game.documentZoom - dialog.offsetWidth - 10}px`; + } + var idealtop = (e.clientY || 0) / Game.documentZoom - dialog.offsetHeight / 2; + if (typeof idealtop != "number" || isNaN(idealtop) || idealtop <= 5) { + idealtop = 5; + } + else if (idealtop + dialog.offsetHeight + 10 > UI.window.offsetHeight) { + idealtop = UI.window.offsetHeight - 10 - dialog.offsetHeight; + } + dialog.style.top = `${idealtop}px`; + } + + static setHover(node, func, hoveration, width) { + node._hoverfunc = func; + if (typeof hoveration == "number") { + node._hoveration = hoveration; + } + if (typeof width == "number") { + node._hoverwidth = width + } + node.addEventListener("mouseenter", Click.mouseenter); + node.addEventListener("mouseleave", Click.mouseleave); + node.addEventListener("mousedown", Click.mousedown); + node.addEventListener("mousemove", Click.mousemove); + return node; + } + + static setScroll(node) { + node.ontouchstart = Click.touchStart; + node.ontouchmove = Click.touchScroll; + node.style.webkitOverflowScrolling = "touch"; + return node; + } + + static setMousewheel(node) { + if (configuration.mousewheel) node.onmousewheel = Click.mousewheel; + } + + static setLongPress(node, func) { + node.addEventListener("touchstart", Click.longpressdown); + node.addEventListener("touchend", Click.longpresscancel); + node._longpresscallback = func; + return node; + } + + static updateCanvas(time) { + if (InternalLibrary.canvasUpdates.length === 0) { + internalStatus.canvas = false; + return false; + } + UI.canvas.width = UI.arena.offsetWidth; + UI.canvas.height = UI.arena.offsetHeight; + var ctx = UI.ctx; + ctx.shadowBlur = 5; + ctx.shadowColor = "rgba(0,0,0,0.3)"; + ctx.strokeStyle = "white"; + ctx.lineWidth = 3; + ctx.save(); + for (var i = 0; i < InternalLibrary.canvasUpdates.length; i++) { + ctx.restore(); + ctx.save(); + var update = InternalLibrary.canvasUpdates[i]; + if (!update.starttime) { + update.starttime = time; + } + if (update(time - update.starttime, ctx) === false) { + InternalLibrary.canvasUpdates.splice(i--, 1); + } + } + } + + static run(time) { + internalStatus.time = time; + for (var i = 0; i < InternalLibrary.updates.length; i++) { + if (!Object.prototype.hasOwnProperty.call(InternalLibrary.updates[i], "_time")) { + InternalLibrary.updates[i]._time = time; + } + if (InternalLibrary.updates[i](time - InternalLibrary.updates[i]._time - internalStatus.delayed) === false) { + InternalLibrary.updates.splice(i--, 1); + } + } + if (InternalLibrary.updates.length) { + internalStatus.frameId = requestAnimationFrame(InternalLibrary.run); + } + else { + internalStatus.time = 0; + internalStatus.delayed = 0; + } + } + + static getUTC(date) { + return date.getTime(); + } + + static saveVideo() { + if (status.videoToSave) { + Game.export(Initialization.encode(JSON.stringify(status.videoToSave)), + `无名杀 - 录像 - ${status.videoToSave.name[0]} - ${status.videoToSave.name[1]}`); + } + } + + static genAsync(fn) { + return GNC.of(fn); + } + + static genAwait(item) { + return GNC.isGenerator(item) ? GNC.of(function* () { + for (const content of item) { + yield content; + } + })() : Promise.resolve(item); + } } diff --git a/noname/library/card-pile.js b/noname/library/card-pile.js new file mode 100644 index 000000000..f0ba7bfca --- /dev/null +++ b/noname/library/card-pile.js @@ -0,0 +1 @@ +export const cardPile = {}; diff --git a/noname/library/card.js b/noname/library/card.js new file mode 100644 index 000000000..06163d873 --- /dev/null +++ b/noname/library/card.js @@ -0,0 +1,93 @@ +export const card = { + list: [], + cooperation_damage: { + fullskin: true + }, + cooperation_draw: { + fullskin: true, + cardimage: "cooperation_damage" + }, + cooperation_discard: { + fullskin: true, + cardimage: "cooperation_damage" + }, + cooperation_use: { + fullskin: true, + cardimage: "cooperation_damage" + }, + pss_paper: { + type: "pss", + fullskin: true + }, + pss_scissor: { + type: "pss", + fullskin: true, + }, + pss_stone: { + type: "pss", + fullskin: true + }, + feichu_equip1: { + type: "equip", + subtype: "equip1" + }, + feichu_equip2: { + type: "equip", + subtype: "equip2" + }, + feichu_equip3: { + type: "equip", + subtype: "equip3" + }, + feichu_equip4: { + type: "equip", + subtype: "equip4" + }, + feichu_equip5: { + type: "equip", + subtype: "equip5" + }, + feichu_equip6: { + type: "equip", + subtype: "equip6" + }, + zhengsu_leijin: {}, + zhengsu_mingzhi: {}, + zhengsu_bianzhen: {}, + disable_judge: {}, + group_wei: { + fullskin: true + }, + group_shu: { + fullskin: true + }, + group_wu: { + fullskin: true + }, + group_qun: { + fullskin: true + }, + group_key: { + fullskin: true + }, + group_jin: { + fullskin: true + }, + + db_atk1: { + type: "db_atk", + fullimage: true + }, + db_atk2: { + type: "db_atk", + fullimage: true + }, + db_def1: { + type: "db_def", + fullimage: true + }, + db_def2: { + type: "db_def", + fullimage: true + } +}; diff --git a/noname/library/character.js b/noname/library/character.js new file mode 100644 index 000000000..111324fc9 --- /dev/null +++ b/noname/library/character.js @@ -0,0 +1 @@ +export const character = {}; diff --git a/noname/library/cheat.js b/noname/library/cheat.js index f66f2b755..8ac06961d 100644 --- a/noname/library/cheat.js +++ b/noname/library/cheat.js @@ -1 +1,693 @@ -export class Cheat { } +export class Cheat { + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } + + static i() { + window.cheat = lib.cheat; + window.game = game; + window.ui = ui; + window.get = get; + window.ai = ai; + window.lib = lib; + window._status = _status; + } + + static dy() { + var next = game.me.next; + for (var i = 0; i < 10; i++) { + if (next.identity != "zhu") { + break; + } + next = next.next; + } + next.die(); + } + + static x() { + var gl = function (dir, callback) { + var files = [], folders = []; + dir = "/Users/widget/Documents/extension/" + dir; + lib.node.fs.readdir(dir, function (err, filelist) { + for (var i = 0; i < filelist.length; i++) { + if (filelist[i][0] != "." && filelist[i][0] != "_") { + if (lib.node.fs.statSync(dir + "/" + filelist[i]).isDirectory()) { + folders.push(filelist[i]); + } + else { + files.push(filelist[i]); + } + } + } + callback(folders, files); + }); + } + var args = Array.from(arguments); + for (var i = 0; i < args.length; i++) { + args[i] = args[i][0]; + } + gl("", function (list) { + if (args.length) { + for (var i = 0; i < list.length; i++) { + if (!args.contains(list[i][0])) { + list.splice(i--, 1); + } + } + } + if (list.length) { + for (var i = 0; i < list.length; i++) { + (function (str) { + gl(str, function (folders, files) { + if (files.length > 1) { + for (var i = 0; i < files.length; i++) { + if (files[i].includes("extension.js")) { + files.splice(i--, 1); + } + else { + if (i % 5 == 0) { + str += "\n\t\t\t"; + } + str += `"${files[i]}",`; + } + } + console.log(str.slice(0, str.length - 1)); + } + }); + }(list[i])); + } + } + }); + } + + static cfg() { + var mode = lib.config.all.mode.slice(0); + mode.remove("connect"); + mode.remove("brawl"); + var banned = ["shen_guanyu", "shen_caocao", "caopi", "re_daqiao", "caorui", + "daqiao", "lingcao", "liuzan", "lusu", "luxun", "yanwen", "zhouyu", "ns_wangyue", "gw_yenaifa", + "old_caozhen", "swd_jiangziya", "xuhuang", "maliang", "guojia", "simayi", "swd_kangnalishi", "hs_siwangzhiyi", "hs_nozdormu", "old_zhuzhi"]; + var bannedcards = ["zengbin"]; + var favs = ["hs_tuoqi", "hs_siwangxianzhi", "hs_xukongzhiying", "hs_hsjiasha", "gjqt_xieyi", "gjqt_yunwuyue", "gjqt_beiluo", + "gjqt_cenying", "shen_lvmeng", "shen_zhaoyun", "shen_zhugeliang", "ow_ana", "chenlin", "ns_guanlu", "hs_guldan", "swd_guyue", + "pal_jiangyunfan", "mtg_jiesi", "swd_lanyin", "pal_liumengli", "swd_muyun", "pal_nangonghuang", "swd_muyue", "pal_murongziying", + "swd_qiner", "pal_shenqishuang", "hs_taisi", "wangji", "pal_xingxuan", "xunyou", "hs_yelise", "pal_yuejinzhao", "pal_yueqi", + "gjqt_yuewuyi", "swd_yuxiaoxue", "ow_zhaliya", "zhangchunhua", "hs_zhihuanhua", "swd_zhiyin", "old_zhonghui", "gjqt_bailitusu", + "hs_barnes", "ow_dva", "swd_hengai", "pal_jushifang", "hs_kazhakusi", "hs_lafamu", "ow_liekong", "hs_lreno", "pal_mingxiu", + "swd_murongshi", "gw_oudimu", "gjqt_ouyangshaogong", "hs_pyros", "qinmi", "gw_sanhanya", "hs_selajin", "swd_shuwaner", + "swd_situqiang", "hs_xialikeer", "pal_xuejian", "swd_yuchiyanhong", "swd_yuwentuo", "swd_zhaoyun", "zhugeliang", "gw_aigeleisi", + "gw_aimin", "gjqt_aruan", "hs_aya", "swd_cheyun", "swd_chenjingchou", "gw_diandian", "swd_huzhongxian", "hs_jinglinglong", + "hs_kaituozhe", "hs_kalimosi", "gw_linjing", "ow_luxiao", "re_luxun", "hs_morgl", "swd_sikongyu", "hs_sthrall", "sunquan", + "sunshangxiang", "gw_yioufeisisp", "gw_yisilinni", "hs_yogg", "hs_ysera", "pal_yuntianhe", "zhugejin", "zhugeke", "gw_zhuoertan", + "hs_anduin", "swd_anka", "ow_banzang", "ow_chanyata", "diaochan", "swd_duguningke", "sp_diaochan", "hetaihou", "ns_huamulan", + "swd_huanglei", "swd_huanyuanzhi", "re_huatuo", "gw_huoge", "pal_jiangcheng", "yj_jushou", "swd_kendi", "yxs_libai", + "mtg_lilianna", "xin_liru", "liuxie", "pal_lixiaoyao", "pal_longkui", "ns_nanhua", "swd_qi", "swd_septem", "gw_shasixiwusi", + "ow_tianshi", "swd_weida", "gjqt_xiayize", "swd_xiyan", "hs_xsylvanas", "hs_yelinlonghou", "ow_yuanshi", "zuoci"]; + var vintage = ["tianjian", "shuiyun", "zhuyue", "zhimeng", "poyun", "qianfang", "xfenxin", "danqing", "ywuhun", "tianwu", "xuelu", + "shahun", "yuling", "duhun", "liaoyuan", "touxi", "wangchen", "poyue", "kunlunjing", "huanhun", "yunchou", "tuzhen", "cyqiaoxie", + "mufeng", "duanyi", "guozao", "yaotong", "pozhen", "tanlin", "susheng", "jikong", "shouyin", "jilve", "hxunzhi", "huodan", "shanxian", + "ziyu", "kuoyin", "feiren", "zihui", "jidong", "baoxue", "aqianghua", "maoding", "bfengshi", "zhongdun", "pingzhang", "maichong", + "guozai", "jingxiang", "yuelu", "liechao", "fengnu", "hanshuang", "enze", "malymowang", "xshixin", "qingzun"]; + var favmodes = ["versus|three", "versus|four", "versus|two", "chess|combat"]; + for (var i = 0; i < mode.length; i++) { + game.saveConfig(mode[i] + "_banned", banned); + game.saveConfig(mode[i] + "_bannedcards", bannedcards); + } + var characters = lib.config.all.characters.slice(0); + characters.remove("standard"); + characters.remove("old"); + game.saveConfig("vintageSkills", vintage); + game.saveConfig("favouriteCharacter", favs); + game.saveConfig("favouriteMode", favmodes); + game.saveConfig("theme", "simple"); + game.saveConfig("player_border", "slim"); + game.saveConfig("cards", lib.config.all.cards); + game.saveConfig("characters", characters); + game.saveConfig("change_skin", false); + game.saveConfig("show_splash", "off"); + game.saveConfig("show_favourite", false); + game.saveConfig("animation", false); + game.saveConfig("hover_all", false); + game.saveConfig("asset_version", "v1.9"); + // game.saveConfig("characters",lib.config.all.characters); + // game.saveConfig("cards",lib.config.all.cards); + game.saveConfig("plays", ["cardpile"]); + game.saveConfig("skip_shan", false); + game.saveConfig("tao_enemy", true); + game.saveConfig("layout", "long2"); + game.saveConfig("hp_style", "ol"); + game.saveConfig("background_music", "music_off"); + game.saveConfig("background_audio", false); + game.saveConfig("background_speak", false); + game.saveConfig("show_volumn", false); + game.saveConfig("show_replay", true); + game.saveConfig("autostyle", true); + game.saveConfig("debug", true); + game.saveConfig("dev", true); + if (!lib.device) { + game.saveConfig("sync_speed", false); + } + game.reload(); + } + + static o() { + ui.arena.classList.remove("observe"); + } + + static pt() { + var list = Array.from(arguments); + while (list.length) { + var card = cheat.gn(list.pop()); + if (card) ui.cardPile.insertBefore(card, ui.cardPile.firstChild); + } + } + + static q() { + if (arguments.length == 0) { + var style = ui.css.card_style; + if (lib.config.card_style != "simple") { + lib.config.card_style = "simple"; + ui.css.card_style = lib.init.css(lib.assetURL + "theme/style/card", "simple"); + } + else { + lib.config.card_style = "default"; + ui.css.card_style = lib.init.css(lib.assetURL + "theme/style/card", "default"); + } + style.remove(); + } + else { + for (var i = 0; i < arguments.length; i++) { + cheat.g(arguments[i]); + } + } + ui.arena.classList.remove("selecting"); + ui.arena.classList.remove("tempnoe"); + } + + static p(name, i, skin) { + var list = ["swd", "hs", "pal", "gjqt", "ow", "gw"]; + if (!lib.character[name]) { + for (var j = 0; j < list.length; j++) { + if (lib.character[list[j] + "_" + name]) { + name = list[j] + "_" + name; break; + } + } + } + if (skin) { + lib.config.skin[name] = skin + } + var target; + if (typeof i == "number") { + target = game.players[i]; + } + else { + target = game.me.next; + } + if (!lib.character[name]) { + target.node.avatar.setBackground(name, "character"); + target.node.avatar.show(); + } + else { + target.init(name); + } + if (i === true) { + if (lib.config.layout == "long2") { + lib.init.layout("mobile"); + } + else { + lib.init.layout("long2"); + } + } + } + + static e() { + var cards = [], target; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + target = arguments[i]; + } + else { + cards.push(game.createCard(arguments[i])); + } + } + if (!cards.length) { + cards.push(game.createCard("qilin")); + cards.push(game.createCard("bagua")); + cards.push(game.createCard("dilu")); + cards.push(game.createCard("chitu")); + cards.push(game.createCard("muniu")); + } + target = target || game.me; + for (var i = 0; i < cards.length; i++) { + var card = target.getEquip(cards[i]); + if (card) { + card.discard(); + target.removeEquipTrigger(card); + } + target.$equip(cards[i]); + } + } + + static c() { + (function () { + var a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0; + var sa = 0, sb = 0, sc = 0, sd = 0, se = 0, sf = 0, sg = 0; + for (var i in lib.character) { + switch (lib.character[i][1]) { + case "wei": a++; if (lib.config.banned.contains(i)) sa++; break; + case "shu": b++; if (lib.config.banned.contains(i)) sb++; break; + case "wu": c++; if (lib.config.banned.contains(i)) sc++; break; + case "qun": d++; if (lib.config.banned.contains(i)) sd++; break; + case "jin": g++; if (lib.config.banned.contains(i)) sg++; break; + case "western": e++; if (lib.config.banned.contains(i)) se++; break; + case "key": f++; if (lib.config.banned.contains(i)) sf++; break; + } + } + console.log("魏:" + (a - sa) + "/" + a); + console.log("蜀:" + (b - sb) + "/" + b); + console.log("吴:" + (c - sc) + "/" + c); + console.log("群:" + (d - sd) + "/" + d); + console.log("晋:" + (g - sg) + "/" + g); + console.log("西:" + (e - se) + "/" + e); + console.log("键:" + (f - sf) + "/" + f); + console.log("已启用:" + ((a + b + c + d + e + f) - (sa + sb + sc + sd + se + sf)) + "/" + (a + b + c + d + e + f)); + }()); + (function () { + var a = 0, b = 0, c = 0, d = 0; + var aa = 0, bb = 0, cc = 0, dd = 0; + var sa = 0, sb = 0, sc = 0, sd = 0; + var sha = 0, shan = 0, tao = 0, jiu = 0, wuxie = 0, heisha = 0, hongsha = 0; + var num = { 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 0, 11: 0, 12: 0, 13: 0 }; + for (var i in lib.card) { + if (get.objtype(lib.card[i]) == "object" && lib.translate[i + "_info"]) { + switch (lib.card[i].type) { + case "basic": a++; break; + case "trick": b++; break; + case "equip": c++; break; + default: d++; break; + } + } + } + for (var i = 0; i < lib.card.list.length; i++) { + if (typeof lib.card[lib.card.list[i][2]] == "object") { + switch (lib.card[lib.card.list[i][2]].type) { + case "basic": aa++; break; + case "trick": case "delay": bb++; break; + case "equip": cc++; break; + default: dd++; break; + } + switch (lib.card.list[i][0]) { + case "heart": sa++; break; + case "diamond": sb++; break; + case "club": sc++; break; + case "spade": sd++; break; + } + if (lib.card.list[i][2] == "sha") { + sha++; + if (lib.card.list[i][0] == "club" || lib.card.list[i][0] == "spade") { + heisha++; + } + else { + hongsha++; + } + } + if (lib.card.list[i][2] == "shan") { + shan++; + } + if (lib.card.list[i][2] == "tao") { + tao++; + } + if (lib.card.list[i][2] == "jiu") { + jiu++; + } + if (lib.card.list[i][2] == "wuxie") { + wuxie++; + } + num[lib.card.list[i][1]]++; + } + } + var str = "基本牌" + aa + "; " + "锦囊牌" + bb + "; " + "装备牌" + cc + "; " + "其它牌" + dd + console.log(str); + str = "红桃牌" + sa + "; " + "方片牌" + sb + "; " + "梅花牌" + sc + "; " + "黑桃牌" + sd + console.log(str); + str = "杀" + sha + "; " + "黑杀" + heisha + "; " + "红杀" + hongsha + "; " + "闪" + shan + "; " + "桃" + tao + "; " + "酒" + jiu + "; " + "无懈" + wuxie + console.log(str); + if (arguments[1]) { + for (var i = 1; i <= 13; i++) { + if (i < 10) { + console.log(i + " ", num[i]); + } + else { + console.log(i, num[i]); + } + } + } + var arr = []; + for (var i = 1; i <= 13; i++) { + arr.push(num[i]); + } + console.log((a + b + c + d) + "/" + (aa + bb + cc + dd), ...arr) + }()); + } + + static id() { + game.showIdentity(); + } + + static b() { + if (!ui.dialog || !ui.dialog.buttons) return; + for (var i = 0; i < Math.min(arguments.length, ui.dialog.buttons.length); i++) { + ui.dialog.buttons[i].link = arguments[i]; + } + } + + static uy(me) { + if (me) { + game.me.useCard({ name: "spell_yexinglanghun" }, game.me); + } + else { + var enemy = game.me.getEnemy(); + enemy.useCard({ name: "spell_yexinglanghun" }, enemy); + } + } + + static gs(name, act) { + var card = game.createCard("spell_" + (name || "yexinglanghun")); + game.me.node.handcards1.appendChild(card); + if (!act) { + game.me.actused = -99; + } + ui.updatehl(); + delete _status.event._cardChoice; + delete _status.event._targetChoice; + delete _status.event._skillChoice; + setTimeout(game.check, 300); + } + + static gc(name, act) { + var card = game.createCard("stone_" + (name || "falifulong") + "_stonecharacter"); + game.me.node.handcards1.appendChild(card); + if (!act) { + game.me.actused = -99; + } + ui.updatehl(); + delete _status.event._cardChoice; + delete _status.event._targetChoice; + delete _status.event._skillChoice; + setTimeout(game.check, 300); + } + + static a(bool) { + if (lib.config.test_game) { + game.saveConfig("test_game"); + } + else { + if (bool) { + if (typeof bool === "string") { + game.saveConfig("test_game", bool); + } + else { + game.saveConfig("test_game", "_"); + } + } + else { + game.saveConfig("test_game", true); + } + } + game.reload(); + } + + static as() { + ui.window.classList.remove("testing"); + var bg = ui.window.querySelector(".pausedbg"); + if (bg) { + bg.remove(); + } + } + + static uj() { + cheat.e("qilin"); + game.me.next.useCard({ name: "jiedao" }, [game.me, game.me.previous]); + } + + static u() { + var card = { name: "sha" }, source = game.me.next, targets = []; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + source = arguments[i]; + } + else if (Array.isArray(arguments[i])) { + targets = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i]) { + card = arguments[i]; + } + else if (typeof arguments[i] == "string") { + card = { name: arguments[i] } + } + } + if (!targets.length) targets.push(game.me); + source.useCard(game.createCard(card.name, card.suit, card.number, card.nature), targets); + } + + static r(bool) { + var list = ["s", "ap", "a", "am", "bp", "b", "bm", "c", "d"]; + var str = ""; + for (var i = 0; i < list.length; i++) { + if (str) str += " 、 "; + str += list[i] + "-" + lib.rank[list[i]].length; + } + console.log(str); + for (var i in lib.characterPack) { + if (!bool && lib.config.all.sgscharacters.contains(i)) continue; + var map = {}; + var str = ""; + for (var j in lib.characterPack[i]) { + var rank = get.rank(j); + if (!map[rank]) { + map[rank] = 1; + } + else { + map[rank]++; + } + } + for (var j = 0; j < list.length; j++) { + if (map[list[j]]) { + if (str) str += " 、 "; + str += list[j] + "-" + map[list[j]]; + } + } + if (str) { + console.log(lib.translate[i + "_character_config"] + ":" + str); + } + } + + var list = lib.rank.s.concat(lib.rank.ap).concat(lib.rank.a).concat(lib.rank.am). + concat(lib.rank.bp).concat(lib.rank.b).concat(lib.rank.bm).concat(lib.rank.c).concat(lib.rank.d); + Object.keys(lib.character).forEach(key => { + if (!lib.config.forbidai.includes(key) && !key.startsWith("boss_") && !key.startsWith("tafang_") && !list.includes(key)) console.log(get.translation(key), key); + }); + } + + static h(player) { + console.log(get.translation(player.getCards("h"))); + } + + static g() { + for (var i = 0; i < arguments.length; i++) { + if (i > 0 && typeof arguments[i] == "number") { + for (var j = 0; j < arguments[i] - 1; j++) { + cheat.gx(arguments[i - 1]); + } + } + else { + cheat.gx(arguments[i]); + } + } + } + + static ga(type) { + for (var i in lib.card) { + if (lib.card[i].type == type || lib.card[i].subtype == type) { + cheat.g(i); + } + } + } + + static gg() { + for (var i = 0; i < game.players.length; i++) { + for (var j = 0; j < arguments.length; j++) { + cheat.gx(arguments[j], game.players[i]); + } + } + } + + static gx(name, target) { + target = target || game.me; + var card = cheat.gn(name); + if (!card) return; + target.node.handcards1.appendChild(card); + delete _status.event._cardChoice; + delete _status.event._targetChoice; + delete _status.event._skillChoice; + game.check(); + target.update(); + ui.updatehl(); + } + + static gn(name) { + var nature = null; + var suit = null; + var suits = ["club", "spade", "diamond", "heart"]; + for (var i = 0; i < suits.length; i++) { + if (name.startsWith(suits[i])) { + suit = suits[i]; + name = name.slice(suits[i].length); + break; + } + } + if (name.startsWith("red")) { + name = name.slice(3); + suit = ["diamond", "heart"].randomGet(); + } + if (name.startsWith("black")) { + name = name.slice(5); + suit = ["spade", "club"].randomGet(); + } + + if (name == "huosha") { + name = "sha"; + nature = "fire"; + } + else if (name == "leisha") { + name = "sha"; + nature = "thunder"; + } + if (!lib.card[name]) { + return null; + } + return game.createCard(name, suit, null, nature); + } + + static ge(target) { + if (target) { + cheat.gx("zhuge", target); + cheat.gx("qinglong", target); + cheat.gx("bagua", target); + cheat.gx("dilu", target); + cheat.gx("chitu", target); + cheat.gx("muniu", target); + } + else { + cheat.g("zhuge"); + cheat.g("qinglong"); + cheat.g("bagua"); + cheat.g("dilu"); + cheat.g("chitu"); + cheat.g("muniu"); + } + } + + static gj() { + cheat.g("shandian"); + cheat.g("huoshan"); + cheat.g("hongshui"); + cheat.g("lebu"); + cheat.g("bingliang"); + cheat.g("guiyoujie"); + } + + static gf() { + for (var i in lib.card) { + if (lib.card[i].type == "food") { + cheat.g(i); + } + } + } + + static d(num, target) { + if (num == undefined) num = 1; + var cards = get.cards(num); + for (var i = 0; i < num; i++) { + var card = cards[i]; + game.me.node.handcards1.appendChild(card); + delete _status.event._cardChoice; + delete _status.event._targetChoice; + delete _status.event._skillChoice; + game.check(); + game.me.update(); + ui.updatehl(); + } + } + + static s() { + for (var i = 0; i < arguments.length; i++) { + game.me.addSkill(arguments[i], true); + } + delete _status.event._cardChoice; + delete _status.event._targetChoice; + delete _status.event._skillChoice; + game.check(); + } + + static t(num) { + if (game.players.contains(num)) { + num = game.players.indexOf(num); + } + if (num == undefined) { + for (var i = 0; i < game.players.length; i++) cheat.t(i); + return; + } + var player = game.players[num]; + var cards = player.getCards("hej"); + for (var i = 0; i < cards.length; i++) { + cards[i].discard(); + } + player.removeEquipTrigger(); + player.update(); + } + + static to() { + for (var i = 0; i < game.players.length; i++) { + if (game.players[i] != game.me) { + cheat.t(i); + } + } + } + + static tm() { + for (var i = 0; i < game.players.length; i++) { + if (game.players[i] == game.me) { + cheat.t(i); + } + } + } + + static k(i) { + if (i == undefined) i = 1; + game.players[i].hp = 1; + cheat.t(i); + cheat.g("juedou"); + } + + static z(name) { + switch (name) { + case "cc": name = "re_caocao"; break; + case "lb": name = "re_liubei"; break; + case "sq": name = "sunquan"; break; + case "dz": name = "dongzhuo"; break; + case "ys": name = "re_yuanshao"; break; + case "zj": name = "sp_zhangjiao"; break; + case "ls": name = "liushan"; break; + case "sc": name = "sunce"; break; + case "cp": name = "caopi"; break; + case "cr": name = "caorui"; break; + case "sx": name = "sunxiu"; break; + case "lc": name = "liuchen"; break; + case "sh": name = "sunhao"; break; + } + game.zhu.init(name); + game.zhu.maxHp++; + game.zhu.hp++; + game.zhu.update(); + } +} diff --git a/noname/library/color.js b/noname/library/color.js new file mode 100644 index 000000000..09d92642e --- /dev/null +++ b/noname/library/color.js @@ -0,0 +1,5 @@ +export const color = { + black: ["club", "spade"], + red: ["diamond", "heart"], + none: ["none"] +}; diff --git a/noname/library/comparator.js b/noname/library/comparator.js new file mode 100644 index 000000000..9d73cea8b --- /dev/null +++ b/noname/library/comparator.js @@ -0,0 +1,41 @@ +export class Comparator { + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } + + static equals() { + if (arguments.length == 0) return false; + if (arguments.length == 1) return true; + for (let i = 1; i < arguments.length; ++i) if (arguments[i] !== arguments[0]) return false; + return true; + } + + static equalAny() { + if (arguments.length == 0) return false; + if (arguments.length == 1) return true; + for (let i = 1; i < arguments.length; ++i) if (arguments[i] === arguments[0]) return true; + return false; + } + + static notEquals() { + if (arguments.length == 0) return false; + if (arguments.length == 1) return true; + for (let i = 1; i < arguments.length; ++i) if (arguments[i] === arguments[0]) return false; + return true; + } + + static notEqualAny() { + if (arguments.length == 0) return false; + if (arguments.length == 1) return true; + for (let i = 1; i < arguments.length; ++i) if (arguments[i] !== arguments[0]) return true; + return false; + } + + static typeEquals() { + if (arguments.length == 0) return false; + if (arguments.length == 1) return arguments[0] !== null; + const type = typeof arguments[0]; + for (let i = 1; i < arguments.length; ++i) if (type !== arguments[i]) return false; + return true; + } +} diff --git a/noname/library/configuration-menu/appearance/configuration/theme.js b/noname/library/configuration-menu/appearance/configuration/theme.js index 80b3f6b11..2d8c0be8e 100644 --- a/noname/library/configuration-menu/appearance/configuration/theme.js +++ b/noname/library/configuration-menu/appearance/configuration/theme.js @@ -1,5 +1,5 @@ import { Game } from "../../../../game.js"; -import { gnc } from "../../../../gnc.js"; +import { GNC } from "../../../../gnc.js"; import { Library } from "../../../../library.js"; import { UI } from "../../../../ui.js"; import { Create } from "../../../../ui/create.js"; @@ -19,7 +19,7 @@ export const THEME = { node.menu = Create.div(node, "", "
    "); } }, - onclick: gnc.of(function* (theme) { + onclick: GNC.of(function* (theme) { Game.saveConfig("theme", theme); UI.arena.hide(); Initialization.background(); diff --git a/noname/library/creation.js b/noname/library/creation.js new file mode 100644 index 000000000..6b6f7a85a --- /dev/null +++ b/noname/library/creation.js @@ -0,0 +1,21 @@ +export class Creation { + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } + + static get array() { + return []; + } + + static get object() { + return {}; + } + + static get nullObject() { + return Object.create(null); + } + + static get string() { + return ""; + } +} diff --git a/noname/library/element.js b/noname/library/element.js index 2b1a49366..fbee217db 100644 --- a/noname/library/element.js +++ b/noname/library/element.js @@ -1,9 +1,8212 @@ +import { Button } from "./element/button.js"; +import { Card } from "./element/card.js"; +import { Client } from "./element/client.js"; +import { Control } from "./element/control.js"; +import { Dialog } from "./element/dialog.js"; +import { GameEventPromise } from "./element/game-event-promise.js"; import { GameEvent } from "./element/game-event.js"; +import { NodeWS } from "./element/node-ws.js"; import { Player } from "./element/player.js"; import { VCard } from "./element/v-card.js"; +import { WS } from "./element/ws.js"; export const element = { + content: { + emptyEvent: function () { + event.trigger(event.name); + }, + //增加明置手牌 + addShownCards: () => { + var hs = player.getCards("h"), showingCards = event._cards.filter(showingCard => hs.includes(showingCard)), shown = player.getShownCards(); + event.gaintag.forEach(tag => player.addGaintag(showingCards, tag)); + if (!(event.cards = showingCards.filter(showingCard => !shown.includes(showingCard))).length) return; + game.log(player, "明置了", event.cards); + if (event.animate != false) player.$give(event.cards, player, false); + event.trigger("addShownCardsAfter"); + }, + //隐藏明置手牌 + hideShownCards: () => { + var shown = player.getShownCards(), hidingCards = event._cards.filter(hidingCard => shown.includes(hidingCard)); + if (!hidingCards.length) return; + if (event.gaintag.length) event.gaintag.forEach(tag => player.removeGaintag(tag, hidingCards)); + else { + var map = hidingCards.reduce((constructingMap, hidingCard) => { + hidingCard.gaintag.forEach(tag => { + if (!tag.startsWith("visible_")) return; + if (!constructingMap[tag]) constructingMap[tag] = []; + constructingMap[tag].push(hidingCard); + }); + return constructingMap; + }, {}); + Object.keys(map).forEach(key => player.removeGaintag(key, map[key])); + } + hidingCards.removeArray(player.getShownCards()); + if (!hidingCards.length) return; + game.log(player, "取消明置了", event.cards = hidingCards); + if (event.animate != false) player.$give(hidingCards, player, false); + event.trigger("hideShownCardsAfter"); + }, + //Execute the delay card effect + //执行延时锦囊牌效果 + executeDelayCardEffect: () => { + "step 0" + target.$phaseJudge(card); + event.cancelled = false; + event.trigger("executeDelayCardEffect"); + event.cardName = card.viewAs || card.name; + target.popup(event.cardName, "thunder"); + if (!lib.card[event.cardName].effect) { + game.delay(); + event.finish(); + } + else if (!lib.card[event.cardName].judge) { + game.delay(); + event.nojudge = true; + } + "step 1" + if (event.cancelled || event.nojudge) return; + var next = player.judge(card), judge = event.judge; + if (typeof judge == "function") next.judge = judge; + var judge2 = event.judge2; + if (typeof judge2 == "function") next.judge2 = judge2; + "step 2" + if (event.excluded) delete event.excluded; + else { + var cardName = event.cardName; + if (event.cancelled && !event.direct) { + var cardCancel = lib.card[cardName].cancel; + if (cardCancel) { + var next = game.createEvent(`${cardName}Cancel`); + next.setContent(cardCancel); + next.cards = [card]; + if (!card.viewAs) { + var autoViewAs = next.card = get.autoViewAs(card); + autoViewAs.expired = card.expired; + } + else { + var autoViewAs = next.card = get.autoViewAs({ + name: cardName + }, next.cards); + autoViewAs.expired = card.expired; + } + next.player = player; + } + } + else { + var next = game.createEvent(cardName); + next.setContent(lib.card[cardName].effect); + next._result = result; + next.cards = [card]; + if (!card.viewAs) { + var autoViewAs = next.card = get.autoViewAs(card); + autoViewAs.expired = card.expired; + } + else { + var autoViewAs = next.card = get.autoViewAs({ + name: cardName + }, next.cards); + autoViewAs.expired = card.expired; + } + next.player = player; + } + } + ui.clear(); + card.delete(); + }, + //Gift + //赠予 + gift: () => { + "step 0" + event.num = 0; + "step 1" + if (num < cards.length) { + event.card = cards[num]; + event.trigger("gift"); + } + else { + game.delayx(); + event.finish(); + } + "step 2" + if (event.deniedGifts.includes(card)) { + game.log(target, "拒绝了", player, "赠予的", card); + event.trigger("giftDeny"); + player.loseToDiscardpile(card).log = false; + event.trigger("giftDenied"); + return; + } + game.log(player, "将", card, "赠予了", target); + player.$give(card, target, false); + game.delay(0.5); + event.trigger("giftAccept"); + if (get.type(card, false) == "equip") target.equip(card).log = false; + else target.gain(card, player).visible = true; + event.trigger("giftAccepted"); + "step 3" + event.num++; + event.goto(1); + }, + //Recast + //重铸 + recast: () => { + "step 0" + game.log(player, "重铸了", cards); + if (typeof event.recastingLose != "function") return; + event.trigger("recastingLose"); + event.recastingLose(player, cards); + event.trigger("recastingLost"); + event.recastingLosingEvents.push(...event.next.filter(value => value.name != "arrangeTrigger")); + "step 1" + event.trigger("recast"); + "step 2" + if (typeof event.recastingGain != "function") return; + event.trigger("recastingGain"); + event.recastingGain(player, cards); + event.trigger("recastingGained"); + event.recastingGainingEvents.push(...event.next.filter(value => value.name != "arrangeTrigger")); + }, + //装备栏相关 + disableEquip: function () { + "step 0" + event.cards = []; + event.num = 0; + event.slotsx = []; + if (get.is.mountCombined()) { + event.slots.forEach(type => { + if (type == "equip3" || type == "equip4") event.slotsx.add("equip3_4"); + else event.slotsx.add(type) + }); + } + else { + event.slotsx.addArray(event.slots); + } + event.slotsx.sort(); + if (!event.slots.length) event.finish(); + "step 1" + var slot = event.slotsx[event.num]; + var slot_key = slot; + var left = player.countEnabledSlot(slot), lose; + if (slot == "equip3_4") { + lose = Math.min(left, Math.max(get.numOf(event.slots, "equip3"), get.numOf(event.slots, "equip4"))); + slot_key = "equip3"; + } + else lose = Math.min(left, get.numOf(event.slots, slot)); + if (lose <= 0) event.goto(3); + else { + game.log(player, "废除了" + get.cnNumber(lose) + "个", "#g" + get.translation(slot) + "栏"); + if (!player.disabledSlots) player.disabledSlots = {}; + if (!player.disabledSlots[slot_key]) player.disabledSlots[slot_key] = 0; + player.disabledSlots[slot_key] += lose; + var cards = player.getEquips(slot).filter(card => !event.cards.contains(card)); + if (cards.length > 0) { + if (lose >= left) { + event._result = { bool: true, links: cards }; + } + else if (cards.length > (left - lose)) { + var source = event.source, num = (cards.length - (left - lose)); + if (!source || !source.isIn()) source = player; + source.chooseButton([ + "选择" + (player == source ? "你" : get.translation(player)) + "的" + get.cnNumber(num) + "张" + get.translation(slot) + "牌置入弃牌堆", + cards, + ], true, [1, num]).set("filterOk", function () { + var evt = _status.event; + return ui.selected.buttons.reduce(function (num, button) { + if (evt.slot == "equip3_4") return num + Math.max(get.numOf(get.subtypes(button.link, false), "equip3"), get.numOf(get.subtypes(button.link, false), "equip4")); + return num + get.numOf(get.subtypes(button.link, false), evt.slot) + }, 0) == evt.required; + }).set("required", num).set("slot", slot) + } + else event.goto(3); + } + else event.goto(3) + } + "step 2" + if (result.bool) event.cards.addArray(result.links); + "step 3" + event.num++; + if (event.num < event.slotsx.length) event.goto(1); + else { + player.$syncDisable(); + if (cards.length > 0) player.loseToDiscardpile(cards); + } + }, + enableEquip: function () { + if (!event.slots.length) return; + var slotsx = [...new Set(event.slots)].sort(); + for (var slot of slotsx) { + var lost = player.countDisabledSlot(slot), gain = Math.min(lost, get.numOf(event.slots, slot)); + if (lost <= 0) continue; + else { + game.log(player, "恢复了" + get.cnNumber(gain) + "个", "#g" + get.translation(slot) + "栏"); + if (!player.disabledSlots) player.disabledSlots = {}; + if (!player.disabledSlots[slot]) player.disabledSlots[slot] = 0; + player.disabledSlots[slot] -= gain; + } + } + player.$syncDisable(); + }, + expandEquip: function () { + if (!event.slots.length) return; + var slotsx = []; + if (get.is.mountCombined()) { + event.slots.forEach(type => { + if (type == "equip3" || type == "equip4") slotsx.add("equip3_4"); + else slotsx.add(type) + }); + } + else { + slotsx.addArray(event.slots); + } + slotsx.sort(); + for (var slot of slotsx) { + var expand = get.numOf(event.slots, slot), slot_key = slot; + if (slot == "equip3_4") { + expand = Math.max(get.numOf(event.slots, "equip3"), get.numOf(event.slots, "equip4")); + slot_key = "equip3"; + } + game.log(player, "获得了" + get.cnNumber(expand) + "个额外的", "#g" + get.translation(slot) + "栏"); + if (!player.expandedSlots) player.expandedSlots = {}; + if (!player.expandedSlots[slot_key]) player.expandedSlots[slot_key] = 0; + player.expandedSlots[slot_key] += expand; + } + player.$syncExpand(); + }, + //选择顶装备要顶的牌 + replaceEquip: function () { + "step 0" + event.cards = []; + var types = get.subtypes(card, false); + if (types.length) { + var info = get.info(card, false); + if (info.customSwap) { + event.cards.addArray(player.getCards("e", function (card) { + return info.customSwap(card); + })); + event.goto(4); + } + else { + event.num = 0; + event.slots = types; + event.slotsx = []; + if (get.is.mountCombined()) { + event.slots.forEach(type => { + if (type == "equip3" || type == "equip4") event.slotsx.add("equip3_4"); + else event.slotsx.add(type) + }); + } + else { + event.slotsx.addArray(event.slots); + } + event.slotsx.sort(); + } + } + else event.goto(4); + "step 1" + var slot = event.slotsx[event.num]; + var left = player.countEquipableSlot(slot), lose; + if (slot == "equip3_4") lose = Math.min(left, Math.max(get.numOf(event.slots, "equip3"), get.numOf(event.slots, "equip4"))); + else lose = Math.min(left, get.numOf(event.slots, slot)); + if (lose <= 0) event.goto(3); + else { + var cards = player.getEquips(slot).filter(card => { + return !event.cards.contains(card) && lib.filter.canBeReplaced(card, player); + }); + if (cards.length > 0) { + if (lose >= left) { + event._result = { bool: true, links: cards }; + } + else if (cards.length > (left - lose)) { + var source = event.source, num = (cards.length - (left - lose)); + if (!source || !source.isIn()) source = player; + source.chooseButton([ + "选择替换掉" + get.cnNumber(num) + "张" + get.translation(slot) + "牌", + cards, + ], true, [1, num]).set("filterOk", function () { + var evt = _status.event; + return ui.selected.buttons.reduce(function (num, button) { + if (evt.slot == "equip3_4") return num + Math.max(get.numOf(get.subtypes(button.link, false), "equip3"), get.numOf(get.subtypes(button.link, false), "equip4")); + return num + get.numOf(get.subtypes(button.link, false), evt.slot) + }, 0) == evt.required; + }).set("required", num).set("slot", slot) + } + else event.goto(3); + } + else event.goto(3) + } + "step 2" + if (result.bool) event.cards.addArray(result.links); + "step 3" + event.num++; + if (event.num < event.slotsx.length) event.goto(1); + "step 4" + event.result = cards; + }, + //装备牌 + equip: function () { + "step 0" + var owner = get.owner(card) + if (owner) { + event.owner = owner; + owner.lose(card, ui.special, "visible").set("type", "equip").set("getlx", false); + } + else if (get.position(card) == "c") event.updatePile = true; + "step 1" + if (event.cancelled) { + event.finish(); + return; + } + if (card.willBeDestroyed("equip", player, event)) { + card.selfDestroy(event); + event.finish(); + return; + } + else if (event.owner) { + if (event.owner.getCards("hejsx").contains(card)) { + event.finish(); + return; + } + } + if (event.draw) { + game.delay(0, 300); + player.$draw(card); + } + "step 2" + if (card.clone) { + game.broadcast(function (card, player) { + if (card.clone) { + card.clone.moveDelete(player); + } + }, card, player); + card.clone.moveDelete(player); + game.addVideo("gain2", player, get.cardsInfo([card.clone])); + } + player.equiping = true; + "step 3" + var info = get.info(card, false); + var next = game.createEvent("replaceEquip"); + next.player = player; + next.card = card; + next.setContent(info.replaceEquip || "replaceEquip"); + "step 4" + var info = get.info(card, false); + if (get.itemtype(result) == "cards") { + player.lose(result, "visible").set("type", "equip").set("getlx", false).swapEquip = true; + if (info.loseThrow) { + player.$throw(result, 1000); + } + event.swapped = true; + } + "step 5" + //if(player.isMin() || player.countCards("e",{subtype:get.subtype(card)})){ + if (player.isMin() || !player.canEquip(card)) { + event.finish(); + game.cardsDiscard(card); + delete player.equiping; + return; + } + var subtype = get.subtype(card); + if (subtype == "equip6") subtype = "equip3"; + game.broadcastAll(function (type) { + if (lib.config.background_audio) { + game.playAudio("effect", type); + } + }, subtype); + player.$equip(card); + game.addVideo("equip", player, get.cardInfo(card)); + if (event.log != false) game.log(player, "装备了", card); + if (event.updatePile) game.updateRoundNumber(); + "step 6" + var info = get.info(card, false); + if (info.onEquip && (!info.filterEquip || info.filterEquip(card, player))) { + if (Array.isArray(info.onEquip)) { + for (var i = 0; i < info.onEquip.length; i++) { + var next = game.createEvent("equip_" + card.name); + next.setContent(info.onEquip[i]); + next.player = player; + next.card = card; + } + } + else { + var next = game.createEvent("equip_" + card.name); + next.setContent(info.onEquip); + next.player = player; + next.card = card; + } + if (info.equipDelay != false) game.delayx(); + } + delete player.equiping; + if (event.delay) { + game.delayx(); + } + }, + //装备栏 END + changeGroup: function () { + "step 0" + event.originGroup = player.group; + if (!event.group) event.group = player.group; + var group = event.group; + player.getHistory("custom").push(event); + if (event.broadcast !== false) { + game.broadcast(function (player, group) { + player.group = group; + player.node.name.dataset.nature = get.groupnature(group); + }, player, group); + } + player.group = group; + player.node.name.dataset.nature = get.groupnature(group); + if (event.log !== false) game.log(player, "将势力变为了", "#y" + get.translation(group + 2)); + }, + chooseToDebate: function () { + "step 0" + event.targets = event.list.filter(function (i) { + return i.countCards("h") > 0; + }); + if (!event.targets.length) event.result = { bool: false }; + else { + var next = player.chooseCardOL(event.targets, get.translation(player) + "发起了议事,请选择展示的手牌", true).set("type", "debate").set("source", player).set("ai", event.ai || function (card) { + return Math.random(); + }).set("aiCard", event.aiCard || function (target) { + var hs = target.getCards("h"); + return { bool: true, cards: [hs.randomGet()] }; + }); + next._args.remove("glow_result"); + } + "step 1" + var red = [], black = []; + event.videoId = lib.status.videoId++; + for (var i = 0; i < event.targets.length; i++) { + var card = result[i].cards[0], target = event.targets[i]; + if (get.color(card, target) == "red") red.push([target, card]); + else black.push([target, card]); + } + event.red = red; event.black = black; + if (red.length) { + game.log(red.map(function (i) { + return i[0]; + }), `意见为红色,展示了`, red.map(function (i) { + return i[1]; + })); + } + else game.log("#b无人", `意见为红色`); + if (black.length) { + game.log(black.map(function (i) { + return i[0]; + }), "意见为", "#g黑色", ",展示了", black.map(function (i) { + return i[1]; + })); + } + else game.log("#b无人", "意见为", "#g黑色"); + game.broadcastAll(function (name, id, redArgs, blackArgs) { + var dialog = ui.create.dialog(name + "发起了议事", "hidden", "forcebutton"); + dialog.videoId = id; + dialog.classList.add("scroll1"); + dialog.classList.add("scroll2"); + dialog.classList.add("fullwidth"); + dialog.classList.add("fullheight"); + dialog.buttonss = []; + + var list = ["意见为红色的角色", "意见为黑色的角色"] + for (var i = 0; i < list.length; i++) { + dialog.add(`
    ${list[i]}
    `); + var buttons = ui.create.div(".buttons", dialog.content); + dialog.buttonss.push(buttons); + buttons.classList.add("popup"); + buttons.classList.add("guanxing"); + } + var func = function (target) { + if (target._tempTranslate) return target._tempTranslate; + var name = target.name; + if (lib.translate[name + "_ab"]) return lib.translate[name + "_ab"]; + return get.translation(name); + }; + for (var i = 0; i < redArgs.length; i++) { + var list = redArgs[i]; + var button = ui.create.button(list[1], "card", dialog.buttonss[0]); + button.querySelector(".info").innerHTML = func(list[0]); + } + for (var i = 0; i < blackArgs.length; i++) { + var list = blackArgs[i]; + var button = ui.create.button(list[1], "card", dialog.buttonss[1]); + button.querySelector(".info").innerHTML = func(list[0]); + } + dialog.open(); + }, get.translation(player), event.videoId, red, black); + game.delay(4); + "step 2" + game.broadcastAll("closeDialog", event.videoId); + var opinion = null; + if (event.red.length > event.black.length) opinion = "red"; + else if (event.red.length < event.black.length) opinion = "black"; + if (opinion) game.log(player, "本次发起的议事结果为", opinion == "red" ? `红色` : "#g黑色"); + else game.log(player, "本次发起的议事无结果"); + event.result = { + bool: true, + opinion: opinion, + red: event.red, + black: event.black, + targets: event.targets + } + "step 3" + if (event.callback) { + var next = game.createEvent("debateCallback", false); + next.player = player; + next.debateResult = get.copy(event.result); + next.setContent(event.callback); + } + }, + delay: function () { + game[event.name].apply(game, event._args) + }, + chooseCooperationFor: function () { + "step 0" + var next = player.chooseButton([ + "选择和" + get.translation(target) + "的协力方式", + [event.cardlist, "vcard"], + ], true); + next.set("ai", event.ai || function () { + return Math.random(); + }); + "step 1" + if (result.bool) { + player.cooperationWith(target, result.links[0][2].slice(12), event.reason); + } + }, + chooseToPlayBeatmap: function () { + "step 0" + if (game.online) return; + if (_status.connectMode) event.time = lib.configOL.choose_timeout; + event.videoId = lib.status.videoId++; + //给其他角色看的演奏框 + game.broadcastAll(function (player, id, beatmap) { + if (_status.connectMode) lib.configOL.choose_timeout = (Math.ceil((beatmap.timeleap[beatmap.timeleap.length - 1] + beatmap.speed * 100 + (beatmap.current || 0)) / 1000) + 5).toString(); + if (player == game.me) return; + var str = get.translation(player) + "正在演奏《" + beatmap.name + "》..."; + if (!_status.connectMode) str += "
    (点击屏幕可以跳过等待AI操作)"; + ui.create.dialog(str).videoId = id; + if (ui.backgroundMusic) ui.backgroundMusic.pause(); + if (lib.config.background_audio) { + if (beatmap.filename.startsWith("ext:")) game.playAudio(beatmap.filename); + else game.playAudio("effect", beatmap.filename); + } + }, player, event.videoId, event.beatmap); + "step 1" + var beatmap = event.beatmap; + if (event.isMine()) { + var timeleap = beatmap.timeleap.slice(0); + var current = beatmap.current; + //获取两个音符的时间间隔 + var getTimeout = function () { + var time = timeleap.shift(); + var out = time - current; + current = time; + return out; + }; + //初始化一堆变量 + var score = 0; + var added = timeleap.length; + var number_of_tracks = beatmap.number_of_tracks || 6; + var custom_mapping = Array.isArray(beatmap.mapping); + var mapping = custom_mapping ? beatmap.mapping.slice() : beatmap.mapping; + var hitsound = beatmap.hitsound || "hitsound.wav"; + if (hitsound.startsWith("ext:")) hitsound = lib.assetURL + "extension/" + hitsound.slice(4); + else hitsound = lib.assetURL + "audio/effect/" + hitsound; + var hitsound_audio = new Audio(hitsound); + hitsound_audio.volume = 0.25; + var abs = 1; + var node_pos = 0; + if (custom_mapping) { + node_pos = mapping.shift(); + } + else if (mapping == "random") { + abs = get.rand(number_of_tracks); + node_pos = abs; + } + var combo = 0; + var max_combo = 0; + var nodes = []; + var roundmenu = false; + //隐藏菜单按钮 + if (ui.roundmenu && ui.roundmenu.display != "none") { + roundmenu = true; + ui.roundmenu.style.display = "none"; + } + if (ui.backgroundMusic) ui.backgroundMusic.pause(); + var event = _status.event; + event.settleed = false; + //建个框框 + var dialog = ui.create.dialog("forcebutton", "hidden"); + event.dialog = dialog; + event.dialog.textPrompt = event.dialog.add(`
    ${beatmap.prompt || "在音符滑条和底部判定区重合时点击屏幕!"}
    `); + event.switchToAuto = function () { }; + event.dialog.classList.add("fixed"); + event.dialog.classList.add("scroll1"); + event.dialog.classList.add("scroll2"); + event.dialog.classList.add("fullwidth"); + event.dialog.classList.add("fullheight"); + event.dialog.classList.add("noupdate"); + event.dialog.style.overflow = "hidden"; + //结束后操作 + event.settle = function () { + if (event.settleed) return; + event.settleed = true; + //评分 + var acc = Math.floor(score / (added * 5) * 100); + if (!Array.isArray(lib.config.choose_to_play_beatmap_accuracies)) lib.config.choose_to_play_beatmap_accuracies = []; + lib.config.choose_to_play_beatmap_accuracies.push(acc); + if (lib.config.choose_to_play_beatmap_accuracies.length > 5) lib.config.choose_to_play_beatmap_accuracies.shift(); + game.saveConfigValue("choose_to_play_beatmap_accuracies"); + var rank; + if (acc == 100) rank = ["SS", "metal"]; + else if (acc >= 94) rank = ["S", "orange"]; + else if (acc >= 87) rank = ["A", "wood"]; + else if (acc >= 80) rank = ["B", "water"]; + else if (acc >= 65) rank = ["C", "thunder"]; + else rank = ["D", "fire"]; + event.dialog.textPrompt.innerHTML = `
    演奏结束!
    最大连击数:${max_combo} 精准度:${acc}%
    `; + game.me.$fullscreenpop(`演奏评级:${rank[0]}`, null, null, false); + //返回结果并继续游戏 + setTimeout(function () { + event._result = { + bool: true, + accuracy: acc, + rank: rank, + }; + event.dialog.close(); + game.resume(); + _status.imchoosing = false; + if (roundmenu) ui.roundmenu.style.display = ""; + if (ui.backgroundMusic) ui.backgroundMusic.play(); + hitsound_audio.remove(); + }, 1000); + }; + event.dialog.open(); + //操作容差 + var height = event.dialog.offsetHeight; + var width = event.dialog.offsetWidth; + var range1 = (beatmap.range1 || [90, 110]); + var range2 = (beatmap.range2 || [93, 107]); + var range3 = (beatmap.range3 || [96, 104]); + var speed = (beatmap.speed || 25); + //初始化底部的条子 + var judger = ui.create.div(""); + judger.style["background-image"] = (beatmap.judgebar_color || "linear-gradient(rgba(240, 235, 3, 1), rgba(230, 225, 5, 1))"); + judger.style["border-radius"] = "3px"; + judger.style.position = "absolute"; + judger.style.opacity = "0.3"; + var heightj = Math.ceil(height * (beatmap.judgebar_height || 0.1)); + judger.style.height = heightj + "px"; + judger.style.width = width + "px"; + judger.style.left = "0px"; + judger.style.top = (height - heightj) + "px"; + event.dialog.appendChild(judger); + //生成每个音符 + var addNode = function () { + var node = ui.create.div(""); + nodes.push(node); + node.style["background-image"] = (beatmap.node_color || "linear-gradient(rgba(120, 120, 240, 1), rgba(100, 100, 230, 1))"); + node.style["border-radius"] = "3px"; + node.style.position = "absolute"; + node.style.height = Math.ceil(height / 10) + "px"; + node.style.width = Math.ceil(width / number_of_tracks) - 10 + "px"; + node._position = get.utc(); + event.dialog.appendChild(node); + + node.style.left = Math.ceil(width * node_pos / number_of_tracks + 5) + "px"; + node.style.top = "-" + (Math.ceil(height / 10)) + "px"; + ui.refresh(node); + node.style.transition = "all " + speed * 110 + "ms linear"; + node.style.transform = "translateY(" + Math.ceil(height * 1.1) + "px)"; + node.timeout = setTimeout(function () { + if (nodes.contains(node)) { + nodes.remove(node); + player.popup("Miss", "fire", false); + if (player.damagepopups.length) player.$damagepop(); + combo = 0; + } + }, speed * 110); + + if (custom_mapping) { + node_pos = mapping.shift(); + } + else if (mapping == "random") { + while (node_pos == abs) { + node_pos = get.rand(number_of_tracks); + } + abs = node_pos; + } + else { + node_pos += abs; + if (node_pos > number_of_tracks - 1) { + abs = -1; + node_pos = number_of_tracks - 2; + } + else if (node_pos < 0) { + abs = 1; + node_pos = 1; + } + } + if (timeleap.length) { + setTimeout(function () { + addNode(); + }, getTimeout()); + } + else { + setTimeout(function () { + event.settle(); + }, speed * 110 + 100) + } + } + //点击时的判断操作 + var click = function () { + if (!nodes.length) return; + for (var node of nodes) { + //用生成到点击的时间差来判断距离 + var time = get.utc(); + var top = (time - node._position) / speed; + if (top > range1[1]) continue; + else if (top < range1[0]) return; + nodes.remove(node); + clearTimeout(node.timeout); + node.style.transform = ""; + node.style.transition = "all 0s"; + node.style.top = (height * ((top - 10) / 100)) + "px"; + ui.refresh(node); + node.style.transition = "all 0.5s"; + node.style.transform = "scale(1.2)"; + node.delete(); + if (top >= range3[0] && top < range3[1]) { + score += 5; + player.popup("Perfect", "orange", false); + } + else if (top >= range2[0] && top < range2[1]) { + score += 3; + player.popup("Great", "wood", false); + } + else { + score += 1; + player.popup("Good", "soil", false); + } + if (player.damagepopups.length) player.$damagepop(); + combo++; + max_combo = Math.max(combo, max_combo); + hitsound_audio.currentTime = 0; + if (hitsound_audio.paused) Promise.resolve(hitsound_audio.play()).catch(() => void 0); + break; + } + }; + document.addEventListener(lib.config.touchscreen ? "touchstart" : "mousedown", click); + + game.pause(); + game.countChoose(); + setTimeout(() => { + if (!lib.config.background_audio) return; + if (beatmap.filename.startsWith("ext:")) game.playAudio(beatmap.filename); + else game.playAudio("effect", beatmap.filename); + }, Math.floor(speed * 100 * (0.9 + beatmap.judgebar_height)) + beatmap.current); + setTimeout(function () { + addNode(); + }, getTimeout()); + } + else if (event.isOnline()) { + event.send(); + } + else { + game.pause(); + game.countChoose(); + var settle = function () { + _status.imchoosing = false; + //Algorithm: Generate the random number range using the mean and the half standard deviation of accuracies of the player"s last 5 plays + //算法:用玩家的上5次游玩的准确率的平均数和半标准差生成随机数范围 + var choose_to_play_beatmap_accuracies = (lib.config.choose_to_play_beatmap_accuracies || []).concat(Array.from({ + length: 6 - (lib.config.choose_to_play_beatmap_accuracies || []).length + }, () => get.rand(70, 100))); + var mean = Math.round(choose_to_play_beatmap_accuracies.reduce((previousValue, currentValue) => previousValue + currentValue) / choose_to_play_beatmap_accuracies.length); + var half_standard_deviation = Math.round(Math.sqrt(choose_to_play_beatmap_accuracies.reduce((previousValue, currentValue) => previousValue + Math.pow(currentValue - mean, 2), 0)) / 2); + var acc = Math.min(Math.max(get.rand.apply(get, beatmap.aiAcc || [mean - half_standard_deviation - get.rand(0, half_standard_deviation), mean + half_standard_deviation + get.rand(0, half_standard_deviation)]), 0), 100); + var rank; + if (acc == 100) rank = ["SS", "metal"]; + else if (acc >= 94) rank = ["S", "orange"]; + else if (acc >= 87) rank = ["A", "green"]; + else if (acc >= 80) rank = ["B", "water"]; + else if (acc >= 65) rank = ["C", "thunder"]; + else rank = ["D", "fire"]; + event._result = { + bool: true, + accuracy: acc, + rank: rank, + }; + if (event.dialog) event.dialog.close(); + if (event.control) event.control.close(); + game.resume(); + }; + var song_duration = beatmap.timeleap[beatmap.timeleap.length - 1] + beatmap.speed * 100 + 1000 + (beatmap.current || 0); + var settle_timeout = setTimeout(settle, song_duration); + if (!_status.connectMode) { + var skip_timeout; + var skip = () => { + settle(); + Array.from(ui.window.getElementsByTagName("audio")).forEach(audio => { + if (audio.currentSrc.includes(beatmap.filename.startsWith("ext:") ? beatmap.name : beatmap.filename)) audio.remove(); + }); + document.removeEventListener(lib.config.touchscreen ? "touchend" : "click", skip); + clearTimeout(settle_timeout); + clearTimeout(skip_timeout); + }; + document.addEventListener(lib.config.touchscreen ? "touchend" : "click", skip); + skip_timeout = setTimeout(() => document.removeEventListener(lib.config.touchscreen ? "touchend" : "click", skip), song_duration); + } + } + "step 2" + game.broadcastAll(function (id, time) { + if (_status.connectMode) lib.configOL.choose_timeout = time; + var dialog = get.idDialog(id); + if (dialog) { + dialog.close(); + } + if (ui.backgroundMusic) ui.backgroundMusic.play(); + }, event.videoId, event.time); + var result = event.result || result; + event.result = result; + }, + chooseToMove: function () { + "step 0" + if (event.chooseTime && _status.connectMode && !game.online) { + event.time = lib.configOL.choose_timeout; + game.broadcastAll(function (time) { + lib.configOL.choose_timeout = time; + }, event.chooseTime); + } + if (event.isMine()) { + delete ui.selected.guanxing_button; + var list = event.list, filterMove = event.filterMove, filterOk = event.filterOk; + _status.imchoosing = true; + var event = _status.event; + event.settleed = false; + event.dialog = ui.create.dialog(event.prompt || "请选择要操作的牌", "hidden", "forcebutton"); + event.switchToAuto = function () { + if (!filterOk(event.moved)) { + if (!event.forced) event._result = { bool: false }; + else event._result = "ai"; + } + else { + event._result = { + bool: true, + moved: event.moved, + }; + } + event.dialog.close(); + if (ui.confirm) ui.confirm.close(); + game.resume(); + _status.imchoosing = false; + setTimeout(function () { + ui.arena.classList.remove("choose-to-move"); + }, 500); + }; + event.dialog.classList.add("scroll1"); + event.dialog.classList.add("scroll2"); + event.dialog.classList.add("fullwidth"); + if (list.length > 1) { + ui.arena.classList.add("choose-to-move"); + event.dialog.classList.add("fullheight"); + } + + event.moved = []; + var buttonss = []; + event.buttonss = buttonss; + var updateButtons = function () { + for (var i of buttonss) { + event.moved[i._link] = get.links(Array.from(i.childNodes)); + if (i.textPrompt) i.previousSibling.innerHTML = `
    ${i.textPrompt(event.moved[i._link])}
    `; + } + if (filterOk(event.moved)) { + ui.create.confirm("o"); + } + else { + if (!event.forced) ui.create.confirm("c"); + else if (ui.confirm) ui.confirm.close(); + } + }; + var clickButtons = function () { + if (!ui.selected.guanxing_button) return; + if (ui.selected.guanxing_button.parentNode == this) return; + if (!filterMove(ui.selected.guanxing_button, this._link, event.moved)) return; + ui.selected.guanxing_button.classList.remove("glow2"); + this.appendChild(ui.selected.guanxing_button); + delete ui.selected.guanxing_button; + updateButtons(); + }; + + for (var i = 0; i < list.length; i++) { + var tex = event.dialog.add(`
    ${list[i][0]}
    `); + tex.classList.add("choosetomove"); + var buttons = ui.create.div(".buttons", event.dialog.content, clickButtons); + buttonss.push(buttons); + buttons.classList.add("popup"); + buttons.classList.add("guanxing"); + buttons._link = i; + if (list[i][1]) { + if (get.itemtype(list[i][1]) == "cards") { + var cardsb = ui.create.buttons(list[i][1], "card", buttons); + if (list[i][2] && typeof list[i][2] == "string") { + for (var ij of cardsb) ij.node.gaintag.innerHTML = get.translation(list[i][2]); + } + } + else if (list[i][1].length == 2) { + ui.create.buttons(list[i][1][0], list[i][1][1], buttons); + } + } + if (list[i][2] && typeof list[i][2] == "function") buttons.textPrompt = list[i][2]; + } + var tex = event.dialog.add(`
    点击两张牌以交换位置;点击一张牌并点击其他区域以移动卡牌
    `); + tex.classList.add("choosetomove"); + + event.dialog.open(); + updateButtons(); + + event.custom.replace.button = function (button) { + var node = button.parentNode; + if (!buttonss.contains(node)) return; + if (!ui.selected.guanxing_button) { + ui.selected.guanxing_button = button; + button.classList.add("glow2"); + return; + } + if (ui.selected.guanxing_button == button) { + button.classList.remove("glow2"); + delete ui.selected.guanxing_button; + return; + } + if (!filterMove(button, ui.selected.guanxing_button, event.moved)) return; + var par1 = ui.selected.guanxing_button.parentNode, ind1 = ui.selected.guanxing_button.nextSibling, par2 = button.parentNode, ind2 = button.nextSibling; + ui.selected.guanxing_button.classList.remove("glow2"); + par1.insertBefore(button, ind1); + par2.insertBefore(ui.selected.guanxing_button, ind2); + delete ui.selected.guanxing_button; + updateButtons(); + } + event.custom.replace.confirm = function (bool) { + if (bool) event._result = { + bool: true, + moved: event.moved, + }; + else event._result = { bool: false }; + event.dialog.close(); + if (ui.confirm) ui.confirm.close(); + game.resume(); + _status.imchoosing = false; + setTimeout(function () { + ui.arena.classList.remove("choose-to-move"); + }, 500); + }; + + game.pause(); + game.countChoose(); + event.choosing = true; + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + "step 1" + if (event.time) game.broadcastAll(function (time) { + lib.configOL.choose_timeout = time; + }, event.time); + var result = event.result || result; + if ((!result || result == "ai" || (event.forced && !result.bool)) && event.processAI) { + var moved = event.processAI(event.list); + if (moved) result = { + bool: true, + moved: moved, + } + else result = { bool: false }; + } + event.result = result; + }, + showCharacter: function () { + "step 0" + event.trigger("showCharacterEnd"); + "step 1" + event.trigger("showCharacterAfter"); + if (get.mode() == "identity" && player.isZhu) event.trigger("zhuUpdate"); + }, + removeCharacter: function () { + player.$removeCharacter(event.num); + }, + chooseUseTarget: function () { + "step 0" + if (get.is.object(card) && !event.viewAs) card.isCard = true; + if (cards && get.itemtype(card) != "card") { + card = get.copy(card); + card.cards = cards.slice(0); + event.card = card; + } + if (!lib.filter.cardEnabled(card, player) || (event.addCount !== false && !lib.filter.cardUsable(card, player))) { + event.result = { bool: false }; + event.finish(); + return; + } + var info = get.info(card); + var range; + if (!info.notarget) { + var select = get.copy(info.selectTarget); + range = get.select(select); + if (event.selectTarget) range = get.select(event.selectTarget); + game.checkMod(card, player, range, "selectTarget", player); + } + if (info.notarget || range[1] <= -1) { + if (!info.notarget && range[1] <= -1) { + for (var i = 0; i < targets.length; i++) { + if (event.filterTarget) { + if (!event.filterTarget(card, player, targets[i])) { + targets.splice(i--, 1); + } + } + else if (!player.canUse(card, targets[i], event.nodistance ? false : null, event.addCount === false ? null : true)) { + targets.splice(i--, 1); + } + } + if (targets.length) { + event.targets2 = targets; + } + else { + event.finish(); + return; + } + } + else event.targets2 = []; + if (event.forced) { + event._result = { bool: true }; + return; + } + else { + var next = player.chooseBool(); + next.set("prompt", event.prompt || ("是否" + (event.targets2.length ? "对" : "") + get.translation(event.targets2) + "使用" + get.translation(card) + "?")); + if (event.hsskill) next.setHiddenSkill(event.hsskill); + if (event.prompt2) next.set("prompt2", event.prompt2); + next.ai = function () { + var eff = 0; + for (var i = 0; i < event.targets2.length; i++) { + eff += get.effect(event.targets2[i], card, player, player); + } + return eff > 0; + }; + } + } + else { + if (event.filterTarget) { + var targets = game.filterPlayer(function (current) { + return event.filterTarget(card, player, current); + }); + if (targets.length < range[0]) { + event._result = { bool: false }; + return; + } + else if (!info.complexTarget && targets.length == range[0] && range[0] == range[1]) { + event.targets2 = targets; + event._result = { bool: true }; + return; + } + } + var next = player.chooseTarget(); + next.set("_get_card", card); + next.set("filterTarget", event.filterTarget || function (card, player, target) { + if (!_status.event.targets.contains(target)) return false; + if (!_status.event.nodistance && !lib.filter.targetInRange(card, player, target)) return false; + return lib.filter.targetEnabledx(card, player, target); + }); + next.set("ai", event.ai || get.effect_use); + next.set("selectTarget", event.selectTarget || lib.filter.selectTarget); + if (event.nodistance) next.set("nodistance", true); + if (event.forced) next.set("forced", true); + if (event.addCount !== false) next.set("addCount_extra", true); + next.set("targets", targets); + next.set("prompt", event.prompt || ("选择" + get.translation(card) + "的目标")); + if (event.prompt2) next.set("prompt2", event.prompt2); + if (event.hsskill) next.setHiddenSkill(event.hsskill); + } + "step 1" + if (result.bool) { + event.result = { + bool: true, + targets: event.targets2 || result.targets, + }; + var args = [card, event.targets2 || result.targets]; + if (cards) args.push(cards.slice()); + var next = player.useCard(...args); + next.oncard = event.oncard; + if (cards) next.cards = cards.slice(0); + if (event.nopopup) next.nopopup = true; + if (event.animate === false) next.animate = false; + if (event.throw === false) next.throw = false; + if (event.addCount === false) next.addCount = false; + if (event.noTargetDelay) next.targetDelay = false; + if (event.nodelayx) next.delayx = false; + if (event.logSkill) { + if (typeof event.logSkill == "string") { + next.skill = event.logSkill; + } + else if (Array.isArray(event.logSkill)) { + player.logSkill.apply(player, event.logSkill); + } + } + } + else event.result = { bool: false }; + }, + chooseToDuiben: function () { + "step 0" + if (!event.namelist) event.namelist = ["全军出击", "分兵围城", "奇袭粮道", "开城诱敌"]; + game.broadcastAll(function (list) { + var list2 = ["db_atk1", "db_atk2", "db_def1", "db_def2"]; + for (var i = 0; i < 4; i++) { + lib.card[list2[i]].image = "card/" + list2[i] + (list[0] == "全军出击" ? "" : "_" + list[i]); + lib.translate[list2[i]] = list[i]; + } + }, event.namelist); + if (!event.title) event.title = "对策"; + game.log(player, "向", target, "发起了", "#y" + event.title); + if (!event.ai) event.ai = function () { return 1 + Math.random() }; + if (_status.connectMode) { + player.chooseButtonOL([ + [player, [event.title + ":请选择一种策略", [[["", "", "db_def2"], ["", "", "db_def1"]], "vcard"]], true], + [target, [event.title + ":请选择一种策略", [[["", "", "db_atk1"], ["", "", "db_atk2"]], "vcard"]], true] + ], function () { }, event.ai).set("switchToAuto", function () { + _status.event.result = "ai"; + }).set("processAI", function () { + var buttons = _status.event.dialog.buttons; + return { + bool: true, + links: [buttons.randomGet().link], + } + }); + } + "step 1" + if (_status.connectMode) { + event.mes = result[player.playerid].links[0][2]; + event.tes = result[target.playerid].links[0][2]; + event.goto(4); + } + else { + player.chooseButton([event.title + ":请选择一种策略", [[["", "", "db_def2"], ["", "", "db_def1"]], "vcard"]], true).ai = event.ai; + } + "step 2" + event.mes = result.links[0][2]; + target.chooseButton([event.title + ":请选择一种策略", [[["", "", "db_atk1"], ["", "", "db_atk2"]], "vcard"]], true).ai = event.ai; + "step 3" + event.tes = result.links[0][2]; + "step 4" + game.broadcast(function () { + ui.arena.classList.add("thrownhighlight"); + }); + ui.arena.classList.add("thrownhighlight"); + game.addVideo("thrownhighlight1"); + target.$compare(game.createCard(event.tes, "", ""), player, game.createCard(event.mes, "", "")); + game.log(target, "选择的策略为", "#g" + get.translation(event.tes)); + game.log(player, "选择的策略为", "#g" + get.translation(event.mes)); + game.delay(0, 1500); + "step 5" + var mes = event.mes.slice(6); + var tes = event.tes.slice(6); + var str; + if (mes == tes) { + str = get.translation(player) + event.title + "成功"; + player.popup("胜", "wood"); + target.popup("负", "fire"); + game.log(player, "#g胜"); + event.result = { bool: true }; + } + else { + str = get.translation(player) + event.title + "失败"; + target.popup("胜", "wood"); + player.popup("负", "fire"); + game.log(target, "#g胜"); + event.result = { bool: false }; + } + event.result.player = event.mes; + event.result.target = event.tes; + game.broadcastAll(function (str) { + var dialog = ui.create.dialog(str); + dialog.classList.add("center"); + setTimeout(function () { + dialog.close(); + }, 1000); + }, str); + game.trySkillAudio(event.getParent().name + "_" + (event.result.bool ? "true" + mes : "false"), player); + game.delay(2); + "step 6" + game.broadcastAll(function () { + ui.arena.classList.remove("thrownhighlight"); + }); + game.addVideo("thrownhighlight2"); + if (event.clear !== false) { + game.broadcastAll(ui.clear); + } + }, + chooseToPSS: function () { + "step 0" + game.log(player, "对", target, "发起了猜拳"); + if (_status.connectMode) { + player.chooseButtonOL([ + [player, ["猜拳:请选择一种手势", [[["", "", "pss_stone"], ["", "", "pss_scissor"], ["", "", "pss_paper"]], "vcard"]], true], + [target, ["猜拳:请选择一种手势", [[["", "", "pss_stone"], ["", "", "pss_scissor"], ["", "", "pss_paper"]], "vcard"]], true] + ], function () { }, function () { return 1 + Math.random() }).set("switchToAuto", function () { + _status.event.result = "ai"; + }).set("processAI", function () { + var buttons = _status.event.dialog.buttons; + return { + bool: true, + links: [buttons.randomGet().link], + } + }); + } + "step 1" + if (_status.connectMode) { + event.mes = result[player.playerid].links[0][2]; + event.tes = result[target.playerid].links[0][2]; + event.goto(4); + } + else { + player.chooseButton(["猜拳:请选择一种手势", [[["", "", "pss_stone"], ["", "", "pss_scissor"], ["", "", "pss_paper"]], "vcard"]], true).ai = function () { return 1 + Math.random() }; + } + "step 2" + event.mes = result.links[0][2]; + target.chooseButton(["猜拳:请选择一种手势", [[["", "", "pss_stone"], ["", "", "pss_scissor"], ["", "", "pss_paper"]], "vcard"]], true).ai = function () { return 1 + Math.random() }; + "step 3" + event.tes = result.links[0][2]; + "step 4" + game.broadcast(function () { + ui.arena.classList.add("thrownhighlight"); + }); + ui.arena.classList.add("thrownhighlight"); + game.addVideo("thrownhighlight1"); + player.$compare(game.createCard(event.mes, "", ""), target, game.createCard(event.tes, "", "")); + game.log(player, "选择的手势为", "#g" + get.translation(event.mes)); + game.log(target, "选择的手势为", "#g" + get.translation(event.tes)); + game.delay(0, 1500); + "step 5" + var mes = event.mes.slice(4); + var tes = event.tes.slice(4); + var str; + if (mes == tes) { + str = "二人平局"; + player.popup("平", "metal"); + target.popup("平", "metal"); + game.log("猜拳的结果为", "#g平局"); + event.result = { tie: true }; + } + else { + if ({ paper: "stone", scissor: "paper", stone: "scissor" }[mes] == tes) { + str = get.translation(player) + "胜利"; + player.popup("胜", "wood"); + target.popup("负", "fire"); + game.log(player, "#g胜"); + event.result = { bool: true }; + } + else { + str = get.translation(target) + "胜利"; + target.popup("胜", "wood"); + player.popup("负", "fire"); + game.log(target, "#g胜"); + event.result = { bool: false }; + } + } + game.broadcastAll(function (str) { + var dialog = ui.create.dialog(str); + dialog.classList.add("center"); + setTimeout(function () { + dialog.close(); + }, 1000); + }, str); + game.delay(2); + "step 6" + game.broadcastAll(function () { + ui.arena.classList.remove("thrownhighlight"); + }); + game.addVideo("thrownhighlight2"); + if (event.clear !== false) { + game.broadcastAll(ui.clear); + } + }, + cardsDiscard: function () { + game.getGlobalHistory().cardMove.push(event); + var withPile = false; + for (var i = 0; i < cards.length; i++) { + if (cards[i].willBeDestroyed("discardPile", null, event)) { + cards[i].selfDestroy(event); + continue; + } + if (get.position(cards[i], true) == "c") withPile = true; + cards[i].discard(); + } + if (withPile) game.updateRoundNumber(); + }, + orderingDiscard: function () { + var cards = event.relatedEvent.orderingCards.slice(0); + for (var i = 0; i < cards.length; i++) { + if (get.position(cards[i], true) != "o") cards.splice(i--, 1); + } + if (cards.length) game.cardsDiscard(cards); + }, + cardsGotoOrdering: function () { + game.getGlobalHistory().cardMove.push(event); + var withPile = false; + for (var i = 0; i < cards.length; i++) { + if (cards[i].willBeDestroyed("ordering", null, event)) { + cards[i].selfDestroy(event); + continue; + } + if (get.position(cards[i], true) == "c") withPile = true; + cards[i].fix(); + ui.ordering.appendChild(cards[i]); + } + if (withPile) game.updateRoundNumber(); + var evt = event.relatedEvent || event.getParent(); + if (!evt.orderingCards) evt.orderingCards = []; + if (!evt.noOrdering && !evt.cardsOrdered) { + evt.cardsOrdered = true; + var next = game.createEvent("orderingDiscard", false, evt.getParent()); + next.relatedEvent = evt; + next.setContent("orderingDiscard"); + } + if (!evt.noOrdering) evt.orderingCards.addArray(cards); + }, + cardsGotoSpecial: function () { + game.getGlobalHistory().cardMove.push(event); + var withPile = false; + for (var i = 0; i < cards.length; i++) { + if (cards[i].willBeDestroyed("special", null, event)) { + cards[i].selfDestroy(event); + continue; + } + if (get.position(cards[i], true) == "c") withPile = true; + cards[i].fix(); + ui.special.appendChild(cards[i]); + } + if (withPile) game.updateRoundNumber(); + if (event.toRenku) { + _status.renku.addArray(cards); + if (_status.renku.length > 6) { + var cards = _status.renku.splice(0, _status.renku.length - 6); + game.log(cards, "从仁库进入了弃牌堆"); + game.cardsDiscard(cards).set("outRange", true).fromRenku = true; + } + game.updateRenku(); + } + }, + cardsGotoPile: function () { + if (event.washCard) { + event.trigger("washCard") + for (var i = 0; i < lib.onwash.length; i++) { + if (lib.onwash[i]() == "remove") { + lib.onwash.splice(i--, 1); + } + } + } + game.getGlobalHistory().cardMove.push(event); + if (!event._triggeronly) game.$cardsGotoPile(event); + }, + chooseToEnable: function () { + "step 0" + var list = []; + for (var i = 1; i <= 5; i++) { + if (player.hasDisabledSlot(i)) list.push("equip" + i); + } + if (!list.length) event.finish(); + else if (list.length == 1) { + event.list = list; + event._result = { control: list[0] }; + } + else { + var next = player.chooseControl(list); + next.set("prompt", "请选择恢复一个装备栏"); + if (!event.ai) event.ai = function (event, player, list) { + return list.randomGet(); + } + event.ai = event.ai(event.getParent(), player, list); + next.ai = function () { + return event.ai; + }; + } + "step 1" + event.result = { control: result.control }; + player.enableEquip(result.control); + }, + chooseToDisable: function () { + "step 0" + var list = []; + for (var i = 1; i <= 5; i++) { + if (player.hasEnabledSlot(i)) list.push("equip" + i); + } + if (event.horse) { + if (list.contains("equip3") && (get.is.mountCombined() || list.contains("equip4"))) list.push("equip3_4"); + list.remove("equip3"); + list.remove("equip4"); + } + if (!list.length) event.finish(); + else if (list.length == 1) { + event.list = list; + event._result = { control: list[0] }; + } + else { + list.sort(); + event.list = list; + var next = player.chooseControl(list); + next.set("prompt", "请选择废除一个装备栏"); + if (!event.ai) event.ai = function (event, player, list) { + return list.randomGet(); + } + event.ai = event.ai(event.getParent(), player, list); + next.ai = function () { + return event.ai; + }; + } + "step 1" + event.result = { control: result.control }; + if (result.control == "equip3_4") { + player.disableEquip(3, 4); + } + else player.disableEquip(result.control); + }, + swapEquip: function () { + "step 0" + game.log(player, "和", target, "交换了装备区中的牌") + event.cards = [player.getCards("e"), target.getCards("e")]; + game.loseAsync({ + player: player, + target: target, + cards1: event.cards[0], + cards2: event.cards[1], + }).setContent("swapHandcardsx"); + "step 1" + for (var i = 0; i < event.cards[1].length; i++) { + if (get.position(event.cards[1][i], true) == "o") player.equip(event.cards[1][i]); + } + for (var i = 0; i < event.cards[0].length; i++) { + if (get.position(event.cards[0][i], true) == "o") target.equip(event.cards[0][i]); + } + }, + disableJudge: function () { + "step 0" + game.log(player, "废除了判定区"); + var js = player.getCards("j"); + if (js.length) player.discard(js); + player.storage._disableJudge = true; + //player.markSkill("_disableJudge"); + "step 1" + game.broadcastAll(function (player, card) { + player.$disableJudge(); + }, player); + }, + enableJudge: function () { + if (!player.storage._disableJudge) return; + game.log(player, "恢复了判定区"); + game.broadcastAll(function (player) { + player.$enableJudge(); + }, player); + }, + /*----分界线----*/ + phasing: function () { + "step 0" + while (ui.dialogs.length) { + ui.dialogs[0].close(); + } + game.phaseNumber++; + player.phaseNumber++; + game.broadcastAll(function (player, player2, num, popup) { + if (lib.config.glow_phase) { + if (player2) player2.classList.remove("glow_phase"); + player.classList.add("glow_phase"); + } + player.phaseNumber = num; + if (popup && lib.config.show_phase_prompt) player.popup("回合开始", null, false); + }, player, _status.currentPhase, player.phaseNumber, !player.noPhaseDelay); + _status.currentPhase = player; + _status.discarded = []; + game.syncState(); + game.addVideo("phaseChange", player); + if (game.phaseNumber == 1) { + delete player._start_cards; + if (lib.configOL.observe) { + lib.configOL.observeReady = true; + game.send("server", "config", lib.configOL); + } + } + game.log(); + game.log(player, "的回合开始"); + player._noVibrate = true; + if (get.config("identity_mode") != "zhong" && get.config("identity_mode") != "purple" && !_status.connectMode) { + var num; + switch (get.config("auto_identity")) { + case "one": num = 1; break; + case "two": num = 2; break; + case "three": num = 3; break; + case "always": num = -1; break; + default: num = 0; break; + } + if (num && !_status.identityShown && game.phaseNumber > game.players.length * num && game.showIdentity) { + if (!_status.video) player.popup("显示身份"); + _status.identityShown = true; + game.showIdentity(false); + } + } + player.ai.tempIgnore = []; + if (ui.land && ui.land.player == player) { + game.addVideo("destroyLand"); + ui.land.destroy(); + } + "step 1" + event.trigger("phaseBeginStart"); + }, + toggleSubPlayer: function () { + "step 0" + var list = event.list || player.storage.subplayer.skills.slice(0); + list.remove(player.storage.subplayer.name2); + event.list = list; + if (!event.directresult) { + if (list.length > 1) { + var dialog = ui.create.dialog("更换一个随从", "hidden"); + dialog.add([list, "character"]); + player.chooseButton(dialog, true); + } + else if (list.length == 1) { + event.directresult = list[0]; + } + else { + event.finish(); + } + } + else { + if (!list.contains(event.directresult)) { + event.finish(); + } + } + "step 1" + if (!event.directresult) { + if (result && result.bool && result.links[0]) { + event.directresult = result.links[0]; + } + else { + event.finish(); + return; + } + } + if (player.storage.subplayer) { + var current = player.storage.subplayer.name2; + if (event.directresult == current) { + event.finish(); + return; + } + player.storage[current].hp = player.hp; + player.storage[current].maxHp = player.maxHp; + player.storage[current].hs = player.getCards("h"); + player.storage[current].es = player.getCards("e"); + player.lose(player.getCards("he"), ui.special)._triggered = null; + + var cfg = player.storage[event.directresult]; + player.storage.subplayer.name2 = event.directresult; + player.reinit(current, event.directresult, [ + cfg.hp, + cfg.maxHp + ]); + if (cfg.hs.length) player.directgain(cfg.hs); + if (cfg.es.length) player.directequip(cfg.es); + } + }, + exitSubPlayer: function () { + "step 0" + if (player.storage.subplayer) { + var current = player.storage.subplayer.name2; + if (event.remove) { + player.lose(player.getCards("he"), ui.discardPile)._triggered = null; + } + else { + player.storage[current].hp = player.hp; + player.storage[current].maxHp = player.maxHp; + player.storage[current].hs = player.getCards("h"); + player.storage[current].es = player.getCards("e"); + player.lose(player.getCards("he"), ui.special)._triggered = null; + } + player.reinit(current, player.storage.subplayer.name, [ + player.storage.subplayer.hp, + player.storage.subplayer.maxHp + ]); + player.update(); + if (event.remove) { + if (player.storage[current].onremove) { + player.storage[current].onremove(player); + } + delete player.storage[current]; + player.storage.subplayer.skills.remove(current); + game.log(player, "牺牲了随从", "#g" + current); + } + else { + game.log(player, "收回了随从", "#g" + current); + } + player.addSkill(player.storage.subplayer.skills); + } + "step 1" + if (player.storage.subplayer) { + player.directgain(player.storage.subplayer.hs); + player.directequip(player.storage.subplayer.es); + } + player.removeSkill("subplayer"); + "step 2" + if (event.remove) { + event.trigger("subPlayerDie"); + } + }, + callSubPlayer: function () { + "step 0" + var list = player.getSubPlayers(event.tag); + event.list = list; + if (!event.directresult) { + if (list.length > 1) { + var dialog = ui.create.dialog("调遣一个随从", "hidden"); + dialog.add([list, "character"]); + player.chooseButton(dialog, true); + } + else if (list.length == 1) { + event.directresult = list[0]; + } + else { + event.finish(); + } + } + else { + if (!list.contains(event.directresult)) { + event.finish(); + } + } + "step 1" + if (!event.directresult) { + if (result && result.bool && result.links[0]) { + event.directresult = result.links[0]; + } + else { + event.finish(); + return; + } + } + if (event.directresult) { + var cfg = player.storage[event.directresult]; + var source = cfg.source || player.name; + var name = event.directresult; + game.log(player, "调遣了随从", "#g" + name); + player.storage.subplayer = { + name: source, + name2: event.directresult, + hp: player.hp, + maxHp: player.maxHp, + skills: event.list.slice(0), + hs: player.getCards("h"), + es: player.getCards("e"), + intro2: cfg.intro2 + } + player.removeSkill(event.list); + player.reinit(source, name, [cfg.hp, cfg.maxHp]); + player.addSkill("subplayer"); + player.lose(player.getCards("he"), ui.special)._triggered = null; + if (cfg.hs.length) player.directgain(cfg.hs); + if (cfg.es.length) player.directequip(cfg.es); + } + "step 2" + game.delay(); + }, + addExtraTarget: function () { + "step 0" + event.num = 0; + "step 1" + var target = targets[num], info = get.info(card); + if (target == event.target && event.addedTarget) { + event.addedTargets[num] = event.addedTarget; + event._result = { bool: false }; + } + else if (game.hasPlayer(function (current) { + return info.filterAddedTarget(card, player, current, target) + })) { + var next = player.chooseTarget(get.translation(event.card) + ":选择" + get.translation(targets[num]) + "对应的指向目标", function (card, player, target) { + var card = get.card(), info = get.info(card); + return info.filterAddedTarget(card, player, target, _status.event.preTarget) + }, true); + next.set("_get_card", card); + next.set("preTarget", targets[num]); + next.set("ai", target => get.effect(target, get.card(), player, _status.event.player)); + } + else { + event.addedTargets[num] = false; + event._result = { bool: false }; + } + "step 2" + if (result.bool) { + event.addedTargets[num] = result.targets[0]; + player.line2([targets[num], result.targets[0]]); + } + event.num++; + if (event.num < targets.length) event.goto(1); + }, + reverseOrder: function () { + "step 0" + game.delay(); + "step 1" + var choice; + if (get.tag(card, "multineg")) { + choice = (player.previous.side == player.side) ? "逆时针" : "顺时针"; + } + else { + choice = (player.next.side == player.side) ? "逆时针" : "顺时针"; + } + player.chooseControl("顺时针", "逆时针", function (event, player) { + return _status.event.choice || "逆时针"; + }).set("prompt", "选择" + get.translation(card) + "的结算方向").set("choice", choice).set("forceDie", true); + "step 2" + if (result && result.control == "顺时针") { + var evt = event.getParent(), sorter = (_status.currentPhase || player); + evt.fixedSeat = true; + evt.targets.sortBySeat(sorter); + evt.targets.reverse(); + if (evt.targets[evt.targets.length - 1] == sorter) { + evt.targets.unshift(evt.targets.pop()); + } + } + }, + addJudgeCard: function () { + if (lib.filter.judge(card, player, target) && cards.length && get.position(cards[0], true) == "o") target.addJudge(card, cards); + }, + equipCard: function () { + if (cards.length && get.position(cards[0], true) == "o") target.equip(cards[0]); + }, + gameDraw: function () { + "step 0" + if (_status.brawl && _status.brawl.noGameDraw) { + event.finish(); + return; + } + var end = player; + var numx = num; + do { + if (typeof num == "function") { + numx = num(player); + } + if (player.getTopCards) player.directgain(player.getTopCards(numx)); + else player.directgain(get.cards(numx)); + if (player.singleHp === true && get.mode() != "guozhan" && (lib.config.mode != "doudizhu" || _status.mode != "online")) { + player.doubleDraw(); + } + player._start_cards = player.getCards("h"); + player = player.next; + } + while (player != end); + event.changeCard = get.config("change_card"); + if (_status.connectMode || (lib.config.mode == "doudizhu" && _status.mode == "online") || lib.config.mode != "identity" && lib.config.mode != "guozhan" && lib.config.mode != "doudizhu") { + event.changeCard = "disabled"; + } + "step 1" + if (event.changeCard != "disabled" && !_status.auto) { + event.dialog = ui.create.dialog("是否使用手气卡?"); + ui.create.confirm("oc"); + event.custom.replace.confirm = function (bool) { + _status.event.bool = bool; + game.resume(); + } + } + else { + event.finish(); + } + "step 2" + if (event.changeCard == "once") { + event.changeCard = "disabled"; + } + else if (event.changeCard == "twice") { + event.changeCard = "once"; + } + else if (event.changeCard == "disabled") { + event.bool = false; + return; + } + _status.imchoosing = true; + event.switchToAuto = function () { + _status.event.bool = false; + game.resume(); + } + game.pause(); + "step 3" + _status.imchoosing = false; + if (event.bool) { + if (game.changeCoin) { + game.changeCoin(-3); + } + var hs = game.me.getCards("h"); + game.addVideo("lose", game.me, [get.cardsInfo(hs), [], [], []]); + for (var i = 0; i < hs.length; i++) { + hs[i].discard(false); + } + game.me.directgain(get.cards(hs.length)); + event.goto(2); + } + else { + if (event.dialog) event.dialog.close(); + if (ui.confirm) ui.confirm.close(); + game.me._start_cards = game.me.getCards("h"); + event.finish(); + } + }, + phaseLoop: function () { + "step 0" + var num = 1, current = player; + while (current.getSeatNum() == 0) { + current.setSeatNum(num); + current = current.next; + num++; + } + "step 1" + for (var i = 0; i < lib.onphase.length; i++) { + lib.onphase[i](); + } + player.phase(); + "step 2" + if (!game.players.contains(event.player.next)) { + event.player = game.findNext(event.player.next); + } + else { + event.player = event.player.next; + } + event.goto(1); + }, + loadPackage: function () { + "step 0" + if (event.packages.length) { + window.game = game; + var pack = event.packages.shift().split("/"); + lib.init.js(lib.assetURL + pack[0], pack[1], game.resume); + game.pause(); + } + else { + event.finish(); + } + "step 1" + if (!lib.config.dev) delete window.game; + var character = lib.imported.character; + var card = lib.imported.card; + var i, j, k; + for (i in character) { + if (character[i].character) { + var characterPack = lib.characterPack[i]; + if (characterPack) Object.assign(characterPack, character[i].character); + else lib.characterPack[i] = character[i].character; + } + if (character[i].forbid && character[i].forbid.contains(lib.config.mode)) continue; + if (character[i].mode && character[i].mode.contains(lib.config.mode) == false) continue; + + if (Array.isArray(lib[j]) && Array.isArray(character[i][j])) { + lib[j].addArray(character[i][j]); + continue; + } + for (j in character[i]) { + if (j == "mode" || j == "forbid" || j == "characterSort") continue; + for (k in character[i][j]) { + if (j == "character") { + if (!character[i][j][k][4]) { + character[i][j][k][4] = []; + } + if (character[i][j][k][4].contains("boss") || + character[i][j][k][4].contains("hiddenboss")) { + lib.config.forbidai.add(k); + } + if (lib.config.forbidai_user && lib.config.forbidai_user.contains(k)) { + lib.config.forbidai.add(k); + } + for (var l = 0; l < character[i][j][k][3].length; l++) { + lib.skilllist.add(character[i][j][k][3][l]); + } + } + if (j == "translate" && k == i) { + lib[j][k + "_character_config"] = character[i][j][k]; + } + else { + if (lib[j][k] == undefined) { + Object.defineProperty(lib[j], k, Object.getOwnPropertyDescriptor(character[i][j], k)); + } + else if (Array.isArray(lib[j][k]) && Array.isArray(character[i][j][k])) { + lib[j][k].addArray(character[i][j][k]); + } + else { + console.log( + `dublicate ${j} in character ${i}:\n${k}:\nlib.${j}.${k}`, + lib[j][k], + `\ncharacter.${i}.${j}.${k}`, + character[i][j][k] + ); + } + } + } + } + } + for (i in card) { + var cardPack = lib.cardPack[i] ? lib.cardPack[i] : lib.cardPack[i] = []; + if (card[i].card) { + for (var j in card[i].card) { + if (!card[i].card[j].hidden && card[i].translate[j + "_info"]) { + cardPack.push(j); + } + } + } + for (j in card[i]) { + if (j == "mode" || j == "forbid") continue; + if (j == "list") continue; + for (k in card[i][j]) { + if (j == "skill" && k[0] == "_" && !lib.config.cards.contains(i)) { + continue; + } + if (j == "translate" && k == i) { + lib[j][k + "_card_config"] = card[i][j][k]; + } + else { + if (lib[j][k] == undefined) Object.defineProperty(lib[j], k, Object.getOwnPropertyDescriptor(card[i][j], k)); + else { + console.log( + `dublicate ${j} in card ${i}:\n${k}\nlib.${j}.${k}`, + lib[j][k], + `\ncard.${i}.${j}.${k}`, + card[i][j][k] + ); + } + } + } + } + } + event.goto(0); + }, + loadMode: function () { + "step 0" + window.game = game; + lib.init.js(lib.assetURL + "mode", event.mode, game.resume); + game.pause(); + "step 1" + if (!lib.config.dev) delete window.game; + event.result = lib.imported.mode[event.mode]; + delete lib.imported.mode[event.mode]; + }, + forceOver: function () { + "step 0" + while (ui.controls.length) { + ui.controls[0].close(); + } + while (ui.dialogs.length) { + ui.dialogs[0].close(); + } + "step 1" + if (event.bool != "noover") { + game.over(event.bool); + } + if (event.callback) { + event.callback(); + } + }, + arrangeTrigger: function () { + "step 0" + event.noDirectUse = info => !lib.skill[info.skill].silent && lib.translate[info.skill];//是否触发同顺序选择 + "step 1" + if (event.doing && event.doing.todoList.length) return; + if (event.doingList.length) return event.doing = event.doingList.shift(); + event.finish(); + "step 2" + if (trigger.filterStop && trigger.filterStop()) return event.finish(); + const current = event.doing.todoList.find(info => lib.filter.filterTrigger(trigger, info.player, event.triggername, info.skill)); + if (!current) { + event.doing.todoList = []; + return event.goto(1); + } + event.doing.todoList = event.doing.todoList.filter(i => i.priority <= current.priority); + event.num = event.doing.todoList.indexOf(current); + if (!event.noDirectUse(current)) return event.goto(5); + event.choice = event.doing.todoList.filter(info => { + if (!lib.filter.filterTrigger(trigger, info.player, event.triggername, info.skill)) return false; + if (!event.noDirectUse(info)) return false; + if (current.skill != info.skill) return false; + if (current.player != info.player) return false; + return lib.skill.global.includes(info.skill) || current.player.hasSkill(info.skill, true); + }); + if (event.choice.length < 2) event.goto(5); + "step 3" + const next = event.choice[0].player.chooseControl(event.choice.map(i => i.skill)); + next.set("prompt", "选择下一个触发的技能"); + next.set("forceDie", true); + next.set("arrangeSkill", true); + next.set("includeOut", true); + "step 4" + if (result.control) event.num = event.doing.todoList.findIndex(info => info.skill == result.control && info.player == event.choice[0].player); + "step 5" + const info = event.doing.todoList[event.num]; + if (!info) return; + event.doing.doneList.push(info); + event.doing.todoList.splice(event.num, 1); + game.createTrigger(event.triggername, info.skill, info.player, trigger); + event.goto(1); + }, + createTrigger: function () { + "step 0" + // console.log("triggering: " + player.name+ " \"s skill: " + event.skill+" in " + event.triggername) + if (game.expandSkills(player.getSkills().concat(lib.skill.global)).includes(event.skill)) return; + var info = get.info(event.skill); + let hidden = player.hiddenSkills.slice(0); + let invisible = player.invisibleSkills.slice(0); + game.expandSkills(hidden); + game.expandSkills(invisible); + if (hidden.includes(event.skill)) { + if (!info.silent && player.hasSkillTag("nomingzhi", false, null, true)) event.finish(); + else if (!info.direct) event.trigger("triggerHidden"); + else event.skillHidden = true; + } + else if (invisible.includes(event.skill)) event.trigger("triggerInvisible"); + else if (Object.keys(player.additionalSkills).every(i => { + if (i.startsWith("hidden:")) return true; + return !game.expandSkills(player.additionalSkills[i]).includes(event.skill); + })) event.finish(); + "step 1" + if (event.cancelled) return event.finish(); + var info = get.info(event.skill); + if (event.revealed || info.forced) return; + const checkFrequent = function (info) { + if (player.hasSkillTag("nofrequent", false, event.skill)) return false; + if (typeof info.frequent == "boolean") return info.frequent; + if (typeof info.frequent == "function") return info.frequent(trigger, player); + if (info.frequent == "check" && typeof info.check == "function") return info.check(trigger, player); + return false; + } + if (info.direct) { + if (player.isUnderControl()) game.swapPlayerAuto(player); + if (player.isOnline()) void 0; + event._result = { bool: true }; + event._direct = true; + } + else { + if (checkFrequent(info)) event.frequentSkill = true; + var str; + var check = info.check; + if (info.prompt) str = info.prompt; + else if (typeof info.logTarget == "string") str = get.prompt(event.skill, trigger[info.logTarget], player); + else if (typeof info.logTarget == "function") { + const logTarget = info.logTarget(trigger, player); + if (get.itemtype(logTarget).startsWith("player")) str = get.prompt(event.skill, logTarget, player); + } + else str = get.prompt(event.skill, null, player); + if (typeof str == "function") str = str(trigger, player); + + var next = player.chooseBool(str); + if (event.frequentSkill) next.set("frequentSkill", event.skill); + next.set("forceDie", true); + next.set("includeOut", true); + next.ai = () => !check || check(trigger, player); + + if (typeof info.prompt2 == "function") next.set("prompt2", info.prompt2(trigger, player)); + else if (typeof info.prompt2 == "string") next.set("prompt2", info.prompt2); + else if (info.prompt2 != false) { + if (lib.dynamicTranslate[event.skill]) next.set("prompt2", lib.dynamicTranslate[event.skill](player, event.skill)); + else if (lib.translate[event.skill + "_info"]) next.set("prompt2", lib.translate[event.skill + "_info"]); + } + + if (trigger.skillwarn) { + if (next.prompt2) next.set("prompt2", `${trigger.skillwarn}。${next.prompt2}`); + else next.set("prompt2", trigger.skillwarn); + } + } + "step 2" + var info = get.info(event.skill); + if (!result || !result.bool) return; + var autodelay = info.autodelay; + if (typeof autodelay == "function") autodelay = autodelay(trigger, player); + if (autodelay && (info.forced || !event.isMine())) { + if (typeof autodelay == "number") game.delayx(autodelay); + else game.delayx(); + } + "step 3" + var info = get.info(event.skill); + if (result && result.bool == false) { + if (info.oncancel) info.oncancel(trigger, player); + return event.finish(); + } + if (info.popup != false && !info.direct) { + if (info.popup) { + player.popup(info.popup); + game.log(player, "发动了", "【" + get.skillTranslation(event.skill, player) + "】"); + } + else if (!info.logTarget || info.logLine === false) player.logSkill(event.skill, false, info.line); + else if (typeof info.logTarget == "string") player.logSkill(event.skill, trigger[info.logTarget], info.line); + else if (typeof info.logTarget == "function") player.logSkill(event.skill, info.logTarget(trigger, player), info.line); + } + var next = game.createEvent(event.skill); + if (typeof info.usable == "number") { + player.addSkill("counttrigger"); + if (!player.storage.counttrigger) player.storage.counttrigger = {}; + if (!player.storage.counttrigger[event.skill]) player.storage.counttrigger[event.skill] = 1; + else player.storage.counttrigger[event.skill]++; + } + next.player = player; + next._trigger = trigger; + next.triggername = event.triggername; + next.setContent(info.content); + next.skillHidden = event.skillHidden; + if (info.forceDie) next.forceDie = true; + if (info.forceOut) next.includeOut = true; + "step 4" + if (!player._hookTrigger) return; + if (player._hookTrigger.some(i => { + const info = lib.skill[i].hookTrigger; + return info && info.after && info.after(event, player, event.triggername); + })) event.trigger("triggerAfter"); + }, + playVideoContent: function () { + "step 0" + game.delay(0, 500); + "step 1" + if (!game.chess) { + ui.control.innerHTML = ""; + var nodes = []; + for (var i = 0; i < ui.arena.childNodes.length; i++) { + nodes.push(ui.arena.childNodes[i]); + } + for (var i = 0; i < nodes.length; i++) { + if (nodes[i] == ui.canvas) continue; + if (nodes[i] == ui.control) continue; + if (nodes[i] == ui.mebg) continue; + if (nodes[i] == ui.me) continue; + if (nodes[i] == ui.roundmenu) continue; + nodes[i].remove(); + } + ui.sidebar.innerHTML = ""; + ui.cardPile.innerHTML = ""; + ui.discardPile.innerHTML = ""; + ui.special.innerHTML = ""; + ui.ordering.innerHTML = ""; + } + ui.system.firstChild.innerHTML = ""; + ui.system.lastChild.innerHTML = ""; + ui.system.firstChild.appendChild(ui.config2); + if (ui.updateVideoMenu) { + ui.updateVideoMenu(); + } + _status.videoDuration = 1; + ui.create.system("返回", function () { + var mode = localStorage.getItem(lib.configprefix + "playbackmode"); + if (mode) { + game.saveConfig("mode", mode); + } + game.reload(); + }); + ui.create.system("重播", function () { + _status.replayvideo = true; + game.playVideo(_status.playback, lib.config.mode); + }); + ui.create.system("暂停", ui.click.pause, true).id = "pausebutton"; + var slow = ui.create.system("减速", function () { + _status.videoDuration *= 1.5; + updateDuration(); + }, true); + var fast = ui.create.system("加速", function () { + _status.videoDuration /= 1.5; + updateDuration(); + }, true); + var updateDuration = function () { + if (_status.videoDuration > 1) { + slow.classList.add("glow"); + } + else { + slow.classList.remove("glow"); + } + if (_status.videoDuration < 1) { + fast.classList.add("glow"); + } + else { + fast.classList.remove("glow"); + } + } + ui.system.style.display = ""; + ui.refresh(ui.system); + ui.system.show(); + ui.window.show(); + if (lib.config.mode != "versus" && lib.config.mode != "boss") { + ui.arena.style.display = ""; + ui.refresh(ui.arena); + ui.arena.show(); + } + if (!game.chess) { + game.playerMap = {}; + } + game.finishCards(); + "step 2" + if (event.video.length) { + var content = event.video.shift(); + // console.log(content); + if (content.type == "delay") { + game.delay(content.content); + } + else if (content.type == "play") { + window.play = {}; + if (!event.playtoload) { + event.playtoload = 1; + } + else { + event.playtoload++; + } + var script = lib.init.js(lib.assetURL + "play", content.name); + script.addEventListener("load", function () { + var play = window.play[content.name] + if (play && play.video) { + play.video(content.init); + } + event.playtoload--; + if (event.playtoload == 0) { + delete window.play; + } + }); + } + else if (typeof content.player == "string" && game.playerMap[content.player] && + game.playerMap[content.player].classList && + !game.playerMap[content.player].classList.contains("obstacle")) { + game.videoContent[content.type](game.playerMap[content.player], content.content); + } + else { + game.videoContent[content.type](content.content); + } + if (event.video.length) { + game.delay(0, _status.videoDuration * Math.min(2000, event.video[0].delay)); + } + event.redo(); + } + else { + _status.over = true; + ui.system.lastChild.hide(); + setTimeout(function () { + ui.system.lastChild.innerHTML = ""; + }, 500); + } + }, + waitForPlayer: function () { + "step 0" + ui.auto.hide(); + ui.pause.hide(); + + game.createServer(); + if (!lib.translate.zhu) { + lib.translate.zhu = "主"; + } + if (event.func) { + event.func(); + } + if (!lib.configOL.number) { + lib.configOL.number = parseInt(lib.configOL.player_number); + } + if (game.onlineroom) { + game.send("server", "config", lib.configOL); + } + + ui.create.connectPlayers(game.ip); + if (!window.isNonameServer) { + var me = game.connectPlayers[0]; + me.setIdentity("zhu"); + me.initOL(get.connectNickname(), lib.config.connect_avatar); + me.playerid = "1"; + game.onlinezhu = "1"; + } + _status.waitingForPlayer = true; + if (window.isNonameServer) { + document.querySelector("#server_status").innerHTML = "等待中"; + } + game.pause(); + "step 1" + _status.waitingForPlayer = false; + lib.configOL.gameStarted = true; + if (window.isNonameServer) { + document.querySelector("#server_status").innerHTML = "游戏中"; + } + if (game.onlineroom) { + game.send("server", "config", lib.configOL); + } + for (var i = 0; i < game.connectPlayers.length; i++) { + game.connectPlayers[i].delete(); + } + delete game.connectPlayers; + if (ui.roomInfo) { + ui.roomInfo.remove(); + delete ui.roomInfo; + } + if (ui.exitroom) { + ui.exitroom.remove(); + delete ui.exitroom; + } + game.broadcast("gameStart"); + game.delay(2); + ui.auto.show(); + ui.pause.show(); + if (lib.config.show_cardpile) { + ui.cardPileButton.style.display = ""; + } + }, + replaceHandcards: function () { + "step 0" + if (event.players.contains(game.me)) { + game.me.chooseBool("是否置换手牌?"); + } + else { + event.finish(); + } + "step 1" + if (result && result.bool) { + var hs = game.me.getCards("h") + for (var i = 0; i < hs.length; i++) { + hs[i].discard(false); + } + var cards = get.cards(hs.length); + game.me._start_cards = cards; + game.me.directgain(cards); + } + }, + replaceHandcardsOL: function () { + "step 0" + var send = function () { + game.me.chooseBool("是否置换手牌?"); + game.resume(); + }; + var sendback = function (result, player) { + if (result && result.bool) { + var hs = player.getCards("h") + game.broadcastAll(function (player, hs) { + game.addVideo("lose", player, [get.cardsInfo(hs), [], [], []]); + for (var i = 0; i < hs.length; i++) { + hs[i].discard(false); + } + }, player, hs); + var cards = get.cards(hs.length); + player.directgain(cards); + player._start_cards = cards; + } + }; + for (var i = 0; i < event.players.length; i++) { + if (event.players[i].isOnline()) { + event.withol = true; + event.players[i].send(send); + event.players[i].wait(sendback); + } + else if (event.players[i] == game.me) { + event.withme = true; + game.me.chooseBool("是否置换手牌?"); + game.me.wait(sendback); + } + } + "step 1" + if (event.withme) { + game.me.unwait(result); + } + "step 2" + if (event.withol && !event.resultOL) { + game.pause(); + } + }, + phase: function () { + "step 0" + //初始化阶段列表 + if (!event.phaseList) { + event.phaseList = ["phaseZhunbei", "phaseJudge", "phaseDraw", "phaseUse", "phaseDiscard", "phaseJieshu"]; + } + if (typeof event.num != "number") { + event.num = 0; + } + //规则集中的“回合开始后①”,更新游戏轮数,触发“一轮游戏开始时” + var isRound = false; + if (!event.skill) { + isRound = _status.roundSkipped; + if (_status.isRoundFilter) { + isRound = _status.isRoundFilter(event, player); + } + else if (_status.seatNumSettled) { + var seatNum = player.getSeatNum(); + if (seatNum != 0) { + if (get.itemtype(_status.lastPhasedPlayer) != "player" || seatNum < _status.lastPhasedPlayer.getSeatNum()) isRound = true; + _status.lastPhasedPlayer = player; + } + } + else if (player == _status.roundStart) isRound = true; + if (isRound) { + delete _status.roundSkipped; + game.roundNumber++; + event._roundStart = true; + game.updateRoundNumber(); + for (var i = 0; i < game.players.length; i++) { + if (game.players[i].isOut() && game.players[i].outCount > 0) { + game.players[i].outCount--; + if (game.players[i].outCount == 0 && !game.players[i].outSkills) { + game.players[i].in(); + } + } + } + event.trigger("roundStart"); + } + } + _status.globalHistory.push({ + cardMove: [], + custom: [], + useCard: [], + changeHp: [], + everything: [], + }); + var players = game.players.slice(0).concat(game.dead); + for (var i = 0; i < players.length; i++) { + var current = players[i]; + current.actionHistory.push({ useCard: [], respond: [], skipped: [], lose: [], gain: [], sourceDamage: [], damage: [], custom: [], useSkill: [] }); + current.stat.push({ card: {}, skill: {} }); + if (isRound) { + current.getHistory().isRound = true; + current.getStat().isRound = true; + } + } + if (isRound) { + game.getGlobalHistory().isRound = true; + } + "step 1" + //规则集中的“回合开始后②(1v1武将登场专用)” + event.trigger("phaseBeforeStart"); + "step 2" + //规则集中的“回合开始后③(处理“游戏开始时”的时机)” + event.trigger("phaseBefore"); + "step 3" + //规则集中的“回合开始后④(卑弥呼〖纵傀〗的时机)” + event.trigger("phaseBeforeEnd"); + "step 4" + //规则集中的“回合开始后⑤”,进行翻面检测 + if (player.isTurnedOver() && !event._noTurnOver) { + event.cancel(); + player.turnOver(); + player.phaseSkipped = true; + } + else { + player.phaseSkipped = false; + player.getHistory().isMe = true; + player.getStat().isMe = true; + } + "step 5" + //规则集中的“回合开始后⑥”,更新“当前回合角色” + while (ui.dialogs.length) { + ui.dialogs[0].close(); + } + game.phaseNumber++; + player.phaseNumber++; + game.broadcastAll(function (player, num, popup) { + if (lib.config.glow_phase) { + player.classList.add("glow_phase"); + } + player.phaseNumber = num; + _status.currentPhase = player; + if (popup && lib.config.show_phase_prompt) player.popup("回合开始", null, false); + }, player, player.phaseNumber, !player.noPhaseDelay); + _status.currentPhase = player; + _status.discarded = []; + game.syncState(); + game.addVideo("phaseChange", player); + if (game.phaseNumber == 1) { + delete player._start_cards; + if (lib.configOL.observe) { + lib.configOL.observeReady = true; + game.send("server", "config", lib.configOL); + } + } + game.log(); + game.log(player, "的回合开始"); + player._noVibrate = true; + if (get.config("identity_mode") != "zhong" && get.config("identity_mode") != "purple" && !_status.connectMode) { + var num; + switch (get.config("auto_identity")) { + case "one": num = 1; break; + case "two": num = 2; break; + case "three": num = 3; break; + case "always": num = -1; break; + default: num = 0; break; + } + if (num && !_status.identityShown && game.phaseNumber > game.players.length * num && game.showIdentity) { + if (!_status.video) player.popup("显示身份"); + _status.identityShown = true; + game.showIdentity(false); + } + } + player.ai.tempIgnore = []; + if (ui.land && ui.land.player == player) { + game.addVideo("destroyLand"); + ui.land.destroy(); + } + "step 6" + //规则集中的“回合开始后⑦”,国战武将明置武将牌 + event.trigger("phaseBeginStart"); + "step 7" + //规则集中的“回合开始后⑨”,进行当先,化身等操作 + //没有⑧ 因为⑧用不到 + event.trigger("phaseBegin"); + //阶段部分 + "step 8" + if (num < event.phaseList.length) { + //规则集中没有的新时机 可以用来插入额外阶段啥的 + if (player.isIn()) event.trigger("phaseChange") + } + else event.goto(11); + "step 9" + if (player.isIn() && num < event.phaseList.length) { + var phase = event.phaseList[num].split("|"); + event.currentPhase = phase[0]; + var next = player[event.currentPhase](); + next.phaseIndex = num; + if (phase.length > 1) { + next._extraPhaseReason = phase[1]; + } + if (event.currentPhase == "phaseDraw" || event.currentPhase == "phaseDiscard") { + if (!player.noPhaseDelay) { + if (player == game.me) { + game.delay(); + } + else { + game.delayx(); + } + } + } + } + "step 10" + if (event.currentPhase == "phaseUse") { + game.broadcastAll(function () { + if (ui.tempnowuxie) { + ui.tempnowuxie.close(); + delete ui.tempnowuxie; + } + }); + delete player._noSkill; + } + event.num++; + "step 11" + if (event.num < event.phaseList.length) { + event.goto(8); + } + else if (!event._phaseEndTriggered) { + event._phaseEndTriggered = true; + event.trigger("phaseEnd"); + event.redo(); + } + "step 12" + event.trigger("phaseAfter"); + "step 13" + //删除当前回合角色 此时处于“不属于任何角色的回合”的阶段 + game.broadcastAll(function (player) { + player.classList.remove("glow_phase"); + delete _status.currentPhase; + }, player); + }, + /** + * @deprecated + */ + phase_old: function () { + "step 0" + player.phaseZhunbei(); + "step 1" + player.phaseJudge(); + "step 2" + player.phaseDraw(); + if (!player.noPhaseDelay) { + if (player == game.me) { + game.delay(); + } + else { + game.delayx(); + } + } + "step 3" + player.phaseUse(); + "step 4" + game.broadcastAll(function () { + if (ui.tempnowuxie) { + ui.tempnowuxie.close(); + delete ui.tempnowuxie; + } + }); + player.phaseDiscard() + if (!player.noPhaseDelay) game.delayx(); + //delete player.using; + delete player._noSkill; + "step 5" + player.phaseJieshu(); + }, + phaseZhunbei: function () { + event.trigger(event.name); + game.log(player, "进入了准备阶段"); + }, + phaseJudge: function () { + "step 0" + game.log(player, "进入了判定阶段"); + event.cards = player.getCards("j"); + if (!event.cards.length) event.finish(); + "step 1" + if (cards.length && player.getCards("j").contains(cards[0])) { + event.card = cards.shift(); + if (event.card.classList.contains("removing")) { + event.card.remove(); + delete event.card; + event.redo(); + } + else if (event.card.classList.contains("feichu")) { + event.finish(); + return; + } + else { + player.lose(event.card, "visible", ui.ordering); + player.$phaseJudge(event.card); + event.cancelled = false; + event.trigger("phaseJudge"); + var name = event.card.viewAs || event.card.name; + player.popup(name, "thunder"); + if (!lib.card[name].effect) { + game.delay(); + event.redo(); + } + else if (!lib.card[name].judge) { + game.delay(); + event.nojudge = true; + } + } + } + else event.finish(); + "step 2" + if (!event.cancelled && !event.nojudge) player.judge(event.card).set("type", "phase"); + "step 3" + var name = event.card.viewAs || event.card.name; + if (event.excluded) { + delete event.excluded; + } + else if (event.cancelled && !event.direct) { + if (lib.card[name].cancel) { + var next = game.createEvent(name + "Cancel"); + next.setContent(lib.card[name].cancel); + next.cards = [event.card]; + if (!event.card.viewAs) next.card = get.autoViewAs(event.card); + else next.card = get.autoViewAs({ name: name }, next.cards); + next.player = player; + } + } + else { + var next = game.createEvent(name); + next.setContent(lib.card[name].effect); + next._result = result; + next.cards = [event.card]; + if (!event.card.viewAs) next.card = get.autoViewAs(event.card); + else next.card = get.autoViewAs({ name: name }, next.cards); + next.player = player; + } + ui.clear(); + event.goto(1); + }, + phaseDraw: function () { + "step 0" + game.log(player, "进入了摸牌阶段"); + event.trigger("phaseDrawBegin1"); + "step 1" + event.trigger("phaseDrawBegin2"); + "step 2" + if (game.modPhaseDraw) { + game.modPhaseDraw(player, event.num); + } + else { + if (event.num > 0) { + var num = event.num; + if (event.attachDraw) { + for (var i = 0; i < event.attachDraw.length; i++) { + ui.cardPile.insertBefore(event.attachDraw[i], ui.cardPile.firstChild); + } + num += event.attachDraw.length; + } + var next = player.draw(num); + if (event.attachDraw) { + next.minnum = event.attachDraw.length; + } + } + } + "step 3" + if (Array.isArray(result)) { + event.cards = result; + } + }, + phaseUse: function () { + "step 0" + if (!event.logged) { + game.log(player, "进入了出牌阶段"); + event.logged = true; + } + var next = player.chooseToUse(); + if (!lib.config.show_phaseuse_prompt) { + next.set("prompt", false); + } + next.set("type", "phase"); + "step 1" + if (result.bool && !event.skipped) { + event.goto(0); + } + game.broadcastAll(function () { + if (ui.tempnowuxie) { + ui.tempnowuxie.close(); + delete ui.tempnowuxie; + } + }); + "step 2" + var stat = player.getStat(); + for (var i in stat.skill) { + var bool = false; + var info = lib.skill[i]; + if (!info) continue; + if (info.enable != undefined) { + if (typeof info.enable == "string" && info.enable == "phaseUse") bool = true; + else if (typeof info.enable == "object" && info.enable.contains("phaseUse")) bool = true; + } + if (bool) stat.skill[i] = 0; + } + for (var i in stat.card) { + var bool = false; + var info = lib.card[i]; + if (!info) continue; + if (info.updateUsable == "phaseUse") stat.card[i] = 0; + } + }, + phaseDiscard: function () { + "step 0" + game.log(player, "进入了弃牌阶段"); + event.num = player.needsToDiscard(); + if (event.num <= 0) event.finish(); + else { + game.broadcastAll(function (player) { + if (lib.config.show_phase_prompt) { + player.popup("弃牌阶段", null, false); + } + }, player); + } + event.trigger("phaseDiscard"); + "step 1" + player.chooseToDiscard(num, true) + .set("useCache", true); + "step 2" + event.cards = result.cards; + }, + phaseJieshu: function () { + event.trigger(event.name); + game.log(player, "进入了结束阶段"); + }, + chooseToUse: function () { + "step 0" + if (event.responded) return; + if (game.modeSwapPlayer && !_status.auto && player.isUnderControl() && !lib.filter.wuxieSwap(event)) { + game.modeSwapPlayer(player); + } + var skills = player.getSkills("invisible").concat(lib.skill.global); + game.expandSkills(skills); + for (var i = 0; i < skills.length; i++) { + var info = lib.skill[skills[i]]; + if (info && info.onChooseToUse) { + info.onChooseToUse(event); + } + } + if (_status.noclearcountdown !== "direct") _status.noclearcountdown = true; + if (event.type == "phase") { + if (event.isMine()) { + event.endButton = ui.create.control("结束回合", "stayleft", function () { + var evt = _status.event; + if (evt.name != "chooseToUse" || evt.type != "phase") return; + if (evt.skill) { + ui.click.cancel(); + } + ui.click.cancel(); + }); + event.fakeforce = true; + } + else { + if (event.endButton) { + event.endButton.close(); + delete event.endButton; + } + event.fakeforce = false; + } + } + if (event.player.isUnderControl() && !_status.auto) { + event.result = { + bool: false + } + return; + } + else if (event.isMine()) { + if (event.hsskill && !event.forced && _status.prehidden_skills.contains(event.hsskill)) { + ui.click.cancel(); + return; + } + if (event.type == "wuxie") { + if (ui.tempnowuxie) { + var triggerevent = event.getTrigger(); + if (triggerevent && triggerevent.targets && triggerevent.num == triggerevent.targets.length - 1) { + ui.tempnowuxie.close(); + } + } + if (lib.filter.wuxieSwap(event)) { + event.result = { + bool: false + } + return; + } + } + var ok = game.check(); + if (!ok || !lib.config.auto_confirm) { + game.pause(); + if (lib.config.enable_vibrate && player._noVibrate) { + delete player._noVibrate; + game.vibrate(); + } + if (typeof event.prompt == "string") { + if (event.openskilldialog) { + event.skillDialog = ui.create.dialog(event.openskilldialog); + delete event.openskilldialog; + event.dialog = event.prompt; + } + else { + event.dialog = ui.create.dialog(event.prompt); + if (event.prompt2) { + event.dialog.addText(event.prompt2); + } + } + } + else if (typeof event.prompt == "function") { + event.dialog = ui.create.dialog(event.prompt(event)); + } + else if (event.prompt == undefined) { + var str; + if (typeof event.filterCard == "object") { + var filter = event.filterCard; + str = "请使用" + get.cnNumber(event.selectCard[0]) + "张" + if (filter.name) { + str += get.translation(filter.name); + } + else { + str += "牌"; + } + } + else { + str = "请选择要使用的牌"; + } + if (event.openskilldialog) { + event.skillDialog = ui.create.dialog(event.openskilldialog); + delete event.openskilldialog; + event.dialog = str; + } + else if (typeof event.skillDialog != "string") { + event.dialog = ui.create.dialog(str); + } + else { + event.dialog = str; + } + } + } + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + "step 1" + if (event.result == "ai") { + var ok = game.check(); + if (ok) { + ui.click.ok(); + } + else if (ai.basic.chooseCard(event.ai1) || forced) { + if ((ai.basic.chooseTarget(event.ai2) || forced) && (!event.filterOk || event.filterOk())) { + ui.click.ok(); + event._aiexcludeclear = true; + } + else { + if (!event.norestore) { + if (event.skill) { + var skill = event.skill; + ui.click.cancel(); + event._aiexclude.add(skill); + var info = get.info(skill); + if (info.sourceSkill) { + event._aiexclude.add(info.sourceSkill); + } + } + else { + get.card(true).aiexclude(); + game.uncheck(); + } + event.redo(); + game.resume(); + } + else { + ui.click.cancel(); + } + } + } + else if (event.skill && !event.norestore) { + var skill = event.skill; + ui.click.cancel(); + event._aiexclude.add(skill); + var info = get.info(skill); + if (info.sourceSkill) { + event._aiexclude.add(info.sourceSkill); + } + event.redo(); + game.resume(); + } + else { + ui.click.cancel(); + } + if (event.aidelay && event.result && event.result.bool) { + game.delayx(); + } + } + "step 2" + if (event.endButton) { + event.endButton.close(); + delete event.endButton; + } + event.resume(); + if (event.result) { + if (event.result._sendskill) { + lib.skill[event.result._sendskill[0]] = event.result._sendskill[1]; + } + if (event.result.skill) { + var info = get.info(event.result.skill); + if (info && info.chooseButton) { + if (event.dialog && typeof event.dialog == "object") event.dialog.close(); + var dialog = info.chooseButton.dialog(event, player); + if (info.chooseButton.chooseControl) { + var next = player.chooseControl(info.chooseButton.chooseControl(event, player)); + if (dialog.direct) next.direct = true; + if (dialog.forceDirect) next.forceDirect = true; + next.dialog = dialog; + next.set("ai", info.chooseButton.check || function () { return 0; }); + if (event.id) next._parent_id = event.id; + next.type = "chooseToUse_button"; + } + else { + var next = player.chooseButton(dialog); + if (dialog.direct) next.direct = true; + if (dialog.forceDirect) next.forceDirect = true; + next.set("ai", info.chooseButton.check || function () { return 1; }); + next.set("filterButton", info.chooseButton.filter || function () { return true; }); + next.set("selectButton", info.chooseButton.select || 1); + next.set("filterOk", info.chooseButton.filterOk || (() => true)); + if (event.id) next._parent_id = event.id; + next.type = "chooseToUse_button"; + } + event.buttoned = event.result.skill; + } + else if (info && info.precontent && !game.online && !event.nouse) { + var next = game.createEvent("pre_" + event.result.skill); + next.setContent(info.precontent); + next.set("result", event.result); + next.set("player", player); + } + } + } + "step 3" + if (event.buttoned) { + if (result.bool || result.control && result.control != "cancel2") { + var info = get.info(event.buttoned).chooseButton; + lib.skill[event.buttoned + "_backup"] = info.backup(info.chooseControl ? result : result.links, player); + lib.skill[event.buttoned + "_backup"].sourceSkill = event.buttoned; + if (game.online) { + event._sendskill = [event.buttoned + "_backup", lib.skill[event.buttoned + "_backup"]]; + } + else { + game.broadcast((skill, audio) => { + if (!lib.skill[skill]) lib.skill[skill] = {}; + lib.skill[skill].audio = audio; + }, event.buttoned + "_backup", lib.skill[event.buttoned + "_backup"].audio); + } + event.backup(event.buttoned + "_backup"); + if (info.prompt) { + event.openskilldialog = info.prompt(info.chooseControl ? result : result.links, player); + } + } + else { + ui.control.animate("nozoom", 100); + event._aiexclude.add(event.buttoned); + } + event.goto(0); + delete event.buttoned; + } + "step 4" + if (event._aiexcludeclear) { + delete event._aiexcludeclear; + event._aiexclude.length = 0; + } + delete _status.noclearcountdown; + if (event.skillDialog && get.objtype(event.skillDialog) == "div") { + event.skillDialog.close(); + } + if (event.result && event.result.bool && !game.online && !event.nouse) { + player.useResult(event.result, event); + } + else if (event._sendskill) { + event.result._sendskill = event._sendskill; + } + if ((!event.result || !event.result.bool || event.result._noHidingTimer) && (event.result.skill || event.logSkill)) { + var info = get.info(event.result.skill || event.logSkill); + if (info.direct && !info.clearTime) { + _status.noclearcountdown = "direct"; + } + } + if (event.dialog && typeof event.dialog == "object") event.dialog.close(); + if (!_status.noclearcountdown) { + game.stopCountChoose(); + } + "step 5" + if (event._result && event.result) { + event.result.result = event._result; + } + }, + chooseToRespond: function () { + "step 0" + if (event.responded) { + delete event.dialog; + return; + } + var skills = player.getSkills("invisible").concat(lib.skill.global); + game.expandSkills(skills); + for (var i = 0; i < skills.length; i++) { + var info = lib.skill[skills[i]]; + if (info && info.onChooseToRespond) { + info.onChooseToRespond(event); + } + } + if (_status.noclearcountdown !== "direct") _status.noclearcountdown = true; + if (!_status.connectMode && lib.config.skip_shan && event.autochoose && event.autochoose()) { + event.result = { bool: false }; + } + else { + if (game.modeSwapPlayer && !_status.auto && player.isUnderControl()) { + game.modeSwapPlayer(player); + } + if (event.isMine()) { + if (event.hsskill && !event.forced && _status.prehidden_skills.contains(event.hsskill)) { + ui.click.cancel(); + return; + } + var ok = game.check(); + if (!ok || !lib.config.auto_confirm) { + game.pause(); + if (event.openskilldialog) { + event.skillDialog = ui.create.dialog(event.openskilldialog); + delete event.openskilldialog; + event.dialog = event.prompt; + } + else { + if (event.prompt) event.dialog = ui.create.dialog(event.prompt); + if (event.prompt2) event.dialog.addText(event.prompt2); + } + } + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + } + "step 1" + if (event.result == "ai") { + var ok = game.check(); + if (ok) { + ui.click.ok(); + } + else if (ai.basic.chooseCard(event.ai1 || event.ai) || forced) { + if ((ai.basic.chooseTarget(event.ai2) || forced) && (!event.filterOk || event.filterOk())) { + ui.click.ok(); + event._aiexcludeclear = true; + } + else { + if (!event.norestore) { + if (event.skill) { + var skill = event.skill; + ui.click.cancel(); + event._aiexclude.add(skill); + var info = get.info(skill); + if (info.sourceSkill) { + event._aiexclude.add(info.sourceSkill); + } + } + else { + get.card(true).aiexclude(); + game.uncheck(); + } + event.redo(); + game.resume(); + } + else { + ui.click.cancel(); + } + } + } + else if (event.skill && !event.norestore) { + var skill = event.skill; + ui.click.cancel(); + event._aiexclude.add(skill); + var info = get.info(skill); + if (info.sourceSkill) { + event._aiexclude.add(info.sourceSkill); + } + event.redo(); + game.resume(); + } + else { + ui.click.cancel(); + } + if (event.aidelay && event.result && event.result.bool) { + game.delayx(); + } + } + "step 2" + event.resume(); + if (event.result) { + if (event.result._sendskill) { + lib.skill[event.result._sendskill[0]] = event.result._sendskill[1]; + } + if (event.result.skill) { + var info = get.info(event.result.skill); + if (info && info.chooseButton) { + if (event.dialog && typeof event.dialog == "object") event.dialog.close(); + var dialog = info.chooseButton.dialog(event, player); + if (info.chooseButton.chooseControl) { + var next = player.chooseControl(info.chooseButton.chooseControl(event, player)); + if (dialog.direct) next.direct = true; + if (dialog.forceDirect) next.forceDirect = true; + next.dialog = dialog; + next.set("ai", info.chooseButton.check || function () { return 0; }); + } + else { + var next = player.chooseButton(dialog); + if (dialog.direct) next.direct = true; + if (dialog.forceDirect) next.forceDirect = true; + next.set("ai", info.chooseButton.check || function () { return 1; }); + next.set("filterButton", info.chooseButton.filter || function () { return true; }); + next.set("selectButton", info.chooseButton.select || 1); + next.set("filterOk", info.chooseButton.filterOk || (() => true)); + } + event.buttoned = event.result.skill; + } + else if (info && info.precontent && !game.online) { + var next = game.createEvent("pre_" + event.result.skill); + next.setContent(info.precontent); + next.set("result", event.result); + next.set("player", player); + } + } + } + "step 3" + if (event.buttoned) { + if (result.bool || result.control && result.control != "cancel2") { + var info = get.info(event.buttoned).chooseButton; + lib.skill[event.buttoned + "_backup"] = info.backup(info.chooseControl ? result : result.links, player); + lib.skill[event.buttoned + "_backup"].sourceSkill = event.buttoned; + if (game.online) { + event._sendskill = [event.buttoned + "_backup", lib.skill[event.buttoned + "_backup"]]; + } + else { + game.broadcast((skill, audio) => { + if (!lib.skill[skill]) lib.skill[skill] = {}; + lib.skill[skill].audio = audio; + }, event.buttoned + "_backup", lib.skill[event.buttoned + "_backup"].audio); + } + event.backup(event.buttoned + "_backup"); + if (info.prompt) { + event.openskilldialog = info.prompt(info.chooseControl ? result : result.links, player); + } + } + else { + ui.control.animate("nozoom", 100); + event._aiexclude.add(event.buttoned); + } + event.goto(0); + delete event.buttoned; + } + "step 4" + delete _status.noclearcountdown; + if (event.skillDialog && get.objtype(event.skillDialog) == "div") { + event.skillDialog.close(); + } + if (event.result.bool && !game.online) { + if (event.result._sendskill) { + lib.skill[event.result._sendskill[0]] = event.result._sendskill[1]; + } + var info = get.info(event.result.skill); + if (event.onresult) { + event.onresult(event.result); + } + if ((!event.result || !event.result.bool || event.result._noHidingTimer) && (event.result.skill || event.logSkill)) { + if (info.direct && !info.clearTime) { + _status.noclearcountdown = "direct"; + } + } + if (event.logSkill) { + if (typeof event.logSkill == "string") { + player.logSkill(event.logSkill); + } + else if (Array.isArray(event.logSkill)) { + player.logSkill.apply(player, event.logSkill); + } + } + if (!event.result.card && event.result.skill) { + event.result.used = event.result.skill; + player.useSkill(event.result.skill, event.result.cards, event.result.targets); + } + else { + if (info && info.prerespond) { + info.prerespond(event.result, player); + } + var next = player.respond(event.result.cards, event.result.card, event.animate, event.result.skill, event.source); + if (event.result.noanimate) next.animate = false; + if (event.parent.card && event.parent.type == "card") { + next.set("respondTo", [event.parent.player, event.parent.card]); + } + if (event.noOrdering) next.noOrdering = true; + } + } + else if (event._sendskill) { + event.result._sendskill = event._sendskill; + } + if (event.dialog && event.dialog.close) event.dialog.close(); + if (!_status.noclearcountdown) { + game.stopCountChoose(); + } + }, + chooseToDiscard: function () { + "step 0" + if (event.autochoose()) { + event.result = { + bool: true, + autochoose: true, + cards: player.getCards(event.position), + rawcards: player.getCards(event.position), + } + for (var i = 0; i < event.result.cards.length; i++) { + if (!lib.filter.cardDiscardable(event.result.cards[i], player, event)) { + event.result.cards.splice(i--, 1); + } + } + } + else { + // &&!lib.filter.wuxieSwap(trigger) + if (game.modeSwapPlayer && !_status.auto && player.isUnderControl()) { + game.modeSwapPlayer(player); + } + event.rangecards = player.getCards(event.position); + for (var i = 0; i < event.rangecards.length; i++) { + if (lib.filter.cardDiscardable(event.rangecards[i], player, event)) { + event.rangecards.splice(i--, 1); + } + else { + event.rangecards[i].uncheck("chooseToDiscard"); + } + } + var range = get.select(event.selectCard); + if (event.isMine()) { + game.check(); + if (event.hsskill && !event.forced && _status.prehidden_skills.contains(event.hsskill)) { + ui.click.cancel(); + return; + } + game.pause(); + if (range[1] > 1 && typeof event.selectCard != "function") { + event.promptdiscard = ui.create.control("AI代选", function () { + ai.basic.chooseCard(event.ai); + if (_status.event.custom && _status.event.custom.add.card) { + _status.event.custom.add.card(); + } + for (var i = 0; i < ui.selected.cards.length; i++) { + ui.selected.cards[i].updateTransform(true); + } + }); + } + if (Array.isArray(event.dialog)) { + event.dialog = ui.create.dialog.apply(this, event.dialog); + event.dialog.open(); + event.dialog.classList.add("noselect"); + } + else if (event.prompt != false) { + var str; + if (typeof (event.prompt) == "string") str = event.prompt; + else { + str = "请弃置"; + if (range[0] == range[1]) str += get.cnNumber(range[0]); + else if (range[1] == Infinity) str += "至少" + get.cnNumber(range[0]); + else str += get.cnNumber(range[0]) + "至" + get.cnNumber(range[1]); + str += "张"; + if (event.position == "h" || event.position == undefined) str += "手"; + if (event.position == "e") str += "装备"; + str += "牌"; + } + event.dialog = ui.create.dialog(str); + if (event.prompt2) { + event.dialog.addText(event.prompt2, event.prompt2.length <= 20); + } + if (Array.isArray(event.selectCard)) { + event.promptbar = event.dialog.add("0/" + get.numStr(event.selectCard[1], "card")); + event.custom.add.card = function () { + _status.event.promptbar.innerHTML = + ui.selected.cards.length + "/" + get.numStr(_status.event.selectCard[1], "card"); + } + } + } + else if (get.itemtype(event.dialog) == "dialog") { + event.dialog.style.display = ""; + event.dialog.open(); + } + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + } + "step 1" + if (event.result == "ai") { + game.check(); + if ((ai.basic.chooseCard(event.ai) || forced) && (!event.filterOk || event.filterOk())) { + ui.click.ok(); + } + else if (event.skill) { + var skill = event.skill; + ui.click.cancel(); + event._aiexclude.add(skill); + event.redo(); + game.resume(); + } + else { + ui.click.cancel(); + } + } + if (event.rangecards) { + for (var i = 0; i < event.rangecards.length; i++) { + event.rangecards[i].recheck("chooseToDiscard"); + } + } + "step 2" + event.resume(); + if (event.promptdiscard) { + event.promptdiscard.close(); + } + "step 3" + if (event.result.bool && event.result.cards && event.result.cards.length && + !game.online && event.autodelay && !event.isMine()) { + if (typeof event.autodelay == "number") { + game.delayx(event.autodelay); + } + else { + game.delayx(); + } + } + "step 4" + if (event.logSkill && event.result.bool && !game.online) { + if (typeof event.logSkill == "string") { + player.logSkill(event.logSkill); + } + else if (Array.isArray(event.logSkill)) { + player.logSkill.apply(player, event.logSkill); + } + } + if (!game.online) { + if (typeof event.delay == "boolean") { + event.done = player.discard(event.result.cards).set("delay", event.delay); + } + else { + event.done = player.discard(event.result.cards); + } + event.done.discarder = player; + } + if (event.dialog && event.dialog.close) event.dialog.close(); + }, + gaincardMultiple: function () { + "step 0" + event.type = "gain"; + if (event.animate == "give" || event.animate == "gain2") event.visible = true; + if (player && cards) { + event._lose = true; + player.lose(cards, ui.special).set("type", "gain").set("forceDie", true).set("getlx", false); + } + "step 1" + switch (event.animate) { + case "draw": + game.delay(0, get.delayx(500, 500)); + for (var i of event.gain_list) { + if (get.itemtype(i[1]) == "card") i[1] = [i[1]]; + if (event._lose) { + i[1] = i[1].filter(card => { + return !cards.contains(card) || !player.getCards("hejsx").contains(card); + }) + } + if (i[1].length > 0) i[0].$draw(i[1].length); + } + break; + case "gain": + game.delay(0, get.delayx(700, 700)); + for (var i of event.gain_list) { + if (get.itemtype(i[1]) == "card") i[1] = [i[1]]; + if (event._lose) { + i[1] = i[1].filter(card => { + return !cards.contains(card) || !player.getCards("hejsx").contains(card); + }) + } + if (i[1].length > 0) i[0].$gain(i[1].length); + } + break; + case "gain2": case "draw2": + game.delay(0, get.delayx(500, 500)); + for (var i of event.gain_list) { + if (get.itemtype(i[1]) == "card") i[1] = [i[1]]; + if (event._lose) { + i[1] = i[1].filter(card => { + return !cards.contains(card) || !player.getCards("hejsx").contains(card); + }) + } + if (i[1].length > 0) i[0].$gain2(i[1]); + } + break; + case "give": case "giveAuto": + if (!player) break; + var evt = event.getl(player); + game.delay(0, get.delayx(500, 500)); + for (var i of event.gain_list) { + if (get.itemtype(i[1]) == "card") i[1] = [i[1]]; + if (event._lose) { + i[1] = i[1].filter(card => { + return !cards.contains(card) || !player.getCards("hejsx").contains(card); + }) + } + var shown = i[1].slice(0), hidden = []; + if (event.animate == "giveAuto") { + for (var card of i[1]) { + if (evt.hs.contains(card)) { + shown.remove(card); + hidden.push(card); + } + } + } + if (shown.length > 0) player.$give(shown, i[0]); + if (hidden.length > 0) player.$giveAuto(hidden, i[0]); + } + break; + default: + event.finish(); + } + for (var i of event.gain_list) { + if (i[1].length > 0) { + var next = i[0].gain(i[1]); + next.getlx = false; + if (event.visible) next.visible = true; + if (event.giver) next.giver = event.giver; + if (event.gaintag) next.gaintag.addArray(event.gaintag); + } + } + "step 2" + game.delayx(); + }, + discardMultiple: function () { + "step 0" + event.type = "discard"; + event.visible = true; + if (!event.position) event.position = ui.discardPile; + var cards = []; + event.cards = cards; + for (var i = 0; i < event.lose_list.length; i++) { + var next = event.lose_list[i][0].lose(event.lose_list[i][1], event.position); + game.log(event.lose_list[i][0], "弃置了", event.lose_list[i][1]); + next.type = "discard"; + next.animate = false; + next.delay = false; + cards.addArray(event.lose_list[i][1]); + next.getlx = false; + } + var evt = event; + if (evt.animate != false) { + evt.discardid = lib.status.videoId++; + game.broadcastAll(function (list, id, cards) { + for (var i of list) { + for (var j of i[1]) { + j.classList.remove("glow"); + j.classList.remove("glows"); + } + i[0].$throw(i[1], null, "nobroadcast"); + } + var cardnodes = []; + cardnodes._discardtime = get.time(); + for (var ix of list) { + var card = ix[1]; + for (var i = 0; i < cards.length; i++) { + if (cards[i].clone) { + cardnodes.push(cards[i].clone); + } + } + } + ui.todiscard[id] = cardnodes; + }, event.lose_list, evt.discardid, cards); + if (lib.config.sync_speed && cards[0] && cards[0].clone) { + if (evt.delay != false) { + var waitingForTransition = get.time(); + evt.waitingForTransition = waitingForTransition; + cards[0].clone.listenTransition(function () { + if (_status.waitingForTransition == waitingForTransition && _status.paused) { + game.resume(); + } + delete evt.waitingForTransition; + }); + } + else if (evt.getParent().discardTransition) { + delete evt.getParent().discardTransition; + var waitingForTransition = get.time(); + evt.getParent().waitingForTransition = waitingForTransition; + cards[0].clone.listenTransition(function () { + if (_status.waitingForTransition == waitingForTransition && _status.paused) { + game.resume(); + } + delete evt.getParent().waitingForTransition; + }); + } + } + } + "step 1" + if (event.delay != false) { + if (event.waitingForTransition) { + _status.waitingForTransition = event.waitingForTransition; + game.pause(); + } + else { + game.delayx(); + } + } + }, + chooseToCompareLose: function () { + for (var i = 0; i < event.lose_list.length; i++) { + var next = event.lose_list[i][0].lose(event.lose_list[i][1], ui.ordering); + next.relatedEvent = event.getParent(); + next.getlx = false; + } + }, + chooseToCompareMeanwhile: function () { + "step 0" + if (player.countCards("h") == 0) { + event.result = { cancelled: true, bool: false } + event.finish(); + return; + } + for (var i = 0; i < targets.length; i++) { + if (targets[i].countCards("h") == 0) { + event.result = { cancelled: true, bool: false } + event.finish(); + return; + } + } + if (!event.multitarget) { + targets.sort(lib.sort.seat); + } + game.log(player, "对", targets, "发起了共同拼点"); + event.compareMeanwhile = true; + "step 1" + event._result = []; + event.list = targets.filter(function (current) { + return !event.fixedResult || !event.fixedResult[current.playerid]; + }); + if (event.list.length || !event.fixedResult || !event.fixedResult[player.playerid]) { + if (!event.fixedResult || !event.fixedResult[player.playerid]) event.list.unshift(player); + player.chooseCardOL(event.list, "请选择拼点牌", true).set("type", "compare").set("ai", event.ai).set("source", player).aiCard = function (target) { + var hs = target.getCards("h"); + var event = _status.event; + event.player = target; + hs.sort(function (a, b) { + return event.ai(b) - event.ai(a); + }); + delete event.player; + return { bool: true, cards: [hs[0]] }; + }; + } + "step 2" + var cards = []; + var lose_list = []; + if (event.fixedResult && event.fixedResult[player.playerid]) { + event.list.unshift(player); + result.unshift({ bool: true, cards: [event.fixedResult[player.playerid]] }); + lose_list.push([player, [event.fixedResult[player.playerid]]]); + } + else { + if (result[0].skill && lib.skill[result[0].skill] && lib.skill[result[0].skill].onCompare) { + player.logSkill(result[0].skill); + result[0].cards = lib.skill[result[0].skill].onCompare(player) + } + else lose_list.push([player, result[0].cards]); + } + for (var j = 0; j < targets.length; j++) { + if (event.list.contains(targets[j])) { + var i = event.list.indexOf(targets[j]); + if (result[i].skill && lib.skill[result[i].skill] && lib.skill[result[i].skill].onCompare) { + event.list[i].logSkill(result[i].skill); + result[i].cards = lib.skill[result[i].skill].onCompare(event.list[i]); + } + else lose_list.push([targets[j], result[i].cards]); + cards.push(result[i].cards[0]); + } + else if (event.fixedResult && event.fixedResult[targets[j].playerid]) { + cards.push(event.fixedResult[targets[j].playerid]); + lose_list.push([targets[j], [event.fixedResult[targets[j].playerid]]]); + } + } + if (lose_list.length) { + game.loseAsync({ + lose_list: lose_list, + }).setContent("chooseToCompareLose"); + } + event.lose_list = lose_list; + event.getNum = function (card) { + for (var i of event.lose_list) { + if (i[1].contains && i[1].contains(card)) return get.number(card, i[0]); + } + return get.number(card, false); + } + event.cardlist = cards; + event.cards = cards; + event.card1 = result[0].cards[0]; + event.num1 = event.getNum(event.card1); + event.iwhile = 0; + event.winner = null; + event.maxNum = -1; + event.tempplayer = event.player; + event.result = { + winner: null, + player: event.card1, + targets: event.cardlist.slice(0), + num1: [], + num2: [], + }; + "step 3" + event.trigger("compareCardShowBefore"); + "step 4" + player.$compareMultiple(event.card1, targets, cards); + game.log(player, "的拼点牌为", event.card1); + event.cardlist.forEach((card, index) => { + game.log(targets[index], "的拼点牌为", card); + }); + player.animate("target"); + game.delay(0, 1000); + "step 5" + event.target = null; + event.trigger("compare"); + "step 6" + if (event.iwhile < targets.length) { + event.target = targets[event.iwhile]; + event.target.animate("target"); + event.card2 = event.cardlist[event.iwhile]; + event.num2 = event.getNum(event.card2); + //event.tempplayer.line(event.target); + delete event.player; + event.trigger("compare"); + } + else { + game.delay(0, 1000); + event.goto(9); + } + "step 7" + event.result.num1[event.iwhile] = event.num1; + event.result.num2[event.iwhile] = event.num2; + var list = [[event.tempplayer, event.num1], [event.target, event.num2]]; + for (var i of list) { + if (i[1] > event.maxNum) { + event.maxNum = i[1]; + event.winner = i[0]; + } + else if (event.winner && i[1] == event.maxNum && i[0] != event.winner) { + event.winner = null; + } + } + "step 8" + event.iwhile++; + event.goto(6); + "step 9" + var player = event.tempplayer; + event.player = player; + delete event.tempplayer; + var str = "无人拼点成功"; + if (event.winner) { + event.result.winner = event.winner; + str = get.translation(event.winner) + "拼点成功"; + game.log(event.winner, "拼点成功"); + event.winner.popup("胜"); + } else game.log("#b无人", "拼点成功"); + var list = [player].addArray(targets); + list.remove(event.winner); + for (var i of list) { + i.popup("负"); + } + if (str) { + game.broadcastAll(function (str) { + var dialog = ui.create.dialog(str); + dialog.classList.add("center"); + setTimeout(function () { + dialog.close(); + }, 1000); + }, str); + } + game.delay(3); + "step 10" + game.broadcastAll(ui.clear); + "step 11" + event.cards.add(event.card1); + }, + chooseToCompareMultiple: function () { + "step 0" + if (player.countCards("h") == 0) { + event.result = { cancelled: true, bool: false } + event.finish(); + return; + } + for (var i = 0; i < targets.length; i++) { + if (targets[i].countCards("h") == 0) { + event.result = { cancelled: true, bool: false } + event.finish(); + return; + } + } + if (!event.multitarget) { + targets.sort(lib.sort.seat); + } + game.log(player, "对", targets, "发起拼点"); + "step 1" + event._result = []; + event.list = targets.filter(function (current) { + return !event.fixedResult || !event.fixedResult[current.playerid]; + }); + if (event.list.length || !event.fixedResult || !event.fixedResult[player.playerid]) { + if (!event.fixedResult || !event.fixedResult[player.playerid]) event.list.unshift(player); + player.chooseCardOL(event.list, "请选择拼点牌", true).set("type", "compare").set("ai", event.ai).set("source", player).aiCard = function (target) { + var hs = target.getCards("h"); + var event = _status.event; + event.player = target; + hs.sort(function (a, b) { + return event.ai(b) - event.ai(a); + }); + delete event.player; + return { bool: true, cards: [hs[0]] }; + }; + } + "step 2" + var cards = []; + var lose_list = []; + if (event.fixedResult && event.fixedResult[player.playerid]) { + event.list.unshift(player); + result.unshift({ bool: true, cards: [event.fixedResult[player.playerid]] }); + lose_list.push([player, [event.fixedResult[player.playerid]]]); + } + else { + if (result[0].skill && lib.skill[result[0].skill] && lib.skill[result[0].skill].onCompare) { + player.logSkill(result[0].skill); + result[0].cards = lib.skill[result[0].skill].onCompare(player) + } + else lose_list.push([player, result[0].cards]); + } + for (var j = 0; j < targets.length; j++) { + if (event.list.contains(targets[j])) { + var i = event.list.indexOf(targets[j]); + if (result[i].skill && lib.skill[result[i].skill] && lib.skill[result[i].skill].onCompare) { + event.list[i].logSkill(result[i].skill); + result[i].cards = lib.skill[result[i].skill].onCompare(event.list[i]); + } + else lose_list.push([targets[j], result[i].cards]); + cards.push(result[i].cards[0]); + } + else if (event.fixedResult && event.fixedResult[targets[j].playerid]) { + cards.push(event.fixedResult[targets[j].playerid]); + lose_list.push([targets[j], [event.fixedResult[targets[j].playerid]]]); + } + } + if (lose_list.length) { + game.loseAsync({ + lose_list: lose_list, + }).setContent("chooseToCompareLose"); + } + event.lose_list = lose_list; + event.getNum = function (card) { + for (var i of event.lose_list) { + if (i[1].contains && i[1].contains(card)) return get.number(card, i[0]); + } + return get.number(card, false); + } + event.cardlist = cards; + event.cards = cards; + event.card1 = result[0].cards[0]; + event.num1 = event.getNum(event.card1); + event.iwhile = 0; + event.result = { + player: event.card1, + targets: event.cardlist.slice(0), + num1: [], + num2: [], + }; + "step 3" + event.trigger("compareCardShowBefore"); + "step 4" + game.log(player, "的拼点牌为", event.card1); + "step 5" + if (event.iwhile < targets.length) { + event.target = targets[event.iwhile]; + event.target.animate("target"); + player.animate("target"); + event.card2 = event.cardlist[event.iwhile]; + event.num2 = event.getNum(event.card2); + game.log(event.target, "的拼点牌为", event.card2); + player.line(event.target); + player.$compare(event.card1, event.target, event.card2); + event.trigger("compare"); + game.delay(0, 1500); + } + else { + event.goto(9); + } + "step 6" + event.result.num1[event.iwhile] = event.num1; + event.result.num2[event.iwhile] = event.num2; + var str; + if (event.num1 > event.num2) { + str = get.translation(player) + "拼点成功"; + player.popup("胜"); + target.popup("负"); + } + else { + str = get.translation(player) + "拼点失败"; + if (event.num1 == event.num2) { + player.popup("平"); + target.popup("平"); + } + else { + player.popup("负"); + target.popup("胜"); + } + } + game.broadcastAll(function (str) { + var dialog = ui.create.dialog(str); + dialog.classList.add("center"); + setTimeout(function () { + dialog.close(); + }, 1000); + }, str); + game.delay(2); + "step 7" + if (event.callback) { + game.broadcastAll(function (card1, card2) { + if (card1.clone) card1.clone.style.opacity = 0.5; + if (card2.clone) card2.clone.style.opacity = 0.5; + }, event.card1, event.card2); + var next = game.createEvent("compareMultiple"); + next.player = player; + next.target = event.target; + next.card1 = event.card1; + next.card2 = event.card2; + next.num1 = event.num1; + next.num2 = event.num2; + next.setContent(event.callback); + event.compareMultiple = true; + } + "step 8" + game.broadcastAll(ui.clear); + event.iwhile++; + event.goto(5); + "step 9" + event.cards.add(event.card1); + }, + chooseToCompare: function () { + "step 0" + if (((!event.fixedResult || !event.fixedResult[player.playerid]) && player.countCards("h") == 0) || ((!event.fixedResult || !event.fixedResult[target.playerid]) && target.countCards("h") == 0)) { + event.result = { cancelled: true, bool: false } + event.finish(); + return; + } + game.log(player, "对", target, "发起拼点"); + event.lose_list = []; + "step 1" + var sendback = function () { + if (_status.event != event) { + return function () { + event.resultOL = _status.event.resultOL; + }; + } + }; + if (event.fixedResult && event.fixedResult[player.playerid]) { + event.card1 = event.fixedResult[player.playerid]; + event.lose_list.push([player, event.card1]); + } + else if (player.isOnline()) { + player.wait(sendback); + event.ol = true; + player.send(function (ai) { + game.me.chooseCard("请选择拼点牌", true).set("type", "compare").set("glow_result", true).ai = ai; + game.resume(); + }, event.ai); + } + else { + event.localPlayer = true; + player.chooseCard("请选择拼点牌", true).set("type", "compare").set("glow_result", true).ai = event.ai; + } + if (event.fixedResult && event.fixedResult[target.playerid]) { + event.card2 = event.fixedResult[target.playerid]; + event.lose_list.push([target, event.card2]); + } + else if (target.isOnline()) { + target.wait(sendback); + event.ol = true; + target.send(function (ai) { + game.me.chooseCard("请选择拼点牌", true).set("type", "compare").set("glow_result", true).ai = ai; + game.resume(); + }, event.ai); + } + else { + event.localTarget = true; + } + "step 2" + if (event.localPlayer) { + if (result.skill && lib.skill[result.skill] && lib.skill[result.skill].onCompare) { + result.cards = lib.skill[result.skill].onCompare(player); + player.logSkill(result.skill); + } + else event.lose_list.push([player, result.cards[0]]); + event.card1 = result.cards[0]; + } + if (event.localTarget) { + target.chooseCard("请选择拼点牌", true).set("type", "compare").set("glow_result", true).ai = event.ai; + } + "step 3" + if (event.localTarget) { + if (result.skill && lib.skill[result.skill] && lib.skill[result.skill].onCompare) { + target.logSkill(result.skill); + result.cards = lib.skill[result.skill].onCompare(target); + } + else event.lose_list.push([target, result.cards[0]]); + event.card2 = result.cards[0]; + } + if (!event.resultOL && event.ol) { + game.pause(); + } + "step 4" + try { + if (!event.card1) { + if (event.resultOL[player.playerid].skill && lib.skill[event.resultOL[player.playerid].skill] && lib.skill[event.resultOL[player.playerid].skill].onCompare) { + player.logSkill(event.resultOL[player.playerid].skill); + event.resultOL[player.playerid].cards = lib.skill[event.resultOL[player.playerid].skill].onCompare(player); + } + else event.lose_list.push([player, event.resultOL[player.playerid].cards[0]]); + event.card1 = event.resultOL[player.playerid].cards[0]; + } + if (!event.card2) { + if (event.resultOL[target.playerid].skill && lib.skill[event.resultOL[target.playerid].skill] && lib.skill[event.resultOL[target.playerid].skill].onCompare) { + target.logSkill(event.resultOL[target.playerid].skill); + event.resultOL[target.playerid].cards = lib.skill[event.resultOL[target.playerid].skill].onCompare(player); + } + else event.lose_list.push([target, event.resultOL[target.playerid].cards[0]]); + event.card2 = event.resultOL[target.playerid].cards[0]; + } + if (!event.card1 || !event.card2) { + throw ("err"); + } + } + catch (e) { + console.log(e); + game.print(e); + event.finish(); + return; + } + if (event.card2.number >= 10 || event.card2.number <= 4) { + if (target.countCards("h") > 2) { + event.addToAI = true; + } + } + if (event.lose_list.length) { + game.loseAsync({ + lose_list: event.lose_list, + }).setContent("chooseToCompareLose"); + } + "step 5" + event.trigger("compareCardShowBefore"); + "step 6" + game.broadcast(function () { + ui.arena.classList.add("thrownhighlight"); + }); + ui.arena.classList.add("thrownhighlight"); + game.addVideo("thrownhighlight1"); + player.$compare(event.card1, target, event.card2); + game.log(player, "的拼点牌为", event.card1); + game.log(target, "的拼点牌为", event.card2); + var getNum = function (card) { + for (var i of event.lose_list) { + if (i[1] == card) return get.number(card, i[0]); + } + return get.number(card, false); + } + event.num1 = getNum(event.card1); + event.num2 = getNum(event.card2); + event.trigger("compare"); + game.delay(0, 1500); + "step 7" + event.result = { + player: event.card1, + target: event.card2, + num1: event.num1, + num2: event.num2 + } + var str; + if (event.num1 > event.num2) { + event.result.bool = true; + event.result.winner = player; + str = get.translation(player) + "拼点成功"; + player.popup("胜"); + target.popup("负"); + } + else { + event.result.bool = false; + str = get.translation(player) + "拼点失败"; + if (event.num1 == event.num2) { + event.result.tie = true; + player.popup("平"); + target.popup("平"); + } + else { + event.result.winner = target; + player.popup("负"); + target.popup("胜"); + } + } + game.broadcastAll(function (str) { + var dialog = ui.create.dialog(str); + dialog.classList.add("center"); + setTimeout(function () { + dialog.close(); + }, 1000); + }, str); + game.delay(2); + "step 8" + if (typeof event.target.ai.shown == "number" && event.target.ai.shown <= 0.85 && event.addToAI) { + event.target.ai.shown += 0.1; + } + game.broadcastAll(function () { + ui.arena.classList.remove("thrownhighlight"); + }); + game.addVideo("thrownhighlight2"); + if (event.clear !== false) { + game.broadcastAll(ui.clear); + } + if (typeof event.preserve == "function") { + event.preserve = event.preserve(event.result); + } + else if (event.preserve == "win") { + event.preserve = event.result.bool; + } + else if (event.preserve == "lose") { + event.preserve = !event.result.bool; + } + }, + chooseSkill: function () { + "step 0" + var list; + if (typeof event.target == "string") { + list = get.gainableSkillsName(event.target, event.func); + } + else { + list = event.target.getGainableSkills(event.func); + } + if (!list.length) { + event.finish(); + event.result = { bool: false }; + return; + } + event.skillai = function (list) { + return get.max(list, get.skillRank, "item"); + }; + if (event.isMine()) { + var dialog = ui.create.dialog("forcebutton"); + dialog.add(event.prompt || "选择获得一项技能"); + _status.event.list = list; + var clickItem = function () { + _status.event._result = this.link; + game.resume(); + }; + for (i = 0; i < list.length; i++) { + if (lib.translate[list[i] + "_info"]) { + var translation = get.translation(list[i]); + if (translation[0] == "新" && translation.length == 3) { + translation = translation.slice(1, 3); + } + else { + translation = translation.slice(0, 2); + } + var item = dialog.add(``); + item.firstChild.addEventListener("click", clickItem); + item.firstChild.link = list[i]; + } + } + dialog.add(ui.create.div(".placeholder")); + event.dialog = dialog; + event.switchToAuto = function () { + event._result = event.skillai(event.list); + game.resume(); + }; + _status.imchoosing = true; + game.pause(); + } + else { + event._result = event.skillai(list); + } + "step 1" + _status.imchoosing = false; + if (event.dialog) { + event.dialog.close(); + } + event.result = { bool: true, skill: result }; + }, + discoverCard: function () { + "step 0" + var num = event.num || 3; + var choice; + if (typeof event.list == "string" || typeof event.list == "function") { + choice = get.inpile(event.list).randomGets(num); + } + else if (Array.isArray(event.list)) { + choice = event.list.randomGets(num); + } + else { + choice = Array.from(event.list).randomGets(num); + } + if (choice.length) { + var prompt = event.prompt; + if (!prompt) { + prompt = "选择一张牌"; + if (event.use) { + prompt += "使用之"; + } + else if (!event.nogain) { + prompt += "获得之"; + } + } + if (typeof choice[0] === "string") { + var next = player.chooseVCardButton(choice, prompt, event.forced); + if (event.ai) { + next.set("ai", event.ai); + } + } + else if (get.itemtype(choice[0]) == "card") { + var next = player.chooseCardButton(choice, prompt, event.forced); + if (event.ai) { + next.set("ai", event.ai); + } + } + else { + event.finish(); + } + } + else { + event.finish(); + } + "step 1" + event.result = { + bool: result.bool, + card: null, + choice: null + }; + if (result.bool && result.links.length) { + var link = result.links[0]; + var togain = null; + if (get.itemtype(link) == "card") { + event.result.card = link; + togain = link; + } + else if (Array.isArray(link)) { + event.result.choice = link[2]; + togain = game.createCard(link[2]); + } + if (togain) { + if (event.use) { + player.chooseUseTarget(togain); + } + else if (!event.nogain) { + player.gain(togain, "draw"); + game.log(player, "获得了一张牌"); + } + } + } + }, + chooseButton: function () { + "step 0" + if (typeof event.dialog == "number") { + event.dialog = get.idDialog(event.dialog); + } + if (event.createDialog && !event.dialog) { + if (Array.isArray(event.createDialog)) { + event.createDialog.add("hidden"); + event.dialog = ui.create.dialog.apply(this, event.createDialog); + } + event.closeDialog = true; + } + if (event.dialog == undefined) event.dialog = ui.dialog; + if (event.isMine() || event.dialogdisplay) { + event.dialog.style.display = ""; + event.dialog.open(); + } + var filterButton = event.filterButton || function () { return true }; + var selectButton = get.select(event.selectButton); + var buttons = event.dialog.buttons; + var buttonsx = []; + var num = 0; + for (var i = 0; i < buttons.length; i++) { + var button = buttons[i]; + if (filterButton(button, player)) { + num++; + buttonsx.add(button); + } + } + if (event.isMine()) { + if (event.hsskill && !event.forced && _status.prehidden_skills.contains(event.hsskill)) { + ui.click.cancel(); + return; + } + else if (event.direct && num == selectButton[0] || event.forceDirect) { + var buttons = buttonsx.slice(0, num); + event.result = { + bool: true, + button: [buttons], + links: get.links(buttons), + }; + event.dialog.close(); + } + else { + game.check(); + game.pause(); + } + } + else if (event.isOnline()) { + if (event.direct && num == 1 || event.forceDirect) { + var buttons = buttonsx.slice(0, num); + event.result = { + bool: true, + button: [buttons], + links: get.links(buttons), + }; + event.dialog.close(); + } + else { + event.send(); + } + delete event.callback; + } + else { + event.result = "ai"; + } + if (event.onfree) { + lib.init.onfree(); + } + "step 1" + if (event.result == "ai") { + if (event.processAI) { + event.result = event.processAI(); + } + else { + game.check(); + if ((ai.basic.chooseButton(event.ai) || forced) && (!event.filterOk || event.filterOk())) ui.click.ok(); + else ui.click.cancel(); + } + } + if (event.closeDialog) { + event.dialog.close(); + } + if (event.callback) { + event.callback(event.player, event.result); + } + event.resume(); + }, + chooseCardOL: function () { + "step 0" + event.targets = event.list.slice(0); + if (!_status.connectMode) { + event.result = []; + event.goto(7); + } + else { + for (var i = 0; i < event.list.length; i++) { + var target = event.list[i]; + target.wait(); + if (target.isOnline()) { + target.send(function (args, set) { + game.me.chooseCard.apply(game.me, args).set(set); + game.resume(); + }, event._args, event._set); + event.list.splice(i--, 1); + } + else if (target == game.me) { + event.withme = true; + event.list.splice(i--, 1); + } + } + } + "step 1" + if (event.list.length) { + event.target = event.list.shift(); + event.target.chooseCard.apply(event.target, event._args).set(event._set); + } + else { + event.goto(3); + } + "step 2" + event.target.unwait(result); + event.goto(1); + "step 3" + if (event.withme) { + game.me.chooseCard.apply(game.me, event._args).set(event._set); + } + else { + event.goto(5); + } + "step 4" + game.me.unwait(result); + "step 5" + if (!event.resultOL) { + game.pause(); + } + "step 6" + event.result = []; + for (var i = 0; i < event.targets.length; i++) { + event.result[i] = event.resultOL[event.targets[i].playerid] || {}; + if (event.result[i] == "ai" && event.aiCard) { + event.result[i] = event.aiCard(event.targets[i]); + } + } + event.finish(); + "step 7" + if (event.list.length) { + event.target = event.list.shift(); + event.target.chooseCard.apply(event.target, event._args).set(event._set); + } + else { + for (var i = 0; i < event.targets.length; i++) { + if (!event.result[i]) { + event.result[i] = {}; + } + } + event.finish(); + } + "step 8" + event.result[event.targets.indexOf(event.target)] = result; + event.goto(7); + }, + chooseButtonOL: function () { + "step 0" + //ui.arena.classList.add("markhidden"); + for (var i = 0; i < event.list.length; i++) { + var current = event.list[i]; + current[0].wait(); + if (current[0].isOnline()) { + var target = current.shift(); + target.send(function (args, callback, switchToAuto, processAI) { + //ui.arena.classList.add("markhidden"); + var next = game.me.chooseButton.apply(game.me, args); + next.callback = callback; + next.switchToAuto = switchToAuto; + next.processAI = processAI; + next.complexSelect = true; + game.resume(); + }, current, event.callback, event.switchToAuto, event.processAI); + target._choose_button_ol = current; + event.list.splice(i--, 1); + } + else if (current[0] == game.me) { + event.last = current; + event.last.shift(); + event.list.splice(i--, 1); + } + } + "step 1" + if (event.list.length) { + var current = event.list.shift(); + event.target = current.shift(); + var next = event.target.chooseButton.apply(event.target, current); + next.callback = event.callback; + next.switchToAuto = event.switchToAuto; + next.processAI = event.processAI; + } + else { + event.goto(3); + } + "step 2" + event.target.unwait(result); + event.goto(1); + "step 3" + if (event.last) { + var next = game.me.chooseButton.apply(game.me, event.last); + next.callback = event.callback; + next.switchToAuto = event.switchToAuto; + next.processAI = event.processAI; + } + else { + event.goto(5); + } + "step 4" + game.me.unwait(result); + "step 5" + if (!event.resultOL) { + game.pause(); + } + "step 6" + /*game.broadcastAll(function(){ + ui.arena.classList.remove("markhidden"); + });*/ + event.result = event.resultOL; + }, + chooseCard: function () { + "step 0" + if (event.directresult) { + event.result = { + buttons: [], + cards: event.directresult.slice(0), + targets: [], + confirm: "ok", + bool: true, + links: [] + }; + } + else { + if (event.isMine()) { + game.check(); + game.pause(); + if (event.hsskill && !event.forced && _status.prehidden_skills.contains(event.hsskill)) { + ui.click.cancel(); + return; + } + if (event.prompt != false) { + var str; + if (typeof event.prompt == "string") str = event.prompt; + else { + str = "请选择" + var range = get.select(event.selectCard); + if (range[0] == range[1]) str += get.cnNumber(range[0]); + else if (range[1] == Infinity) str += "至少" + get.cnNumber(range[0]); + else str += get.cnNumber(range[0]) + "至" + get.cnNumber(range[1]); + str += "张"; + if (event.position == "h" || event.position == undefined) str += "手"; + if (event.position == "e") str += "装备"; + str += "牌"; + } + event.dialog = ui.create.dialog(str); + if (event.prompt2) { + event.dialog.addText(event.prompt2, event.prompt2.length <= 20); + } + if (Array.isArray(event.promptx)) { + for (var i = 0; i < event.promptx.length; i++) { + event.dialog.add(event.promptx[i]); + } + } + if (Array.isArray(event.selectCard)) { + event.promptbar = event.dialog.add("0/" + get.numStr(event.selectCard[1], "card")); + event.custom.add.card = function () { + _status.event.promptbar.innerHTML = + ui.selected.cards.length + "/" + get.numStr(_status.event.selectCard[1], "card"); + } + } + } + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + } + "step 1" + if (event.result == "ai") { + game.check(); + if ((ai.basic.chooseCard(event.ai) || forced) && (!event.filterOk || event.filterOk())) { + ui.click.ok(); + } + else if (event.skill) { + var skill = event.skill; + ui.click.cancel(); + event._aiexclude.add(skill); + event.redo(); + game.resume(); + } + else { + ui.click.cancel(); + } + } + "step 2" + event.resume(); + if (event.glow_result && event.result.cards && !event.directresult) { + for (var i = 0; i < event.result.cards.length; i++) { + event.result.cards[i].classList.add("glow"); + } + } + if (event.dialog) event.dialog.close(); + }, + chooseTarget: function () { + "step 0" + if (event.isMine()) { + if (event.hsskill && !event.forced && _status.prehidden_skills.contains(event.hsskill)) { + ui.click.cancel(); + return; + } + game.check(); + game.pause(); + if (event.createDialog && !event.dialog && Array.isArray(event.createDialog)) { + event.dialog = ui.create.dialog.apply(this, event.createDialog); + } + else if (event.prompt != false) { + var str; + if (typeof event.prompt == "string") str = event.prompt; + else { + str = "请选择" + var range = get.select(event.selectTarget); + if (range[0] == range[1]) str += get.cnNumber(range[0]); + else if (range[1] == Infinity) str += "至少" + get.cnNumber(range[0]); + else str += get.cnNumber(range[0]) + "至" + get.cnNumber(range[1]); + str += "个目标"; + } + event.dialog = ui.create.dialog(str); + if (event.prompt2) { + event.dialog.addText(event.prompt2, event.prompt2.length <= 20); + } + if (event.promptbar != "none") { + event.promptbar = event.dialog.add("0/" + get.numStr(get.select(event.selectTarget)[1], "target")); + event.custom.add.target = function () { + _status.event.promptbar.innerHTML = + ui.selected.targets.length + "/" + get.numStr(get.select(event.selectTarget)[1], "target"); + } + } + } + else if (get.itemtype(event.dialog) == "dialog") { + event.dialog.open(); + } + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + "step 1" + if (event.result == "ai") { + game.check(); + if ((ai.basic.chooseTarget(event.ai) || forced) && (!event.filterOk || event.filterOk())) { + ui.click.ok(); + } + else { + ui.click.cancel(); + } + } + if (event.result.bool && event.animate !== false) { + for (var i = 0; i < event.result.targets.length; i++) { + event.result.targets[i].animate("target"); + } + } + if (event.dialog) event.dialog.close(); + event.resume(); + "step 2" + if (event.onresult) { + event.onresult(event.result); + } + if (event.result.bool && event.autodelay && !event.isMine()) { + if (typeof event.autodelay == "number") { + game.delayx(event.autodelay); + } + else { + game.delayx(); + } + } + }, + chooseCardTarget: function () { + "step 0" + if (event.isMine()) { + if (event.hsskill && !event.forced && _status.prehidden_skills.contains(event.hsskill)) { + ui.click.cancel(); + return; + } + game.check(); + game.pause(); + if (event.prompt != false) { + event.dialog = ui.create.dialog(event.prompt || "请选择卡牌和目标"); + if (event.prompt2) { + event.dialog.addText(event.prompt2, event.prompt2.length <= 20); + } + } + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + "step 1" + if (event.result == "ai") { + game.check(); + if (ai.basic.chooseCard(event.ai1) || forced) { + if ((ai.basic.chooseTarget(event.ai2) || forced) && (!event.filterOk || event.filterOk())) { + ui.click.ok(); + _status.event._aiexclude.length = 0; + } + else { + ui.click.cancel(); + } + } + else { + ui.click.cancel(); + } + } + "step 2" + event.resume(); + if (event.result.bool && event.animate !== false) { + for (var i = 0; i < event.result.targets.length; i++) { + event.result.targets[i].animate("target"); + } + } + if (event.dialog) event.dialog.close(); + }, + chooseControl: function () { + "step 0" + if (event.controls.length == 0) { + if (event.sortcard) { + var sortnum = 2; + if (event.sorttop) { + sortnum = 1; + } + for (var i = 0; i < event.sortcard.length + sortnum; i++) { + event.controls.push(get.cnNumber(i, true)); + } + } + else if (event.choiceList) { + for (var i = 0; i < event.choiceList.length; i++) { + event.controls.push("选项" + get.cnNumber(i + 1, true)); + } + } + else { + event.finish(); + return; + } + } + else if (event.choiceList && event.controls.length == 1 && event.controls[0] == "cancel2") { + event.controls.shift(); + for (var i = 0; i < event.choiceList.length; i++) { + event.controls.push("选项" + get.cnNumber(i + 1, true)); + } + event.controls.push("cancel2"); + } + if (event.isMine()) { + if (event.arrangeSkill) { + var hidden = player.hiddenSkills.slice(0); + game.expandSkills(hidden); + if (hidden.length) { + for (var i of event.controls) { + if (_status.prehidden_skills.contains(i) && hidden.contains(i)) { + event.result = { + bool: true, + control: i, + } + return; + } + } + } + } + else if (event.hsskill && _status.prehidden_skills.contains(event.hsskill) && event.controls.contains("cancel2")) { + event.result = { + bool: true, + control: "cancel2", + } + return; + } + if (event.sortcard) { + var prompt = event.prompt || "选择一个位置"; + if (event.tosort) { + prompt += "放置" + get.translation(event.tosort); + } + event.dialog = ui.create.dialog(prompt, "hidden"); + if (event.sortcard && event.sortcard.length) { + event.dialog.addSmall(event.sortcard); + } + else { + event.dialog.buttons = []; + event.dialog.add(ui.create.div(".buttons")); + } + var buttons = event.dialog.content.lastChild; + var sortnum = 2; + if (event.sorttop) { + sortnum = 1; + } + for (var i = 0; i < event.dialog.buttons.length + sortnum; i++) { + var item = ui.create.div(".button.card.pointerdiv.mebg"); + item.style.width = "50px"; + buttons.insertBefore(item, event.dialog.buttons[i]); + item.innerHTML = `
    第${get.cnNumber(i + 1, true)}张
    `; + if (i == event.dialog.buttons.length + 1) { + item.firstChild.innerHTML = "牌堆底"; + } + item.link = get.cnNumber(i, true); + item.listen(ui.click.dialogcontrol); + } + + event.dialog.forcebutton = true; + event.dialog.classList.add("forcebutton"); + event.dialog.open(); + } + else if (event.dialogcontrol) { + event.dialog = ui.create.dialog(event.prompt || "选择一项", "hidden"); + for (var i = 0; i < event.controls.length; i++) { + var item = event.dialog.add(``); + item.firstChild.listen(ui.click.dialogcontrol); + item.firstChild.link = event.controls[i]; + } + event.dialog.forcebutton = true; + event.dialog.classList.add("forcebutton"); + if (event.addDialog) { + for (var i = 0; i < event.addDialog.length; i++) { + if (get.itemtype(event.addDialog[i]) == "cards") { + event.dialog.addSmall(event.addDialog[i]); + } + else { + event.dialog.add(event.addDialog[i]); + } + } + event.dialog.add(ui.create.div(".placeholder.slim")); + } + event.dialog.open(); + } + else { + if (event.seperate || lib.config.seperate_control) { + var controls = event.controls.slice(0); + var num = 0; + controls.remove("cancel2"); + if (event.direct && controls.length == 1 || event.forceDirect) { + event.result = { + control: event.controls[0].link, + links: get.links([event.controls[0]]), + }; + return; + } + else { + event.controlbars = []; + for (var i = 0; i < event.controls.length; i++) { + event.controlbars.push(ui.create.control([event.controls[i]])); + } + } + } + else { + var controls = event.controls.slice(0); + var num = 0; + controls.remove("cancel2"); + if (event.direct && controls.length == 1 || event.forceDirect) { + event.result = { + control: event.controls[0].link, + links: get.links([event.controls[0]]), + }; + return; + } + event.controlbar = ui.create.control(event.controls); + } + if (event.dialog) { + if (Array.isArray(event.dialog)) { + event.dialog = ui.create.dialog.apply(this, event.dialog); + } + event.dialog.open(); + } + else if (event.choiceList) { + event.dialog = ui.create.dialog(event.prompt || "选择一项", "hidden"); + event.dialog.forcebutton = true; + event.dialog.open(); + for (var i = 0; i < event.choiceList.length; i++) { + event.dialog.add(``); + } + } + else if (event.prompt) { + event.dialog = ui.create.dialog(event.prompt); + if (event.prompt2) { + event.dialog.addText(event.prompt2, Boolean(event.prompt2.length <= 20 || event.centerprompt2)); + } + } + } + game.pause(); + game.countChoose(); + event.choosing = true; + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + "step 1" + if (event.result == "ai") { + event.result = {}; + if (event.ai) { + var result = event.ai(event.getParent(), player); + if (typeof result == "number") event.result.control = event.controls[result]; + else event.result.control = result; + } + else event.result.control = event.controls[event.choice]; + } + event.result.index = event.controls.indexOf(event.result.control); + event.choosing = false; + _status.imchoosing = false; + if (event.dialog && event.dialog.close) event.dialog.close(); + if (event.controlbar) event.controlbar.close(); + if (event.controlbars) { + for (var i = 0; i < event.controlbars.length; i++) { + event.controlbars[i].close(); + } + } + event.resume(); + }, + chooseBool: function () { + "step 0" + if (event.isMine()) { + if (event.frequentSkill && !lib.config.autoskilllist.contains(event.frequentSkill)) { + ui.click.ok(); + return; + } + else if (event.hsskill && _status.prehidden_skills.contains(event.hsskill)) { + ui.click.cancel(); + return; + } + ui.create.confirm("oc"); + if (event.createDialog && !event.dialog) { + if (Array.isArray(event.createDialog)) { + event.dialog = ui.create.dialog.apply(this, event.createDialog); + if (event.dialogselectx) { + for (var i = 0; i < event.dialog.buttons.length; i++) { + event.dialog.buttons[i].classList.add("selectedx"); + } + } + } + } + if (event.dialog) { + event.dialog.open(); + } + else if (event.prompt) { + event.dialog = ui.create.dialog(event.prompt); + if (event.prompt2) { + event.dialog.addText(event.prompt2, event.prompt2.length <= 20); + } + } + game.pause(); + game.countChoose(); + event.choosing = true; + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + "step 1" + if (event.result == "ai") { + if (event.ai) { + event.choice = event.ai(event.getParent(), player); + } + event.result = { bool: event.choice }; + } + _status.imchoosing = false; + event.choosing = false; + if (event.dialog) event.dialog.close(); + event.resume(); + }, + chooseDrawRecover: function () { + "step 0" + if (player.isHealthy() && event.forced) { + player.draw(event.num1); + event.finish(); + return; + } + var controls = ["draw_card"]; + if (player.isDamaged()) { + event.num2 = Math.min(event.num2, player.maxHp - player.hp); + controls.push("recover_hp"); + } + if (!event.forced) { + controls.push("cancel2"); + } + var prompt = event.prompt; + if (!prompt) { + if (player.isHealthy()) { + prompt = "是否摸" + get.cnNumber(event.num1) + "张牌?"; + } + else { + prompt = "摸" + get.cnNumber(event.num1) + "张牌或回复" + get.cnNumber(event.num2) + "点体力"; + } + } + var next = player.chooseControl(controls); + next.set("prompt", prompt); + if (event.hsskill) next.setHiddenSkill(event.hsskill); + if (event.ai) { + next.set("ai", event.ai); + } + else { + var choice; + if (player.isDamaged() && get.recoverEffect(player) > 0 && ( + player.hp == 1 || player.needsToDiscard() || + player.hasSkillTag("maixie_hp") || event.num2 > event.num1 || + (event.num2 == event.num1 && player.needsToDiscard(1)) + )) { + choice = "recover_hp"; + } + else { + choice = "draw_card"; + } + next.set("ai", function () { + return _status.event.choice; + }); + next.set("choice", choice); + } + "step 1" + if (result.control != "cancel2") { + if (event.logSkill) { + if (typeof event.logSkill == "string") { + player.logSkill(event.logSkill); + } + else if (Array.isArray(event.logSkill)) { + player.logSkill.apply(player, event.logSkill); + } + } + if (result.control == "draw_card") { + player.draw(event.num1); + } + else { + player.recover(event.num2); + } + } + event.result = result; + }, + choosePlayerCard: function () { + "step 0" + if (!event.dialog) event.dialog = ui.create.dialog("hidden"); + else if (!event.isMine()) { + event.dialog.style.display = "none"; + } + if (event.prompt) { + event.dialog.add(event.prompt); + } + else { + event.dialog.add("选择" + get.translation(target) + "的一张牌"); + } + if (event.prompt2) { + event.dialog.addText(event.prompt2); + } + var expand_length = 0; + var directh = (!lib.config.unauto_choose && !event.complexSelect); + for (var i = 0; i < event.position.length; i++) { + if (event.position[i] == "h") { + var hs = target.getCards("h"); + if (hs.length) { + expand_length += Math.ceil(hs.length / 6); + var title = event.dialog.add(`
    手牌区
    `); + title.style.margin = "0px"; + title.style.padding = "0px"; + hs.randomSort(); + if (event.visible || target.isUnderControl(true) || player.hasSkillTag("viewHandcard", null, target, true)) { + event.dialog.add(hs); + directh = false; + } + else { + var shown = hs.filter(card => get.is.shownCard(card)); + if (shown.length) { + var hidden = hs.filter(card => !shown.includes(card)); + var buttons = ui.create.div(".buttons", event.dialog.content); + event.dialog.buttons = event.dialog.buttons.concat(ui.create.buttons(shown, "card", buttons)); + event.dialog.buttons = event.dialog.buttons.concat(ui.create.buttons(hidden, "blank", buttons)); + if (event.dialog.forcebutton !== false) event.dialog.forcebutton = true; + if (event.dialog.buttons.length > 3) { + event.dialog.classList.remove("forcebutton-auto"); + } + else if (!event.dialog.noforcebutton) { + event.dialog.classList.add("forcebutton-auto"); + } + } + else { + event.dialog.add([hs, "blank"]); + } + } + } + } + else if (event.position[i] == "e") { + var es = target.getCards("e"); + if (es.length) { + expand_length += Math.ceil(es.length / 6); + var title = event.dialog.add(`
    装备区
    `); + title.style.margin = "0px"; + title.style.padding = "0px"; + event.dialog.add(es); + directh = false; + } + } + else if (event.position[i] == "j") { + var js = target.getCards("j"); + if (js.length) { + expand_length += Math.ceil(js.length / 6); + var title = event.dialog.add(`
    判定区
    `); + title.style.margin = "0px"; + title.style.padding = "0px"; + event.dialog.add(js); + directh = false; + } + } + } + if (event.dialog.buttons.length == 0) { + event.finish(); + return; + } var directFilter = (event.forced && typeof event.filterOk != "function" && typeof event.selectButton != "function" && event.filterButton == lib.filter.all); + var cs = target.getCards(event.position); + var select = get.select(event.selectButton); + if (directFilter && select[0] >= cs.length) { + event.result = { + bool: true, + buttons: event.dialog.buttons, + links: cs + } + } + else if (directFilter && directh && !event.isOnline() && select[0] == select[1]) { + event.result = { + bool: true, + buttons: event.dialog.buttons.randomGets(select[0]), + links: [] + } + for (var i = 0; i < event.result.buttons.length; i++) { + event.result.links[i] = event.result.buttons[i].link; + } + } + else { + if (event.isMine()) { + if (event.hsskill && !event.forced && _status.prehidden_skills.contains(event.hsskill)) { + ui.click.cancel(); + return; + } + event.dialog.open(); + game.check(); + game.pause(); + if (expand_length > 2) { + ui.arena.classList.add("choose-player-card"); + event.dialog.classList.add("fullheight"); + } + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + } + "step 1" + if (event.result == "ai") { + game.check(); + if ((ai.basic.chooseButton(event.ai) || forced) && (!event.filterOk || event.filterOk())) ui.click.ok(); + else ui.click.cancel(); + } + event.dialog.close(); + if (event.result.links) { + event.result.cards = event.result.links.slice(0); + } + event.resume(); + setTimeout(function () { + ui.arena.classList.remove("choose-player-card"); + }, 500); + }, + discardPlayerCard: function () { + "step 0" + if (event.directresult) { + event.result = { + buttons: [], + cards: event.directresult.slice(0), + links: event.directresult.slice(0), + targets: [], + confirm: "ok", + bool: true + }; + event.cards = event.directresult.slice(0); + event.goto(2); + return; + } + if (!event.dialog) event.dialog = ui.create.dialog("hidden"); + else if (!event.isMine()) { + event.dialog.style.display = "none"; + } + if (event.prompt == undefined) { + var str = "弃置" + get.translation(target); + var range = get.select(event.selectButton); + if (range[0] == range[1]) str += get.cnNumber(range[0]); + else if (range[1] == Infinity) str += "至少" + get.cnNumber(range[0]); + else str += get.cnNumber(range[0]) + "至" + get.cnNumber(range[1]); + str += "张"; + if (event.position == "h" || event.position == undefined) str += "手"; + if (event.position == "e") str += "装备"; + str += "牌"; + event.prompt = str; + } + if (event.prompt) { + event.dialog.add(event.prompt); + } + if (event.prompt2) { + event.dialog.addText(event.prompt2); + } + var directh = (!lib.config.unauto_choose && !event.complexSelect); + var expand_length = 0; + for (var i = 0; i < event.position.length; i++) { + if (event.position[i] == "h") { + var hs = target.getDiscardableCards(player, "h"); + expand_length += Math.ceil(hs.length / 6); + if (hs.length) { + var title = event.dialog.add(`
    手牌区
    `); + title.style.margin = "0px"; + title.style.padding = "0px"; + hs.randomSort(); + if (event.visible || target.isUnderControl(true) || player.hasSkillTag("viewHandcard", null, target, true)) { + event.dialog.add(hs); + directh = false; + } + else { + var shown = hs.filter(card => get.is.shownCard(card)); + if (shown.length) { + var hidden = hs.filter(card => !shown.includes(card)); + var buttons = ui.create.div(".buttons", event.dialog.content); + event.dialog.buttons = event.dialog.buttons.concat(ui.create.buttons(shown, "card", buttons)); + event.dialog.buttons = event.dialog.buttons.concat(ui.create.buttons(hidden, "blank", buttons)); + if (event.dialog.forcebutton !== false) event.dialog.forcebutton = true; + if (event.dialog.buttons.length > 3) { + event.dialog.classList.remove("forcebutton-auto"); + } + else if (!event.dialog.noforcebutton) { + event.dialog.classList.add("forcebutton-auto"); + } + } + else { + event.dialog.add([hs, "blank"]); + } + } + } + } + else if (event.position[i] == "e") { + var es = target.getDiscardableCards(player, "e"); + if (es.length) { + expand_length += Math.ceil(es.length / 6); + var title = event.dialog.add(`
    装备区
    `); + title.style.margin = "0px"; + title.style.padding = "0px"; + event.dialog.add(es); + directh = false; + } + } + else if (event.position[i] == "j") { + var js = target.getDiscardableCards(player, "j"); + if (js.length) { + expand_length += Math.ceil(js.length / 6); + var title = event.dialog.add(`
    判定区
    `); + title.style.margin = "0px"; + title.style.padding = "0px"; + event.dialog.add(js); + directh = false; + } + } + } + if (event.dialog.buttons.length == 0) { + event.finish(); + return; + } + var directFilter = (event.forced && typeof event.filterOk != "function" && typeof event.selectButton != "function" && event.filterButton == lib.filter.all); + var cs = target.getCards(event.position); + var select = get.select(event.selectButton); + if (directFilter && select[0] >= cs.length) { + event.result = { + bool: true, + buttons: event.dialog.buttons, + links: cs + } + } + else if (directFilter && directh && !event.isOnline() && select[0] == select[1]) { + event.result = { + bool: true, + buttons: event.dialog.buttons.randomGets(select[0]), + links: [] + } + for (var i = 0; i < event.result.buttons.length; i++) { + event.result.links[i] = event.result.buttons[i].link; + } + } + else { + if (event.isMine()) { + event.dialog.open(); + game.check(); + game.pause(); + if (expand_length > 2) { + ui.arena.classList.add("discard-player-card"); + event.dialog.classList.add("fullheight"); + } + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + } + "step 1" + if (event.result == "ai") { + game.check(); + if ((ai.basic.chooseButton(event.ai) || forced) && (!event.filterOk || event.filterOk())) ui.click.ok(); + else ui.click.cancel(); + } + event.dialog.close(); + "step 2" + event.resume(); + setTimeout(function () { + ui.arena.classList.remove("discard-player-card"); + }, 500); + if (event.result.bool && event.result.links && !game.online) { + if (event.logSkill) { + if (typeof event.logSkill == "string") { + player.logSkill(event.logSkill); + } + else if (Array.isArray(event.logSkill)) { + player.logSkill.apply(player, event.logSkill); + } + } + var cards = []; + for (var i = 0; i < event.result.links.length; i++) { + cards.push(event.result.links[i]); + } + event.result.cards = event.result.links.slice(0); + event.cards = cards; + event.trigger("rewriteDiscardResult"); + } + "step 3" + if (event.boolline) { + player.line(target, "green"); + } + if (!event.chooseonly) { + var next = target.discard(event.cards); + if (player != target) next.notBySelf = true; + next.discarder = player; + event.done = next; + if (event.delay === false) { + next.set("delay", false); + } + } + }, + gainPlayerCard: function () { + "step 0" + if (event.directresult) { + event.result = { + buttons: [], + cards: event.directresult.slice(0), + links: event.directresult.slice(0), + targets: [], + confirm: "ok", + bool: true + }; + event.cards = event.directresult.slice(0); + event.goto(2); + return; + } + if (!event.dialog) event.dialog = ui.create.dialog("hidden"); + else if (!event.isMine()) { + event.dialog.style.display = "none"; + } + if (event.prompt == undefined) { + var str = "获得" + get.translation(target); + var range = get.select(event.selectButton); + if (range[0] == range[1]) str += get.cnNumber(range[0]); + else if (range[1] == Infinity) str += "至少" + get.cnNumber(range[0]); + else str += get.cnNumber(range[0]) + "至" + get.cnNumber(range[1]); + str += "张"; + if (event.position == "h" || event.position == undefined) str += "手"; + if (event.position == "e") str += "装备"; + str += "牌"; + event.prompt = str; + } + if (event.prompt) { + event.dialog.add(event.prompt); + } + if (event.prompt2) { + event.dialog.addText(event.prompt2); + } + var expand_length = 0; + var directh = (!lib.config.unauto_choose && !event.complexSelect); + for (var i = 0; i < event.position.length; i++) { + if (event.position[i] == "h") { + var hs = target.getGainableCards(player, "h"); + if (hs.length) { + expand_length += Math.ceil(hs.length / 6); + var title = event.dialog.add(`
    手牌区
    `); + title.style.margin = "0px"; + title.style.padding = "0px"; + hs.randomSort(); + if (event.visible || target.isUnderControl(true) || player.hasSkillTag("viewHandcard", null, target, true)) { + event.dialog.add(hs); + directh = false; + } + else { + var shown = hs.filter(card => get.is.shownCard(card)); + if (shown.length) { + var hidden = hs.filter(card => !shown.includes(card)); + var buttons = ui.create.div(".buttons", event.dialog.content); + event.dialog.buttons = event.dialog.buttons.concat(ui.create.buttons(shown, "card", buttons)); + event.dialog.buttons = event.dialog.buttons.concat(ui.create.buttons(hidden, "blank", buttons)); + if (event.dialog.forcebutton !== false) event.dialog.forcebutton = true; + if (event.dialog.buttons.length > 3) { + event.dialog.classList.remove("forcebutton-auto"); + } + else if (!event.dialog.noforcebutton) { + event.dialog.classList.add("forcebutton-auto"); + } + } + else { + event.dialog.add([hs, "blank"]); + } + } + } + } + else if (event.position[i] == "e") { + var es = target.getGainableCards(player, "e"); + if (es.length) { + expand_length += Math.ceil(es.length / 6); + var title = event.dialog.add(`
    装备区
    `); + title.style.margin = "0px"; + title.style.padding = "0px"; + event.dialog.add(es); + directh = false; + } + } + else if (event.position[i] == "j") { + var js = target.getGainableCards(player, "j"); + if (js.length) { + expand_length += Math.ceil(js.length / 6); + var title = event.dialog.add(`
    判定区
    `); + title.style.margin = "0px"; + title.style.padding = "0px"; + event.dialog.add(js); + directh = false; + } + } + } + if (event.dialog.buttons.length == 0) { + event.dialog.close(); + event.finish(); + return; + } + var cs = target.getCards(event.position); + var select = get.select(event.selectButton); + var directFilter = (event.forced && typeof event.filterOk != "function" && typeof event.selectButton != "function" && event.filterButton == lib.filter.all); + if (directFilter && select[0] >= cs.length) { + event.result = { + bool: true, + buttons: event.dialog.buttons, + links: cs + } + } + else if (directFilter && directh && !event.isOnline() && select[0] == select[1]) { + event.result = { + bool: true, + buttons: event.dialog.buttons.randomGets(select[0]), + links: [] + } + for (var i = 0; i < event.result.buttons.length; i++) { + event.result.links[i] = event.result.buttons[i].link; + } + } + else { + if (event.isMine()) { + event.dialog.open(); + game.check(); + game.pause(); + if (expand_length > 2) { + ui.arena.classList.add("gain-player-card"); + event.dialog.classList.add("fullheight"); + } + } + else if (event.isOnline()) { + event.send(); + } + else { + event.result = "ai"; + } + } + "step 1" + if (event.result == "ai") { + game.check(); + if ((ai.basic.chooseButton(event.ai) || forced) && (!event.filterOk || event.filterOk())) ui.click.ok(); + else ui.click.cancel(); + } + event.dialog.close(); + "step 2" + event.resume(); + setTimeout(function () { + ui.arena.classList.remove("gain-player-card"); + }, 500); + if (game.online || !event.result.bool) { + event.finish(); + } + "step 3" + if (event.logSkill && event.result.bool && !game.online) { + if (typeof event.logSkill == "string") { + player.logSkill(event.logSkill); + } + else if (Array.isArray(event.logSkill)) { + player.logSkill.apply(player, event.logSkill); + } + } + var cards = []; + for (var i = 0; i < event.result.links.length; i++) { + cards.push(event.result.links[i]); + } + event.result.cards = event.result.links.slice(0); + event.cards = cards; + event.trigger("rewriteGainResult"); + "step 4" + if (event.boolline) { + player.line(target, "green"); + } + if (!event.chooseonly) { + if (event.delay !== false) { + var next = player.gain(event.cards, target, event.visibleMove ? "give" : "giveAuto", "bySelf"); + event.done = next; + } + else { + var next = player.gain(event.cards, target, "bySelf"); + event.done = next; + target[event.visibleMove ? "$give" : "$giveAuto"](cards, player); + if (event.visibleMove) next.visible = true; + } + } + else target[event.visibleMove ? "$give" : "$giveAuto"](cards, player); + }, + showHandcards: function () { + "step 0" + if (player.countCards("h") == 0) { + event.finish(); + return; + } + var cards = player.getCards("h"); + player.showCards(cards).setContent(function () { }); + var str = get.translation(player.name) + "的手牌"; + if (typeof event.prompt == "string") { + str = event.prompt; + } + event.dialog = ui.create.dialog(str, cards); + event.dialogid = lib.status.videoId++; + event.dialog.videoId = event.dialogid; + game.broadcast(function (str, cards, id) { + ui.create.dialog(str, cards).videoId = id; + }, str, cards, event.dialogid); + game.log(player, "展示了", cards); + game.addVideo("showCards", player, [str, get.cardsInfo(cards)]); + game.delayx(2); + "step 1" + game.broadcast("closeDialog", event.dialogid); + event.dialog.close(); + }, + showCards: function () { + "step 0" + if (get.itemtype(cards) != "cards") { + event.finish(); + return; + } + if (!event.str) { + event.str = get.translation(player.name) + "展示的牌"; + } + event.dialog = ui.create.dialog(event.str, cards); + event.dialogid = lib.status.videoId++; + event.dialog.videoId = event.dialogid; + + if (event.hiddencards) { + for (var i = 0; i < event.dialog.buttons.length; i++) { + if (event.hiddencards.contains(event.dialog.buttons[i].link)) { + event.dialog.buttons[i].className = "button card"; + event.dialog.buttons[i].innerHTML = ""; + } + } + } + game.broadcast(function (str, cards, cards2, id) { + var dialog = ui.create.dialog(str, cards); + dialog.forcebutton = true; + dialog.videoId = id; + if (cards2) { + for (var i = 0; i < dialog.buttons.length; i++) { + if (cards2.contains(dialog.buttons[i].link)) { + dialog.buttons[i].className = "button card"; + dialog.buttons[i].innerHTML = ""; + } + } + } + }, event.str, cards, event.hiddencards, event.dialogid); + if (event.hiddencards) { + var cards2 = cards.slice(0); + for (var i = 0; i < event.hiddencards.length; i++) { + cards2.remove(event.hiddencards[i]); + } + game.log(player, "展示了", cards2); + } + else { + game.log(player, "展示了", cards); + } + game.addCardKnower(cards, "everyone"); + game.delayx(event.delay_time || 2.5); + game.addVideo("showCards", player, [event.str, get.cardsInfo(cards)]); + "step 1" + game.broadcast("closeDialog", event.dialogid); + event.dialog.close(); + }, + viewCards: function () { + "step 0" + game.addCardKnower(event.cards, player); + if (player == game.me) { + event.dialog = ui.create.dialog(event.str, event.cards); + if (event.isMine()) { + game.pause(); + ui.create.confirm("o"); + game.countChoose(); + event.choosing = true; + } + else { + event.finish(); + event.result = "viewed"; + setTimeout(function () { + event.dialog.close(); + }, 2 * lib.config.duration); + game.delayx(2); + } + } + else if (event.isOnline()) { + event.send(); + } + else { + event.finish(); + } + "step 1" + event.result = "viewed"; + _status.imchoosing = false; + event.choosing = false; + if (event.dialog) event.dialog.close(); + }, + moveCard: function () { + "step 0" + if (!player.canMoveCard(null, event.nojudge, event.sourceTargets, event.aimTargets, event.filter, event.canReplace ? "canReplace" : "noReplace")) { + event.finish(); + return; + } + var next = player.chooseTarget(2, function (card, player, target) { + var filterCard = get.event("filter"); + if (ui.selected.targets.length) { + if (!get.event("aimTargets").includes(target)) return false; + var from = ui.selected.targets[0]; + var js = from.getCards("j", filterCard); + for (var i = 0; i < js.length; i++) { + if (_status.event.nojudge) break; + if (target.canAddJudge(js[i])) return true; + } + if (target.isMin()) return false; + var es = from.getCards("e", filterCard); + for (var i = 0; i < es.length; i++) { + if (target.canEquip(es[i], _status.event.canReplace)) return true; + } + return false; + } + else { + if (!get.event("sourceTargets").includes(target)) return false; + var range = "ej"; + if (_status.event.nojudge) range = "e"; + return target.countCards(range, filterCard) > 0; + } + }); + next.set("nojudge", event.nojudge || false); + next.set("ai", function (target) { + var player = _status.event.player; + var att = get.attitude(player, target); + var sgnatt = get.sgn(att); + var aimTargets = get.event("aimTargets"), filterCard = get.event("filter"); + if (ui.selected.targets.length == 0) { + if (att > 0) { + if (!_status.event.nojudge && target.countCards("j", function (card) { + if (!filterCard(card)) return false; + return game.hasPlayer(function (current) { + if (!aimTargets.includes(current)) return false; + return current != target && current.canAddJudge(card) && get.attitude(player, current) < 0; + }) + })) return 14; + if (target.countCards("e", function (card) { + if (!filterCard(card)) return false; + return get.value(card, target) < 0 && game.hasPlayer(function (current) { + if (!aimTargets.includes(current)) return false; + return current != target && get.attitude(player, current) < 0 && current.canEquip(card, _status.event.canReplace) && get.effect(target, card, player, player) < 0; + }); + }) > 0) return 9; + } + else if (att < 0) { + if (game.hasPlayer(function (current) { + if (current != target && get.attitude(player, current) > 0) { + var es = target.getCards("e", filterCard); + for (var i = 0; i < es.length; i++) { + if (get.value(es[i], target) > 0 && current.canEquip(es[i], _status.event.canReplace) && get.effect(current, es[i], player, player) > (_status.event.canReplace ? get.effect(target, es[i], player, player) : 0)) return true; + } + } + })) { + return -att; + } + } + return 0; + } + var es = ui.selected.targets[0].getCards("e", filterCard); + var i; + var att2 = get.sgn(get.attitude(player, ui.selected.targets[0])); + for (i = 0; i < es.length; i++) { + if (sgnatt != 0 && att2 != 0 && sgnatt != att2 && + get.sgn(get.value(es[i], ui.selected.targets[0])) == -att2 && + get.sgn(get.effect(target, es[i], player, target)) == sgnatt && + target.canEquip(es[i], _status.event.canReplace)) { + return Math.abs(att); + } + } + if (i == es.length && (_status.event.nojudge || !ui.selected.targets[0].countCards("j", function (card) { + if (!filterCard(card)) return false; + return target.canAddJudge(card); + }) || att2 <= 0)) { + return 0; + } + return -att * att2; + }); + next.set("multitarget", true); + next.set("targetprompt", _status.event.targetprompt || ["被移走", "移动目标"]); + next.set("prompt", event.prompt || "移动场上的一张牌"); + next.set("filter", event.filter); + next.set("sourceTargets", event.sourceTargets || game.filterPlayer()); + next.set("aimTargets", event.aimTargets || game.filterPlayer()); + next.set("canReplace", event.canReplace); + next.set("custom", get.copy(event.custom)); + if (event.prompt2) next.set("prompt2", event.prompt2); + if (event.forced) next.set("forced", true); + "step 1" + event.result = result; + if (result.bool) { + if (event.logSkill) player.logSkill(event.logSkill, result.targets, false); + player.line2(result.targets, "green"); + event.targets = result.targets; + } + else { + event.finish(); + } + "step 2" + game.delay(); + "step 3" + if (targets.length == 2) { + player.choosePlayerCard("ej", true, function (button) { + var player = _status.event.player; + var targets0 = _status.event.targets0; + var targets1 = _status.event.targets1; + if (get.attitude(player, targets0) > 0 && get.attitude(player, targets1) < 0) { + if (get.position(button.link) == "j") return 12; + if (get.value(button.link, targets0) < 0 && get.effect(targets1, button.link, player, targets1) > 0) return 10; + return 0; + } + else { + if (get.position(button.link) == "j") return -10; + return get.value(button.link) * get.effect(targets1, button.link, player, targets1); + } + }, targets[0]).set("nojudge", event.nojudge || false).set("targets0", targets[0]).set("targets1", targets[1]).set("filterButton", function (button) { + var targets1 = _status.event.targets1; + if (!get.event("filter")(button.link)) return false; + if (get.position(button.link) == "j") { + if (_status.event.nojudge) return false; + return targets1.canAddJudge(button.link); + } + else { + return targets1.canEquip(button.link, _status.event.canReplace); + } + }).set("filter", event.filter).set("canReplace", event.canReplace).set("custom", get.copy(event.custom)); + } + else { + event.finish(); + } + "step 4" + if (result.bool && result.links.length) { + var link = result.links[0]; + if (get.position(link) == "e") { + event.targets[1].equip(link); + } + else if (link.viewAs) { + event.targets[1].addJudge({ name: link.viewAs }, [link]); + } + else { + event.targets[1].addJudge(link); + } + event.targets[0].$give(link, event.targets[1], false); + game.log(event.targets[0], "的", link, "被移动给了", event.targets[1]) + event.result.card = link; + event.result.position = get.position(link); + game.delay(); + } + }, + useCard: function () { + "step 0" + if (!card) { + console.log("err: no card", get.translation(event.player)); + event.finish(); + return; + } + if (!get.info(card, false).noForceDie) event.forceDie = true; + if (cards.length) { + var owner = (get.owner(cards[0]) || player); + var next = owner.lose(cards, "visible", ui.ordering).set("type", "use"); + var directDiscard = []; + for (var i = 0; i < cards.length; i++) { + if (!next.cards.contains(cards[i])) { + directDiscard.push(cards[i]); + } + } + if (directDiscard.length) game.cardsGotoOrdering(directDiscard); + } + //player.using=cards; + var cardaudio = true; + if (event.skill) { + if (lib.skill[event.skill].audio) { + cardaudio = false; + } + if (lib.skill[event.skill].log != false) { + player.logSkill(event.skill); + } + if (get.info(event.skill).popname) { + player.tryCardAnimate(card, event.card.name, "metal", true); + } + } + else if (!event.nopopup) { + if (lib.translate[event.card.name + "_pop"]) { + player.tryCardAnimate(card, lib.translate[event.card.name + "_pop"], "metal"); + } + else { + player.tryCardAnimate(card, event.card.name, "metal"); + } + } + if (event.audio === false) { + cardaudio = false; + } + if (cardaudio) game.broadcastAll((player, card) => { + game.playCardAudio(card, player); + /* + if(!lib.config.background_audio||get.type(card)=="equip"&&!lib.config.equip_audio) return; + const sex=player.sex=="female"?"female":"male"; + var nature=get.natureList(card)[0]; + if(card.name=="sha"&&["fire","thunder","ice","stab"].includes(nature)){ + game.playAudio("card",sex,`${card.name}_${nature}`); + return; + } + const audio=lib.card[card.name].audio; + if(typeof audio=="string"){ + const audioInfo=audio.split(":"); + if(audio.startsWith("db:")) game.playAudio(`${audioInfo[0]}:${audioInfo[1]}`,audioInfo[2],`${card.name}_${sex}.${audioInfo[3]||"mp3"}`); + else if(audio.startsWith("ext:")) game.playAudio(`${audioInfo[0]}:${audioInfo[1]}`,`${card.name}_${sex}.${audioInfo[2]||"mp3"}`); + else game.playAudio("card",sex,`${audioInfo[0]}.${audioInfo[1]||"mp3"}`); + } + else game.playAudio("card",sex,card.name);*/ + }, player, card); + if (event.animate != false && event.line != false) { + if (card.name == "wuxie" && event.getParent()._info_map) { + var evtmap = event.getParent()._info_map; + if (evtmap._source) evtmap = evtmap._source; + var lining = (evtmap.multitarget ? evtmap.targets : evtmap.target) || event.player; + if (Array.isArray(lining) && event.getTrigger().name == "jiedao") { + player.line(lining[0], "green"); + } + else { + player.line(lining, "green"); + } + } + else if (card.name == "youdishenru" && event.getParent().source) { + var lining = event.getParent().sourcex || event.getParent().source2 || event.getParent().source; + if (lining == player && event.getParent().sourcex2) { + lining = event.getParent().sourcex2; + } + if (Array.isArray(lining) && event.getTrigger().name == "jiedao") { + player.line(lining[0], "green"); + } + else { + player.line(lining, "green"); + } + } + else { + var config = {}; + var nature = get.natureList(card)[0]; + if (nature || card.classList && card.classList.contains(nature)) config.color = nature; + if (event.addedTarget) { + player.line2(targets.concat(event.addedTargets), config); + } + else if (get.info(card, false).multitarget && targets.length > 1 && !get.info(card, false).multiline) { + player.line2(targets, config); + } + else { + player.line(targets, config); + } + } + if (event.throw !== false) player.$throw(cards); + if (lib.config.sync_speed && cards[0] && cards[0].clone) { + var waitingForTransition = get.time(); + event.waitingForTransition = waitingForTransition; + cards[0].clone.listenTransition(function () { + if (_status.waitingForTransition == waitingForTransition && _status.paused) { + game.resume(); + } + delete event.waitingForTransition; + }); + } + } + event.id = get.id(); + if (!Array.isArray(event.excluded)) event.excluded = []; + if (!Array.isArray(event.directHit)) event.directHit = []; + if (typeof event.customArgs != "object" || typeof event.customArgs.default != "object") event.customArgs = { default: {} }; + if (typeof event.baseDamage != "number") event.baseDamage = get.info(card, false).baseDamage || 1; + if (typeof event.effectCount != "number") event.effectCount = get.info(card, false).effectCount || 1; + event.effectedCount = 0; + if (event.oncard) { + event.oncard(event.card, event.player); + } + player.actionHistory[player.actionHistory.length - 1].useCard.push(event); + game.getGlobalHistory().useCard.push(event); + if (event.addCount !== false) { + if (player.stat[player.stat.length - 1].card[card.name] == undefined) { + player.stat[player.stat.length - 1].card[card.name] = 1; + } + else { + player.stat[player.stat.length - 1].card[card.name]++; + } + } + if (event.skill) { + if (player.stat[player.stat.length - 1].skill[event.skill] == undefined) { + player.stat[player.stat.length - 1].skill[event.skill] = 1; + } + else { + player.stat[player.stat.length - 1].skill[event.skill]++; + } + var sourceSkill = get.info(event.skill).sourceSkill; + if (sourceSkill) { + if (player.stat[player.stat.length - 1].skill[sourceSkill] == undefined) { + player.stat[player.stat.length - 1].skill[sourceSkill] = 1; + } + else { + player.stat[player.stat.length - 1].skill[sourceSkill]++; + } + } + } + if (targets.length) { + var str = (targets.length == 1 && targets[0] == player) ? "#b自己" : targets; + if (cards.length && !card.isCard) { + if (event.addedTarget) { + game.log(player, "对", str, "使用了", card, "(", cards, ",指向", event.addedTargets, ")"); + } + else { + game.log(player, "对", str, "使用了", card, "(", cards, ")"); + } + } + else { + if (event.addedTarget) { + game.log(player, "对", str, "使用了", card, "(指向", event.addedTargets, ")"); + } + else { + game.log(player, "对", str, "使用了", card); + } + } + } + else { + if (cards.length && !card.isCard) { + if (event.addedTarget) { + game.log(player, "使用了", card, "(", cards, ",指向", event.addedTargets, ")"); + } + else { + game.log(player, "使用了", card, "(", cards, ")"); + } + } + else { + if (event.addedTarget) { + game.log(player, "使用了", card, "(指向", event.addedTargets, ")"); + } + else { + game.log(player, "使用了", card); + } + } + } + if (card.name == "wuxie") { + game.logv(player, [card, cards], [event.getTrigger().card]); + } + else { + game.logv(player, [card, cards], targets); + } + event.trigger("useCard1"); + "step 1" + event.trigger("yingbian"); + "step 2" + event.trigger("useCard2"); + "step 3" + event.trigger("useCard"); + event._oncancel = function () { + game.broadcastAll(function (id) { + if (ui.tempnowuxie && ui.tempnowuxie._origin == id) { + ui.tempnowuxie.close(); + delete ui.tempnowuxie; + } + }, event.id); + }; + "step 4" + event.sortTarget = function (animate, sort) { + var info = get.info(card, false); + if (num == 0 && targets.length > 1) { + if (!info.multitarget) { + if (!event.fixedSeat && !sort) { + targets.sortBySeat((_status.currentPhase || player)); + } + if (animate) for (var i = 0; i < targets.length; i++) { + targets[i].animate("target"); + } + } + else if (animate) { + for (var i = 0; i < targets.length; i++) { + targets[i].animate("target"); + } + } + } + } + event.sortTarget(); + event.getTriggerTarget = function (list1, list2) { + var listx = list1.slice(0).sortBySeat((_status.currentPhase || player)); + for (var i = 0; i < listx.length; i++) { + if (get.numOf(list2, listx[i]) < get.numOf(listx, listx[i])) return listx[i]; + } + return null; + } + "step 5" + if (event.all_excluded) return; + if (!event.triggeredTargets1) event.triggeredTargets1 = []; + var target = event.getTriggerTarget(targets, event.triggeredTargets1); + if (target) { + event.triggeredTargets1.push(target); + var next = game.createEvent("useCardToPlayer", false); + if (!event.isFirstTarget1) { + event.isFirstTarget1 = true; + next.isFirstTarget = true; + } + next.setContent("emptyEvent"); + next.targets = targets; + next.target = target; + next.card = card; + next.cards = cards; + next.player = player; + next.skill = event.skill; + next.excluded = event.excluded; + next.directHit = event.directHit; + next.customArgs = event.customArgs; + if (event.forceDie) next.forceDie = true; + event.redo(); + } + "step 6" + if (event.all_excluded) return; + if (!event.triggeredTargets2) event.triggeredTargets2 = []; + var target = event.getTriggerTarget(targets, event.triggeredTargets2); + if (target) { + event.triggeredTargets2.push(target); + var next = game.createEvent("useCardToTarget", false); + if (!event.isFirstTarget2) { + event.isFirstTarget2 = true; + next.isFirstTarget = true; + } + next.setContent("emptyEvent"); + next.targets = targets; + next.target = target; + next.card = card; + next.cards = cards; + next.player = player; + next.skill = event.skill; + next.excluded = event.excluded; + next.directHit = event.directHit; + next.customArgs = event.customArgs; + if (event.forceDie) next.forceDie = true; + event.redo(); + } + "step 7" + var info = get.info(card, false); + if (!info.nodelay && event.animate != false) { + if (event.delayx !== false) { + if (event.waitingForTransition) { + _status.waitingForTransition = event.waitingForTransition; + game.pause(); + } + else { + game.delayx(); + } + } + } + "step 8" + if (event.all_excluded) return; + if (!event.triggeredTargets3) event.triggeredTargets3 = []; + var target = event.getTriggerTarget(targets, event.triggeredTargets3); + if (target) { + event.triggeredTargets3.push(target); + var next = game.createEvent("useCardToPlayered", false); + if (!event.isFirstTarget3) { + event.isFirstTarget3 = true; + next.isFirstTarget = true; + } + next.setContent("emptyEvent"); + next.targets = targets; + next.target = target; + next.card = card; + next.cards = cards; + next.player = player; + next.skill = event.skill; + next.excluded = event.excluded; + next.directHit = event.directHit; + next.customArgs = event.customArgs; + if (event.forceDie) next.forceDie = true; + event.redo(); + } + "step 9" + if (event.all_excluded) return; + if (!event.triggeredTargets4) event.triggeredTargets4 = []; + var target = event.getTriggerTarget(targets, event.triggeredTargets4); + if (target) { + event.triggeredTargets4.push(target); + var next = game.createEvent("useCardToTargeted", false); + if (!event.isFirstTarget4) { + event.isFirstTarget4 = true; + next.isFirstTarget = true; + } + next.setContent("emptyEvent"); + next.targets = targets; + next.target = target; + next.card = card; + next.cards = cards; + next.player = player; + next.skill = event.skill; + next.excluded = event.excluded; + next.directHit = event.directHit; + next.customArgs = event.customArgs; + if (event.forceDie) next.forceDie = true; + if (targets.length == event.triggeredTargets4.length) { + event.sortTarget(); + } + event.redo(); + } + "step 10" + if (event.all_excluded) return; + event.effectedCount++; + event.num = 0; + var info = get.info(card, false); + if (info.contentBefore) { + var next = game.createEvent(card.name + "ContentBefore"); + next.setContent(info.contentBefore); + next.targets = targets; + next.card = card; + next.cards = cards; + next.player = player; + next.skill = event.skill; + next.type = "precard"; + if (event.forceDie) next.forceDie = true; + } + else if (info.reverseOrder && get.is.versus() && targets.length > 1) { + var next = game.createEvent(card.name + "ContentBefore"); + next.setContent("reverseOrder"); + next.targets = targets; + next.card = card; + next.cards = cards; + next.player = player; + next.skill = event.skill; + next.type = "precard"; + if (event.forceDie) next.forceDie = true; + } + else if (info.singleCard && info.filterAddedTarget && event.addedTargets && event.addedTargets.length < targets.length) { + var next = game.createEvent(card.name + "ContentBefore"); + next.setContent("addExtraTarget"); + next.target = target; + next.targets = targets; + next.card = card; + next.cards = cards; + next.player = player; + next.skill = event.skill; + next.type = "precard"; + next.addedTarget = event.addedTarget; + next.addedTargets = event.addedTargets; + if (event.forceDie) next.forceDie = true; + } + "step 11" + if (event.all_excluded) return; + var info = get.info(card, false); + if (num == 0 && targets.length > 1) { + event.sortTarget(true, true); + } + if (targets[num] && targets[num].isDead()) return; + if (targets[num] && targets[num].isOut()) return; + if (targets[num] && targets[num].removed) return; + if (targets[num] && info.ignoreTarget && info.ignoreTarget(card, player, targets[num])) return; + if (targets.length == 0 && !info.notarget) return; + if (targets[num] && event.excluded.contains(targets[num])) { + var next = game.createEvent("useCardToExcluded", false); + next.setContent("emptyEvent"); + next.targets = targets; + next.target = targets[num]; + next.num = num; + next.card = card; + next.cards = cards; + next.player = player; + return; + } + var next = game.createEvent(card.name); + next.setContent(info.content); + next.targets = targets; + next.card = card; + next.cards = cards; + next.player = player; + next.num = num; + next.type = "card"; + next.skill = event.skill; + next.multitarget = info.multitarget; + next.preResult = event.preResult; + next.baseDamage = event.baseDamage; + if (event.forceDie) next.forceDie = true; + if (event.addedTargets) { + next.addedTargets = event.addedTargets; + next.addedTarget = event.addedTargets[num]; + next._targets = event._targets; + } + if (info.targetDelay === false) { + event.targetDelay = false; + } + next.target = targets[num]; + for (var i in event.customArgs.default) next[i] = event.customArgs.default[i]; + if (next.target && event.customArgs[next.target.playerid]) { + var customArgs = event.customArgs[next.target.playerid]; + for (var i in customArgs) next[i] = customArgs[i]; + } + if (next.target && event.directHit.contains(next.target)) next.directHit = true; + if (next.target && !info.multitarget) { + if (num == 0 && targets.length > 1) { + // var ttt=next.target; + // setTimeout(function(){ttt.animate("target");},0.5*lib.config.duration); + } + else { + next.target.animate("target"); + } + } + if (!info.nodelay && num > 0) { + if (event.targetDelay !== false) { + game.delayx(0.5); + } + } + "step 12" + if (event.all_excluded) return; + if (!get.info(event.card, false).multitarget && num < targets.length - 1 && !event.cancelled) { + event.num++; + event.goto(11); + } + "step 13" + if (event.all_excluded) return; + if (get.info(card, false).contentAfter) { + var next = game.createEvent(card.name + "ContentAfter"); + next.setContent(get.info(card, false).contentAfter); + next.targets = targets; + next.card = card; + next.cards = cards; + next.player = player; + next.skill = event.skill; + next.preResult = event.preResult; + next.type = "postcard"; + if (event.forceDie) next.forceDie = true; + } + "step 14" + if (event.all_excluded) return; + if (event.effectedCount < event.effectCount) { + if (document.getElementsByClassName("thrown").length) { + if (event.delayx !== false && get.info(event.card, false).finalDelay !== false) game.delayx(); + } + event.goto(10); + } + "step 15" + if (event.postAi) { + event.player.logAi(event.targets, event.card); + } + if (event._result) { + event.result = event._result; + } + //delete player.using; + if (document.getElementsByClassName("thrown").length) { + if (event.delayx !== false && get.info(event.card, false).finalDelay !== false) game.delayx(); + } + else { + event.finish(); + } + "step 16" + event._oncancel(); + }, + useSkill: function () { + "step 0" + var info = get.info(event.skill); + if (!info.noForceDie) event.forceDie = true; + if (!info.noForceOut) event.includeOut = true; + event._skill = event.skill; + game.trySkillAudio(event.skill, player); + var checkShow = player.checkShow(event.skill); + if (info.discard != false && info.lose != false && !info.viewAs) { + player.discard(cards).delay = false; + if (lib.config.low_performance) { + event.discardTransition = true; + } + } + else { + if (info.lose != false) { + if (info.losetrigger == false) { + var losecard = player.lose(cards, ui.special)._triggered = null; + } + else { + var losecard = player.lose(cards, ui.special); + if (info.visible) losecard.visible = true; + if (info.loseTo) losecard.position = ui[info.loseTo]; + if (info.insert) losecard.insert_card = true; + if (losecard.position == ui.special && info.toStorage) losecard.toStorage = true; + } + } + if (!info.prepare && info.viewAs) { + player.$throw(cards); + if (losecard) losecard.visible = true; + if (lib.config.sync_speed && cards[0] && cards[0].clone) { + var waitingForTransition = get.time(); + event.waitingForTransition = waitingForTransition; + cards[0].clone.listenTransition(function () { + if (_status.waitingForTransition == waitingForTransition && _status.paused) { + game.resume(); + } + delete event.waitingForTransition; + }); + } + } + } + if (info.line != false && targets.length) { + var config = {}; + if (get.is.object(info.line)) config = info.line; + else if (info.line == "fire") { + config.color = "fire"; + } + else if (info.line == "thunder") { + config.color = "thunder"; + } + else if (info.line === undefined || info.line == "green") { + config.color = "green"; + } + if (info.multitarget && !info.multiline && targets.length > 1) { + player.line2(targets, config); + } + else { + player.line(targets, config); + } + } + var str = ""; + if (targets && targets.length && info.log != "notarget") { + str += `对${targets[0] == player ? "自己" : get.translation(targets[0])}`; + for (var i = 1; i < targets.length; i++) { + str += "、" + (targets[i] == player ? "自己" : get.translation(targets[i])); + } + str += "" + } + str += "发动了"; + if (!info.direct && info.log !== false) { + game.log(player, str, "【" + get.skillTranslation(skill, player) + "】"); + if (info.logv !== false) game.logv(player, skill, targets); + player.trySkillAnimate(skill, skill, checkShow); + } + if (event.addCount != false) { + if (player.stat[player.stat.length - 1].skill[skill] == undefined) { + player.stat[player.stat.length - 1].skill[skill] = 1; + } + else { + player.stat[player.stat.length - 1].skill[skill]++; + } + var sourceSkill = get.info(skill).sourceSkill; + if (sourceSkill) { + if (player.stat[player.stat.length - 1].skill[sourceSkill] == undefined) { + player.stat[player.stat.length - 1].skill[sourceSkill] = 1; + } + else { + player.stat[player.stat.length - 1].skill[sourceSkill]++; + } + } + } + if (player.stat[player.stat.length - 1].allSkills == undefined) { + player.stat[player.stat.length - 1].allSkills = 1; + } + else { + player.stat[player.stat.length - 1].allSkills++; + } + if (info.prepare) { + switch (info.prepare) { + case "give": if (losecard) losecard.visible = true; player.$give(cards, targets[0]); break; + case "give2": player.$give(cards.length, targets[0]); break; + case "throw": if (losecard) losecard.visible = true; player.$throw(cards); break; + case "throw2": player.$throw(cards.length); break; + default: info.prepare(cards, player, targets); + } + } + if (info.round) { + var roundname = skill + "_roundcount"; + player.storage[roundname] = game.roundNumber; + player.syncStorage(roundname); + player.markSkill(roundname); + } + var name = event.skill; + var players = player.getSkills(false, false, false); + var equips = player.getSkills("e"); + var global = lib.skill.global.slice(0); + var logInfo = { + skill: name, + targets: targets, + event: _status.event, + }; + if (info.sourceSkill) { + logInfo.sourceSkill = info.sourceSkill; + if (global.contains(info.sourceSkill)) { + logInfo.type = "global"; + } + else if (players.contains(info.sourceSkill)) { + logInfo.type = "player"; + } + else if (equips.contains(info.sourceSkill)) { + logInfo.type = "equip"; + } + } + else { + if (global.contains(name)) { + logInfo.sourceSkill = name; + logInfo.type = "global"; + } + else if (players.contains(name)) { + logInfo.sourceSkill = name; + logInfo.type = "player"; + } + else if (equips.contains(name)) { + logInfo.sourceSkill = name; + logInfo.type = "equip"; + } + else { + var bool = false; + for (var i of players) { + var expand = [i]; + game.expandSkills(expand); + if (expand.contains(name)) { + bool = true; + logInfo.sourceSkill = i; + logInfo.type = "player"; + break; + } + } + if (!bool) { + for (var i of players) { + var expand = [i]; + game.expandSkills(expand); + if (expand.contains(name)) { + logInfo.sourceSkill = i; + logInfo.type = "equip"; + break; + } + } + } + } + } + event.sourceSkill = logInfo.sourceSkill; + event.type = logInfo.type; + player.getHistory("useSkill").push(logInfo); + event.trigger("useSkill"); + "step 1" + var info = get.info(event.skill); + if (info && info.contentBefore) { + var next = game.createEvent(event.skill + "ContentBefore"); + next.setContent(info.contentBefore); + next.targets = targets; + next.cards = cards; + next.player = player; + if (event.forceDie) next.forceDie = true; + if (event.includeOut) next.includeOut = true; + } + "step 2" + if (!event.skill) { + console.log("error: no skill", get.translation(event.player), event.player.getSkills()); + if (event._skill) { + event.skill = event._skill; + console.log(event._skill); + } + else { + event.finish(); + return; + } + } + var info = get.info(event.skill); + if (targets[num] && targets[num].isDead() || + targets[num] && targets[num].isOut() || + targets[num] && targets[num].removed) { + if (!info.multitarget && num < targets.length - 1) { + event.num++; + event.redo(); + } + return; + } + var next = game.createEvent(event.skill); + next.setContent(info.content); + next.targets = targets; + next.cards = cards; + next.player = player; + next.num = num; + next.multitarget = info.multitarget; + if (num == 0 && next.targets.length > 1) { + if (!info.multitarget) { + lib.tempSortSeat = player; + targets.sort(lib.sort.seat); + delete lib.tempSortSeat; + } + for (var i = 0; i < targets.length; i++) { + targets[i].animate("target"); + } + } + next.target = targets[num]; + if (event.forceDie) next.forceDie = true; + if (event.includeOut) next.includeOut = true; + if (next.target && !info.multitarget) { + if (num == 0 && targets.length > 1) { + // var ttt=next.target; + // setTimeout(function(){ttt.animate("target");},0.5*lib.config.duration); + } + else { + next.target.animate("target"); + } + } + if (num == 0) { + if (typeof info.delay == "number") game.delay(info.delay); + else if (info.delay !== false && info.delay !== 0) { + if (event.waitingForTransition) { + _status.waitingForTransition = event.waitingForTransition; + game.pause(); + } + else { + game.delayx() + } + } + } + else game.delayx(0.5); + if (!info.multitarget && num < targets.length - 1) { + event.num++; + event.redo(); + } + "step 3" + var info = get.info(event.skill); + if (info && info.contentAfter) { + var next = game.createEvent(event.skill + "ContentAfter"); + next.setContent(info.contentAfter); + next.targets = targets; + next.cards = cards; + next.player = player; + if (event.forceDie) next.forceDie = true; + if (event.includeOut) next.includeOut = true; + } + "step 4" + if (player.getStat().allSkills > 200) { + player._noSkill = true; + console.log(player.name, event.skill); + } + if (document.getElementsByClassName("thrown").length) { + if (event.skill && get.info(event.skill).delay !== false && get.info(event.skill).delay !== 0) game.delayx(); + } + else { + event.finish(); + } + "step 5" + ui.clear(); + }, + draw: function () { + // if(lib.config.background_audio){ + // game.playAudio("effect","draw"); + // } + // game.broadcast(function(){ + // if(lib.config.background_audio){ + // game.playAudio("effect","draw"); + // } + // }); + if (typeof event.minnum == "number" && num < event.minnum) { + num = event.minnum; + } + if (event.drawDeck) { + if (event.drawDeck > num) { + event.drawDeck = num; + } + num -= event.drawDeck; + } + if (event.log != false) { + if (num > 0) { + if (event.bottom) game.log(player, "从牌堆底摸了" + get.cnNumber(num) + "张牌"); + else game.log(player, "摸了" + get.cnNumber(num) + "张牌"); + } + if (event.drawDeck) { + game.log(player, "从牌库中获得了" + get.cnNumber(event.drawDeck) + "张牌"); + } + } + var cards; + if (num > 0) { + if (event.bottom) cards = get.bottomCards(num); + else if (player.getTopCards) cards = player.getTopCards(num); + else cards = get.cards(num); + } + else { + cards = []; + } + if (event.drawDeck) { + cards = cards.concat(player.getDeckCards(event.drawDeck)); + } + if (event.animate != false) { + if (event.visible) { + var next = player.gain(cards, "gain2"); + if (event.bottom) game.log(player, "从牌堆底摸了" + get.cnNumber(num) + "张牌(", cards, ")"); + else game.log(player, "摸了" + get.cnNumber(num) + "张牌(", cards, ")"); + } + else { + var next = player.gain(cards, "draw"); + } + } + else { + var next = player.gain(cards); + if (event.$draw) { + player.$draw(cards.length); + } + } + if (event.gaintag) next.gaintag.addArray(event.gaintag); + event.result = cards; + }, + discard: function () { + "step 0" + game.log(player, "弃置了", cards); + event.done = player.lose(cards, event.position, "visible"); + event.done.type = "discard"; + if (event.discarder) event.done.discarder = event.discarder; + "step 1" + event.trigger("discard"); + }, + loseToDiscardpile: function () { + "step 0" + if (event.log != false) game.log(player, "将", cards, "置入了弃牌堆"); + var next = player.lose(cards, event.position); + if (event.insert_index) next.insert_index = event.insert_index; + if (event.insert_card) next.insert_card = true; + if (!event.blank) next.visible = true; + next.type = "loseToDiscardpile"; + event.done = next; + "step 1" + event.trigger("loseToDiscardpile"); + }, + respond: function () { + "step 0" + var cardaudio = true; + if (event.skill) { + if (lib.skill[event.skill].audio) { + cardaudio = false; + } + player.logSkill(event.skill); + player.checkShow(event.skill, true); + if (lib.skill[event.skill].onrespond && !game.online) { + lib.skill[event.skill].onrespond(event, player); + } + } + else if (!event.nopopup) player.tryCardAnimate(card, card.name, "wood"); + if (cardaudio && event.getParent(3).name == "useCard") game.broadcastAll((player, card) => { + game.playCardAudio(card, player); + /* + if(!lib.config.background_audio) return; + const sex=player.sex=="female"?"female":"male",audio=lib.card[card.name].audio; + if(typeof audio=="string"){ + const audioInfo=audio.split(":"); + if(audio.startsWith("db:")) game.playAudio(`${audioInfo[0]}:${audioInfo[1]}`,audioInfo[2],`${card.name}_${sex}.${audioInfo[3]||"mp3"}`); + else if(audio.startsWith("ext:")) game.playAudio(`${audioInfo[0]}:${audioInfo[1]}`,`${card.name}_${sex}.${audioInfo[2]||"mp3"}`); + else game.playAudio("card",sex,`${audioInfo[0]}.${audioInfo[1]||"mp3"}`); + } + else game.playAudio("card",sex,card.name);*/ + }, player, card); + if (event.skill) { + if (player.stat[player.stat.length - 1].skill[event.skill] == undefined) { + player.stat[player.stat.length - 1].skill[event.skill] = 1; + } + else { + player.stat[player.stat.length - 1].skill[event.skill]++; + } + var sourceSkill = get.info(event.skill).sourceSkill; + if (sourceSkill) { + if (player.stat[player.stat.length - 1].skill[sourceSkill] == undefined) { + player.stat[player.stat.length - 1].skill[sourceSkill] = 1; + } + else { + player.stat[player.stat.length - 1].skill[sourceSkill]++; + } + } + } + if (cards.length && (cards.length > 1 || cards[0].name != card.name)) { + game.log(player, "打出了", card, "(", cards, ")"); + } + else { + game.log(player, "打出了", card); + } + player.actionHistory[player.actionHistory.length - 1].respond.push(event); + if (cards.length) { + var owner = (get.owner(cards[0]) || player); + var next = owner.lose(cards, "visible", ui.ordering).set("type", "use"); + var directDiscard = []; + for (var i = 0; i < cards.length; i++) { + if (!next.cards.contains(cards[i])) { + directDiscard.push(cards[i]); + } + } + if (directDiscard.length) game.cardsGotoOrdering(directDiscard); + } + if (event.animate != false && event.throw !== false) { + for (var i = 0; i < cards.length; i++) { + player.$throw(cards[i]); + if (event.highlight) { + cards[i].clone.classList.add("thrownhighlight"); + game.addVideo("highlightnode", player, get.cardInfo(cards[i])); + } + } + if (event.highlight) { + game.broadcast(function (cards) { + for (var i = 0; i < cards.length; i++) { + if (cards[i].clone) { + cards[i].clone.classList.add("thrownhighlight"); + } + } + }, cards); + } + } + event.trigger("respond"); + "step 1" + game.delayx(0.5); + }, + swapHandcards: function () { + "step 0" + event.cards1 = event.cards1 || player.getCards("h"); + event.cards2 = event.cards2 || target.getCards("h"); + game.loseAsync({ + player: player, + target: target, + cards1: event.cards1, + cards2: event.cards2, + }).setContent("swapHandcardsx"); + "step 1" + game.loseAsync({ + gain_list: [ + [player, event.cards2.filterInD()], + [target, event.cards1.filterInD()] + ], + }).setContent("gaincardMultiple"); + "step 2" + game.delayx(); + }, + swapHandcardsx: function () { + "step 0" + player.$giveAuto(event.cards1, target); + target.$giveAuto(event.cards2, player); + "step 1" + event.cards = event.cards1; + var next = player.lose(event.cards, ui.ordering); + next.getlx = false; + next.relatedEvent = event.getParent(); + if (player == game.me) { + event.delayed = true; + } + else { + next.delay = false; + } + "step 2" + event.cards = event.cards2; + var next = target.lose(event.cards, ui.ordering); + next.getlx = false; + next.relatedEvent = event.getParent(); + if (target == game.me) { + event.delayed = true; + } + else { + next.delay = false; + } + "step 3" + if (!event.delayed) game.delay(); + }, + gainMultiple: function () { + "step 0" + event.delayed = false; + event.num = 0; + event.cards = []; + "step 1" + player.gainPlayerCard(targets[num], event.position, true).set("boolline", false).set("delay", num == targets.length - 1); + "step 2" + if (result.bool) { + event.cards.addArray(result.cards); + if (num == targets.length - 1) event.delayed = true; + } + event.num++; + if (event.num < targets.length) { + event.goto(1); + } + "step 3" + if (!event.delayed) game.delay(); + }, + gain: function () { + "step 0" + if (event.animate == "give") event.visible = true; + if (cards) { + var map = {}; + for (var i of cards) { + var owner = get.owner(i, "judge"); + if (owner && (owner != player || get.position(i) != "h")) { + var id = owner.playerid; + if (!map[id]) map[id] = [[], [], []]; + map[id][0].push(i); + var position = get.position(i); + if (position == "h") map[id][1].push(i); + else map[id][2].push(i); + } + else if (!event.updatePile && get.position(i) == "c") event.updatePile = true; + } + event.losing_map = map; + for (var i in map) { + var owner = (_status.connectMode ? lib.playerOL : game.playerMap)[i]; + var next = owner.lose(map[i][0], ui.special).set("type", "gain").set("forceDie", true).set("getlx", false); + if (event.visible == true) { + next.visible = true; + } + event.relatedLose = next; + } + } + else { + event.finish(); + } + "step 1" + for (var i = 0; i < cards.length; i++) { + if (cards[i].willBeDestroyed("handcard", player, event)) { + cards[i].selfDestroy(event); + cards.splice(i--, 1); + } + else if (event.losing_map) { + for (var id in event.losing_map) { + if (event.losing_map[id][0].contains(cards[i])) { + var source = (_status.connectMode ? lib.playerOL : game.playerMap)[id]; + var hs = source.getCards("hejsx"); + if (hs.contains(cards[i])) { + cards.splice(i--, 1); + } else { + cards[i].addKnower(event.visible ? "everyone" : source); + } + } + } + } + } + if (cards.length == 0) { + event.finish(); + return; + } + player.getHistory("gain").push(event); + //if(event.source&&event.delay!==false) game.delayx(); + "step 2" + if (player.getStat().gain == undefined) { + player.getStat().gain = cards.length; + } + else { + player.getStat().gain += cards.length; + } + "step 3" + var sort; + var frag1 = document.createDocumentFragment(); + var frag2 = document.createDocumentFragment(); + var hs = player.getCards("hs"); + for (var i = 0; i < cards.length; i++) { + if (hs.contains(cards[i])) { + cards.splice(i--, 1); + } + } + for (var num = 0; num < cards.length; num++) { + sort = lib.config.sort_card(cards[num]); + if (lib.config.reverse_sort) sort = -sort; + if (["o", "d"].contains(get.position(cards[num], true))) { + cards[num].addKnower("everyone"); + } + cards[num].fix(); + cards[num].style.transform = ""; + cards[num].addGaintag(event.gaintag); + if (event.knowers) { + cards[num].addKnower(event.knowers);//添加事件设定的知情者。 + } + if (_status.discarded) { + _status.discarded.remove(cards[num]); + } + // cards[num].vanishtag.length=0; + for (var num2 = 0; num2 < cards[num].vanishtag.length; num2++) { + if (cards[num].vanishtag[num2][0] != "_") { + cards[num].vanishtag.splice(num2--, 1); + } + } + if (player == game.me) { + cards[num].classList.add("drawinghidden"); + } + if (get.is.singleHandcard() || sort > 1) frag1.appendChild(cards[num]); + else frag2.appendChild(cards[num]); + } + var addv = function () { + if (player == game.me) { + game.addVideo("gain12", player, [get.cardsInfo(frag1.childNodes), get.cardsInfo(frag2.childNodes), event.gaintag]); + } + }; + var broadcast = function () { + game.broadcast(function (player, cards, num, gaintag) { + player.directgain(cards, null, gaintag); + _status.cardPileNum = num; + }, player, cards, ui.cardPile.childNodes.length, event.gaintag); + }; + if (event.animate == "draw") { + player.$draw(cards.length); + game.pause(); + setTimeout(function () { + addv(); + player.node.handcards1.insertBefore(frag1, player.node.handcards1.firstChild); + player.node.handcards2.insertBefore(frag2, player.node.handcards2.firstChild); + player.update(); + if (player == game.me) ui.updatehl(); + broadcast(); + game.resume(); + }, get.delayx(500, 500)); + } + else if (event.animate == "gain") { + player.$gain(cards, event.log); + game.pause(); + setTimeout(function () { + addv(); + player.node.handcards1.insertBefore(frag1, player.node.handcards1.firstChild); + player.node.handcards2.insertBefore(frag2, player.node.handcards2.firstChild); + player.update(); + if (player == game.me) ui.updatehl(); + broadcast(); + game.resume(); + }, get.delayx(700, 700)); + } + else if (event.animate == "gain2" || event.animate == "draw2") { + var gain2t = 300; + if (player.$gain2(cards, event.log) && player == game.me) { + gain2t = 500; + } + game.pause(); + setTimeout(function () { + addv(); + player.node.handcards1.insertBefore(frag1, player.node.handcards1.firstChild); + player.node.handcards2.insertBefore(frag2, player.node.handcards2.firstChild); + player.update(); + if (player == game.me) ui.updatehl(); + broadcast(); + game.resume(); + }, get.delayx(gain2t, gain2t)); + } + else if (event.animate == "give" || event.animate == "giveAuto") { + var evtmap = event.losing_map; + if (event.animate == "give") { + for (var i in evtmap) { + var source = (_status.connectMode ? lib.playerOL : game.playerMap)[i]; + source.$give(evtmap[i][0], player, event.log) + } + } + else { + for (var i in evtmap) { + var source = (_status.connectMode ? lib.playerOL : game.playerMap)[i]; + if (evtmap[i][1].length) source.$giveAuto(evtmap[i][1], player, event.log); + if (evtmap[i][2].length) source.$give(evtmap[i][2], player, event.log); + } + } + game.pause(); + setTimeout(function () { + addv(); + player.node.handcards1.insertBefore(frag1, player.node.handcards1.firstChild); + player.node.handcards2.insertBefore(frag2, player.node.handcards2.firstChild); + player.update(); + if (player == game.me) ui.updatehl(); + broadcast(); + game.resume(); + }, get.delayx(500, 500)); + } + else if (typeof event.animate == "function") { + var time = event.animate(event); + game.pause(); + setTimeout(function () { + addv(); + player.node.handcards1.insertBefore(frag1, player.node.handcards1.firstChild); + player.node.handcards2.insertBefore(frag2, player.node.handcards2.firstChild); + player.update(); + if (player == game.me) ui.updatehl(); + broadcast(); + game.resume(); + }, get.delayx(time, time)); + } + else { + addv(); + player.node.handcards1.insertBefore(frag1, player.node.handcards1.firstChild); + player.node.handcards2.insertBefore(frag2, player.node.handcards2.firstChild); + player.update(); + if (player == game.me) ui.updatehl(); + broadcast(); + event.finish(); + } + "step 4" + game.delayx(); + if (event.updatePile) game.updateRoundNumber(); + }, + addToExpansion: function () { + "step 0" + if (event.animate == "give") event.visible = true; + if (cards) { + var map = {}; + for (var i of cards) { + var owner = get.owner(i, "judge"); + if (owner && (owner != player || get.position(i) != "x")) { + var id = owner.playerid; + if (!map[id]) map[id] = [[], [], []]; + map[id][0].push(i); + var position = get.position(i); + if (position == "h") map[id][1].push(i); + else map[id][2].push(i); + } + else if (!event.updatePile && get.position(i) == "c") event.updatePile = true; + } + event.losing_map = map; + for (var i in map) { + var owner = (_status.connectMode ? lib.playerOL : game.playerMap)[i]; + var next = owner.lose(map[i][0], ui.special).set("type", "loseToExpansion").set("forceDie", true).set("getlx", false); + if (event.visible == true) next.visible = true; + event.relatedLose = next; + } + } + else { + event.finish(); + } + "step 1" + for (var i = 0; i < cards.length; i++) { + if (cards[i].willBeDestroyed("expansion", player, event)) { + cards[i].selfDestroy(event); + cards.splice(i--, 1); + } + else if (event.losing_map) { + for (var id in event.losing_map) { + if (event.losing_map[id][0].contains(cards[i])) { + var source = (_status.connectMode ? lib.playerOL : game.playerMap)[id]; + var hs = source.getCards("hejsx"); + if (hs.contains(cards[i])) { + cards.splice(i--, 1); + } + } + } + } + } + if (cards.length == 0) { + event.finish(); + return; + } + "step 2" + var hs = player.getCards("x"); + for (var i = 0; i < cards.length; i++) { + if (hs.contains(cards[i])) { + cards.splice(i--, 1); + } + } + for (var num = 0; num < cards.length; num++) { + if (_status.discarded) { + _status.discarded.remove(cards[num]); + } + for (var num2 = 0; num2 < cards[num].vanishtag.length; num2++) { + if (cards[num].vanishtag[num2][0] != "_") { + cards[num].vanishtag.splice(num2--, 1); + } + } + } + if (event.animate == "draw") { + player.$draw(cards.length); + if (event.log) game.log(player, "将", get.cnNumber(cards.length), "张牌置于了武将牌上"); + game.pause(); + setTimeout(function () { + player.$addToExpansion(cards, null, event.gaintag); + for (var i of event.gaintag) player.markSkill(i); + game.resume(); + }, get.delayx(500, 500)); + } + else if (event.animate == "gain") { + player.$gain(cards, false); + game.pause(); + setTimeout(function () { + player.$addToExpansion(cards, null, event.gaintag); + for (var i of event.gaintag) player.markSkill(i); + game.resume(); + }, get.delayx(700, 700)); + } + else if (event.animate == "gain2" || event.animate == "draw2") { + var gain2t = 300; + if (player.$gain2(cards) && player == game.me) { + gain2t = 500; + } + game.pause(); + setTimeout(function () { + player.$addToExpansion(cards, null, event.gaintag); + for (var i of event.gaintag) player.markSkill(i); + game.resume(); + }, get.delayx(gain2t, gain2t)); + } + else if (event.animate == "give" || event.animate == "giveAuto") { + var evtmap = event.losing_map; + if (event.animate == "give") { + for (var i in evtmap) { + var source = (_status.connectMode ? lib.playerOL : game.playerMap)[i]; + source.$give(evtmap[i][0], player, false); + if (event.log) game.log(player, "将", evtmap[i][0], "置于了武将牌上"); + } + } + else { + for (var i in evtmap) { + var source = (_status.connectMode ? lib.playerOL : game.playerMap)[i]; + if (evtmap[i][1].length) { + source.$giveAuto(evtmap[i][1], player, false); + if (event.log) game.log(player, "将", get.cnNumber(evtmap[i][1].length), "张牌置于了武将牌上"); + } + if (evtmap[i][2].length) { + source.$give(evtmap[i][2], player, false); + if (event.log) game.log(player, "将", evtmap[i][2], "置于了武将牌上"); + } + } + } + game.pause(); + setTimeout(function () { + player.$addToExpansion(cards, null, event.gaintag); + for (var i of event.gaintag) player.markSkill(i); + game.resume(); + }, get.delayx(500, 500)); + } + else if (typeof event.animate == "function") { + var time = event.animate(event); + game.pause(); + setTimeout(function () { + player.$addToExpansion(cards, null, event.gaintag); + for (var i of event.gaintag) player.markSkill(i); + game.resume(); + }, get.delayx(time, time)); + } + else { + player.$addToExpansion(cards, null, event.gaintag); + for (var i of event.gaintag) player.markSkill(i); + event.finish(); + } + "step 4" + game.delayx(); + if (event.updatePile) game.updateRoundNumber(); + }, + lose: function () { + "step 0" + var evt = event.getParent(); + if ((evt.name != "discard" || event.type != "discard") && (evt.name != "loseToDiscardpile" || event.type != "loseToDiscardpile")) { + event.delay = false; + return; + } + if (evt.delay === false) event.delay = false; + if (evt.animate != false) { + evt.discardid = lib.status.videoId++; + game.broadcastAll(function (player, cards, id, visible) { + player.$throw(cards, null, "nobroadcast"); + var cardnodes = []; + cardnodes._discardtime = get.time(); + for (var i = 0; i < cards.length; i++) { + if (cards[i].clone) { + cardnodes.push(cards[i].clone); + if (!visible) { + cards[i].clone.classList.add("infohidden"); + cards[i].clone.classList.add("infoflip"); + } + } + } + ui.todiscard[id] = cardnodes; + }, player, cards, evt.discardid, event.visible); + if (lib.config.sync_speed && cards[0] && cards[0].clone) { + if (evt.delay != false) { + var waitingForTransition = get.time(); + evt.waitingForTransition = waitingForTransition; + cards[0].clone.listenTransition(function () { + if (_status.waitingForTransition == waitingForTransition && _status.paused) { + game.resume(); + } + delete evt.waitingForTransition; + }); + } + else if (evt.getParent().discardTransition) { + delete evt.getParent().discardTransition; + var waitingForTransition = get.time(); + evt.getParent().waitingForTransition = waitingForTransition; + cards[0].clone.listenTransition(function () { + if (_status.waitingForTransition == waitingForTransition && _status.paused) { + game.resume(); + } + delete evt.getParent().waitingForTransition; + }); + } + } + } + "step 1" + event.gaintag_map = {}; + var hs = [], es = [], js = [], ss = [], xs = []; + var unmarks = []; + if (event.insert_card && event.position == ui.cardPile) event.cards.reverse(); + var hej = player.getCards("hejsx"); + event.stockcards = cards.slice(0); + for (var i = 0; i < cards.length; i++) { + if (!hej.contains(cards[i])) { + cards.splice(i--, 1); + continue; + } + else if (cards[i].parentNode) { + if (cards[i].parentNode.classList.contains("equips")) { + cards[i].original = "e"; + es.push(cards[i]); + } + else if (cards[i].parentNode.classList.contains("judges")) { + cards[i].original = "j"; + js.push(cards[i]); + } + else if (cards[i].parentNode.classList.contains("expansions")) { + cards[i].original = "x"; + xs.push(cards[i]); + if (cards[i].gaintag && cards[i].gaintag.length) unmarks.addArray(cards[i].gaintag); + } + else if (cards[i].parentNode.classList.contains("handcards")) { + if (cards[i].classList.contains("glows")) { + cards[i].original = "s"; + ss.push(cards[i]); + } + else { + cards[i].original = "h"; + hs.push(cards[i]); + } + } + else { + cards[i].original = null; + } + } + if (cards[i].gaintag && cards[i].gaintag.length) { + event.gaintag_map[cards[i].cardid] = cards[i].gaintag.slice(0); + cards[i].removeGaintag(true); + } + + cards[i].style.transform += " scale(0.2)"; + cards[i].classList.remove("glow"); + cards[i].classList.remove("glows"); + cards[i].recheck(); + + var info = lib.card[cards[i].name]; + if (Object.prototype.hasOwnProperty.call(cards[i], "_destroy")) { + if (cards[i]._destroy) { + cards[i].delete(); + cards[i].destroyed = cards[i]._destroy; + continue; + } + } + else if (Object.prototype.hasOwnProperty.call(cards[i], "destroyed")) { + if (event.getlx !== false && event.position && cards[i].willBeDestroyed(event.position.id, null, event)) { + cards[i].selfDestroy(event); + continue; + } + } + else if (info.destroy) { + cards[i].delete(); + cards[i].destroyed = info.destroy; + continue; + } + if (event.position) { + if (_status.discarded) { + if (event.position == ui.discardPile) { + _status.discarded.add(cards[i]); + } + else { + _status.discarded.remove(cards[i]); + } + } + if (event.insert_index) { + cards[i].fix(); + event.position.insertBefore(cards[i], event.insert_index(event, cards[i])); + } + else if (event.insert_card) { + cards[i].fix(); + event.position.insertBefore(cards[i], event.position.firstChild); + } + else if (event.position == ui.cardPile) { + cards[i].fix(); + event.position.appendChild(cards[i]); + } + else cards[i].goto(event.position); + } + else { + cards[i].remove(); + } + //if(ss.contains(cards[i])) cards.splice(i--,1); + } + if (player == game.me) ui.updatehl(); + ui.updatej(player); + game.broadcast(function (player, cards, num) { + for (var i = 0; i < cards.length; i++) { + cards[i].classList.remove("glow"); + cards[i].classList.remove("glows"); + cards[i].fix(); + cards[i].remove(); + } + if (player == game.me) { + ui.updatehl(); + } + ui.updatej(player); + _status.cardPileNum = num; + }, player, cards, ui.cardPile.childNodes.length); + game.addVideo("lose", player, [get.cardsInfo(hs), get.cardsInfo(es), get.cardsInfo(js), get.cardsInfo(ss)]); + event.cards2 = hs.concat(es); + player.getHistory("lose").push(event); + game.getGlobalHistory().cardMove.push(event); + player.update(); + game.addVideo("loseAfter", player); + event.num = 0; + if (event.position == ui.ordering) { + var evt = event.relatedEvent || event.getParent(); + if (!evt.orderingCards) evt.orderingCards = []; + if (!evt.noOrdering && !evt.cardsOrdered) { + evt.cardsOrdered = true; + var next = game.createEvent("orderingDiscard", false, evt.getParent()); + next.relatedEvent = evt; + next.setContent("orderingDiscard"); + } + if (!evt.noOrdering) { + evt.orderingCards.addArray(cards); + } + } + else if (event.position == ui.cardPile) { + game.updateRoundNumber(); + } + if (unmarks.length) { + for (var i of unmarks) { + player[(lib.skill[i] && lib.skill[i].mark || player.hasCard((card) => card.hasGaintag(i), "x")) ? "markSkill" : "unmarkSkill"](i); + } + } + event.hs = hs; + event.es = es; + event.js = js; + event.ss = ss; + event.xs = xs; + game.clearCardKnowers(hs); + if (hs.length && !event.visible) { + player.getCards("h").forEach(hcard => { hcard.clearKnowers(); }); + } + "step 2" + if (num < cards.length) { + if (event.es.contains(cards[num])) { + event.loseEquip = true; + player.removeEquipTrigger(cards[num]); + var info = get.info(cards[num]); + if (info.onLose && (!info.filterLose || info.filterLose(cards[num], player))) { + event.goto(3); + return; + } + } + event.num++; + event.redo(); + } + else { + if (event.loseEquip) { + player.addEquipTrigger(); + } + event.goto(4); + } + "step 3" + var info = get.info(cards[num]); + if (info.loseDelay != false && (player.isAlive() || info.forceDie)) { + player.popup(cards[num].name); + game.delayx(); + } + if (Array.isArray(info.onLose)) { + for (var i = 0; i < info.onLose.length; i++) { + var next = game.createEvent("lose_" + cards[num].name); + next.setContent(info.onLose[i]); + if (info.forceDie) next.forceDie = true; + next.player = player; + next.card = cards[num]; + } + } + else { + var next = game.createEvent("lose_" + cards[num].name); + next.setContent(info.onLose); + next.player = player; + if (info.forceDie) next.forceDie = true; + next.card = cards[num]; + } + event.num++; + event.goto(2); + "step 4" + if (event.toRenku) { + _status.renku.addArray(cards.filter(function (card) { + return !card.willBeDestroyed("renku", null, event); + })); + if (_status.renku.length > 6) { + var cards = _status.renku.splice(0, _status.renku.length - 6); + game.log(cards, "从仁库进入了弃牌堆"); + game.cardsDiscard(cards).set("outRange", true).fromRenku = true; + } + game.updateRenku(); + } + "step 5" + var evt = event.getParent(); + if ((evt.name != "discard" && event.type != "discard") && (evt.name != "loseToDiscardpile" && event.type != "loseToDiscardpile")) return; + if (event.animate === false || event.delay === false) return; + if (evt.delay != false) { + if (evt.waitingForTransition) { + _status.waitingForTransition = evt.waitingForTransition; + game.pause(); + } + else { + game.delayx(); + } + } + }, + damage: function () { + "step 0" + event.forceDie = true; + if (event.unreal) { event.goto(4); return; } + event.trigger("damageBegin1"); + "step 1" + event.trigger("damageBegin2"); + "step 2" + event.trigger("damageBegin3"); + "step 3" + event.trigger("damageBegin4"); + "step 4" + //moved changeHujia to changeHp + if (player.hujia > 0 && !player.hasSkillTag("nohujia")) { + var damageAudioInfo = lib.natureAudio.hujia_damage[event.nature]; + if (!damageAudioInfo || damageAudioInfo == "normal") { + damageAudioInfo = "effect/hujia_damage" + (num > 1 ? "2" : "") + ".mp3"; + } else if (damageAudioInfo == "default") { + damageAudioInfo = "effect/hujia_damage_" + event.nature + (num > 1 ? "2" : "") + ".mp3"; + } else { + damageAudioInfo = damageAudioInfo[num > 1 ? 2 : 1]; + } + game.broadcastAll(function (damageAudioInfo) { + if (lib.config.background_audio) game.playAudio(damageAudioInfo); + }, damageAudioInfo); + } else { + var damageAudioInfo = lib.natureAudio.damage[event.nature]; + if (!damageAudioInfo || damageAudioInfo == "normal") { + damageAudioInfo = "effect/damage" + (num > 1 ? "2" : "") + ".mp3"; + } else if (damageAudioInfo == "default") { + damageAudioInfo = "effect/damage_" + event.nature + (num > 1 ? "2" : "") + ".mp3"; + } else { + damageAudioInfo = damageAudioInfo[num > 1 ? 2 : 1]; + } + game.broadcastAll(function (damageAudioInfo) { + if (lib.config.background_audio) game.playAudio(damageAudioInfo); + }, damageAudioInfo); + } + var str = event.unreal ? "视为受到了" : "受到了"; + if (source) str += `来自${source == player ? "自己" : get.translation(source)}的`; + str += get.cnNumber(num) + "点"; + if (event.nature) str += get.translation(event.nature) + "属性"; + str += "伤害"; + game.log(player, str); + if (player.stat[player.stat.length - 1].damaged == undefined) { + player.stat[player.stat.length - 1].damaged = num; + } + else { + player.stat[player.stat.length - 1].damaged += num; + } + if (source) { + source.getHistory("sourceDamage").push(event); + if (source.stat[source.stat.length - 1].damage == undefined) { + source.stat[source.stat.length - 1].damage = num; + } + else { + source.stat[source.stat.length - 1].damage += num; + } + } + player.getHistory("damage").push(event); + if (!event.unreal) { + if (event.notrigger) { + player.changeHp(-num, false)._triggered = null; + } + else { + player.changeHp(-num, false); + } + } + if (event.animate !== false) { + player.$damage(source); + var natures = (event.nature || "").split(lib.natureSeparator); + game.broadcastAll(function (natures, player) { + if (lib.config.animation && !lib.config.low_performance) { + if (natures.includes("fire")) { + player.$fire(); + } + if (natures.includes("thunder")) { + player.$thunder(); + } + } + }, natures, player); + var numx = player.hasSkillTag("nohujia") ? num : Math.max(0, num - player.hujia); + player.$damagepop(-numx, natures[0]); + } + if (event.unreal) event.goto(6) + if (!event.notrigger) { + if (num == 0) { + event.trigger("damageZero"); + event._triggered = null; + } + else { + event.trigger("damage"); + } + } + "step 5" + if (player.hp <= 0 && player.isAlive() && !event.nodying) { + game.delayx(); + event._dyinged = true; + player.dying(event); + } + if (source && lib.config.border_style == "auto") { + var dnum = 0; + for (var j = 0; j < source.stat.length; j++) { + if (source.stat[j].damage != undefined) dnum += source.stat[j].damage; + } + if (dnum >= 2) { + if (lib.config.autoborder_start == "silver") { + dnum += 4; + } + else if (lib.config.autoborder_start == "gold") { + dnum += 8; + } + } + if (lib.config.autoborder_count == "damage") { + source.node.framebg.dataset.decoration = ""; + if (dnum >= 10) { + source.node.framebg.dataset.auto = "gold"; + if (dnum >= 12) source.node.framebg.dataset.decoration = "gold"; + } + else if (dnum >= 6) { + source.node.framebg.dataset.auto = "silver"; + if (dnum >= 8) source.node.framebg.dataset.decoration = "silver"; + } + else if (dnum >= 2) { + source.node.framebg.dataset.auto = "bronze"; + if (dnum >= 4) source.node.framebg.dataset.decoration = "bronze"; + } + if (dnum >= 2) { + source.classList.add("topcount"); + } + } + else if (lib.config.autoborder_count == "mix") { + source.node.framebg.dataset.decoration = ""; + switch (source.node.framebg.dataset.auto) { + case "bronze": if (dnum >= 4) source.node.framebg.dataset.decoration = "bronze"; break; + case "silver": if (dnum >= 8) source.node.framebg.dataset.decoration = "silver"; break; + case "gold": if (dnum >= 12) source.node.framebg.dataset.decoration = "gold"; break; + } + } + } + "step 6" + if (!event.notrigger) event.trigger("damageSource"); + }, + recover: function () { + if (lib.config.background_audio) { + game.playAudio("effect", "recover"); + } + game.broadcast(function () { + if (lib.config.background_audio) { + game.playAudio("effect", "recover"); + } + }); + if (num > player.maxHp - player.hp) { + num = player.maxHp - player.hp; + event.num = num; + } + if (num > 0) { + player.changeHp(num, false); + game.broadcastAll(function (player) { + if (lib.config.animation && !lib.config.low_performance) { + player.$recover(); + } + }, player); + player.$damagepop(num, "wood"); + game.log(player, "回复了" + get.cnNumber(num) + "点体力") + } + }, + loseHp: function () { + "step 0" + if (lib.config.background_audio) { + game.playAudio("effect", "loseHp"); + } + game.broadcast(function () { + if (lib.config.background_audio) { + game.playAudio("effect", "loseHp"); + } + }); + game.log(player, "失去了" + get.cnNumber(num) + "点体力") + player.changeHp(-num); + "step 1" + if (player.hp <= 0 && !event.nodying) { + game.delayx(); + event._dyinged = true; + player.dying(event); + } + }, + doubleDraw: function () { + "step 0" + player.chooseBool("你的主副将体力上限之和是奇数,是否摸一张牌?"); + "step 1" + if (result.bool) { + player.draw(); + } + }, + loseMaxHp: function () { + "step 0" + game.log(player, "减少了" + get.cnNumber(num) + "点体力上限"); + player.maxHp -= num; + event.loseHp = Math.max(0, player.hp - player.maxHp); + player.update(); + "step 1" + if (player.maxHp <= 0) { + player.die(event); + } + }, + gainMaxHp: function () { + "step 0" + game.log(player, "增加了" + get.cnNumber(num) + "点体力上限"); + player.maxHp += num; + player.update(); + }, + changeHp: function () { + //add to GlobalHistory + game.getGlobalHistory().changeHp.push(event); + //changeHujia moved here + if (num < 0 && player.hujia > 0 && event.getParent().name == "damage" && !player.hasSkillTag("nohujia")) { + event.hujia = Math.min(-num, player.hujia); + event.getParent().hujia = event.hujia; + event.num += event.hujia; + //log moved to changeHujia + //game.log(player,"的护甲抵挡了"+get.cnNumber(event.hujia)+"点伤害"); + player.changeHujia(-event.hujia).type = "damage"; + } + //old part + num = event.num; + player.hp += num; + if (isNaN(player.hp)) player.hp = 0; + if (player.hp > player.maxHp) player.hp = player.maxHp; + player.update(); + if (event.popup !== false) { + player.$damagepop(num, "water"); + } + if (_status.dying.contains(player) && player.hp > 0) { + _status.dying.remove(player); + game.broadcast(function (list) { + _status.dying = list; + }, _status.dying); + var evt = event.getParent("_save"); + if (evt && evt.finish) evt.finish(); + evt = event.getParent("dying"); + if (evt && evt.finish) evt.finish() + } + event.trigger("changeHp"); + }, + changeHujia: function () { + if (num > 0) { + game.log(player, "获得了" + get.cnNumber(num) + "点护甲"); + } + else if (num < 0) { + if (-num > player.hujia) { + num = -player.hujia; + event.num = num; + } + switch (event.type) { //log moved here + case "damage": + game.log(player, "的护甲抵挡了" + get.cnNumber(-num) + "点伤害"); + break; + case "lose": + game.log(player, "失去了" + get.cnNumber(-num) + "点护甲"); + break; + } + } + player.hujia += num; + //if(player.hujia<0){ + // player.hujia=0; + //} + player.update(); + }, + dying: function () { + "step 0" + event.forceDie = true; + if (player.isDying() || player.hp > 0) { + event.finish(); + return; + } + _status.dying.unshift(player); + game.broadcast(function (list) { + _status.dying = list; + }, _status.dying); + event.trigger("dying"); + game.log(player, "濒死"); + "step 1" + delete event.filterStop; + if (player.hp > 0 || event.nodying) { + _status.dying.remove(player); + game.broadcast(function (list) { + _status.dying = list; + }, _status.dying); + event.finish(); + } + else if (!event.skipTao) { + var next = game.createEvent("_save"); + var start = false; + var starts = [_status.currentPhase, event.source, event.player, game.me, game.players[0]]; + for (var i = 0; i < starts.length; i++) { + if (get.itemtype(starts[i]) == "player") { + start = starts[i]; break; + } + } + next.player = start; + next._trigger = event; + next.triggername = "_save"; + next.forceDie = true; + next.setContent(lib.skill._save.content); + } + "step 2" + _status.dying.remove(player); + game.broadcast(function (list) { + _status.dying = list; + }, _status.dying); + if (player.hp <= 0 && !event.nodying && !player.nodying) player.die(event.reason); + }, + die: function () { + "step 0" + event.forceDie = true; + if (_status.roundStart == player) { + _status.roundStart = player.next || player.getNext() || game.players[0]; + } + if (ui.land && ui.land.player == player) { + game.addVideo("destroyLand"); + ui.land.destroy(); + } + var unseen = false; + if (player.classList.contains("unseen")) { + player.classList.remove("unseen"); + unseen = true; + } + var logvid = game.logv(player, "die", source); + event.logvid = logvid; + if (unseen) { + player.classList.add("unseen"); + } + if (source) { + game.log(player, "被", source, "杀害"); + if (source.stat[source.stat.length - 1].kill == undefined) { + source.stat[source.stat.length - 1].kill = 1; + } + else { + source.stat[source.stat.length - 1].kill++; + } + } + else { + game.log(player, "阵亡") + } + + + // player.removeEquipTrigger(); + + // for(var i in lib.skill.globalmap){ + // if(lib.skill.globalmap[i].contains(player)){ + // lib.skill.globalmap[i].remove(player); + // if(lib.skill.globalmap[i].length==0&&!lib.skill[i].globalFixed){ + // game.removeGlobalSkill(i); + // } + // } + // } + game.broadcastAll(function (player) { + player.classList.add("dead"); + player.removeLink(); + player.classList.remove("turnedover"); + player.classList.remove("out"); + player.node.count.innerHTML = "0"; + player.node.hp.hide(); + player.node.equips.hide(); + player.node.count.hide(); + player.previous.next = player.next; + player.next.previous = player.previous; + game.players.remove(player); + game.dead.push(player); + _status.dying.remove(player); + + if (lib.config.background_speak) { + if (lib.character[player.name] && lib.character[player.name][4].some(tag => /^die:.+$/.test(tag))) { + var tag = lib.character[player.name][4].find(tag => /^die:.+$/.test(tag)); + var reg = new RegExp("^ext:(.+)?/"); + var match = tag.match(/^die:(.+)$/); + if (match) { + var path = match[1]; + if (reg.test(path)) path = path.replace(reg, (_o, p) => `../extension/${p}/`); + game.playAudio(path); + } + } + else if (lib.character[player.name] && lib.character[player.name][4].some(tag => tag.startsWith("die_audio"))) { + var tag = lib.character[player.name][4].find(tag => tag.startsWith("die_audio")); + var list = tag.split(":").slice(1); + game.playAudio("die", list.length ? list[0] : player.name); + } + else { + game.playAudio("die", player.name, function () { + game.playAudio("die", player.name.slice(player.name.indexOf("_") + 1)); + }); + } + } + }, player); + + game.addVideo("diex", player); + if (event.animate !== false) { + player.$die(source); + } + if (player.hp != 0) { + player.changeHp(0 - player.hp, false).forceDie = true; + } + "step 1" + if (player.dieAfter) player.dieAfter(source); + "step 2" + event.trigger("die"); + "step 3" + if (player.isDead()) { + if (!game.reserveDead) { + for (var mark in player.marks) { + player.unmarkSkill(mark); + } + while (player.node.marks.childNodes.length > 1) { + player.node.marks.lastChild.remove(); + } + game.broadcast(function (player) { + while (player.node.marks.childNodes.length > 1) { + player.node.marks.lastChild.remove(); + } + }, player); + } + for (var i in player.tempSkills) { + player.removeSkill(i); + } + var skills = player.getSkills(); + for (var i = 0; i < skills.length; i++) { + if (lib.skill[skills[i]].temp) { + player.removeSkill(skills[i]); + } + } + if (_status.characterlist) { + if (lib.character[player.name] && !player.name.startsWith("gz_shibing") && !player.name.startsWith("gz_jun_")) _status.characterlist.add(player.name); + if (lib.character[player.name1] && !player.name1.startsWith("gz_shibing") && !player.name1.startsWith("gz_jun_")) _status.characterlist.add(player.name1); + if (lib.character[player.name2] && !player.name2.startsWith("gz_shibing") && !player.name2.startsWith("gz_jun_")) _status.characterlist.add(player.name2); + } + event.cards = player.getCards("hejsx"); + if (event.cards.length) { + player.discard(event.cards).forceDie = true; + //player.$throw(event.cards,1000); + } + } + "step 4" + if (player.dieAfter2) player.dieAfter2(source); + "step 5" + game.broadcastAll(function (player) { + if (game.online && player == game.me && !_status.over && !game.controlOver && !ui.exit) { + if (lib.mode[lib.configOL.mode].config.dierestart) { + ui.create.exit(); + } + } + }, player); + if (!_status.connectMode && player == game.me && !_status.over && !game.controlOver) { + ui.control.show(); + if (get.config("revive") && lib.mode[lib.config.mode].config.revive && !ui.revive) { + ui.revive = ui.create.control("revive", ui.click.dierevive); + } + if (get.config("continue_game") && !ui.continue_game && lib.mode[lib.config.mode].config.continue_game && !_status.brawl && !game.no_continue_game) { + ui.continue_game = ui.create.control("再战", game.reloadCurrent); + } + if (get.config("dierestart") && lib.mode[lib.config.mode].config.dierestart && !ui.restart) { + ui.restart = ui.create.control("restart", game.reload); + } + } + + if (!_status.connectMode && player == game.me && !game.modeSwapPlayer) { + // _status.auto=false; + if (ui.auto) { + // ui.auto.classList.remove("glow"); + ui.auto.hide(); + } + if (ui.wuxie) ui.wuxie.hide(); + } + + if (typeof _status.coin == "number" && source && !_status.auto) { + if (source == game.me || source.isUnderControl()) { + _status.coin += 10; + } + } + if (source && lib.config.border_style == "auto" && (lib.config.autoborder_count == "kill" || lib.config.autoborder_count == "mix")) { + switch (source.node.framebg.dataset.auto) { + case "gold": case "silver": source.node.framebg.dataset.auto = "gold"; break; + case "bronze": source.node.framebg.dataset.auto = "silver"; break; + default: source.node.framebg.dataset.auto = lib.config.autoborder_start || "bronze"; + } + if (lib.config.autoborder_count == "kill") { + source.node.framebg.dataset.decoration = source.node.framebg.dataset.auto; + } + else { + var dnum = 0; + for (var j = 0; j < source.stat.length; j++) { + if (source.stat[j].damage != undefined) dnum += source.stat[j].damage; + } + source.node.framebg.dataset.decoration = ""; + switch (source.node.framebg.dataset.auto) { + case "bronze": if (dnum >= 4) source.node.framebg.dataset.decoration = "bronze"; break; + case "silver": if (dnum >= 8) source.node.framebg.dataset.decoration = "silver"; break; + case "gold": if (dnum >= 12) source.node.framebg.dataset.decoration = "gold"; break; + } + } + source.classList.add("topcount"); + } + }, + addJudge: function () { + "step 0" + if (cards) { + var owner = get.owner(cards[0]); + if (owner) { + event.relatedLose = owner.lose(cards, "visible", ui.special).set("getlx", false); + } + else if (get.position(cards[0]) == "c") event.updatePile = true; + } + "step 1" + if (cards[0].willBeDestroyed("judge", player, event)) { + cards[0].selfDestroy(event); + event.finish(); + return; + } + else if (event.relatedLose) { + var owner = event.relatedLose.player; + if (owner.getCards("hejsx").contains(card)) { + event.finish(); + return; + } + } + cards[0].fix(); + cards[0].style.transform = ""; + cards[0].classList.remove("drawinghidden"); + delete cards[0]._transform; + var viewAs = typeof card == "string" ? card : card.name; + if (!lib.card[viewAs] || !lib.card[viewAs].effect) { + game.cardsDiscard(cards[0]); + } + else { + cards[0].style.transform = ""; + cards[0].classList.add("drawinghidden"); + player.node.judges.insertBefore(cards[0], player.node.judges.firstChild); + if (_status.discarded) { + _status.discarded.remove(cards[0]); + } + ui.updatej(player); + game.broadcast(function (player, card, viewAs) { + card.fix(); + card.style.transform = ""; + card.classList.add("drawinghidden"); + card.viewAs = viewAs; + if (viewAs && viewAs != card.name && (card.classList.contains("fullskin") || card.classList.contains("fullborder"))) { + card.classList.add("fakejudge"); + card.node.background.innerHTML = lib.translate[viewAs + "_bg"] || get.translation(viewAs)[0] + } + else { + card.classList.remove("fakejudge"); + } + player.node.judges.insertBefore(card, player.node.judges.firstChild); + ui.updatej(player); + if (card.clone && (card.clone.parentNode == player.parentNode || card.clone.parentNode == ui.arena)) { + card.clone.moveDelete(player); + game.addVideo("gain2", player, get.cardsInfo([card])); + } + }, player, cards[0], viewAs); + if (cards[0].clone && (cards[0].clone.parentNode == player.parentNode || cards[0].clone.parentNode == ui.arena)) { + cards[0].clone.moveDelete(player); + game.addVideo("gain2", player, get.cardsInfo(cards)); + } + // player.$gain2(cards); + if (get.itemtype(card) != "card") { + if (typeof card == "string") cards[0].viewAs = card; + else cards[0].viewAs = card.name; + } + else { + delete cards[0].viewAs; + } + if (cards[0].viewAs && cards[0].viewAs != cards[0].name) { + if (cards[0].classList.contains("fullskin") || cards[0].classList.contains("fullborder")) { + cards[0].classList.add("fakejudge"); + cards[0].node.background.innerHTML = lib.translate[cards[0].viewAs + "_bg"] || get.translation(cards[0].viewAs)[0]; + } + game.log(player, `被贴上了${get.translation(cards[0].viewAs)}(`, cards, ")"); + } + else { + cards[0].classList.remove("fakejudge"); + game.log(player, "被贴上了", cards); + } + game.addVideo("addJudge", player, [get.cardInfo(cards[0]), cards[0].viewAs]); + } + if (event.updatePile) game.updateRoundNumber(); + }, + judge: function () { + "step 0" + var judgestr = get.translation(player) + "的" + event.judgestr + "判定"; + event.videoId = lib.status.videoId++; + var cardj = event.directresult; + if (!cardj) { + if (player.getTopCards) cardj = player.getTopCards()[0]; + else cardj = get.cards()[0]; + } + var owner = get.owner(cardj); + if (owner) { + owner.lose(cardj, "visible", ui.ordering); + } + else { + var nextj = game.cardsGotoOrdering(cardj); + if (event.position != ui.discardPile) nextj.noOrdering = true; + } + player.judging.unshift(cardj); + game.addVideo("judge1", player, [get.cardInfo(player.judging[0]), judgestr, event.videoId]); + game.broadcastAll(function (player, card, str, id, cardid) { + var event; + if (game.online) { + event = {}; + } + else { + event = _status.event; + } + if (game.chess) { + event.node = card.copy("thrown", "center", ui.arena).animate("start"); + } + else { + event.node = player.$throwordered(card.copy(), true); + } + if (lib.cardOL) lib.cardOL[cardid] = event.node; + event.node.cardid = cardid; + event.node.classList.add("thrownhighlight"); + ui.arena.classList.add("thrownhighlight"); + event.dialog = ui.create.dialog(str); + event.dialog.classList.add("center"); + event.dialog.videoId = id; + }, player, player.judging[0], judgestr, event.videoId, get.id()); + + game.log(player, "进行" + event.judgestr + "判定,亮出的判定牌为", player.judging[0]); + game.delay(2); + if (!event.noJudgeTrigger) event.trigger("judge"); + "step 1" + event.result = { + card: player.judging[0], + name: player.judging[0].name, + number: get.number(player.judging[0]), + suit: get.suit(player.judging[0]), + color: get.color(player.judging[0]), + node: event.node, + }; + if (event.fixedResult) { + for (var i in event.fixedResult) { + event.result[i] = event.fixedResult[i]; + } + } + event.result.judge = event.judge(event.result); + if (event.result.judge > 0) event.result.bool = true; + else if (event.result.judge < 0) event.result.bool = false; + else event.result.bool = null; + player.judging.shift(); + game.checkMod(player, event.result, "judge", player); + if (event.judge2) { + var judge2 = event.judge2(event.result); + if (typeof judge2 == "boolean") player.tryJudgeAnimate(judge2); + } + if (event.clearArena != false) { + game.broadcastAll(ui.clear); + } + game.broadcast(function (id) { + var dialog = get.idDialog(id); + if (dialog) { + dialog.close(); + } + ui.arena.classList.remove("thrownhighlight"); + }, event.videoId); + event.dialog.close(); + game.addVideo("judge2", null, event.videoId); + ui.arena.classList.remove("thrownhighlight"); + game.log(player, "的判定结果为", event.result.card); + event.trigger("judgeFixing"); + if (event.callback) { + var next = game.createEvent("judgeCallback", false); + next.player = player; + next.card = event.result.card; + next.judgeResult = get.copy(event.result); + next.setContent(event.callback); + } + else { + if (!get.owner(event.result.card)) { + if (event.position != ui.discardPile) event.position.appendChild(event.result.card); + } + } + }, + turnOver: function () { + game.log(player, "翻面"); + player.classList.toggle("turnedover"); + game.broadcast(function (player) { + player.classList.toggle("turnedover"); + }, player); + game.addVideo("turnOver", player, player.classList.contains("turnedover")); + }, + link: function () { + if (player.isLinked()) { + game.log(player, "解除连环"); + } + else { + game.log(player, "被连环"); + } + if (lib.config.background_audio) { + game.playAudio("effect", "link"); + } + game.broadcast(function () { + if (lib.config.background_audio) { + game.playAudio("effect", "link"); + } + }); + player.classList.remove("target"); + if (get.is.linked2(player)) { + player.classList.toggle("linked2"); + } + else { + player.classList.toggle("linked"); + } + ui.updatej(player); + ui.updatem(player); + game.broadcast(function (player, linked) { + player.classList.remove("target"); + if (get.is.linked2(player)) { + if (linked) { + player.classList.add("linked2"); + } + else { + player.classList.remove("linked2"); + } + } + else { + if (linked) { + player.classList.add("linked"); + } + else { + player.classList.remove("linked"); + } + } + ui.updatej(player); + ui.updatem(player); + }, player, player.isLinked()); + game.addVideo("link", player, player.isLinked()); + }, + chooseToGuanxing: function () { + "step 0" + var cards = get.cards(num); + game.cardsGotoOrdering(cards); + var next = player.chooseToMove(); + next.set("list", [ + ["牌堆顶", cards], + ["牌堆底"], + ]); + next.set("prompt", "点击将牌移动到牌堆顶或牌堆底"); + next.processAI = event.processAI || function (list) { + var cards = list[0][1], player = _status.event.player; + var top = []; + var bottom; + cards.sort(function (a, b) { + return get.value(b, player) - get.value(a, player); + }); + while (cards.length) { + if (get.value(cards[0], player) <= 5) break; + top.unshift(cards.shift()); + } + bottom = cards; + return [top, bottom]; + }; + "step 1" + var top = result.moved[0]; + var bottom = result.moved[1]; + top.reverse(); + for (var i = 0; i < top.length; i++) { + ui.cardPile.insertBefore(top[i], ui.cardPile.firstChild); + } + for (i = 0; i < bottom.length; i++) { + ui.cardPile.appendChild(bottom[i]); + } + game.addCardKnower(top, player); + game.addCardKnower(bottom, player); + player.popup(get.cnNumber(top.length) + "上" + get.cnNumber(bottom.length) + "下"); + game.log(player, "将" + get.cnNumber(top.length) + "张牌置于牌堆顶"); + game.updateRoundNumber(); + game.delayx(); + }, + }, Player, + Card, VCard, - GameEvent + Button, + GameEvent, + GameEventPromise, + Dialog, + Control, + Client, + NodeWS, + WS, + /** + * @legacy Use {@link lib.element.Player.prototype} instead. + */ + get player() { + return this.Player.prototype; + }, + /** + * @legacy Use {@link lib.element.Card.prototype} instead. + */ + get card() { + return this.Card.prototype; + }, + /** + * @legacy Use {@link lib.element.Button.prototype} instead. + */ + get button() { + return this.Button.prototype; + }, + /** + * @legacy Use {@link lib.element.GameEvent.prototype} instead. + */ + get event() { + return this.GameEvent.prototype; + }, + /** + * @legacy Use {@link lib.element.Dialog.prototype} instead. + */ + get dialog() { + return this.Dialog.prototype; + }, + /** + * @legacy Use {@link lib.element.Control.prototype} instead. + */ + get control() { + return this.Control.prototype; + }, + /** + * @legacy Use {@link lib.element.Client.prototype} instead. + */ + get client() { + return this.Client.prototype; + }, + /** + * @legacy Use {@link lib.element.NodeWS.prototype} instead. + */ + get nodews() { + return this.NodeWS.prototype; + } }; diff --git a/noname/library/element/button.js b/noname/library/element/button.js new file mode 100644 index 000000000..9a978cd55 --- /dev/null +++ b/noname/library/element/button.js @@ -0,0 +1,30 @@ +export class Button extends HTMLDivElement { + /** + * @param {{}} item + * @param {keyof typeof ui.create.buttonPresets | (item: {}, type: Function, position?: HTMLDivElement, noClick?: true, button?: HTMLDivElement) => HTMLDivElement} type + * @param {HTMLDivElement} [position] + * @param {true} [noClick] + * @param {HTMLDivElement} [button] + */ + constructor(item, type, position, noClick, button) { + if (ui.create.buttonPresets[type]) button = ui.create.buttonPresets[type](item, type, position, noClick, button); + else if (typeof type == "function") button = type(item, type, position, noClick, button); + Object.setPrototypeOf(button, lib.element.Button.prototype); + if (!noClick) button.addEventListener(lib.config.touchscreen ? "touchend" : "click", ui.click.button); + else { + button.classList.add("noclick"); + const intro = button.querySelector(".intro"); + if (intro) intro.remove(); + } + return button; + } + exclude() { + if (_status.event.excludeButton == undefined) { + _status.event.excludeButton = []; + } + _status.event.excludeButton.add(this); + } + get updateTransform() { + return lib.element.Card.prototype.updateTransform; + } +} diff --git a/noname/library/element/card.js b/noname/library/element/card.js new file mode 100644 index 000000000..e8b08c4bd --- /dev/null +++ b/noname/library/element/card.js @@ -0,0 +1,775 @@ +export class Card extends HTMLDivElement { + /** + * @param {HTMLDivElement} [position] + * @param {"noclick"} [info] + * @param {true} [noclick] + */ + constructor(position, info, noclick) { + const card = ui.create.div(".card", position); + Object.setPrototypeOf(card, lib.element.Card.prototype); + card.build(info, noclick); + return card; + } + build(info, noclick) { + let card = this; + card.buildNode(); + card.buildIntro(noclick); + card.buildProperty(); + card.buildEventListener(info); + } + buildEventListener(info) { + let card = this; + if (info != "noclick") { + card.addEventListener(lib.config.touchscreen ? "touchend" : "click", ui.click.card); + if (lib.config.touchscreen) { + card.addEventListener("touchstart", ui.click.cardtouchstart); + card.addEventListener("touchmove", ui.click.cardtouchmove); + } + if (lib.cardSelectObserver) lib.cardSelectObserver.observe(card, { + attributes: true + }); + } + } + buildProperty() { + let card = this; + card.storage = {}; + card.vanishtag = []; + card.gaintag = []; + card._uncheck = []; + } + buildNode() { + this.node = { + image: ui.create.div(".image", this), + info: ui.create.div(".info", this), + name: ui.create.div(".name", this), + name2: ui.create.div(".name2", this), + background: ui.create.div(".background", this), + intro: ui.create.div(".intro", this), + range: ui.create.div(".range", this), + gaintag: ui.create.div(".gaintag", this), + }; + this.node.intro.innerHTML = lib.config.intro; + } + buildIntro(noclick) { + if (!noclick) lib.setIntro(this); + } + //执行销毁一张牌的钩子函数 + selfDestroy(event) { + if (this._selfDestroyed) return; + this._selfDestroyed = true; + this.fix(); + this.delete(); + const info = get.info(this, false); + if (!info) return; + if (info.destroyLog !== false) game.log(this, "被销毁了"); + if (info.onDestroy) info.onDestroy(this, event); + } + //判断一张牌进入某个区域后是否会被销毁 + willBeDestroyed(targetPosition, player, event) { + const destroyed = this.destroyed; + if (typeof destroyed == "function") { + return destroyed(this, targetPosition, player, event); + } + else if (lib.skill[destroyed]) { + if (player) { + if (player.hasSkill(destroyed)) { + delete this.destroyed; + return false; + } + } + return true; + } + else if (typeof destroyed == "string") { + return (destroyed == targetPosition); + } + return destroyed; + } + hasNature(nature, player) { + return game.hasNature(this, nature, player); + } + //只针对【杀】起效果 + addNature(nature) { + let natures = []; + if (!this.nature) this.nature = ""; + else { + natures.addArray(get.natureList(this.nature)); + } + natures.addArray(get.natureList(nature)); + this.nature = get.nature(natures); + this.classList.add(nature); + let str = get.translation(this.nature) + "杀"; + this.node.name.innerText = str; + let name = get.name(this, false); + do { + if (name == "sha") { + let _bg; + for (const n of natures) if (lib.natureBg.has(n)) _bg = n; + if (_bg) { + this.node.image.setBackgroundImage(lib.natureBg.get(_bg)); + break; + } + } + this.node.image.setBackgroundImage("image/card/" + name + ".png"); + } + while (0); + return this.nature; + } + removeNature(nature) { + if (!this.nature) return; + let natures = get.natureList(this.nature); + natures.remove(nature); + if (!natures.length) delete this.nature; + else this.nature = get.nature(natures); + this.classList.remove(nature); + let str = get.translation(this.nature) + "杀"; + this.node.name.innerText = str; + let name = get.name(this, false); + do { + if (name == "sha") { + let _bg; + for (const n of natures) if (lib.natureBg.has(n)) _bg = n; + if (_bg) { + this.node.image.setBackgroundImage(lib.natureBg.get(_bg)); + break; + } + } + this.node.image.setBackgroundImage("image/card/" + name + ".png"); + } + while (0); + return this.nature; + } + addGaintag(gaintag) { + if (Array.isArray(gaintag)) this.gaintag = gaintag.slice(0); + else this.gaintag.add(gaintag); + var str = ""; + for (var gi = 0; gi < this.gaintag.length; gi++) { + var translate = get.translation(this.gaintag[gi]); + if (translate != "invisible") { + str += translate; + if (gi < this.gaintag.length - 1) str += " "; + } + } + this.node.gaintag.innerHTML = str; + } + removeGaintag(tag) { + if (tag === true) { + if (this.gaintag && this.gaintag.length || this.node.gaintag.innerHTML.length) this.addGaintag([]); + } + else if (this.hasGaintag(tag)) { + this.gaintag.remove(tag); + this.addGaintag(this.gaintag); + } + } + hasGaintag(tag) { + return this.gaintag && this.gaintag.contains(tag); + } + /** + * @param {[string, number, string, string] | { + * suit: string; + * number: number; + * name: string; + * nature: string; + * }} card + */ + init(card) { + if (Array.isArray(card)) { + if (card[2] == "huosha") { + card[2] = "sha"; + card[3] = "fire"; + } + else if (card[2] == "leisha") { + card[2] = "sha"; + card[3] = "thunder"; + } + else if (card[2] == "cisha") { + card[2] = "sha"; + card[3] = "stab"; + } + else if (card[2].length > 3) { + let prefix = card[2].slice(0, card[2].lastIndexOf("sha")); + if (lib.nature.has(prefix)) { + if (prefix.length + 3 == card[2].length) { + card[2] = "sha"; + card[3] = prefix; + } + } + if (card[2].startsWith("sha_")) { + let suffix = card[2].slice(4); + let natureList = suffix.split("_"); + card[2] = "sha"; + card[3] = get.nature(natureList); + } + } + } + else if (typeof card == "object") { + card = [card.suit, card.number, card.name, card.nature]; + } + var cardnum = card[1] || ""; + if (parseInt(cardnum) == cardnum) cardnum = parseInt(cardnum); + + if (!lib.card[card[2]]) { + lib.card[card[2]] = {}; + } + var info = lib.card[card[2]]; + if (info.global && !this.classList.contains("button")) { + if (Array.isArray(info.global)) { + while (info.global.length) { + game.addGlobalSkill(info.global.shift()); + } + } + else if (typeof info.global == "string") { + game.addGlobalSkill(info.global); + } + delete info.global; + } + this.suit = card[0]; + this.number = parseInt(card[1]) || 0; + this.name = card[2]; + + if (info.destroy && (typeof info.destroy != "boolean" && !lib.skill[info.destroy])) { + this.destroyed = info.destroy; + } + + if (_status.connectMode && !game.online && lib.cardOL && !this.cardid) { + this.cardid = get.id(); + lib.cardOL[this.cardid] = this; + } + if (!_status.connectMode && !_status.video) { + this.cardid = get.id(); + } + + this.$init(card); + + if (this.inits) { + for (var i = 0; i < this.inits.length; i++) { + this.inits[i](this); + } + } + if (typeof info.init == "function") info.init(); + + return this; + } + /** + * @param {[string, number, string, string]} card + */ + $init(card) { + var info = lib.card[card[2]]; + var cardnum = card[1] || ""; + if (parseInt(cardnum) == cardnum) cardnum = parseInt(cardnum); + if (cardnum > 0 && cardnum < 14) { + cardnum = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"][cardnum - 1]; + } + if (this.name) { + this.classList.remove("epic"); + this.classList.remove("legend"); + this.classList.remove("gold"); + this.classList.remove("unique"); + this.style.background = ""; + var subtype = get.subtype(this, false); + if (subtype) { + this.classList.remove(subtype); + } + } + if (info.epic) { + this.classList.add("epic"); + } + else if (info.legend) { + this.classList.add("legend"); + } + else if (info.gold) { + this.classList.add("gold"); + } + else if (info.unique) { + this.classList.add("unique"); + } + var bg = card[2]; + if (info.cardimage) { + bg = info.cardimage; + } + var img = lib.card[bg].image; + if (img) { + if (img.startsWith("db:")) { + img = img.slice(3); + } + else if (!img.startsWith("ext:")) { + img = null; + } + } + this.classList.remove("fullskin"); + this.classList.remove("fullimage"); + this.classList.remove("fullborder"); + this.dataset.cardName = card[2]; + this.dataset.cardType = info.type || ""; + this.dataset.cardSubype = info.subtype || ""; + this.dataset.cardMultitarget = info.multitarget ? "1" : "0"; + this.node.name.dataset.nature = ""; + this.node.info.classList.remove("red"); + if (!lib.config.hide_card_image && lib.card[bg].fullskin) { + this.classList.add("fullskin"); + if (img) { + if (img.startsWith("ext:")) { + this.node.image.setBackgroundImage(img.replace(/^ext:/, "extension/")); + } + else { + this.node.image.setBackgroundDB(img); + } + } + else { + if (lib.card[bg].modeimage) { + this.node.image.setBackgroundImage("image/mode/" + lib.card[bg].modeimage + "/card/" + bg + ".png"); + } + else { + do { + let nature = card[3]; + if (bg == "sha" && typeof nature == "string") { + let natures = get.natureList(nature), _bg; + for (const n of natures) if (lib.natureBg.has(n)) _bg = n; + if (_bg) { + this.node.image.setBackgroundImage(lib.natureBg.get(_bg)); + break; + } + } + this.node.image.setBackgroundImage("image/card/" + bg + ".png"); + } + while (0); + } + } + } + else if (lib.card[bg].image == "background") { + if (card[3]) this.node.background.setBackground(bg + "_" + get.natureList(card[3])[0], "card"); + else this.node.background.setBackground(bg, "card"); + } + else if (lib.card[bg].fullimage) { + this.classList.add("fullimage"); + if (img) { + if (img.startsWith("ext:")) { + this.setBackgroundImage(img.replace(/^ext:/, "extension/")); + this.style.backgroundSize = "cover"; + } + else { + this.setBackgroundDB(img); + } + } + else if (lib.card[bg].image) { + if (lib.card[bg].image.startsWith("character:")) { + this.setBackground(lib.card[bg].image.slice(10), "character"); + } + else { + this.setBackground(lib.card[bg].image); + } + } + else { + var cardPack = lib.cardPack["mode_" + get.mode()]; + if (Array.isArray(cardPack) && cardPack.contains(bg)) { + this.setBackground("mode/" + get.mode() + "/card/" + bg); + } + else { + this.setBackground("card/" + bg); + } + } + } + else if (lib.card[bg].fullborder) { + this.classList.add("fullborder"); + if (lib.card[bg].fullborder == "gold") { + this.node.name.dataset.nature = "metalmm"; + } + else if (lib.card[bg].fullborder == "silver") { + this.node.name.dataset.nature = "watermm"; + } + if (!this.node.avatar) { + this.node.avatar = ui.create.div(".cardavatar"); + this.insertBefore(this.node.avatar, this.firstChild); + } + if (!this.node.framebg) { + this.node.framebg = ui.create.div(".cardframebg"); + this.node.framebg.dataset.auto = lib.card[bg].fullborder; + this.insertBefore(this.node.framebg, this.firstChild); + } + if (img) { + if (img.startsWith("ext:")) { + this.node.avatar.setBackgroundImage(img.replace(/^ext:/, "extension/")); + this.node.avatar.style.backgroundSize = "cover"; + } + else { + this.node.avatar.setBackgroundDB(img); + } + } + else if (lib.card[bg].image) { + if (lib.card[bg].image.startsWith("character:")) { + this.node.avatar.setBackground(lib.card[bg].image.slice(10), "character"); + } + else { + this.node.avatar.setBackground(lib.card[bg].image); + } + } + else { + var cardPack = lib.cardPack["mode_" + get.mode()]; + if (Array.isArray(cardPack) && cardPack.contains(bg)) { + this.node.avatar.setBackground("mode/" + get.mode() + "/card/" + bg); + } + else { + this.node.avatar.setBackground("card/" + bg); + } + } + } + else if (lib.card[bg].image == "card") { + if (card[3]) this.setBackground(bg + "_" + get.natureList(card[3])[0], "card"); + else this.setBackground(bg, "card"); + } + else if (typeof lib.card[bg].image == "string" && !lib.card[bg].fullskin) { + if (img) { + if (img.startsWith("ext:")) { + this.setBackgroundImage(img.replace(/^ext:/, "extension/")); + this.style.backgroundSize = "cover"; + } + else { + this.setBackgroundDB(img); + } + } + else { + this.setBackground(lib.card[bg].image); + } + } + else { + this.node.background.innerHTML = lib.translate[bg + "_cbg"] || lib.translate[bg + "_bg"] || get.translation(bg)[0]; + // this.node.background.style.fontFamily=lib.config.card_font; + if (this.node.background.innerHTML.length > 1) this.node.background.classList.add("tight"); + else this.node.background.classList.remove("tight"); + } + if (!lib.card[bg].fullborder && this.node.avatar && this.node.framebg) { + this.node.avatar.remove(); + this.node.framebg.remove(); + delete this.node.avatar; + delete this.node.framebg; + } + if (info.noname && !this.classList.contains("button")) { + this.node.name.style.display = "none"; + } + if (info.color) { + this.style.color = info.color; + } + if (info.textShadow) { + this.style.textShadow = info.textShadow; + } + if (info.opacity) { + this.node.info.style.opacity = info.opacity; + this.node.name.style.opacity = info.opacity; + } + if (info.modinfo) { + this.node.info.innerHTML = info.modinfo; + } + else { + this.node.info.innerHTML = `${get.translation(card[0])} ${cardnum}`; + } + if (info.addinfo) { + if (!this.node.addinfo) { + this.node.addinfo = ui.create.div(".range", this); + } + this.node.addinfo.innerHTML = info.addinfo; + } + else if (this.node.addinfo) { + this.node.addinfo.remove(); + delete this.node.addinfo; + } + if (card[0] == "heart" || card[0] == "diamond") { + this.node.info.classList.add("red"); + } + this.node.image.className = "image"; + var name = get.translation(card[2]); + if (card[2] == "sha") { + name = ""; + let nature = card[3]; + if (nature) { + let natures = get.natureList(nature); + natures.sort(lib.sort.nature); + for (let nature of natures) { + name += lib.translate["nature_" + nature] || lib.translate[nature] || ""; + if (nature != "stab") this.node.image.classList.add(nature); + } + } + name += "杀"; + } + this.node.name.innerHTML = name; + if (name.length >= 5) { + this.node.name.classList.add("long"); + if (name.length >= 7) { + this.node.name.classList.add("longlong"); + } + } + this.node.name2.innerHTML = get.translation(card[0]) + cardnum + " " + name; + this.classList.add("card"); + if (card[3]) { + let natures = get.natureList(card[3]); + natures.forEach(n => { if (n) this.classList.add(n) }); + this.nature = natures.filter(n => lib.nature.has(n)).sort(lib.sort.nature).join(lib.natureSeparator); + } + else if (this.nature) { + this.classList.remove(this.nature); + delete this.nature; + } + if (info.subtype) this.classList.add(info.subtype); + this.node.range.innerHTML = ""; + switch (get.subtype(this, false)) { + case "equip1": + var added = false; + if (lib.card[this.name] && lib.card[this.name].distance) { + var dist = lib.card[this.name].distance; + if (dist.attackFrom) { + added = true; + this.node.range.innerHTML = "范围: " + (-dist.attackFrom + 1); + } + } + if (!added) { + this.node.range.innerHTML = "范围: 1"; + } + break; + case "equip3": + if (info.distance && info.distance.globalTo) { + this.node.range.innerHTML = "防御: " + info.distance.globalTo; + this.node.name2.innerHTML += "+"; + } + break; + case "equip4": + if (info.distance && info.distance.globalFrom) { + this.node.range.innerHTML = "进攻: " + (-info.distance.globalFrom); + this.node.name2.innerHTML += "-"; + } + break; + } + var tags = []; + if (Array.isArray(card[4])) { + tags.addArray(card[4]); + } + if (this.cardid) { + if (!_status.cardtag) { + _status.cardtag = {}; + } + for (var i in _status.cardtag) { + if (_status.cardtag[i].contains(this.cardid)) { + tags.add(i); + } + } + if (tags.length) { + var tagstr = ` `; + for (var i = 0; i < tags.length; i++) { + var tag = tags[i]; + if (!_status.cardtag[tag]) { + _status.cardtag[tag] = []; + } + _status.cardtag[tag].add(this.cardid); + tagstr += lib.translate[tag + "_tag"]; + //if(i this._knowers.add(p.playerid)); + } + } + } + removeKnower(player) { + if (!this._knowers) { + return; + } + if (typeof player == "string") { + this._knowers.remove(player); + } else { + let type = get.itemtype(player); + if (type == "player") { + this._knowers.remove(player.playerid); + } else if (type == "players") { + player.forEach(p => this._knowers.remove(p.playerid)); + } + } + } + //清除此牌的知情者。 + clearKnowers() { + if (this._knowers) delete this._knowers; + } + //判断玩家对此牌是否知情。 + isKnownBy(player) { + if (["e", "j"].includes(get.position(this))) return true;//装备区或者判定区的牌,必知情。 + let owner = get.owner(this); + if (owner) { + if (owner == player) return true;//是牌主,必知情。 + if (player.hasSkillTag("viewHandcard", null, owner, true)) return true;//有viewHandcard标签,必知情。 + if (owner.isUnderControl(true, player)) return true;//被操控,必知情。 + } + if (get.is.shownCard(this)) return true;//此牌是明置牌,必知情。 + if (this._knowers) { + return this._knowers.includes("everyone") || this._knowers.includes(player.playerid); + } + return false; + } + getSource(name) { + if (this.name == name) return true; + var info = lib.card[this.name]; + if (info && Array.isArray(info.source)) { + return info.source.contains(name); + } + return false; + } + moveDelete(player) { + this.fixed = true; + if (!this._listeningEnd || this._transitionEnded) { + this.moveTo(player); + var that = this; + setTimeout(function () { + that.delete(); + }, 200); + } + else { + this._onEndMoveDelete = player; + } + } + moveTo(player) { + this.fixed = true; + var dx, dy; + if (this.classList.contains("center")) { + var nx = [50, -52]; + var ny = [50, -52]; + nx = nx[0] * ui.arena.offsetWidth / 100 + nx[1]; + ny = ny[0] * ui.arena.offsetHeight / 100 + ny[1]; + dx = player.getLeft() + player.offsetWidth / 2 - 52 - nx; + dy = player.getTop() + player.offsetHeight / 2 - 52 - ny; + } + else { + this.style.left = this.offsetLeft + "px"; + this.style.top = this.offsetTop + "px"; + + dx = player.getLeft() + player.offsetWidth / 2 - 52 - this.offsetLeft; + dy = player.getTop() + player.offsetHeight / 2 - 52 - this.offsetTop; + } + if (get.is.mobileMe(player)) { + dx += get.cardOffset(); + if (ui.arena.classList.contains("oblongcard")) { + dy -= 16; + } + } + + + if (this.style.transform && this.style.transform != "none" && this.style.transform.indexOf("translate") == -1) { + this.style.transform += " translate(" + dx + "px," + dy + "px)"; + } + else { + this.style.transform = "translate(" + dx + "px," + dy + "px)"; + } + return this; + } + copy() { + /** + * @type {Card} + */ + var node = this.cloneNode(true); + node.style.transform = ""; + node.name = this.name; + node.suit = this.suit; + node.number = this.number; + node.nature = this.nature; + node.classList.remove("hidden"); + node.classList.remove("start"); + node.classList.remove("thrown"); + node.classList.remove("selectable"); + node.classList.remove("selected"); + node.classList.remove("removing"); + node.classList.remove("drawinghidden"); + node.classList.remove("glows"); + node.node = { + name: node.querySelector(".name"), + info: node.querySelector(".info"), + intro: node.querySelector(".intro"), + background: node.querySelector(".background"), + image: node.querySelector(".image"), + gaintag: node.querySelector(".gaintag"), + } + node.node.gaintag.innerHTML = ""; + var clone = true; + var position; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "string") node.classList.add(arguments[i]); + else if (get.objtype(arguments[i]) == "div") position = arguments[i]; + else if (typeof arguments[i] == "boolean") clone = arguments[i]; + } + node.moveTo = lib.element.Card.prototype.moveTo; + node.moveDelete = lib.element.Card.prototype.moveDelete; + if (clone) this.clone = node; + if (position) position.appendChild(node); + return node; + } + uncheck(skill) { + if (skill) this._uncheck.add(skill); + this.classList.add("uncheck"); + } + recheck(skill) { + if (skill) this._uncheck.remove(skill); + else this._uncheck.length = 0; + if (this._uncheck.length == 0) this.classList.remove("uncheck"); + } + discard(bool) { + if (!this._selfDestroyed) { + this.fix(); + ui.discardPile.appendChild(this); + } + this.classList.remove("glow"); + if (bool === false) { + ui.cardPile.insertBefore(this, ui.cardPile.childNodes[Math.floor(Math.random() * ui.cardPile.childNodes.length)]); + } + else { + if (_status.discarded) { + _status.discarded.add(this); + } + } + } + hasTag(tag) { + if (this.cardid && _status.cardtag && _status.cardtag[tag] && _status.cardtag[tag].contains(this.cardid)) { + return true; + } + return false; + } + hasPosition() { + return ["h", "e", "j", "s", "x"].contains(get.position(this)); + } + isInPile() { + return ["c", "d"].contains(get.position(this)); + } +} diff --git a/noname/library/element/client.js b/noname/library/element/client.js new file mode 100644 index 000000000..c35ce4eee --- /dev/null +++ b/noname/library/element/client.js @@ -0,0 +1,61 @@ +export class Client { + /** + * @param {NodeWS | InstanceType} ws + */ + constructor(ws) { + this.ws = ws; + this.id = ws.wsid || get.id(); + this.closed = false; + } + send() { + if (this.closed) return this; + var args = Array.from(arguments); + if (typeof args[0] == "function") { + args.unshift("exec"); + } + for (var i = 1; i < args.length; i++) { + args[i] = get.stringifiedResult(args[i]); + } + try { + this.ws.send(JSON.stringify(args)); + } + catch (e) { + this.ws.close(); + } + return this; + } + close() { + lib.node.clients.remove(this); + lib.node.observing.remove(this); + if (ui.removeObserve && !lib.node.observing.length) { + ui.removeObserve.remove(); + delete ui.removeObserve; + } + this.closed = true; + if (_status.waitingForPlayer) { + for (var i = 0; i < game.connectPlayers.length; i++) { + if (game.connectPlayers[i].playerid == this.id) { + game.connectPlayers[i].uninitOL(); + delete game.connectPlayers[i].playerid; + } + } + if (game.onlinezhu == this.id) { + game.onlinezhu = null; + } + game.updateWaiting(); + } + else if (lib.playerOL[this.id]) { + var player = lib.playerOL[this.id]; + player.setNickname(player.nickname + " - 离线"); + game.broadcast(function (player) { + player.setNickname(player.nickname + " - 离线"); + }, player); + player.unwait("ai"); + } + + if (window.isNonameServer) { + document.querySelector("#server_count").innerHTML = lib.node.clients.length; + } + return this; + } +} diff --git a/noname/library/element/control.js b/noname/library/element/control.js new file mode 100644 index 000000000..a206dcee2 --- /dev/null +++ b/noname/library/element/control.js @@ -0,0 +1,119 @@ +export class Control extends HTMLDivElement { + constructor() { + const nc = !ui.control.querySelector("div:not(.removing):not(.stayleft)"); + const controls = Array.isArray(arguments[0]) ? arguments[0] : Array.from(arguments); + const control = ui.create.div(".control"); + Object.setPrototypeOf(control, lib.element.Control.prototype); + ui.control.insertBefore(control, _status.createControl || ui.confirm); + controls.forEach(argument => { + if (argument == "nozoom") return; + if (typeof argument == "function") control.custom = argument; + else if (argument == "stayleft") { + control.stayleft = true; + control.classList.add("stayleft"); + } + else control.add(argument); + }); + ui.controls.unshift(control); + if (nc) ui.control.animate("nozoom", 100); + if (control.childNodes.length) { + control.style.transition = "opacity 0.5s"; + control.animate("controlpressdownx", 500); + ui.refresh(control); + if (!control.stayleft) control.style.transform = `translateX(-${control.offsetWidth / 2}px)`; + control.style.opacity = 1; + ui.refresh(control); + control.style.transition = ""; + } + + control.addEventListener(lib.config.touchscreen ? "touchend" : "click", ui.click.control2); + + if (lib.config.button_press) { + control.addEventListener(lib.config.touchscreen ? "touchstart" : "mousedown", function () { + if (this.classList.contains("disabled")) return; + this.classList.add("controlpressdown"); + if (typeof this._offset == "number") this.style.transform = `translateX(${this._offset}px) scale(0.97)`; + }); + control.addEventListener(lib.config.touchscreen ? "touchend" : "mouseup", function () { + this.classList.remove("controlpressdown"); + if (typeof this._offset == "number") this.style.transform = `translateX(${this._offset}px)`; + }); + } + + ui.updatec(); + return control; + } + open() { + ui.control.insertBefore(this, _status.createControl || ui.confirm); + ui.controls.unshift(this); + if (this.childNodes.length) { + this.style.transition = "opacity 0.5s"; + ui.refresh(this); + this.style.transform = "translateX(-" + (this.offsetWidth / 2) + "px)"; + this.style.opacity = 1; + ui.refresh(this); + this.style.transition = ""; + } + else { + this.animate("controlpressdownx", 500); + } + ui.updatec(); + return this; + } + add(item) { + var node = document.createElement("div"); + this.appendChild(node); + node.link = item; + node.innerHTML = get.translation(item); + node.addEventListener(lib.config.touchscreen ? "touchend" : "click", ui.click.control); + } + close() { + this.animate("controlpressdownx", 500); + + ui.controls.remove(this); + this.delete(); + + setTimeout(ui.updatec, 100); + + + if (ui.confirm == this) delete ui.confirm; + if (ui.skills == this) delete ui.skills; + if (ui.skills2 == this) delete ui.skills2; + if (ui.skills3 == this) delete ui.skills3; + } + replace() { + // this.animate("controlpressdownx",500); + if (this.replaceTransition === false) { + this.style.transitionProperty = "none"; + ui.refresh(this); + } + + while (this.childNodes.length) this.firstChild.remove(); + var i, controls; + if (Array.isArray(arguments[0])) controls = arguments[0]; + else controls = arguments; + delete this.custom; + for (i = 0; i < controls.length; i++) { + if (typeof controls[i] == "function") { + this.custom = controls[i]; + } + else { + this.add(controls[i]); + } + } + if (this.childNodes.length) { + var width = 0; + for (i = 0; i < this.childNodes.length; i++) width += this.childNodes[i].offsetWidth; + ui.refresh(this); + this.style.width = width + "px"; + } + ui.updatec(); + if (this.replaceTransition === false) { + var that = this; + setTimeout(function () { + that.style.transitionProperty = ""; + }, 200); + } + return this; + } +} diff --git a/noname/library/element/dialog.js b/noname/library/element/dialog.js new file mode 100644 index 000000000..3c880f8b8 --- /dev/null +++ b/noname/library/element/dialog.js @@ -0,0 +1,168 @@ +export class Dialog extends HTMLDivElement { + constructor() { + let hidden = false; + let noTouchScroll = false; + let forceButton = false; + let noForceButton = false; + const dialog = ui.create.div(".dialog"); + Object.setPrototypeOf(dialog, lib.element.Dialog.prototype); + dialog.contentContainer = ui.create.div(".content-container", dialog); + dialog.content = ui.create.div(".content", dialog.contentContainer); + dialog.bar1 = ui.create.div(".bar.top", dialog); + dialog.bar2 = ui.create.div(".bar.bottom", dialog); + dialog.buttons = []; + Array.from(arguments).forEach(argument => { + if (typeof argument == "boolean") dialog.static = argument; + else if (argument == "hidden") hidden = true; + else if (argument == "notouchscroll") noTouchScroll = true; + else if (argument == "forcebutton") forceButton = true; + else if (argument == "noforcebutton") noForceButton = true; + else dialog.add(argument); + }); + if (!hidden) dialog.open(); + if (!lib.config.touchscreen) dialog.contentContainer.onscroll = ui.update; + if (!noTouchScroll) { + dialog.contentContainer.ontouchstart = ui.click.dialogtouchStart; + dialog.contentContainer.ontouchmove = ui.click.touchScroll; + dialog.contentContainer.style.webkitOverflowScrolling = "touch"; + dialog.ontouchstart = ui.click.dragtouchdialog; + } + if (noForceButton) dialog.noforcebutton = true; + else if (forceButton) { + dialog.forcebutton = true; + dialog.classList.add("forcebutton"); + } + return dialog; + } + add(item, noclick, zoom) { + if (typeof item == "string") { + if (item.startsWith("###")) { + var items = item.slice(3).split("###"); + this.add(items[0], noclick, zoom); + this.addText(items[1], items[1].length <= 20, zoom); + } + else if (noclick) { + var strstr = item; + item = ui.create.div("", this.content); + item.innerHTML = strstr; + } + else { + item = ui.create.caption(item, this.content); + } + } + else if (get.objtype(item) == "div") { + this.content.appendChild(item); + } + else if (get.itemtype(item) == "cards") { + var buttons = ui.create.div(".buttons", this.content); + if (zoom) buttons.classList.add("smallzoom"); + this.buttons = this.buttons.concat(ui.create.buttons(item, "card", buttons, noclick)); + } + else if (get.itemtype(item) == "players") { + var buttons = ui.create.div(".buttons", this.content); + if (zoom) buttons.classList.add("smallzoom"); + this.buttons = this.buttons.concat(ui.create.buttons(item, "player", buttons, noclick)); + } + else if (item[1] == "textbutton") { + ui.create.textbuttons(item[0], this, noclick); + } + else { + var buttons = ui.create.div(".buttons", this.content); + if (zoom) buttons.classList.add("smallzoom"); + this.buttons = this.buttons.concat(ui.create.buttons(item[0], item[1], buttons, noclick)); + } + if (this.buttons.length) { + if (this.forcebutton !== false) this.forcebutton = true; + if (this.buttons.length > 3 || (zoom && this.buttons.length > 5)) { + this.classList.remove("forcebutton-auto"); + } + else if (!this.noforcebutton) { + this.classList.add("forcebutton-auto"); + } + } + ui.update(); + return item; + } + addText(str, center) { + if (str && str.startsWith("${str}`); + } + else { + this.add(`
    ${str}
    `); + } + return this; + } + addSmall(item, noclick) { + return this.add(item, noclick, true); + } + addAuto(content) { + if (content && content.length > 4 && !this._hovercustomed) { + this.addSmall(content); + } + else { + this.add(content); + } + } + open() { + if (this.noopen) return; + for (var i = 0; i < ui.dialogs.length; i++) { + if (ui.dialogs[i] == this) { + this.show(); + this.refocus(); + ui.dialogs.remove(this); + ui.dialogs.unshift(this); + ui.update(); + return this; + } + if (ui.dialogs[i].static) ui.dialogs[i].unfocus(); + else ui.dialogs[i].hide(); + } + ui.dialog = this; + var translate; + if (lib.config.remember_dialog && lib.config.dialog_transform && !this.classList.contains("fixed")) { + translate = lib.config.dialog_transform; + this._dragtransform = translate; + this.style.transform = "translate(" + translate[0] + "px," + translate[1] + "px) scale(0.8)"; + } + else { + this.style.transform = "scale(0.8)"; + } + this.style.transitionProperty = "opacity,transform"; + this.style.opacity = 0; + ui.arena.appendChild(this); + ui.dialogs.unshift(this); + ui.update(); + ui.refresh(this); + if (lib.config.remember_dialog && lib.config.dialog_transform && !this.classList.contains("fixed")) { + this.style.transform = "translate(" + translate[0] + "px," + translate[1] + "px) scale(1)"; + } + else { + this.style.transform = "scale(1)"; + } + this.style.opacity = 1; + var that = this; + setTimeout(function () { + that.style.transitionProperty = ""; + }, 500); + return this; + } + close() { + ui.dialogs.remove(this); + this.delete(); + if (ui.dialogs.length > 0) { + ui.dialog = ui.dialogs[0]; + ui.dialog.show(); + ui.dialog.refocus(); + ui.update(); + } + // if(ui.arenalog){ + // ui.arenalog.classList.remove("withdialog"); + // } + return this; + } + setCaption(str) { + this.querySelector(".caption").innerHTML = str; + return this; + } +} diff --git a/noname/library/element/game-event-promise.js b/noname/library/element/game-event-promise.js new file mode 100644 index 000000000..5176015ac --- /dev/null +++ b/noname/library/element/game-event-promise.js @@ -0,0 +1,74 @@ +export class GameEventPromise extends Promise { + // 我谢谢你,这里是必须有的 + // 否则Promise的方法对其子类无效 + static get [Symbol.species]() { + return Promise; + } + /** + * @param { GameEvent } event + * @returns { Promise & GameEvent } + */ + constructor(event) { + super(resolve => { + // 设置为异步事件 + event.async = true; + // 事件结束后触发resolve + event.resolve = resolve; + // 如果父级事件也是一个异步的话,那应该立即执行这个事件的 + // 如果在AsyncFunction执行过程中在别的位置新建了一个异步事件,那也直接(等会set配置完)执行 + if (_status.event.next.includes(event) && _status.event.content instanceof AsyncFunction) { + if (_status.event != event) { + event.parent = _status.event; + _status.event = event; + game.getGlobalHistory("everything").push(event); + } + // 异步执行game.loop + // 不直接game.loop(event)是因为需要让别人可以手动set()和setContent() + // 再执行game.loop是因为原有的game.loop被await卡住了, + // 得新执行一个只执行这个异步事件的game.loop + Promise.resolve().then(() => game.loop(event)); + } + }); + return new Proxy(this, { + get(target, prop, receiver) { + const thisValue = Reflect.get(target, prop); + if (thisValue) { + if (typeof thisValue == "function") { + return thisValue.bind(target); + } + return thisValue; + } + const eventValue = Reflect.get(event, prop); + // 返回值如果是event,则修改为GameEventPromise类实例 + if (typeof eventValue == "function") return (function (...args) { + const returnValue = eventValue.call(event, ...args); + return returnValue == event ? receiver : returnValue; + }).bind(event); + return eventValue; + }, + set(target, prop, newValue) { + return Reflect.set(event, prop, newValue); + }, + deleteProperty(target, prop) { + return Reflect.deleteProperty(event, prop); + }, + defineProperty(target, prop, attributes) { + return Reflect.defineProperty(event, prop, attributes); + }, + has(target, prop) { + return Reflect.has(event, prop); + }, + ownKeys(target, prop) { + return Reflect.ownKeys(event, prop); + }, + }); + } + /** + * TODO: 实现debugger + */ + async debugger() { + return new Promise(resolve => { + resolve(null); + }); + } +} diff --git a/noname/library/element/game-event.js b/noname/library/element/game-event.js index 40733c345..d9d4694d8 100644 --- a/noname/library/element/game-event.js +++ b/noname/library/element/game-event.js @@ -7,7 +7,7 @@ export class GameEvent { * @param {false} [trigger] */ constructor(name, trigger) { - if (typeof name == 'string') { + if (typeof name == "string") { this.name = name; const gameEvent = Get.event(); @@ -43,9 +43,799 @@ export class GameEvent { static initialGameEvent() { return (new this).finish(); } + /** + * @param {keyof this} key + * @param {number} [value] + * @param {number} [baseValue] + */ + addNumber(key, value, baseValue) { + if (typeof value != "number") value = 0; + if (typeof this[key] == "number") this[key] += value; + else { + if (typeof baseValue != "number") baseValue = 0; + this[key] = baseValue + value; + } + return this; + } + /** + * @param {keyof this} key + * @param {number} [baseValue] + */ + decrease(key, baseValue) { + if (typeof this[key] == "number") this[key]--; + else this.subtractNumber(key, 1, baseValue); + return this; + } + /** + * @param {keyof this} key + * @param {number} [baseValue] + */ + increase(key, baseValue) { + if (typeof this[key] == "number") this[key]++; + else this.addNumber(key, 1, baseValue); + return this; + } + /** + * @param {keyof this} key + * @param {number} [value] + * @param {number} [baseValue] + */ + subtractNumber(key, value, baseValue) { + if (typeof value != "number") value = 0; + if (typeof this[key] == "number") this[key] -= value; + else { + if (typeof baseValue != "number") baseValue = 0; + this[key] = baseValue - value; + } + return this; + } + /** + * @param {Parameters[0]} type + * @param {GameEvent} event + * @param {{ + * state?: "begin" | "end"; + * }} option + * @returns {this} + */ + callHandler(type, event, option) { + if (this.hasHandler(type)) this.getHandler(type).forEach(handler => { + if (typeof handler == "function") handler(event, option); + }); + return this; + } + getDefaultHandlerType() { + const eventName = this.name; + if (eventName) return `on${eventName[0].toUpperCase()}${eventName.slice(1)}`; + } + /** + * @param {Parameters[0]} [type] + * @returns {((event: GameEvent, option: { + * state?: "begin" | "end"; + * }) => void)[]} + */ + getHandler(type) { + if (!type) type = this.getDefaultHandlerType(); + const currentHandler = this[type]; + if (!currentHandler) this[type] = []; + else if (!Array.isArray(currentHandler)) this[type] = [currentHandler]; + return this[type]; + } + /** + * @param {`on${Capitalize}`} [type] + */ + hasHandler(type) { + if (!type) type = this.getDefaultHandlerType(); + return Boolean(this[type] && this.getHandler(type).length); + } + /** + * @overload + * @param {...((event: GameEvent, option: { + * state?: "begin" | "end"; + * }) => void)[]} handlers + * @returns {number} + */ + /** + * @overload + * @param {Parameters[0]} type + * @param {...((event: GameEvent, option: { + * state?: "begin" | "end"; + * }) => void)[]} handlers + * @returns {number} + */ + pushHandler(type) { + return typeof type == "string" ? this.getHandler(type).push(...Array.from(arguments).slice(1)) : this.getHandler().push(...arguments); + } + changeToZero() { + this.num = 0; + this.numFixed = true; + return this; + } finish() { this.finished = true; return this; } + putStepCache(key, value) { + if (!this._stepCache) { + this._stepCache = {}; + } + this._stepCache[key] = value; + return this; + } + getStepCache(key) { + if (!this._stepCache) return undefined; + return this._stepCache[key]; + } + clearStepCache(key) { + if (key !== undefined && key !== null) { + delete this._stepCache[key]; + } + delete this._stepCache; + return this; + } + callFuncUseStepCache(prefix, func, params) { + if (typeof func != "function") return; + if (_status.closeStepCache) return func.apply(null, params); + var cacheKey = "[" + prefix + "]" + get.paramToCacheKey.apply(null, params); + var ret = this.getStepCache(cacheKey); + if (ret === undefined || ret === null) { + ret = func.apply(null, params); + this.putStepCache(cacheKey, ret); + } + return ret; + } + putTempCache(key1, key2, value) { + if (!this._tempCache) { + this._tempCache = {}; + } + if (!this._tempCache[key1]) { + this._tempCache[key1] = {}; + } + this._tempCache[key1][key2] = value; + return value; + } + getTempCache(key1, key2) { + if (!this._tempCache) { + return undefined; + } + if (!this._tempCache[key1]) { + return undefined; + } + return this._tempCache[key1][key2]; + } + cancel(arg1, arg2, notrigger) { + this.untrigger(arg1, arg2); + this.finish(); + if (notrigger != "notrigger") { + this.trigger(this.name + "Cancelled"); + if (this.player && lib.phaseName.contains(this.name)) this.player.getHistory("skipped").add(this.name); + } + return this; + } + neutralize(event) { + this.untrigger(); + this.finish(); + this._neutralized = true; + this.trigger("eventNeutralized"); + this._neutralize_event = event || _status.event; + return this; + } + unneutralize() { + this.untrigger(); + delete this._neutralized; + delete this.finished; + if (this.type == "card" && this.card && this.name == "sha") this.directHit = true; + return this; + } + goto(step) { + this.step = step - 1; + return this; + } + redo() { + this.step--; + return this; + } + setHiddenSkill(skill) { + if (!this.player) return this; + var hidden = this.player.hiddenSkills.slice(0); + game.expandSkills(hidden); + if (hidden.contains(skill)) this.set("hsskill", skill); + return this; + } + set(key, value) { + if (arguments.length == 1 && Array.isArray(arguments[0])) { + for (var i = 0; i < arguments[0].length; i++) { + if (Array.isArray(arguments[0][i])) { + this.set(arguments[0][i][0], arguments[0][i][1]); + } + } + } + else { + if (typeof key != "string") { + console.log("warning: using non-string object as event key"); + console.log(key, value); + console.log(_status.event); + } + this[key] = value; + this._set.push([key, value]); + } + return this; + } + /** + * @param {ArrayLike | Function | keyof typeof lib.element.content} item + */ + setContent(item) { + switch (typeof item) { + case "object": + case "function": + if (item instanceof AsyncFunction) { + this.content = item; + } + else this.content = lib.init.parsex(item); + break; + default: + try { + if (!lib.element.content[item]._parsed) { + lib.element.content[item] = lib.init.parsex(lib.element.content[item]); + lib.element.content[item]._parsed = true; + } + } + catch (_) { + throw new Error(`Content ${item} may not exist.\nlib.element.content[${item}] = ${lib.element.content[item]}`); + } + this.content = lib.element.content[item]; + break; + } + return this; + } + getLogv() { + for (var i = 1; i <= 3; i++) { + var event = this.getParent(i); + if (event && event.logvid) return event.logvid; + } + return null; + } + send() { + this.player.send(function (name, args, set, event, skills) { + game.me.applySkills(skills); + var next = game.me[name].apply(game.me, args); + for (var i = 0; i < set.length; i++) { + next.set(set[i][0], set[i][1]); + } + if (next._backupevent) { + next.backup(next._backupevent); + } + next._modparent = event; + game.resume(); + }, this.name, this._args || [], this._set, + get.stringifiedResult(this.parent), get.skillState(this.player)); + this.player.wait(); + game.pause(); + return this; + } + resume() { + delete this._cardChoice; + delete this._targetChoice; + delete this._skillChoice; + return this; + } + getParent(level, forced) { + var parent, historys = []; + if (this._modparent && game.online) { + parent = this._modparent; + } + else { + parent = this.parent; + } + var toreturn = {}; + if (typeof level == "string" && forced == true) { + toreturn = null; + } + if (!parent) return toreturn; + if (typeof level == "number") { + for (var i = 1; i < level; i++) { + if (!parent) return toreturn; + parent = parent.parent; + } + } + else if (typeof level == "string") { + while (true) { + if (!parent) return toreturn; + historys.push(parent); + if (parent.name == level) return parent; + parent = parent.parent; + if (historys.contains(parent)) return toreturn; + } + } + if (toreturn === null) { + return null; + } + return parent; + } + getTrigger() { + return this.getParent()._trigger; + } + getRand(name) { + if (name) { + if (!this._rand_map) this._rand_map = {}; + if (!this._rand_map[name]) this._rand_map[name] = Math.random(); + return this._rand_map[name]; + } + if (!this._rand) this._rand = Math.random(); + return this._rand; + } + insert(content, map) { + const next = new lib.element.GameEvent(`${this.name}Inserted`, false); + this.next.push(next); + next.setContent(content); + Object.entries(map).forEach(entry => next.set(entry[0], entry[1])); + return next; + } + insertAfter(content, map) { + const next = new lib.element.GameEvent(`${this.name}Inserted`, false); + this.after.push(next); + next.setContent(content); + Object.entries(map).forEach(entry => next.set(entry[0], entry[1])); + return next; + } + backup(skill) { + this._backup = { + filterButton: this.filterButton, + selectButton: this.selectButton, + filterTarget: this.filterTarget, + selectTarget: this.selectTarget, + filterCard: this.filterCard, + selectCard: this.selectCard, + position: this.position, + forced: this.forced, + fakeforce: this.fakeforce, + _aiexclude: this._aiexclude, + complexSelect: this.complexSelect, + complexCard: this.complexCard, + complexTarget: this.complexTarget, + _cardChoice: this._cardChoice, + _targetChoice: this._targetChoice, + _skillChoice: this._skillChoice, + ai1: this.ai1, + ai2: this.ai2, + filterOk: this.filterOk, + } + if (skill) { + var info = get.info(skill); + this.skill = skill; + this._aiexclude = []; + if (typeof info.viewAs == "function") { + if (info.filterButton != undefined) this.filterButton = get.filter(info.filterButton); + if (info.selectButton != undefined) this.selectButton = info.selectButton; + if (info.filterTarget != undefined) this.filterTarget = get.filter(info.filterTarget); + if (info.selectTarget != undefined) this.selectTarget = info.selectTarget; + if (info.filterCard != undefined) { + if (info.ignoreMod) this.ignoreMod = true; + this.filterCard2 = get.filter(info.filterCard); + this.filterCard = function (card, player, event) { + var evt = event || _status.event; + if (!evt.ignoreMod && player) { + var mod = game.checkMod(card, player, "unchanged", "cardEnabled2", player); + if (mod != "unchanged") return mod; + } + return get.filter(evt.filterCard2).apply(this, arguments); + }; + } + if (info.filterOk == undefined) { + this.filterOk = function () { + var evt = _status.event; + var card = get.card(), player = get.player(); + var filter = evt._backup.filterCard; + if (filter && !filter(card, player, evt)) return false; + if (evt._backup.filterOk) return evt._backup.filterOk(); + return true; + }; + } + else this.filterOk = info.filterOk; + if (info.selectCard != undefined) this.selectCard = info.selectCard; + if (info.position != undefined) this.position = info.position; + //if(info.forced!=undefined) this.forced=info.forced; + if (info.complexSelect != undefined) this.complexSelect = info.complexSelect; + if (info.complexCard != undefined) this.complexCard = info.complexCard; + if (info.complexTarget != undefined) this.complexTarget = info.complexTarget; + if (info.ai1 != undefined) this.ai1 = info.ai1; + if (info.ai2 != undefined) this.ai2 = info.ai2; + } + else if (info.viewAs) { + if (info.filterButton != undefined) this.filterButton = get.filter(info.filterButton); + if (info.selectButton != undefined) this.selectButton = info.selectButton; + if (info.filterTarget != undefined) this.filterTarget = get.filter(info.filterTarget); + if (info.selectTarget != undefined) this.selectTarget = info.selectTarget; + if (info.filterCard != undefined) { + if (info.ignoreMod) this.ignoreMod = true; + this.filterCard2 = get.filter(info.filterCard); + this.filterCard = function (card, player, event) { + var evt = event || _status.event; + if (!evt.ignoreMod && player) { + var mod = game.checkMod(card, player, "unchanged", "cardEnabled2", player); + if (mod != "unchanged") return mod; + } + return get.filter(evt.filterCard2).apply(this, arguments); + }; + } + if (info.filterOk == undefined) { + this.filterOk = function () { + var evt = _status.event; + var card = get.card(), player = get.player(); + var filter = evt._backup.filterCard; + if (filter && !filter(card, player, evt)) return false; + if (evt._backup.filterOk) return evt._backup.filterOk() + return true; + }; + } + else this.filterOk = info.filterOk; + if (info.selectCard != undefined) this.selectCard = info.selectCard; + if (info.position != undefined) this.position = info.position; + //if(info.forced!=undefined) this.forced=info.forced; + if (info.complexSelect != undefined) this.complexSelect = info.complexSelect; + if (info.complexCard != undefined) this.complexCard = info.complexCard; + if (info.complexTarget != undefined) this.complexTarget = info.complexTarget; + if (info.ai1 != undefined) this.ai1 = info.ai1; + if (info.ai2 != undefined) this.ai2 = info.ai2; + } + else { + this.filterButton = info.filterButton ? get.filter(info.filterButton) : undefined; + this.selectButton = info.selectButton; + this.filterTarget = info.filterTarget ? get.filter(info.filterTarget) : undefined; + this.selectTarget = info.selectTarget; + this.filterCard = info.filterCard ? get.filter(info.filterCard) : undefined; + this.selectCard = info.selectCard; + this.position = info.position; + //this.forced=info.forced; + this.complexSelect = info.complexSelect; + this.complexCard = info.complexCard; + this.complexTarget = info.complexTarget; + if (info.ai1 != undefined) this.ai1 = info.ai1; + if (info.ai2 != undefined) this.ai2 = info.ai2; + this.filterOk = info.filterOk; + } + delete this.fakeforce; + } + delete this._cardChoice; + delete this._targetChoice; + delete this._skillChoice; + return this; + } + restore() { + if (this._backup) { + this.filterButton = this._backup.filterButton; + this.selectButton = this._backup.selectButton; + this.filterTarget = this._backup.filterTarget; + this.selectTarget = this._backup.selectTarget; + this.filterCard = this._backup.filterCard; + this.selectCard = this._backup.selectCard; + this.position = this._backup.position; + this.forced = this._backup.forced; + this.fakeforce = this._backup.fakeforce; + this._aiexclude = this._backup._aiexclude; + this.complexSelect = this._backup.complexSelect; + this.complexCard = this._backup.complexCard; + this.complexTarget = this._backup.complexTarget; + this.ai1 = this._backup.ai1; + this.ai2 = this._backup.ai2; + this._cardChoice = this._backup._cardChoice; + this._targetChoice = this._backup._targetChoice; + this._skillChoice = this._backup._skillChoice; + this.filterOk = this._backup.filterOk; + } + delete this.skill; + delete this.ignoreMod; + delete this.filterCard2; + return this; + } + isMine() { + return (this.player && this.player == game.me && !_status.auto && !this.player.isMad() && !game.notMe); + } + isOnline() { + return (this.player && this.player.isOnline()); + } + notLink() { + return this.getParent().name != "_lianhuan" && this.getParent().name != "_lianhuan2"; + } + isPhaseUsing(player) { + var evt = this.getParent("phaseUse"); + if (!evt || evt.name != "phaseUse") return false; + return !player || player == evt.player; + } + addTrigger(skills, player) { + if (!player || !skills) return this; + let evt = this; + if (typeof skills == "string") skills = [skills]; + game.expandSkills(skills); + while (true) { + evt = evt.getParent("arrangeTrigger"); + if (!evt || evt.name != "arrangeTrigger" || !evt.doingList) return this; + const doing = (() => { + if (evt.doing && evt.doing.player == player) return evt.doing; + return evt.doingList.find(i => i.player == player); + })(); + // if(!doing) return this; + const firstDo = evt.doingList.find(i => i.player == "firstDo"); + const lastDo = evt.doingList.find(i => i.player == "lastDo"); + + for (const skill of skills) { + const info = lib.skill[skill]; + if (!info.trigger) continue; + if (!Object.keys(info.trigger).some(i => { + if (Array.isArray(info.trigger[i])) return info.trigger[i].includes(evt.triggername); + return info.trigger[i] == evt.triggername; + })) continue; + + const playerMap = game.players.concat(game.dead).sortBySeat(evt.starter); + const priority = get.priority(skill); + const toadd = { + skill: skill, + player: player, + priority: priority, + } + const map = info.firstDo ? firstDo : info.lastDo ? lastDo : doing; + if (!map) continue; + if (map.doneList && map.doneList.some(i => i.skill == toadd.skill && i.player == toadd.player)) continue; + if (map.todoList.some(i => i.skill == toadd.skill && i.player == toadd.player)) continue; + map.todoList.add(toadd); + map.todoList.sort((a, b) => (b.priority - a.priority) || (playerMap.indexOf(a) - playerMap.indexOf(b))); + } + } + } + removeTrigger(skills, player) { + if (!player || !skills) return this; + let evt = this; + if (typeof skills == "string") skills = [skills]; + game.expandSkills(skills); + while (true) { + evt = evt.getParent("arrangeTrigger"); + if (!evt || evt.name != "arrangeTrigger" || !evt.doingList) return this; + const doing = (() => { + if (evt.doing && evt.doing.player == player) return evt.doing; + return evt.doingList.find(i => i.player == player); + })(); + // if(!doing) return this; + const firstDo = evt.doingList.find(i => i.player == "firstDo"); + const lastDo = evt.doingList.find(i => i.player == "lastDo"); + + for (const skill of skills) { + [doing, firstDo, lastDo].forEach(map => { + if (!map) return; + const toremove = map.todoList.filter(i => i.skill == skill && i.player == player); + if (toremove.length > 0) map.todoList.removeArray(toremove); + }); + } + } + } + trigger(name) { + if (_status.video) return this; + if ((this.name === "gain" || this.name === "lose") && !_status.gameDrawed) return this; + if (name === "gameDrawEnd") _status.gameDrawed = true; + if (name === "gameStart") { + lib.announce.publish("gameStart", {}); + if (_status.brawl && _status.brawl.gameStart) _status.brawl.gameStart(); + if (lib.config.show_cardpile) ui.cardPileButton.style.display = ""; + _status.gameStarted = true; + game.showHistory(); + } + if (!lib.hookmap[name] && !lib.config.compatiblemode) return this; + if (!game.players || !game.players.length) return this; + const event = this; + let start = [_status.currentPhase, event.source, event.player, game.me, game.players[0]].find(i => get.itemtype(i) == "player"); + if (!start) return this; + if (!game.players.includes(start) && !game.dead.includes(start)) start = game.findNext(start); + const firstDo = { + player: "firstDo", + todoList: [], + doneList: [], + } + const lastDo = { + player: "lastDo", + todoList: [], + doneList: [], + } + const doingList = []; + let allbool = false; + const roles = ["player", "source", "target", "global"]; + const playerMap = game.players.concat(game.dead).sortBySeat(start); + function addList(skill, player) { + if (this.listAdded[skill]) return; + this.listAdded[skill] = true; + if (player.forbiddenSkills[skill]) return; + if (player.disabledSkills[skill]) return; + + const info = lib.skill[skill]; + const list = info.firstDo ? firstDo.todoList : info.lastDo ? lastDo.todoList : this.todoList; + const priority = get.priority(skill); + list.push({ + skill: skill, + player: player, + priority: priority, + }); + if (typeof list.player == "string") list.sort((a, b) => (b.priority - a.priority) || (playerMap.indexOf(a) - playerMap.indexOf(b))); + else list.sort((a, b) => b.priority - a.priority); + allbool = true; + } + let player = start; + do { + const doing = { + player: player, + todoList: [], + doneList: [], + listAdded: {}, + addList: addList, + } + const notemp = player.skills.slice(); + for (const j in player.additionalSkills) { + if (!j.startsWith("hidden:")) notemp.addArray(player.additionalSkills[j]); + } + for (const skill in player.tempSkills) { + if (notemp.includes(skill)) continue; + const expire = player.tempSkills[skill]; + if (typeof expire === "function" && expire(event, player, name)) { + delete player.tempSkills[skill]; + player.removeSkill(skill); + } + else if (get.objtype(expire) === "object") { + for (const role of roles) { + if (role !== "global" && player !== event[role]) continue; + if (expire[role] === name || (Array.isArray(expire[role]) && expire[role].includes(name))) { + delete player.tempSkills[skill]; + player.removeSkill(skill); + } + } + } + } + if (lib.config.compatiblemode) { + let skills = player.getSkills("invisible").concat(lib.skill.global); + game.expandSkills(skills); + for (const skill of skills) { + const info = get.info(skill); + if (!info || !info.trigger) continue; + if (roles.some(role => { + if (info.trigger[role] === name) return true; + if (Array.isArray(info.trigger[role]) && info.trigger[role].includes(name)) return true; + })) doing.addList(skill, player); + } + } + else { + for (const role of roles) { + const globalTriggername = role + "_" + name; + if (lib.hook.globalskill[globalTriggername]) { + lib.hook.globalskill[globalTriggername].forEach(skill => doing.addList(skill, player)); + } + const triggername = player.playerid + "_" + role + "_" + name; + if (lib.hook[triggername]) { + lib.hook[triggername].forEach(skill => doing.addList(skill, player)); + } + } + } + delete doing.listAdded; + delete doing.addList; + doingList.push(doing); + player = player.nextSeat; + } while (player && player !== start) + doingList.unshift(firstDo); + doingList.push(lastDo); + // console.log(name,event.player,doingList.map(i=>({player:i.player,todoList:i.todoList.slice(),doneList:i.doneList.slice()}))) + + if (allbool) { + var next = game.createEvent("arrangeTrigger", false, event); + next.setContent("arrangeTrigger"); + next.doingList = doingList; + next._trigger = event; + next.triggername = name; + next.starter = start; + event._triggering = next; + } + return this; + } + untrigger(all, player) { + if (typeof all == "undefined") all = true; + var evt = this._triggering; + if (all) { + if (evt && evt.doingList) { + evt.doingList.forEach(doing => doing.todoList = []); + evt.list = []; + if (evt.doing) evt.doing.todoList = []; + } + this._triggered = 5; + } + else if (player) { + this._notrigger.add(player); + if (!evt || !evt.doingList) return this; + const doing = evt.doingList.find(doing => doing.player == player); + if (doing) doing.todoList = []; + } + return this; + } + /** + * @returns {never} + */ + typeAnnotation() { + /** + * @type {Player} + */ + this.source; + /** + * @type {Player} + */ + this.player; + /** + * @type {Player} + */ + this.target; + /** + * @type {Player[]} + */ + this.targets; + /** + * @type {Card} + */ + this.card; + /** + * @type {Card[]} + */ + this.cards; + /** + * @type {string} + */ + this.skill; + /** + * @type {boolean} + */ + this.forced; + /** + * @type {number} + */ + this.num; + /** + * @type {GameEvent} + */ + this._trigger; + /** + * @type {Record} + */ + this._result; + /** + * @type {number} + */ + this.baseDamage; + /** + * @type {Player} + */ + this.customSource; + /** + * @type {number} + */ + this.extraDamage; + /** + * @type {string} + */ + this.nature; + /** + * @type {boolean} + */ + this.notrigger; + /** + * @type {number} + */ + this.original_num; + /** + * @type {boolean} + */ + this.unreal; + throw new Error("Do not call this method"); + } + /** + * 事件转为Promise化 + * + * @returns { Promise & GameEvent } + */ + toPromise() { + if (this.async && this.resolve) { + throw new TypeError("This event has been converted into a promise"); + } + return new lib.element.GameEventPromise(this); + } } diff --git a/noname/library/element/node-ws.js b/noname/library/element/node-ws.js new file mode 100644 index 000000000..9a16ee9ca --- /dev/null +++ b/noname/library/element/node-ws.js @@ -0,0 +1,17 @@ +export class NodeWS { + /** + * @param {string} id + */ + constructor(id) { + this.wsid = id; + } + send(message) { + game.send("server", "send", this.wsid, message); + } + on(type, func) { + this["on" + type] = func; + } + close() { + game.send("server", "close", this.wsid); + } +} diff --git a/noname/library/element/player.js b/noname/library/element/player.js index c5810f777..c6092efd0 100644 --- a/noname/library/element/player.js +++ b/noname/library/element/player.js @@ -1 +1,9436 @@ -export class Player { } +export class Player { + /** + * @param {HTMLDivElement} [position] + * @param {true} [noclick] + */ + constructor(position, noclick) { + /** + * @type {Player} + */ + const player = ui.create.div(".player", position); + Object.setPrototypeOf(player, lib.element.Player.prototype); + player.build(noclick); + return player; + } + build(noclick) { + let player = this; + player.buildNode(); + player.buildProperty(); + player.buildExtra(); + player.buildEventListener(noclick); + } + buildNode() { + let player = this; + const node = player.node = { + avatar: ui.create.div(".avatar", player, ui.click.avatar).hide(), + avatar2: ui.create.div(".avatar2", player, ui.click.avatar2).hide(), + turnedover: ui.create.div(".turned", "
    翻面
    ", player), + framebg: ui.create.div(".framebg", player), + intro: ui.create.div(".intro", player), + identity: ui.create.div(".identity", player), + hp: ui.create.div(".hp", player), + name: ui.create.div(".name", player), + name2: ui.create.div(".name.name2", player), + nameol: ui.create.div(".nameol", player), + count: ui.create.div(".count", player).hide(), + equips: ui.create.div(".equips", player).hide(), + judges: ui.create.div(".judges", player), + marks: ui.create.div(".marks", player), + chain: ui.create.div(".chain", "
    ", player), + handcards1: ui.create.div(".handcards"), + handcards2: ui.create.div(".handcards"), + expansions: ui.create.div(".expansions") + }; + node.expansions.style.display = "none"; + const chainLength = game.layout == "default" ? 64 : 40; + for (let repetition = 0; repetition < chainLength; repetition++) { + ui.create.div(node.chain.firstChild, ".cardbg").style.transform = `translateX(${repetition * 5 - 5}px)`; + } + node.action = ui.create.div(".action", node.avatar); + } + buildExtra() { + let player = this; + let node = player.node; + node.link = player.mark(" ", { + mark: get.linkintro + }); + node.link.firstChild.setBackgroundImage("image/card/tiesuo_mark.png"); + node.link.firstChild.style.backgroundSize = "cover"; + ui.create.div(node.identity); + } + buildProperty() { + let player = this; + player.phaseNumber = 0; + player.skipList = []; + player.skills = []; + player.invisibleSkills = []; + player.initedSkills = []; + player.additionalSkills = {}; + player.disabledSkills = {}; + player.hiddenSkills = []; + player.awakenedSkills = []; + player.forbiddenSkills = {}; + player.popups = []; + player.damagepopups = []; + player.judging = []; + player.stat = [{ + card: {}, + skill: {} + }]; + player.actionHistory = [{ + useCard: [], + respond: [], + skipped: [], + lose: [], + gain: [], + sourceDamage: [], + damage: [], + custom: [], + useSkill: [] + }]; + player.tempSkills = {}; + player.storage = {}; + player.marks = {}; + player.expandedSlots = {}; + player.disabledSlots = {}; + player.ai = { + friend: [], + enemy: [], + neutral: [], + handcards: { + global: [], + source: [], + viewed: [] + } + }; + player.queueCount = 0; + player.outCount = 0; + /** + * 这部分应该用d.ts写。目前只给出大概类型 + * @type { {[key in keyof Player]: (...args) => Promise & GameEvent} } + */ + player.promises = new Proxy({}, { + get(target, prop) { + const eventKeys = Object.keys(lib.element.player).filter(key => typeof lib.element.player[key] == "function"); + if (eventKeys.includes(prop)) { + return function (...args) { + /** @type { GameEvent } */ + const event = player[prop](...args); + return event.toPromise(); + }; + } + } + }); + } + buildEventListener(noclick) { + let player = this; + let node = player.node; + if (noclick) player.noclick = true; + else { + player.addEventListener(lib.config.touchscreen ? "touchend" : "click", ui.click.target); + node.identity.addEventListener(lib.config.touchscreen ? "touchend" : "click", ui.click.identity); + if (lib.config.touchscreen) player.addEventListener("touchstart", ui.click.playertouchstart); + } + } + //新函数 + changeFury(amount, limit) { + if (typeof this.storage.stratagem_fury != "number") this.storage.stratagem_fury = 0; + if (!amount) return; + const furyBefore = this.storage.stratagem_fury; + if (limit === true && typeof _status.stratagemFuryMax == "number") this.storage.stratagem_fury = Math.min(Math.max(furyBefore + amount, 0), _status.stratagemFuryMax); + else this.storage.stratagem_fury = Math.max(furyBefore + amount, 0); + const difference = this.storage.stratagem_fury - furyBefore; + if (!difference) return; + game.log(this, difference > 0 ? "获得了" : "失去了", get.cnNumber(Math.abs(difference)), "点", "#r怒气"); + this.markSkill("stratagem_fury"); + } + /** + * version 1.7 + * + * 链式创建一次性技能的api。 + * + * 使用者只需要关注技能的效果,而不是技能的本身。 + * + * v1.7 可传递作用域 + * @example + * ```js + * (function () { + * let _var = 1; + * let me = player; + * player.when("drawAfter") + * .apply(code => eval(code)) + * .then(() => console.log(_var)) + * .then("me.gainMaxHp(5)"); + * })(); + * ``` + */ + when() { + if (!_status.postReconnect.player_when) _status.postReconnect.player_when = [ + function (map) { + "use strict"; + for (let i in map) { + lib.skill[i] = { + charlotte: true, + forced: true, + popup: false, + } + if (typeof map[i] == "string") lib.translate[i] = map[i]; + } + }, {} + ]; + let triggerNames = Array.from(arguments); + let trigger; + if (triggerNames.length == 0) throw "player.when的参数数量应大于0"; + //add other triggerNames + //arguments.length = 1 + if (triggerNames.length == 1) { + //以下两种情况: + //triggerNames = [ ["xxAfter", ...args] ] + //triggerNames = [ "xxAfter" ] + if (Array.isArray(triggerNames[0]) || typeof triggerNames[0] == "string") trigger = { player: triggerNames[0] }; + //triggerNames = [ {player:"xxx"} ] + else if (get.is.object(triggerNames[0])) trigger = triggerNames[0]; + } + //arguments.length > 1 + else { + //triggerNames = [ "xxAfter", "yyBegin" ] + if (triggerNames.every(t => typeof t == "string")) trigger = { player: triggerNames }; + //triggerNames = [ {player: "xxAfter"}, {global: "yyBegin"} ] + //此处不做特殊的合并处理,由使用者自行把握,同名属性后者覆盖前者 + else if (triggerNames.every(t => get.is.object(t))) trigger = triggerNames.reduce((pre, cur) => Object.assign(pre, cur)); + } + if (!trigger) throw "player.when传参数类型错误:" + triggerNames; + let skillName; + do { + skillName = "player_when_" + Math.random().toString(36).slice(-8); + } while (lib.skill[skillName] != null); + const after = `${skillName}After`; + if (!trigger.player) trigger.player = after; + else if (Array.isArray(trigger.player)) trigger.player.add(after); + else if (typeof trigger.player == "string") trigger.player = [trigger.player, after]; + const vars = {}; + /** + * 作用域 + * @type { (code: string) => any } + */ + let scope; + let skill = { + trigger: trigger, + forced: true, + charlotte: true, + popup: false, + //必要条件 + filterFuns: [], + //充分条件 + filter2Funs: [], + contentFuns: [], + //外部变量 + get vars() { + return vars; + }, + get filter() { + return (event, player, name) => { + if (name == `${skillName}After`) { + skill.popup = false; + return true; + } + return skill.filterFuns.every(fun => Boolean(fun(event, player, name))) && + skill.filter2(event, player, name); + } + }, + get filter2() { + return (event, player, name) => { + return skill.filter2Funs.length == 0 || + skill.filter2Funs.some(fun => Boolean(fun(event, player, name))); + }; + } + }; + const warnVars = ["event", "step", "source", "player", "target", "targets", + "card", "cards", "skill", "forced", "num", "trigger", "result"]; + const errVars = ["_status", "lib", "game", "ui", "get", "ai"]; + const createContent = () => { + let varstr = ""; + for (const key in vars) { + if (warnVars.includes(key)) console.warn(`Variable "${key}" should not be referenced by vars objects`); + if (errVars.includes(key)) throw new Error(`Variable "${key}" should not be referenced by vars objects`); + varstr += `var ${key}=lib.skill["${skillName}"].vars["${key}"];\n`; + } + let str = ` + function content(){ + ${varstr}if(event.triggername=="${skillName}After"){ + player.removeSkill("${skillName}"); + delete lib.skill["${skillName}"]; + delete lib.translate["${skillName}"]; + return event.finish(); + } + `; + for (let i = 0; i < skill.contentFuns.length; i++) { + const fun2 = skill.contentFuns[i]; + const a = fun2.toString(); + //防止传入()=>xxx的情况 + const begin = a.indexOf("{") == a.indexOf("}") && a.indexOf("{") == -1 && a.indexOf("=>") > -1 ? a.indexOf("=>") + 2 : a.indexOf("{") + 1; + const str2 = a.slice(begin, a.lastIndexOf("}") != -1 ? a.lastIndexOf("}") : undefined).trim(); + str += `"step ${i}"\n\t${str2}\n\t`; + } + skill.content = lib.init.parsex((scope || eval)(str + `\n};content;`), scope); + skill.content._parsed = true; + }; + Object.defineProperty(lib.skill, skillName, { + configurable: true, + //这类技能不需要被遍历到 + enumerable: false, + writable: true, + value: skill + }); + game.broadcast(function (skillName) { + Object.defineProperty(lib.skill, skillName, { + configurable: true, + enumerable: false, + writable: true, + value: { + forced: true, + charlotte: true, + popup: false, + vars: {}, + } + }); + }, skillName); + this.addSkill(skillName); + _status.postReconnect.player_when[1][skillName] = true; + return { + filter(fun) { + if (lib.skill[skillName] != skill) throw `This skill has been destroyed`; + skill.filterFuns.push(fun); + return this; + }, + removeFilter(fun) { + if (lib.skill[skillName] != skill) throw `This skill has been destroyed`; + skill.filterFuns.remove(fun); + return this; + }, + filter2(fun) { + if (lib.skill[skillName] != skill) throw `This skill has been destroyed`; + skill.filter2Funs.push(fun); + return this; + }, + removeFilter2(fun) { + if (lib.skill[skillName] != skill) throw `This skill has been destroyed`; + skill.filter2Funs.remove(fun); + return this; + }, + then(fun) { + if (lib.skill[skillName] != skill) throw `This skill has been destroyed`; + skill.contentFuns.push(fun); + createContent(); + return this; + }, + popup(str) { + if (lib.skill[skillName] != skill) throw `This skill has been destroyed`; + if (typeof str == "string") skill.popup = str; + return this; + }, + translation(translation) { + if (lib.skill[skillName] != skill) throw `This skill has been destroyed`; + if (typeof translation == "string") { + _status.postReconnect.player_when[1][skillName] = translation; + game.broadcastAll((skillName, translation) => lib.translate[skillName] = translation, skillName, translation) + } + return this; + }, + assign(obj) { + if (lib.skill[skillName] != skill) throw `This skill has been destroyed`; + if (typeof obj == "object" && obj !== null) Object.assign(skill, obj); + return this; + }, + vars(arg) { + if (lib.skill[skillName] != skill) throw `This skill has been destroyed`; + if (!get.is.object(arg)) throw "vars的第一个参数必须为对象"; + Object.assign(vars, arg); + createContent(); + return this; + }, + /** + * 传递外部作用域 + * + * 一般是传递一个 code=>eval(code) 函数 + * + * 传递后可在then中使用外部变量(vars的上位替代) + * + * @param {Function} _scope + */ + apply(_scope) { + if (lib.skill[skillName] != skill) throw `This skill has been destroyed`; + scope = _scope; + if (skill.contentFuns.length > 0) createContent(); + return this; + } + }; + } + //让一名角色明置一些手牌 + addShownCards() { + const cards = [], tags = []; + for (const argument of arguments) { + const type = get.itemtype(argument); + if (type == "cards") cards.addArray(argument); + else if (type == "card") cards.add(argument); + else if (typeof argument == "string" && argument.startsWith("visible_")) tags.add(argument); + } + if (!cards.length || !tags.length) return; + const next = game.createEvent("addShownCards", false); + next.player = this; + next._cards = cards; + next.gaintag = tags; + next.setContent("addShownCards"); + return next; + } + hideShownCards() { + const cards = [], tags = []; + for (const argument of arguments) { + const type = get.itemtype(argument); + if (type == "cards") cards.addArray(argument); + else if (type == "card") cards.add(argument); + else if (typeof argument == "string" && argument.startsWith("visible_")) tags.add(argument); + } + if (!cards.length) return; + const next = game.createEvent("hideShownCards", false); + next.player = this; + next._cards = cards; + next.gaintag = tags; + next.setContent("hideShownCards"); + return next; + } + //获取角色所有的明置手牌 + getShownCards() { + return this.getCards("h", function (card) { + return get.is.shownCard(card); + }); + } + //获取该角色被other所知的牌。 + getKnownCards(other, filter) { + if (!other) other = _status.event.player; + if (!other) other = this; + if (!filter) filter = (card) => { return true }; + return this.getCards("h", function (card) { + return card.isKnownBy(other) && filter(card); + }); + } + //判断此角色的手牌是否已经被看光了。 + isAllCardsKnown(other) { + if (!other) other = _status.event.player; + if (!other) other = this; + return this.countCards("h", function (card) { + return !card.isKnownBy(other); + }) == 0; + } + //判断此角色是否有被知的牌。 + hasKnownCards(other, filter) { + if (!other) other = _status.event.player; + if (!other) other = this; + if (!filter) filter = (card) => { return true }; + return this.countCards("h", function (card) { + return card.isKnownBy(other) && filter(card); + }) > 0; + } + //数此角色被知道的牌。 + countKnownCards(other, filter) { + return this.getKnownCards(other, filter).length; + } + //Execute the delay card effect + //执行延时锦囊牌效果 + executeDelayCardEffect(card, target, judge, judge2) { + const executeDelayCardEffect = game.createEvent("executeDelayCardEffect"); + executeDelayCardEffect.player = this; + executeDelayCardEffect.target = target || this; + if (typeof card == "string") { + const virtualCard = executeDelayCardEffect.card = ui.create.card(); + virtualCard._destroy = true; + virtualCard.expired = true; + const info = lib.card[card]; + virtualCard.init(["", "", card, info && info.cardnature]); + } + else if (get.itemtype(card) == "card") executeDelayCardEffect.card = card; + else _status.event.next.remove(executeDelayCardEffect); + executeDelayCardEffect.judge = judge; + executeDelayCardEffect.judge2 = judge2; + executeDelayCardEffect.setContent("executeDelayCardEffect"); + executeDelayCardEffect._args = Array.from(arguments); + return executeDelayCardEffect; + } + //Check if the card does not count toward hand limit + //检测此牌是否不计入手牌上限 + canIgnoreHandcard(card) { + return lib.filter.ignoredHandcard(card, this); + } + //Gift + //赠予 + gift(cards, target) { + const gift = game.createEvent("gift"); + gift.player = this; + gift.target = target; + const isArray = Array.isArray(cards); + if (cards && !isArray) gift.cards = [cards]; + else if (isArray && cards.length) gift.cards = cards; + else _status.event.next.remove(gift); + gift.deniedGifts = []; + gift.setContent("gift"); + gift._args = Array.from(arguments); + return gift; + } + //Check if the player can gift the card + //检测角色是否能赠予此牌 + canGift(card, target, strict) { + return lib.filter.cardGiftable(card, this, target, strict); + } + //Check if the player refuses gifts + //检测角色是否拒绝赠予 + refuseGifts(card, player) { + return this.hasSkillTag("refuseGifts", null, { + player: player, + card: card + }); + } + //Gift AI related + //赠予AI相关 + getGiftAIResultTarget(card, target) { + if (!card || target.refuseGifts(card, this)) return 0; + if (get.type(card, false) == "equip") return get.effect(target, card, target, target); + if (card.name == "du") return this.hp > target.hp ? -1 : 0; + if (target.hasSkillTag("nogain")) return 0; + return Math.max(1, get.value(card, this) - get.value(card, target)); + } + getGiftEffect(card, target) { + return this.getGiftAIResultTarget(card, target) * get.attitude(this, target); + } + //Recast + //重铸 + recast(cards, recastingLose, recastingGain) { + const recast = game.createEvent("recast"); + recast.player = this; + const isArray = Array.isArray(cards); + if (cards && !isArray) recast.cards = [cards]; + else if (isArray && cards.length) recast.cards = cards; + else _status.event.next.remove(recast); + if (typeof recastingLose != "function") recastingLose = (player, cards) => player.loseToDiscardpile(cards).log = false; + recast.recastingLose = recastingLose; + recast.recastingLosingEvents = []; + if (typeof recastingGain != "function") recastingGain = (player, cards) => player.draw(cards.length).log = false; + recast.recastingGain = recastingGain; + recast.recastingGainingEvents = []; + recast.setContent("recast"); + recast._args = Array.from(arguments); + return recast; + } + //Check if the player can recast the card + //检测角色是否能重铸此牌 + canRecast(card, source, strict) { + return lib.filter.cardRecastable(card, this, source, strict); + } + //装备栏相关 + //判断一名角色的某个区域是否被废除 + //type为要判断的区域 若为空 则判断玩家是否有任意一个被废除的区域 + hasDisabledSlot(type) { + var player = this; + if (type == "horse" || type == "equip3_4") { + return player.hasDisabledSlot(3) && (get.is.mountCombined() || player.hasDisabledSlot(4)); + } + else if (get.is.mountCombined() && type == "equip4") { + return false; + } + return player.countDisabledSlot(type) > 0; + } + //判断一名角色的某个区域被废除的数量 + //用法同上 + countDisabledSlot(type) { + var player = this; + var map = (player.disabledSlots || {}); + if (type == undefined) { + num = 0; + for (var i = 1; i <= 5; i++) { + num += player.countDisabledSlot(i); + } + return num; + } + else { + if (typeof type == "number") type = ("equip" + type); + if (get.is.mountCombined() && type == "equip4") { + return 0; + } + var num = map[type]; + if (typeof num == "number" && num > 0) return num; + return 0; + } + } + //判断一名角色是否有某个装备栏空着 + hasEmptySlot(type) { + var player = this; + if (type == "horse" || type == "equip3_4") { + return player.hasEmptySlot(3) && (get.is.mountCombined() || player.hasEmptySlot(4)); + } + else if (get.is.mountCombined() && type == "equip4") { + return false; + } + return player.countEmptySlot(type) > 0; + } + //判断一名角色的某个装备栏空位的数量 + countEmptySlot(type) { + if (!type) return 0; + var player = this; + if (typeof type == "number") type = ("equip" + type); + else if (type == "equip3_4") { + type = "equip3"; + } + return Math.max(0, player.countEnabledSlot(type) - player.getEquips(type).reduce(function (num, card) { + var types = get.subtypes(card, false); + return num + get.numOf(types, type); + }, 0)) + } + //判断一名角色是否有可以用于装备新装备牌的区域(排除金箍棒和六龙等“不可被替换装备”) + //用法同下 + hasEquipableSlot(type) { + return this.countEquipableSlot(type) > 0; + } + //统计一名角色有多少个可以用于装备新的装备牌的区域 + //用法同下 + countEquipableSlot(type) { + if (!type) return 0; + var player = this; + if (typeof type == "number") type = ("equip" + type); + else if (type == "equip3_4") { + type = "equip3"; + } + else if (get.is.mountCombined() && type == "equip4") { + return 0; + } + return Math.max(0, player.countEnabledSlot(type) - player.getEquips(type).reduce(function (num, card) { + var types = get.subtypes(card, false); + if (!lib.filter.canBeReplaced(card, player)) num += get.numOf(types, type); + return num; + }, 0)) + } + //判断一名角色是否拥有未被废除的某个区域 + //type为要判断的区域 若为空 则判断玩家是否有任意一个未被废除的区域 + hasEnabledSlot(type) { + var player = this; + if (type == "horse" || type == "equip3_4") { + return player.hasEnabledSlot(3) && (get.is.mountCombined() || player.hasEnabledSlot(4)); + } + // else if(type=="equip3_4"){ + // type="equip3"; + // } + else if (get.is.mountCombined() && type == "equip4") { + return false; + } + return player.countEnabledSlot(type) > 0; + } + //判断一名角色的某个区域未被废除的数量 + //用法同上 + countEnabledSlot(type) { + var player = this; + var map = (player.expandedSlots || {}); + if (!type) { + num = 0; + for (var i = 1; i <= 5; i++) { + num += player.countEnabledSlot(i); + } + return num; + } + else { + if (typeof type == "number") type = ("equip" + type); + if (get.is.mountCombined() && type == "equip4") { + return 0; + } + var slots = 1; + var num = map[type]; + if (typeof num == "number" && num > 0) slots += num; + slots -= player.countDisabledSlot(type); + return slots; + } + } + //获取一名角色装备区内某种类型的装备牌 + //参数可以为数字/区域字符串/实体牌/虚拟牌/牌名 + getEquips(subtype) { + var type = (typeof subtype); + switch (type) { + case "string": + if (subtype == "equip3_4") { + const cards = []; + cards.addArray(this.getEquips(3)); + cards.addArray(this.getEquips(4)); + return cards; + } + else if (subtype.startsWith("equip") && parseInt(subtype.slice(5)) > 0) { + break; + } + else if (lib.card[subtype]) { + return this.getCards("e", card => card.name == subtype); + } + else return []; + case "number": + subtype = "equip" + subtype; + break; + case "object": + subtype = get.subtype(subtype, false); + break; + default: + return []; + } + if (!subtype) return []; + return this.getCards("e", function (card) { + return get.subtypes(card, false).contains(subtype); + }) + } + //新的废除装备区/恢复装备区/扩展装备区 + //参数:废除来源角色(不写默认当前事件角色),废除区域(数字/区域字符串/数组,可以写多个,重复废除) + disableEquip() { + var next = game.createEvent("disableEquip"); + next.player = this; + next.slots = []; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (Array.isArray(arguments[i])) { + for (var arg of arguments[i]) { + if (typeof arg == "string") { + if (arg.startsWith("equip") && parseInt(arg.slice(5)) > 0) next.slots.push(arg); + } + else if (typeof arg == "number") { + next.slots.push("equip" + arg); + } + } + } + else if (typeof arguments[i] == "string") { + if (arguments[i].startsWith("equip") && parseInt(arguments[i].slice(5)) > 0) next.slots.push(arguments[i]); + } + else if (typeof arguments[i] == "number") { + next.slots.push("equip" + arguments[i]); + } + } + if (!next.source) next.source = _status.event.player; + if (!next.slots.length) { + _status.event.next.remove(next); + } + next.setContent("disableEquip"); + return next; + } + enableEquip() { + var next = game.createEvent("enableEquip"); + next.player = this; + next.slots = []; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (Array.isArray(arguments[i])) { + for (var arg of arguments[i]) { + if (typeof arg == "string") { + if (arg.startsWith("equip") && parseInt(arg.slice(5)) > 0) next.slots.push(arg); + } + else if (typeof arg == "number") { + next.slots.push("equip" + arg); + } + } + } + else if (typeof arguments[i] == "string") { + if (arguments[i].startsWith("equip") && parseInt(arguments[i].slice(5)) > 0) next.slots.push(arguments[i]); + } + else if (typeof arguments[i] == "number") { + next.slots.push("equip" + arguments[i]); + } + } + if (!next.source) next.source = _status.event.player; + if (!next.slots.length) { + _status.event.next.remove(next); + } + next.setContent("enableEquip"); + return next; + } + expandEquip() { + var next = game.createEvent("expandEquip"); + next.player = this; + next.slots = []; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (Array.isArray(arguments[i])) { + for (var arg of arguments[i]) { + if (typeof arg == "string") { + if (arg.startsWith("equip") && parseInt(arg.slice(5)) > 0) next.slots.push(arg); + } + else if (typeof arg == "number") { + next.slots.push("equip" + arg); + } + } + } + else if (typeof arguments[i] == "string") { + if (arguments[i].startsWith("equip") && parseInt(arguments[i].slice(5)) > 0) next.slots.push(arguments[i]); + } + else if (typeof arguments[i] == "number") { + next.slots.push("equip" + arguments[i]); + } + } + if (!next.source) next.source = _status.event.player; + if (!next.slots.length) { + _status.event.next.remove(next); + } + next.setContent("expandEquip"); + return next; + } + //判断判定区是否被废除 + isDisabledJudge() { + return Boolean(this.storage._disableJudge); + } + //同步显示扩展装备区状态 + $syncExpand(map) { + var player = this; + if (!map) { + map = (player.expandedSlots || {}); + } + game.addVideo("$syncExpand", player, get.copy(map)) + game.broadcast(function (player, map) { + player.expandedSlots = map; + player.$syncExpand(map); + }, player, map); + player.markSkill("expandedSlots"); + } + //同步装备区废除牌显示状态 + $syncDisable(map) { + const player = this; + const suits = { equip3: "+1马栏", equip4: "-1马栏", equip6: "特殊栏" }; + if (get.is.mountCombined()) suits.equip3 = "坐骑栏"; + if (!map) { + map = (player.disabledSlots || {}); + } + game.addVideo("$syncDisable", player, get.copy(map)) + game.broadcast(function (player, map) { + player.disabledSlots = map; + player.$syncDisable(map); + }, player, map) + const map2 = get.copy(map); + const cards = Array.from(player.node.equips.childNodes); + for (const card of cards) { + if (card.name.startsWith("feichu_")) { + const index = card.name.slice(7); + if (!map2[index]) map2[index] = 0; + map2[index]--; + } + } + for (const index in map2) { + if (!index.startsWith("equip") || !(parseInt(index.slice(5)) > 0)) continue; + const num = map2[index]; + if (num > 0) { + for (let i = 0; i < num; i++) { + const card = game.createCard("feichu_" + index, (suits[index] || (get.translation(index) + "栏")), ""); + card.fix(); + card.style.transform = ""; + card.classList.remove("drawinghidden"); + card.classList.add("feichu"); + delete card._transform; + const equipNum = get.equipNum(card); + let equipped = false; + for (let j = 0; j < player.node.equips.childNodes.length; j++) { + if (get.equipNum(player.node.equips.childNodes[j]) >= equipNum) { + player.node.equips.insertBefore(card, player.node.equips.childNodes[j]); + equipped = true; + break; + } + } + if (!equipped) { + player.node.equips.appendChild(card); + if (_status.discarded) { + _status.discarded.remove(card); + } + } + } + } + else if (num < 0) { + for (let i = 0; i > num; i--) { + const card = cards.find(card => card.name == "feichu_" + index); + if (card) { + player.node.equips.removeChild(card); + cards.remove(card); + } + } + } + } + } + //以下函数涉及到本次更新内容而进行修改 + canEquip(name, replace) { + const ranges = get.subtypes(name), rangex = [], player = this, combined = get.is.mountCombined(); + if (combined) { + ranges.forEach(type => { + if (type == "equip3" || type == "equip4") rangex.add("equip3_4"); + else rangex.add(type) + }) + } + else { + rangex.push(...new Set(ranges)); + } + for (let range of rangex) { + let num = this.countEquipableSlot(range); + let num2 = get.numOf(rangex, range); + if (!replace) num -= this.getEquips(range).filter(card => lib.filter.canBeReplaced(card, player)).length; + if (num < num2) return false; + } + return true; + } + //以下函数将不再进行后续维护 + countDisabled() { + return this.countDisabledSlot.apply(this, arguments) + } + isDisabled(arg) { + return this.hasDisabledSlot(arg) && !this.hasEnabledSlot(arg); + } + isEmpty(num) { + return this.countEnabledSlot(num) > this.getEquips(num).length; + } + //以下函数将被废弃 + $disableEquip() { } + $enableEquip() { } + //装备区End + chooseToDebate() { + var next = game.createEvent("chooseToDebate"); + next.player = this; + next._args = []; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "players") { + next.list = arguments[i].slice(0); + } + else { + next._args.push(arguments[i]); + } + } + next.setContent("chooseToDebate"); + return next; + } + cooperationWith(target, type, reason) { + var player = this; + if (!player.storage.cooperation) player.storage.cooperation = []; + var info = { + target: target, + type: type, + reason: reason, + }; + player.storage.cooperation.add(info); + player.addTempSkill("cooperation", { player: "dieAfter" }); + player.addSkill("cooperation_" + type, { player: "dieAfter" }); + game.log(player, "向", target, "发起了“协力”,合作类型是", "#g" + get.translation("cooperation_" + type)); + } + chooseCooperationFor() { + var next = game.createEvent("chooseCooperationFor"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.target = arguments[i]; + } + else if (Array.isArray(arguments[i])) { + next.cardlist = arguments[i]; + } + else if (typeof arguments[i] == "string") { + next.reason = arguments[i]; + } + } + if (!next.cardlist) next.cardlist = ["cooperation_damage", "cooperation_draw", "cooperation_discard", "cooperation_use"]; + next.setContent("chooseCooperationFor"); + return next; + } + checkCooperationStatus(target, reason) { + var storage = this.getStorage("cooperation"); + for (var info of storage) { + if (info.target == target && info.reason == reason) { + var skill = lib.skill["cooperation_" + info.type]; + if (skill && skill.checkx && skill.checkx(info)) return true; + } + } + return false; + } + removeCooperation(info) { + var player = this; + var storage = player.getStorage("cooperation"); + if (!storage.contains(info)) return; + storage.remove(info); + var unmark = true, reason = info.type; + if (!storage.length) { + player.removeSkill("cooperation"); + } + else { + for (var i of storage) { + if (i.type == reason) { + unmark = false; + break; + } + } + } + if (unmark) player.removeSkill("cooperation_" + reason); + else player.markSkill("cooperation_" + reason); + } + hasClan(clan, unseen) { + if (unseen || !this.isUnseen(0)) { + var info = lib.character[this.name1]; + if (info && info[4]) { + for (var i of info[4]) { + if (typeof i == "string" && i.startsWith("clan:") && i.slice(5) == clan) return true; + } + } + } + if (this.name2 && (unseen || !this.isUnseen(1))) { + var info = lib.character[this.name2]; + if (info && info[4]) { + for (var i of info[4]) { + if (typeof i == "string" && i.startsWith("clan:") && i.slice(5) == clan) return true; + } + } + } + return false; + } + changeZhuanhuanji(skill) { + var player = this, info = get.info(skill), zhuanhuan = info.zhuanhuanji; + if (typeof zhuanhuan == "function") zhuanhuan(player, skill); + else if (zhuanhuan == "number") player.addMark(skill, 1, false); + else player.storage[skill] = !player.storage[skill]; + game.broadcastAll(function (player, skill) { + player.$changeZhuanhuanji(skill); + }, player, skill); + } + $changeZhuanhuanji(skill) { + var mark = this.marks[skill]; + if (mark) { + if (mark.firstChild.reversed) { + mark.firstChild.reversed = false; + mark.firstChild.style.transform = "none"; + } + else { + mark.firstChild.reversed = true; + mark.firstChild.style.transform = "rotate(180deg)"; + } + } + } + setSeatNum(num) { + _status.seatNumSettled = true; + game.broadcastAll(function (player, num) { + player.seatNum = num; + }, this, num); + } + getSeatNum() { + if (typeof this.seatNum == "number") return this.seatNum; + return 0; + } + hasSex(sex) { + if (this.sex == "unknown") return false; + if (this.sex == "double") return true; + return this.sex == sex; + } + sameSexAs(target) { + var sex1 = this.sex, sex2 = target.sex; + if (sex1 == "unknown" || sex2 == "unknown") return false; + if (sex1 == "double" || sex2 == "double") return true; + return sex1 == sex2; + } + differentSexFrom(target) { + var sex1 = this.sex, sex2 = target.sex; + if (sex1 == "unknown" || sex2 == "unknown") return false; + if (sex1 == "double" || sex2 == "double") return true; + return sex1 != sex2; + } + addSkillBlocker(skill) { + if (!this.storage.skill_blocker) this.storage.skill_blocker = []; + this.storage.skill_blocker.push(skill); + } + removeSkillBlocker(skill) { + if (this.storage.skill_blocker) { + this.storage.skill_blocker.remove(skill); + if (!this.storage.skill_blocker.length) delete this.storage.skill_blocker; + } + } + loseToSpecial(cards, tag, target) { + var next = game.loseAsync({ + player: this, + cards: cards, + tag: tag, + toStorage: true, + target: target || this, + }); + next.setContent(function () { + "step 0" + player.lose(cards, ui.special).set("getlx", false); + "step 1" + var cards = event.cards.slice(0); + cards.removeArray(player.getCards("hejsx")); + if (cards.length) target.directgains(cards, null, event.tag) + }); + return next; + } + addGaintag(cards, tag) { + if (get.itemtype(cards) == "card") cards = [cards]; + game.addVideo("addGaintag", this, [get.cardsInfo(cards), tag]); + game.broadcastAll(function (player, cards, tag) { + var hs = player.getCards("hejsx"); + for (var i of cards) { + if (hs.contains(i)) i.addGaintag(tag); + } + }, this, cards, tag); + } + removeGaintag(tag, cards) { + cards = cards || this.getCards("h"); + game.addVideo("removeGaintag", this, [tag, get.cardsInfo(cards)]); + game.broadcastAll(function (player, tag, cards) { + for (var i of cards) i.removeGaintag(tag); + }, this, tag, cards); + } + canSave(target) { + var player = this; + if (player.hasSkillTag("save", true, target, true)) return true; + var name = {}, hs = player.getCards("hs"); + for (var i of hs) name[get.name(i)] = true; + for (var i in lib.card) { + if (lib.card[i].savable && (lib.inpile.contains(i) || name[i])) { + if (lib.filter.cardSavable({ name: i }, player, target) && (_status.connectMode || player.hasUsableCard(i))) return true; + } + } + return false; + } + canSaveCard(card, target) { + var player = this; + var mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player); + if (mod2 != "unchanged") return mod2; + var mod = game.checkMod(card, player, target, "unchanged", "cardSavable", player); + if (mod != "unchanged") return mod; + var savable = get.info(card).savable; + if (typeof savable == "function") savable = savable(card, player, target); + return savable; + } + showCharacter(num, log) { + var toShow = []; + if ((num == 0 || num == 2) && this.isUnseen(0)) toShow.add(this.name1); + if ((num == 1 || num == 2) && this.isUnseen(1)) toShow.add(this.name2); + if (!toShow.length) return; + this.$showCharacter(num, log); + var next = game.createEvent("showCharacter", false); + next.player = this; + next.num = num; + next.toShow = toShow; + next._args = Array.from(arguments); + next.setContent("showCharacter"); + var evt = _status.event; + evt.next.remove(next); + if (evt.logSkill) evt = evt.getParent(); + evt.after.push(next); + return next; + } + $showCharacter(num, log) { + if (num == 0 && !this.isUnseen(0)) { + return; + } + if (num == 1 && (!this.name2 || !this.isUnseen(1))) { + return; + } + if (!this.isUnseen(2)) { + return; + } + game.addVideo("showCharacter", this, num); + var skills; + switch (num) { + case 0: + if (log !== false) game.log(this, "展示了主将", "#b" + this.name1); + this.name = this.name1; + skills = lib.character[this.name][3] || []; + this.sex = lib.character[this.name][0]; + if (this.group == "unknown") this.group = lib.character[this.name][1]; + this.classList.remove("unseen"); + break; + case 1: + if (log !== false) game.log(this, "展示了副将", "#b" + this.name2); + skills = lib.character[this.name2][3] || []; + if (this.sex == "unknown") this.sex = lib.character[this.name2][0]; + if (this.name.startsWith("unknown")) this.name = this.name2; + this.classList.remove("unseen2"); + break; + case 2: + if (log !== false) { + if (this.name2) game.log(this, "展示了主将", "#b" + this.name1, "、副将", "#b" + this.name2); + else game.log(this, "展示了主将", "#b" + this.name1); + } + this.name = this.name1; + var skills = (lib.character[this.name][3] || []); + if (this.name2) skills = skills.concat(lib.character[this.name2][3] || []); + this.sex = lib.character[this.name][0]; + if (this.group == "unknown") this.group = lib.character[this.name][1]; + this.classList.remove("unseen"); + this.classList.remove("unseen2"); + break; + } + if (!this.isUnseen(2)) { + delete this.storage.nohp; + this.hp = this.storage.rawHp + this.maxHp - 1; + this.maxHp = this.storage.rawMaxHp + this.maxHp - 1; + this.node.hp.show(); + this.update(); + } + game.broadcast(function (player, name, sex, num, group) { + player.group = group; + player.name = name; + player.sex = sex; + switch (num) { + case 0: player.classList.remove("unseen"); break; + case 1: player.classList.remove("unseen2"); break; + case 2: player.classList.remove("unseen"); player.classList.remove("unseen2"); break; + } + if (!player.isUnseen(2)) { + delete player.storage.nohp; + player.node.hp.show(); + player.update(); + } + }, this, this.name, this.sex, num, this.group); + skills = skills.filter(skill => { + var info = get.info(skill); + if (info && info.zhuSkill && !this.isZhu2()) return false; + return true; + }); + for (var i = 0; i < skills.length; i++) { + if (this.hiddenSkills.contains(skills[i])) { + this.hiddenSkills.remove(skills[i]); + this.addSkill(skills[i]); + } + } + this.checkConflict(); + } + chooseToPlayBeatmap(beatmap) { + var next = game.createEvent("chooseToPlayBeatmap"); + next.player = this; + next.beatmap = beatmap; + next._args = Array.from(arguments); + next.setContent("chooseToPlayBeatmap"); + return next; + } + chooseToMove() { + var next = game.createEvent("chooseToMove"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (typeof arguments[i] == "string") { + next.prompt = arguments[i]; + } + } + next.setContent("chooseToMove"); + next.filterOk = function () { return true }; + next.filterMove = function () { return true }; + return next; + } + chooseToGuanxing(num) { + var next = game.createEvent("chooseToGuanxing"); + next.num = num || 1; + next.player = this; + next.setContent("chooseToGuanxing"); + return next; + } + $throwEmotion(target, name, rotate) { + game.addVideo("throwEmotion", this, [target.dataset.position, name]); + var getLeft = function (player) { + if (player == game.me && !ui.fakeme && !ui.chess) return player.getLeft() + player.node.avatar.offsetWidth / 2; + return player.getLeft() + player.offsetWidth / 2; + } + var player = this; + var emotion = ui.create.div("", `
    `, game.chess ? ui.chess : ui.window); + emotion.style.width = "60px"; + emotion.style.height = "60px"; + var width = emotion.offsetWidth / 2; + var height = emotion.offsetHeight / 2; + if (game.chess) width += 60; + var left = getLeft(player) - width; + var top = player.getTop() + player.offsetHeight / 3 - height; + emotion.style.left = left + "px"; + emotion.style.top = top + "px"; + var left2 = getLeft(target) - width; + var top2 = target.getTop() + target.offsetHeight / 3 - height; + if (["egg", "flower", "shoe"].contains(name) || rotate) { + var num1 = 0.95 + Math.random() * (1.1 - 0.95); + var num2 = 1 + Math.random() * (3 - 1); + var left2 = getLeft(target) / num1 - width; + var top2 = target.getTop() + target.offsetHeight / num2 - height; + } + else { + var left2 = getLeft(target) - width; + var top2 = target.getTop() + target.offsetHeight / 3 - height; + } + emotion.style["z-index"] = 10; + emotion.style.transform = "translateY(" + (top2 - top) + "px) translateX(" + (left2 - left) + "px)"; + if (["egg", "flower", "shoe"].contains(name) || rotate) emotion.firstElementChild.style.transform = "rotate(1440deg)"; + if (lib.config.background_audio) game.playAudio("effect", "throw_" + name + get.rand(1, 2)); + setTimeout(function () { + emotion.innerHTML = `
    `; + setTimeout(function () { + emotion.delete(); + }, 1200); + }, 600); + } + tryJudgeAnimate(bool) { + var player = this; + game.broadcast(function (player, bool) { + player.trySkillAnimate(bool); + }, player, bool); + if (bool) this.popup("判定生效", "wood", false); + else this.popup("判定失效", "fire", false); + } + trySkillAnimate(name, popname, checkShow) { + if (!game.online && lib.config.skill_animation_type != "off" && lib.skill[name] && lib.skill[name].skillAnimation) { + if (lib.config.skill_animation_type == "default") { + checkShow = checkShow || "main"; + } + else { + checkShow = false; + } + if (lib.skill[name].textAnimation) { + checkShow = false; + } + this.$skill(lib.skill[name].animationStr || lib.translate[name], lib.skill[name].skillAnimation, lib.skill[name].animationColor, checkShow); + return; + } + var player = this; + game.broadcast(function (player, name, popname) { + player.trySkillAnimate(name, popname); + }, player, name, popname); + if (lib.animate.skill[name]) lib.animate.skill[name].apply(this, arguments); + else { + if (popname != name) this.popup(popname, "water", false); + else this.popup(get.skillTranslation(name, this), "water", false); + } + } + tryCardAnimate(card, name, nature, popname) { + var player = this; + game.broadcast(function (player, card, name, nature, popname) { + player.tryCardAnimate(card, name, nature, popname); + }, player, card, name, nature, popname); + if (lib.animate.card[card.name]) lib.animate.card[card.name].apply(this, arguments); + else { + if (!lib.config.show_card_prompt) return; + if (get.type(card) == "equip" && lib.config.hide_card_prompt_equip) return; + if (get.type(card) == "basic" && lib.config.hide_card_prompt_basic) return; + if (popname) player.popup({ name: card.name, nature: card.nature }, nature, false); + else player.popup(name, nature, false); + } + } + hasUsableCard(name) { + var player = this; + if (player.countCards("hs", name)) return true; + var skills = player.getSkills("invisible").concat(lib.skill.global); + game.expandSkills(skills); + for (var i = 0; i < skills.length; i++) { + var ifo = get.info(skills[i]); + if (ifo.viewAs && typeof ifo.viewAs != "function" && ifo.viewAs.name == name) { + if (!ifo.viewAsFilter || ifo.viewAsFilter(player) !== false) { + return true; + } + } + else { + var hiddenCard = get.info(skills[i]).hiddenCard; + if (typeof hiddenCard == "function" && hiddenCard(player, name)) { + return true; + } + } + } + } + inRange(to) { + var from = this; + if (from == to || from.hasSkill("undist") || to.hasSkill("undist")) return false; + if (!game.players.contains(from) && !game.dead.contains(from)) return false; + if (!game.players.contains(to) && !game.dead.contains(to)) return false; + var mod1 = game.checkMod(from, to, "unchanged", "inRange", from); + if (mod1 != "unchanged") return mod1; + var mod2 = game.checkMod(from, to, "unchanged", "inRangeOf", to); + if (mod2 != "unchanged") return mod2; + var range = from.getAttackRange(); + if (range < 1) return false; + var player = from, m, n = 1, i; + var fxy, txy; + if (game.chess) { + fxy = from.getXY(); + txy = to.getXY(); + n = Math.abs(fxy[0] - txy[0]) + Math.abs(fxy[1] - txy[1]); + } + else if (to.isMin(true) || from.isMin(true)) {/* empty */ } + else { + var length = game.players.length; + var totalPopulation = game.players.length + game.dead.length + 1; + for (var iwhile = 0; iwhile < totalPopulation; iwhile++) { + if (player.nextSeat != to) { + player = player.nextSeat; + if (player.isAlive() && !player.isOut() && !player.hasSkill("undist") && !player.isMin(true)) n++; + } + else { + break; + } + } + for (i = 0; i < game.players.length; i++) { + if (game.players[i].isOut() || game.players[i].hasSkill("undist") || game.players[i].isMin(true)) length--; + } + if (from.isDead()) length++; + if (to.isDead()) length++; + var left = from.hasSkillTag("left_hand"); + var right = from.hasSkillTag("right_hand"); + if (left === right) n = Math.min(n, length - n); + else if (left == true) n = length - n; + } + n = game.checkMod(from, to, n, "globalFrom", from); + n = game.checkMod(from, to, n, "globalTo", to); + m = n; + m = game.checkMod(from, to, m, "attackFrom", from); + m = game.checkMod(from, to, m, "attackTo", to); + var equips1 = from.getCards("e", function (card) { + return !ui.selected.cards || !ui.selected.cards.contains(card); + }), equips2 = to.getCards("e", function (card) { + return !ui.selected.cards || !ui.selected.cards.contains(card); + }); + for (i = 0; i < equips1.length; i++) { + var info = get.info(equips1[i]).distance; + if (!info) continue; + if (info.globalFrom) { + m += info.globalFrom; + n += info.globalFrom; + } + } + for (i = 0; i < equips2.length; i++) { + var info = get.info(equips2[i]).distance; + if (!info) continue; + if (info.globalTo) { + m += info.globalTo; + n += info.globalTo; + } + if (info.attaclTo) { + m += info.attaclTo; + } + } + return m <= range; + } + inRangeOf(source) { + return source.inRange(this); + } + //Get the player"s HP not less than 0. Set “raw” to true to get the player"s raw HP instead. + //获取角色的体力值。设置“raw”为true以获取角色的体力。 + getHp(raw) { + return raw ? this.hp : Math.max(0, this.hp); + } + //Set “raw” to true to get the player"s raw damaged HP instead. + //设置“raw”为true以获取角色已损失的体力。 + getDamagedHp(raw) { + return this.maxHp - this.getHp(raw); + } + changeGroup(group, log, broadcast) { + var next = game.createEvent("changeGroup"); + next.player = this; + next.log = true; + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; + if (lib.group.contains(arg)) { + next.group = arg; + } + else if (typeof arg === "boolean") { + next.log = arg; + } + else if (arg === "nobroadcast") { + next.broadcast = false; + } + } + next.setContent("changeGroup"); + return next; + } + chooseToDuiben(target) { + var next = game.createEvent("chooseToDuiben"); + next.player = this; + next.target = target; + next.setContent("chooseToDuiben"); + return next; + } + chooseToPSS(target) { + var next = game.createEvent("chooseToPSS"); + next.player = this; + next.target = target; + next.setContent("chooseToPSS"); + return next; + } + chooseToEnable() { + var next = game.createEvent("chooseToEnable"); + next.player = this; + next.setContent("chooseToEnable"); + return next; + } + chooseToDisable(horse) { + var next = game.createEvent("chooseToDisable"); + next.player = this; + if (horse) next.horse = true; + next.setContent("chooseToDisable"); + return next; + } + isPhaseUsing(notmeisok) { + if (!notmeisok && _status.currentPhase != this) return false; + return _status.event.name == "phaseUse" || _status.event.getParent("phaseUse").name == "phaseUse"; + } + swapEquip(target) { + var next = game.createEvent("swapEquip"); + next.player = this; + next.target = target; + next.setContent("swapEquip"); + return next; + } + canCompare(target) { + if (this == target) return false; + if (!this.countCards("h") || !target.countCards("h")) return false; + if (this.hasSkillTag("noCompareSource") || target.hasSkillTag("noCompareTarget")) return false; + return true; + } + $disableJudge() { + var player = this; + game.addVideo("$disableJudge", player); + player.storage._disableJudge = true; + var card = game.createCard("disable_judge", "", ""); + card.fix(); + card.classList.add("feichu"); + card.style.transform = ""; + card.classList.add("drawinghidden"); + player.node.judges.insertBefore(card, player.node.judges.firstChild); + ui.updatej(player); + } + $enableJudge() { + var player = this; + game.addVideo("$enableJudge", player); + player.storage._disableJudge = false; + for (var i = 0; i < player.node.judges.childNodes.length; i++) { + if (player.node.judges.childNodes[i].name == "disable_judge") { + player.node.judges.removeChild(player.node.judges.childNodes[i]); + break; + } + } + } + disableJudge() { + var next = game.createEvent("disableJudge"); + next.player = this; + next.source = _status.event.player; + next.setContent("disableJudge"); + return next; + } + enableJudge() { + var next = game.createEvent("enableJudge"); + next.player = this; + next.source = _status.event.player; + next.setContent("enableJudge"); + return next; + } + //原有函数 + init(character, character2, skill, update) { + if (typeof character == "string" && !lib.character[character]) { + lib.character[character] = get.character(character); + } + if (typeof character2 == "string" && !lib.character[character2]) { + lib.character[character2] = get.character(character2); + } + if (!lib.character[character]) return; + if (get.is.jun(character2)) { + var tmp = character; + character = character2; + character2 = tmp; + } + if (character2 == false) { + skill = false; + character2 = null; + } + var info = lib.character[character]; + if (!info) { + info = ["", "", 1, [], []]; + } + if (!info[4]) { + info[4] = []; + } + var skills = info[3].slice(0); + this.clearSkills(true); + + var hp1 = get.infoHp(info[2]); + var maxHp1 = get.infoMaxHp(info[2]); + var hujia1 = get.infoHujia(info[2]); + + this.name = character; + this.name1 = character; + this.tempname = []; + this.sex = info[0]; + this.group = info[1]; + this.hp = hp1; + this.maxHp = maxHp1; + this.hujia = hujia1; + this.node.intro.innerHTML = lib.config.intro; + this.node.name.dataset.nature = get.groupnature(this.group); + lib.setIntro(this); + this.node.name.innerHTML = get.slimName(character); + if (this.classList.contains("minskin") && this.node.name.querySelectorAll("br").length >= 4) { + this.node.name.classList.add("long"); + } + if (info[4].contains("hiddenSkill") && !this.noclick) { + if (!this.hiddenSkills) this.hiddenSkills = []; + this.hiddenSkills.addArray(skills); + skills = []; + this.name = "unknown"; + this.sex = "male"; + this.storage.nohp = true; + skills.add("g_hidden_ai"); + } + if (character2 && lib.character[character2]) { + var info2 = lib.character[character2]; + if (!info2) { + info2 = ["", "", 1, [], []]; + } + if (!info2[4]) { + info2[4] = []; + } + + this.name2 = character2; + var hp2 = get.infoHp(info2[2]); + var maxHp2 = get.infoMaxHp(info2[2]); + var hujia2 = get.infoHujia(info2[2]); + this.hujia += hujia2; + var double_hp; + if (_status.connectMode || get.mode() == "single") { + double_hp = "pingjun"; + } + else { + double_hp = get.config("double_hp"); + } + switch (double_hp) { + case "pingjun": { + this.maxHp = Math.floor((maxHp1 + maxHp2) / 2); + this.hp = Math.floor((hp1 + hp2) / 2); + this.singleHp = ((maxHp1 + maxHp2) % 2 === 1); + break; + } + case "zuidazhi": { + this.maxHp = Math.max(maxHp1, maxHp2); + this.hp = Math.max(hp1, hp2); + break; + } + case "zuixiaozhi": { + this.maxHp = Math.min(maxHp1, maxHp2); + this.hp = Math.min(hp1, hp2); + break; + } + case "zonghe": { + this.maxHp = maxHp1 + maxHp2; + this.hp = hp1 + hp2; + break; + } + default: { + this.maxHp = maxHp1 + maxHp2 - 3; + this.hp = hp1 + hp2 - 3; + } + } + if (info2[4].contains("hiddenSkill") && !this.noclick) { + if (!this.hiddenSkills) this.hiddenSkills = []; + this.hiddenSkills.addArray(info2[3]); + this.storage.nohp = true; + skills.add("g_hidden_ai"); + } + else skills = skills.concat(info2[3]); + } + if (this.storage.nohp) { + this.storage.rawHp = this.hp; + this.storage.rawMaxHp = this.maxHp; + this.hp = 1; + this.maxHp = 1; + this.node.hp.hide(); + } + if (skill != false) { + skills = skills.filter(skill => { + var info = get.info(skill); + if (info && info.zhuSkill && !this.isZhu2()) return false; + return true; + }); + for (var i = 0; i < skills.length; i++) { + this.addSkill(skills[i], null, true); + } + this.checkConflict(); + } + lib.group.add(this.group); + + this.$init(character, character2); + + if (this.inits) { + for (var i = 0; i < this.inits.length; i++) { + this.inits[i](this); + } + } + if (this._inits) { + for (var i = 0; i < this._inits.length; i++) { + this._inits[i](this); + } + } + if (update !== false) this.$update(); + return this; + } + $init(character, character2) { + this.classList.add("fullskin"); + var info = lib.character[character]; + if (!info) { + info = ["", "", 1, [], []]; + } + if (!info[4]) { + info[4] = []; + } + + if (!game.minskin && get.is.newLayout() && !info[4].contains("minskin")) { + this.classList.remove("minskin"); + this.node.avatar.setBackground(character, "character"); + } + else { + this.node.avatar.setBackground(character, "character"); + if (info[4].contains("minskin")) { + this.classList.add("minskin"); + } + else if (game.minskin) { + this.classList.add("minskin"); + } + else { + this.classList.remove("minskin"); + } + } + + this.node.avatar.show(); + this.node.count.show(); + this.node.equips.show(); + + this.node.intro.innerHTML = lib.config.intro; + this.node.name.dataset.nature = get.groupnature(this.group); + lib.setIntro(this); + this.node.name.innerHTML = get.slimName(character); + if (this.classList.contains("minskin") && this.node.name.querySelectorAll("br").length >= 4) { + this.node.name.classList.add("long"); + } + if (info[4].contains("hiddenSkill") && !this.noclick) { + this.classList.add(_status.video ? "unseen_v" : "unseen"); + if (!this.node.name_seat && !_status.video) { + this.node.name_seat = ui.create.div(".name.name_seat", get.verticalStr(get.translation(this.name)), this); + this.node.name_seat.dataset.nature = get.groupnature(this.group); + } + } + if (character2 && lib.character[character2]) { + var info2 = lib.character[character2]; + if (!info2) { + info2 = ["", "", 1, [], []]; + } + if (!info2[4]) { + info2[4] = []; + } + this.classList.add("fullskin2"); + this.node.avatar2.setBackground(character2, "character"); + this.node.avatar2.show(); + this.name2 = character2; + + this.node.count.classList.add("p2"); + if (info2[4].contains("hiddenSkill") && !this.noclick) { + this.classList.add(_status.video ? "unseen2_v" : "unseen2"); + } + this.node.name2.innerHTML = get.slimName(character2); + } + if (this.storage.nohp) { + this.node.hp.hide(); + } + + return this; + } + initOL(name, character) { + this.node.avatar.setBackground(character, "character"); + this.node.avatar.show(); + this.node.name.innerHTML = get.verticalStr(name); + this.nickname = name; + this.avatar = character; + this.node.nameol.innerHTML = ""; + if (lib.character[character]) this.sex = lib.character[character][0]; + } + uninitOL() { + this.node.avatar.hide(); + this.node.name.innerHTML = ""; + this.node.identity.firstChild.innerHTML = ""; + delete this.nickname; + delete this.avatar; + delete this.sex; + } + initRoom(info, info2) { + var str = ""; + this.serving = false; + if (!info || info == "server") { + this.roomempty = true; + str = "空房间"; + this.roomfull = false; + this.roomgaming = false; + this.version = null; + if (info == "server") { + this.serving = true; + } + } + else { + var config = info[2]; + this.key = info[4]; + this.roomempty = false; + str += get.modetrans(config); + str += " 模式 "; + for (var i = str.length; i < 11; i++) str += " "; + this.version = config.version; + if (config.gameStarted) { + str += `游戏中 `; + if (config.observe && config.observeReady && this.version == lib.versionOL) { + this.classList.remove("exclude"); + } + else { + this.classList.add("exclude"); + } + } + else { + str += `等待中 `; + if (this.version != lib.versionOL) { + this.classList.add("exclude"); + } + else { + this.classList.remove("exclude"); + } + } + this.maxHp = parseInt(config.number); + this.hp = Math.min(this.maxHp, info[3]); + if (this.hp < this.maxHp || config.gameStarted) str += ("人数:" + this.hp + "/" + this.maxHp); + else str += `人数:${this.hp}/${this.maxHp}`; + + str += (" (" + info[0].slice(0, 12) + " 的房间)"); + if (config.mode != "guozhan" && (config.mode != "doudizhu" || config.doudizhu_mode != "online")) { + str += "【"; + for (var i = 0; i < config.cardPack.length; i++) { + str += (get.translation(config.cardPack[i] + "_card_config").slice(0, 2)); + if (i < config.cardPack.length - 1) str += "+"; + } + str += "】"; + } + this.config = config; + if (this.hp == this.maxHp && !config.gameStarted) { + this.roomfull = true; + } + else { + this.roomfull = false; + } + if (config.gameStarted && (!config.observe || !config.observeReady)) { + this.roomgaming = true; + } + else { + this.roomgaming = false; + } + } + this.firstChild.innerHTML = str; + return this; + } + reinit(from, to, maxHp, online) { + var info1 = lib.character[from]; + var info2 = lib.character[to]; + var smooth = true, replaced = null; + if (maxHp == "nosmooth") { + smooth = false; + maxHp = null; + } + if (this.name2 == from) { + this.name2 = to; + } + else if (this.name == from || this.name1 == from) { + if (this.name1 == from) { + this.name1 = to; + } + if (!this.isUnseen(1)) { + this.name = to; + this.sex = info2[0]; + } + } + else { + return this; + } + if (online) { + return; + } + for (var i = 0; i < info1[3].length; i++) { + this.removeSkill(info1[3][i]); + } + for (var i = 0; i < info2[3].length; i++) { + var info = get.info(info2[3][i]); + if (info && info.zhuSkill && !this.isZhu2()) continue; + this.addSkill(info2[3][i]); + } + if (Array.isArray(maxHp)) { + this.maxHp = maxHp[1]; + this.hp = maxHp[0]; + } + else { + var num; + if (maxHp === false) { + num = 0; + } + else { + if (typeof maxHp != "number") { + maxHp = get.infoMaxHp(info2[2]); + } + num = maxHp - get.infoMaxHp(info1[2]); + } + if (typeof this.singleHp == "boolean") { + if (num % 2 != 0) { + if (this.singleHp) { + this.maxHp += (num + 1) / 2; + this.singleHp = false; + } + else { + this.maxHp += (num - 1) / 2; + this.singleHp = true; + if (!game.online) { + this.doubleDraw(); + } + } + } + else { + this.maxHp += num / 2; + } + } + else { + this.maxHp += num; + } + } + game.broadcast(function (player, from, to, skills) { + player.reinit(from, to, null, true); + player.applySkills(skills); + }, this, from, to, get.skillState(this)); + game.addVideo("reinit3", this, { + from: from, + to: to, + hp: this.maxHp, + avatar2: this.name2 == to + }); + + this.$reinit(from, to, maxHp, online); + this.update(); + } + $reinit(from, to, maxHp, online) { + var smooth = true; + if (maxHp == "nosmooth") { + smooth = false; + maxHp = null; + } + if (this.name2 == to) { + if (smooth) this.smoothAvatar(true); + this.node.avatar2.setBackground(to, "character"); + this.node.name2.innerHTML = get.slimName(to); + } + else if (this.name == to || this.name1 == to) { + if (smooth) this.smoothAvatar(false); + this.node.avatar.setBackground(to, "character"); + this.node.name.innerHTML = get.slimName(to); + + if (this == game.me && ui.fakeme) { + ui.fakeme.style.backgroundImage = this.node.avatar.style.backgroundImage; + } + } + } + uninit() { + this.expandedSlots = {}; + this.disabledSlots = {}; + + delete this.name; + delete this.name1; + delete this.tempname; + delete this.sex; + delete this.group; + delete this.hp; + delete this.maxHp; + delete this.hujia; + this.clearSkills(true); + + if (this.name2) { + delete this.singleHp; + delete this.name2; + } + for (var mark in this.marks) { + this.marks[mark].remove(); + } + ui.updatem(this); + + this.skipList = []; + this.skills = this.skills.filter(skill => { + return lib.skill[skill] && lib.skill[skill].superCharlotte; + }); + this.initedSkills = []; + this.additionalSkills = {}; + this.disabledSkills = {}; + this.hiddenSkills = []; + this.awakenedSkills = []; + this.forbiddenSkills = {}; + this.phaseNumber = 0; + this.stat = [{ card: {}, skill: {} }]; + this.tempSkills = {}; + this.storage = {}; + this.marks = {}; + this.ai = { friend: [], enemy: [], neutral: [] }; + + this.$uninit(); + + return this; + } + $uninit() { + this.$syncDisable(); + if (this.isDisabledJudge()) { + game.broadcastAll(function (player) { + player.storage._disableJudge = false; + for (var i = 0; i < player.node.judges.childNodes.length; i++) { + if (player.node.judges.childNodes[i].name == "disable_judge") { + player.node.judges.removeChild(player.node.judges.childNodes[i]); + break; + } + } + }, this); + } + this.node.avatar.hide(); + this.node.count.hide(); + if (this.node.wuxing) { + this.node.wuxing.hide(); + } + if (this.node.name_seat) { + this.node.name_seat.remove(); + delete this.node.name_seat; + } + this.node.hp.show(); + this.classList.remove("unseen"); + this.classList.remove("unseen2"); + + this.node.identity.style.backgroundColor = ""; + this.node.intro.innerHTML = ""; + this.node.name.innerHTML = ""; + this.node.hp.innerHTML = ""; + this.node.count.innerHTML = "0"; + + this.node.avatar2.hide(); + this.node.name2.innerHTML = ""; + this.classList.remove("fullskin2"); + this.node.count.classList.remove("p2"); + + for (var mark in this.marks) { + this.marks[mark].remove(); + } + ui.updatem(this); + } + getLeft() { + return this.offsetLeft; + } + getTop() { + return this.offsetTop; + } + smoothAvatar(vice, video) { + var div = ui.create.div(".fullsize"); + if (vice) { + div.style.background = getComputedStyle(this.node.avatar2).background; + this.node.avatar2.appendChild(div); + } + else { + div.style.background = getComputedStyle(this.node.avatar).background; + this.node.avatar.appendChild(div); + } + ui.refresh(div); + div.style.transition = "all 1s"; + setTimeout(function () { + div.classList.add("removing"); + setTimeout(function () { + div.remove(); + }, 2000); + }, 100); + if (video != false) { + game.addVideo("smoothAvatar", this, vice); + } + } + changeSeat(position, video) { + var player = this; + if (video !== false) game.addVideo("changeSeat", player, position); + var rect1 = player.getBoundingClientRect(); + player.style.transition = "all 0s"; + ui.refresh(player); + player.dataset.position = position; + var rect2 = player.getBoundingClientRect(); + var dx = rect1.left - rect2.left; + var dy = rect1.top - rect2.top; + if ((game.chess || (player.dataset.position != 0 && position != 0)) && player.classList.contains("linked")) { + player.style.transform = "rotate(-90deg) translate(" + (-dy) + "px," + (dx) + "px)"; + } + else { + player.style.transform = "translate(" + (dx) + "px," + (dy) + "px)"; + } + setTimeout(function () { + player.style.transition = ""; + ui.refresh(player); + player.style.transform = ""; + }, 100); + } + send() { + if (!this.ws || this.ws.closed) return this; + this.ws.send.apply(this.ws, arguments); + return this; + } + getId() { + if (_status.video || _status.connectMode) return this; + if (this.playerid) { + delete game.playerMap[this.playerid]; + } + this.playerid = get.id(); + game.playerMap[this.playerid] = this; + return this; + } + throwEmotion(target, emotion, rotate) { + game.broadcastAll(function (player, target, emotion, rotate) { + player.$throwEmotion(target, emotion, rotate); + }, this, target, emotion, rotate); + } + emotion(pack, id) { + var str = ``; + this.say(str); + game.broadcast(function (id, str) { + if (lib.playerOL[id]) { + lib.playerOL[id].say(str); + } + else if (game.connectPlayers) { + for (var i = 0; i < game.connectPlayers.length; i++) { + if (game.connectPlayers[i].playerid == id) { + game.connectPlayers[i].say(str); + return; + } + } + } + }, this.playerid, str); + } + chat(str) { + if (get.is.banWords(str)) return; + this.say(str); + game.broadcast(function (id, str) { + if (lib.playerOL[id]) { + lib.playerOL[id].say(str); + } + else if (game.connectPlayers) { + for (var i = 0; i < game.connectPlayers.length; i++) { + if (game.connectPlayers[i].playerid == id) { + game.connectPlayers[i].say(str); + return; + } + } + } + }, this.playerid, str); + } + say(str) { + str = str.replace(/##assetURL##/g, lib.assetURL); + var dialog = ui.create.dialog("hidden"); + dialog.classList.add("static"); + dialog.add(`
    ${str}
    `); + dialog.classList.add("popped"); + ui.window.appendChild(dialog); + var width = dialog.content.firstChild.firstChild.offsetWidth; + if (width < 190) { + dialog._mod_height = -16; + } + else { + dialog.content.firstChild.style.textAlign = "left"; + } + dialog.style.width = (width + 16) + "px"; + var refnode; + if (this.node && this.node.avatar && this.parentNode == ui.arena) { + refnode = this.node.avatar; + } + if (refnode) { + lib.placePoppedDialog(dialog, { + clientX: (ui.arena.offsetLeft + this.getLeft() + refnode.offsetLeft + refnode.offsetWidth / 2) * game.documentZoom, + clientY: (ui.arena.offsetTop + this.getTop() + refnode.offsetTop + refnode.offsetHeight / 4) * game.documentZoom + }); + } + else { + lib.placePoppedDialog(dialog, { + clientX: (this.getLeft() + this.offsetWidth / 2) * game.documentZoom, + clientY: (this.getTop() + this.offsetHeight / 4) * game.documentZoom + }); + } + if (dialog._mod_height) { + dialog.content.firstChild.style.padding = 0; + } + setTimeout(function () { + dialog.delete(); + }, lib.quickVoice.includes(str) ? 3800 : 2000); + var name = get.translation(this.name); + var info = [name ? (name + "[" + this.nickname + "]") : this.nickname, str]; + lib.chatHistory.push(info); + if (_status.addChatEntry) { + if (_status.addChatEntry._origin.parentNode) { + _status.addChatEntry(info, false); + } + else { + delete _status.addChatEntry; + } + } + if (lib.config.background_speak && lib.quickVoice.includes(str)) { + game.playAudio("voice", (this.sex == "female" ? "female" : "male"), lib.quickVoice.indexOf(str)); + } + } + showGiveup() { + this._giveUp = true; + if (this == game.me) { + ui.create.giveup(); + } + else if (this.isOnline2()) { + this.send(ui.create.giveup); + } + } + applySkills(skills) { + for (var i in skills) { + if (i == "global") { + lib.skill.global = skills[i]; + } + //else if(i=="skillinfo"){ + // for(var j in skills[i]){ + // if(!lib.skill[j]){ + // lib.skill[j]={}; + // } + // lib.skill[j].chooseButton=skills[i][j]; + // } + //} + else if (i == "stat") { + this.stat = [skills.stat]; + } + else if (lib.playerOL[i]) { + for (var j in skills[i]) { + lib.playerOL[i][j] = skills[i][j]; + } + } + } + } + getState() { + var state = { + hp: this.hp, + maxHp: this.maxHp, + nickname: this.nickname, + sex: this.sex, + group: this.group, + name: this.name, + name1: this.name1, + name2: this.name2, + handcards: this.getCards("hs"), + gaintag: [], + equips: this.getCards("e"), + judges: this.getCards("j"), + specials: this.getCards("s"), + expansions: this.getCards("x"), + expansion_gaintag: [], + disableJudge: this.isDisabledJudge(), + disabledSlots: this.disabledSlots, + expandedSlots: this.expandedSlots, + views: [], + position: parseInt(this.dataset.position), + hujia: this.hujia, + side: this.side, + identityShown: this.identityShown, + identityNode: [this.node.identity.innerHTML, this.node.identity.dataset.color], + identity: this.identity, + dead: this.isDead(), + linked: this.isLinked(), + turnedover: this.isTurnedOver(), + out: this.isOut(), + phaseNumber: this.phaseNumber, + unseen: this.isUnseen(0), + unseen2: this.isUnseen(1), + seatNum: this.seatNum, + } + for (var i = 0; i < state.judges.length; i++) { + state.views[i] = state.judges[i].viewAs; + } + for (var i = 0; i < state.handcards.length; i++) { + state.gaintag[i] = state.handcards[i].gaintag; + } + for (var i = 0; i < state.expansions.length; i++) { + state.expansion_gaintag[i] = state.expansions[i].gaintag; + } + if (this.getModeState) { + state.mode = this.getModeState(); + } + return state; + } + setNickname(str) { + this.node.nameol.innerHTML = (str || this.nickname || "").slice(0, 12); + return this; + } + setAvatar(name, name2, video, fakeme) { + var node; + if (this.name2 == name) { + node = this.node.avatar2; + this.smoothAvatar(true, video); + } + else if (this.name == name) { + node = this.node.avatar; + this.smoothAvatar(false, video); + } + if (node) { + node.setBackground(name2, "character"); + if (this == game.me && ui.fakeme && fakeme !== false) { + ui.fakeme.style.backgroundImage = node.style.backgroundImage; + } + if (video != false) { + game.addVideo("setAvatar", this, [name, name2]); + } + } + game.broadcast(function (player, name, name2) { + player.setAvatar(name, name2, false); + }, this, name, name2); + } + setAvatarQueue(name, list) { + var node; + var player = this; + if (player.name2 == name) { + node = player.node.avatar2; + } + else { + node = player.node.avatar; + } + if (node._avatarqueue) { + for (var i = 0; i < list.length; i++) { + node._avatarqueue.push(list[i]); + } + } + else { + var func = function () { + if (node._avatarqueue.length) { + player.setAvatar(name, node._avatarqueue.shift(), false, false); + } + else { + clearInterval(node._avatarqueueinterval); + delete node._avatarqueue; + delete node._avatarqueueinterval; + player.setAvatar(name, name, false, false); + } + }; + node._avatarqueue = list.slice(0); + node._avatarqueueinterval = setInterval(func, 1000); + func(); + } + game.addVideo("setAvatarQueue", this, [name, list]); + } + flashAvatar(skill, name) { + if (lib.skill[name] && !lib.character[name]) { + var stop = false; + var list = lib.config.all.characters.slice(0); + for (var i in lib.characterPack) { + list.add(i); + } + for (var i = 0; i < list.length; i++) { + for (var j in lib.characterPack[list[i]]) { + if (lib.characterPack[list[i]][j][3].contains(name)) { + name = j; + stop = true; + break; + } + } + if (stop) { + break; + } + } + } + if (lib.character[this.name2] && lib.character[this.name2][3].contains(skill)) { + this.setAvatarQueue(this.name2, [name]); + } + else { + this.setAvatarQueue(this.name, [name]); + } + } + update() { + if (_status.video && arguments.length == 0) return; + if (this.hp >= this.maxHp) this.hp = this.maxHp; + game.broadcast(function (player, hp, maxHp, hujia) { + player.hp = hp; + player.maxHp = maxHp; + player.hujia = hujia; + player.$update(); + }, this, this.hp, this.maxHp, this.hujia); + this.$update(...arguments); + } + $update() { + if (this.hp >= this.maxHp) this.hp = this.maxHp; + var hp = this.node.hp; + hp.style.transition = "none"; + if (!_status.video) { + if (this.hujia) { + this.markSkill("ghujia"); + } + else { + this.unmarkSkill("ghujia"); + } + } + if (!this.storage.nohp) { + if (this.maxHp == Infinity) { + hp.innerHTML = "∞"; + } + else if (game.layout == "default" && this.maxHp > 14) { + hp.innerHTML = this.hp + "/" + this.maxHp; + hp.classList.add("text"); + } + else if (get.is.newLayout() && + ( + this.maxHp > 9 || + (this.maxHp > 5 && this.classList.contains("minskin")) || + ((game.layout == "mobile" || game.layout == "long") && this.dataset.position == 0 && this.maxHp > 7) + )) { + hp.innerHTML = this.hp + "
    /
    " + this.maxHp + "
    "; + if (this.hp == 0) { + hp.lastChild.classList.add("lost"); + } + hp.classList.add("textstyle"); + // hp.classList.remove("long"); + } + else { + hp.innerHTML = ""; + hp.classList.remove("text"); + hp.classList.remove("textstyle"); + while (this.maxHp > hp.childNodes.length) { + ui.create.div(hp); + } + while (Math.max(0, this.maxHp) < hp.childNodes.length) { + hp.removeChild(hp.lastChild); + } + for (var i = 0; i < this.maxHp; i++) { + var index = i; + if (get.is.newLayout()) { + index = this.maxHp - i - 1; + } + if (i < this.hp) { + hp.childNodes[index].classList.remove("lost"); + } + else { + hp.childNodes[index].classList.add("lost"); + } + } + // if(this.maxHp==9){ + // hp.classList.add("long"); + // } + // else{ + // hp.classList.remove("long"); + // } + } + if (hp.classList.contains("room")) { + hp.dataset.condition = "high"; + } + else if (this.hp == 0) { + hp.dataset.condition = ""; + } + else if (this.hp > Math.round(this.maxHp / 2) || this.hp === this.maxHp) { + hp.dataset.condition = "high"; + } + else if (this.hp > Math.floor(this.maxHp / 3)) { + hp.dataset.condition = "mid"; + } + else { + hp.dataset.condition = "low"; + } + + setTimeout(function () { + hp.style.transition = ""; + }); + } + var numh = this.countCards("h"); + if (_status.video) { + numh = arguments[0]; + } + if (numh >= 10) { + numh = numh.toString(); + this.node.count.dataset.condition = "low"; + this.node.count.innerHTML = numh[0] + "
    " + numh[1]; + } + else { + if (numh > 5) { + this.node.count.dataset.condition = "higher"; + } + else if (numh > 2) { + this.node.count.dataset.condition = "high"; + } + else if (numh > 0) { + this.node.count.dataset.condition = "mid"; + } + else { + this.node.count.dataset.condition = "none"; + } + this.node.count.innerHTML = numh; + } + if (this.updates) { + for (var i = 0; i < this.updates.length; i++) { + this.updates[i](this); + } + } + if (!_status.video) { + game.addVideo("update", this, [this.countCards("h"), this.hp, this.maxHp, this.hujia]); + } + this.updateMarks(); + return this; + } + clearMark(i, log) { + let num = this.countMark(i); + if (num > 0) this.removeMark(i, num, log) + } + removeMark(i, num, log) { + if (typeof num != "number" || !num) num = 1; + if (typeof this.storage[i] != "number" || !this.storage[i]) return; + if (num > this.storage[i]) num = this.storage[i]; + this.storage[i] -= num; + if (log !== false) { + var str = false; + var info = get.info(i); + if (info && info.intro && (info.intro.name || info.intro.name2)) str = info.intro.name2 || info.intro.name; + else str = lib.translate[i]; + if (str) game.log(this, "移去了", get.cnNumber(num), "个", "#g【" + str + "】"); + } + this.syncStorage(i); + this[(this.storage[i] || (lib.skill[i] && lib.skill[i].mark)) ? "markSkill" : "unmarkSkill"](i); + } + addMark(i, num, log) { + if (typeof num != "number" || !num) num = 1; + if (typeof this.storage[i] != "number") this.storage[i] = 0; + this.storage[i] += num; + if (log !== false) { + var str = false; + var info = get.info(i); + if (info && info.intro && (info.intro.name || info.intro.name2)) str = info.intro.name2 || info.intro.name; + else str = lib.translate[i]; + if (str) game.log(this, "获得了", get.cnNumber(num), "个", "#g【" + str + "】"); + } + this.syncStorage(i); + this.markSkill(i); + } + setMark(name, num, log) { + const count = this.countMark(name); + if (count > num) this.removeMark(name, count - num, log); + else if (count < num) this.addMark(name, num - count, log); + } + countMark(i) { + if (this.storage[i] == undefined) return 0; + if (typeof this.storage[i] == "number") return this.storage[i]; + if (Array.isArray(this.storage[i])) return this.storage[i].length; + return 0; + } + hasMark(i) { + return this.countMark(i) > 0; + } + updateMark(i, storage) { + if (!this.marks[i]) { + if (lib.skill[i] && lib.skill[i].intro && (this.storage[i] || lib.skill[i].intro.markcount)) { + this.markSkill(i); + if (!this.marks[i]) return this; + } + else { + return this; + } + } + if (storage && this.storage[i]) { + this.syncStorage(i); + } + if (i == "ghujia" || ((!this.marks[i].querySelector(".image") || this.storage[i + "_markcount"]) && + lib.skill[i] && lib.skill[i].intro && !lib.skill[i].intro.nocount && + (this.storage[i] || this.storage[i + "_markcount"] || lib.skill[i].intro.markcount))) { + this.marks[i].classList.add("overflowmark") + var num = 0; + if (typeof lib.skill[i].intro.markcount == "function") { + num = lib.skill[i].intro.markcount(this.storage[i], this); + } + else if (lib.skill[i].intro.markcount == "expansion") { + num = this.countCards("x", (card) => card.hasGaintag(i)); + } + else if (typeof this.storage[i + "_markcount"] == "number") { + num = this.storage[i + "_markcount"]; + } + else if (i == "ghujia") { + num = this.hujia; + } + else if (typeof this.storage[i] == "number") { + num = this.storage[i]; + } + else if (Array.isArray(this.storage[i])) { + num = this.storage[i].length; + } + if (num) { + if (!this.marks[i].markcount) { + this.marks[i].markcount = ui.create.div(".markcount.menubutton", this.marks[i]); + } + this.marks[i].markcount.innerHTML = num; + } + else if (this.marks[i].markcount) { + this.marks[i].markcount.delete(); + delete this.marks[i].markcount; + } + } + else { + if (this.marks[i].markcount) { + this.marks[i].markcount.delete(); + delete this.marks[i].markcount; + } + if (lib.skill[i].mark == "auto") { + this.unmarkSkill(i); + } + } + return this; + } + updateMarks(connect) { + if (typeof connect == "string" && _status.connectMode && !game.online) { + game.broadcast(function (player, storage, skill) { + player.storage[skill] = storage; + player.updateMarks(); + }, this, this.storage[connect], connect); + } + for (var i in this.marks) { + this.updateMark(i); + } + } + num(arg1, arg2, arg3) { + if (get.itemtype(arg1) == "position") { + return this.get(arg1, arg2, arg3).length; + } + else if (arg1 == "s") { + if (typeof arg2 == "boolean") { + return game.expandSkills(this.getSkills(arg2).concat(lib.skill.global)).contains(arg3); + } + else { + return game.expandSkills(this.getSkills().concat(lib.skill.global)).contains(arg2); + } + } + } + line(target, config) { + if (get.itemtype(target) == "players") { + for (var i = 0; i < target.length; i++) { + this.line(target[i], config); + } + } + else if (get.itemtype(target) == "player") { + if (target == this) return; + game.broadcast(function (player, target, config) { + player.line(target, config); + }, this, target, config); + game.addVideo("line", this, [target.dataset.position, config]); + game.linexy([ + this.getLeft() + this.offsetWidth / 2, + this.getTop() + this.offsetHeight / 2, + target.getLeft() + target.offsetWidth / 2, + target.getTop() + target.offsetHeight / 2 + ], config, true); + } + } + line2(targets, config) { + this.line(targets[0], config); + targets = targets.slice(0); + for (var i = 1; i < targets.length; i++) { + (function (j) { + setTimeout(function () { + targets[j - 1].line(targets[j], config); + }, lib.config.duration * i); + }(i)); + } + } + getNext() { + if (this.hasSkill("undist")) return null; + var target = this; + for (var i = 0; i < game.players.length - 1; i++) { + target = target.next; + if (!target.hasSkill("undist")) { + return target; + } + } + return null; + } + getPrevious() { + if (this.hasSkill("undist")) return null; + var target = this; + for (var i = 0; i < game.players.length - 1; i++) { + target = target.previous; + if (!target.hasSkill("undist")) { + return target; + } + } + return null; + } + countUsed(card, type) { + if (type === true) { + var num = 0; + var history = this.getHistory("useCard"); + for (var i = 0; i < history.length; i++) { + if (!card) num++; + else if (typeof card == "string" && history[i].card && card == history[i].card.name) num++; + else if (typeof card == "object" && history[i].card && card.name == history[i].card.name) num++; + } + return num; + } + var num; + var stat = this.getStat("card"); + if (!card) { + num = 0; + for (var i in stat) { + if (typeof stat[i] == "number") num += stat[i]; + } + return num; + } + if (typeof card == "object") { + card = card.name; + } + num = stat[card]; + if (typeof num != "number") return 0; + return num; + } + countSkill(skill) { + var num = this.getStat("skill")[skill]; + if (num == undefined) return 0; + return num; + } + getStockSkills(unowned, unique, hidden) { + var list = []; + if (lib.character[this.name] && (hidden || !this.isUnseen(0))) { + list.addArray(lib.character[this.name][3]); + } + if (lib.character[this.name1] && (hidden || !this.isUnseen(0))) { + list.addArray(lib.character[this.name1][3]); + } + if (lib.character[this.name2] && (hidden || !this.isUnseen(1))) { + list.addArray(lib.character[this.name2][3]); + } + if (!unowned) { + for (var i = 0; i < list.length; i++) { + if (!this.hasSkill(list[i])) { + list.splice(i--, 1); + } + } + } + if (!unique) { + for (var i = 0; i < list.length; i++) { + var info = lib.skill[list[i]]; + if (!info || info.unique || info.temp || info.sub || info.charlotte) { + list.splice(i--, 1); + } + } + } + return list; + } + /** + * @param {string} [arg1="h"] + * @param {string | Record | (card: Card) => boolean} [arg2] + * @returns {Card[]} + */ + getCards(arg1, arg2) { + if (typeof arg1 != "string") { + arg1 = "h"; + } + var cards = [], cards1 = []; + var i, j; + for (i = 0; i < arg1.length; i++) { + if (arg1[i] == "h") { + for (j = 0; j < this.node.handcards1.childElementCount; j++) { + if (!this.node.handcards1.childNodes[j].classList.contains("removing") && !this.node.handcards1.childNodes[j].classList.contains("glows")) { + cards.push(this.node.handcards1.childNodes[j]); + } + } + for (j = 0; j < this.node.handcards2.childElementCount; j++) { + if (!this.node.handcards2.childNodes[j].classList.contains("removing") && !this.node.handcards2.childNodes[j].classList.contains("glows")) { + cards.push(this.node.handcards2.childNodes[j]); + } + } + } + else if (arg1[i] == "s") { + for (j = 0; j < this.node.handcards1.childElementCount; j++) { + if (!this.node.handcards1.childNodes[j].classList.contains("removing") && this.node.handcards1.childNodes[j].classList.contains("glows")) { + cards.push(this.node.handcards1.childNodes[j]); + } + } + for (j = 0; j < this.node.handcards2.childElementCount; j++) { + if (!this.node.handcards2.childNodes[j].classList.contains("removing") && this.node.handcards2.childNodes[j].classList.contains("glows")) { + cards.push(this.node.handcards2.childNodes[j]); + } + } + } + else if (arg1[i] == "e") { + for (j = 0; j < this.node.equips.childElementCount; j++) { + if (!this.node.equips.childNodes[j].classList.contains("removing") && !this.node.equips.childNodes[j].classList.contains("feichu")) { + cards.push(this.node.equips.childNodes[j]); + } + } + } + else if (arg1[i] == "j") { + for (j = 0; j < this.node.judges.childElementCount; j++) { + if (!this.node.judges.childNodes[j].classList.contains("removing") && !this.node.judges.childNodes[j].classList.contains("feichu")) { + cards.push(this.node.judges.childNodes[j]); + if (this.node.judges.childNodes[j].viewAs && arguments.length > 1) { + this.node.judges.childNodes[j].tempJudge = this.node.judges.childNodes[j].name; + this.node.judges.childNodes[j].name = this.node.judges.childNodes[j].viewAs; + cards1.push(this.node.judges.childNodes[j]); + } + } + } + } + else if (arg1[i] == "x") { + for (j = 0; j < this.node.expansions.childElementCount; j++) { + if (!this.node.expansions.childNodes[j].classList.contains("removing")) { + cards.push(this.node.expansions.childNodes[j]); + } + } + } + } + if (arguments.length == 1) { + return cards; + } + if (arg2) { + if (typeof arg2 == "string") { + for (i = 0; i < cards.length; i++) { + if (get.name(cards[i]) != arg2) { + cards.splice(i, 1); i--; + } + } + } + else if (typeof arg2 == "object") { + for (i = 0; i < cards.length; i++) { + for (j in arg2) { + var value; + if (j == "type" || j == "subtype" || j == "color" || j == "suit" || j == "number") { + value = get[j](cards[i]); + } + else { + value = cards[i][j]; + } + if ((typeof arg2[j] == "string" && value != arg2[j]) || + (Array.isArray(arg2[j]) && !arg2[j].contains(value))) { + cards.splice(i--, 1); break; + } + } + } + } + else if (typeof arg2 == "function") { + for (i = 0; i < cards.length; i++) { + if (!arg2(cards[i])) { + cards.splice(i--, 1); + } + } + } + } + for (i = 0; i < cards1.length; i++) { + if (cards1[i].tempJudge) { + cards1[i].name = cards1[i].tempJudge; + delete cards1[i].tempJudge; + } + } + return cards; + } + getDiscardableCards(player, arg1, arg2) { + var cards = this.getCards(arg1, arg2); + for (var i = 0; i < cards.length; i++) { + if (!lib.filter.canBeDiscarded(cards[i], player, this)) { + cards.splice(i--, 1); + } + } + return cards; + } + getGainableCards(player, arg1, arg2) { + var cards = this.getCards(arg1, arg2); + for (var i = 0; i < cards.length; i++) { + if (!lib.filter.canBeGained(cards[i], player, this)) { + cards.splice(i--, 1); + } + } + return cards; + } + getGainableSkills(func) { + var list = []; + var names = [this.name, this.name1, this.name2]; + for (var i = 0; i < names.length; i++) { + list.addArray(get.gainableSkillsName(names[i], func)); + } + return list; + } + countCards(arg1, arg2) { + return this.getCards(arg1, arg2).length; + } + countDiscardableCards(player, arg1, arg2) { + return this.getDiscardableCards(player, arg1, arg2).length; + } + countGainableCards(player, arg1, arg2) { + return this.getGainableCards(player, arg1, arg2).length; + } + getOriginalSkills() { + var skills = []; + if (lib.character[this.name] && !this.isUnseen(0)) { + skills.addArray(lib.character[this.name][3]); + } + if (this.name2 && lib.character[this.name2] && !this.isUnseen(1)) { + skills.addArray(lib.character[this.name2][3]); + } + return skills; + } + getModableSkills(useCache) { + var func = function (player) { + var skills = player.getSkills().concat(lib.skill.global); + game.expandSkills(skills); + skills = skills.filter(function (skill) { + var info = get.info(skill); + return info && info.mod; + }); + skills.sort((a, b) => get.priority(a) - get.priority(b)); + return skills; + }; + if (!useCache) return func(this); + return game.callFuncUseStepCache("player.getModableSkills", func, [this]); + } + getSkills(arg2, arg3, arg4) { + var skills = this.skills.slice(0); + var es = []; + var i, j; + if (arg3 !== false) { + for (i = 0; i < this.node.equips.childElementCount; i++) { + if (!this.node.equips.childNodes[i].classList.contains("removing")) { + var equipskills = get.info(this.node.equips.childNodes[i], false).skills; + if (equipskills) { + es.addArray(equipskills); + } + } + } + if (arg2 == "e") { + return es; + } + } + for (var i in this.additionalSkills) { + if (Array.isArray(this.additionalSkills[i]) && (arg2 || i.indexOf("hidden:") !== 0)) { + for (j = 0; j < this.additionalSkills[i].length; j++) { + if (this.additionalSkills[i][j]) { + skills.add(this.additionalSkills[i][j]); + } + } + } + else if (this.additionalSkills[i] && typeof this.additionalSkills[i] == "string") { + skills.add(this.additionalSkills[i]); + } + } + for (var i in this.tempSkills) { + skills.add(i); + } + if (arg2) skills.addArray(this.hiddenSkills); + if (arg2 === false || arg2 == "invisible") skills.addArray(this.invisibleSkills); + if (arg3 !== false) skills.addArray(es); + for (var i in this.forbiddenSkills) { + skills.remove(i); + } + if (arg4 !== false) { + skills = game.filterSkills(skills, this, es); + } + return skills; + } + get(arg1, arg2, arg3, arg4) { + var i, j; + if (arg1 == "s") { + var skills = this.skills.slice(0); + var es = []; + if (arg3 !== false) { + for (i = 0; i < this.node.equips.childElementCount; i++) { + if (!this.node.equips.childNodes[i].classList.contains("removing") && !this.node.equips.childNodes[i].classList.contains("feichu")) { + var equipskills = get.info(this.node.equips.childNodes[i]).skills; + if (equipskills) { + es.addArray(equipskills); + } + } + } + if (arg2 == "e") { + return es; + } + } + for (var i in this.additionalSkills) { + if (Array.isArray(this.additionalSkills[i])) { + for (j = 0; j < this.additionalSkills[i].length; j++) { + if (this.additionalSkills[i][j]) { + skills.add(this.additionalSkills[i][j]); + } + } + } + else if (this.additionalSkills[i] && typeof this.additionalSkills[i] == "string") { + skills.add(this.additionalSkills[i]); + } + } + for (var i in this.tempSkills) { + skills.add(i); + } + if (arg2) skills.addArray(this.hiddenSkills); + if (arg3 !== false) skills.addArray(es); + for (var i in this.forbiddenSkills) { + skills.remove(i); + } + if (arg4 !== false) { + skills = game.filterSkills(skills, this, es); + } + return skills; + } + else if (get.is.pos(arg1)) { + var cards = [], cards1 = []; + for (i = 0; i < arg1.length; i++) { + if (arg1[i] == "h") { + for (j = 0; j < this.node.handcards1.childElementCount; j++) { + if (!this.node.handcards1.childNodes[j].classList.contains("removing") && !this.node.handcards1.childNodes[j].classList.contains("feichu") && !this.node.handcards1.childNodes[j].classList.contains("glows")) { + cards.push(this.node.handcards1.childNodes[j]); + } + } + for (j = 0; j < this.node.handcards2.childElementCount; j++) { + if (!this.node.handcards2.childNodes[j].classList.contains("removing") && !this.node.handcards2.childNodes[j].classList.contains("feichu") && !this.node.handcards2.childNodes[j].classList.contains("glows")) { + cards.push(this.node.handcards2.childNodes[j]); + } + } + } + else if (arg1[i] == "e") { + for (j = 0; j < this.node.equips.childElementCount; j++) { + if (!this.node.equips.childNodes[j].classList.contains("removing") && !this.node.equips.childNodes[j].classList.contains("feichu")) { + cards.push(this.node.equips.childNodes[j]); + } + } + if (arguments.length == 2 && typeof arg2 == "string" && /1|2|3|4|5/.test(arg2)) { + for (j = 0; j < cards.length; j++) { + if (get.subtype(cards[j]) == "equip" + arg2) return cards[j]; + } + return; + } + } + else if (arg1[i] == "j") { + for (j = 0; j < this.node.judges.childElementCount; j++) { + if (!this.node.judges.childNodes[j].classList.contains("removing") && !this.node.judges.childNodes[j].classList.contains("feichu")) { + cards.push(this.node.judges.childNodes[j]); + if (this.node.judges.childNodes[j].viewAs && arguments.length > 1) { + this.node.judges.childNodes[j].tempJudge = this.node.judges.childNodes[j].name; + this.node.judges.childNodes[j].name = this.node.judges.childNodes[j].viewAs; + cards1.push(this.node.judges.childNodes[j]); + } + } + } + } + } + if (arguments.length == 1) { + return cards; + } + if (arg2 != undefined) { + if (typeof arg3 == "function") { + var cards2 = cards.slice(0); + cards.sort(function (a, b) { + return arg3(b, cards2) - arg3(a, cards2); + }); + } + if (typeof arg2 == "string") { + for (i = 0; i < cards.length; i++) { + if (cards[i].name != arg2) { + cards.splice(i, 1); i--; + } + } + } + else if (typeof arg2 == "object") { + for (i = 0; i < cards.length; i++) { + for (j in arg2) { + if (j == "type") { + if (typeof arg2[j] == "object") { + if (arg2[j].contains(get.type(cards[i])) == false) { + cards.splice(i, 1); i--; break; + } + } + else if (typeof arg2[j] == "string") { + if (get.type(cards[i]) != arg2[j]) { + cards.splice(i, 1); i--; break; + } + } + } + else if (j == "subtype") { + if (typeof arg2[j] == "object") { + if (arg2[j].contains(get.subtype(cards[i])) == false) { + cards.splice(i, 1); i--; break; + } + } + else if (typeof arg2[j] == "string") { + if (get.subtype(cards[i]) != arg2[j]) { + cards.splice(i, 1); i--; break; + } + } + } + else if (j == "color") { + if (typeof arg2[j] == "object") { + if (arg2[j].contains(get.color(cards[i])) == false) { + cards.splice(i, 1); i--; break; + } + } + else if (typeof arg2[j] == "string") { + if (get.color(cards[i]) != arg2[j]) { + cards.splice(i, 1); i--; break; + } + } + } + else if (j == "suit") { + if (typeof arg2[j] == "object") { + if (arg2[j].contains(get.suit(cards[i])) == false) { + cards.splice(i, 1); i--; break; + } + } + else if (typeof arg2[j] == "string") { + if (get.suit(cards[i]) != arg2[j]) { + cards.splice(i, 1); i--; break; + } + } + } + else if (j == "number") { + if (typeof arg2[j] == "object") { + if (arg2[j].contains(get.number(cards[i])) == false) { + cards.splice(i, 1); i--; break; + } + } + else if (typeof arg2[j] == "string") { + if (get.number(cards[i]) != arg2[j]) { + cards.splice(i, 1); i--; break; + } + } + } + else if (typeof arg2[j] == "object") { + if (arg2[j].contains(cards[i][j]) == false) { + cards.splice(i, 1); i--; break; + } + } + else if (typeof arg2[j] == "string") { + if (cards[i][j] != arg2[j]) { + cards.splice(i, 1); i--; break; + } + } + } + } + } + else if (typeof arg2 == "number" && arg2 > 0) { + cards.splice(arg2); + } + else if (typeof arg2 == "function") { + for (i = 0; i < cards.length; i++) { + if (!arg2(cards[i])) { + cards.splice(i, 1); i--; + } + } + } + } + for (i = 0; i < cards1.length; i++) { + if (cards1[i].tempJudge) { + cards1[i].name = cards1[i].tempJudge; + delete cards1[i].tempJudge; + } + } + if (arg2 === 0) return cards[0]; + if (typeof arg3 == "number") { + if (arg3 == 0) return cards[0]; + cards.splice(arg3); + } + if (typeof arg4 == "number") { + if (arg4 == 0) return cards[0]; + cards.splice(arg4); + } + return cards; + } + } + syncStorage(skill) { + switch (get.itemtype(this.storage[skill])) { + case "cards": game.addVideo("storage", this, [skill, get.cardsInfo(this.storage[skill]), "cards"]); break; + case "card": game.addVideo("storage", this, [skill, get.cardInfo(this.storage[skill]), "card"]); break; + default: + try { + game.addVideo("storage", this, [skill, JSON.parse(JSON.stringify(this.storage[skill]))]); + } + catch (e) { + console.log(this.storage[skill]); + } + } + } + syncSkills() { + game.broadcast(function (player, skills) { + player.applySkills(skills); + }, this, get.skillState(this)); + } + playerfocus(time) { + time = time || 1000; + this.classList.add("playerfocus"); + ui.arena.classList.add("playerfocus"); + var that = this; + setTimeout(function () { + that.classList.remove("playerfocus"); + ui.arena.classList.remove("playerfocus"); + }, time); + game.addVideo("playerfocus", this, time); + game.broadcast(function (player, time) { + player.playerfocus(time); + }, this, time); + return this; + } + setIdentity(identity, nature) { + if (!identity) identity = this.identity; + if (get.is.jun(this)) { + this.node.identity.firstChild.innerHTML = "君"; + } + else { + this.node.identity.firstChild.innerHTML = get.translation(identity); + } + this.node.identity.dataset.color = nature || identity; + return this; + } + insertPhase(skill, insert) { + var evt = _status.event.getParent("phase"); + var next; + if (evt && evt.parent && evt.parent.next) { + evt = evt.parent; + next = game.createEvent("phase", false, evt); + } + else if (_status.event.parent && _status.event.parent.next) { + evt = _status.event.parent; + next = game.createEvent("phase", false, evt); + } + else { + evt = null; + next = game.createEvent("phase", false); + } + if (evt && insert && evt.next.contains(next)) { + evt.next.remove(next); + evt.next.unshift(next); + } + next.player = this; + next.forceDie = true; + next.includeOut = true; + next.skill = skill || _status.event.name; + next.setContent("phase"); + return next; + } + insertEvent(name, content, arg) { + var evt = _status.event.getParent("phase"); + var next; + if (evt && evt.parent && evt.parent.next) { + next = game.createEvent(name, null, evt.parent); + } + else { + next = game.createEvent(name); + } + for (var i in arg) { + next[i] = arg[i]; + } + next.player = this; + next.setContent(content); + return next; + } + phase(skill) { + var next = game.createEvent("phase", false); + next.player = this; + next.setContent("phase"); + if (!_status.roundStart) { + _status.roundStart = this; + } + if (skill) { + next.skill = skill; + } + next.forceDie = true; + next.includeOut = true; + return next; + } + phaseZhunbei() { + var next = game.createEvent("phaseZhunbei"); + next.player = this; + next.setContent("phaseZhunbei"); + return next; + } + phaseJudge() { + var next = game.createEvent("phaseJudge"); + next.player = this; + next.setContent("phaseJudge"); + return next; + } + phaseDraw() { + var next = game.createEvent("phaseDraw"); + next.player = this; + next.num = 2; + if ((get.config("first_less") || _status.connectMode || _status.first_less_forced) && game.phaseNumber == 1 && _status.first_less) { + next.num--; + } + next.setContent("phaseDraw"); + return next; + } + phaseUse() { + var next = game.createEvent("phaseUse"); + next.player = this; + next.setContent("phaseUse"); + return next; + } + phaseDiscard() { + var next = game.createEvent("phaseDiscard"); + next.player = this; + next.setContent("phaseDiscard"); + return next; + } + phaseJieshu() { + var next = game.createEvent("phaseJieshu"); + next.player = this; + next.setContent("phaseJieshu"); + return next; + } + chooseToUse(use) { + var next = game.createEvent("chooseToUse"); + next.player = this; + if (arguments.length == 1 && get.objtype(arguments[0]) == "object") { + for (var i in use) { + next[i] = use[i]; + } + } + else { + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "number" || get.itemtype(arguments[i]) == "select") { + next.selectTarget = arguments[i]; + } + else if ((typeof arguments[i] == "object" && arguments[i]) || typeof arguments[i] == "function") { + if (get.itemtype(arguments[i]) == "player" || next.filterCard) { + next.filterTarget = arguments[i]; + } + else next.filterCard = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (typeof arguments[i] == "string") { + next.prompt = arguments[i]; + } + } + } + if (typeof next.filterCard == "object") { + next.filterCard = get.filter(next.filterCard); + } + if (typeof next.filterTarget == "object") { + next.filterTarget = get.filter(next.filterTarget, 2); + } + if (next.filterCard == undefined) { + next.filterCard = lib.filter.filterCard; + } + if (next.selectCard == undefined) { + next.selectCard = [1, 1]; + } + if (next.filterTarget == undefined) { + next.filterTarget = lib.filter.filterTarget; + } + if (next.selectTarget == undefined) { + next.selectTarget = lib.filter.selectTarget; + } + if (next.position == undefined) { + next.position = "hs"; + } + if (next.ai1 == undefined) next.ai1 = get.order; + if (next.ai2 == undefined) next.ai2 = get.effect_use; + next.setContent("chooseToUse"); + next._args = Array.from(arguments); + return next; + } + chooseToRespond() { + var next = game.createEvent("chooseToRespond"); + next.player = this; + var filter; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "number") { + next.selectCard = [arguments[i], arguments[i]]; + } + else if (get.itemtype(arguments[i]) == "select") { + next.selectCard = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "position") { + next.position = arguments[i]; + } + else if (typeof arguments[i] == "function") { + if (next.filterCard) next.ai = arguments[i]; + else next.filterCard = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i]) { + next.filterCard = get.filter(arguments[i]); + filter = arguments[i]; + } + else if (arguments[i] == "nosource") { + next.nosource = true; + } + else if (typeof arguments[i] == "string") { + next.prompt = arguments[i]; + } + } + if (next.filterCard == undefined) next.filterCard = lib.filter.all; + if (next.selectCard == undefined) next.selectCard = [1, 1]; + if (next.source == undefined && !next.nosource) next.source = _status.event.player; + if (next.ai == undefined) next.ai = get.unuseful2; + if (next.prompt != false) { + if (typeof next.prompt == "string") { + //next.dialog=next.prompt; + } + else { + var str = "请打出" + get.cnNumber(next.selectCard[0]) + "张" + if (filter) { + if (filter.name) { + str += get.translation(filter.name); + } + else { + str += "牌"; + } + } + else { + str += "牌"; + } + if (_status.event.getParent().name == "useCard") { + var cardname = _status.event.name; + if (lib.card[cardname] && lib.translate[cardname]) { + str += "响应" + lib.translate[cardname]; + } + } + next.prompt = str; + } + } + next.position = "hs"; + if (next.ai2 == undefined) next.ai2 = (() => 1); + next.setContent("chooseToRespond"); + next._args = Array.from(arguments); + return next; + } + chooseToDiscard() { + var next = game.createEvent("chooseToDiscard"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "number") { + next.selectCard = [arguments[i], arguments[i]]; + } + else if (get.itemtype(arguments[i]) == "select") { + next.selectCard = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "dialog") { + next.dialog = arguments[i]; + next.prompt = false; + } + else if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "position") { + next.position = arguments[i]; + } + else if (typeof arguments[i] == "function") { + if (next.filterCard) next.ai = arguments[i]; + else next.filterCard = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i]) { + next.filterCard = get.filter(arguments[i]); + } + else if (typeof arguments[i] == "string") { + get.evtprompt(next, arguments[i]); + } + if (arguments[i] === null) { + for (var i = 0; i < arguments.length; i++) { + console.log(arguments[i]); + } + } + } + if (next.isMine() == false && next.dialog) next.dialog.style.display = "none"; + if (next.filterCard == undefined) next.filterCard = lib.filter.all; + if (next.selectCard == undefined) next.selectCard = [1, 1]; + if (next.ai == undefined) next.ai = get.unuseful; + next.autochoose = function () { + if (!this.forced) return false; + if (typeof this.selectCard == "function") return false; + var cards = this.player.getCards(this.position); + var num = cards.length; + for (var i = 0; i < cards.length; i++) { + if (!lib.filter.cardDiscardable(cards[i], this.player, this)) num--; + } + return get.select(this.selectCard)[0] >= num; + } + next.setContent("chooseToDiscard"); + next._args = Array.from(arguments); + return next; + } + chooseToCompare(target, check) { + var next = game.createEvent("chooseToCompare"); + next.player = this; + if (Array.isArray(target)) { + next.targets = target; + if (check) next.ai = check; + else next.ai = function (card) { + if (typeof card == "string" && lib.skill[card]) { + var ais = lib.skill[card].check || function () { return 0 }; + return ais(); + } + var addi = (get.value(card) >= 8 && get.type(card) != "equip") ? -3 : 0; + if (card.name == "du") addi -= 3; + var source = _status.event.source; + var player = _status.event.player; + var event = _status.event.getParent(); + var getn = function (card) { + if (player.hasSkill("tianbian") && get.suit(card) == "heart") return 13 * (event.small ? -1 : 1); + return get.number(card) * (event.small ? -1 : 1); + } + if (source && source != player) { + if (get.attitude(player, source) > 1) { + if (event.small) return getn(card) - get.value(card) / 2 + addi; + return -getn(card) - get.value(card) / 2 + addi; + } + if (event.small) return -getn(card) - get.value(card) / 2 + addi; + return getn(card) - get.value(card) / 2 + addi; + } + else { + if (event.small) return -getn(card) - get.value(card) / 2 + addi; + return getn(card) - get.value(card) / 2 + addi; + } + } + next.setContent("chooseToCompareMultiple"); + } + else { + next.target = target; + if (check) next.ai = check; + else next.ai = function (card) { + if (typeof card == "string" && lib.skill[card]) { + var ais = lib.skill[card].check || function () { return 0 }; + return ais(); + } + var player = get.owner(card); + var getn = function (card) { + if (player.hasSkill("tianbian") && get.suit(card) == "heart") return 13; + return get.number(card); + } + var event = _status.event.getParent(); + var to = (player == event.player ? event.target : event.player); + var addi = (get.value(card) >= 8 && get.type(card) != "equip") ? -6 : 0; + if (card.name == "du") addi -= 5; + if (player == event.player) { + if (event.small) { + return -getn(card) - get.value(card) / 2 + addi; + } + return getn(card) - get.value(card) / 2 + addi; + } + else { + if ((get.attitude(player, to) <= 0) == Boolean(event.small)) { + return -getn(card) - get.value(card) / 2 + addi; + } + return getn(card) - get.value(card) / 2 + addi; + } + } + next.setContent("chooseToCompare"); + } + next.forceDie = true; + next._args = Array.from(arguments); + return next; + } + chooseSkill(target) { + var next = game.createEvent("chooseSkill"); + next.player = this; + next.setContent("chooseSkill"); + next.target = target; + for (var i = 1; i < arguments.length; i++) { + if (typeof arguments[i] == "string") { + next.prompt = arguments[i]; + } + else if (typeof arguments[i] == "function") { + next.func = arguments[i]; + } + } + } + discoverCard(list) { + var next = game.createEvent("discoverCard"); + next.player = this; + next.setContent("discoverCard"); + next.list = list || lib.inpile.slice(0); + next.forced = true; + for (var i = 1; i < arguments.length; i++) { + if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (typeof arguments[i] == "string") { + switch (arguments[i]) { + case "use": next.use = true; break; + case "nogain": next.nogain = true; break; + default: next.prompt = arguments[i]; + } + } + else if (typeof arguments[i] == "number") { + next.num = arguments[i]; + } + else if (typeof arguments[i] === "function") { + next.ai = arguments[i]; + } + } + return next; + } + chooseCardButton() { + var cards, prompt, forced, select; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "cards") cards = arguments[i]; + else if (typeof arguments[i] == "boolean") forced = arguments[i]; + else if (typeof arguments[i] == "string") prompt = arguments[i]; + else if (get.itemtype(arguments[i]) == "select" || typeof arguments[i] == "number") select = arguments[i]; + } + if (prompt == undefined) prompt = "请选择卡牌"; + return this.chooseButton(forced, select, "hidden", [prompt, cards, "hidden"]); + } + chooseVCardButton() { + var list, prompt, forced, select, notype = false; + for (var i = 0; i < arguments.length; i++) { + if (Array.isArray(arguments[i])) { + list = arguments[i]; + } + else if (arguments[i] == "notype") { + notype = true; + } + else if (typeof arguments[i] == "boolean") forced = arguments[i]; + else if (typeof arguments[i] == "string") prompt = arguments[i]; + else if (get.itemtype(arguments[i]) == "select" || typeof arguments[i] == "number") select = arguments[i]; + } + for (var i = 0; i < list.length; i++) { + list[i] = [notype ? "" : (get.subtype(list[i], false) || get.type(list[i])), "", list[i]]; + } + if (prompt == undefined) prompt = "请选择卡牌"; + return this.chooseButton(forced, select, "hidden", [prompt, [list, "vcard"], "hidden"]); + } + chooseButton() { + var next = game.createEvent("chooseButton"); + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "dialog") { + next.dialog = arguments[i]; + next.closeDialog = true; + } + else if (get.itemtype(arguments[i]) == "select") { + next.selectButton = arguments[i]; + } + else if (typeof arguments[i] == "number") { + next.selectButton = [arguments[i], arguments[i]]; + } + else if (typeof arguments[i] == "function") { + if (next.ai) next.filterButton = arguments[i]; + else next.ai = arguments[i]; + } + else if (Array.isArray(arguments[i])) { + next.createDialog = arguments[i]; + } + } + next.player = this; + if (typeof next.forced != "boolean") next.forced = false; + if (next.isMine() == false && next.dialog) next.dialog.style.display = "none"; + if (next.filterButton == undefined) next.filterButton = lib.filter.filterButton; + if (next.selectButton == undefined) next.selectButton = [1, 1]; + if (next.ai == undefined) next.ai = function () { return 1 }; + next.setContent("chooseButton"); + next._args = Array.from(arguments); + next.forceDie = true; + return next; + } + chooseButtonOL(list, callback, ai) { + var next = game.createEvent("chooseButtonOL"); + next.list = list; + next.setContent("chooseButtonOL"); + next.ai = ai; + next.callback = callback; + next._args = Array.from(arguments); + return next; + } + chooseCardOL() { + var next = game.createEvent("chooseCardOL"); + next._args = []; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "players") { + next.list = arguments[i].slice(0); + } + else { + next._args.push(arguments[i]); + } + } + next.setContent("chooseCardOL"); + next._args.add("glow_result"); + return next; + } + chooseCard(choose) { + var next = game.createEvent("chooseCard"); + next.player = this; + if (arguments.length == 1 && get.is.object(choose)) { + for (var i in choose) { + next[i] = choose[i]; + } + } + else { + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "number") { + next.selectCard = [arguments[i], arguments[i]]; + } + else if (get.itemtype(arguments[i]) == "select") { + next.selectCard = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "position") { + next.position = arguments[i]; + } + else if (typeof arguments[i] == "function") { + if (next.filterCard) next.ai = arguments[i]; + else next.filterCard = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i]) { + next.filterCard = get.filter(arguments[i]); + } + else if (arguments[i] == "glow_result") { + next.glow_result = true; + } + else if (typeof arguments[i] == "string") { + get.evtprompt(next, arguments[i]); + } + } + } + if (next.filterCard == undefined) next.filterCard = lib.filter.all; + if (next.selectCard == undefined) next.selectCard = [1, 1]; + if (next.ai == undefined) next.ai = get.unuseful3; + next.setContent("chooseCard"); + next._args = Array.from(arguments); + return next; + } + chooseUseTarget() { + var next = game.createEvent("chooseUseTarget"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "cards") { + next.cards = arguments[i].slice(0); + } + else if (get.itemtype(arguments[i]) == "card") { + next.card = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "players") { + next.targets = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "player") { + next.targets = [arguments[i]]; + } + else if (get.itemtype(arguments[i]) == "select") { + next.selectTarget = arguments[i]; + } + else if (typeof arguments[i] == "number") { + next.selectTarget = [arguments[i], arguments[i]]; + } + else if (get.is.object(arguments[i]) && arguments[i].name) { + next.card = arguments[i]; + } + else if (typeof arguments[i] == "string") { + if (arguments[i] == "nopopup") { + next.nopopup = true; + } + else if (arguments[i] == "noanimate") { + next.animate = false; + } + else if (arguments[i] == "nothrow") { + next.throw = false; + } + else if (arguments[i] == "nodistance") { + next.nodistance = true; + } + else if (arguments[i] == "noTargetDelay") { + next.noTargetDelay = true; + } + else if (arguments[i] == "nodelayx") { + next.nodelayx = true; + } + else if (lib.card[arguments[i]] && !next.card) { + next.card = { name: arguments[i], isCard: true }; + } + else get.evtprompt(next, arguments[i]); + } + else if (arguments[i] === true) { + next.forced = true; + } + else if (arguments[i] === false) { + next.addCount = false; + } + } + if (!next.targets) next.targets = game.players.slice(0); + if (next.cards == undefined) { + if (get.itemtype(next.card) == "card") { + next.cards = [next.card]; + } + else next.cards = []; + } + else if (next.card == undefined) { + if (next.cards) { + next.card = next.cards[0]; + } + } + next.setContent("chooseUseTarget"); + next._args = Array.from(arguments); + return next; + // Fully Online-Ready! Enjoy It! + } + chooseTarget() { + var next = game.createEvent("chooseTarget"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "number") { + next.selectTarget = [arguments[i], arguments[i]]; + } + else if (get.itemtype(arguments[i]) == "select") { + next.selectTarget = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "dialog") { + next.dialog = arguments[i]; + next.prompt = false; + } + else if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (typeof arguments[i] == "function") { + if (next.filterTarget) next.ai = arguments[i]; + else next.filterTarget = arguments[i]; + } + else if (typeof arguments[i] == "string") { + get.evtprompt(next, arguments[i]); + } + } + if (next.filterTarget == undefined) next.filterTarget = lib.filter.all; + if (next.selectTarget == undefined) next.selectTarget = [1, 1]; + if (next.ai == undefined) next.ai = get.attitude2; + next.setContent("chooseTarget"); + next._args = Array.from(arguments); + next.forceDie = true; + return next; + } + chooseCardTarget(choose) { + var next = game.createEvent("chooseCardTarget"); + next.player = this; + if (arguments.length == 1) { + for (var i in choose) { + next[i] = choose[i]; + } + } + if (typeof next.filterCard == "object") { + next.filterCard = get.filter(next.filterCard); + } + if (typeof next.filterTarget == "object") { + next.filterTarget = get.filter(next.filterTarget, 2); + } + if (next.filterCard == undefined || next.filterCard === true) { + next.filterCard = lib.filter.all; + } + if (next.selectCard == undefined) { + next.selectCard = 1; + } + if (next.filterTarget == undefined || next.filterTarget === true) { + next.filterTarget = lib.filter.all; + } + if (next.selectTarget == undefined) { + next.selectTarget = 1; + } + if (next.ai1 == undefined) next.ai1 = get.unuseful2; + if (next.ai2 == undefined) next.ai2 = get.attitude2; + next.setContent("chooseCardTarget"); + next._args = Array.from(arguments); + return next; + } + chooseControlList() { + var list = []; + var prompt = null; + var forced = "cancel2"; + var func = null; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "string") { + if (!prompt) { + prompt = arguments[i]; + } + else { + list.push(arguments[i]); + } + } + else if (Array.isArray(arguments[i])) { + list = arguments[i]; + } + else if (arguments[i] === true) { + forced = null; + } + else if (typeof arguments[i] == "function") { + func = arguments[i]; + } + } + return this.chooseControl(forced, func).set("choiceList", list).set("prompt", prompt); + } + chooseControl() { + var next = game.createEvent("chooseControl"); + next.controls = []; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "string") { + if (arguments[i] == "dialogcontrol") { + next.dialogcontrol = true; + } + else if (arguments[i] == "seperate") { + next.seperate = true; + } + else { + next.controls.push(arguments[i]); + } + } + else if (Array.isArray(arguments[i])) { + next.controls = next.controls.concat(arguments[i]); + } + else if (typeof arguments[i] == "function") { + next.ai = arguments[i]; + } + else if (typeof arguments[i] == "number") { + next.choice = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "dialog") { + next.dialog = arguments[i]; + } + } + next.player = this; + if (next.choice == undefined) next.choice = 0; + next.setContent("chooseControl"); + next._args = Array.from(arguments); + next.forceDie = true; + return next; + } + chooseBool() { + var next = game.createEvent("chooseBool"); + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "boolean") { + next.choice = arguments[i]; + } + else if (typeof arguments[i] == "function") { + next.ai = arguments[i]; + } + else if (typeof arguments[i] == "string") { + get.evtprompt(next, arguments[i]); + } + else if (get.itemtype(arguments[i]) == "dialog") { + next.dialog = arguments[i]; + } + if (next.choice == undefined) next.choice = true; + } + next.player = this; + next.setContent("chooseBool"); + next._args = Array.from(arguments); + next.forceDie = true; + return next; + } + chooseDrawRecover() { + var next = game.createEvent("chooseDrawRecover", false); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "number") { + if (typeof next.num1 == "number") { + next.num2 = arguments[i]; + } + else { + next.num1 = arguments[i]; + } + } + else if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (typeof arguments[i] == "string") { + next.prompt = arguments[i]; + } + else if (typeof arguments[i] == "function") { + next.ai = arguments[i]; + } + } + if (typeof next.num1 != "number") { + next.num1 = 1; + } + if (typeof next.num2 != "number") { + next.num2 = 1; + } + next.setContent("chooseDrawRecover"); + return next; + } + choosePlayerCard() { + var next = game.createEvent("choosePlayerCard"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.target = arguments[i]; + } + else if (typeof arguments[i] == "number") { + next.selectButton = [arguments[i], arguments[i]]; + } + else if (get.itemtype(arguments[i]) == "select") { + next.selectButton = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "position") { + next.position = arguments[i]; + } + else if (arguments[i] == "visible") { + next.visible = true; + } + else if (typeof arguments[i] == "function") { + if (next.ai) next.filterButton = arguments[i]; + else next.ai = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i]) { + next.filterButton = get.filter(arguments[i]); + } + else if (typeof arguments[i] == "string") { + next.prompt = arguments[i]; + } + } + if (next.filterButton == undefined) next.filterButton = lib.filter.all; + if (next.position == undefined) next.position = "he"; + if (next.selectButton == undefined) next.selectButton = [1, 1]; + if (next.ai == undefined) next.ai = function (button) { + var val = get.buttonValue(button); + if (get.attitude(_status.event.player, get.owner(button.link)) > 0) return -val; + return val; + }; + next.setContent("choosePlayerCard"); + next._args = Array.from(arguments); + return next; + } + discardPlayerCard() { + var next = game.createEvent("discardPlayerCard"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.target = arguments[i]; + } + else if (typeof arguments[i] == "number") { + next.selectButton = [arguments[i], arguments[i]]; + } + else if (get.itemtype(arguments[i]) == "select") { + next.selectButton = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "position") { + next.position = arguments[i]; + } + else if (arguments[i] == "visible") { + next.visible = true; + } + else if (typeof arguments[i] == "function") { + if (next.ai) next.filterButton = arguments[i]; + else next.ai = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i]) { + next.filterButton = get.filter(arguments[i]); + } + else if (typeof arguments[i] == "string") { + next.prompt = arguments[i]; + } + } + if (next.filterButton == undefined) next.filterButton = lib.filter.all; + if (next.position == undefined) next.position = "he"; + if (next.selectButton == undefined) next.selectButton = [1, 1]; + if (next.ai == undefined) next.ai = function (button) { + var val = get.buttonValue(button); + if (get.attitude(_status.event.player, get.owner(button.link)) > 0) return -val; + return val; + }; + next.setContent("discardPlayerCard"); + next._args = Array.from(arguments); + return next; + } + gainPlayerCard() { + var next = game.createEvent("gainPlayerCard"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.target = arguments[i]; + } + else if (typeof arguments[i] == "number") { + next.selectButton = [arguments[i], arguments[i]]; + } + else if (get.itemtype(arguments[i]) == "select") { + next.selectButton = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "position") { + next.position = arguments[i]; + } + else if (arguments[i] == "visible") { + next.visible = true; + } + else if (arguments[i] == "visibleMove") { + next.visibleMove = true; + } + else if (typeof arguments[i] == "function") { + if (next.ai) next.filterButton = arguments[i]; + else next.ai = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i]) { + next.filterButton = get.filter(arguments[i]); + } + else if (typeof arguments[i] == "string") { + next.prompt = arguments[i]; + } + } + if (next.filterButton == undefined) next.filterButton = lib.filter.all; + if (next.position == undefined) next.position = "he"; + if (next.selectButton == undefined) next.selectButton = [1, 1]; + if (next.ai == undefined) next.ai = function (button) { + var val = get.buttonValue(button); + if (get.attitude(_status.event.player, get.owner(button.link)) > 0) return -val; + return val; + }; + next.setContent("gainPlayerCard"); + next._args = Array.from(arguments); + return next; + } + showHandcards(str) { + var next = game.createEvent("showHandcards"); + next.player = this; + if (typeof str == "string") { + next.prompt = str; + } + next.setContent("showHandcards"); + next._args = Array.from(arguments); + return next; + } + showCards(cards, str) { + var next = game.createEvent("showCards"); + next.player = this; + next.str = str; + if (typeof cards == "string") { + str = cards; + cards = next.str; + next.str = str; + } + if (get.itemtype(cards) == "card") next.cards = [cards]; + else if (get.itemtype(cards) == "cards") next.cards = cards.slice(0); + else _status.event.next.remove(next); + next.setContent("showCards"); + next._args = Array.from(arguments); + return next; + } + viewCards(str, cards) { + var next = game.createEvent("viewCards"); + next.player = this; + next.str = str; + next.cards = cards.slice(0); + next.setContent("viewCards"); + next._args = Array.from(arguments); + return next; + } + viewHandcards(target) { + var cards = target.getCards("h"); + if (cards.length) { + return this.viewCards(get.translation(target) + "的手牌", cards); + } + else { + return false; + } + } + canMoveCard(withatt, nojudge) { + const player = this; + const args = Array.from(arguments).slice(2); + let sourceTargets, aimTargets, filterCard, canReplace; + args.forEach(arg => { + if (get.itemtype(arg) == "players") { + if (!sourceTargets) sourceTargets = arg; + else if (!aimTargets) aimTargets = arg; + } + else if (get.itemtype(arg) == "player") { + if (!sourceTargets) sourceTargets = [arg]; + else if (!aimTargets) aimTargets = [arg]; + } + else if (typeof arg == "function") { + filterCard = arg; + } + else if (typeof arg == "object" && arg) { + filterCard = get.filter(arg); + } + else if (arg == "canReplace") { + canReplace = true; + } + }); + if (!sourceTargets) sourceTargets = game.filterPlayer(); + if (!aimTargets) aimTargets = game.filterPlayer(); + return sourceTargets.some(current => { + const att = get.sgn(get.attitude(player, current)); + if (!withatt || att != 0) { + var es = current.getCards("e", filterCard); + for (var i = 0; i < es.length; i++) { + if (aimTargets.some(current2 => { + if (withatt) { + if (get.sgn(get.value(es[i], current)) != -att) return false; + var att2 = get.sgn(get.attitude(player, current2)); + if (!canReplace || att < 0 && current2.countEquipableSlot(get.subtype(es[i]))) { + if (att == att2 || att2 != get.sgn(get.effect(current2, es[i], player, current2))) return false; + } + } + return current != current2 && !current2.isMin() && current2.canEquip(es[i], canReplace); + })) { + return true; + } + } + } + if (!nojudge && (!withatt || att > 0)) { + var js = current.getCards("j", filterCard); + for (var i = 0; i < js.length; i++) { + if (game.hasPlayer(function (current2) { + if (withatt) { + var att2 = get.attitude(player, current2); + if (att2 >= 0) return false; + } + return current != current2 && current2.canAddJudge(js[i]); + })) { + return true; + } + } + } + }); + } + moveCard() { + var next = game.createEvent("moveCard"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "boolean") { + next.forced = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "players") { + if (!next.sourceTargets) next.sourceTargets = arguments[i]; + else if (!next.aimTargets) next.aimTargets = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "player") { + if (!next.sourceTargets) next.sourceTargets = [arguments[i]]; + else if (!next.aimTargets) next.aimTargets = [arguments[i]]; + } + else if (typeof arguments[i] == "string") { + if (arguments[i] == "canReplace") { + next.canReplace = true; + } + else { + get.evtprompt(next, arguments[i]); + } + } + else if (Array.isArray(arguments[i])) { + for (var j = 0; j < arguments[i].length; j++) { + if (typeof arguments[i][j] != "string") break; + } + if (j == arguments[i].length) { + next.targetprompt = arguments[i]; + } + } + else if (typeof arguments[i] == "function") { + next.filter = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i]) { + next.filter = get.filter(arguments[i]); + } + } + if (!next.sourceTargets) next.sourceTargets = game.filterPlayer(); + if (!next.aimTargets) next.aimTargets = game.filterPlayer(); + if (next.filter == undefined) next.filter = lib.filter.all; + next.setContent("moveCard"); + next._args = Array.from(arguments); + return next; + } + useResult(result, event) { + event = event || _status.event; + if (result._sendskill) { + lib.skill[result._sendskill[0]] = result._sendskill[1]; + } + if (event.onresult) { + event.onresult(result); + } + if (result.skill) { + var info = get.info(result.skill); + if (info.onuse) { + info.onuse(result, this); + } + // if(info.direct&&!info.clearTime){ + // _status.noclearcountdown=true; + // } + } + if (event.logSkill) { + if (typeof event.logSkill == "string") { + this.logSkill(event.logSkill); + } + else if (Array.isArray(event.logSkill)) { + this.logSkill.apply(this, event.logSkill); + } + } + if (result.card || !result.skill) { + result.used = result.card || result.cards[0]; + var next = this.useCard(result.used, result.cards, result.targets, result.skill); + next.oncard = event.oncard; + next.respondTo = event.respondTo; + if (event.addCount === false) { + next.addCount = false; + } + if (result._apply_args) { + for (var i in result._apply_args) { + next[i] = result._apply_args[i]; + } + } + return next; + } + else if (result.skill) { + result.used = result.skill; + return this.useSkill(result.skill, result.cards, result.targets); + } + } + useCard() { + var next = game.createEvent("useCard"); + next.player = this; + next.num = 0; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "cards") { + next.cards = arguments[i].slice(0); + } + else if (get.itemtype(arguments[i]) == "players") { + next.targets = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "player") { + next.targets = [arguments[i]]; + } + else if (get.itemtype(arguments[i]) == "card") { + next.card = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i] && arguments[i].name) { + next.card = arguments[i]; + } + else if (typeof arguments[i] == "string") { + if (arguments[i] == "noai") { + next.noai = true; + } + else if (arguments[i] == "nowuxie") { + next.nowuxie = true; + } + else { + next.skill = arguments[i]; + } + } + else if (typeof arguments[i] == "boolean") { + next.addCount = arguments[i]; + } + } + if (next.cards == undefined) { + if (get.itemtype(next.card) == "card") { + next.cards = [next.card]; + } + else next.cards = []; + } + else if (next.card == undefined) { + if (next.cards) { + next.card = next.cards[0]; + } + } + if (!next.targets) { + next.targets = []; + } + if (next.card) { + next.card = get.autoViewAs(next.card, next.cards); + var info = get.info(next.card); + if (info.changeTarget) { + info.changeTarget(next.player, next.targets); + } + if (info.singleCard) { + next._targets = next.targets.slice(0); + next.target = next.targets[0]; + next.addedTargets = next.targets.splice(1); + if (next.addedTargets.length) { + next.addedTarget = next.addedTargets[0]; + } + } + } + for (var i = 0; i < next.targets.length; i++) { + if (get.attitude(this, next.targets[i]) >= -1 && get.attitude(this, next.targets[i]) < 0) { + if (!this.ai.tempIgnore) this.ai.tempIgnore = []; + this.ai.tempIgnore.add(next.targets[i]); + } + } + if (typeof this.logAi == "function" && !next.noai && !get.info(next.card).noai) { + var postAi = get.info(next.card).postAi; + if (postAi && postAi(next.targets)) { + next.postAi = true; + } + else { + this.logAi(next.targets, next.card); + } + } + next.stocktargets = next.targets.slice(0); + next.setContent("useCard"); + return next; + } + useSkill() { + var next = game.createEvent("useSkill"); + next.player = this; + next.num = 0; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "cards") { + next.cards = arguments[i].slice(0); + } + else if (get.itemtype(arguments[i]) == "players") { + next.targets = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "card") { + next.card = arguments[i]; + } + else if (typeof arguments[i] == "string") { + next.skill = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.addCount = arguments[i]; + } + } + if (next.cards == undefined) { + next.cards = []; + } + if (next.skill && get.info(next.skill) && get.info(next.skill).changeTarget) { + get.info(next.skill).changeTarget(next.player, next.targets); + } + if (next.targets) { + for (var i = 0; i < next.targets.length; i++) { + if (get.attitude(this, next.targets[i]) >= -1 && get.attitude(this, next.targets[i]) < 0) { + if (!this.ai.tempIgnore) this.ai.tempIgnore = []; + this.ai.tempIgnore.add(next.targets[i]); + } + } + if (typeof this.logAi == "function") { + this.logAi(next.targets, next.skill); + } + } + else { + next.targets = []; + } + next.setContent("useSkill"); + return next; + } + drawTo(num, args) { + var num2 = num - this.countCards("h"); + if (!num2) return; + var next = this.draw(num2); + if (Array.isArray(args)) { + for (var i = 0; i < args.length; i++) { + if (get.itemtype(args[i]) == "player") { + next.source = args[i]; + } + else if (typeof args[i] == "boolean") { + next.animate = args[i]; + } + else if (args[i] == "nodelay") { + next.animate = false; + next.$draw = true; + } + else if (args[i] == "visible") { + next.visible = true; + } + else if (args[i] == "bottom") { + next.bottom = true; + } + else if (typeof args[i] == "object" && args[i] && args[i].drawDeck != undefined) { + next.drawDeck = args[i].drawDeck; + } + } + } + return next; + } + draw() { + var next = game.createEvent("draw"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (typeof arguments[i] == "number") { + next.num = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.animate = arguments[i]; + } + else if (arguments[i] == "nodelay") { + next.animate = false; + next.$draw = true; + } + else if (arguments[i] == "visible") { + next.visible = true; + } + else if (arguments[i] == "bottom") { + next.bottom = true; + } + else if (typeof arguments[i] == "object" && arguments[i] && arguments[i].drawDeck != undefined) { + next.drawDeck = arguments[i].drawDeck; + } + } + if (next.num == undefined) next.num = 1; + if (next.num <= 0) _status.event.next.remove(next); + next.setContent("draw"); + if (lib.config.mode == "stone" && _status.mode == "deck" && + next.drawDeck == undefined && !next.player.isMin() && next.num > 1) { + next.drawDeck = 1; + } + next.result = []; + return next; + } + randomDiscard() { + var position = "he", num = 1, delay = null; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "number") { + num = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "position") { + position = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + delay = arguments[i]; + } + } + var cards = this.getCards(position).randomGets(num); + if (cards.length) { + var next = this.discard(cards, "notBySelf"); + if (typeof delay == "boolean") { + next.delay = delay; + } + } + return cards; + } + randomGain() { + var position = "he", num = 1, target = null, line = false; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "number") { + num = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "position") { + position = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "player") { + target = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + line = arguments[i]; + } + } + if (target) { + var cards = target.getCards(position).randomGets(num); + if (cards.length) { + if (line) { + this.line(target, "green"); + } + this.gain(cards, target, "log", "bySelf"); + target.$giveAuto(cards, this); + } + return cards; + } + return []; + } + discard() { + var next = game.createEvent("discard"); + next.player = this; + next.num = 0; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "cards") { + next.cards = arguments[i].slice(0); + } + else if (get.itemtype(arguments[i]) == "card") { + next.cards = [arguments[i]]; + } + else if (typeof arguments[i] == "boolean") { + next.animate = arguments[i]; + } + else if (get.objtype(arguments[i]) == "div") { + next.position = arguments[i]; + } + else if (arguments[i] == "notBySelf") { + next.notBySelf = true; + } + } + if (next.cards == undefined) _status.event.next.remove(next); + next.setContent("discard"); + return next; + } + loseToDiscardpile() { + var next = game.createEvent("loseToDiscardpile"); + next.player = this; + next.num = 0; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "cards") { + next.cards = arguments[i].slice(0); + } + else if (get.itemtype(arguments[i]) == "card") { + next.cards = [arguments[i]]; + } + else if (typeof arguments[i] == "boolean") { + next.animate = arguments[i]; + } + else if (get.objtype(arguments[i]) == "div") { + next.position = arguments[i]; + } + else if (arguments[i] == "notBySelf") { + next.notBySelf = true; + } + else if (arguments[i] == "insert") { + next.insert_card = true; + } + else if (arguments[i] == "blank") { + next.blank = true; + } + } + if (next.cards == undefined) _status.event.next.remove(next); + next.setContent("loseToDiscardpile"); + return next; + } + respond() { + var next = game.createEvent("respond"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "cards") { + next.cards = arguments[i].slice(0); + } + else if (get.itemtype(arguments[i]) == "card") { + next.card = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i] && arguments[i].name) { + next.card = arguments[i]; + } + else if (typeof arguments[i] == "boolean") next.animate = arguments[i]; + else if (arguments[i] == "highlight") next.highlight = true; + else if (arguments[i] == "noOrdering") next.noOrdering = true; + else if (typeof arguments[i] == "string") next.skill = arguments[i]; + } + if (next.cards == undefined) { + if (get.itemtype(next.card) == "card") { + next.cards = [next.card]; + } + else { + next.cards = []; + } + } + else if (next.card == undefined) { + if (next.cards) { + next.card = next.cards[0]; + if (!next.skill) { + next.card = get.autoViewAs(next.card, next.cards); + } + } + } + next.setContent("respond"); + return next; + } + swapHandcards(target, cards1, cards2) { + var next = game.createEvent("swapHandcards", false); + next.player = this; + next.target = target; + if (cards1) next.cards1 = cards1; + if (cards2) next.cards2 = cards2; + next.setContent("swapHandcards"); + return next; + } + directequip(cards) { + for (var i = 0; i < cards.length; i++) { + this.$equip(cards[i]); + } + if (!_status.video) { + game.addVideo("directequip", this, get.cardsInfo(cards)); + } + } + $addToExpansion(cards, broadcast, gaintag) { + var hs = this.getCards("x"); + for (var i = 0; i < cards.length; i++) { + if (hs.contains(cards[i])) { + cards.splice(i--, 1); + } + } + for (var i = 0; i < cards.length; i++) { + cards[i].fix(); + if (gaintag) cards[i].addGaintag(gaintag); + var sort = lib.config.sort_card(cards[i]); + this.node.expansions.insertBefore(cards[i], this.node.expansions.firstChild); + } + if (broadcast !== false) game.broadcast(function (player, cards, gaintag) { + player.$addToExpansion(cards, null, gaintag); + }, this, cards, gaintag); + return this; + } + directgain(cards, broadcast, gaintag) { + var hs = this.getCards("hs"); + for (var i = 0; i < cards.length; i++) { + if (hs.contains(cards[i])) { + cards.splice(i--, 1); + } + } + for (var i = 0; i < cards.length; i++) { + cards[i].fix(); + if (gaintag) cards[i].addGaintag(gaintag); + var sort = lib.config.sort_card(cards[i]); + if (this == game.me) { + cards[i].classList.add("drawinghidden"); + } + if (get.is.singleHandcard() || sort > 0) { + this.node.handcards1.insertBefore(cards[i], this.node.handcards1.firstChild); + } + else { + this.node.handcards2.insertBefore(cards[i], this.node.handcards2.firstChild); + } + } + if (this == game.me || _status.video) ui.updatehl(); + if (!_status.video) { + game.addVideo("directgain", this, get.cardsInfo(cards)); + this.update(); + } + if (broadcast !== false) game.broadcast(function (player, cards) { + player.directgain(cards); + }, this, cards); + return this; + } + directgains(cards, broadcast, gaintag) { + var hs = this.getCards("hs"); + for (var i = 0; i < cards.length; i++) { + if (hs.contains(cards[i])) { + cards.splice(i--, 1); + } + } + var addLast = function (card, node) { + if (gaintag) { + for (var i = 0; i < node.childNodes.length; i++) { + var add = node.childNodes[node.childNodes.length - i - 1]; + if (!add.classList.contains("glows")) break; + if (add.hasGaintag(gaintag)) { + node.insertBefore(card, add.nextSibling); + return; + } + } + } + node.appendChild(card); + } + for (var i = 0; i < cards.length; i++) { + cards[i].fix(); + cards[i].remove(); + if (gaintag) cards[i].addGaintag(gaintag); + cards[i].classList.add("glows"); + if (this == game.me) { + cards[i].classList.add("drawinghidden"); + } + if (get.is.singleHandcard()) { + addLast(cards[i], this.node.handcards1); + } + else { + addLast(cards[i], this.node.handcards2); + } + } + if (this == game.me || _status.video) ui.updatehl(); + if (!_status.video) { + game.addVideo("directgains", this, get.cardsInfo(cards)); + this.update(); + } + if (broadcast !== false) game.broadcast(function (player, cards, gaintag) { + player.directgains(cards, null, gaintag); + }, this, cards, gaintag); + return this; + } + gainMultiple(targets, position) { + var next = game.createEvent("gainMultiple", false); + next.setContent("gainMultiple"); + next.player = this; + next.targets = targets; + next.position = position || "h"; + return next; + } + gain() { + var next = game.createEvent("gain"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "cards") { + next.cards = arguments[i].slice(0); + } + else if (get.itemtype(arguments[i]) == "card") { + next.cards = [arguments[i]]; + } + else if (arguments[i] === "log") { + next.log = true; + } + else if (arguments[i] == "fromStorage") { + next.fromStorage = true; + } + else if (arguments[i] == "fromRenku") { + next.fromStorage = true; + next.fromRenku = true; + } + else if (arguments[i] == "bySelf") { + next.bySelf = true; + } + else if (typeof arguments[i] == "string") { + next.animate = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.delay = arguments[i]; + } + } + if (next.animate == "gain2" || next.animate == "draw2") { + if (!Object.prototype.hasOwnProperty.call(next, "log")) { + next.log = true; + } + } + next.setContent("gain"); + next.getd = function (player, key, position) { + if (!position) position = ui.discardPile; + if (!key) key = "cards"; + var cards = [], event = this; + game.checkGlobalHistory("cardMove", function (evt) { + if (evt.name != "lose" || evt.position != position || evt.getParent() != event) return; + if (player && player != evt.player) return; + cards.addArray(evt[key]); + }); + return cards; + }; + next.getl = function (player) { + const that = this; + const map = { + player: player, + hs: [], + es: [], + js: [], + ss: [], + xs: [], + cards: [], + cards2: [], + gaintag_map: {}, + }; + player.checkHistory("lose", function (evt) { + if (evt.parent == that) { + map.hs.addArray(evt.hs); + map.es.addArray(evt.es); + map.js.addArray(evt.js); + map.ss.addArray(evt.ss); + map.xs.addArray(evt.xs); + map.cards.addArray(evt.cards); + map.cards2.addArray(evt.cards2); + for (let key in evt.gaintag_map) { + if (!map.gaintag_map[key]) map.gaintag_map[key] = []; + map.gaintag_map[key].addArray(evt.gaintag_map[key]); + } + } + }); + return map; + }; + next.getg = function (player) { + if (this.getlx === false || player != this.player || !this.cards) return []; + return this.cards.slice(0); + } + next.gaintag = []; + return next; + } + addToExpansion() { + var next = game.createEvent("addToExpansion"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "cards") { + next.cards = arguments[i].slice(0); + } + else if (get.itemtype(arguments[i]) == "card") { + next.cards = [arguments[i]]; + } + else if (arguments[i] === "log") { + next.log = true; + } + else if (arguments[i] == "fromStorage") { + next.fromStorage = true; + } + else if (arguments[i] == "fromRenku") { + next.fromStorage = true; + next.fromRenku = true; + } + else if (arguments[i] == "bySelf") { + next.bySelf = true; + } + else if (typeof arguments[i] == "string") { + next.animate = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.delay = arguments[i]; + } + } + if (next.animate == "gain2" || next.animate == "draw2" || next.animate == "give") { + if (!Object.prototype.hasOwnProperty.call(next, "log")) { + next.log = true; + } + } + next.setContent("addToExpansion"); + next.getd = function (player, key, position) { + if (!position) position = ui.discardPile; + if (!key) key = "cards"; + var cards = [], event = this; + game.checkGlobalHistory("cardMove", function (evt) { + if (evt.name != "lose" || evt.position != position || evt.getParent() != event) return; + if (player && player != evt.player) return; + cards.addArray(evt[key]); + }); + return cards; + }; + next.getl = function (player) { + const that = this; + const map = { + player: player, + hs: [], + es: [], + js: [], + ss: [], + xs: [], + cards: [], + cards2: [], + gaintag_map: {}, + }; + player.checkHistory("lose", function (evt) { + if (evt.parent == that) { + map.hs.addArray(evt.hs); + map.es.addArray(evt.es); + map.js.addArray(evt.js); + map.ss.addArray(evt.ss); + map.xs.addArray(evt.xs); + map.cards.addArray(evt.cards); + map.cards2.addArray(evt.cards2); + for (let key in evt.gaintag_map) { + if (!map.gaintag_map[key]) map.gaintag_map[key] = []; + map.gaintag_map[key].addArray(evt.gaintag_map[key]); + } + } + }); + return map; + }; + next.gaintag = []; + return next; + } + give(cards, target, visible) { + var next = target.gain(cards, this); + next.animate = visible ? "give" : "giveAuto"; + next.giver = this; + return next; + } + lose() { + var next = game.createEvent("lose"); + next.player = this; + next.forceDie = true; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "cards") { + next.cards = arguments[i].slice(0); + } + else if (get.itemtype(arguments[i]) == "card") { + next.cards = [arguments[i]]; + } + else if (get.objtype(arguments[i]) == "div") { + next.position = arguments[i]; + } + else if (arguments[i] == "toStorage") { + next.toStorage = true; + } + else if (arguments[i] == "toRenku") { + next.toStorage = true; + next.toRenku = true; + } + else if (arguments[i] == "visible") { + next.visible = true; + } + else if (arguments[i] == "insert") { + next.insert_card = true; + } + } + if (next.cards) { + var hej = this.getCards("hejsx"); + for (var i = 0; i < next.cards.length; i++) { + if (!hej.contains(next.cards[i])) { + next.cards.splice(i--, 1); + } + } + } + if (!next.cards || !next.cards.length) { + _status.event.next.remove(next); + } + else { + if (next.position == undefined) next.position = ui.discardPile; + next.cards = next.cards.slice(0); + } + next.setContent("lose"); + next.getd = function (player, key, position) { + if (!position) position = ui.discardPile; + if (!key) key = "cards"; + if (this.getlx === false || this.position != position || (player && this.player != player) || !Array.isArray(this[key])) return []; + return this[key].slice(0); + }; + next.getl = function (player) { + if (this.getlx !== false && this.player == player) return this; + return { + player: player, + hs: [], + es: [], + js: [], + ss: [], + xs: [], + cards: [], + cards2: [], + gaintag_map: {}, + }; + }; + return next; + } + damage() { + const next = game.createEvent("damage"); + //next.forceDie=true; + next.player = this; + let noCard, noSource; + const event = _status.event; + for (const argument of arguments) { + if (get.itemtype(argument) == "cards") next.cards = argument.slice(); + else if (get.itemtype(argument) == "card") next.card = argument; + else if (typeof argument == "number") next.num = argument; + else if (get.itemtype(argument) == "player") next.source = argument; + else if (argument && typeof argument == "object" && argument.name) next.card = argument; + else if (argument == "nocard") noCard = true; + else if (argument == "nosource") noSource = true; + else if (argument == "notrigger") { + next._triggered = null; + next.notrigger = true; + } + else if (argument == "unreal") next.unreal = true; + else if (get.itemtype(argument) == "nature" && argument != "stab") next.nature = argument; + else if (get.itemtype(argument) == "natures") { + const natures = argument.split(lib.natureSeparator).remove("stab"); + if (natures.length) next.nature = natures.join(lib.natureSeparator); + } + } + if (!next.card && !noCard) next.card = event.card; + if (!next.cards && !noCard) next.cards = event.cards; + if (!next.source && !noSource) { + const source = event.customSource || event.player; + if (source && !source.isDead()) next.source = source; + } + if (typeof next.num != "number") next.num = (event.baseDamage || 1) + (event.extraDamage || 0); + next.original_num = next.num; + next.change_history = []; + next.hasNature = function (nature) { + if (!nature) return Boolean(this.nature && this.nature.length > 0); + let natures = get.natureList(nature), naturesx = get.natureList(this.nature); + if (nature == "linked") return naturesx.some(n => lib.linked.includes(n)); + return get.is.sameNature(natures, naturesx); + }; + if (next.hasNature("poison")) delete next._triggered; + next.setContent("damage"); + next.filterStop = function () { + if (this.source && this.source.isDead()) delete this.source; + var num = this.original_num; + for (var i of this.change_history) num += i; + if (num != this.num) this.change_history.push(this.num - num); + if (this.num <= 0) { + delete this.filterStop; + this.trigger("damageZero"); + this.finish(); + this._triggered = null; + return true; + } + }; + return next; + } + recover() { + var next = game.createEvent("recover"); + next.player = this; + var nocard, nosource; + var event = _status.event; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "cards") { + next.cards = arguments[i].slice(0); + } + else if (get.itemtype(arguments[i]) == "card") { + next.card = arguments[i]; + } + else if (get.itemtype(arguments[i]) == "player") { + next.source = arguments[i]; + } + else if (typeof arguments[i] == "object" && arguments[i] && arguments[i].name) { + next.card = arguments[i]; + } + else if (typeof arguments[i] == "number") { + next.num = arguments[i]; + } + else if (arguments[i] == "nocard") { + nocard = true; + } + else if (arguments[i] == "nosource") { + nosource = true; + } + } + if (next.card == undefined && !nocard) next.card = event.card; + if (next.cards == undefined && !nocard) next.cards = event.cards; + if (next.source == undefined && !nosource) next.source = event.customSource || event.player; + if (next.num == undefined) next.num = (event.baseDamage || 1) + (event.extraDamage || 0); + if (next.num <= 0) _status.event.next.remove(next); + next.setContent("recover"); + return next; + } + doubleDraw() { + if (get.is.changban()) return; + var next = game.createEvent("doubleDraw"); + next.player = this; + next.setContent("doubleDraw"); + return next; + } + loseHp(num) { + var next = game.createEvent("loseHp"); + next.num = num; + next.player = this; + if (next.num == undefined) next.num = 1; + next.setContent("loseHp"); + return next; + } + loseMaxHp() { + var next = game.createEvent("loseMaxHp"); + next.player = this; + next.num = 1; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] === "number") { + next.num = arguments[i]; + } + else if (typeof arguments[i] === "boolean") { + next.forced = arguments[i]; + } + } + next.setContent("loseMaxHp"); + return next; + } + gainMaxHp() { + var next = game.createEvent("gainMaxHp"); + next.player = this; + next.num = 1; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] === "number") { + next.num = arguments[i]; + } + else if (typeof arguments[i] === "boolean") { + next.forced = arguments[i]; + } + } + next.setContent("gainMaxHp"); + return next; + } + changeHp(num, popup) { + var next = game.createEvent("changeHp"); + next.num = num; + if (popup != undefined) next.popup = popup; + next.player = this; + next.setContent("changeHp"); + return next; + } + + changeHujia(num, type, limit) { + var next = game.createEvent("changeHujia"); + if (typeof num != "number") { + num = 1; + } + if (limit === true) limit = 5; + if (typeof limit == "number" && this.hujia + num > parseInt(limit)) { + num = Math.max(0, parseInt(limit) - this.hujia); + } + if (typeof type != "string") { + if (num > 0) type = "gain"; + else if (num < 0) type = "lose"; + else type = "null"; + } + next.num = num; + next.player = this; + next.type = type; + next.setContent("changeHujia"); + return next; + } + getBuff() { + var list = [1, 2, 3, 4, 5, 6]; + var nodelay = false; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "number") { + list.remove(arguments[i]); + } + else if (arguments[i] === false) { + nodelay = true; + } + } + if (this.isHealthy()) { + list.remove(2); + } + if (!this.countCards("j")) { + list.remove(5); + } + if (!this.isLinked() && !this.isTurnedOver()) { + list.remove(6); + } + if (this.hasSkill("qianxing")) { + list.remove(4); + } + switch (list.randomGet()) { + case 1: this.draw(nodelay ? "nodelay" : 1); break; + case 2: this.recover(); break; + case 3: this.changeHujia(); break; + case 4: this.tempHide(); break; + case 5: this.discard(this.getCards("j")).delay = (!nodelay); break; + case 6: { + if (this.isLinked()) this.link(); + if (this.isTurnedOver()) this.turnOver(); + break; + } + } + return this; + } + getDebuff() { + var list = [1, 2, 3, 4, 5, 6]; + var nodelay = false; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "number") { + list.remove(arguments[i]); + } + else if (arguments[i] === false) { + nodelay = true; + } + } + if (this.countCards("he") == 0) { + list.remove(1); + } + if (this.isLinked()) { + list.remove(4); + } + if (this.hasSkill("fengyin")) { + list.remove(5); + } + if (this.hp == 1) { + list.remove(3); + if (list.length > 1) list.remove(2); + } + if (!list.length) return this; + var num = list.randomGet(); + switch (list.randomGet()) { + case 1: this.randomDiscard(nodelay ? false : "he"); break; + case 2: this.loseHp(); break; + case 3: this.damage(); break; + case 4: if (!this.isLinked()) this.link(); break; + case 5: this.addTempSkill("fengyin", { player: "phaseAfter" }); break; + case 6: { + var list = []; + for (var i = 0; i < lib.inpile.length; i++) { + var info = lib.card[lib.inpile[i]]; + if (info.type == "delay" && !info.cancel && !this.hasJudge(lib.inpile[i])) { + list.push(lib.inpile[i]); + } + } + if (list.length) { + var card = game.createCard(list.randomGet()); + this.addJudge(card); + this.$draw(card); + if (!nodelay) game.delay(); + } + else { + this.getDebuff(6); + } + break; + } + } + return this; + } + dying(reason) { + if (this.nodying || this.hp > 0 || this.isDying()) return; + var next = game.createEvent("dying"); + next.player = this; + next.reason = reason; + if (reason && reason.source) next.source = reason.source; + next.setContent("dying"); + next.filterStop = function () { + if (this.player.hp > 0 || this.nodying) { + delete this.filterStop; + return true; + } + }; + return next; + } + die(reason) { + var next = game.createEvent("die"); + next.player = this; + next.reason = reason; + if (reason) next.source = reason.source; + next.setContent("die"); + return next; + } + revive(hp, log) { + if (log !== false) game.log(this, "复活"); + if (this.maxHp < 1) this.maxHp = 1; + if (hp) this.hp = hp; + else { + this.hp = 1; + } + game.addVideo("revive", this); + this.classList.remove("dead"); + this.removeAttribute("style"); + this.node.avatar.style.transform = ""; + this.node.avatar2.style.transform = ""; + this.node.hp.show(); + this.node.equips.show(); + this.node.count.show(); + this.update(); + var player; + player = this.previousSeat; + while (player.isDead()) player = player.previousSeat; + player.next = this; + this.previous = player; + player = this.nextSeat; + while (player.isDead()) player = player.nextSeat; + player.previous = this; + this.next = player; + game.players.add(this); + game.dead.remove(this); + if (this == game.me) { + if (ui.auto) ui.auto.show(); + if (ui.wuxie) ui.wuxie.show(); + if (ui.revive) { + ui.revive.close(); + delete ui.revive; + } + if (ui.exit) { + ui.exit.close(); + delete ui.exit; + } + if (ui.swap) { + ui.swap.close(); + delete ui.swap; + } + if (ui.restart) { + ui.restart.close(); + delete ui.restart; + } + if (ui.continue_game) { + ui.continue_game.close(); + delete ui.continue_game; + } + } + } + isMad() { + return this.hasSkill("mad"); + } + goMad(end) { + if (end) { + this.addTempSkill("mad", end); + } + else { + this.addSkill("mad"); + } + game.log(this, "进入混乱状态"); + } + unMad() { + this.removeSkill("mad"); + } + tempHide() { + this.addTempSkill("qianxing", { player: "phaseBeginStart" }); + } + addExpose(num) { + if (typeof this.ai.shown == "number" && !this.identityShown && this.ai.shown < 1) { + this.ai.shown += num; + if (this.ai.shown > 0.95) { + this.ai.shown = 0.95; + } + } + return this; + } + equip(card, draw) { + var next = game.createEvent("equip"); + next.card = card; + next.player = this; + if (draw) { + next.draw = true; + } + next.setContent(lib.element.content.equip); + if (get.is.object(next.card) && next.card.cards) next.card = next.card.cards[0]; + next.cards = [next.card]; + next.getd = function (player, key, position) { + if (!position) position = ui.discardPile; + if (!key) key = "cards"; + var cards = [], event = this; + game.checkGlobalHistory("cardMove", function (evt) { + if (evt.name != "lose" || evt.position != position || evt.getParent() != event) return; + if (player && player != evt.player) return; + cards.addArray(evt[key]); + }); + return cards; + }; + next.getl = function (player) { + const that = this; + const map = { + player: player, + hs: [], + es: [], + js: [], + ss: [], + xs: [], + cards: [], + cards2: [], + gaintag_map: {}, + }; + player.checkHistory("lose", function (evt) { + if (evt.parent == that) { + map.hs.addArray(evt.hs); + map.es.addArray(evt.es); + map.js.addArray(evt.js); + map.ss.addArray(evt.ss); + map.xs.addArray(evt.xs); + map.cards.addArray(evt.cards); + map.cards2.addArray(evt.cards2); + for (let key in evt.gaintag_map) { + if (!map.gaintag_map[key]) map.gaintag_map[key] = []; + map.gaintag_map[key].addArray(evt.gaintag_map[key]); + } + } + }); + return map; + }; + return next; + } + addJudge(card, cards) { + var next = game.createEvent("addJudge"); + if (get.itemtype(card) == "card") { + next.card = card; + next.cards = [card]; + } + else { + next.cards = cards; + if (get.itemtype(next.cards) == "card") next.cards = [next.cards]; + if (typeof card == "string") { + card = { name: card }; + } + next.card = get.autoViewAs(card, next.cards) + } + next.player = this; + next.setContent("addJudge"); + next.getd = function (player, key, position) { + if (!position) position = ui.discardPile; + if (!key) key = "cards"; + var cards = [], event = this; + game.checkGlobalHistory("cardMove", function (evt) { + if (evt.name != "lose" || evt.position != position || evt.getParent() != event) return; + if (player && player != evt.player) return; + cards.addArray(evt[key]); + }); + return cards; + }; + next.getl = function (player) { + const that = this; + const map = { + player: player, + hs: [], + es: [], + js: [], + ss: [], + xs: [], + cards: [], + cards2: [], + gaintag_map: {}, + }; + player.checkHistory("lose", function (evt) { + if (evt.parent == that) { + map.hs.addArray(evt.hs); + map.es.addArray(evt.es); + map.js.addArray(evt.js); + map.ss.addArray(evt.ss); + map.xs.addArray(evt.xs); + map.cards.addArray(evt.cards); + map.cards2.addArray(evt.cards2); + for (let key in evt.gaintag_map) { + if (!map.gaintag_map[key]) map.gaintag_map[key] = []; + map.gaintag_map[key].addArray(evt.gaintag_map[key]); + } + } + }); + return map; + }; + return next; + } + canAddJudge(card) { + if (this.isDisabledJudge()) return false; + var name; + if (typeof card == "string") { + name = card; + } + else { + name = card.viewAs || card.name; + } + if (!name) return false; + if (this.hasJudge(name)) return false; + if (this.isOut()) return false; + var mod = game.checkMod(card, this, this, "unchanged", "targetEnabled", this); + if (mod != "unchanged") return mod; + return true; + } + addJudgeNext(card, unlimited) { + if (!card.expired) { + let target = this.next; + const name = card.viewAs || card.name; + const cards = (get.itemtype(card) == "card") ? [card] : card.cards; + if (get.itemtype(cards) != "cards") return; + let bool = false; + if (!unlimited && cards.some(card => { + const position = get.position(card, true); + return position != "j" && position != "o"; + })) { + game.log(card, "已被移出处理区,无法置入判定区"); + return; + } + for (let iwhile = 0; iwhile < 20; iwhile++) { + if (target.canAddJudge(card)) { + bool = true; break; + } + target = target.next; + } + if (bool) { + if (card.cards && card.cards.length) { + target.addJudge(name, card.cards[0]); + } + else if (card.name != name) { + target.addJudge(name, card); + } + else { + target.addJudge(card); + } + } + } + else { + card.expired = false; + } + } + judge() { + var next = game.createEvent("judge"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (get.itemtype(arguments[i]) == "card") { + next.card = arguments[i]; + } + else if (typeof arguments[i] == "string") { + next.skill = arguments[i]; + } + else if (typeof arguments[i] == "function") { + next.judge = arguments[i]; + } + else if (typeof arguments[i] == "boolean") { + next.clearArena = arguments[i]; + } + else if (get.objtype(arguments[i]) == "div") { + next.position = arguments[i]; + } + } + if (next.card && next.judge == undefined) { + next.judge = get.judge(next.card); + next.judge2 = get.judge2(next.card); + } + if (next.judge == undefined) next.judge = function () { return 0 }; + if (next.position == undefined) next.position = ui.discardPile; + if (next.card) next.cardname = next.card.viewAs || next.card.name; + + var str = ""; + if (next.card) str = get.translation(next.card.viewAs || next.card.name); + else if (next.skill) str = get.translation(next.skill); + else str = get.translation(_status.event.name); + next.judgestr = str; + next.setContent("judge"); + return next; + } + turnOver(bool) { + if (typeof bool == "boolean") { + if (bool) { + if (this.isTurnedOver()) return; + } + else { + if (!this.isTurnedOver()) return; + } + } + var next = game.createEvent("turnOver"); + next.player = this; + next.includeOut = true; + next.setContent("turnOver"); + return next; + } + out(skill) { + if (typeof skill == "number") { + this.outCount += skill; + } + else if (typeof skill == "string") { + if (!this.outSkills) { + this.outSkills = []; + } + this.outSkills.add(skill); + } + else { + this.outCount++; + } + if (!this.classList.contains("out")) { + this.classList.add("out"); + game.log(this, "离开游戏"); + } + if (!game.countPlayer()) { + game.over(); + } + } + in(skill) { + if (this.isOut()) { + if (typeof skill == "string") { + if (this.outSkills) { + this.outSkills.remove(skill); + if (!this.outSkills.length) { + delete this.outSkills; + } + } + } + else if (typeof skill == "number") { + this.outCount -= skill; + } + else { + if (skill === true) { + delete this.outSkills; + } + this.outCount = 0; + } + if (this.outCount <= 0 && !this.outSkills) { + this.outCount = 0; + this.classList.remove("out"); + game.log(this, "进入游戏"); + } + } + } + link(bool) { + if (typeof bool == "boolean") { + if (bool) { + if (this.isLinked()) return; + } + else { + if (!this.isLinked()) return; + } + } + var next = game.createEvent("link"); + next.player = this; + next.setContent("link"); + return next; + } + skip(name) { + this.skipList.add(name); + } + wait(callback) { + if (lib.node) { + if (typeof callback == "function") { + callback._noname_waiting = true; + lib.node.torespond[this.playerid] = callback; + } + else { + lib.node.torespond[this.playerid] = "_noname_waiting"; + } + clearTimeout(lib.node.torespondtimeout[this.playerid]); + if (this.ws && !this.ws.closed) { + var player = this; + var time = parseInt(lib.configOL.choose_timeout) * 1000; + if (_status.event._global_timer || _status.event.getParent().skillHidden) { + for (var i = 0; i < game.players.length; i++) { + game.players[i].showTimer(time); + } + player._hide_all_timer = true; + } + else if (!_status.event._global_waiting && _status.noclearcountdown !== "direct") { + player.showTimer(time); + } + lib.node.torespondtimeout[this.playerid] = setTimeout(function () { + player.unwait("ai"); + player.ws.ws.close(); + }, time + 5000); + } + } + } + unwait(result) { + if (this._hide_all_timer) { + delete this._hide_all_timer; + for (var i = 0; i < game.players.length; i++) { + game.players[i].hideTimer(); + } + } + else if (!get.event("_global_waiting") && (_status.noclearcountdown !== "direct" || result && result.bool) && !(result && result._noHidingTimer)) { + this.hideTimer(); + } + clearTimeout(lib.node.torespondtimeout[this.playerid]); + delete lib.node.torespondtimeout[this.playerid]; + if (!Object.prototype.hasOwnProperty.call(lib.node.torespond, this.playerid)) { + return; + } + var noresume = false; + var proceed = null; + if (typeof lib.node.torespond[this.playerid] == "function" && lib.node.torespond[this.playerid]._noname_waiting) { + proceed = lib.node.torespond[this.playerid](result, this); + if (proceed === false) { + noresume = true; + } + } + lib.node.torespond[this.playerid] = result; + for (var i in lib.node.torespond) { + if (lib.node.torespond[i] == "_noname_waiting") { + return; + } + else if (lib.node.torespond[i] && lib.node.torespond[i]._noname_waiting) { + return; + } + } + _status.event.result = result; + _status.event.resultOL = lib.node.torespond; + lib.node.torespond = {}; + if (typeof proceed == "function") proceed(); + else if (_status.paused && !noresume) game.resume(); + } + tempUnwait(result) { + if (!Object.prototype.hasOwnProperty.call(lib.node.torespond, this.playerid)) { + return; + } + var proceed; + if (typeof lib.node.torespond[this.playerid] == "function" && lib.node.torespond[this.playerid]._noname_waiting) { + proceed = lib.node.torespond[this.playerid](result, this); + } + if (typeof proceed == "function") proceed(); + } + logSkill(name, targets, nature, logv) { + if (get.itemtype(targets) == "player") targets = [targets]; + var nopop = false; + var popname = name; + if (Array.isArray(name)) { + popname = name[1]; + name = name[0]; + } + var checkShow = this.checkShow(name); + if (lib.translate[name]) { + this.trySkillAnimate(name, popname, checkShow); + if (Array.isArray(targets) && targets.length) { + var str; + if (targets[0] == this) { + str = "#b自己"; + if (targets.length > 1) { + str += "、"; + str += get.translation(targets.slice(1)); + } + } + else str = targets; + game.log(this, "对", str, "发动了", "【" + get.skillTranslation(name, this) + "】"); + } + else { + game.log(this, "发动了", "【" + get.skillTranslation(name, this) + "】"); + } + } + if (nature != false) { + if (nature === undefined) { + nature = "green"; + } + this.line(targets, nature); + } + var info = lib.skill[name]; + if (info && info.ai && info.ai.expose != undefined && + this.logAi && (!targets || targets.length != 1 || targets[0] != this)) { + this.logAi(lib.skill[name].ai.expose); + } + if (info && info.round) { + var roundname = name + "_roundcount"; + this.storage[roundname] = game.roundNumber; + this.syncStorage(roundname); + this.markSkill(roundname); + } + game.trySkillAudio(name, this, true); + if (game.chess) { + this.chessFocus(); + } + if (logv === true) { + game.logv(this, name, targets, null, true); + } + else if (info && info.logv !== false) { + game.logv(this, name, targets); + } + if (info) { + var player = this; + var players = player.getSkills(false, false, false); + var equips = player.getSkills("e"); + var global = lib.skill.global.slice(0); + var logInfo = { + skill: name, + targets: targets, + event: _status.event, + }; + if (info.sourceSkill) { + logInfo.sourceSkill = info.sourceSkill; + if (global.contains(info.sourceSkill)) { + logInfo.type = "global"; + } + else if (players.contains(info.sourceSkill)) { + logInfo.type = "player"; + } + else if (equips.contains(info.sourceSkill)) { + logInfo.type = "equip"; + } + } + else { + if (global.contains(name)) { + logInfo.sourceSkill = name; + logInfo.type = "global"; + } + else if (players.contains(name)) { + logInfo.sourceSkill = name; + logInfo.type = "player"; + } + else if (equips.contains(name)) { + logInfo.sourceSkill = name; + logInfo.type = "equip"; + } + else { + var bool = false; + for (var i of players) { + var expand = [i]; + game.expandSkills(expand); + if (expand.contains(name)) { + bool = true; + logInfo.sourceSkill = i; + logInfo.type = "player"; + break; + } + } + if (!bool) { + for (var i of players) { + var expand = [i]; + game.expandSkills(expand); + if (expand.contains(name)) { + logInfo.sourceSkill = i; + logInfo.type = "equip"; + break; + } + } + } + } + } + var next = game.createEvent("logSkill", false), evt = _status.event; + next.player = player; + next.forceDie = true; + next.includeOut = true; + evt.next.remove(next); + if (evt.logSkill) evt = evt.getParent(); + for (var i in logInfo) { + if (i == "event") next.log_event = logInfo[i]; + else next[i] = logInfo[i]; + } + evt.after.push(next); + next.setContent("emptyEvent"); + player.getHistory("useSkill").push(logInfo); + //尽可能别往这写插入结算 + //不能用来终止技能发动!!! + var next2 = game.createEvent("logSkillBegin", false); + next2.player = player; + next2.forceDie = true; + next2.includeOut = true; + for (var i in logInfo) { + if (i == "event") next2.log_event = logInfo[i]; + else next2[i] = logInfo[i]; + } + next2.setContent("emptyEvent"); + } + if (this._hookTrigger) { + for (var i = 0; i < this._hookTrigger.length; i++) { + var info = lib.skill[this._hookTrigger[i]].hookTrigger; + if (info && info.log) { + info.log(this, name, targets); + } + } + } + } + unprompt() { + if (this.node.prompt) { + this.node.prompt.delete(); + delete this.node.prompt; + } + } + prompt(str, nature) { + var node; + if (this.node.prompt) { + node = this.node.prompt; + node.innerHTML = ""; + node.className = "damage normal-font damageadded"; + } + else { + node = ui.create.div(".damage.normal-font", this); + this.node.prompt = node; + ui.refresh(node); + node.classList.add("damageadded"); + } + node.innerHTML = str; + node.dataset.nature = nature || "soil"; + } + prompt_old(name2, className) { + var node; + if (this.node.prompt) { + node = this.node.prompt; + node.innerHTML = ""; + node.className = "popup"; + } + else { + node = ui.create.div(".popup", this.parentNode); + this.node.prompt = node; + } + node.dataset.position = this.dataset.position; + if (this.dataset.position == 0 || parseInt(this.dataset.position) == parseInt(ui.arena.dataset.number) / 2 || + typeof name2 == "number" || this.classList.contains("minskin")) { + node.innerHTML = name2; + } + else { + for (var i = 0; i < name2.length; i++) { + node.innerHTML += name2[i] + "
    "; + } + } + if (className) { + node.classList.add(className); + } + } + popup(name, className, nobroadcast) { + var name2 = get.translation(name); + if (!name2) return; + this.$damagepop(name2, className || "water", true, nobroadcast); + } + popup_old(name, className) { + var name2 = get.translation(name); + var node = ui.create.div(".popup", this.parentNode); + if (!name2) { + node.remove(); + return node; + } + game.addVideo("popup", this, [name, className]); + node.dataset.position = this.dataset.position; + if (this.dataset.position == 0 || parseInt(this.dataset.position) == parseInt(ui.arena.dataset.number) / 2 || + typeof name2 == "number" || this.classList.contains("minskin")) { + node.innerHTML = name2; + } + else { + for (var i = 0; i < name2.length; i++) { + node.innerHTML += name2[i] + "
    "; + } + } + if (className) { + node.classList.add(className); + } + this.popups.push(node); + if (this.popups.length > 1) { + node.hide(); + } + else { + var that = this; + setTimeout(function () { that._popup(); }, 1000); + } + return node; + } + _popup() { + if (this.popups.length) { + this.popups.shift().delete(); + if (this.popups.length) { + this.popups[0].show(); + var that = this; + setTimeout(function () { that._popup(); }, 1000); + } + } + } + showTimer(time) { + if (!time && lib.configOL) { + time = parseInt(lib.configOL.choose_timeout) * 1000; + } + if (_status.connectMode && !game.online) { + game.broadcast(function (player, time) { + player.showTimer(time); + }, this, time); + } + if (this == game.me) { + return; + } + if (this.node.timer) { + this.node.timer.remove(); + } + var timer = ui.create.div(".timerbar", this); + this.node.timer = timer; + ui.create.div(this.node.timer); + var bar = ui.create.div(this.node.timer); + ui.refresh(bar); + bar.style.transitionDuration = (time / 1000) + "s"; + bar.style.transform = "scale(0,1)"; + } + hideTimer() { + if (_status.connectMode && !game.online && this.playerid) { + game.broadcast(function (player) { + player.hideTimer(); + }, this); + } + if (this.node.timer) { + this.node.timer.delete(); + delete this.node.timer; + } + } + markAuto(name, info) { + if (typeof info != "undefined") { + if (!Array.isArray(this.storage[name])) this.storage[name] = []; + if (Array.isArray(info)) { + this.storage[name].addArray(info); + } + else this.storage[name].add(info); + this.markSkill(name); + } + else { + var storage = this.storage[name]; + if (Array.isArray(storage)) { + this[storage.length > 0 ? "markSkill" : "unmarkSkill"](name); + } + else if (typeof storage == "number") { + this[storage > 0 ? "markSkill" : "unmarkSkill"](name); + } + } + } + unmarkAuto(name, info) { + var storage = this.storage[name] + if (Array.isArray(info) && Array.isArray(storage)) { + storage.removeArray(info.slice(0)); + this.markAuto(name); + } + } + getExpansions(tag) { + return this.getCards("x", (card) => card.hasGaintag(tag)); + } + countExpansions(tag) { + return this.getExpansions(tag).length; + } + hasExpansions(tag) { + return this.countExpansions(tag) > 0; + } + setStorage(name, value, mark) { + this.storage[name] = value; + if (mark) this.markAuto(name); + return value; + } + getStorage(name) { + return this.storage[name] || []; + } + hasStorage(name, value) { + if (!(name in this.storage)) return false; + if (typeof value == "undefined") return true; + const storage = this.storage[name]; + if (storage === value) return true; + return Array.isArray(storage) && storage.includes(value); + } + hasStorageAny(name, values) { + const storage = this.storage[name]; + if (!Array.isArray(values)) values = Array.from(arguments).slice(1); + if (!storage) return false; + if (!Array.isArray(storage)) return values.contains(storage); + return values.some(item => storage.contains(item)); + } + hasStorageAll(name, values) { + const storage = this.storage[name]; + if (!Array.isArray(values)) values = Array.from(arguments).slice(1); + if (!storage) return false; + if (!Array.isArray(storage)) return false; + return values.every(item => storage.contains(item)); + } + initStorage(name, value, mark) { + return this.hasStorage(name) ? this.getStorage(name) : this.setStorage(name, value, mark); + } + updateStorage(name, operation, mark) { + return this.setStorage(name, operation(this.getStorage(name)), mark); + } + updateStorageAsync(name, operation, mark) { + return Promise.resolve(this.getStorage(name)) + .then(value => operation(value)) + .then(value => this.setStorage(name, value, mark)); + } + removeStorage(name, mark) { + if (!this.hasStorage(name)) return false; + delete this.storage[name] + if (mark) { + this.unmarkSkill(name); + } + return true; + } + markSkill(name, info, card, nobroadcast) { + if (info === true) { + this.syncStorage(name); + info = null; + } + if (get.itemtype(card) == "card") { + game.addVideo("markSkill", this, [name, get.cardInfo(card)]); + } + else { + game.addVideo("markSkill", this, [name]); + } + const func = function (storage, player, name, info, card) { + player.storage[name] = storage; + if (!info) { + if (player.marks[name]) { + player.updateMarks(); + return; + } + if (lib.skill[name]) { + info = lib.skill[name].intro; + } + if (!info) { + return; + } + } + if (player.marks[name]) { + player.marks[name].info = info; + } + else { + if (card) { + player.marks[name] = player.mark(card, info, name); + } + else { + player.marks[name] = player.mark(name, info); + } + } + player.updateMarks(); + }; + func(this.storage[name], this, name, info, card); + if (!nobroadcast) game.broadcast(func, this.storage[name], this, name, info, card); + return this; + } + unmarkSkill(name, nobroadcast) { + game.addVideo("unmarkSkill", this, name); + if (!nobroadcast) game.broadcast(function (player, name) { + if (player.marks[name]) { + player.marks[name].delete(); + player.marks[name].style.transform += " scale(0.2)"; + delete player.marks[name]; + ui.updatem(player); + } + }, this, name); + if (this.marks[name]) { + this.marks[name].delete(); + this.marks[name].style.transform += " scale(0.2)"; + delete this.marks[name]; + ui.updatem(this); + var info = lib.skill[name]; + if (!game.online && info && info.intro && info.intro.onunmark) { + if (info.intro.onunmark == "throw") { + if (get.itemtype(this.storage[name]) == "cards") { + this.$throw(this.storage[name], 1000); + game.cardsDiscard(this.storage[name]); + game.log(this.storage[name], "进入了弃牌堆"); + this.storage[name].length = 0; + } + } + else if (typeof info.intro.onunmark == "function") { + info.intro.onunmark(this.storage[name], this); + } + else delete this.storage[name]; + } + } + return this; + } + markSkillCharacter(id, target, name, content, nobroadcast) { + if (typeof target == "object") { + target = target.name; + } + const func = function (player, target, name, content, id) { + if (player.marks[id]) { + player.marks[id].name = name + "_charactermark"; + player.marks[id]._name = target; + player.marks[id].info = { + name: name, + content: content, + id: id + }; + player.marks[id].setBackground(target, "character"); + game.addVideo("changeMarkCharacter", player, { + id: id, + name: name, + content: content, + target: target + }); + } + else { + player.marks[id] = player.markCharacter(target, { + name: name, + content: content, + id: id + }); + player.marks[id]._name = target; + game.addVideo("markCharacter", player, { + name: name, + content: content, + id: id, + target: target + }); + } + } + func(this, target, name, content, id); + if (!nobroadcast) game.broadcast(func, this, target, name, content, id); + return this; + } + markCharacter(name, info, learn, learn2) { + if (typeof name == "object") { + name = name.name; + } + var node; + if (name.startsWith("unknown")) { + node = ui.create.div(".card.mark.drawinghidden"); + ui.create.div(".background.skillmark", node).innerHTML = get.translation(name)[0]; + } + else { + if (!lib.character[name]) return; + node = ui.create.div(".card.mark.drawinghidden").setBackground(name, "character"); + } + this.node.marks.insertBefore(node, this.node.marks.childNodes[1]); + node.name = name + "_charactermark"; + if (!info) { + info = {}; + } + if (!info.name) { + info.name = get.translation(name); + } + if (!info.content) { + info.content = get.skillintro(name, learn, learn2) + } + node.info = info; + node.addEventListener(lib.config.touchscreen ? "touchend" : "click", ui.click.card); + if (!lib.config.touchscreen) { + if (lib.config.hover_all) { + lib.setHover(node, ui.click.hoverplayer); + } + if (lib.config.right_info) { + node.oncontextmenu = ui.click.rightplayer; + } + } + ui.updatem(this); + return node; + } + mark(name, info, skill) { + if (get.itemtype(name) == "cards") { + var marks = []; + for (var i = 0; i < name.length; i++) { + marks.push(this.mark(name[i], info)); + } + return marks; + } + else { + var node; + if (get.itemtype(name) == "card") { + node = name.copy("mark"); + node.classList.add("drawinghidden"); + this.node.marks.insertBefore(node, this.node.marks.childNodes[1]); + node.suit = name.suit; + node.number = name.number; + // if(name.name&&lib.card[name.name]&&lib.card[name.name].markimage){ + // node.node.image.style.left=lib.card[name.name].markimage; + // } + + if (name.classList.contains("fullborder")) { + node.classList.add("fakejudge"); + node.classList.add("fakemark"); + (node.querySelector(".background") || ui.create.div(".background", node)).innerHTML = lib.translate[name.name + "_bg"] || get.translation(name.name)[0]; + } + + name = name.name; + } + else { + node = ui.create.div(".card.mark.drawinghidden"); + this.node.marks.insertBefore(node, this.node.marks.childNodes[1]); + if (lib.skill[name] && lib.skill[name].markimage) { + node.setBackgroundImage(lib.skill[name].markimage); + node.style["box-shadow"] = "none"; + node.style["background-size"] = "contain"; + } + else if (lib.skill[name] && lib.skill[name].markimage2) { + let img = ui.create.div(".background.skillmark", node); + img.setBackgroundImage(lib.skill[name].markimage2); + img.style["background-size"] = "contain"; + } + else { + var str = lib.translate[name + "_bg"]; + if (!str || str[0] == "+" || str[0] == "-") { + str = get.translation(name)[0]; + } + ui.create.div(".background.skillmark", node).innerHTML = str; + } + } + node.name = name; + node.skill = skill || name; + if (typeof info == "object") { + node.info = info; + } + else if (typeof info == "string") { + node.markidentifer = info; + } + node.addEventListener(lib.config.touchscreen ? "touchend" : "click", ui.click.card); + if (!lib.config.touchscreen) { + if (lib.config.hover_all) { + lib.setHover(node, ui.click.hoverplayer); + } + if (lib.config.right_info) { + node.oncontextmenu = ui.click.rightplayer; + } + } + this.updateMarks(); + ui.updatem(this); + return node; + } + } + unmark(name, info) { + game.addVideo("unmarkname", this, name); + if (get.itemtype(name) == "card") { + this.unmark(name.name, info); + } + else if (get.itemtype(name) == "cards") { + for (var i = 0; i < name.length; i++) { + this.unmark(name[i].name, info); + } + } + else { + for (var i = 0; i < this.node.marks.childNodes.length; i++) { + if (this.node.marks.childNodes[i].name == name && + (!info || this.node.marks.childNodes[i].markidentifer == info)) { + this.node.marks.childNodes[i].delete(); + this.node.marks.childNodes[i].style.transform += " scale(0.2)"; + ui.updatem(this); + return; + } + } + } + } + addLink() { + if (get.is.linked2(this)) { + this.classList.add("linked2"); + } + else { + this.classList.add("linked"); + } + } + removeLink() { + if (get.is.linked2(this)) { + this.classList.remove("linked2"); + } + else { + this.classList.remove("linked"); + } + } + canUse(card, target, distance, includecard) { + if (typeof card == "string") card = { name: card, isCard: true }; + var info = get.info(card); + if (info.multicheck && !info.multicheck(card, this)) return false; + if (!lib.filter.cardEnabled(card, this)) return false; + if (includecard && !lib.filter.cardUsable(card, this)) return false; + if (distance !== false && !lib.filter.targetInRange(card, this, target)) return false; + return lib.filter[includecard ? "targetEnabledx" : "targetEnabled"](card, this, target); + } + hasUseTarget(card, distance, includecard) { + var player = this; + return game.hasPlayer(function (current) { + return player.canUse(card, current, distance, includecard); + }); + } + hasValueTarget() { + return this.getUseValue.apply(this, arguments) > 0; + } + getUseValue(card, distance, includecard) { + if (typeof (card) == "string") { + card = { name: card, isCard: true }; + } + var player = this; + var targets = game.filterPlayer(); + var value = []; + var min = 0; + var info = get.info(card); + if (!info || info.notarget) return 0; + var range; + var select = get.copy(info.selectTarget); + if (select == undefined) { + if (info.filterTarget == undefined) return true; + range = [1, 1]; + } + else if (typeof select == "number") range = [select, select]; + else if (get.itemtype(select) == "select") range = select; + else if (typeof select == "function") range = select(card, player); + if (info.singleCard) range = [1, 1]; + game.checkMod(card, player, range, "selectTarget", player); + if (!range) return 0; + + for (var i = 0; i < targets.length; i++) { + if (player.canUse(card, targets[i], distance, includecard)) { + var eff = get.effect(targets[i], card, player, player); + value.push(eff); + } + } + value.sort(function (a, b) { + return b - a; + }); + for (var i = 0; i < value.length; i++) { + if (i == range[1] || range[1] != -1 && value[i] <= 0) break; + min += value[i]; + } + return min; + } + addSubPlayer(cfg) { + var skill = "subplayer_" + cfg.name + "_" + get.id(); + game.log(this, "获得了随从", "#g" + get.translation(cfg.name)) + cfg.hs = cfg.hs || []; + cfg.es = cfg.es || []; + cfg.skills = cfg.skills || []; + cfg.hp = cfg.hp || 1; + cfg.maxHp = cfg.maxHp || 1; + cfg.sex = cfg.sex || "male"; + cfg.group = cfg.group || "qun"; + cfg.skill = cfg.skill || _status.event.name; + if (!cfg.source) { + if (this.hasSkill(_status.event.name) && this.name2 && lib.character[this.name2] && + lib.character[this.name2][3].contains(_status.event.name)) { + cfg.source = this.name2; + } + else { + cfg.source = this.name; + } + } + game.broadcastAll(function (player, skill, cfg) { + lib.skill[skill] = { + intro: { + content: cfg.intro || "" + }, + mark: "character", + subplayer: cfg.skill, + ai: { + subplayer: true + } + } + lib.character[skill] = [cfg.sex, cfg.group, cfg.maxHp, cfg.skills, []]; + if (Array.isArray(cfg.image)) { + cfg.image.forEach(image => lib.character[skill][4].push(image)); + } else if (typeof cfg.image == "string") { + lib.character[skill][4].push(cfg.image); + } else { + lib.character[skill][4].push("character:" + cfg.name); + } + lib.translate[skill] = cfg.caption || get.rawName(cfg.name); + player.storage[skill] = cfg; + }, this, skill, cfg); + game.addVideo("addSubPlayer", this, [skill, lib.skill[skill], lib.character[skill], lib.translate[skill], { name: cfg.name }]); + this.addSkill(skill); + return skill; + } + removeSubPlayer(name) { + if (this.hasSkill("subplayer") && this.name == name) { + this.exitSubPlayer(true); + } + else { + if (player.storage[name].onremove) { + player.storage[name].onremove(player); + } + this.removeSkill(name); + delete this.storage[name]; + game.log(player, "牺牲了随从", "#g" + name); + _status.event.trigger("removeSubPlayer"); + } + } + callSubPlayer() { + if (this.hasSkill("subplayer")) return; + var next = game.createEvent("callSubPlayer"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "string") { + next.directresult = arguments[i]; + } + } + next.setContent("callSubPlayer"); + return next; + } + toggleSubPlayer() { + if (!this.hasSkill("subplayer")) return; + var next = game.createEvent("toggleSubPlayer"); + next.player = this; + for (var i = 0; i < arguments.length; i++) { + if (typeof arguments[i] == "string") { + next.directresult = arguments[i]; + } + } + next.setContent("toggleSubPlayer"); + return next; + } + exitSubPlayer(remove) { + if (!this.hasSkill("subplayer")) return; + var next = game.createEvent("exitSubPlayer"); + next.player = this; + next.remove = remove; + next.setContent("exitSubPlayer"); + return next; + } + getSubPlayers(tag) { + var skills = this.getSkills(); + var list = []; + for (var i = 0; i < skills.length; i++) { + var name = skills[i]; + var info = lib.skill[name]; + if (tag && info.subplayer != tag) continue; + if (info.ai && info.ai.subplayer && this.storage[name] && this.storage[name].name) { + list.push(name); + } + } + return list; + } + addSkillTrigger(skills, hidden, triggeronly) { + if (typeof skills == "string") skills = [skills]; + game.expandSkills(skills); + for (const skill of skills) { + const info = lib.skill[skill]; + if (!info) { + console.error(new ReferenceError(`Cannot find ${skill} in lib.skill, failed to add ${skill}"s trigger to ${this.name}`)); + continue; + } + if (!triggeronly) { + if (info.global && (!hidden || info.globalSilent)) { + let global = info.global; + if (!Array.isArray(global)) global = [global]; + global.forEach(skill => game.addGlobalSkill(skill, this)); + } + if (this.initedSkills.includes(skill)) continue; + this.initedSkills.push(skill); + if (info.init && !_status.video) info.init(this, skill); + } + if (info.trigger && this.playerid) { + const setTrigger = (role, evt) => { + const name = this.playerid + "_" + role + "_" + evt; + if (!lib.hook[name]) lib.hook[name] = []; + lib.hook[name].add(skill); + lib.hookmap[evt] = true; + } + for (const role in info.trigger) { + let evts = info.trigger[role]; + if (!Array.isArray(evts)) evts = [evts]; + evts.forEach(evt => setTrigger(role, evt)); + } + } + if (info.hookTrigger) { + if (!this._hookTrigger) this._hookTrigger = []; + this._hookTrigger.add(skill); + } + if (_status.event && _status.event.addTrigger) _status.event.addTrigger(skill, this); + _status.event.clearStepCache(); + } + return this; + } + addSkillLog(skill) { + if (!skill) return this; + this.addSkill(skill); + if (!Array.isArray(skill)) skill = [skill]; + game.log(this, "获得了技能", ...skill.map(i => { + this.popup(i); + return "#g【" + get.translation(i) + "】"; + })); + } + removeSkillLog(skill, popup) { + if (!skill) return this; + this.removeSkill(skill); + if (!Array.isArray(skill)) skill = [skill]; + game.log(this, "失去了技能", ...skill.map(i => { + if (popup === true) this.popup(i); + return "#g【" + get.translation(i) + "】"; + })); + } + addInvisibleSkill(skill) { + if (Array.isArray(skill)) { + _status.event.clearStepCache(); + for (var i = 0; i < skill.length; i++) { + this.addInvisibleSkill(skill[i]); + } + } + else { + if (this.invisibleSkills.contains(skill)) return; + _status.event.clearStepCache(); + var info = lib.skill[skill]; + if (!info) return; + this.invisibleSkills.add(skill); + this.addSkillTrigger(skill); + if (this.awakenedSkills.contains(skill)) { + this.awakenSkill(skill); + return; + } + } + } + removeInvisibleSkill(skill) { + if (!skill) return; + if (Array.isArray(skill)) { + for (var i = 0; i < skill.length; i++) { + this.removeSkill(skill[i]); + } + } + else { + var info = lib.skill[skill]; + if (info && info.fixed && arguments[1] !== true) return skill; + game.broadcastAll(function (player, skill) { + player.invisibleSkills.remove(skill); + }, this, skill); + if (!player.hasSkill(skill, true)) player.removeSkill(skill); + } + return skill; + } + addSkill(skill, checkConflict, nobroadcast, addToSkills) { + if (Array.isArray(skill)) { + _status.event.clearStepCache(); + for (var i = 0; i < skill.length; i++) { + this.addSkill(skill[i]); + } + } + else { + if (this.skills.contains(skill)) return; + _status.event.clearStepCache(); + var info = lib.skill[skill]; + if (!info) return; + if (!addToSkills) { + this.skills.add(skill); + if (!nobroadcast) { + game.broadcast(function (player, skill) { + player.skills.add(skill); + }, this, skill); + } + } + this.addSkillTrigger(skill); + if (this.awakenedSkills.contains(skill)) { + this.awakenSkill(skill); + return; + } + if (info.init2 && !_status.video) { + info.init2(this, skill); + } + if (info.mark) { + if (info.mark == "card" && + get.itemtype(this.storage[skill]) == "card") { + this.markSkill(skill, null, this.storage[skill], nobroadcast); + } + else if (info.mark == "card" && + get.itemtype(this.storage[skill]) == "cards") { + this.markSkill(skill, null, this.storage[skill][0], nobroadcast); + } + else if (info.mark == "image") { + this.markSkill(skill, null, ui.create.card(null, "noclick").init([null, null, skill]), nobroadcast); + } + else if (info.mark == "character") { + var intro = info.intro.content; + if (typeof intro == "function") { + intro = intro(this.storage[skill], this); + } + else if (typeof intro == "string") { + intro = intro.replace(/#/g, this.storage[skill]); + intro = intro.replace(/&/g, get.cnNumber(this.storage[skill])); + intro = intro.replace(/\$/g, get.translation(this.storage[skill])); + } + var caption; + if (typeof info.intro.name == "function") { + caption = info.intro.name(this.storage[skill], this); + } + else if (typeof info.intro.name == "string") { + caption = info.name; + } + else { + caption = get.translation(skill); + } + this.markSkillCharacter(skill, this.storage[skill], caption, intro, nobroadcast); + } + else { + this.markSkill(skill, null, null, nobroadcast); + } + } + } + if (checkConflict) this.checkConflict(); + return skill; + } + addAdditionalSkill(skill, skills, keep) { + if (this.additionalSkills[skill]) { + if (keep) { + if (typeof this.additionalSkills[skill] == "string") { + this.additionalSkills[skill] = [this.additionalSkills[skill]]; + } + } + else { + this.removeAdditionalSkill(skill); + this.additionalSkills[skill] = []; + } + } + else { + this.additionalSkills[skill] = []; + } + if (typeof skills == "string") { + skills = [skills]; + } + for (var i = 0; i < skills.length; i++) { + this.addSkill(skills[i], null, true, true); + //this.skills.remove(skills[i]); + this.additionalSkills[skill].push(skills[i]); + } + this.checkConflict(); + _status.event.clearStepCache(); + return this; + } + removeAdditionalSkill(skill, target) { + const player = this; + if (this.additionalSkills[skill]) { + const additionalSkills = this.additionalSkills[skill]; + const hasAnotherSKill = function (skillkey, skill) { + return (player.skills.contains(skill) || player.tempSkills[skill] || Object.keys(player.additionalSkills).some(key => { + if (key === skillkey) return false; + if (Array.isArray(player.additionalSkills[key])) return player.additionalSkills[key].includes(skill); + return player.additionalSkills[key] == skill; + })) + } + if (Array.isArray(additionalSkills) && typeof target == "string") { + if (additionalSkills.contains(target)) { + additionalSkills.remove(target); + if (!hasAnotherSKill(skill, target)) this.removeSkill(target); + } + } + else { + delete this.additionalSkills[skill]; + if (typeof additionalSkills == "string") { + if (!hasAnotherSKill(skill, additionalSkills)) this.removeSkill(additionalSkills); + } + else if (Array.isArray(additionalSkills)) { + const skillsToRemove = additionalSkills.filter(target => !hasAnotherSKill(skill, target)) + this.removeSkill(skillsToRemove); + } + } + } + _status.event.clearStepCache(); + return this; + } + awakenSkill(skill, nounmark) { + if (!nounmark) this.unmarkSkill(skill); + this.disableSkill(skill + "_awake", skill); + this.awakenedSkills.add(skill); + if (this.storage[skill] === false) this.storage[skill] = true; + _status.event.clearStepCache(); + return this; + } + restoreSkill(skill, nomark) { + if (this.storage[skill] === true) this.storage[skill] = false; + this.awakenedSkills.remove(skill); + this.enableSkill(skill + "_awake", skill); + if (!nomark) this.markSkill(skill); + _status.event.clearStepCache(); + return this; + } + disableSkill(skill, skills) { + if (typeof skills == "string") { + if (!this.disabledSkills[skills]) { + this.disabledSkills[skills] = []; + var info = get.info(skills); + if (info.ondisable && info.onremove) { + if (typeof info.onremove == "function") { + info.onremove(this, skill); + } + else if (typeof info.onremove == "string") { + if (info.onremove == "storage") { + delete this.storage[skill]; + } + else { + var cards = this.storage[skill]; + if (get.itemtype(cards) == "card") { + cards = [cards]; + } + if (get.itemtype(cards) == "cards") { + if (this.onremove == "discard") { + this.$throw(cards); + } + if (this.onremove == "discard" || this.onremove == "lose") { + game.cardsDiscard(cards); + delete this.storage[skill]; + } + } + } + } + else if (Array.isArray(info.onremove)) { + for (var i = 0; i < info.onremove.length; i++) { + delete this.storage[info.onremove[i]]; + } + } + else if (info.onremove === true) { + delete this.storage[skill]; + } + } + } + this.disabledSkills[skills].add(skill); + var group = lib.skill[skills].group; + if (typeof group == "string" || Array.isArray(group)) { + this.disableSkill(skill, group); + } + } + else if (Array.isArray(skills)) { + for (var i = 0; i < skills.length; i++) { + this.disableSkill(skill, skills[i]); + } + } + _status.event.clearStepCache(); + return this; + } + enableSkill(skill) { + for (var i in this.disabledSkills) { + this.disabledSkills[i].remove(skill); + if (this.disabledSkills[i].length == 0) { + delete this.disabledSkills[i]; + } + } + _status.event.clearStepCache(); + return this; + } + checkMarks() { + var skills = this.getSkills(); + game.expandSkills(skills); + for (var i in this.marks) { + if (!skills.contains(i) && !this.marks[i].info.fixed) { + this.unmarkSkill(i); + } + } + return this; + } + addEquipTrigger(card) { + if (card) { + var info = get.info(card); + if (info.skills) { + for (var j = 0; j < info.skills.length; j++) { + this.addSkillTrigger(info.skills[j]); + } + } + } + else { + var es = this.getCards("e"); + for (var i = 0; i < es.length; i++) { + this.addEquipTrigger(es[i]); + } + } + _status.event.clearStepCache(); + return this; + } + removeEquipTrigger(card) { + if (card) { + var info = get.info(card); + var skills = this.getSkills(null, false); + if (info.skills) { + for (var j = 0; j < info.skills.length; j++) { + if (skills.contains(info.skills[j])) continue; + this.removeSkillTrigger(info.skills[j]); + } + } + if (info.clearLose && typeof info.onLose == "function") { + var next = game.createEvent("lose_" + card.name); + next.setContent(info.onLose); + next.player = this; + next.card = card; + } + } + else { + var es = this.getCards("e"); + for (var i = 0; i < es.length; i++) { + this.removeEquipTrigger(es[i]); + } + } + _status.event.clearStepCache(); + return this; + } + removeSkillTrigger(skills, triggeronly) { + if (typeof skills == "string") skills = [skills]; + game.expandSkills(skills); + for (const skill of skills) { + const info = lib.skill[skill]; + if (!info) { + console.error(new ReferenceError(`Cannot find ${skill} in lib.skill, failed to remove ${skill}"s trigger to ${this.name}`)); + continue; + } + if (!triggeronly) { + if (info.global) { + let global = info.global; + if (!Array.isArray(global)) global = [global]; + global.forEach(skill => game.removeGlobalSkill(skill, this)); + } + if (!this.initedSkills.includes(skill)) continue; + this.initedSkills.remove(skill); + // if(info.onremove&&!_status.video) info.onremove(this,skill); + } + if (info.trigger && this.playerid) { + const removeTrigger = (role, evt) => { + const name = this.playerid + "_" + role + "_" + evt; + if (!lib.hook[name]) return; + lib.hook[name].remove(skill); + if (lib.hook[name].length == 0) delete lib.hook[name]; + } + for (const role in info.trigger) { + let evts = info.trigger[role]; + if (!Array.isArray(evts)) evts = [evts]; + evts.forEach(evt => removeTrigger(role, evt)); + } + } + if (info.hookTrigger && this._hookTrigger) { + this._hookTrigger.remove(skill); + if (!this._hookTrigger.length) delete this._hookTrigger; + } + if (_status.event && _status.event.removeTrigger) _status.event.removeTrigger(skill, this); + _status.event.clearStepCache(); + } + return this; + } + removeSkill(skill) { + if (!skill) return; + _status.event.clearStepCache(); + if (Array.isArray(skill)) { + for (var i = 0; i < skill.length; i++) { + this.removeSkill(skill[i]); + } + } + else { + var info = lib.skill[skill]; + if (info && info.fixed && arguments[1] !== true) return skill; + this.unmarkSkill(skill); + game.broadcastAll(function (player, skill) { + player.skills.remove(skill); + player.hiddenSkills.remove(skill); + player.invisibleSkills.remove(skill); + delete player.tempSkills[skill]; + for (var i in player.additionalSkills) { + player.additionalSkills[i].remove(skill); + } + }, this, skill); + this.checkConflict(skill); + if (info) { + if (info.onremove) { + if (typeof info.onremove == "function") { + info.onremove(this, skill); + } + else if (typeof info.onremove == "string") { + if (info.onremove == "storage") { + delete this.storage[skill]; + } + else { + var cards = this.storage[skill]; + if (get.itemtype(cards) == "card") { + cards = [cards]; + } + if (get.itemtype(cards) == "cards") { + if (this.onremove == "discard") { + this.$throw(cards); + } + if (this.onremove == "discard" || this.onremove == "lose") { + game.cardsDiscard(cards); + delete this.storage[skill]; + } + } + } + } + else if (Array.isArray(info.onremove)) { + for (var i = 0; i < info.onremove.length; i++) { + delete this.storage[info.onremove[i]]; + } + } + else if (info.onremove === true) { + delete this.storage[skill]; + } + } + this.removeSkillTrigger(skill); + if (!info.keepSkill) { + this.removeAdditionalSkill(skill); + } + } + this.enableSkill(skill + "_awake"); + } + return skill; + } + addTempSkill(skill, expire, checkConflict) { + if (this.hasSkill(skill) && this.tempSkills[skill] == undefined) return; + this.addSkill(skill, checkConflict, true, true); + + if (!expire) expire = { global: ["phaseAfter", "phaseBeforeStart"] }; + else if (typeof expire == "string" || Array.isArray(expire)) expire = { global: expire }; + this.tempSkills[skill] = expire; + + if (get.objtype(expire) == "object") { + const roles = ["player", "source", "target", "global"]; + for (const i of roles) { + let triggers = expire[i]; + if (!Array.isArray(triggers)) triggers = [triggers]; + triggers.forEach(trigger => lib.hookmap[trigger] = true); + } + } + + return skill; + } + tempBanSkill(skill, expire, log) { + if (this.isTempBanned(skill)) return; + this.setStorage(`temp_ban_${skill}`, true); + + if (log !== false && this.hasSkill(skill)) game.log(this, "的技能", `#g【${get.translation(skill)}】`, "暂时失效了"); + + if (!expire) expire = { global: ["phaseAfter", "phaseBeforeStart"] }; + else if (typeof expire == "string" || Array.isArray(expire)) expire = { global: expire }; + this.when(expire).assign({ + firstDo: true, + }).vars({ + bannedSkill: skill, + }).then(() => { + delete player.storage[`temp_ban_${bannedSkill}`]; + }) + return skill; + } + isTempBanned(skill) { + return this.hasStorage(`temp_ban_${skill}`); + } + attitudeTo(target) { + if (typeof get.attitude == "function") return get.attitude(this, target); + return 0; + } + clearSkills(all) { + var list = []; + var exclude = []; + for (var i = 0; i < arguments.length; i++) { + exclude.push(arguments[i]); + } + for (i = 0; i < this.skills.length; i++) { + if (lib.skill[this.skills[i]].superCharlotte) continue; + if (!all && (lib.skill[this.skills[i]].temp || lib.skill[this.skills[i]].charlotte)) continue; + if (!exclude.contains(this.skills[i])) { + list.push(this.skills[i]); + } + } + if (all) { + for (var i in this.additionalSkills) { + this.removeAdditionalSkill(i); + } + } + this[all ? "removeSkill" : "removeSkillLog"](list); + this.checkConflict(); + this.checkMarks(); + return list; + } + checkConflict(skill) { + if (skill) { + if (this.forbiddenSkills[skill]) { + delete this.forbiddenSkills[skill]; + } + else { + for (var i in this.forbiddenSkills) { + if (this.forbiddenSkills[i].includes(skill)) { + this.forbiddenSkills[i].remove(skill) + if (!this.forbiddenSkills[i].length) { + delete this.forbiddenSkills[i]; + } + } + } + } + } + else { + this.forbiddenSkills = {}; + var forbid = []; + var getName = function (arr) { + var str = ""; + for (var i = 0; i < arr.length; i++) { + str += arr[i] + "+"; + } + return str.slice(0, str.length - 1); + } + var forbidlist = lib.config.forbid.concat(lib.config.customforbid); + var skills = this.getSkills(); + for (var i = 0; i < forbidlist.length; i++) { + if (lib.config.customforbid.contains(forbidlist[i]) || + !lib.config.forbidlist.contains(getName(forbidlist[i]))) { + for (var j = 0; j < forbidlist[i].length; j++) { + if (!skills.contains(forbidlist[i][j])) break; + } + if (j == forbidlist[i].length) { + forbid.push(forbidlist[i]); + } + } + } + for (var i = 0; i < forbid.length; i++) { + if (forbid[i][1] || this.name2) { + this.forbiddenSkills[forbid[i][0]] = this.forbiddenSkills[forbid[i][0]] || []; + if (forbid[i][1]) { + this.forbiddenSkills[forbid[i][0]].add(forbid[i][1]); + } + } + } + } + } + getHistory(key, filter, last) { + if (!key) return this.actionHistory[this.actionHistory.length - 1]; + if (!filter) return this.actionHistory[this.actionHistory.length - 1][key]; + else { + const history = this.getHistory(key); + if (last) { + const lastIndex = history.indexOf(last); + return history.filter((event, index) => { + if (index > lastIndex) return false; + return filter(event); + }) + } + return history.filter(filter); + } + } + checkHistory(key, filter, last) { + if (!key || !filter) return; + else { + const history = this.getHistory(key); + if (last) { + const lastIndex = history.indexOf(last); + history.forEach((event, index) => { + if (index > lastIndex) return false; + filter(event); + }) + } + else { + history.forEach(filter); + } + } + } + hasHistory(key, filter, last) { + const history = this.getHistory(key); + if (!filter || typeof filter != "function") filter = lib.filter.all; + if (last) { + const lastIndex = history.indexOf(last); + return history.some((event, index) => { + if (index > lastIndex) return false; + return filter(event); + }) + } + return history.some(filter); + } + getLastHistory(key, filter, last) { + let history = false; + for (let i = this.actionHistory.length - 1; i >= 0; i--) { + if (this.actionHistory[i].isMe) { + history = this.actionHistory[i]; break; + } + } + if (!history) return null; + if (!key) return history; + if (!filter) return history[key]; + else { + if (last) { + const lastIndex = history.indexOf(last); + return history.filter((event, index) => { + if (index > lastIndex) return false; + return filter(event); + }) + } + return history.filter(filter); + } + } + checkAllHistory(key, filter, last) { + if (!key || !filter) return; + this.actionHistory.forEach((value) => { + let history = value[key]; + if (last && history.includes(last)) { + const lastIndex = history.indexOf(last); + history.forEach((event, index) => { + if (index > lastIndex) return false; + return filter(event); + }); + } + else { + history.forEach(filter); + } + }); + } + getAllHistory(key, filter, last) { + const history = []; + this.actionHistory.forEach((value) => { + if (!key || !value[key]) { + history.push(value); + } + else { + history.push(...value[key]); + } + }) + if (filter) { + if (last) { + const lastIndex = history.indexOf(last); + return history.filter((event, index) => { + if (index > lastIndex) return false; + return filter(event); + }); + } + return history.filter(filter); + } + return history; + } + hasAllHistory(key, filter, last) { + return this.actionHistory.some((value) => { + let history = value[key]; + if (last && history.includes(last)) { + const lastIndex = history.indexOf(last); + if (history.some(function (event, index) { + if (index > lastIndex) return false; + return filter(event); + })) return true; + } + else { + if (history.some(filter)) return true; + } + return false; + }) + } + getLastUsed(num) { + if (typeof num != "number") num = 0; + var history = this.getHistory("useCard"); + if (history.length <= num) return null; + return history[history.length - num - 1]; + } + getStat(key) { + if (!key) return this.stat[this.stat.length - 1]; + return this.stat[this.stat.length - 1][key]; + } + getLastStat(key) { + var stat = false; + for (var i = this.stat.length - 1; i >= 0; i--) { + if (this.stat[i].isMe) { + stat = this.stat[i]; break; + } + } + if (!stat) return null + if (!key) return stat; + return stat[key]; + } + queue(time) { + if (time == false) { + clearTimeout(this.queueTimeout); + this.queueCount = 0; + return; + } + if (time == undefined) time = 500; + var player = this; + player.queueCount++; + this.queueTimeout = setTimeout(function () { + player.queueCount--; + if (player.queueCount == 0) { + player.style.transform = ""; + player.node.avatar.style.transform = ""; + player.node.avatar2.style.transform = ""; + if (game.chess) { + ui.placeChess(player, player.dataset.position); + } + if (player == game.me) ui.me.removeAttribute("style"); + } + }, time) + } + getCardUsable(card, pure) { + var player = this; + if (typeof card == "string") { + card = { name: card }; + } + card = get.autoViewAs(card); + var num = get.info(card).usable; + if (typeof num == "function") num = num(card, player); + num = game.checkMod(card, player, num, "cardUsable", player); + if (typeof num != "number") return Infinity; + if (!pure && _status.currentPhase == player) { + return num - player.countUsed(card); + } + return num; + } + getAttackRange(raw) { + const player = this; + let range = 0; + if (raw) { + range = game.checkMod(player, player, range, "globalFrom", player); + range = game.checkMod(player, player, range, "attackFrom", player); + const equips = player.getCards("e", function (card) { + return !ui.selected.cards || !ui.selected.cards.contains(card); + }); + equips.forEach(card => { + const info = get.info(card, false).distance; + if (info && info.globalFrom) { + range += info.globalFrom; + } + }) + return (player.getEquipRange() - range); + } + let base = game.checkMod(player, "unchanged", "attackRangeBase", player); + if (base != "unchanged") { + range = base; + } + else { + range = player.getEquipRange(); + } + range = game.checkMod(player, range, "attackRange", player); + return range; + } + getEquipRange(cards) { + const player = this; + if (!cards) cards = player.getCards("e", function (card) { + return !ui.selected.cards || !ui.selected.cards.contains(card); + }); + const range = cards.reduce((range, card) => { + let newRange = false; + const info = get.info(card, false); + if (info.distance) { + //如果存在attackRange 则通过attackRange动态获取攻击范围 + if (typeof info.distance.attackRange == "function") { + newRange = info.distance.attackRange(card, player); + } + //否则采用祖宗之法 + else if (typeof info.distance.attackFrom == "number") { + newRange = (1 - info.distance.attackFrom); + } + } + let isN1 = (typeof range == "number"); + let isN2 = (typeof newRange == "number"); + if (isN1 && isN2) return Math.max(range, newRange); + else return (isN1 ? range : newRange); + }, false); + return (typeof range == "number") ? range : 1; + } + getGlobalFrom() { + var player = this; + var range = 0; + range = game.checkMod(player, player, range, "globalFrom", player); + var equips = player.getCards("e", function (card) { + return !ui.selected.cards || !ui.selected.cards.contains(card); + }); + for (var i = 0; i < equips.length; i++) { + var info = get.info(equips[i]).distance; + if (!info) continue; + if (info.globalFrom) { + range += info.globalFrom; + } + } + return (-range); + } + getGlobalTo() { + var player = this; + var range = 0; + range = game.checkMod(player, player, range, "globalTo", player); + var equips = player.getCards("e", function (card) { + return !ui.selected.cards || !ui.selected.cards.contains(card); + }); + for (var i = 0; i < equips.length; i++) { + var info = get.info(equips[i]).distance; + if (!info) continue; + if (info.globalTo) { + range += info.globalTo; + } + } + return (range); + } + getHandcardLimit() { + var num = Math.max(this.hp, 0); + num = game.checkMod(this, num, "maxHandcardBase", this); + num = game.checkMod(this, num, "maxHandcard", this); + num = game.checkMod(this, num, "maxHandcardFinal", this); + return Math.max(0, num); + } + getEnemies(func) { + var player = this; + var targets; + var mode = get.mode(); + if (mode == "identity") { + if (_status.mode == "purple") { + switch (player.identity) { + case "bZhu": case "bZhong": case "rNei": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return ["rZhu", "rZhong", "bNei"].contains(target.identity); + }); break; + case "rZhu": case "rZhong": case "bNei": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return ["bZhu", "bZhong", "rNei"].contains(target.identity); + }); break; + case "rYe": case "bYe": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return !["rYe", "bYe"].contains(target.identity); + }); break; + } + } + else { + var num = get.population("fan"); + switch (player.identity) { + case "zhu": case "zhong": case "mingzhong": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + if (num >= 3) return target.identity == "fan"; + return target.identity == "nei" || target.identity == "fan"; + }); break; + case "nei": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + if (num >= 3) return target.identity == "fan"; + if (game.players.length == 2) return target != player; + return target.identity == "zhong" || target.identity == "mingzhong" || target.identity == "fan"; + }); break; + case "fan": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return target.identity != "fan"; + }); break; + case "commoner": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + if (num >= 3) return target.identity != "fan"; + return target.identity == "fan"; + }); break; + } + } + } + else if (mode == "guozhan") { + if (player.identity == "ye") { + targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return true; + }); + } + else { + var group = lib.character[player.name1][1]; + targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return target.identity == "ye" || lib.character[target.name1][1] != group; + }); + } + } + else if (mode == "doudizhu") { + targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return target.identity != player.identity; + }); + } + else { + targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return target.side != player.side; + }); + } + targets.remove(player); + return targets; + } + getFriends(func) { + var player = this; + var targets; + var mode = get.mode(); + var self = false; + if (func === true) { + func = null; + self = true; + } + if (mode == "identity") { + if (_status.mode == "purple") { + switch (player.identity) { + case "rZhu": case "rZhong": case "bNei": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return ["rZhu", "rZhong", "bNei"].contains(target.identity); + }); break; + case "bZhu": case "bZhong": case "rNei": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return ["bZhu", "bZhong", "rNei"].contains(target.identity); + }); break; + case "rYe": case "bYe": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return ["rYe", "bYe"].contains(target.identity); + }); break; + } + } + else { + switch (player.identity) { + case "zhu": case "zhong": case "mingzhong": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return ["zhu", "zhong", "mingzhong"].contains(target.identity); + }); break; + case "nei": targets = []; break; + case "fan": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return target.identity == "fan"; + }); break; + case "commoner": targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return true; + }); break; + } + } + } + else if (mode == "guozhan") { + if (player.identity == "ye") { + targets = []; + } + else { + var group = lib.character[player.name1][1]; + targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return target.identity != "ye" && lib.character[target.name1][1] == group; + }); + } + } + else if (mode == "doudizhu") { + targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return target.identity == player.identity; + }); + } + else { + targets = game.filterPlayer(function (target) { + if (func && !func(target)) return false; + return target.side == player.side; + }); + } + if (self) { + targets.add(player); + } + else { + targets.remove(player); + } + return targets; + } + isEnemyOf() { + return !this.isFriendOf.apply(this, arguments); + } + isFriendOf(player) { + if (get.mode() == "guozhan") { + if (this == player) return true; + if (this.getStorage("yexinjia_friend").includes(player) || player.getStorage("yexinjia_friend").includes(this)) return true; + if (this.identity == "unknown" || this.identity == "ye") return false; + if (player.identity == "unknown" || player.identity == "ye") return false; + return this.identity == player.identity; + } + if (get.mode() == "doudizhu") { + return this.identity == player.identity; + } + if (this.side != undefined && typeof player.side == "boolean") { + return this.side == player.side; + } + return this == player; + } + isFriendsOf(player) { + return player.getFriends(true).contains(this); + } + isEnemiesOf(player) { + return player.getEnemies().contains(this); + } + isAlive() { + return this.classList.contains("dead") == false; + } + isDead() { + return this.classList.contains("dead"); + } + isDying() { + return _status.dying.contains(this) && this.hp <= 0 && this.isAlive(); + } + isDamaged() { + return this.hp < this.maxHp && !this.storage.nohp; + } + isHealthy() { + return this.hp >= this.maxHp || this.storage.nohp; + } + isMaxHp(only, raw) { + return game.players.every(value => { + if (value.isOut() || value == this) return true; + return only ? value.getHp(raw) < this.getHp(raw) : value.getHp(raw) <= this.getHp(raw); + }); + } + isMinHp(only, raw) { + return game.players.every(value => { + if (value.isOut() || value == this) return true; + return only ? value.getHp(raw) > this.getHp(raw) : value.getHp(raw) >= this.getHp(raw); + }); + } + isMaxCard(only) { + const numberOfCards = this.countCards("he"); + return game.players.every(value => { + if (value.isOut() || value == this) return true; + return only ? value.countCards("he") < numberOfCards : value.countCards("he") <= numberOfCards; + }); + } + isMinCard(only) { + const numberOfCards = this.countCards("he"); + return game.players.every(value => { + if (value.isOut() || value == this) return true; + return only ? value.countCards("he") > numberOfCards : value.countCards("he") >= numberOfCards; + }); + } + isMaxHandcard(only) { + const numberOfHandCards = this.countCards("h"); + return game.players.every(value => { + if (value.isOut() || value == this) return true; + return only ? value.countCards("h") < numberOfHandCards : value.countCards("h") <= numberOfHandCards; + }); + } + isMinHandcard(only) { + const numberOfHandCards = this.countCards("h"); + return game.players.every(value => { + if (value.isOut() || value == this) return true; + return only ? value.countCards("h") > numberOfHandCards : value.countCards("h") >= numberOfHandCards; + }); + } + isMaxEquip(only) { + const numberOfEquipAreaCards = this.countCards("e"); + return game.players.every(value => { + if (value.isOut() || value == this) return true; + return only ? value.countCards("e") < numberOfEquipAreaCards : value.countCards("e") <= numberOfEquipAreaCards; + }); + } + isMinEquip(only) { + const numberOfEquipAreaCards = this.countCards("e"); + return game.players.every(value => { + if (value.isOut() || value == this) return true; + return only ? value.countCards("e") > numberOfEquipAreaCards : value.countCards("e") >= numberOfEquipAreaCards; + }); + } + isLinked() { + if (get.is.linked2(this)) { + return this.classList.contains("linked2"); + } + return this.classList.contains("linked"); + } + isTurnedOver() { + return this.classList.contains("turnedover"); + } + isOut() { + return this.classList.contains("out"); + } + isMin(distance) { + if (distance && lib.config.mode != "stone") return false; + if (this.forcemin) return true; + return this.classList.contains("minskin") && !game.chess; + } + isIn() { + return this.classList.contains("dead") == false && this.classList.contains("out") == false && !this.removed; + } + isUnseen(num) { + switch (num) { + case 0: return this.classList.contains("unseen"); + case 1: return this.classList.contains("unseen2"); + case 2: return this.classList.contains("unseen") || this.classList.contains("unseen2"); + default: return this.classList.contains("unseen") && (!this.name2 || this.classList.contains("unseen2")); + } + } + isUnderControl(self, me) { + me = (me || game.me); + var that = this._trueMe || this; + if (that.isMad() || game.notMe) return false; + if (this === me) { + if (self) return true; + return false; + } + if (that === me || this == me._trueMe) return true; + if (_status.connectMode) return false; + if (lib.config.mode == "versus") { + if (_status.mode == "three") return this.side == me.side; + if (_status.mode == "standard") return lib.storage.single_control && this.side == me.side; + if (_status.mode == "four") return get.config("four_phaseswap") && this.side == me.side; + if (_status.mode == "two") return get.config("two_phaseswap") && this.side == me.side; + return false; + } + else if (lib.config.mode == "boss") { + if (me.side) return false; + return this.side == me.side && get.config("single_control"); + } + else if (game.chess) { + if (lib.config.mode == "chess") { + if (_status.mode == "combat" && !get.config("single_control")) return false; + } + return this.side == me.side; + } + return false; + } + isOnline() { + if (this.ws && lib.node && !this.ws.closed && this.ws.inited && !this.isAuto) { + return true; + } + return false; + } + isOnline2() { + if (this.ws && lib.node && !this.ws.closed) { + return true; + } + return false; + } + isOffline() { + if (this.ws && lib.node && this.ws.closed) { + return true; + } + return false; + } + checkShow(skill, showonly) { + var sourceSkill = get.info(skill); + var noshow = false; + if (sourceSkill && sourceSkill.sourceSkill) { + skill = sourceSkill.sourceSkill; + } + if (lib.skill.global.contains(skill)) return false; + if (get.mode() != "guozhan" || game.expandSkills(this.getSkills()).contains(skill)) { + if (showonly) { + return false; + } + else { + noshow = true; + } + } + var unseen0 = this.isUnseen(0); + var name1 = this.name1 || this.name; + if (lib.character[name1] && (!showonly || unseen0)) { + var skills = game.expandSkills(lib.character[name1][3].slice(0)); + if (skills.contains(skill)) { + if (!noshow && this.isUnseen(0)) this.showCharacter(0); + return "main"; + } + } + var unseen1 = this.isUnseen(1); + var name2 = this.name2; + if (lib.character[name2] && (!showonly || unseen1)) { + var skills = game.expandSkills(lib.character[name2][3].slice(0)); + if (skills.contains(skill)) { + if (!noshow && this.isUnseen(1)) this.showCharacter(1); + return "vice"; + } + } + return false; + } + needsToDiscard(filter, add) { + let cards = this.getCards("h", card => !this.canIgnoreHandcard(card)), num = 0; + if (get.itemtype(add) === "cards") cards.addArray(add); + else if (get.itemtype(add) === "card") cards.push(add); + if (typeof filter === "number") num = filter; + else if (typeof filter === "function") cards = cards.filter(card => { + return filter(card); + }); + return Math.max(0, num + cards.length - this.getHandcardLimit()); + } + distanceTo(target, method) { + return get.distance(this, target, method); + } + distanceFrom(target, method) { + return get.distance(target, this, method); + } + hasSkill(skill, arg2, arg3, arg4) { + return game.expandSkills(this.getSkills(arg2, arg3, arg4)).contains(skill); + } + hasStockSkill(skill, arg1, arg2, arg3) { + return game.expandSkills(this.getStockSkills(arg1, arg2, arg3)).contains(skill); + } + isZhu2() { + var player = this, mode = get.mode(); + if (!this.isZhu) return false; + if (mode == "identity") { + if (_status.mode == "stratagem" && !this.identityShown) return false; + return true; + } + if (mode == "versus" && (_status.mode == "four" || _status.mode == "guandu")) return true; + return false; + } + hasZhuSkill(skill, player) { + if (!this.hasSkill(skill)) return false; + if (player) { + var mode = get.mode(); + if (mode == "identity" && _status.mode == "purple") { + if (this.identity.slice(0, 1) != player.identity.slice(0, 1)) return false; + } + if (mode == "versus" && (_status.mode == "four" || _status.mode == "guandu")) { + if (this.side != player.side) return false; + } + } + return true; + } + hasGlobalTag(tag, arg) { + var skills = lib.skill.global.slice(0); + game.expandSkills(skills); + for (var i = 0; i < skills.length; i++) { + var info = lib.skill[skills[i]]; + if (info && info.ai) { + if (info.ai.skillTagFilter && info.ai[tag] && + info.ai.skillTagFilter(this, tag, arg) === false) continue; + if (typeof info.ai[tag] == "string") { + if (info.ai[tag] == arg) return true; + } + else if (info.ai[tag]) { + return true; + } + } + } + return false; + } + hasSkillTag(tag, hidden, arg, globalskill) { + var skills = this.getSkills(hidden); + if (globalskill) { + skills.addArray(lib.skill.global); + } + game.expandSkills(skills); + for (var i = 0; i < skills.length; i++) { + var info = lib.skill[skills[i]]; + if (info && info.ai) { + if (info.ai.skillTagFilter && info.ai[tag] && + info.ai.skillTagFilter(this, tag, arg) === false) continue; + if (typeof info.ai[tag] == "string") { + if (info.ai[tag] == arg) return true; + } + else if (info.ai[tag]) { + return true; + } + } + } + return false; + } + hasJudge(name) { + if (name && typeof name == "object") { + name = name.viewAs || name.name; + } + var judges = this.getCards("j"); + for (var i = 0; i < judges.length; i++) { + if ((judges[i].viewAs || judges[i].name) == name) { + return true; + } + } + return false; + } + hasFriend() { + for (var i = 0; i < game.players.length; i++) { + if (game.players[i].isOut()) continue; + if (game.players[i] != this && get.attitude(game.players[i], this) > 0) { + return true; + } + } + return false; + } + hasUnknown(num) { + var mode = get.mode(); + if (typeof num != "number") { + num = 0; + } + if (mode == "identity" || mode == "guozhan") { + for (var i = 0; i < game.players.length; i++) { + if (game.players[i].ai.shown == 0 && game.players[i] != this) { + num--; + if (num <= 0) { + return true; + } + } + } + } + return false; + } + isUnknown(player) { + var mode = get.mode(); + if (mode == "identity" || mode == "guozhan") { + if (this.ai.shown == 0 && this != player) { + return true; + } + } + return false; + } + hasWuxie(info) { + if (this.countCards("hs", "wuxie")) return true; + var skills = this.getSkills("invisible").concat(lib.skill.global); + game.expandSkills(skills); + for (var i = 0; i < skills.length; i++) { + var ifo = get.info(skills[i]); + if (ifo.hiddenWuxie && info) { + if (typeof ifo.hiddenWuxie == "function" && ifo.hiddenWuxie(this, info)) { + return true; + } + } + else if (ifo.viewAs && typeof ifo.viewAs != "function" && ifo.viewAs.name == "wuxie") { + if (!ifo.viewAsFilter || ifo.viewAsFilter(this)) { + return true; + } + } + else { + var hiddenCard = ifo.hiddenCard; + if (typeof hiddenCard == "function" && hiddenCard(this, "wuxie")) { + return true; + } + } + } + return false; + } + hasSha(respond, noauto) { + if (this.countCards("hs", "sha")) return true; + if (this.countCards("hs", "hufu")) return true; + if (!noauto && this.countCards("hs", "yuchanqian")) return true; + if (this.hasSkillTag("respondSha", true, respond ? "respond" : "use", true)) return true; + return this.hasUsableCard("sha"); + } + hasShan() { + if (this.countCards("hs", "shan")) return true; + if (this.countCards("hs", "hufu")) return true; + if (this.hasSkillTag("respondShan", true, null, true)) return true; + return this.hasUsableCard("shan"); + } + mayHaveSha(viewer, type, ignore) { + if ((this.hp > 2 || !this.isZhu && this.hp > 1) && this.hasSkillTag("respondSha", true, type, true)) return true; + if (get.itemtype(viewer) !== "player") viewer = _status.event.player; + let cards, selected = get.copy(ui.selected.cards); + if (get.itemtype(ignore) === "cards") selected.addArray(ignore); + else if (get.itemtype(ignore) === "card") selected.add(ignore); + /*if(this===viewer||get.itemtype(viewer)==="player"&&viewer.hasSkillTag("viewHandcard",null,this,true)) cards=this.getCards("h"); + else cards=this.getShownCards();*/ + if (this === viewer || get.itemtype(viewer) == "player") { + cards = this.getKnownCards(viewer); + } else { + cards = this.getShownCards(); + } + if (cards.some(card => { + if (selected.includes(card)) return false; + let name = get.name(card, this); + if (name == "sha" || name == "hufu" || name == "yuchanqian") { + if (type === "use") return lib.filter.cardEnabled(card, this); + if (type === "respond") return lib.filter.cardRespondable(card, this); + return true; + } + return false; + })) return true; + let hs = this.getCards("hs").filter(i => !cards.includes(i) && !selected.includes(i)).length; + if (hs === 0) return false; + return Math.pow(hs + (this.isPhaseUsing() ? 6 : 4), 2) > 100 * _status.event.getRand("mayHaveSha"); + } + mayHaveShan(viewer, type, ignore) { + if ((this.hp > 2 || !this.isZhu && this.hp > 1) && this.hasSkillTag("respondShan", true, type, true)) return true; + if (get.itemtype(viewer) !== "player") viewer = _status.event.player; + let cards, selected = get.copy(ui.selected.cards); + if (get.itemtype(ignore) === "cards") selected.addArray(ignore); + else if (get.itemtype(ignore) === "card") selected.add(ignore); + /*if(this===viewer||get.itemtype(viewer)==="player"&&viewer.hasSkillTag("viewHandcard",null,this,true)) cards=this.getCards("h"); + else cards=this.getShownCards();*/ + if (this === viewer || get.itemtype(viewer) == "player") { + cards = this.getKnownCards(viewer); + } else { + cards = this.getShownCards(); + } + if (cards.some(card => { + if (selected.includes(card)) return false; + let name = get.name(card, this); + if (name === "shan" || name === "hufu") { + if (type === "use") return lib.filter.cardEnabled(card, this, "forceEnable"); + if (type === "respond") return lib.filter.cardRespondable(card, this); + return true; + } + return false; + })) return true; + let hs = this.getCards("hs").filter(i => !cards.includes(i) && !selected.includes(i)).length; + if (hs === 0) return false; + return Math.pow(hs + (this.isPhaseUsing() ? 3 : 5), 2) > 100 * _status.event.getRand("mayHaveShan"); + } + hasCard(name, position) { + if (typeof name == "function") { + var hs = this.getCards(position); + for (var i = 0; i < hs.length; i++) { + if (name(hs[i])) return true; + } + } + else { + if (this.countCards(position, name)) return true; + } + return false; + } + getEquip(name) { + var es = this.getCards("e"); + if (typeof name == "object" && get.info(name)) { + name = get.info(name).subtype; + if (name) { + name = parseInt(name[5]); + } + } + else if (typeof name == "string" && name.startsWith("equip") && name.length == 6) { + name = parseInt(name[5]); + } + if (!name) { + return null; + } + for (var i = 0; i < es.length; i++) { + if (typeof name === "number") { + if (get.info(es[i]).subtype === "equip" + name) { + return es[i]; + } + } + else { + if (es[i].name === name) return es[i]; + var source = get.info(es[i]).source; + if (Array.isArray(source) && source.contains(name)) { + return es[i]; + } + } + } + return null; + } + getJudge(name) { + var judges = this.node.judges.childNodes; + for (var i = 0; i < judges.length; i++) { + if (judges[i].classList.contains("removing")) continue; + if ((judges[i].viewAs || judges[i].name) == name) { + return judges[i]; + } + } + return null; + } + $drawAuto(cards, target) { + if (this.isUnderControl(true, target)) { + this.$draw(cards); + } + else { + this.$draw(cards.length); + } + } + $draw(num, init, config) { + if (init !== false && init !== "nobroadcast") { + game.broadcast(function (player, num, init, config) { + player.$draw(num, init, config) + }, this, num, init, config); + } + var cards, node; + if (get.itemtype(num) == "cards") { + cards = num; + num = cards.length; + } + else if (get.itemtype(num) == "card") { + cards = [num]; + num = 1; + } + if (init !== false) { + if (cards) { + game.addVideo("drawCard", this, get.cardsInfo(cards)); + } + else { + game.addVideo("draw", this, num); + } + } + if (cards) { + cards = cards.slice(0); + node = cards.shift().copy("thrown", "drawingcard"); + } + else { + node = ui.create.div(".card.thrown.drawingcard"); + } + node.fixed = true; + node.hide(); + + var dx, dy; + if (game.chess) { + var rect = this.getBoundingClientRect(); + + if (rect.left <= 80) { + dx = -10; + if (rect.top <= 80) { + dy = -10; + } + else if (rect.top + rect.height + 80 >= ui.chessContainer.offsetHeight) { + dy = 10; + } + else { + dy = 0; + } + } + else if (rect.left + rect.width + 80 >= ui.chessContainer.offsetWidth) { + dx = 10; + if (rect.top <= 80) { + dy = -10; + } + else if (rect.top + rect.height + 80 >= ui.chessContainer.offsetHeight) { + dy = 10; + } + else { + dy = 0; + } + } + else if (rect.top <= 80) { + dx = 0; + dy = -10; + } + else if (rect.top + rect.height + 80 >= ui.chessContainer.offsetHeight) { + dx = 0; + dy = 10; + } + else { + dx = rect.left + this.offsetWidth / 2 - ui.arena.offsetWidth / 2; + dy = rect.top + this.offsetHeight / 2 - ui.arena.offsetHeight / 2; + } + + var coeff = 240 / Math.sqrt(dx * dx + dy * dy); + dx *= coeff; + dy *= coeff; + + node.style.left = (this.getLeft() + this.offsetWidth / 2 - 52 - dx) + "px"; + node.style.top = (this.getTop() + this.offsetHeight / 2 - 52 - dy) + "px"; + this.parentNode.appendChild(node); + } + else { + this.parentNode.appendChild(node); + node.style.left = "calc(50% - 52px)"; + node.style.top = "calc(50% - 52px)"; + + dx = this.getLeft() + this.offsetWidth / 2 - 52 - node.offsetLeft; + dy = this.getTop() + this.offsetHeight / 2 - 52 - node.offsetTop; + + if (get.is.mobileMe(this)) { + dx += get.cardOffset(); + if (ui.arena.classList.contains("oblongcard")) { + dy -= 16; + } + } + } + node.style.transitionDuration = "0.8s"; + ui.refresh(node); + if (typeof num == "number" && init !== false) { + config = { + total: num, + current: 1 + } + } + if (config && config.total > 1) { + var total = config.total, current = config.current; + var dxtotal; + if (total <= 5) { + dxtotal = Math.min(80, (total - 1) * 20); + dx += -dxtotal + 2 * dxtotal * (current - 1) / (total - 1) + } + else { + var total2 = Math.floor(total / 2); + if (current <= total2) { + total = total2; + dy -= 20; + } + else { + current -= total2; + total -= total2; + dy += 20; + } + dxtotal = Math.min(80, (total - 1) * 20); + dx += -dxtotal + 2 * dxtotal * (current - 1) / (total - 1) + } + config.current++; + } + if (node.style.transform && node.style.transform != "none" && node.style.transform.indexOf("translate") == -1) { + node.style.transform += " translate(" + dx + "px," + dy + "px)"; + } + else { + node.style.transform = "translate(" + dx + "px," + dy + "px)"; + } + node.show(); + + node.listenTransition(function () { + node.style.transitionDuration = "0.5s"; + ui.refresh(node); + node.delete(); + }); + var that = this; + if (num && num > 1) { + if (config && config.total > 1) { + setTimeout(function () { + if (cards) { + that.$draw(cards, false, config) + } + else { + that.$draw(num - 1, false, config) + } + }, 50) + } + else { + setTimeout(function () { + if (cards) { + that.$draw(cards, false, config) + } + else { + that.$draw(num - 1, false, config) + } + }, 200); + } + } + } + $compareMultiple(card1, targets, cards) { + game.broadcast(function (player, card1, targets, cards) { + player.$compareMultiple(card1, targets, cards); + }, this, card1, targets, cards); + game.addVideo("compareMultiple", this, [get.cardInfo(card1), get.targetsInfo(targets), get.cardsInfo(cards)]); + var player = this; + var node1 = player.$throwxy2(card1, + "calc(50% - 52px)", "calc(50% + 10px)", "perspective(600px) rotateY(180deg)", true + ); + if (lib.config.cardback_style != "default") { + node1.style.transitionProperty = "none"; + ui.refresh(node1); + node1.classList.add("infohidden"); + ui.refresh(node1); + node1.style.transitionProperty = ""; + } + else { + node1.classList.add("infohidden"); + } + + node1.style.transform = "perspective(600px) rotateY(180deg) translateX(0)"; + var onEnd01 = function () { + //node1.removeEventListener("webkitTransitionEnd",onEnd01); + setTimeout(function () { + node1.style.transition = "all ease-in 0.3s"; + node1.style.transform = "perspective(600px) rotateY(270deg) translateX(52px)"; + var onEnd = function () { + node1.classList.remove("infohidden"); + node1.style.transition = "all 0s"; + ui.refresh(node1); + node1.style.transform = "perspective(600px) rotateY(-90deg) translateX(52px)"; + ui.refresh(node1); + node1.style.transition = ""; + ui.refresh(node1); + node1.style.transform = ""; + //node1.removeEventListener("webkitTransitionEnd",onEnd); + } + node1.listenTransition(onEnd); + }, 300); + }; + node1.listenTransition(onEnd01); + + setTimeout(function () { + var left0 = -targets.length * 52 - (targets.length - 1) * 8; + for (var i = 0; i < targets.length; i++) { + (function (target, card2, i) { + var left = left0 + i * 120; + var node2; + if (left < 0) { + node2 = target.$throwxy2(card2, + "calc(50% - " + (-left) + "px)", "calc(50% - 114px)", "perspective(600px) rotateY(180deg)", true + ); + } + else { + node2 = target.$throwxy2(card2, + "calc(50% + " + left + "px)", "calc(50% - 114px)", "perspective(600px) rotateY(180deg)", true + ); + } + if (lib.config.cardback_style != "default") { + node2.style.transitionProperty = "none"; + ui.refresh(node2); + node2.classList.add("infohidden"); + ui.refresh(node2); + node2.style.transitionProperty = ""; + } + else { + node2.classList.add("infohidden"); + } + node2.style.transform = "perspective(600px) rotateY(180deg) translateX(0)"; + var onEnd02 = function () { + //node2.removeEventListener("webkitTransitionEnd",onEnd02); + setTimeout(function () { + node2.style.transition = "all ease-in 0.3s"; + node2.style.transform = "perspective(600px) rotateY(270deg) translateX(52px)"; + var onEnd = function () { + node2.classList.remove("infohidden"); + node2.style.transition = "all 0s"; + ui.refresh(node2); + node2.style.transform = "perspective(600px) rotateY(-90deg) translateX(52px)"; + ui.refresh(node2); + node2.style.transition = ""; + ui.refresh(node2); + node2.style.transform = ""; + //node2.removeEventListener("webkitTransitionEnd",onEnd); + } + node2.listenTransition(onEnd); + }, 200); + }; + node2.listenTransition(onEnd02); + }(targets[i], cards[i], i)) + } + }, 200); + } + $compare(card1, target, card2) { + game.broadcast(function (player, target, card1, card2) { + player.$compare(card1, target, card2); + }, this, target, card1, card2); + game.addVideo("compare", this, [get.cardInfo(card1), target.dataset.position, get.cardInfo(card2)]); + var player = this; + var node1 = player.$throwxy2(card1, + "calc(50% - 114px)", "calc(50% - 52px)", "perspective(600px) rotateY(180deg)", true + ); + if (lib.config.cardback_style != "default") { + node1.style.transitionProperty = "none"; + ui.refresh(node1); + node1.classList.add("infohidden"); + ui.refresh(node1); + node1.style.transitionProperty = ""; + } + else { + node1.classList.add("infohidden"); + } + + node1.style.transform = "perspective(600px) rotateY(180deg) translateX(0)"; + var onEnd01 = function () { + //node1.removeEventListener("webkitTransitionEnd",onEnd01); + setTimeout(function () { + node1.style.transition = "all ease-in 0.3s"; + node1.style.transform = "perspective(600px) rotateY(270deg) translateX(52px)"; + var onEnd = function () { + node1.classList.remove("infohidden"); + node1.style.transition = "all 0s"; + ui.refresh(node1); + node1.style.transform = "perspective(600px) rotateY(-90deg) translateX(52px)"; + ui.refresh(node1); + node1.style.transition = ""; + ui.refresh(node1); + node1.style.transform = ""; + //node1.removeEventListener("webkitTransitionEnd",onEnd); + } + node1.listenTransition(onEnd); + }, 300); + }; + node1.listenTransition(onEnd01); + setTimeout(function () { + var node2 = target.$throwxy2(card2, + "calc(50% + 10px)", "calc(50% - 52px)", "perspective(600px) rotateY(180deg)", true + ); + if (lib.config.cardback_style != "default") { + node2.style.transitionProperty = "none"; + ui.refresh(node2); + node2.classList.add("infohidden"); + ui.refresh(node2); + node2.style.transitionProperty = ""; + } + else { + node2.classList.add("infohidden"); + } + node2.style.transform = "perspective(600px) rotateY(180deg) translateX(0)"; + var onEnd02 = function () { + //node2.removeEventListener("webkitTransitionEnd",onEnd02); + setTimeout(function () { + node2.style.transition = "all ease-in 0.3s"; + node2.style.transform = "perspective(600px) rotateY(270deg) translateX(52px)"; + var onEnd = function () { + node2.classList.remove("infohidden"); + node2.style.transition = "all 0s"; + ui.refresh(node2); + node2.style.transform = "perspective(600px) rotateY(-90deg) translateX(52px)"; + ui.refresh(node2); + node2.style.transition = ""; + ui.refresh(node2); + node2.style.transform = ""; + //node2.removeEventListener("webkitTransitionEnd",onEnd); + } + node2.listenTransition(onEnd); + }, 200); + }; + node2.listenTransition(onEnd02); + }, 200); + } + $throw(card, time, init, nosource) { + if (typeof card == "number") { + var tmp = card; + card = []; + while (tmp--) { + var cardx = ui.create.card(); + cardx.classList.add("infohidden"); + cardx.classList.add("infoflip"); + card.push(cardx); + } + } + if (init !== false) { + if (init !== "nobroadcast") { + game.broadcast(function (player, card, time, init, nosource) { + player.$throw(card, time, init, nosource); + }, this, card, time, init); + } + if (get.itemtype(card) != "cards") { + if (get.itemtype(card) == "card") { + card = [card]; + } + else { + return; + } + } + game.addVideo("throw", this, [get.cardsInfo(card), time, nosource]); + } + if (game.chess) { + this.chessFocus(); + } + if (get.itemtype(card) == "cards") { + var node; + for (var i = 0; i < card.length; i++) { + node = this.$throw(card[i], time, false, nosource); + } + return node; + } + else { + var node; + if (card == undefined || card.length == 0) return; + node = this.$throwordered(card.copy("thrown"), nosource); + if (time != undefined) { + node.fixed = true; + setTimeout(function () { node.delete() }, time); + } + lib.listenEnd(node); + return node; + } + } + $throwordered() { + return this.$throwordered2.apply(this, arguments); + // if(lib.config.low_performance){ + // return this.$throwordered2.apply(this,arguments); + // } + // else{ + // return this.$throwordered1.apply(this,arguments); + // } + } + $throwordered1(node, nosource) { + node.classList.add("thrown"); + node.hide(); + node.style.transitionProperty = "left,top,opacity,transform"; + for (var i = 0; i < ui.thrown.length; i++) { + if (ui.thrown[i].parentNode != ui.arena || + ui.thrown[i].classList.contains("removing")) { + ui.thrown.splice(i--, 1); + } + } + ui.thrown.push(node); + var uithrowns = ui.thrown.slice(0); + var tops; + if (game.chess) { + switch (Math.floor((ui.thrown.length - 1) / 4)) { + case 0: + tops = ["calc(50% - 82px)"]; + break; + case 1: + tops = ["calc(50% - 139px)", "calc(50% - 25px)"]; + break; + case 2: + tops = ["calc(50% - 196px)", "calc(50% - 82px)", "calc(50% + 32px)"]; + break; + default: + tops = ["calc(50% - 253px)", "calc(50% - 139px)", + "calc(50% - 25px)", "calc(50% + 89px)"]; + } + } + else { + switch (Math.floor((ui.thrown.length - 1) / 4)) { + case 0: + tops = ["calc(50% - 52px)"]; + break; + case 1: + tops = ["calc(50% - 109px)", "calc(50% + 5px)"]; + break; + case 2: + tops = ["calc(50% - 166px)", "calc(50% - 52px)", "calc(50% + 62px)"]; + break; + default: + tops = ["calc(50% - 223px)", "calc(50% - 109px)", + "calc(50% + 5px)", "calc(50% + 119px)"]; + } + } + while (uithrowns.length) { + var throwns = uithrowns.splice(0, Math.min(uithrowns.length, 4)); + switch (throwns.length) { + case 1: + throwns[0].style.left = "calc(50% - 52px)"; + break; + case 2: + throwns[0].style.left = "calc(50% - 109px)"; + throwns[1].style.left = "calc(50% + 5px)"; + break; + case 3: + throwns[0].style.left = "calc(50% - 166px)"; + throwns[1].style.left = "calc(50% - 52px)"; + throwns[2].style.left = "calc(50% + 62px)"; + break; + case 4: + throwns[0].style.left = "calc(50% - 223px)"; + throwns[1].style.left = "calc(50% - 109px)"; + throwns[2].style.left = "calc(50% + 5px)"; + throwns[3].style.left = "calc(50% + 119px)"; + break; + } + var top; + if (tops.length) { + top = tops.shift(); + } + else { + if (game.chess) { + top = "calc(50% - 82px)"; + } + else { + top = "calc(50% - 52px)"; + } + } + for (var i = 0; i < throwns.length; i++) { + throwns[i].style.top = top; + } + } + if (nosource) { + node.style.transform = "scale(0)"; + node.classList.add("center"); + } + else { + var parseCalc = function (str) { + var per = str.slice(str.indexOf("calc(") + 5, str.indexOf("%")); + var add = str.slice(str.indexOf("%") + 1, str.indexOf("px")).replace(/\s/g, ""); + return [parseInt(per), parseInt(add)]; + } + var nx = parseCalc(node.style.left); + var ny = parseCalc(node.style.top); + nx = nx[0] * ui.arena.offsetWidth / 100 + nx[1]; + ny = ny[0] * ui.arena.offsetHeight / 100 + ny[1]; + var dx, dy; + if (game.chess) { + var rect = this.getBoundingClientRect(); + dx = rect.left + this.offsetWidth / 2 - 52 - nx; + dy = rect.top + this.offsetHeight / 2 - 52 - ny; + } + else { + dx = this.getLeft() + this.offsetWidth / 2 - 52 - nx; + dy = this.getTop() + this.offsetHeight / 2 - 52 - ny; + if (get.is.mobileMe(this)) { + dx += get.cardOffset(); + if (ui.arena.classList.contains("oblongcard")) { + dy -= 16; + } + } + } + if (node.style.transform && node.style.transform != "none" && node.style.transform.indexOf("translate") == -1) { + node.style.transform += " translate(" + dx + "px," + dy + "px)"; + } + else { + node.style.transform = "translate(" + dx + "px," + dy + "px)"; + } + } + ui.arena.appendChild(node); + ui.refresh(node); + node.style.transform = ""; + node.show(); + lib.listenEnd(node); + return node; + } + $throwordered2(node, nosource) { + node.classList.add("thrown"); + node.classList.add("center"); + node.hide(); + node.style.transitionProperty = "left,top,opacity,transform"; + + if (nosource) { + // node.style.transform="scale(0)"; + } + else { + var nx = [50, -52]; + var ny = [50, -52]; + nx = nx[0] * ui.arena.offsetWidth / 100 + nx[1]; + ny = ny[0] * ui.arena.offsetHeight / 100 + ny[1]; + var dx, dy; + if (game.chess) { + var rect = this.getBoundingClientRect(); + dx = rect.left + this.offsetWidth / 2 - 52 - nx; + dy = rect.top + this.offsetHeight / 2 - 52 - ny; + } + else { + dx = this.getLeft() + this.offsetWidth / 2 - 52 - nx; + dy = this.getTop() + this.offsetHeight / 2 - 52 - ny; + if (get.is.mobileMe(this)) { + dx += get.cardOffset(); + if (ui.arena.classList.contains("oblongcard")) { + dy -= 16; + } + } + } + if (node.style.transform && node.style.transform != "none" && node.style.transform.indexOf("translate") == -1) { + node.style.transform += " translate(" + dx + "px," + dy + "px)"; + } + else { + node.style.transform = "translate(" + dx + "px," + dy + "px)"; + } + } + ui.arena.appendChild(node); + ui.refresh(node); + + for (var i = 0; i < ui.thrown.length; i++) { + if (ui.thrown[i].parentNode != ui.arena || + ui.thrown[i].classList.contains("removing")) { + ui.thrown.splice(i--, 1); + } + } + ui.thrown.push(node); + var uithrowns = ui.thrown.slice(0); + var tops; + switch (Math.floor((ui.thrown.length - 1) / 4)) { + case 0: + tops = [0]; + break; + case 1: + tops = [-57, 57]; + break; + case 2: + tops = [-114, 0, 114]; + break; + default: + tops = [-171, -57, 57, 171]; + } + while (uithrowns.length) { + var throwns = uithrowns.splice(0, Math.min(uithrowns.length, 4)); + switch (throwns.length) { + case 1: + throwns[0]._transthrown = "translate(0px,"; + break; + case 2: + throwns[0]._transthrown = "translate(-57px,"; + throwns[1]._transthrown = "translate(57px,"; + break; + case 3: + throwns[0]._transthrown = "translate(-114px,"; + throwns[1]._transthrown = "translate(0,"; + throwns[2]._transthrown = "translate(114px,"; + break; + case 4: + throwns[0]._transthrown = "translate(-171px,"; + throwns[1]._transthrown = "translate(-57px,"; + throwns[2]._transthrown = "translate(57px,"; + throwns[3]._transthrown = "translate(171px,"; + break; + } + var top; + if (tops.length) { + top = tops.shift(); + } + else { + top = 0; + } + if (game.chess) { + top -= 30; + } + for (var i = 0; i < throwns.length; i++) { + throwns[i].style.transform = throwns[i]._transthrown + top + "px)"; + delete throwns[i]._transthrown; + } + } + + node.show(); + lib.listenEnd(node); + return node; + } + $throwxy(card, left, top) { + var node = card.copy("thrown", "thrownhighlight"); + node.dataset.position = this.dataset.position; + node.hide(); + node.style.transitionProperty = "left,top,opacity"; + + ui.arena.appendChild(node); + ui.refresh(node); + node.show(); + node.style.left = left; + node.style.top = top; + lib.listenEnd(node); + return node; + } + $throwxy2(card, left, top, trans, flipx, flipy) { + if (game.chess) { + return this.$throwxy.apply(this, arguments); + } + var node = card.copy("thrown", "thrownhighlight"); + node.style.left = left; + node.style.top = top; + node.hide(); + // node.style.transitionProperty="left,top,opacity,transform"; + + var parseCalc = function (str) { + var per = str.slice(str.indexOf("calc(") + 5, str.indexOf("%")); + var add = str.slice(str.indexOf("%") + 1, str.indexOf("px")).replace(/\s/g, ""); + return [parseInt(per), parseInt(add)]; + } + var nx = parseCalc(node.style.left); + var ny = parseCalc(node.style.top); + nx = nx[0] * ui.arena.offsetWidth / 100 + nx[1]; + ny = ny[0] * ui.arena.offsetHeight / 100 + ny[1]; + var dx = this.getLeft() + this.offsetWidth / 2 - 52 - nx; + var dy = this.getTop() + this.offsetHeight / 2 - 52 - ny; + if (flipx) dx = -dx; + if (flipy) dy = -dy; + if (trans) { + node.style.transform = trans + " translate(" + dx + "px," + dy + "px)"; + } + else { + node.style.transform = "translate(" + dx + "px," + dy + "px)"; + } + + ui.arena.appendChild(node); + ui.refresh(node); + node.show(); + // node.style.transform=trans||""; + lib.listenEnd(node); + return node; + } + throwDice(num) { + if (typeof num != "number") { + num = get.rand(6) + 1; + _status.event.num = num; + } + if (!game.online) { + game.pause(); + } + game.broadcastAll(function (num) { + var diceContainer = ui.create.div(".fullsize.dice-container", ui.window); + ui.window.classList.add("dicepaused"); + var dice = ui.create.div(".dice"); + var side; + + side = ui.create.div(".side.front", dice); + ui.create.div(".dot.center", side); + ui.create.div(".side.front.inner", dice); + + side = ui.create.div(".side.top", dice); + ui.create.div(".dot.dtop.dleft", side); + ui.create.div(".dot.dbottom.dright", side); + ui.create.div(".side.top.inner", dice); + + side = ui.create.div(".side.right", dice); + ui.create.div(".dot.dtop.dleft", side); + ui.create.div(".dot.center", side); + ui.create.div(".dot.dbottom.dright", side); + ui.create.div(".side.right.inner", dice); + + side = ui.create.div(".side.left", dice); + ui.create.div(".dot.dtop.dleft", side); + ui.create.div(".dot.dtop.dright", side); + ui.create.div(".dot.dbottom.dleft", side); + ui.create.div(".dot.dbottom.dright", side); + ui.create.div(".side.left.inner", dice); + + side = ui.create.div(".side.bottom", dice); + ui.create.div(".dot.center", side); + ui.create.div(".dot.dtop.dleft", side); + ui.create.div(".dot.dtop.dright", side); + ui.create.div(".dot.dbottom.dleft", side); + ui.create.div(".dot.dbottom.dright", side); + ui.create.div(".side.bottom.inner", dice); + + side = ui.create.div(".side.back", dice); + ui.create.div(".dot.dtop.dleft", side); + ui.create.div(".dot.dtop.dright", side); + ui.create.div(".dot.dbottom.dleft", side); + ui.create.div(".dot.dbottom.dright", side); + ui.create.div(".dot.center dleft", side); + ui.create.div(".dot.center dright", side); + ui.create.div(".side.back.inner", dice); + + ui.create.div(".side.cover.x", dice); + ui.create.div(".side.cover.y", dice); + ui.create.div(".side.cover.z", dice); + + var map = { + 1: [75, 0, 45], + 2: [-15, 45, 0], + 3: [165, -45, 90], + 4: [345, -45, 90], + 5: [345, -45, 180], + 6: [255, 0, 135] + }; + dice.roll = function (deg) { + if (typeof deg == "number") { + dice.current[0] += deg; + deg = dice.current; + } + deg = deg.slice(0); + dice.current = deg; + this.style.transform = "rotateX(" + deg[0] + "deg) rotateY(" + deg[1] + "deg) rotateZ(" + deg[2] + "deg)"; + }; + dice.roll(map[num]); + diceContainer.appendChild(dice); + ui.refresh(dice); + dice.roll(1025); + + dice.addEventListener("webkitTransitionEnd", function () { + if (!dice.over) { + dice.style.transition = "transform 0.8s ease"; + dice.roll(-20); + dice.over = true; + } + else if (!dice.resumed) { + setTimeout(function () { + diceContainer.delete(); + ui.window.classList.remove("dicepaused"); + }, 300); + if (!game.online) { + setTimeout(game.resume, 800); + } + dice.resumed = true; + } + }); + }, num); + } + $giveAuto(card, player) { + if (Array.isArray(card) && card.length == 0) return; + var args = Array.from(arguments); + if (_status.connectMode || (!this.isUnderControl(true) && !player.isUnderControl(true))) { + if (Array.isArray(card)) { + card = card.length; + } + else { + card = 1; + } + args[0] = card; + } + return this.$give.apply(this, args); + } + $give(card, player, log, init) { + if (init !== false) { + game.broadcast(function (source, card, player, init) { + source.$give(card, player, false, init); + }, this, card, player, init); + if (typeof card == "number" && card >= 0) { + game.addVideo("give", this, [card, player.dataset.position]); + } + else { + if (get.itemtype(card) == "card") { + card = [card]; + } + if (get.itemtype(card) == "cards") { + game.addVideo("giveCard", this, [get.cardsInfo(card), player.dataset.position]); + } + } + } + if (get.itemtype(card) == "cards") { + if (log != false && !_status.video) { + game.log(player, "从", this, "获得了", card); + } + if (this.$givemod) { + this.$givemod(card, player); + } + else { + for (var i = 0; i < card.length; i++) { + this.$give(card[i], player, false, false); + } + } + } + else if (typeof card == "number" && card >= 0) { + if (log != false && !_status.video) { + game.log(player, "从", this, "获得了" + get.cnNumber(card) + "张牌"); + } + if (this.$givemod) { + this.$givemod(card, player); + } + else { + while (card--) this.$give("", player, false, false); + } + } + else { + if (log != false && !_status.video) { + if (get.itemtype(card) == "card" && log != false) { + game.log(player, "从", this, "获得了", card); + } + else { + game.log(player, "从", this, "获得了一张牌"); + } + } + if (this.$givemod) { + this.$givemod(card, player); + } + else { + var node; + if (get.itemtype(card) == "card") { + node = card.copy("card", "thrown", false); + } + else { + node = ui.create.div(".card.thrown"); + } + // node.dataset.position=this.dataset.position; + node.fixed = true; + this.$throwordered(node); + // lib.listenEnd(node); + // node.hide(); + // node.style.transitionProperty="left,top,opacity"; + // + // node.style.transform="rotate("+(Math.random()*16-8)+"deg)"; + // + // ui.arena.appendChild(node); + // ui.refresh(node); + // node.show(); + // node.style.left="calc(50% - 52px "+((Math.random()-0.5<0)?"+":"-")+" "+Math.random()*100+"px)"; + // node.style.top="calc(50% - 52px "+((Math.random()-0.5<0)?"+":"-")+" "+Math.random()*80+"px)"; + + node.listenTransition(function () { + var dx = player.getLeft() + player.offsetWidth / 2 - 52 - node.offsetLeft; + var dy = player.getTop() + player.offsetHeight / 2 - 52 - node.offsetTop; + if (node.style.transform && node.style.transform != "none" && node.style.transform.indexOf("translate") == -1) { + node.style.transform += " translate(" + dx + "px," + dy + "px)"; + } + else { + node.style.transform = "translate(" + dx + "px," + dy + "px)"; + } + + node.delete(); + }); + // setTimeout(function(){ + // // node.removeAttribute("style"); + // // node.dataset.position=player.dataset.position; + // var dx=player.offsetLeft+player.offsetWidth/2-52-node.offsetLeft; + // var dy=player.offsetTop+player.offsetHeight/2-52-node.offsetTop; + // if(node.style.transform&&node.style.transform!="none"&&node.style.transform.indexOf("translate")==-1){ + // node.style.transform+=" translate("+dx+"px,"+dy+"px)"; + // } + // else{ + // node.style.transform="translate("+dx+"px,"+dy+"px)"; + // } + // + // node.delete(); + // },700); + } + } + } + $equip(card) { + game.broadcast(function (player, card) { + player.$equip(card); + }, this, card); + card.fix(); + card.style.transform = ""; + card.classList.remove("drawinghidden"); + delete card._transform; + var player = this; + var equipNum = get.equipNum(card); + var equipped = false; + for (var i = 0; i < player.node.equips.childNodes.length; i++) { + if (get.equipNum(player.node.equips.childNodes[i]) >= equipNum) { + player.node.equips.insertBefore(card, player.node.equips.childNodes[i]); + equipped = true; + break; + } + } + if (!equipped) { + player.node.equips.appendChild(card); + if (_status.discarded) { + _status.discarded.remove(card); + } + } + var info = get.info(card); + if (info.skills) { + for (var i = 0; i < info.skills.length; i++) { + player.addSkillTrigger(info.skills[i]); + } + } + return player; + } + $gain(card, log, init) { + if (init !== false) { + game.broadcast(function (player, card, init) { + player.$gain(card, false, init); + }, this, card, init); + if (typeof card == "number" && card >= 0) { + game.addVideo("gain", this, card); + } + else { + if (get.itemtype(card) == "card") { + card = [card]; + } + if (get.itemtype(card) == "cards") { + game.addVideo("gainCard", this, get.cardsInfo(card)); + } + else { + game.addVideo("gain", this, 1); + } + } + } + if (get.itemtype(card) == "cards") { + if (log != false && !_status.video) { + game.log(this, "获得了", card); + } + if (this.$gainmod) { + this.$gainmod(card); + } + else { + for (var i = 0; i < card.length; i++) { + this.$gain(card[i], false, false); + } + } + } + else if (typeof card == "number" && card > 1) { + if (log != false && !_status.video) { + game.log(this, "获得了" + get.cnNumber(card) + "张牌"); + } + if (this.$gainmod) { + this.$gainmod(card); + } + else { + for (var i = 0; i < card; i++) { + this.$gain(1, false, false); + } + } + } + else { + if (get.itemtype(card) == "card" && log != false && !_status.video) { + game.log(this, "获得了", card); + } + if (this.$gainmod) { + this.$gainmod(card); + } + else { + var node; + if (get.itemtype(card) == "card") { + // node=this.$throwordered(card.copy(),true); + node = card.copy("thrown", false); + } + else { + // node=this.$throwordered(ui.create.div(".card.thrown"),true); + node = ui.create.div(".card.thrown"); + node.moveTo = lib.element.Card.prototype.moveTo; + node.moveDelete = lib.element.Card.prototype.moveDelete; + } + node.fixed = true; + node.style.left = "calc(50% - 52px " + ((Math.random() - 0.5 < 0) ? "+" : "-") + " " + Math.random() * 100 + "px)"; + node.style.top = "calc(50% - 52px " + ((Math.random() - 0.5 < 0) ? "+" : "-") + " " + Math.random() * 100 + "px)"; + node.style.transform = "scale(0)"; + node.hide(); + ui.arena.appendChild(node); + ui.refresh(node); + node.show(); + node.style.transform = ""; + + lib.listenEnd(node); + var player = this; + setTimeout(function () { + node.moveDelete(player); + }, 700); + } + } + } + $gain2(cards, log) { + if (log === true) { + game.log(this, "获得了", cards); + } + game.broadcast(function (player, cards) { + player.$gain2(cards); + }, this, cards); + if (get.itemtype(cards) == "card") cards = [cards]; + else if (get.itemtype(cards) != "cards") return; + var list = [], list2 = []; + for (var i = 0; i < cards.length; i++) { + if (cards[i].clone && + (cards[i].clone.parentNode == this.parentNode || + cards[i].clone.parentNode == ui.arena) && + parseFloat(getComputedStyle(cards[i].clone).opacity) > 0.3) { + cards[i].clone.moveDelete(this); + list2.push(cards[i].clone); + } + else { + list.push(cards[i]); + } + } + if (list2.length) { + game.addVideo("gain2", this, get.cardsInfo(list2)); + } + if (list.length) { + this.$draw(list, "nobroadcast"); + return true; + } + } + $skill(name, type, color, avatar) { + if (typeof type != "string") type = "legend"; + if (!avatar) { + this.playerfocus(1500); + game.delay(2); + } + else { + game.addVideo("playerfocus2"); + game.broadcastAll(function () { + ui.arena.classList.add("playerfocus"); + setTimeout(function () { + ui.arena.classList.remove("playerfocus"); + }, 1800) + }); + game.delay(3); + } + var that = this; + setTimeout(function () { + game.broadcastAll(function (that, type, name, color, avatar) { + if (lib.config.animation && !lib.config.low_performance) { + if (game.chess) { + that["$" + type + "2"](1200); + } + else { + that["$" + type](1200); + } + } + if (name) { + that.$fullscreenpop(name, color, avatar); + } + }, that, type, name, color, avatar); + }, avatar ? 0 : 300); + } + $fire() { + game.addVideo("flame", this, "fire"); + var left, top; + if (game.chess) { + var rect = this.getBoundingClientRect(); + left = rect.left; + top = rect.top; + } + else { + left = this.getLeft(); + top = this.getTop(); + } + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 20, 700, "fire"); + } + $thunder() { + game.addVideo("flame", this, "thunder"); + var left, top; + if (game.chess) { + var rect = this.getBoundingClientRect(); + left = rect.left; + top = rect.top; + } + else { + left = this.getLeft(); + top = this.getTop(); + } + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 30, 700, "thunder"); + } + $rare2() { + game.addVideo("flame", this, "rare2"); + var rect = this.getBoundingClientRect(); + var left = rect.left; + var top = rect.top + 15; + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 30, 700, "rare"); + } + $epic2() { + game.addVideo("flame", this, "epic2"); + var rect = this.getBoundingClientRect(); + var left = rect.left; + var top = rect.top + 15; + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 30, 700, "epic"); + } + $legend2() { + game.addVideo("flame", this, "legend2"); + var rect = this.getBoundingClientRect(); + var left = rect.left; + var top = rect.top + 15; + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 30, 700, "legend"); + } + $rare(time) { + time = time || 700; + game.addVideo("flame", this, "rare"); + var left, top; + if (game.chess) { + left = this.getLeft() - ui.arena.offsetLeft; + top = this.getTop() - ui.arena.offsetTop; + } + else { + left = this.getLeft(); + top = this.getTop(); + } + if (this.classList.contains("minskin")) { + top += 15; + } + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 30, time, "rare"); + } + $epic(time) { + time = time || 700; + game.addVideo("flame", this, "epic"); + var left, top; + if (game.chess) { + left = this.getLeft() - ui.arena.offsetLeft; + top = this.getTop() - ui.arena.offsetTop; + } + else { + left = this.getLeft(); + top = this.getTop(); + } + if (this.classList.contains("minskin")) { + top += 15; + } + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 30, time, "epic"); + } + $legend(time) { + time = time || 700; + game.addVideo("flame", this, "legend"); + var left, top; + if (game.chess) { + left = this.getLeft() - ui.arena.offsetLeft; + top = this.getTop() - ui.arena.offsetTop; + } + else { + left = this.getLeft(); + top = this.getTop(); + } + if (this.classList.contains("minskin")) { + top += 15; + } + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 30, time, "legend"); + } + $coin() { + game.broadcast(function (player) { + if (!lib.config.low_performance) { + player.$coin(); + } + }, this); + game.addVideo("flame", this, "coin"); + var left = this.getLeft() - ui.arena.offsetLeft; + var top = this.getTop() - ui.arena.offsetTop; + if (this.classList.contains("minskin")) { + top += 15; + } + top -= 25; + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 30, 700, "coin"); + } + $dust() { + game.broadcast(function (player) { + if (!lib.config.low_performance) { + player.$dust(); + } + }, this); + game.addVideo("flame", this, "dust"); + var left = this.getLeft() - ui.arena.offsetLeft; + var top = this.getTop() - ui.arena.offsetTop; + if (this.classList.contains("minskin")) { + top += 15; + } + top -= 25; + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 30, 700, "dust"); + } + $recover() { + game.addVideo("flame", this, "recover"); + var left, top; + if (game.chess) { + var rect = this.getBoundingClientRect(); + left = rect.left; + top = rect.top; + } + else { + left = this.getLeft(); + top = this.getTop(); + } + game.animate.flame(left + this.offsetWidth / 2, + top + this.offsetHeight - 30, 700, "recover"); + } + $fullscreenpop(str, nature, avatar, broadcast) { + if (broadcast !== false) game.broadcast(function (player, str, nature, avatar) { + player.$fullscreenpop(str, nature, avatar); + }, this, str, nature, avatar); + game.addVideo("fullscreenpop", this, [str, nature, avatar]); + var node = ui.create.div(".damage"); + if (avatar && this.node) { + if (avatar == "vice") { + if (lib.character[this.name2]) { + avatar = this.node.avatar2; + } + } + else { + if (lib.character[this.name]) { + avatar = this.node.avatar; + } + } + if (!get.is.div(avatar)) { + avatar = false; + } + } + else { + avatar = false; + } + if (avatar) { + node.classList.add("fullscreenavatar"); + ui.create.div("", ui.create.div(node)); + // ui.create.div("",str.split("").join("
    "),ui.create.div(".text.textbg",node)); + ui.create.div("", "
    " + str.split("").join("

    ") + "
    ", ui.create.div(".text", node)); + node.firstChild.firstChild.style.backgroundImage = avatar.style.backgroundImage; + node.dataset.nature = nature || "unknown"; + var num = 0; + var nodes = node.lastChild.firstChild.querySelectorAll("div"); + var interval = setInterval(function () { + if (num < nodes.length) { + nodes[num].classList.add("flashtext"); + num++; + } + else { + clearInterval(interval); + } + }, 100); + } + else { + avatar = false; + node.innerHTML = str; + node.dataset.nature = nature || "soil"; + } + if (avatar) { + var rect1 = ui.window.getBoundingClientRect(); + var rect2 = this.getBoundingClientRect(); + var dx = Math.round(2 * rect2.left + rect2.width - rect1.width); + var dy = Math.round(2 * rect2.top + rect2.height - rect1.height); + node.style.transform = "scale(0.5) translate(" + dx + "px," + dy + "px)"; + } + ui.window.appendChild(node); + ui.refresh(node); + if (avatar) { + node.style.transform = "scale(1)"; + node.style.opacity = 1; + } + else { + node.classList.add("damageadded"); + } + setTimeout(function () { + node.delete(); + node.style.transform = "scale(1.5)" + }, avatar ? 1600 : 1000); + } + $damagepop(num, nature, font, nobroadcast) { + if (typeof num == "number" || typeof num == "string") { + game.addVideo("damagepop", this, [num, nature, font]); + if (nobroadcast !== false) game.broadcast(function (player, num, nature, font) { + player.$damagepop(num, nature, font); + }, this, num, nature, font); + var node = ui.create.div(".damage"); + if (font) { + node.classList.add("normal-font"); + } + if (typeof num == "number" && num > 0) { + if (num == Infinity) num = "+∞" + else num = "+" + num; + } + else if (num == -Infinity) num = "-∞"; + node.innerHTML = num; + this.damagepopups.push(node); + node.dataset.nature = nature || "soil"; + if (this.damagepopups.length == 1) { + this.$damagepop(); + } + } + else if (this.damagepopups.length) { + var node = this.damagepopups[0]; + this.appendChild(node); + ui.refresh(node); + node.classList.add("damageadded"); + node.listenTransition(function () { + setTimeout(function () { + node.delete(); + }, 200); + }); + // setTimeout(function(){ + // node.delete(); + // },500); + var that = this; + setTimeout(function () { + that.damagepopups.shift(); + that.$damagepop(); + }, 500); + } + } + $damage(source) { + if (get.itemtype(source) == "player") { + game.addVideo("damage", this, source.dataset.position); + } + else { + game.addVideo("damage", this); + } + game.broadcast(function (player, source) { + player.$damage(source); + }, this, source); + if (source && source != this && lib.config.damage_shake) { + var left, top; + if (source.getTop() == this.getTop()) { + left = 20; + top = 0; + } + else { + var ratio = (source.getLeft() - this.getLeft()) / (source.getTop() - this.getTop()); + left = Math.abs(20 * ratio / Math.sqrt(1 + ratio * ratio)); + top = Math.abs(20 / Math.sqrt(1 + ratio * ratio)); + } + if (source.getLeft() - this.getLeft() > 0) left = -left; + if (source.getTop() - this.getTop() > 0) top = -top; + if (get.is.mobileMe(this)) { + if (this.classList.contains("linked")) { + this.node.avatar.style.transform = "translate(" + left + "px," + top + "px) rotate(-90deg)"; + this.node.avatar2.style.transform = "translate(" + left + "px," + top + "px) rotate(-90deg)"; + } + else { + this.node.avatar.style.transform = "translate(" + left + "px," + top + "px)"; + this.node.avatar2.style.transform = "translate(" + left + "px," + top + "px)"; + } + } + else if (this.classList.contains("linked") && get.is.newLayout()) { + this.style.transform = "translate(" + left + "px," + top + "px) rotate(-90deg)"; + } + else if (this._chesstransform) { + this.style.transform = "translate(" + (left + this._chesstransform[0]) + "px," + (top + this._chesstransform[1]) + "px)"; + } + else { + this.style.transform = "translate(" + left + "px," + top + "px)"; + } + } + else { + var zoom1 = 0.9, zoom2 = 0.95; + if (arguments[1] == "phase") { + zoom1 = 1.05; + zoom2 = 1.05; + } + if (get.is.mobileMe(this)) { + if (this.classList.contains("linked")) { + this.node.avatar.style.transform = "scale(" + zoom1 + ") rotate(-90deg)"; + this.node.avatar2.style.transform = "scale(" + zoom1 + ") rotate(-90deg)"; + } + else { + this.node.avatar.style.transform = "scale(" + zoom1 + ")"; + this.node.avatar2.style.transform = "scale(" + zoom1 + ")"; + } + } + else if (this.classList.contains("linked") && get.is.newLayout()) { + this.style.transform = "scale(" + zoom2 + ") rotate(-90deg)"; + } + else if (game.chess && this._chesstransform) { + this.style.transform = "translate(" + this._chesstransform[0] + "px," + this._chesstransform[1] + "px) scale(" + zoom2 + ")"; + } + else { + this.style.transform = "scale(" + zoom2 + ")"; + } + } + this.queue(); + } + $die() { + game.addVideo("die", this); + game.broadcast(function (player) { + player.$die(); + }, this); + if (lib.config.die_move != "off") { + this.$dieflip(lib.config.die_move); + } + if (this.$dieAfter) { + this.$dieAfter(); + } + } + $dieflip(type) { + var top0 = ui.window.offsetHeight / 2; + var left0 = ui.window.offsetWidth / 2; + var ratio = (left0 - this.getLeft()) / (top0 - this.getTop()); + var left = Math.abs(50 * ratio / Math.sqrt(1 + ratio * ratio)); + var top = Math.abs(50 / Math.sqrt(1 + ratio * ratio)); + if (left0 - this.getLeft() > 0) left = -left; + if (top0 - this.getTop() > 0) top = -top; + if (get.is.mobileMe(this)) { + left = -Math.random() * 5 - 10; + top = Math.random() * 5 + 10; + } + if (this._chesstransform) { + left += this._chesstransform[0]; + top += this._chesstransform[1]; + } + var transform = "translate(" + left + "px," + top + "px) " + + "rotate(" + (Math.random() * 20 - 10) + "deg) "; + if (type == "flip") { + if (game.layout == "long" || game.layout == "long2") { + transform += "rotateY(180deg)"; + } + else { + transform += ((Math.random() - 0.5 < 0) ? "rotateX(180deg)" : "rotateY(180deg)"); + } + } + if (get.is.mobileMe(this)) { + this.node.avatar.style.transform = transform; + this.node.avatar2.style.transform = transform; + this.style.transform = ""; + } + else { + this.node.avatar.style.transform = ""; + this.node.avatar2.style.transform = ""; + this.style.transform = transform; + } + this.queue(false); + } + $phaseJudge(card) { + game.addVideo("phaseJudge", this, get.cardInfo(card)); + var player = this; + var clone = player.$throw(card); + if (lib.config.low_performance && card && card.clone) { + var waitingForTransition = get.time(); + _status.waitingForTransition = waitingForTransition; + card.clone.listenTransition(function () { + if (_status.waitingForTransition == waitingForTransition && _status.paused) { + game.resume(); + } + }); + game.pause(); + } + else { + game.delay(); + } + } +} diff --git a/noname/library/element/v-card.js b/noname/library/element/v-card.js index db1e43907..e202c02b8 100644 --- a/noname/library/element/v-card.js +++ b/noname/library/element/v-card.js @@ -1 +1,107 @@ -export class VCard { } +export class VCard { + /** + * @param {any} [suitOrCard] + * @param {number | Card[]} [numberOrCards] + * @param {string} [name] + * @param {string} [nature] + */ + constructor(suitOrCard, numberOrCards, name, nature) { + if (Array.isArray(suitOrCard)) { + /** + * @type {string} + */ + this.suit = suitOrCard[0]; + /** + * @type {number} + */ + this.number = suitOrCard[1]; + /** + * @type {string} + */ + this.name = suitOrCard[2]; + /** + * @type {string} + */ + this.nature = suitOrCard[3]; + } + else if (get.itemtype(suitOrCard) == "card") { + this.name = get.name(suitOrCard); + this.suit = get.suit(suitOrCard); + this.color = get.color(suitOrCard); + this.number = get.number(suitOrCard); + this.nature = get.nature(suitOrCard); + this.isCard = true; + this.cardid = suitOrCard.cardid; + this.wunature = suitOrCard.wunature; + /** + * @type {Record} + */ + this.storage = get.copy(suitOrCard.storage); + if (Array.isArray(numberOrCards)) this.cards = numberOrCards.slice(); + else this.cards = [suitOrCard]; + const info = get.info(this, false); + if (info) { + const autoViewAs = info.autoViewAs; + if (typeof autoViewAs == "string") this.name = autoViewAs; + } + } + else if (suitOrCard && typeof suitOrCard != "string") { + Object.keys(suitOrCard).forEach(key => { + const propertyDescriptor = Object.getOwnPropertyDescriptor(suitOrCard, key), value = propertyDescriptor.value; + if (Array.isArray(value)) this[key] = value.slice(); + else Object.defineProperty(this, key, propertyDescriptor); + }); + if (Array.isArray(numberOrCards)) { + const noCards = !this.cards; + /** + * @type {Card[]} + */ + this.cards = numberOrCards.slice(); + if (noCards) { + if (!lib.suits.includes(this.suit)) this.suit = get.suit(this); + if (!Object.keys(lib.color).includes(this.color)) this.color = get.color(this); + if (typeof this.number != "number") this.number = get.number(this); + if (!this.nature) this.nature = get.nature(this); + } + } + const info = get.info(this, false); + if (info) { + const autoViewAs = info.autoViewAs; + if (typeof autoViewAs == "string") this.name = autoViewAs; + } + } + if (typeof suitOrCard == "string") this.suit = suitOrCard; + if (typeof numberOrCards == "number") this.number = numberOrCards; + if (typeof name == "string") this.name = name; + if (typeof nature == "string") this.nature = nature; + if (!this.storage) this.storage = {}; + if (!this.cards) this.cards = []; + } + sameSuitAs(card) { + return get.suit(this) == get.suit(card); + } + differentSuitFrom(card) { + return get.suit(this) != get.suit(card); + } + sameNumberAs(card) { + return get.number(this) == get.number(card); + } + differentNumberFrom(card) { + return get.number(this) != get.number(card); + } + sameNameAs(card) { + return get.name(this) == get.name(card); + } + differentNameFrom(card) { + return get.name(this) != get.name(card); + } + /** + * @param {Player} player + */ + hasNature(nature, player) { + const natures = get.natureList(this, player); + if (!nature) return natures.length > 0; + if (nature == "linked") return natures.some(n => lib.linked.includes(n)); + return get.is.sameNature(natures, nature); + } +} diff --git a/noname/library/element/ws.js b/noname/library/element/ws.js new file mode 100644 index 000000000..880e55d27 --- /dev/null +++ b/noname/library/element/ws.js @@ -0,0 +1,62 @@ +export class WS { + static onopen() { + if (_status.connectCallback) { + _status.connectCallback(true); + delete _status.connectCallback; + } + } + + static onmessage(messageevent) { + if (messageevent.data == "heartbeat") { + this.send("heartbeat"); + return; + } + var message; + try { + message = JSON.parse(messageevent.data); + if (!Array.isArray(message) || + typeof lib.message.client[message[0]] !== "function") { + throw ("err"); + } + for (var i = 1; i < message.length; i++) { + message[i] = get.parsedResult(message[i]); + } + } + catch (e) { + console.log(e); + console.log("invalid message: " + messageevent.data); + return; + } + lib.message.client[message.shift()].apply(null, message); + } + + static onerror(e) { + if (this._nocallback) return; + if (_status.connectCallback) { + _status.connectCallback(false); + delete _status.connectCallback; + } + else { + alert("连接失败"); + } + } + + static onclose() { + if (this._nocallback) return; + if (_status.connectCallback) { + _status.connectCallback(false); + delete _status.connectCallback; + } + if (game.online || game.onlineroom) { + if ((game.servermode || game.onlinehall) && _status.over) { + void 0; + } + else { + localStorage.setItem(lib.configprefix + "directstart", true); + game.reload(); + } + } + game.online = false; + game.ws = null; + } +} \ No newline at end of file diff --git a/noname/library/filter.js b/noname/library/filter.js new file mode 100644 index 000000000..5b9e7b781 --- /dev/null +++ b/noname/library/filter.js @@ -0,0 +1,453 @@ +export class Filter { + constructor() { + throw new TypeError(`${new.target.name} is not a constructor`); + } + static all() { + return true; + } + static none() { + return false; + } + + /** + * Check if the card does not count toward the player’s hand limit + * + * 检测此牌是否不计入此角色的手牌上限 + */ + static ignoredHandcard(card, player) { + return game.checkMod(card, player, false, "ignoredHandcard", player); + } + + /** + * Check if the card is giftable + * 检测此牌是否可赠予 + */ + static cardGiftable(card, player, target, strict) { + const mod = game.checkMod(card, player, target, "unchanged", "cardGiftable", player); + if (!mod || strict && (mod == "unchanged" && (get.position(card) != "h" || !get.cardtag(card, "gifts")) || player == target)) return false; + return get.type(card, false) != "equip" || target.canEquip(card, true); + } + + /** + * Check if the card is recastable + * 检查此牌是否可重铸 + */ + static cardRecastable(card, player, source, strict) { + if (typeof player == "undefined") player = get.owner(card); + const mod = game.checkMod(card, player, source, "unchanged", "cardRecastable", player); + if (!mod) return false; + if (strict && mod == "unchanged") { + if (get.position(card) != "h") return false; + const info = get.info(card), recastable = info.recastable || info.chongzhu; + return Boolean(typeof recastable == "function" ? recastable(_status.event, player) : recastable); + } + return true; + } + // 装备栏相关 + static canBeReplaced(card, player) { + var mod = game.checkMod(card, player, "unchanged", "canBeReplaced", player); + if (mod != "unchanged") return mod; + return true; + } + // 装备栏 END + static buttonIncluded(button) { + return !(_status.event.excludeButton && _status.event.excludeButton.contains(button)); + } + static filterButton(button) { + return true; + } + static cardSavable(card, player, target) { + if (get.itemtype(card) == "card") { + var mod2 = game.checkMod(card, player, "unchanged", "cardEnabled2", player); + if (mod2 != "unchanged") return mod2; + } + var mod = game.checkMod(card, player, target, "unchanged", "cardSavable", player); + if (mod != "unchanged") return mod; + var savable = get.info(card).savable; + if (typeof savable == "function") savable = savable(card, player, target); + return savable; + } + static filterTrigger(event, player, name, skill) { + if (player._hookTrigger && player._hookTrigger.some(i => { + const info = lib.skill[i].hookTrigger; + return info && info.block && info.block(event, player, name, skill); + })) return false; + const fullskills = game.expandSkills(player.getSkills(false).concat(lib.skill.global)); + const info = get.info(skill); + if (!info) return console.log("缺少info的技能:", skill); + if (!fullskills.includes(skill)) { + if (get.mode() != "guozhan") return false; + if (info && info.noHidden) return false; + } + if (!info.trigger) return false; + if (!info.forceDie && player.isDead()) return false; + if (!info.forceOut && player.isOut()) return false; + if (!Object.keys(info.trigger).some(i => { + if (i != "global" && player != event[i]) return false; + if (Array.isArray(info.trigger[i])) return info.trigger[i].includes(name); + return info.trigger[i] == name; + })) return false; + if (info.filter && !info.filter(event, player, name)) return false; + if (event._notrigger.includes(player) && !lib.skill.global.includes(skill)) return false; + if (typeof info.usable == "number" && player.hasSkill("counttrigger") && + player.storage.counttrigger && player.storage.counttrigger[skill] >= info.usable) { + return false; + } + if (info.round && (info.round - (game.roundNumber - player.storage[skill + "_roundcount"]) > 0)) return false; + if (player.storage[`temp_ban_${skill}`] === true) return false; + return true; + } + static characterDisabled(i, libCharacter) { + if (!lib.character[i] || lib.character[i][4] && lib.character[i][4].contains("forbidai")) return true; + if (lib.character[i][4] && lib.character[i][4].contains("unseen")) return true; + if (lib.config.forbidai.contains(i)) return true; + if (lib.characterFilter[i] && !lib.characterFilter[i](get.mode())) return true; + if (_status.connectMode) { + if (lib.configOL.banned.contains(i) || lib.connectBanned.contains(i)) return true; + var double_character = false; + if (lib.configOL.mode == "guozhan") { + double_character = true; + } + else if (lib.configOL.double_character && (lib.configOL.mode == "identity" || lib.configOL.mode == "stone")) { + double_character = true; + } + else if (lib.configOL.double_character_jiange && (lib.configOL.mode == "versus" && _status.mode == "jiange")) { + double_character = true; + } + if (double_character && lib.config.forbiddouble.contains(i)) { + return true; + } + } + else { + if (lib.config.banned.contains(i)) return true; + var double_character = false; + if (get.mode() == "guozhan") { + double_character = true; + } + else if (get.config("double_character") && (lib.config.mode == "identity" || lib.config.mode == "stone")) { + double_character = true; + } + else if (get.config("double_character_jiange") && (lib.config.mode == "versus" && _status.mode == "jiange")) { + double_character = true; + } + if (double_character && lib.config.forbiddouble.contains(i)) { + return true; + } + } + } + static characterDisabled2(i) { + var info = lib.character[i]; + if (!info) return true; + if (info[4]) { + if (info[4].contains("boss")) return true; + if (info[4].contains("hiddenboss")) return true; + if (info[4].contains("minskin")) return true; + if (info[4].contains("unseen")) return true; + if (info[4].contains("forbidai") && (!_status.event.isMine || !_status.event.isMine())) return true; + if (lib.characterFilter[i] && !lib.characterFilter[i](get.mode())) return true; + } + return false; + } + static skillDisabled(skill) { + if (!lib.translate[skill] || !lib.translate[skill + "_info"]) return true; + var info = lib.skill[skill]; + if (info && !info.unique && !info.temp && !info.sub && !info.fixed && !info.vanish) { + return false; + } + return true; + } + static cardEnabled(card, player, event) { + if (player == undefined) player = _status.event.player; + if (!player) return false; + if (get.itemtype(card) == "card") { + var mod2 = game.checkMod(card, player, event, "unchanged", "cardEnabled2", player); + if (mod2 != "unchanged") return mod2; + } + card = get.autoViewAs(card); + if (event === "forceEnable") { + var mod = game.checkMod(card, player, event, "unchanged", "cardEnabled", player); + if (mod != "unchanged") return mod; + return true; + } + else { + var filter = get.info(card).enable; + if (!filter) return; + var mod = game.checkMod(card, player, event, "unchanged", "cardEnabled", player); + if (mod != "unchanged") return mod; + if (typeof filter == "boolean") return filter; + if (typeof filter == "function") return filter(card, player, event); + } + } + static cardRespondable(card, player, event) { + event = event || _status.event; + if (event.name != "chooseToRespond") return true; + var source = event.getParent().player; + if (source && source != player) { + if (source.hasSkillTag("norespond", false, [card, player, event], true)) { + return false; + } + } + if (player == undefined) player = _status.event.player; + if (get.itemtype(card) == "card") { + var mod2 = game.checkMod(card, player, event, "unchanged", "cardEnabled2", player); + if (mod2 != "unchanged") return mod2; + } + var mod = game.checkMod(card, player, "unchanged", "cardRespondable", player); + if (mod != "unchanged") return mod; + return true; + } + static cardUsable2(card, player, event) { + card = get.autoViewAs(card); + var info = get.info(card); + if (info.updateUsable == "phaseUse") { + event = event || _status.event; + if (event.type == "chooseToUse_button") event = event.getParent(); + if (player != _status.event.player) return true; + if (event.getParent().name != "phaseUse") return true; + if (event.getParent().player != player) return true; + } + var num = info.usable; + if (typeof num == "function") num = num(card, player); + num = game.checkMod(card, player, num, "cardUsable", player); + if (typeof num != "number") return true; + else return (player.countUsed(card) < num); + } + static cardUsable(card, player, event) { + card = get.autoViewAs(card); + var info = get.info(card); + event = event || _status.event; + if (event.type == "chooseToUse_button") event = event.getParent(); + if (player != _status.event.player) return true; + if (info.updateUsable == "phaseUse") { + if (event.getParent().name != "phaseUse") return true; + if (event.getParent().player != player) return true; + } + event.addCount_extra = true; + var num = info.usable; + if (typeof num == "function") num = num(card, player); + num = game.checkMod(card, player, num, "cardUsable", player); + if (typeof num != "number") { + return (typeof num == "boolean") ? num : true; + } + if (player.countUsed(card) < num) return true; + if (game.hasPlayer(function (current) { + return game.checkMod(card, player, current, false, "cardUsableTarget", player); + })) { + return true; + } + return false; + } + static cardDiscardable(card, player, event) { + event = event || _status.event; + if (typeof event != "string") event = event.getParent().name; + var mod = game.checkMod(card, player, event, "unchanged", "cardDiscardable", player); + if (mod != "unchanged") return mod; + return true; + } + static canBeDiscarded(card, player, target, event) { + event = event || _status.event; + if (typeof event != "string") event = event.getParent().name; + var mod = game.checkMod(card, player, target, event, "unchanged", "canBeDiscarded", target); + if (mod != "unchanged") return mod; + return true; + } + static canBeGained(card, player, target, event) { + event = event || _status.event; + if (typeof event != "string") event = event.getParent().name; + var mod = game.checkMod(card, player, target, event, "unchanged", "canBeGained", target); + if (mod != "unchanged") return mod; + return true; + } + static cardAiIncluded(card) { + if (_status.event.isMine()) return true; + return (_status.event._aiexclude.contains(card) == false); + } + static filterCard(card, player, event) { + var info = get.info(card); + //if(info.toself&&!lib.filter.targetEnabled(card,player,player)) return false; + if (player == undefined) player = _status.event.player; + if (!lib.filter.cardEnabled(card, player, event) || !lib.filter.cardUsable(card, player, event)) return false; + if (info.notarget) return true; + var range; + var select = get.copy(info.selectTarget); + if (select == undefined) { + if (info.filterTarget == undefined) return true; + range = [1, 1]; + } + else if (typeof select == "number") range = [select, select]; + else if (get.itemtype(select) == "select") range = select; + else if (typeof select == "function") range = select(card, player); + game.checkMod(card, player, range, "selectTarget", player); + if (!range || range[1] != -1) return true; + var filterTarget = (event && event.filterTarget) ? event.filterTarget : lib.filter.filterTarget; + return game.hasPlayer(function (current) { + return filterTarget(card, player, current); + }); + } + static targetEnabledx(card, player, target) { + if (!card) return false; + if (!target || !target.isIn()) return false; + var event = _status.event; + if (event._backup && event._backup.filterCard == lib.filter.filterCard && (!lib.filter.cardEnabled(card, player, event) || !lib.filter.cardUsable(card, player, event))) return false; + if (event.addCount_extra) { + if (!lib.filter.cardUsable2(card, player) && !game.checkMod(card, player, target, false, "cardUsableTarget", player)) return false; + } + var info = get.info(card); + if (info.singleCard && info.filterAddedTarget && ui.selected.targets.length) return Boolean(info.filterAddedTarget(card, player, target, ui.selected.targets[ui.selected.targets.length - 1])); + return lib.filter.targetEnabled.apply(this, arguments); + } + static targetEnabled(card, player, target) { + if (!card) return false; + if (!target || !target.isIn()) return false; + var info = get.info(card); + var filter = info.filterTarget; + if (!info.singleCard || ui.selected.targets.length == 0) { + var mod = game.checkMod(card, player, target, "unchanged", "playerEnabled", player); + if (mod != "unchanged") return mod; + var mod = game.checkMod(card, player, target, "unchanged", "targetEnabled", target); + if (mod != "unchanged") return mod; + } + if (typeof filter == "boolean") return filter; + if (typeof filter == "function") return Boolean(filter(card, player, target)); + } + static targetEnabled2(card, player, target) { + if (!card) return false; + if (!target || !target.isIn()) return false; + if (lib.filter.targetEnabled(card, player, target)) return true; + + if (game.checkMod(card, player, target, "unchanged", "playerEnabled", player) == false) return false; + if (game.checkMod(card, player, target, "unchanged", "targetEnabled", target) == false) return false; + + var filter = get.info(card).modTarget; + if (typeof filter == "boolean") return filter; + if (typeof filter == "function") return Boolean(filter(card, player, target)); + return false; + } + static targetEnabled3(card, player, target) { + if (!card) return false; + if (!target || !target.isIn()) return false; + var info = get.info(card); + + if (info.filterTarget == true) return true; + if (typeof info.filterTarget == "function" && info.filterTarget(card, player, target)) return true; + + if (info.modTarget == true) return true; + if (typeof info.modTarget == "function" && info.modTarget(card, player, target)) return true; + return false; + } + static targetInRange(card, player, target) { + var info = get.info(card); + var range = info.range; + var outrange = info.outrange; + if (range == undefined && outrange == undefined) return true; + + var mod = game.checkMod(card, player, target, "unchanged", "targetInRange", player); + var extra = 0; + if (mod != "unchanged") { + if (typeof mod == "boolean") return mod; + if (typeof mod == "number") extra = mod; + } + if (typeof info.range == "function") return info.range(card, player, target); + + if (player.hasSkill("undist") || target.hasSkill("undist")) return false; + for (var i in range) { + if (i == "attack") { + var range2 = player.getAttackRange(); + if (range2 <= 0) return false; + var distance = get.distance(player, target) + extra; + if (range[i] <= distance - range2) return false; + } + else { + var distance = get.distance(player, target, i) + extra; + if (range[i] < distance) return false; + } + } + for (var i in outrange) { + if (i == "attack") { + var range2 = player.getAttackRange(); + if (range2 <= 0) return false; + var distance = get.distance(player, target) + extra; + if (outrange[i] > distance - range2 + 1) return false; + } + else { + var distance = get.distance(player, target, i) + extra; + if (outrange[i] > distance) return false; + } + } + return true; + } + static filterTarget(card, player, target) { + return (lib.filter.targetEnabledx(card, player, target) && + lib.filter.targetInRange(card, player, target)); + } + static filterTarget2(card, player, target) { + return (lib.filter.targetEnabled2(card, player, target) && + lib.filter.targetInRange(card, player, target)); + } + static notMe(card, player, target) { + return player != target; + } + static isMe(card, player, target) { + return player == target; + } + static attackFrom(card, player, target) { + return get.distance(player, target, "attack") <= 1; + } + static globalFrom(card, player, target) { + return get.distance(player, target) <= 1; + } + static selectCard() { + return [1, 1]; + } + static selectTarget(card, player) { + if (!card) card = get.card(); + if (!player) player = get.player(); + if (card == undefined) return; + var range, info = get.info(card); + var select = get.copy(info.selectTarget); + if (select == undefined) { + if (info.filterTarget == undefined) return [0, 0]; + range = [1, 1]; + } + else if (typeof select == "number") range = [select, select]; + else if (get.itemtype(select) == "select") range = select; + else if (typeof select == "function") range = select(card, player); + game.checkMod(card, player, range, "selectTarget", player); + if (info.singleCard && info.filterAddedTarget) return [range[0] * 2, range[1] * 2]; + return range; + } + static judge(card, player, target) { + return target.canAddJudge(card); + } + static autoRespondSha() { + return !this.player.hasSha(true); + } + static autoRespondShan() { + return !this.player.hasShan(); + } + static wuxieSwap(event) { + if (event.type == "wuxie") { + if (ui.wuxie && ui.wuxie.classList.contains("glow")) { + return true; + } + if (ui.tempnowuxie && ui.tempnowuxie.classList.contains("glow") && event.state > 0) { + var triggerevent = event.getTrigger(); + if (triggerevent) { + if (ui.tempnowuxie._origin == triggerevent.parent.id) { + return true; + } + } + else if (ui.tempnowuxie._origin == _status.event.id2) { + return true; + } + } + if (lib.config.wuxie_self) { + var tw = event.info_map; + if (tw.player && tw.player.isUnderControl(true) && !tw.player.hasSkillTag("noautowuxie") && + (!tw.targets || tw.targets.length <= 1) && !tw.noai) { + return true; + } + } + } + } +} diff --git a/noname/library/group-nature.js b/noname/library/group-nature.js new file mode 100644 index 000000000..837fd19c9 --- /dev/null +++ b/noname/library/group-nature.js @@ -0,0 +1,11 @@ +export const groupNature = { + shen: "shen", + wei: "water", + shu: "soil", + wu: "wood", + qun: "qun", + western: "thunder", + key: "key", + jin: "thunder", + ye: "thunder" +}; diff --git a/noname/library/help.js b/noname/library/help.js new file mode 100644 index 000000000..9c3a8ac38 --- /dev/null +++ b/noname/library/help.js @@ -0,0 +1,32 @@ +export const HELP = { + 关于游戏: `
    关于无名杀
  • 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%0ABkIkV!3O^rbL*aG2}vnS*vMXWCbK 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