diff --git a/card/guozhan.js b/card/guozhan.js index 2f062ac65..b595096c9 100644 --- a/card/guozhan.js +++ b/card/guozhan.js @@ -520,7 +520,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ }, ai:{ canLink:function(player,target,card){ - if(!target.isLinked()||player.hasSkill('jueqing')||target.hasSkill('gangzhi')||target.hasSkill('gangzhi')) return false; + if(!target.isLinked()||player.hasSkill('jueqing')||target.hasSkill('gangzhi')||player.hasSkill('gangzhi')) return false; var es=target.countCards('e'); if(!es) return true; if(target.hp>=3&&es>=2){ diff --git a/card/sp.js b/card/sp.js index 748dece0e..fa0272a7b 100644 --- a/card/sp.js +++ b/card/sp.js @@ -155,7 +155,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){ toself:true, judge:function(card){ if(get.suit(card)=='spade') return -6; - return 0; + return 6; + }, + judge2:function(result){ + if(result.bool==false) return true; + return false; }, cardPrompt:function(card){ var str='出牌阶段,对你使用。你将【浮雷】置入判定区。若判定结果为♠,则目标角色受到X点雷电伤害(X为此牌判定结果为♠的次数)。判定完成后,将此牌移动到下家的判定区里。'; @@ -383,9 +387,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){ return (lib.filter.judge(card,player,target)&&player!=target); }, judge:function(card){ - if(get.suit(card)=='club') return 0; + if(get.suit(card)=='club') return 1; return -3; }, + judge2:function(result){ + if(result.bool==false) return true; + return false; + }, effect:function(){ if(result.bool==false){ player.addTempSkill('caomu_skill'); diff --git a/card/standard.js b/card/standard.js index 5fd3b2774..481c144b9 100644 --- a/card/standard.js +++ b/card/standard.js @@ -2642,13 +2642,22 @@ game.import('card',function(lib,game,ui,get,ai,_status){ event.wuxieresult=player; event.wuxieresult2=result; game.broadcast('cancel',id); - if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused){ - return (function(){ - event.resultOL=_status.event.resultOL; + return (function(){ + if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused) event.resultOL=_status.event.resultOL; + if(_status.event._parent_id==id){ ui.click.cancel(); - if(ui.confirm) ui.confirm.close(); - }); - } + } + if(_status.event.id==id){ + if(_status.event._backup) ui.click.cancel(); + ui.click.cancel(); + if(ui.confirm){ + ui.confirm.close(); + } + if(_status.event.result){ + _status.event.result.id=id; + } + } + }); } else{ if(_status.event.id==id&&_status.event.name=='chooseToUse'&&_status.paused){ @@ -2703,6 +2712,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){ game.players[i].hideTimer(); } 'step 8' + if(event.wuxieresult2._sendskill) lib.skill[event.wuxieresult2._sendskill[0]]=event.wuxieresult2._sendskill[1]; if(event.wuxieresult&&event.wuxieresult2&&event.wuxieresult2.skill){ var info=get.info(event.wuxieresult2.skill); if(info&&info.precontent&&!game.online){ diff --git a/character/clan.js b/character/clan.js index b287e6ac1..33d3b2a83 100644 --- a/character/clan.js +++ b/character/clan.js @@ -7,13 +7,582 @@ game.import('character',function(lib,game,ui,get,ai,_status){ character:{ clan_wuxian:['female','shu',3,['clanyirong','clanguixiang','clanmuyin'],['clan:陈留吴氏']], clan_wuban:['male','shu',4,['clanzhanding','clanmuyin'],['clan:陈留吴氏']], + clan_xunshu:['male','qun',3,['clanshenjun','clanbalong','clandaojie'],['clan:颍川荀氏']], + clan_xunchen:['male','qun',3,['clansankuang','clanbeishi','clandaojie'],['clan:颍川荀氏']], + clan_xuncai:['female','qun',3,['clanlieshi','clandianzhan','clanhuanyin','clandaojie'],['clan:颍川荀氏']], + clan_xuncan:['male','wei',3,['clanyunshen','clanshangshen','clanfenchai','clandaojie'],['clan:颍川荀氏']], }, characterSort:{ clan:{ clan_wu:['clan_wuxian','clan_wuban'], + clan_xun:['clan_xunshu','clan_xunchen','clan_xuncai','clan_xuncan'] }, }, skill:{ + //族荀谌 + clansankuang:{ + audio:2, + trigger:{player:'useCardAfter'}, + direct:true, + forced:true, + filter:function(event,player){ + var card=event.card,type=get.type2(card); + for(var i=player.actionHistory.length-1; i>=0; i--){ + var history=player.actionHistory[i].useCard; + for(var evt of history){ + if(evt==event) continue; + if(get.type2(evt.card)==type) return false; + } + if(player.actionHistory[i].isRound) break; + } + return true; + }, + getNum:function(player){ + return (player.countCards('ej')>0)+(player.isDamaged())+(Math.max(0,player.hp){ + var att=get.attitude(player,target); + if(_status.event.goon) return -att; + return -Math.sqrt(Math.abs(att))-lib.skill.clansankuang.getNum(target); + }).set('goon',Math.max.apply(Math,trigger.cards.map(i=>get.value(i)))<=5||trigger.cards.filterInD('ejod').length==0) + 'step 1' + if(result.bool){ + var target=result.targets[0],num=lib.skill.clansankuang.getNum(target),num2=target.countCards('he'); + event.target=target; + player.logSkill('clansankuang',target); + if(num2==0) event._result={bool:false}; + else if(num2<=num) event._result={bool:true,cards:target.getCards('he')}; + target.chooseCard('he',true,[num,Infinity]).set('ai',get.unuseful); + }else event.finish(); + 'step 2' + if(result.bool){ + var cards=result.cards; + target.give(cards,player); + game.delayx(); + } + 'step 3' + if(trigger.cards.filterInD('ej').length) target.gain(trigger.cards.filterInD('ej'),player,'giveAuto','bySelf'); + else if(trigger.cards.filterInD('od').length) target.gain(trigger.cards.filterInD('od'),'gain2','bySelf'); + }, + ai:{ + reverseOrder:true, + skillTagFilter:function(player){ + if(player.getHistory('useCard',evt=>get.type(evt.card)=='equip').length>0) return false; + }, + effect:{ + target:function(card,player,target){ + if(player==target&&get.type(card)=='equip'&&!player.getHistory('useCard',evt=>get.type(evt.card)=='equip').length==0) return [1,3]; + }, + }, + threaten:1.6, + }, + }, + clanbeishi:{ + audio:2, + trigger:{ + global:['loseAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], + }, + forced:true, + filter:function(event,player){ + var history=player.getAllHistory('useSkill',evt=>evt.skill=='clansankuang'); + if(!history.length) return false; + var target=history[0].targets[0]; + if(target.countCards('h')) return false; + var evt=event.getl(target); + return evt&&evt.hs&&evt.hs.length; + }, + content:function(){ + player.recover(); + } + }, + //族荀淑 + clanshenjun:{ + audio:2, + trigger:{ + global:'useCard', + }, + forced:true, + locked:false, + filter:function(event,player){ + return (event.card.name=='sha'||get.type(event.card)=='trick')&&player.countCards('h',event.card.name)>0; + }, + content:function(){ + var cards=player.getCards('h',trigger.card.name); + player.showCards(cards,get.translation(player)+'发动了【神君】'); + player.addGaintag(cards,'clanshenjun'); + for(var name of lib.phaseName){ + var evt=_status.event.getParent(name); + if(!evt||evt.name!=name) continue; + player.addTempSkill('clanshenjun_viewAs',name+'After'); + break; + } + }, + subSkill:{ + viewAs:{ + trigger:{player:['phaseZhunbeiEnd','phaseJudgeEnd','phaseDrawEnd','phaseUseEnd','phaseDiscardEnd','phaseJieshuEnd']}, + filter:function(event,player){ + return player.countCards('h',card=>card.hasGaintag('clanshenjun'))>0; + }, + forced:true, + charlotte:true, + content:function(){ + 'step 0' + var cards=player.getCards('h',card=>card.hasGaintag('clanshenjun')); + var list=[],names=[]; + for(var card of cards){ + var name=get.name(card),nature=get.nature(card); + var namex=name+(nature?nature:''); + if(names.contains(namex)) continue; + if(nature) list.push([get.type(card),'',name,nature]); + else list.push([get.type(card),'',name]); + names.push(namex); + } + list.sort((a,b)=>{ + return 100*(lib.inpile.indexOf(a[2])-lib.inpile.indexOf(b[2]))+lib.inpile_nature.indexOf(a[3])-lib.inpile_nature.indexOf(b[3]); + }) + player.chooseButton(['是否将'+get.cnNumber(cards.length)+'张牌当下列一张牌使用?',[list,'vcard']]).set('ai',function(button){ + return _status.event.player.getUseValue({name:button.link[2],nature:button.link[3]}); + }); + 'step 1' + if(result.bool){ + var name=result.links[0][2],nature=result.links[0][3]; + debugger; + var cards=player.getCards('h',card=>card.hasGaintag('clanshenjun')); + game.broadcastAll(function(num,card){ + lib.skill.clanshenjun_backup.selectCard=num; + lib.skill.clanshenjun_backup.viewAs=card; + },cards.length,{name:name,nature:nature}); + var next=player.chooseToUse(); + next.set('openskilldialog','将'+get.cnNumber(cards.length)+'张牌当做'+(nature?get.translation(nature):'')+'【'+get.translation(name)+'】使用'); + next.set('norestore',true); + next.set('addCount',false); + next.set('_backupevent','clanshenjun_backup'); + next.set('custom',{ + add:{}, + replace:{window:function(){}} + }); + next.backup('clanshenjun_backup'); + } + } + }, + backup:{ + filterCard:function(card){ + return get.itemtype(card)=='card'; + }, + position:'hes', + filterTarget:lib.filter.targetEnabled, + check:(card)=>6-get.value(card), + log:false, + precontent:function(){ + delete event.result.skill; + }, + } + } + }, + clanbalong:{ + audio:2, + trigger:{ + player:['damageEnd','recoverEnd','loseHpEnd'], + }, + forced:true, + filter:function(event,player){ + if(game.getGlobalHistory('changeHp',evt=>evt.player==player&&evt.getParent()==event).length!=1) return false; + var cards=player.getCards('h'),map={}; + if(!cards.length) return false; + for(var card of cards){ + var type=get.type2(card); + if(typeof map[type]!='number') map[type]=0; + map[type]++; + } + var list=[]; + for(var i in map){ + if(map[i]>0) list.push([i,map[i]]); + } + list.sort((a,b)=>b[1]-a[1]); + return list[0][0]=='trick'&&(list.length==1||list[0][1]>list[1][1]); + }, + content:function(){ + player.showHandcards(get.translation(player)+'发动了【八龙】'); + player.drawTo(game.countPlayer()); + } + }, + //族荀粲 + clanyunshen:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return player!=target&&target.isDamaged(); + }, + content:function(){ + 'step 0' + target.recover(); + 'step 1' + var name=get.translation(target); + player.chooseControl().set('choiceList',[name+'视为对你使用一张冰【杀】','你视为对'+name+'使用一张冰【杀】']).set('prompt','熨身:请选择一项').set('ai',()=>_status.event.choice).set('choice',function(){ + var card={name:'sha',nature:'ice',isCard:true}; + var eff=get.effect(player,card,target,player),eff2=get.effect(target,card,player,player); + if(eff>eff2) return '选项一'; + else return '选项二'; + }()); + 'step 2' + var players=[target,player]; + if(result.control=='选项二') players.reverse(); + players[0].useCard({name:'sha',nature:'ice',isCard:true},players[1],false,'noai'); + }, + ai:{ + order:2, + expose:0.2, + result:{ + target:function(player,target){ + var eff=get.recoverEffect(target,player,player); + if(eff>0) return 1; + else if(get.effect(target,{name:'sha',nature:'ice',isCard:true},player,player)>eff) return -1; + return 0; + } + } + } + }, + clanshangshen:{ + audio:2, + trigger:{global:'damageEnd'}, + filter:function(event,player){ + if(!event.nature) return false; + return game.countPlayer2(current=>{ + return current.hasHistory('damage',evt=>{ + return evt.nature&&evt!=event; + }); + })==0; + }, + logTarget:'player', + check:function(event,player){ + if(get.attitude(player,event.player)<=2) return false; + if(event.player.countCards('h')>=4) return false; + return true; + }, + content:function(){ + 'step 0' + event.judgestr=get.translation('shandian'); + player.judge(lib.card.shandian.judge,event.judgestr).judge2=lib.card.shandian.judge2; + game.delayx(1.5); + 'step 1' + trigger.player.drawTo(4); + }, + ai:{expose:0.25} + }, + clanfenchai:{ + audio:2, + init:function(player){ + if(player.getStorage('clanfenchai').length>0) return; + var history=player.getHistory('useSkill',evt=>{ + if(evt.type!='player') return false; + var skill=evt.sourceSkill||evt.skill,targets=evt.targets; + var info=get.info(skill); + if(!info||info.charlotte) return false; + if(targets&&targets.length){ + if(targets.filter(i=>player.differentSexFrom(i)).length>0) return true; + } + return false; + }); + if(history.length){ + var evt=history[0],targets=evt.targets; + player.markAuto('clanfenchai',targets.filter(i=>player.differentSexFrom(i))); + } + }, + trigger:{ + player:['logSkill','useSkillAfter'], + }, + forced:true, + silent:true, + onremove:true, + marktext:'钗', + intro:{ + content:(storage,player)=>'对象:'+get.translation(storage), + }, + group:'clanfenchai_audio', + filter:function(event,player){ + if(event.type!='player') return false; + var targets=event.targets; + if(!targets||!targets.length) return false; + var info=get.info(event.sourceSkill||event.skill); + if(!info||info.charlotte) return false; + if(player.getStorage('clanfenchai').length!=0) return false; + return targets.filter(i=>player.differentSexFrom(i)).length>0; + }, + content:function(){ + player.markAuto('clanfenchai',trigger.targets.filter(i=>player.differentSexFrom(i))); + }, + subSkill:{ + audio:{ + audio:'clanfenchai', + forced:true, + trigger:{player:'judge'}, + content:function(){} + } + }, + mod:{ + suit:function(card,suit){ + var player=get.owner(card)||_status.event.player; + if(!player||!player.judging||player.judging[0]!=card) return; + return player.getStorage('clanfenchai').filter(i=>i.isIn()).length>0?'heart':'spade'; + } + } + }, + //族荀采 + clanlieshi:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return !player.storage._disableJudge||player.countCards('h',card=>['sha','shan'].contains(get.name(card)))>0; + }, + chooseButton:{ + dialog:function(event,player){ + var dialog=ui.create.dialog('烈誓:选择一项','hidden'); + dialog.add([lib.skill.clanlieshi.choices.slice(),'textbutton']); + return dialog; + }, + filter:function(button,player){ + var link=button.link; + if(link=='damage') return !player.storage._disableJudge; + var num=player.countCards('h',link); + return num>0&&num==player.getDiscardableCards(player,'h').filter(i=>get.name(i)==link).length; + }, + check:function(button){ + var player=_status.event.player; + switch (button.link){ + case 'damage': + if(get.damageEffect(player,player,player,'fire')>=0) return 10; + if(player.hp>=Math.max(2,3-player.getFriends().length)&&game.countPlayer(current=>get.attitude(player,current)<0&¤t.countCards('h',card=>['sha','shan'].contains(get.name(card))))) return 0.8+Math.random(); + return 0; + case 'shan': + if(player.countCards('h','shan')==1) return 8+Math.random(); + return 1+Math.random(); + case 'sha': + if(player.countCards('h','sha')==1) return 8+Math.random(); + return 0.9+Math.random(); + } + }, + backup:function(links){ + var next=get.copy(lib.skill['clanlieshi_backupx']); + next.choice=links[0]; + return next; + }, + prompt:function(links){ + if(links[0]=='damage') return '废除判定区并受到1点火焰伤害'; + return '弃置所有【'+get.translation(links[0])+'】'; + }, + }, + choices:[ + ['damage','废除判定区并受到1点火焰伤害'], + ['shan','弃置所有【闪】'], + ['sha','弃置所有【杀】'], + ], + ai:{ + order:function(item,player){ + if(!player) return; + var eff=get.damageEffect(player,player,player,'fire'),disabled=!player.storage._disableJudge; + if((player.countCards('h','sha')==1||player.countCards('h','shan')==1)&&eff<0&&!disabled) return 8; + else if(eff>=0&&!disabled) return 5.8; + if(!disabled&&!player.countCards('h',card=>['sha','shan'].contains(get.name(card)))){ + if((!player.hasSkill('clanhuanyin')||!player.canSave(player))&&player.hp<=1) return 0; + if(player.canSave(player)&&player.hp==1&&player.countCards('h')<=1) return 2.6; + if(player.hpget.attitude(player,current)<0&¤t.countCards('h',card=>['sha','shan'].contains(get.name(card))))) return 0; + } + return 2.5; + }, + expose:0.2, + result:{player:1}, + }, + subSkill:{ + backup:{}, + backupx:{ + audio:'clanlieshi', + selectCard:-1, + selectTarget:-1, + filterCard:()=>false, + filterTarget:()=>false, + multitarget:true, + content:function(){ + 'step 0' + var choice=lib.skill.clanlieshi_backup.choice; + event.choice=choice; + if(choice=='damage'){ + player.damage('fire'); + if(!player.storage._disableJudge) player.disableJudge(); + }else{ + var cards=player.getCards('h',choice); + if(cards.length) player.discard(cards); + } + 'step 1' + if(!player.isIn()) event.finish(); + else player.chooseTarget('烈誓:令一名其他角色选择另一项',lib.filter.notMe,true).set('ai',target=>{ + var player=_status.event.player,chosen=_status.event.getParent().choice,att=get.attitude(player,target); + if(chosen=='damage'){ + if(att>0) return 0; + return -att/2+target.countCards('h',card=>['sha','shan'].contains(get.name(card))); + } + return get.damageEffect(target,player,player,'fire'); + }); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.line(target,'fire'); + var list=[],choice=event.choice; + var choiceList=lib.skill.clanlieshi.choices.slice(); + choiceList=choiceList.map((link,ind,arr)=>{ + link=link[1]; + var ok=true; + if(arr[ind][0]==choice){ + link+='('+get.translation(player)+'已选)'; + ok=false; + } + if(ind==0){ + if(target.storage._disableJudge) ok=false; + } + else if(ind>0){ + var name=ind==1?'shan':'sha'; + if(!target.countCards('h',name)) ok=false; + } + if(!ok) link=''+link+''; + else list.push('选项'+get.cnNumber(ind+1,true)); + return link; + }); + if(!list.length){event.finish(); return;} + target.chooseControl(list).set('choiceList',choiceList).set('ai',()=>{ + var controls=_status.event.controls.slice(),player=_status.event.player,user=_status.event.getParent().player; + if(controls.length==1) return controls[0]; + if(controls.contains('选项一')&&get.damageEffect(player,user,player,'fire')>=0) return '选项一'; + if(controls.contains('选项一')&&player.hp<=2&&player.countCards('h',card=>['sha','shan'].contains(get.name(card)))<=3) controls.remove('选项一'); + if(controls.length==1) return controls[0]; + if(player.getCards('h','sha').reduce((p,c)=>p+get.value(c,player),0)>player.getCards('h','sha').reduce((p,c)=>p+get.value(c,player),0)){ + if(controls.contains('选项三')) return '选项三'; + } + else if(controls.contains('选项二')) return '选项二'; + return controls.randomGet(); + }); + } else event.finish(); + 'step 3' + if(result.control=='选项一'){ + if(!target.storage._disableJudge) target.disableJudge(); + target.damage('fire'); + }else{ + var cards=target.getCards('h',result.control=='选项二'?'shan':'sha'); + if(cards.length) target.discard(cards); + } + } + } + } + }, + clandianzhan:{ + audio:2, + trigger:{player:'useCardAfter'}, + forced:true, + filter:function(event,player){ + if(!lib.suit.contains(get.suit(event.card))) return false; + var card=event.card,suit=get.suit(card); + for(var i=player.actionHistory.length-1; i>=0; i--){ + var history=player.actionHistory[i].useCard; + for(var evt of history){ + if(evt==event) continue; + if(get.suit(evt.card)==suit) return false; + } + if(player.actionHistory[i].isRound) break; + } + return event.targets&&event.targets.length==1&&!event.targets[0].isLinked()|| + player.getCards('h',card=>get.suit(card)==get.suit(event.card)).filter(card=>{ + var mod=game.checkMod(card,player,'unchanged','cardChongzhuable',player); + if(mod!='unchanged') return true; + return false; + }).length==0; + }, + content:function(){ + 'step 0' + if(trigger.targets&&trigger.targets.length==1){ + trigger.targets[0].link(true); + } + var cards=player.getCards('h',card=>get.suit(card)==get.suit(trigger.card)); + if(cards.filter(card=>{ + var mod=game.checkMod(card,player,'unchanged','cardChongzhuable',player); + if(mod!='unchanged') return false; + return true; + }).length==0){ + player.loseToDiscardpile(cards); + player.draw(cards.length); + } + 'step 1' + player.draw(); + } + }, + clanhuanyin:{ + audio:2, + trigger:{player:'dying'}, + forced:true, + check:()=>true, + filter:function(event){ + return event.player.countCards('h')<4; + }, + content:function(){ + player.drawTo(4); + } + }, + clandaojie:{ + audio:2, + audioname:['clan_xunshu','clan_xunchen','clan_xuncai','clan_xuncan'], + trigger:{player:'useCardAfter'}, + filter:function(event,player){ + return player.getHistory('useCard',evt=>{ + return get.type(evt.card)=='trick'&&!get.tag(evt.card,'damage'); + }).indexOf(event)==0; + }, + forced:true, + clanSkill:true, + content:function(){ + 'step 0' + var skills=player.getSkills(null,false,false).filter(skill=>{ + var info=get.info(skill); + if(!info||info.charlotte||!get.is.locked(skill)||get.skillInfoTranslation(skill,player).length==0) return false; + return true; + }); + player.chooseControl(skills,'cancel2').set('choiceList',skills.map(i=>{ + return '
【'+get.translation(lib.translate[i+'_ab']||get.translation(i).slice(0,2))+'】
'+get.skillInfoTranslation(i,player)+'
'; + })).set('displayIndex',false).set('prompt','蹈节:失去一个锁定技,或点“取消”失去1点体力').set('ai',()=>{ + var player=_status.event.player,choices=_status.event.controls.slice(); + var negs=choices.filter(i=>{ + var info=get.info(i); + if(!info||!info.ai) return false; + return info.ai.neg||info.ai.halfneg; + }); + if(negs.length) return negs.randomGet(); + if(get.effect(player,{name:'losehp'},player,player)>=0) return 'cancel2'; + if(player.hp>3) return 'cancel2'; + return Math.random()<0.75?'clandaojie':choices.randomGet(); + }); + 'step 1' + if(result.control!='cancel2'){ + player.removeSkill(result.control); + player.popup(result.control); + game.log(player,'失去了技能','#g【'+get.translation(result.control)+'】'); + } + else{ + player.loseHp(); + } + 'step 2' + var targets=game.filterPlayer(current=>current==player||current.hasClan('颍川荀氏')); + if(targets.length==1) event._result={bool:true,targets:targets}; + else player.chooseTarget('蹈节:将'+get.translation(trigger.cards.filterInD())+'交给一名颍川荀氏角色',true,(card,player,target)=>{ + return target==player||target.hasClan('颍川荀氏') + }).set('ai',target=>get.attitude(_status.event.player,target)); + 'step 3' + if(result.bool){ + var target=result.targets[0]; + player.line(target,'green'); + target.gain(trigger.cards.filterInD(),player,'gain2'); + } + }, + }, //族吴班 clanzhanding:{ audio:2, @@ -181,6 +750,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, clanmuyin:{ audio:2, + clanSkill:true, audioname:['clan_wuxian','clan_wuban'], trigger:{player:'phaseZhunbeiBegin'}, isMax:function(player){ @@ -245,6 +815,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ characterReplace:{ wuban:['clan_wuban','wuban'], }, + characterIntro:{ + xunshu:'荀淑(83年~149年),字季和,为郎陵侯相,颍川颍阴人(今河南省许昌市)人。汉和帝至汉桓帝时人物,以品行高洁著称。有子八人,号八龙。年轻时有高尚的德行,学问渊博,不喜欢雕章琢句,徒在文字上用功,不注重实际的学识。因此,常常被俗儒看不起。但州里却称他有知人之明。安帝时,征召任为郎中,后来再升当涂长。离职还乡里。他的孙子荀彧是曹操部下著名的谋士。', + xuncai:'荀采(生卒年不详),字女荀,颍川人,东汉名士荀爽之女。荀采聪慧敏捷而有才艺。十七岁时,荀采嫁给阴瑜。两年后阴瑜去世。荀采不愿意改嫁,但荀爽答应把荀采嫁给同郡人郭奕。荀采趁着旁人没有防备,用粉在门上写下:“尸还阴”,而后自缢而死。', + xuncan:'荀粲(210年—238年),字奉倩,颍川郡颍阴县(今河南省许昌市)人。三国时期曹魏大臣、玄学家,太尉荀彧幼子。个性简贵,不轻易交接常人,所交之辈皆一时俊杰。聪颖过人,善谈玄理,名噪一时。娶大将军曹洪之女为妻,生活美满。景初二年,面对妻子去世,悲痛过度而死,时年二十九,成语“荀令伤神”与之有关。', + }, translate:{ clan_wuxian:'族吴苋', clanyirong:'移荣', @@ -257,8 +832,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){ clan_wuban:'族吴班', clanzhanding:'斩钉', clanzhanding_info:'你可以将任意张牌当做【杀】使用。你以此法使用的【杀】结算结束后,你令你的手牌上限-1,然后若你因此【杀】造成过伤害,则你将手牌摸至手牌上限(至多摸五张),否则你令此【杀】不计入次数限制。', + clan_xunshu:'族荀淑', + clanshenjun:'神君', + clanshenjun_info:'当一名角色使用【杀】或普通锦囊牌时,若你手牌中有该牌名的牌,你展示之,且这些牌称为“神君”。然后本阶段结束时,你可以将等同于你“神君”数张牌当做一张“神君”牌使用。', + clanbalong:'八龙', + clanbalong_info:'锁定技。当你回复体力后或受到伤害后或失去体力后,若你手牌中唯一最多的类别为锦囊牌,你展示所有手牌并摸至角色数张。', + clandaojie:'蹈节', + clandaojie_info:'宗族技,锁定技。当你每回合第一次使用非伤害类普通锦囊牌后,你须失去一个锁定技或失去1点体力,令一名颍川荀氏角色获得此牌对应的所有实体牌。', + clan_xuncai:'族荀采', + clanlieshi:'烈誓', + clanlieshi_info:'出牌阶段,你可以选择一项:1.废除判定区并受到你造成的1点火焰伤害;2.弃置所有【闪】;3.弃置所有【杀】。然后令一名其他角色从你未选择的选项中选择一项。', + clandianzhan:'点盏', + clandianzhan_info:'锁定技。当你每轮第一次使用一种花色的牌后:若此牌的目标数为1,你横置此牌目标;若你有此花色的手牌,你重铸这些牌。然后你摸一张牌。', + clanhuanyin:'还阴', + clanhuanyin_info:'锁定技。当你进入濒死状态时,将手牌补至四张。', + clan_xunchen:'族荀谌', + clansankuang:'三恇', + clansankuang_info:'锁定技。当你每轮第一次使用一种类别的牌后,你令一名其他角色交给你至少X张牌,然后于场上或弃牌堆内或处理区内获得你使用的牌对应的所有实体牌(X为以下条件中其满足的项数:场上有牌、已受伤、体力值小于手牌数)。', + clanbeishi:'卑势', + clanbeishi_info:'锁定技。当一名角色失去最后的手牌后,若其是你首次发动〖三恇〗的目标角色,你回复1点体力。', + clan_xuncan:'族荀粲', + clanyunshen:'熨身', + clanyunshen_info:'出牌阶段限一次。你可以令一名其他角色回复1点体力,然后选择一项:1.你视为对其使用一张冰【杀】;2.其视为对你使用一张冰【杀】。', + clanshangshen:'伤神', + clanshangshen_info:'当一名角色受到属性伤害后,若本回合此前没有角色或已死亡的角色受到过属性伤害,你可以进行目标角色为你的【闪电】的特殊的使用流程,然后其将手牌摸至四张。', + clanfenchai:'分钗', + clanfenchai_info:'锁定技。若你首次发动技能指定的目标角色中:存在存活角色,你的判定牌视为♥;不存在存活角色,你的判定牌视为♠。', clan_wu:'陈留·吴氏', + clan_xun:'颍川·荀氏', }, }; }); diff --git a/character/diy.js b/character/diy.js index 84f4a0c6c..9e0222367 100755 --- a/character/diy.js +++ b/character/diy.js @@ -87,7 +87,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_kyou:['female','key',3,['kyou_zhidian','kyou_duanfa']], key_seira:['female','key',3,['seira_xinghui','seira_yuanying']], key_kiyu:['female','key',3,['kiyu_yuling','kiyu_xianyu']], - //key_tomoyo:['female','key',4,['tomoyo_wuwei','tomoyo_yingshou']], + key_tomoyo:['female','key',4,['tomoyo_wuwei','tomoyo_zhengfeng']], ns_huangchengyan:['male','shu',3,['nslongyue','nszhenyin']], ns_sunchensunjun:['male','wu',5,['nsxianhai','nsxingchu']], @@ -205,7 +205,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"], diy_yijiang2:["key_yuuki","key_tenzen","key_kyouko","key_kotarou","key_kyou", "ns_chentai","ns_huangwudie","ns_sunyi","ns_zhangning","ns_yanghu"], - diy_yijiang3:['ns_ruanji','ns_zanghong','ns_limi','ns_zhonglimu','prp_zhugeliang','key_seira','key_kiyu'], + diy_yijiang3:['ns_ruanji','ns_zanghong','ns_limi','ns_zhonglimu','prp_zhugeliang','key_seira','key_kiyu','key_tomoyo'], diy_tieba:["ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_luyusheng"], diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao","ns_chengpu"], diy_xushi:["diy_feishi","diy_hanlong","diy_liufu","diy_liuyan","diy_liuzan","diy_tianyu","diy_xizhenxihong","diy_yangyi","diy_zaozhirenjun"], @@ -547,6 +547,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var storage=player.getStorage('tomoyo_wuwei_mark'); return !storage.contains(get.suit(card)); }, + check:function(card){ + return 5-get.value(card); + }, onuse:function(result,player){ player.markAuto('tomoyo_wuwei_mark',[get.suit(result.card,false)]); player.addTempSkill('tomoyo_wuwei_mark'); @@ -565,10 +568,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{global:'useCardAfter'}, direct:true, filter:function(event,player){ - return player.inRangeOf(event.player)&&player.canUse('sha',event.player,false); + return event.card.name=='shan'&&player.inRangeOf(event.player)&&player.canUse('sha',event.player,false); }, content:function(){ - player.chooseToUse(get.prompt('tomoyo_wuwei',trigger.target),'对该角色使用一张【杀】',function(card,player,event){ + player.chooseToUse('武威:是否对'+get.translation(trigger.player)+'使用一张【杀】?',function(card,player,event){ if(get.name(card)!='sha') return false; return lib.filter.filterCard.apply(this,arguments); },trigger.player,-1).set('addCount',false).logSkill='tomoyo_wuwei_combo'; @@ -576,8 +579,136 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, - tomoyo_yingshou:{}, - tomoyo_changshi:{}, + tomoyo_zhengfeng:{ + dutySkill:true, + trigger:{player:'phaseZhunbeiBegin'}, + direct:true, + filter:function(event,player){ + return game.hasPlayer((current)=>player.inRange(current)); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('tomoyo_zhengfeng'),'令一名攻击范围内的角色进行判定。其于你的下回合开始前使用与判定结果颜色相同的牌时,你摸一张牌。',function(card,player,target){ + return player.inRange(target); + }).set('ai',function(target){ + var player=_status.event.player; + if(player.hp<=1&&!player.countCards('h')) return 0; + var hs=target.countCards('h'),thr=get.threaten(target); + if(target.hasJudge('lebu')) return 0; + return Math.sqrt(1+hs)*Math.sqrt(Math.max(1,1+thr)); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('tomoyo_zhengfeng',target); + target.judge(); + } + 'step 2' + player.addTempSkill('tomoyo_zhengfeng_tomoyo',{player:'phaseBeginStart'}); + player.markAuto('tomoyo_zhengfeng_tomoyo',[{ + target:target, + color:result.color, + }]); + }, + group:'tomoyo_zhengfeng_after', + subSkill:{ + tomoyo:{ + charlotte:true, + onremove:true, + mod:{ + inRangeOf:function(source,player){ + var list=player.getStorage('tomoyo_zhengfeng_tomoyo'); + for(var obj of list){ + if(obj.target==source) return true; + } + }, + }, + trigger:{global:'useCard'}, + forced:true, + filter:function(event,player){ + var color=get.color(event.card); + if(color=='none') return false; + var list=player.getStorage('tomoyo_zhengfeng_tomoyo'); + for(var obj of list){ + if(obj.target==event.player&&color==obj.color) return true; + } + return false; + }, + content:function(){ + player.draw(); + }, + intro:{ + mark:function(dialog,students,player){ + if(!students||!students.length) return '全校风纪良好!'; + var str=''; + for(var i of students){ + if(str.length>0) str+='
'; + str+=get.translation(i.target); + str+=':'; + str+=get.translation(i.color); + } + dialog.addText(str); + }, + }, + }, + after:{ + trigger:{player:'phaseJieshuBegin'}, + filter:function(event,player){ + return !player.hasHistory('useSkill',function(evt){ + return evt.skill=='tomoyo_zhengfeng'; + }); + }, + prompt:'整风:是否放弃使命?', + prompt2:'你可以减1点体力上限并失去〖武威〗,摸两张牌并回复1点体力,然后获得技能〖长誓〗。', + skillAnimation:true, + animationColor:'gray', + check:function(event,player){ + return (player.hp*1.1+player.countCards('h'))<3; + }, + content:function(){ + 'step 0' + game.log(player,'放弃了身为学生会长的使命'); + player.awakenSkill('tomoyo_zhengfeng'); + player.loseMaxHp(); + 'step 1' + player.removeSkill('tomoyo_wuwei'); + 'step 2' + player.draw(2); + player.recover(); + 'step 3' + player.addSkill('tomoyo_changshi'); + }, + }, + }, + }, + tomoyo_changshi:{ + trigger:{ + global:['gainAfter','loseAsyncAfter'], + }, + forced:true, + filter:function(event,player){ + return game.hasPlayer(function(current){ + return current!=player&&event.getg(current).length>1&&player.inRangeOf(current); + }); + }, + content:function(){ + player.draw(); + }, + group:'tomoyo_changshi_recover', + subSkill:{ + recover:{ + trigger:{global:'recoverAfter'}, + forced:true, + filter:function(event,player){ + return event.player.isAlive()&&player.inRangeOf(event.player); + }, + content:function(){ + player.changeHujia(1); + }, + }, + }, + }, //天宫希优 kiyu_yuling:{ mod:{ @@ -17144,10 +17275,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ key_tomoyo:'坂上智代', tomoyo_wuwei:'武威', tomoyo_wuwei_info:'①每回合每种花色限一次。你可以将一张手牌当做【杀】使用或打出。②当有角色使用【闪】后,若你在其攻击范围内,你可以对其使用一张【杀】(无距离限制)。', - /*tomoyo_yingshou:'樱守', - tomoyo_yingshou_info:'', + tomoyo_zhengfeng:'整风', + tomoyo_zhengfeng_info:'使命技。①准备阶段,你可以令攻击范围内的一名角色进行判定。若如此做,你获得如下效果直到下回合开始:你视为在该角色的攻击范围内,且当该角色使用与判定牌颜色相同的牌时,你摸一张牌。②失败:结束阶段,若你于本回合内未发动过〖整风①〗,则你可以减1点体力上限。你失去〖武威〗,摸两张牌并回复1点体力,然后获得〖长誓〗。', tomoyo_changshi:'长誓', - tomoyo_changshi_info:'',*/ + tomoyo_changshi_info:'锁定技。一名攻击范围内包含你的角色回复体力后,你获得1点护甲;一名攻击范围内包含你的角色一次性获得至少两张牌后,你摸一张牌。', noname:"小无", noname_zhuyuan:"祝愿", diff --git a/character/extra.js b/character/extra.js index 20026f0bb..48e259f36 100755 --- a/character/extra.js +++ b/character/extra.js @@ -13,7 +13,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ extra_yin:['shen_liubei','shen_luxun'], extra_lei:['shen_ganning','shen_zhangliao'], extra_key:['key_kagari','key_shiki','db_key_hina'], - extra_decade:['shen_jiangwei','shen_machao','shen_zhangfei'], + extra_decade:['shen_jiangwei','shen_machao','shen_zhangfei','shen_zhangjiao'], extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji','shen_sunquan'], extra_mobilezhi:['shen_guojia','shen_xunyu'], extra_mobilexin:['shen_taishici','shen_sunce'], @@ -22,6 +22,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + shen_zhangjiao:['male','shen',3,['yizhao','sijun','sanshou','tianjie'],['qun']], shen_zhangfei:['male','shen',4,['shencai','xunshi'],['shu']], tw_shen_guanyu:['male','shen',4,['twwushen','twwuhun'],['shu']], shen_machao:['male','shen',4,['shouli','hengwu'],['shu']], @@ -72,6 +73,148 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //神张角 + yizhao:{ + audio:2, + trigger:{ + player:['useCard','respond'] + }, + forced:true, + filter:function(event,player){ + return typeof get.number(event.card)=='number'; + }, + marktext:'黄', + intro:{ + name:'黄(异兆/肆军)', + name2:'黄', + content:'mark', + markcount:function(storage,player){ + return storage.toString().slice(-2); + }, + }, + content:function(){ + 'step 0' + event.num=player.countMark('yizhao'); + player.addMark('yizhao',get.number(trigger.card)); + 'step 1' + var num=Math.floor(num/10)%10,num2=Math.floor(player.countMark('yizhao')/10)%10; + if(num!=num2){ + var card=get.cardPile2(card=>{ + return get.number(card,false)==num2; + }); + if(card) player.gain(card,'gain2'); + } + }, + mod:{ + aiOrder:function(player,card,num){ + if(get.number(card)+player.countMark('yizhao')%10>10) return num+10; + }, + }, + ai:{ + threaten:1.5, + effect:{ + target:function(card,player,target,current){ + if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,0.1]; + } + } + } + }, + sijun:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + filter:function(event,player){ + return player.countMark('yizhao')>ui.cardPile.childNodes.length; + }, + check:()=>true, + content:function(){ + 'step 0' + player.removeMark('yizhao',player.countMark('yizhao')); + 'step 1' + var total=0,cards=[]; + for(var i=0;i<36;i++){ + var card=get.cardPile(card=>{ + if(cards.contains(card)) return false; + var num=get.number(card,false); + if(total+num>36) return false; + return true; + }); + if(card){ + total+=get.number(card,false); + cards.push(card); + } + if(total==36) break; + } + if(cards.length) player.gain(cards,'gain2'); + } + }, + sanshou:{ + audio:2, + trigger:{player:'damageBegin4'}, + check:function(event,player){ + return get.damageEffect(player,event.source,event.source,event.nature)<=0; + }, + content:function(){ + 'step 0' + var cards=game.cardsGotoOrdering(get.cards(3)).cards; + event.cards=cards; + player.showCards(cards,get.translation(player)+'发动了【三首】'); + 'step 1' + var types=[]; + types.addArray(game.getGlobalHistory('useCard').map(evt=>get.type2(evt.card))); + if(cards.filter(card=>!types.contains(get.type2(card))).length){ + trigger.cancel(); + } + game.delayx(); + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(card.name=='shandian'||card.name=='fulei') return [0,0.1]; + if(!get.tag(card,'damage')) return; + var types=[],bool=0; + types.addArray(game.getGlobalHistory('useCard').map(evt=>get.type2(evt.card))); + if(!types.contains(get.type2(card))) bool=1; + if(types.length<2) return Math.min(1,0.4+(types.length+bool)*0.2); + } + } + }, + }, + tianjie:{ + audio:2, + trigger:{global:'phaseEnd'}, + direct:true, + filter:function(event,player){ + return player.hasSkill('tianjie_shuffled'); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('tianjie_effect'),'选择至多三名其他角色,依次对这些角色造成X点雷电伤害(X为其手牌中【闪】的数量,至少为1)',[1,3]).set('ai',target=>{ + var player=_status.event.player; + return get.damageEffect(target,player,player,'thunder')*Math.sqrt(Math.max(1,target.countCards('h','shan'))); + }); + 'step 1' + if(result.bool){ + var targets=result.targets; + player.logSkill('tianjie_effect',targets); + for(var target of targets){ + var num=Math.max(1,target.countCards('h','shan')); + target.damage(num,'thunder'); + } + } + }, + subSkill:{ + effect:{ + trigger:{global:'washCard'}, + forced:true, + silent:true, + charlotte:true, + content:function(){ + player.addTempSkill('tianjie_shuffled'); + }, + }, + shuffled:{charlotte:true}, + } + }, shencai:{ audio:2, enable:'phaseUse', @@ -6529,6 +6672,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ shencai_info:'①出牌阶段限一次,你可以令一名其他角色进行判定。你获得此判定牌,然后若此判定牌:包含以下要素中的任意一个,则其失去已有的下列效果,并获得对应的效果:{⒈体力:当其受到伤害后,其失去等量的体力、⒉武器:其不能使用牌响应杀、⒊打出:当其失去手牌后,其再随机弃置一张手牌(不嵌套触发)、⒋距离:其的结束阶段开始时,其翻面};若均不包含,你获得其一张牌,其获得一枚“死”并获得如下效果:其的角色手牌上限-X、其的回合结束时,若X大于场上存活人数,则其死亡(X为其“死”标记数)。', xunshi:'巡使', xunshi_info:'锁定技。①你手牌区内所有的多目标锦囊牌均视为花色为none的普【杀】。②你使用颜色为none的牌无距离和次数限制。③当你使用无颜色的牌选择目标后,你令你的〖神裁〗的发动次数上限+1(至多为5),然后可以为此牌增加任意个目标。', + shen_zhangjiao:'神张角', + yizhao:'异兆', + yizhao_info:'锁定技。当你使用或打出牌后,你获得等同于此牌点数枚“黄”标记。然后若“黄”的十位数发生变化,你获得牌堆中一张点数为你“黄”的十位数的牌。', + sijun:'肆军', + sijun_info:'准备阶段,若“黄”数大于牌堆的牌数,你可以移去所有“黄”,然后随机获得任意张点数之和为36的牌。', + sanshou:'三首', + sanshou_info:'当你受到伤害时,你可以亮出牌堆顶三张牌。若其中有本回合未被使用过的牌的类型,防止此伤害。', + tianjie:'天劫', + tianjie_info:'一名角色的回合结束时,若本回合牌堆洗过牌,你可以选择至多三名其他角色。你依次对每名目标角色造成X点雷电伤害(X为其手牌中【闪】的数量,至少为1)。', + extra_feng:'神话再临·风', extra_huo:'神话再临·火', diff --git a/character/mobile.js b/character/mobile.js index 34b430ebb..88b6b2006 100644 --- a/character/mobile.js +++ b/character/mobile.js @@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ connect:true, characterSort:{ mobile:{ - mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi"], + mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang"], mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning",'yj_huangzhong'], mobile_shijizhi:["sp_wangcan","sp_chenzhen","sp_sunshao","sp_xunchen","luotong","sp_duyu","sp_bianfuren","feiyi"], mobile_shijixin:['wujing','sp_mifuren','sp_xinpi','wangling','wangfuzhaolei','zhouchu','sp_kongrong','sp_yanghu'], @@ -19,19 +19,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin","re_wuguotai","re_gaoshun"], mobile_yijiang2:["xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui","re_bulianshi"], mobile_yijiang3:["re_liru","xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"], - mobile_yijiang4:["xin_zhoucang","xin_caifuren","xin_guyong","xin_sunluban","xin_caozhen","xin_jushou"], - mobile_yijiang5:['xin_sunxiu','xin_quancong'], + mobile_yijiang4:["xin_zhoucang","xin_caifuren","xin_guyong","xin_sunluban","xin_caozhen","xin_jushou","xin_wuyi","xin_zhuhuan"], + mobile_yijiang5:['xin_sunxiu','xin_quancong','xin_zhuzhi','xin_caoxiu'], mobile_yijiang67:["re_jikang"], mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan","xin_hansui"], }, }, character:{ + xin_caoxiu:['male','wei',4,['qianju','xinqingxi']], + xin_zhuhuan:['male','wu',4,['fenli','xinpingkou'],['unseen']], + sp_pengyang:['male','shu',3,['spdaming','spxiaoni']], + wangjun:['male','qun',4,['zhujian','duansuo']], + xin_zhuzhi:['male','wu',4,['sbanguo']], + xin_wuyi:['male','shu',4,['sbbenxi']], + yangfu:['male','wei',4,['jiebing','hannan']], + sp_caosong:['male','wei',3,['yijin','guanzong']], re_liru:['male','qun',3,['rejuece','remieji','xinfencheng']], re_dianwei:["male","wei",4,["reqiangxi"]], xin_mamidi:['male','qun',3,['chengye','buxu']], ruanhui:['female','wei',3,['mingcha','jingzhong']], xin_quancong:['male','wu',4,['sbyaoming']], - re_xunyu:["male","wei",3,["quhu","rejieming"]], + re_xunyu:["male","wei",3,["quhu","rejieming"],['clan:颍川荀氏']], xin_jushou:['male','qun',3,['xinjianying','shibei']], liuba:['male','shu',3,['duanbi','tongduo']], re_bulianshi:['female','wu',3,['reanxu','zhuiyi']], @@ -100,7 +108,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_wangcan:['male','wei',3,['spqiai','spshanxi']], sp_chenzhen:['male','shu',3,['shameng']], sp_sunshao:['male','wu',3,['mjdingyi','mjzuici','mjfubi']], - sp_xunchen:['male','qun',3,['mjweipo','mjchenshi','mjmouzhi']], + sp_xunchen:['male','qun',3,['mjweipo','mjchenshi','mjmouzhi'],['clan:颍川荀氏']], re_dengai:['male','wei',4,['retuntian','zaoxian']], xin_fuhuanghou:['female','qun',3,['xinzhuikong','xinqiuyuan']], xin_panzhangmazhong:['male','wu',4,['xinduodao','xinanjian']], @@ -174,6 +182,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']], }, characterIntro:{ + wangjun:'王濬(207年~286年),字士治,小名阿童,弘农郡湖县(今河南省灵宝市阌乡)人。西晋时期名将。王濬出身世家,博学多闻,容颜英俊,多谋善战。举秀才出身,起家河东郡从事。泰始八年(272年),担任广汉太守,平定益州叛乱,迁益州刺史。利用长江上游地势之利,修造战船,组建强大的水军。上书晋武帝,促成晋灭吴之战。咸宁六年(280年),率兵顺流而下,熔毁横江铁链,攻克丹阳郡,率先攻取石头城,接受吴末帝孙皓投降,完成西晋统一大业。凭借功勋,拜辅国将军、步兵校尉,册封襄阳侯。为避猜忌,纵情享受,累迁特进、抚军大将军、开府仪同三司、散骑常侍、后军将军等。太康六年十二月(286年1月18日),王濬去世,享年八十岁,谥号为“武”,安葬于柏谷山。', + yangfu:'杨阜(172年—244年),字义山,汉天水冀县(今甘谷县东南)人。三国时期曹魏名臣。汉献帝建安初年,任凉州从事,旋拜安定长史;韦康任刺史后辟为别驾,改任州参军;后因讨马超有功,赐爵关内侯。曹操征汉中时,杨阜担任益州刺史,回来后又担任武都太守。魏明帝时,由将作大匠改少府。杨阜不但卓识远见,而且刚正不阿,敢于直言,对朝廷弊政多有诤谏,六次进言谏魏明帝应勤政爱民,魏明帝对他颇有敬畏之心。杨阜勤政廉洁,在宫内担任少府时,专管宝器、珍膳、衣物等,而他死后则家无馀财。皇帝让杨阜的孙子杨豹继任了少府之职。原甘谷县文昌宫西侧有杨氏家祠,内悬“两代尚书”匾额。', ruanhui:'阮氏女,是指三国时期曹魏名士许允之妻阮氏,陈留尉氏人。阮氏女是中国古代四大丑女之一,貌丑而见识非凡。她出身士族之家,是卫尉阮共(字伯彦)之女、阮侃(字德如)之妹。嫁与许允后生有二子:许奇,官至司隶校尉;许猛,官至幽州刺史。', peixiu:'裴秀(224年-271年4月3日),字季彦。河东郡闻喜县(今山西省闻喜县)人。[1]魏晋时期名臣、地图学家,东汉尚书令裴茂之孙、曹魏光禄大夫裴潜之子。出身河东裴氏,少年时便颇有名气,后被大将军曹爽辟为掾属,袭爵清阳亭侯,又迁黄门侍郎。高平陵之变后,因是曹爽的故吏而被罢免。此后历任廷尉正、安东将军及卫将军司马,参与谋划军国之政,参与平定诸葛诞叛乱。因功转任尚书,进封鲁阳乡侯。魏元帝继位后,进爵鲁阳县侯,任尚书仆射。咸熙元年(264年),受命负责修改官制,又提议恢复五等爵制。五等制恢复后,获封济川侯。他建议立司马炎为世子,司马炎继位晋王后,拜裴秀为尚书令、右光禄大夫。西晋建立后,加左光禄大夫,封钜鹿郡公。泰始三年(267年),升任司空。泰始七年(271年),裴秀因服食寒食散后饮冷酒而逝世,年四十八,谥号“元”。有文集三卷。裴秀作《禹贡地域图》,开创了中国古代地图绘制学。李约瑟称他为“中国科学制图学之父”,与古希腊著名地图学家托勒密齐名,是世界古代地图学史上东西辉映的两颗灿烂明星。为纪念这位中国地图科学创始人而设立的“裴秀奖”,每两年评选一次,是中国地图学界最高奖项。由于他的贡献突出,联合国天文组织将月球正面的一个环形山命名为“裴秀环形山”,', liucheng:'游卡桌游的原创人物。设定为黄忠的妻子。', @@ -423,26 +433,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, - db_atk1:{ - type:'db_atk', - fullimage:true, - //derivation:'shenpei', - }, - db_atk2:{ - type:'db_atk', - fullimage:true, - //derivation:'shenpei', - }, - db_def1:{ - type:'db_def', - fullimage:true, - //derivation:'shenpei', - }, - db_def2:{ - type:'db_def', - fullimage:true, - //derivation:'shenpei', - }, ly_piliche:{ fullskin:true, //vanish:true, @@ -624,6 +614,1091 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + // 界曹休 + xinqingxi:{ + audio:2, + usable:1, + trigger:{source:'damageBegin1'}, + check:function(event,player){ + return get.attitude(player,event.player)<0; + }, + filter:function(event,player){ + return event.player!=player; + }, + content:function(){ + 'step 0' + var num=Math.max(1,4-get.distance(player,trigger.player)); + if(trigger.player.countCards('h')2){ + return 0; + } + return 8-get.value(card); + } + }); + } + 'step 1' + if(!result.bool){ + trigger.num++; + } + } + }, + // 界朱桓 + xinpingkou:{ + audio:2, + trigger:{player:'phaseEnd'}, + direct:true, + filter:function(event,player){ + return player.getHistory('skipped').length>0; + }, + content:function(){ + 'step 0' + player.chooseTarget([1,player.getHistory('skipped').length],get.prompt2('xinpingkou'),function(card,player,target){ + return target!=player; + }).set('ai',function(target){ + var player=_status.event.player; + return get.damageEffect(target,player,player); + }); + 'step 1' + if(result.bool){ + player.logSkill('xinpingkou',result.targets); + event.targets=result.targets.slice(0).sortBySeat(); + } + else{ + event.finish(); + } + 'step 2' + if(event.targets&&event.targets.length){ + event.targets.shift().damage(); + event.redo(); + } + 'step 3' + var card=get.cardPile2(card=>get.type(card,false)=='equip'); + if(card) player.gain(card,'gain2'); + }, + ai:{ + combo:'fenli', + effect:{ + target:function(card){ + if(card.name=='lebu'||card.name=='bingliang') return 0.5; + } + } + } + }, + // 彭羕 + spdaming:{ + audio:3, + trigger:{global:'phaseBefore',player:'enterGame'}, + forced:true, + global:'spdaming_give', + filter:function(event,player){ + return (event.name!='phase'||game.phaseNumber==0); + }, + change:function(player,num){ + if(!player.storage.spdaming) player.storage.spdaming=0; + if(!num) return; + player.storage.spdaming+=num; + player.markSkill('spdaming'); + game.log(player,(num>0?'获得了':'减少了')+get.cnNumber(Math.abs(num))+'点“达命”值'); + }, + content:function(){ + lib.skill.spdaming.change(player,1); + }, + intro:{ + name:'达命值', + content:'当前有#点“达命”值', + }, + subSkill:{ + used:{charlotte:true}, + give:{ + audio:2, + enable:'phaseUse', + nopop:true, + filter:function(event,player){ + if(!player.countCards('he')) return false; + return game.hasPlayer(current=>{ + return current!=player&¤t.hasSkill('spdaming')&&!current.hasSkill('spdaming_used'); + }); + }, + selectCard:1, + filterCard:true, + filterTarget:function(card,player,target){ + return target.hasSkill('spdaming')&&!target.hasSkill('spdaming_used'); + }, + selectTarget:function(){ + var player=_status.event.player; + var targets=game.filterPlayer(current=>{ + return current!=player&¤t.hasSkill('spdaming')&&!current.hasSkill('spdaming_used'); + }); + return targets.length>1?1:-1; + }, + complexSelect:true, + prompt:function(){ + var player=_status.event.player; + var targets=game.filterPlayer(function(current){ + return current!=player&¤t.hasSkill('spdaming')&&!current.hasSkill('spdaming_used'); + }); + return '将一张牌交给'+get.translation(targets)+(targets.length>1?'中的一人':''); + }, + position:'he', + discard:false, + lose:false, + delay:false, + check:function(card){ + var player=_status.event.player; + if(game.hasPlayer(current=>{ + return lib.skill.spdaming_give.filterTarget(null,player,current)&&get.attitude(player,current)>0; + })){ + return 6+Math.random()-get.value(card)/15; + } + return 0; + }, + content:function(){ + 'step 0' + game.trySkillAudio('spdaming',target); + player.give(cards,target); + if(!game.hasPlayer(current=>current!=player&¤t!=target)) event.finish(); + target.addTempSkill('spdaming_used','phaseUseAfter'); + 'step 1' + var type=get.type(cards[0],'trick',target); + event.cardtype=type; + var str=get.translation(type),user=get.translation(player); + target.chooseTarget('达命:选择另一名其他角色','若该角色有'+str+'牌,其将一张该类型的牌交给'+user+',你获得1点“达命”值;否则你将'+get.translation(cards)+'交给'+user,(card,player,target)=>{ + return target!=player&&target!=_status.event.getParent().player; + }).set('ai',target=>1-get.attitude(_status.event.player,target)); + 'step 2' + if(result.bool){ + var targetx=result.targets[0],type=event.cardtype; + target.line(targetx); + event.targetx=targetx; + if(targetx.countCards('he',{type:type})>0){ + targetx.chooseCard('交给'+get.translation(player)+'一张'+get.translation(type)+'牌','he',true,card=>{ + return get.type(card)==_status.event.getParent().cardtype; + }).set('ai',card=>10-get.value(card)); + } + else { + var cards=cards.filter(i=>get.owner(i)==target); + if(cards.length) target.give(cards,player); + event.finish(); + } + } else event.finish(); + 'step 3' + if(result.bool){ + event.targetx.give(result.cards,player); + event.targetx.line(player); + lib.skill.spdaming.change(target,1); + game.delayx(); + } + }, + ai:{ + expose:0.2, + order:10, + result:{target:1}, + }, + } + }, + }, + spxiaoni:{ + audio:2, + enable:'phaseUse', + usable:1, + locked:false, + filter:function(event,player){ + return (player.storage.spdaming||0)>0; + }, + chooseButton:{ + dialog:function(event,player){ + var list=[]; + for(var name of lib.inpile){ + if(name=='sha'){ + list.push(['基本','','sha']); + for(var i of lib.inpile_nature) list.push(['基本','','sha',i]); + } + if(!get.tag({name:name},'damage')) continue; + if(get.type2(name)=='trick') list.push(['锦囊','',name]); + } + return ui.create.dialog('嚣逆',[list,'vcard']); + }, + filter:function(button,player){ + return lib.filter.filterCard({name:button.link[2]},player,_status.event.getParent()); + }, + check:function(button){ + var player=_status.event.player; + if(player.countCards('hs',button.link[2])>0) return 0; + var effect=player.getUseValue(button.link[2]); + if(effect>0) return effect; + return 0; + }, + backup:function(links,player){ + return { + filterCard:true, + audio:'spxiaoni', + selectCard:1, + popname:true, + check:function(card){ + return 6-get.value(card); + }, + position:'hes', + viewAs:{name:links[0][2],nature:links[0][3]}, + onuse:function(result,player){ + lib.skill.spdaming.change(player,-result.targets.length); + }, + } + }, + prompt:function(links,player){ + return '将一张牌当'+(get.translation(links[0][3])||'')+'【'+get.translation(links[0][2])+'】使用'; + } + }, + mod:{ + maxHandcardBase:function(player,num){ + return Math.min(Math.max(0,player.storage.spdaming||0),player.hp); + } + }, + ai:{ + order:4, + result:{ + player:1 + }, + threaten:1.4, + }, + subSkill:{ + backup:{}, + } + }, + // 灭霸 + zhujian:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return target.countCards('e')>0; + }, + selectTarget:[2,Infinity], + multiline:true, + multitarget:true, + filter:function(event,player){ + return game.countPlayer(current=>current.countCards('e')>0)>=2; + }, + content:function(){ + game.asyncDraw(targets); + }, + ai:{ + order:8, + result:{target:1}, + } + }, + duansuo:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return target.isLinked(); + }, + selectTarget:[1,Infinity], + multiline:true, + multitarget:true, + filter:function(event,player){ + return game.countPlayer(current=>current.isLinked()); + }, + content:function(){ + 'step 0' + event.targets=targets.sortBySeat(); + for(var i of event.targets){ + i.link(false); + } + 'step 1' + for(var i of targets){ + i.damage('fire'); + } + }, + ai:{ + order:2, + result:{target:-1}, + } + }, + // 界朱治 + sbanguo:{ + audio:3, + trigger:{global:'phaseBefore',player:'enterGame'}, + forced:true, + direct:true, + group:['sbanguo_move','sbanguo_damage','sbanguo_dying'], + filter:function(event,player){ + return (event.name!='phase'||game.phaseNumber==0); + }, + content:function(){ + 'step 0' + player.chooseTarget('安国:令一名其他角色获得“安国”标记',lib.filter.notMe,true); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('sbanguo',target); + target.addMark('sbanguo_mark',1,false); + target.addAdditionalSkill('sbanguo_'+player.playerid,'sbanguo_mark'); + target.addMark('sbanguo_marked',1,false); + } + }, + subSkill:{ + mark:{ + onremove:true, + marktext:'安', + charlotte:true, + intro:{ + name:'安国', + name2:'安国', + content:'已拥有“安国”标记', + }, + mod:{ + maxHandcardBase:function(player,num){ + return player.maxHp; + } + } + }, + move:{ + audio:'sbanguo', + direct:true, + trigger:{player:'phaseUseBegin'}, + filter:function(event,player){ + return game.hasPlayer(current=>current.hasSkill('sbanguo_mark'))&&game.hasPlayer(current=>!current.hasMark('sbanguo_marked')&¤t!=player); + }, + content:function(){ + 'step 0' + var targets=game.filterPlayer(current=>current.hasSkill('sbanguo_mark')); + var prompt2=targets.length==1?('将'+get.translation(targets[0])+'的“安国”交给一名未获得过“安国”的其他角色'):('选择一名有“安国”的角色,将该标记交给一名未获得过“安国”的其他角色'); + player.chooseTarget(get.prompt('sbanguo'),prompt2,targets.length==1?1:2,(card,player,target)=>{ + if(ui.selected.targets.length==0&&_status.event.targets.length>1) return target.hasSkill('sbanguo_mark'); + return !target.hasMark('sbanguo_marked')&&target!=player; + }).set('ai',target=>{ + var player=_status.event.player; + if(ui.selected.targets.length==0&&_status.event.targets.length>1) return -get.attitude(player,target); + return get.attitude(player,_status.event.targets[0])current.hasSkill('sbanguo_mark'))[0]; + var target2=targets[0]; + }else{ + var target1=targets[0]; + var target2=targets[1]; + } + player.logSkill('sbanguo_move',target2,false); + player.line2([target1,target2],'green'); + var map=target1.additionalSkills; + for(var key in map){ + if(key.indexOf('sbanguo_')!=0) continue; + var id=parseInt(key.slice(8)); + target1.removeAdditionalSkill('sbanguo_'+id); + target2.addMark('sbanguo_mark',1,false); + target2.addAdditionalSkill('sbanguo_'+id,'sbanguo_mark'); + target2.addMark('sbanguo_marked',1,false); + } + } + } + }, + damage:{ + audio:'sbanguo', + forced:true, + locked:false, + trigger:{player:'damageBegin4'}, + filter:function(event,player){ + if(!game.hasPlayer(current=>current.hasSkill('sbanguo_mark'))) return false; + if(event.source&&event.source.isIn()&&event.source.hasSkill('sbanguo_mark')) return false; + return event.num>=player.hp; + }, + content:function(){ + trigger.cancel(); + }, + ai:{ + nofire:true, + nothunder:true, + nodamage:true, + effect:{ + target:function(card,player,target,current){ + if(!game.hasPlayer(current=>current.hasSkill('sbanguo_mark'))) return; + if(player.hasSkill('sbanguo_mark')) return; + if(get.tag(card,'damage')){ + if(target.hp<=1) return [0,0]; + return 0.5; + } + } + }, + }, + }, + dying:{ + audio:'sbanguo', + forced:true, + locked:false, + trigger:{global:'dying'}, + filter:function(event,player){ + var skills=event.player.additionalSkills['sbanguo_'+player.playerid]; + return skills&&skills.length; + }, + logTarget:'player', + content:function(){ + 'step 0' + trigger.player.removeAdditionalSkill('sbanguo_'+player.playerid); + var num=1-trigger.player.hp; + if(num>0) trigger.player.recover(num); + 'step 1' + if(player.hp==1&&player.maxHp==1){ + event.finish(); return; + } + var hp=player.hp-1,maxhp=player.maxHp-1; + var choiceList=['失去'+hp+'点体力,令'+get.translation(trigger.player)+'获得'+hp+'点护甲','减'+maxhp+'点体力上限,令'+get.translation(trigger.player)+'获得'+maxhp+'点护甲']; + var choices=[]; + if(hp>0) choices.push('选项一'); + else choiceList[0]=''+choiceList[0]+''; + if(maxhp>0) choices.push('选项二'); + else choiceList[1]=''+choiceList[1]+''; + player.chooseControl(choices).set('prompt','安国:请选择一项').set('choiceList',choiceList).set('ai',()=>{ + var player=_status.event.player; + if(player.hp<=1||get.attitude(player,_status.event.getTrigger().player)>=4&&player.hp-1<0.4*(player.maxHp-1)&&player.maxHp>1) return '选项二'; + return '选项一'; + }); + 'step 2' + if(result.control=='选项一'){ + var num=player.hp-1; + if(num>0){ + player.loseHp(num); + trigger.player.changeHujia(num); + } + } + else { + var num=player.maxHp-1; + if(num>0){ + player.loseMaxHp(num); + trigger.player.changeHujia(num); + } + } + } + } + } + }, + // 界吴懿 + sbbenxi:{ + audio:3, + trigger:{ + player:'phaseUseBegin', + }, + filter:function(event,player){ + return player.countDiscardableCards(player,'he')>0; + }, + direct:true, + content:function(){ + 'step 0' + player.chooseToDiscard(get.prompt2('sbbenxi'),[1,Infinity],'he').set('logSkill','sbbenxi').set('ai',card=>{ + var player=_status.event.player; + if(ui.selected.cards.length<_status.event.num) return 100-(get.useful(card,player)+player.getUseValue(card)/3); + return 0; + }).set('num',(function(){ + var count=0; + var list=[],list2=[]; + var targets=game.filterPlayer(current=>get.distance(player,current)>=1); + var cards=player.getCards('hs',card=>{ + return player.hasUseTarget(card,false)&&['basic','trick'].contains(get.type(card,false,player))&&get.info(card).allowMultiple!=false; + }); + var cards2=player.getCards('he').filter(i=>lib.filter.cardDiscardable(i,player,'sbbenxi')).sort((a,b)=>{ + return (get.useful(a,player)+player.getUseValue(a)/3)-(get.useful(b,player)+player.getUseValue(b)/3); + }); + for(var i=0; i0) count+=get.effect(player,{name:'wuzhong'},player)/4; + var targets2=targets.filter(current=>{ + return player.canUse(card,current,false)&&get.distance(player,current)<=num&&get.effect(current,card,player,player)>0; + }); + targets2=targets2.map(target=>get.effect(target,card,player,player)).sort((a,b)=>b-a); + targets2.slice(0,num).forEach(eff=>count+=eff); + list.push(count-1.2*get.value(cards2[i])); + } + var val=list.sort((a,b)=>b-a)[0]; + if(!isNaN(val)) list2.push([val,i]); + } + list2=list2.filter(i=>i[0]>0); + if(!list2.length) return 0; + return list2.sort((a,b)=>b[0]-a[0])[0][1]; + })()); + 'step 1' + if(result.bool){ + var num=result.cards.length; + player.addTempSkill('sbbenxi_effect','phaseUseAfter'); + player.addTempSkill('sbbenxi_effect2','phaseUseAfter'); + player.addMark('sbbenxi_effect2',num,false); + } + }, + subSkill:{ + effect:{ + audio:'sbbenxi', + trigger:{player:'useCard2'}, + forced:true, + charlotte:true, + direct:true, + onremove:true, + filter:function(event,player){ + var type=get.type(event.card,false); + return type=='basic'||type=='trick'; + }, + content:function(){ + 'step 0' + var num=player.countMark('sbbenxi_effect2'); + player.removeSkill('sbbenxi_effect'); + player.addTempSkill('sbbenxi_effect3','phaseUseAfter'); + player.markAuto('sbbenxi_effect3',[trigger.card]); + var filter=function(event,player){ + var card=event.card,info=get.info(card); + if(info.allowMultiple==false) return false; + if(event.targets&&!info.multitarget){ + if(game.hasPlayer(function(current){ + return !event.targets.contains(current)&&lib.filter.targetEnabled2(card,player,current)&&get.distance(player,current)==1; + })){ + return true; + } + } + return false; + } + if(!filter(trigger,player)) event.finish(); + else{ + var prompt='为'+get.translation(trigger.card)+'增加至多'+get.cnNumber(num)+'个距离为1的目标?'; + trigger.player.chooseTarget(get.prompt('sbbenxi_effect'),prompt,[1,num],function(card,player,target){ + var player=_status.event.player; + return !_status.event.targets.contains(target)&&lib.filter.targetEnabled2(_status.event.card,player,target)&&get.distance(player,target)==1; + }).set('ai',function(target){ + var trigger=_status.event.getTrigger(); + var player=_status.event.player; + return get.effect(target,trigger.card,player,player); + }).set('card',trigger.card).set('targets',trigger.targets); + } + 'step 1' + if(result.bool){ + if(!event.isMine()&&!event.isOnline()) game.delayx(); + } + else event.finish(); + 'step 2' + player.logSkill('sbbenxi_effect',result.targets); + game.log(result.targets,'也成为了',trigger.card,'的目标'); + trigger.targets.addArray(result.targets); + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(player.canUse(card,target)&&get.distance(player,target)!=1) return 1.2; + }, + }, + }, + }, + effect2:{ + audio:'sbbenxi', + trigger:{ + global:'useCardAfter', + }, + forced:true, + charlotte:true, + onremove:true, + filter:function(event,player){ + return player.getStorage('sbbenxi_effect3').contains(event.card)&&event.player.hasHistory('sourceDamage',evt=>{ + return event.card==evt.card; + }); + }, + content:function(){ + player.draw(2); + }, + mod:{ + aiOrder:function(player,card,num){ + var evt=_status.event.getParent('phaseUse'); + if(!evt||evt.player!=player) return; + if(player.hasHistory('useCard',evtx=>{ + return evtx.getParent('phaseUse')==evt&&['basic','trick'].contains(get.type(evtx.card)); + })) return; + if(get.tag(card,'damage')||get.type(card)=='equip') return num+10; + }, + globalFrom:function(from,to,distance){ + return distance-from.countMark('sbbenxi_effect2'); + } + }, + marktext:'奔', + intro:{ + content:function(storage,player){ + var str='于此阶段至其他角色的距离-'+storage; + if(player.hasSkill('sbbenxi_effect')) str+=';使用下一张基本牌或普通锦囊牌选择目标后,可以增加'+get.cnNumber(storage)+'个目标'; + return str; + } + }, + }, + effect3:{ + forced:true, + charlotte:true, + popup:false, + onremove:true, + } + }, + }, + // 杨阜 + jiebing:{ + audio:2, + trigger:{ + player:'damageEnd', + }, + direct:true, + forced:true, + filter:function(event,player){ + return game.hasPlayer(current=>{ + return current!=event.source&¤t!=player&¤t.countGainableCards(player,'he'); + }); + }, + content:function(){ + 'step 0' + player.chooseTarget('借兵:选择一名其他角色',get.skillInfoTranslation('jiebing'),true,(card,player,target)=>{ + return player!=target&&target!=_status.event.getTrigger().source&&target.countGainableCards(player,'he'); + }).set('ai',target=>get.effect(target,{name:'shunshou_copy2'},player,player) /** (target.countCards('he')>1?1.5:1)*/); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('jiebing',target); + if(target.ai.shown>0) player.addExpose(0.15); + var cards=target.getGainableCards(player,'he').randomGets(1); + event.cards=cards; + player.gain(target,cards,'give','bySelf'); + player.showCards(cards,'借兵'); + } else event.finish(); + 'step 2' + for(var card of cards){ + if(get.type(card)=='equip'&&player.hasUseTarget(card)&&get.owner(card)==player){ + player.chooseUseTarget(card,true); + } + } + }, + ai:{ + maixie:true, + maixie_hp:true, + effect:{ + target:function(card,player,target){ + if(get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + if(player!=target&&!player.getFriends().length) return; + if(game.hasPlayer(current=>{ + return current!=player&&get.attitude(player,current)>0&¤t.countGainableCards(target,'he')>0; + })) return [1,1]; + } + }, + }, + }, + }, + hannan:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return !player.hasSkillTag('noCompareSource'); + }, + filterTarget:function(card,player,target){ + return player.canCompare(target); + }, + content:function(){ + 'step 0' + player.chooseToCompare(target); + 'step 1' + if(!result.tie){ + var players=[player,target]; + if(result.bool) players.reverse(); + players[1].line(players[0],'thunder'); + players[0].damage(players[1],2); + } + }, + ai:{ + order:7, + result:{ + target:function(player,target){ + var hs=player.getCards('h').sort(function(a,b){ + return get.number(b)-get.number(a); + }); + var ts=target.getCards('h').sort(function(a,b){ + return get.number(b)-get.number(a); + }); + if(!hs.length||!ts.length) return 0; + if(get.number(hs[0])>get.number(ts[0])||get.number(hs[0])-ts.length>=(9+Math.min(2,player.hp/2))) return get.sgnAttitude(player,target)*get.damageEffect(target,player,player); + return 0; + }, + }, + }, + }, + // 曹嵩 + yijin:{ + audio:3, + trigger:{player:'phaseUseBegin'}, + forced:true, + direct:true, + group:['yijin_upstart','yijin_die'], + filter:function(event,player){ + return lib.skill.yijin.getKane(player).length; + }, + getKane:function(player){ + var list=lib.skill.yijin.derivation; + return list.filter(mark=>player.hasMark(mark)); + }, + derivation:['yijin_wushi','yijin_jinmi','yijin_guxiong','yijin_tongshen','yijin_yongbi','yijin_houren'], + getValue:function(player,mark,target){ + var att=get.attitude(player,target); + var dis=Math.sqrt(get.distance(player,target,'absolute')); + switch (mark.slice(6)){ + case 'wushi': + return get.effect(target,{name:'wuzhong'},player,player)*2.5/dis; + case 'jinmi': + if(target.hasJudge('lebu')&&!target.hasCard({name:'wuxie'},'hs')) return 1; + return get.effect(target,{name:'lebu'},player,player)/dis; + case 'guxiong': + return get.effect(target,{name:'losehp'},player,player)*2/dis; + case 'tongshen': + if(target.isMin()) return 0; + var eff=get.damageEffect(target,player,target); + if(eff>=0) return 0; + if(att>=4){ + if(target.hp==1) return att*5/Math.max(0.1,5-dis); + if(target.hp==2&&target.countCards('he')<=2) return att*3/Math.max(0.1,5-dis); + } + if(att>0) return 0; + return -eff/5*dis; + case 'yongbi': + return get.effect(target,{name:'bingliang'},player,player)*2; + case 'houren': + return get.recoverEffect(target,player,player)/dis; + } + }, + content:function(){ + 'step 0' + player.chooseTarget('亿金:令一名其他角色获得1枚“金”',true,(card,player,target)=>{ + return player!=target&&!lib.skill.yijin.getKane(target).length; + }).set('ai',target=>{ + var player=_status.event.player,kane=lib.skill.yijin.getKane(player); + return Math.abs(Math.max.apply(Math.max,kane.map(i=>lib.skill.yijin.getValue(player,i,target)))); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('yijin',target); + var kane=lib.skill.yijin.getKane(player); + var choiceList=kane.map(i=>{ + return '
【'+get.translation(lib.translate[i+'_ab']||get.translation(i).slice(0,2))+'】
' + + '
'+get.skillInfoTranslation(i,player)+'
'; + }); + player.chooseControl(kane).set('choiceList',choiceList).set('displayIndex',false).set('prompt','选择令'+get.translation(target)+'获得的“金”').set('ai',()=>{ + var controls=_status.event.controls,player=_status.event.player,target=_status.event.getParent().target; + var list=controls.map(i=>[i,lib.skill.yijin.getValue(player,i,target)])//.filter(i=>i[1]>=0); + list.sort((a,b)=>b[1]-a[1]); + if(list.length) return list[0][0]; + return controls.randomGet(); + }); + } else event.finish(); + 'step 2' + var kane=result.control; + player.removeMark(kane,1); + player.popup(kane,'metal'); + player.addSkill('yijin_clear'); + target.addMark(kane,1); + target.addAdditionalSkill('yijin_'+player.playerid,kane); + game.delayx(); + }, + subSkill:{ + mark:{ + mark:true, + marktext:'金', + intro:{ + name:'金(膴仕)', + name2:'金(膴仕)', + markcount:function(storage,player){ + return lib.skill.yijin.getKane(player).length; + }, + content:function(storage,player){ + return '剩余金:'+get.translation(lib.skill.yijin.getKane(player)); + }, + }, + }, + upstart:{ + audio:'yijin', + trigger:{ + global:'phaseBefore', + player:'enterGame', + }, + forced:true, + filter:function(event,player){ + return (event.name!='phase'||game.phaseNumber==0); + }, + content:function(){ + var kane=lib.skill.yijin.derivation; + for(var mark of kane){ + player.addMark(mark,1,false); + player.unmarkSkill(mark); + } + player.addSkill('yijin_mark'); + } + }, + die:{ + audio:'yijin', + trigger:{player:'phaseBegin'}, + forced:true, + filter:function(event,player){ + return !lib.skill.yijin.getKane(player).length; + }, + content:function(){ + player.die(); + } + }, + clear:{ + trigger:{ + global:'phaseAfter', + player:'die', + }, + charlotte:true, + forced:true, + popup:false, + forceDie:true, + filter:function(event,player){ + if(event.name=='die') return true; + if(!lib.skill.yijin.getKane(event.player).length) return false; + if(event.player.additionalSkills['yijin_'+player.playerid]){ + return true; + } + return false; + }, + content:function(){ + if(trigger.name=='die'){ + game.countPlayer(current=>{ + var skills=current.additionalSkills['yijin_'+player.playerid]; + if(skills&&skills.length){ + current.removeAdditionalSkill('yijin_'+player.playerid); + for(var i of skills){ + trigger.player.removeSkill(i); + } + } + }); + } + else { + var skills=trigger.player.additionalSkills['yijin_'+player.playerid]; + trigger.player.removeAdditionalSkill('yijin_'+player.playerid); + for(var i of skills){ + trigger.player.removeMark(i,1); + trigger.player.removeSkill(i); + } + } + } + }, + wushi:{ + charlotte:true, + forced:true, + trigger:{player:'phaseDrawBegin2'}, + content:function(){ + trigger.num+=4; + }, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+1; + }, + }, + marktext:'金', + intro:{ + name:'金(膴仕)', + name2:'金(膴仕)', + content:'摸牌阶段多摸四张牌;使用【杀】的次数上限+1', + }, + }, + jinmi:{ + charlotte:true, + forced:true, + trigger:{player:'phaseBegin'}, + content:function(){ + player.skip('phaseUse'); + player.skip('phaseDiscard'); + }, + marktext:'金', + intro:{ + name:'金(金迷)', + name2:'金(金迷)', + content:'回合开始时,跳过下一个出牌阶段和弃牌阶段', + }, + }, + guxiong:{ + charlotte:true, + forced:true, + trigger:{player:'phaseUseBegin'}, + content:function(){ + player.loseHp(); + }, + mod:{ + maxHandcard:function(player,num){ + return num-3; + } + }, + marktext:'金', + intro:{ + name:'金(贾凶)', + name2:'金(贾凶)', + content:'出牌阶段开始时,失去1点体力;手牌上限-3', + }, + }, + tongshen:{ + charlotte:true, + forced:true, + trigger:{player:'damageBegin4'}, + filter:function(event){ + return event.nature=='thunder'; + }, + content:function(){ + trigger.cancel(); + }, + ai:{ + nofire:true, + nodamage:true, + effect:{ + target:function(card,player,target,current){ + if(get.tag(card,'damage')&&!get.tag(card,'thunderDamage')) return [0,0]; + } + }, + }, + marktext:'金', + intro:{ + name:'金(通神)', + name2:'金(通神)', + content:'当你受到非雷电伤害时,防止之', + }, + }, + yongbi:{ + charlotte:true, + forced:true, + trigger:{player:'phaseZhunbeiBegin'}, + content:function(){ + player.skip('phaseDraw'); + }, + marktext:'金', + intro:{ + name:'金(拥蔽)', + name2:'金(拥蔽)', + content:'准备阶段,跳过下一个摸牌阶段', + }, + }, + houren:{ + charlotte:true, + forced:true, + trigger:{player:'phaseEnd'}, + content:function(){ + player.recover(3); + }, + marktext:'金', + intro:{ + name:'金(厚任)', + name2:'金(厚任)', + content:'回合结束时,回复3点体力', + }, + } + } + }, + guanzong:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:lib.filter.notMe, + selectTarget:2, + multitarget:true, + targetprompt:['伤害来源','受伤角色'], + content:function(){ + targets[1].damage(targets[0]).setContent(lib.skill.guanzong.viewAsDamageContent); + }, + viewAsDamageContent:function(){ + 'step 0' + if(lib.config.background_audio){ + game.playAudio('effect','damage'+(num>1?'2':'')); + } + game.broadcast(function(num){ + if(lib.config.background_audio){ + game.playAudio('effect','damage'+(num>1?'2':'')); + } + },num); + var str='视为受到了'; + 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.animate!==false){ + player.$damage(source); + game.broadcastAll(function(nature,player){ + if(lib.config.animation&&!lib.config.low_performance){ + if(nature=='fire'){ + player.$fire(); + } + else if(nature=='thunder'){ + player.$thunder(); + } + } + },event.nature,player); + var numx=Math.max(0,num-player.hujia); + player.$damagepop(-numx,'gray'); + } + 'step 1' + event.trigger('damageSource'); + }, + ai:{ + result:{ + target:function(player,target){ + if(game.countPlayer(i=>i!=player)<2) return 0; + var list=game.filterPlayer(current=>current!=player).map(current=>{ + var _hp=current.hp,_maxhp=current.maxHp; + current.hp=10; current.maxHp=10; + var eff=get.damageEffect(current,player,current)+10; + current.hp=_hp; current.maxHp=_maxhp; + return [current,eff]; + }).sort((a,b)=>b[1]-a[1])[0]; + if(list[1]<0) return 0; + var targetx=list[0],sign=get.sgnAttitude(player,target); + if(ui.selected.targets.length) return target==targetx?sign:0; + return sign*(game.filterPlayer(current=>{ + return current!=player&¤t!=targetx; + }).map(current=>{ + var _hp=targetx.hp,_maxhp=targetx.maxHp; + targetx.hp=10; targetx.maxHp=10; + var eff=get.damageEffect(targetx,current,player); + targetx.hp=_hp; targetx.maxHp=_maxhp; + return [current,eff]; + }).sort((a,b)=>b[1]-a[1])[0][0]==target?10:1); + } + }, + order:9.5, + expose:0.2 + } + }, //马日磾 chengye:{ audio:2, @@ -820,16 +1895,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ filter:(event)=>!event.numFixed, content:function(){ 'step 0' - var cards=get.cards(2),cards2=cards.slice(0); + var cards=game.cardsGotoOrdering(get.cards(3)).cards,cards2=cards.slice(0); event.cards=cards.filter(function(i){ - return get.number(i)<7; + return get.number(i)<9; }); - while(cards2.length>0){ - var card=cards2.pop(); - card.fix(); - ui.cardPile.insertBefore(card,ui.cardPile.firstChild); - } - game.updateRoundNumber(); + // while(cards2.length>0){ + // var card=cards2.pop(); + // card.fix(); + // ui.cardPile.insertBefore(card,ui.cardPile.firstChild); + // } + // game.updateRoundNumber(); player.showCards(cards,get.translation(player)+'发动了【明察】'); if(!event.cards.length) event.finish(); 'step 1' @@ -1521,7 +2596,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ var num=0; for(var i of cards) num+=get.number(i,player); - num=Math.min(num,13); + num=num%13; var card=get.cardPile2(function(card){ return get.number(card,false)==num; }); @@ -2663,10 +3738,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ logTarget:'target', check:function(event,player){ var target=event.target,source=event.player; - var eff2=get.effect(player,event.card,source,player); - if(eff2>=0) return true; var eff1=get.effect(target,event.card,source,player); if(eff1>=0) return false; + var eff2=get.effect(player,event.card,source,player); + if(eff2>=0) return true; if(eff1) if(event.card.name=='sha'){ if(player.hasShan()) return true; @@ -3065,10 +4140,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var player=_status.event.player,target=_status.event.getTrigger().player; var suit=get.suit(card,player),list; switch(suit){ - case 'spade': list=[{name:'jiu'},target,target];break; - case 'heart': list=[{name:'wuzhong'},player,player];break; - case 'club': list=[{name:'tiesuo'},player,target];break; - case 'diamond': list=[{name:'sha',nature:'fire'},player,target];break; + case 'spade':list=[{name:'jiu'},target,target];break; + case 'heart':list=[{name:'wuzhong'},player,player];break; + case 'club':list=[{name:'tiesuo'},player,target];break; + case 'diamond':list=[{name:'sha',nature:'fire'},player,target];break; } list[0].isCard=true; var eff=0; @@ -9498,7 +10573,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!player.countMark('spwuku')||!player.countCards('hse')||player.hasSkill('spmiewu2')) return false; for(var i of lib.inpile){ var type=get.type2(i); - if((type=='basic'||type=='trick')&&lib.filter.filterCard({name:i},player,event)) return true; + if((type=='basic'||type=='trick')&&event.filterCard({name:i},player,event)) return true; } return false; }, @@ -9551,6 +10626,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, hiddenCard:function(player,name){ + if(!lib.inpile.contains(name)) return false; var type=get.type2(name); return (type=='basic'||type=='trick')&&player.countMark('spwuku')>0&&player.countCards('she')>0&&!player.hasSkill('spmiewu2'); }, @@ -11832,7 +12908,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ event.dialog.textPrompt=event.dialog.add('
及时点击卡牌,但不要点到毒了!
'); var str='
'; for(var i of list){ - str+=(get.translation(i)+': '+Math.min(2,event.map[i])+'/2 '); + str+=(get.translation(i)+':'+Math.min(2,event.map[i])+'/2 '); } str+='
'; event.dialog.textPrompt2=event.dialog.add(str); @@ -11886,7 +12962,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(event.finishedx.length
  • 星野 梦美:锦囊牌*2
  • 能美 库特莉亚芙卡:装备牌/【杀】/【酒】*1
  • 友利 奈绪:【杀】/【酒】*1
  • 神尾 观铃:【闪】/【桃】*1
  • 伊吹 风子:锦囊牌/【闪】/【桃】*1
  • 仲村 由理:装备牌*2
  • Illustration: うら;Twitter:@ura530', + qiaosi_map_info:'
  • 星野 梦美:锦囊牌*2
  • 能美 库特莉亚芙卡:装备牌/【杀】/【酒】*1
  • 友利 奈绪:【杀】/【酒】*1
  • 神尾 观铃:【闪】/【桃】*1
  • 伊吹 风子:锦囊牌/【闪】/【桃】*1
  • 仲村 由理:装备牌*2
  • Illustration:うら;Twitter:@ura530', qiaosi_c1:' ', //星野 梦美 qiaosi_c2:' ', @@ -17413,7 +18482,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xingtu:'行图', xingtu_info:'锁定技。①当你使用有点数的牌结算结束后,你将此牌点数记录为X。②当你使用牌时,若X÷Y的余数为0,则你摸一张牌(Y为此牌的点数)。③你使用Y÷X的余数为0的牌无次数限制(Y为此牌的点数)。', juezhi:'爵制', - juezhi_info:'出牌阶段,你可以弃置至少两张牌,然后从牌堆中获得一张点数为X的牌(X=min(13, 这些牌的点数和))。', + juezhi_info:'出牌阶段,你可以弃置至少两张牌,然后从牌堆中获得一张点数为X的牌(X为这些牌的点数和除以13后的余数)。', sp_jianggan:'手杀蒋干', spdaoshu:'盗书', spdaoshu_info:'每轮限一次。一名敌方角色的出牌阶段开始时,若其有手牌,则你可以令其视为使用一张【酒】。其须声明一个基本牌的牌名,然后你判断其手牌区内是否有该牌名的牌。若你判断正确,则你随机获得其五张手牌,否则你不能响应其使用的牌直到回合结束。', @@ -17439,18 +18508,62 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sbyaoming_info:'①游戏开始时,你获得2枚“名”。②当你受到1点伤害后,若你的“名”少于4枚,则你获得一枚“名”。③出牌阶段或当你受到伤害后,你可以移除一枚“名”并选择一项:⒈弃置一名手牌数不小于你的角色的一张牌。⒉令一名手牌数不大于你的角色摸一张牌。若你上次发动〖邀名③〗时未获得过“名”且你选择的选项和上次不同,则你获得一枚“名”。', ruanhui:'阮慧', mingcha:'明察', - mingcha_info:'摸牌阶段开始时,你亮出牌堆顶的两张牌。若这两张牌中有点数小于7的牌,则你可以放弃摸牌并获得这些牌,然后你可以获得一名其他角色的随机一张牌。', + mingcha_info:'摸牌阶段开始时,你亮出牌堆顶的三张牌。若这三张牌中有点数小于9的牌,则你可以放弃摸牌并获得这些牌,然后你可以获得一名其他角色的随机一张牌。', jingzhong:'敬重', jingzhong_info:'弃牌阶段结束时,若你于本阶段内弃置过至少两张黑色牌,则你可以选择一名其他角色并获得如下效果直到其回合结束:每阶段限三次,其于出牌阶段内使用的牌结算结束后,你获得此牌对应的实体牌。', xin_mamidi:'手杀马日磾', chengye:'承业', chengye_info:'锁定技。①其他角色使用的非转化牌结算结束后,或其他角色的装备牌和延时锦囊牌进入弃牌堆后,或有延时锦囊牌因其他角色执行判定阶段的流程而进入弃牌堆后,若你的“六经”有空缺的位置可以置入此牌,则你将此牌置于你武将牌上,填补“六经”的对应位置。②出牌阶段开始时,若你的“六经”没有空缺的位置,则你获得所有“六经”。', - chengye_append:'
  • 《诗经》:伤害类锦囊牌
  • 《尚书》:基本牌
  • 《仪礼》:无懈可击
  • 《易经》:无中生有
  • 《乐经》:乐不思蜀
  • 《春秋》:装备牌', + chengye_append:'
  • 《诗经》:伤害类锦囊牌
  • 《尚书》:基本牌
  • 《仪礼》:无懈可击
  • 《易经》:无中生有
  • 《乐经》:乐不思蜀
  • 《春秋》:装备牌', buxu:'补叙', buxu_backup:'补叙', buxu_info:'出牌阶段,若你的“六经”中有空缺的位置,则你可以弃置X+1张牌并选择一种空缺的“六经”。系统从牌堆或弃牌堆中检索一张对应的牌,然后你将此牌置于你武将牌上,填补“六经”的对应位置。', re_dianwei:"手杀典韦", liuye:'手杀刘晔', + sp_caosong:'手杀曹嵩', + yijin:'亿金', + yijin_info:'锁定技。①游戏开始时,你获得“膴仕”、“金迷”、“贾凶”、“通神”、“拥蔽”、“厚任”各1枚(均称为“金”)。②出牌阶段开始时,你选择一名没有“金”的其他角色。你交给其1枚“金”,且令其获得对应效果。③一名角色的回合结束后,若其有你交给其的“金”,其移去此“金”。④当你死亡时,移去场上所有你交出的“金”。⑤回合开始时,若你没有“金”,你死亡。', + yijin_wushi:'膴仕', + yijin_wushi_info:'锁定技。①摸牌阶段,你多摸四张牌。②你使用【杀】的次数上限+1。', + yijin_jinmi:'金迷', + yijin_jinmi_info:'锁定技。回合开始时,你跳过下一个出牌阶段和弃牌阶段。', + yijin_guxiong:'贾凶', + yijin_guxiong_info:'锁定技。①出牌阶段开始时,你失去1点体力。②你的手牌上限-3。', + yijin_tongshen:'通神', + yijin_tongshen_info:'锁定技。当你受到非雷电伤害时,防止之。', + yijin_yongbi:'拥蔽', + yijin_yongbi_info:'锁定技。准备阶段,你跳过下一个摸牌阶段。', + yijin_houren:'厚任', + yijin_houren_info:'锁定技。回合结束时,你回复3点体力。', + guanzong:'惯纵', + guanzong_info:'出牌阶段限一次。你可以令一名其他角色视为对另一名其他角色造成过1点伤害。', + yangfu:'杨阜', + jiebing:'借兵', + jiebing_info:'锁定技。当你受到伤害后,你选择来源外的一名其他角色,随机获得其一张牌并展示。若此牌为装备牌,你使用之。', + hannan:'扞难', + hannan_info:'出牌阶段限一次。你可以与一名角色拼点,赢的角色对没赢的角色造成2点伤害。', + xin_wuyi:'手杀吴懿', + sbbenxi:'奔袭', + sbbenxi_info:'出牌阶段开始时,你可以弃置至少一张牌,然后你于此阶段获得如下效果:①你至其他角色距离-X;②当你使用的下一张基本牌或普通锦囊牌A选择目标后,你可以额外指定X名距离为1的角色为目标;③牌A结算结束后,若此牌造成过伤害,你摸两张牌(X为你以此法弃置的牌数)。', + xin_zhuzhi:'手杀朱治', + sbanguo:'安国', + sbanguo_info:'①游戏开始时,你令一名其他角色获得1枚“安国”标记(有“安国”的角色手牌上限基数等于体力上限)。②出牌阶段开始时,你可以将一名有“安国”的角色的所有“安国”移动给一名本局游戏未获得过“安国”的其他角色。③当你受到伤害时,若有有“安国”的角色且伤害值不小于你的体力值且此伤害没有来源或来源没有“安国”,防止此伤害。④一名角色进入濒死状态时,若其有你因〖安国①〗获得的“安国”,你移去其该“安国”,令其将体力回复至1点。然后你选择一项:1.若你的体力值大于1,你失去体力至1点;2.若你的体力上限大于1,你将体力上限减至1。最后你令其获得X点护甲(X为你以此法失去的体力值或减少的体力上限)。', + wangjun:'王濬', + zhujian:'筑舰', + zhujian_info:'出牌阶段限一次。你可以令至少两名装备区里有牌的角色各摸一张牌。', + duansuo:'断索', + duansuo_info:'出牌阶段限一次。你可以重置任意名处于连环状态的角色,然后对这些角色各造成1点火焰伤害。', + sp_pengyang:'彭羕', + spdaming:'达命', + spdaming_info:'①游戏开始时,你获得1点“达命”值。②其他角色A的出牌阶段限一次。其可以交给你一张牌,然后你选择令一名其他角色B。若B有与此牌相同类型的牌,其将一张该类型的牌交给A,你获得1点“达命”值;否则你将此牌交给A。', + spxiaoni:'嚣逆', + spxiaoni_info:'①出牌阶段限一次。若你的“达命”值大于0,你可以将一张牌当任意一种【杀】或伤害类锦囊牌使用。然后你减少等同于此牌指定目标数的“达命”值。②你的手牌上限基数为X(X为“达命”值,且至多为你的体力值,至少为0)。', + xin_zhuhuan:'手杀朱桓', + xinpingkou:'平寇', + xinpingkou_info:'回合结束时,你可以对至多X名其他角色各造成1点伤害(X为你本回合跳过的阶段数)。然后你从牌堆中获得一张装备牌。', + xin_caoxiu:'手杀曹休', + xinqingxi:'倾袭', + xinqingxi_info:'每回合限一次。当你对其他角色造成伤害时,你可以令其选择一项:1.弃置X张手牌(X为4减去你至其的距离,至少为1);2.令此伤害+1。', mobile_standard:'手杀异构·标准包', mobile_shenhua:'手杀异构·神话再临', diff --git a/character/offline.js b/character/offline.js index 95970c0f6..2b22bd41d 100644 --- a/character/offline.js +++ b/character/offline.js @@ -1909,9 +1909,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ return player.canEquip(card,true); }); if(cards.length){ - player.$give(card,player,false); + player.$give(cards[0],player,false); game.delay(0.5); - player.equip(card); + player.equip(cards[0]); event.redo(); } 'step 1' diff --git a/character/rank.js b/character/rank.js index 7b3c96c0d..64593b84e 100644 --- a/character/rank.js +++ b/character/rank.js @@ -41,6 +41,7 @@ window.noname_character_rank={ 'key_sakuya', 'boss_zhaoyun', 'noname', + 'sb_machao', ], ap:[ 'gjqt_aruan', @@ -104,6 +105,8 @@ window.noname_character_rank={ 'liuhui', 'luyi', 'shen_zhangfei', + 'clan_xuncai', + 'zhujianping', 'key_kamome', 'key_yukine', 'key_inari', @@ -278,6 +281,10 @@ window.noname_character_rank={ 'jin_zhouchu', 'huojun', 'xiahouxuan', + 'ol_liuba', + 'wanglie', + 'zhaozhi', + 'shen_zhangjiao', 'key_misuzu', 'key_sunohara', 'key_umi', @@ -295,6 +302,7 @@ window.noname_character_rank={ 'key_nao', 'key_kotarou', 'key_kyou', + 'key_tomoyo', ], am:[ 'diy_caiwenji', @@ -538,6 +546,10 @@ window.noname_character_rank={ 'yinfuren', 'dc_zhaoyǎn', 'clan_wuxian', + 'clan_xunchen', + 'chenjiao', + 'chengbing', + 'sb_caosong', ], bp:[ 'chess_diaochan', @@ -830,8 +842,15 @@ window.noname_character_rank={ 'dc_huban', 'dingshangwan', 're_zhuhuan', + 'xin_zhuhuan', 'dc_liuye', 'zhugeshang', + 're_xunyou', + 'liwan', + 'ol_furong', + 'shiyi', + 'gongsundu', + 'yuanji', ], b:[ 'diy_feishi', @@ -883,6 +902,7 @@ window.noname_character_rank={ 're_zhangchunhua', 'xunyou', 'yufan', + 're_chengong', 'chengong', 'bulianshi', 'dc_bulianshi', @@ -920,6 +940,7 @@ window.noname_character_rank={ 'wulan', 're_sunben', 'hujinding', + 'dc_hujinding', 'dongcheng', 'taoqian', 'chendeng', @@ -956,6 +977,7 @@ window.noname_character_rank={ 'ns_chengpu', 're_sunluban', 're_caoxiu', + 'xin _caoxiu', 'sunluyu', 'sp_diaochan', 'liuxie', @@ -1028,6 +1050,7 @@ window.noname_character_rank={ 'xin_caozhen', 'ol_dengzhi', 'sundeng', + 're_sundeng', 're_duji', 'sp_chendong', 'sp_zongyu', @@ -1076,6 +1099,12 @@ window.noname_character_rank={ 'dc_liru', 'kebineng', 'wangwei', + 'zhangzhi', + 'clan_xuncan', + 'clan_xunshu', + 'sunlang', + 'yangfu', + 'sp_pengyang', ], bm:[ 'diy_xizhenxihong', @@ -1226,6 +1255,7 @@ window.noname_character_rank={ 'sp_zhangwen', 're_zoushi', 'yuejiu', + 'dc_yuejiu', 'xin_sunluban', 'ol_bianfuren', 'sp_ol_zhanghe', @@ -1240,6 +1270,11 @@ window.noname_character_rank={ 'xin_mamidi', 'xin_quancong', 'dc_caiyang', + 're_caiyong', + 'liyixiesheng', + 'panghui', + 'leibo', + 'dongguiren', ], c:[ 'xiahoudun', @@ -1288,6 +1323,7 @@ window.noname_character_rank={ 'sp_huaxin', 'sp_xujing', 'caimaozhangyun', + 'ahuinan', 'mushun', ], d:[ @@ -1314,6 +1350,9 @@ window.noname_character_rank={ 'bianxi', 'junk_sunquan', 'clan_wuban', + 'wangjun', + 'xin_wuyi', + 'xin_zhuzhi', ], rarity:{ legend:[ @@ -1442,6 +1481,13 @@ window.noname_character_rank={ 'clan_wuxian', 'luyi', 'shen_zhangfei', + 'clan_xuncai', + 'wanglie', + 'zhujianping', + 'zhaozhi', + 'liuhui', + 'shen_zhangjiao', + 'sb_machao', 'key_tomoya', 'key_masato', 'key_shiorimiyuki', @@ -1464,6 +1510,7 @@ window.noname_character_rank={ 'key_satomi', 'key_seira', 'key_kiyu', + 'key_tomoyo', 'noname', ], epic:[ @@ -1649,6 +1696,10 @@ window.noname_character_rank={ 'zhangfen', 'xiahouxuan', 'prp_zhugeliang', + 'zhangzhi', + 'ol_liuba', + 'shiyi', + 'yuanji', 'key_kano', 'key_haruko', 'key_akiko', @@ -1763,6 +1814,7 @@ window.noname_character_rank={ 'key_kyoko', 'jiakui', 'hujinding', + 'dc_hujinding', 'zhangyì', 'lingcao', 'sunru', @@ -2068,10 +2120,19 @@ window.noname_character_rank={ 'chengui', 'dingshangwan', 're_zhuhuan', + 'xin_zhuhuan', 'yinfuren', 'dc_liuye', 'dc_zhaoyǎn', 'zhugeshang', + 're_xunyou', + 'liwan', + 'furong', + 'clan_xunchen', + 'sunlang', + 'chengbing', + 'gongsundu', + 'xin_caoxiu', ], junk:[ 'sunshao', @@ -2097,6 +2158,12 @@ window.noname_character_rank={ 'bianxi', 'junk_sunquan', 'clan_wuban', + 'ahuinan', + 'sp_caosong', + 'yangfu', + 'wangjun', + 'xin_wuyi', + 'xin_zhuzhi', ], } }; diff --git a/character/refresh.js b/character/refresh.js index d8b0aa6cf..f0391578e 100755 --- a/character/refresh.js +++ b/character/refresh.js @@ -9,23 +9,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){ refresh_huo:["ol_sp_zhugeliang","ol_xunyu","ol_dianwei","re_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"], refresh_lin:['re_menghuo','ol_sunjian','re_caopi','ol_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'], refresh_shan:['ol_jiangwei','ol_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai','re_zhanghe'], - refresh_yijiang1:['xin_wuguotai','xin_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua','dc_xushu'], - refresh_yijiang2:['re_madai','re_wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','dc_bulianshi','xin_liubiao'], + refresh_yijiang1:['xin_wuguotai','xin_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua','dc_xushu','re_chengong'], + refresh_yijiang2:['re_madai','re_wangyi','guanzhang','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','dc_bulianshi','xin_liubiao','re_xunyou'], refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','xin_yufan','dc_liru','re_manchong','re_fuhuanghou','re_guanping','re_liufeng'], refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','re_chenqun','re_caifuren','re_guyong','re_jushou','re_zhuhuan'], refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji','re_xiahoushi','re_liuchen'], - refresh_yijiang6:['re_guohuanghou'], - refresh_xinghuo:['re_duji','dc_gongsunzan','re_sp_taishici'], + refresh_yijiang6:['re_guohuanghou','re_sundeng'], + refresh_xinghuo:['re_duji','dc_gongsunzan','re_sp_taishici','re_caiyong'], }, }, connect:true, character:{ + re_sundeng:['male','wu',4,['rekuangbi']], + re_caiyong:['male','qun',3,['rebizhuan','retongbo']], + re_chengong:['male','qun',3,['remingce','zhichi']], + re_xunyou:['male','wei',3,['reqice','rezhiyu'],['clan:颍川荀氏']], dc_liru:['male','qun',3,['xinjuece','dcmieji','dcfencheng']], re_zhuhuan:['male','wu',4,['refenli','repingkou']], ol_dianwei:['male','wei',4,['olqiangxi','olningwu']], re_sp_taishici:['male','qun',4,['rejixu']], re_liufeng:['male','shu',4,['rexiansi']], - ol_xunyu:['male','wei',3,['quhu','oljieming']], + ol_xunyu:['male','wei',3,['quhu','oljieming'],['clan:颍川荀氏']], re_liuchen:['male','shu',4,['rezhanjue','reqinwang'],['zhu']], dc_gongsunzan:['male','qun',4,['reyicong','dcqiaomeng']], re_duji:['male','wei',3,['reandong','reyingshi']], @@ -150,6 +154,419 @@ game.import('character',function(lib,game,ui,get,ai,_status){ re_xushu:['zhaoyun','sp_zhugeliang'], }, skill:{ + //十周年孙登 + rekuangbi:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('rekuangbi'),(card,player,target) => { + return target.countCards('he')>0&&target!=player; + }).set('ai',target=>{ + var player=_status.event.player; + if(_status.event.goon) return get.attitude(player,target)*Math.sqrt(target.countCards('he')); + return -get.attitude(player,target)/(target.countCards('he')+1)*10; + }).set('goon',player.countCards('hs',card=>player.hasValueTarget(card))>=2); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('rekuangbi',target); + target.chooseCard('匡弼:将至多三张牌置于'+get.translation(player)+'的武将牌上','he',[1,3],true).set('ai',card=>{ + if(get.attitude(_status.event.player,_status.event.getParent().player)>0){ + return 7-get.value(card); + } + return -get.value(card); + }); + }else event.finish(); + 'step 2' + if(result.bool){ + player.addToExpansion(result.cards,target,'give').gaintag.add('rekuangbi_effect'); + player.addTempSkill('rekuangbi_effect','phaseUseEnd'); + player.markAuto('rekuangbi_effect',[target]); + } + }, + subSkill:{ + effect:{ + trigger:{player:'useCard'}, + charlotte:true, + forced:true, + filter:function(event,player){ + return player.getExpansions('rekuangbi_effect').length>0; + }, + content:function(){ + 'step 0' + var cards=player.getExpansions('rekuangbi_effect'); + var suit=get.suit(trigger.card),cardsx=cards.filter(card=>get.suit(card)==suit); + var len=cardsx.length; + if(len>1){ + player.chooseButton(['匡弼:移去一张同花色的“匡弼”牌',cards],true).set('filterButton',button=>{ + return get.suit(button.link)==_status.event.suit; + }).set('suit',suit); + } + else if(len==1){ + event._result={bool:true,links:cardsx}; + } + else{ + event._result={bool:false,links:[cards.randomGet()]}; + } + 'step 1' + if(result.links&&result.links.length){ + player.loseToDiscardpile(result.links); + game.delayx(); + } + if(result.bool){ + player.draw('nodelay'); + var target=player.getStorage('rekuangbi_effect')[0]; + if(target&&target.isIn()) target.draw(); + } + else{ + player.draw(); + } + }, + intro:{ + content:'expansion', + markcount:'expansion', + }, + onremove:function(player,skill){ + var cards=player.getExpansions(skill); + if(cards.length) player.loseToDiscardpile(cards); + delete player.storage[skill]; + }, + } + } + }, + //十周年蔡邕 + rebizhuan:{ + audio:2, + trigger:{ + player:'useCard', + target:'useCardToTargeted', + }, + filter:function(event,player){ + if(event.name!='useCard'&&event.player==event.target) return false; + var num=4+Math.min(player.countMark('retongbo'),game.countPlayer()); + if(player.getExpansions('rebizhuan').length>=num) return false; + return get.suit(event.card)=='spade'; + }, + marktext:'书', + intro:{ + name:'辟撰(书)', + name2:'书', + content:'expansion', + markcount:'expansion', + }, + frequent:true, + locked:false, + content:function(){ + player.addToExpansion(get.cards(),'gain2').gaintag.add('rebizhuan'); + }, + mod:{ + maxHandcard:function(player,num){ + return num+player.getExpansions('rebizhuan').length; + } + } + }, + retongbo:{ + audio:2, + trigger:{player:'phaseDrawAfter'}, + direct:true, + filter:function(event,player){ + return player.getExpansions('rebizhuan').length>0&&player.countCards('he')>0; + }, + content:function(){ + 'step 0' + var next=player.chooseToMove('通博:是否交换“书”和手牌?'); + next.set('list',[ + [get.translation(player)+'(你)的“书”',player.getExpansions('rebizhuan')], + ['你的牌',player.getCards('he')], + ]); + next.set('filterMove',function(from,to){ + return typeof to!='number'; + }); + next.set('processAI',function(list){ + var player=_status.event.player,cards=list[0][1].concat(list[1][1]),cards2=[]; + cards.sort((a,b)=>{ + return get.useful(a)-get.useful(b); + }); + cards2=cards.splice(0,player.getExpansions('rebizhuan').length); + return [cards2,cards]; + }); + 'step 1' + if(result.bool){ + var pushs=result.moved[0],gains=result.moved[1]; + pushs.removeArray(player.getExpansions('rebizhuan')); + gains.removeArray(player.getCards('he')); + if(!pushs.length||pushs.length!=gains.length){ + event.finish(); + return; + } + player.logSkill('retongbo'); + player.addToExpansion(pushs,'give',player).gaintag.add('rebizhuan'); + player.gain(gains,'gain2'); + } + 'step 2' + event.cards=player.getExpansions('rebizhuan').slice(0); + if(event.cards.length<4) event.finish(); + else { + event.given=[]; + var list=[]; + event.cards.forEach(i=>list.add(get.suit(i))); + if(list.length>=4&&player.hp<=2) event.four=true; + } + 'step 3' + if(event.given.length<4){ + player.chooseCardButton('是否将'+get.cnNumber(4-event.given.length)+'张“书”交给任意名其他角色?',event.cards,[1,4-event.given.length],event.given.length>0).set('ai',function(button){ + if(!_status.event.goon) return 0; + var four=_status.event.getParent().four,given=_status.event.getParent().given; + if(four) return get.value(button.link)+(given.map(i=>get.suit(i)).contains(get.suit(button.link))?0:10); + if(ui.selected.buttons.length==0) return get.value(button.link); + return 0; + }).set('goon',game.hasPlayer(current=>get.attitude(player,current)>0)); + } + else{ + event.goto(6); + } + 'step 4' + if(result.bool){ + for(var i=0;i0){ + return att/(1+target.countCards('h')); + } + else{ + return att/100; + } + }).set('enemy',get.value(event.togive[0],player,'raw')<0); + } + else{ + event.finish(); + } + 'step 5' + if(result.targets.length){ + result.targets[0].gain(event.togive,'draw').giver=player; + player.line(result.targets[0],'green'); + game.log(result.targets[0],'获得了'+get.cnNumber(event.togive.length)+'张','#g“书”'); + if(event.given.length<4) event.goto(3); + } + 'step 6' + if(event.given.length==4){ + var suits=lib.suit.slice(0); + event.given.forEach(i=>suits.remove(get.suit(i,player))); + if(suits.length==0){ + player.recover(); + player.addMark('retongbo',1,false); + } + } + }, + marktext:'博', + intro:{ + content:function(storage,player){ + var num=4+Math.min(storage,game.countPlayer()); + return '“书”的上限+'+num; + } + }, + ai:{ + combo:'rebizhuan', + } + }, + //十周年陈宫 + remingce:{ + enable:'phaseUse', + usable:1, + audio:2, + position:'he', + filterCard:function(card){ + return get.name(card)=='sha'||get.type(card)=='equip'; + }, + filter:function(event,player){ + return player.countCards('h','sha')>0||player.countCards('he',{type:'equip'})>0; + }, + check:function(card){return 8-get.value(card)}, + selectTarget:2, + multitarget:true, + discard:false, + lose:false, + targetprompt:['得到牌','出杀目标'], + filterTarget:function(card,player,target){ + if(ui.selected.targets.length==0){ + return player!=target; + } + return true; + }, + delay:false, + content:function(){ + 'step 0' + player.give(cards,targets[0],'visible'); + 'step 1' + if(!targets[0].canUse({name:'sha',isCard:true},targets[1],false,false)) event._result={control:'选项二'}; + else targets[0].chooseControl().set('ai',function(){ + var player=_status.event.player,target=_status.event.target; + return get.effect(target,{name:'sha',isCard:true},player,player)>0?0:1; + }).set('choiceList',['视为对'+get.translation(targets[1])+'使用一张【杀】,若此杀造成伤害则执行选项二','你与'+get.translation(player)+'各摸一张牌']).set('target',targets[1]).set('prompt','对'+get.translation(targets[1])+'使用一张杀,或摸一张牌'); + 'step 2' + if(result.control=='选项二'){ + game.asyncDraw([player,targets[0]]); + event.finish(); + } + else{ + targets[0].useCard({name:'sha',isCard:true},targets[1]); + } + 'step 3' + if(targets[0].hasHistory('useCard',evt=>{ + return evt.getParent()==event&&targets[0].hasHistory('sourceDamage',evtx=>evt.card==evtx.card); + })){ + game.asyncDraw([player,targets[0]]); + } + }, + ai:{ + result:{ + player:function(player){ + var players=game.filterPlayer(); + for(var i=0;i1&&get.attitude(players[i],player)>1){ + return 1; + } + } + return 0; + }, + target:function(player,target){ + if(ui.selected.targets.length){ + return -0.1; + } + return 1; + } + }, + order:8.5, + expose:0.2 + } + }, + // 界荀攸 + reqice:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + var hs=player.getCards('h'); + if(!hs.length) return false; + if((player.getStat('skill').reqice||0) >= player.countMark('reqice_mark')+1) return false; + for(var i=0; i0) return 0; + if((player.getStat('skill').reqice||0)get.tag(button.link[2],i) >= 1)) return effect*2; + } + if(effect>0) return effect; + return 0; + }, + backup:function(links,player){ + return { + filterCard:true, + selectCard:-1, + position:'h', + audio:'reqice', + popname:true, + viewAs:{name:links[0][2]}, + } + }, + prompt:function(links,player){ + return '将所有手牌当【'+get.translation(links[0][2])+'】使用'; + } + }, + ai:{ + order:1, + result:{ + player:function(player){ + var num=0; + var cards=player.getCards('h'); + if(cards.length >= 3&&player.hp >= 3&&player.countMark('reqice_mark')<2) return 0; + for(var i=0; i0) target.draw(Math.min(3,target.hp)); target.addTempSkill('redingpin2'); break; @@ -5595,7 +6012,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, content:function(){ "step 0" - target.chooseToDiscard(cards.length,'弃置'+get.cnNumber(cards.length)+'张手牌并失去1点体力,或点取消将武将牌翻面并摸'+get.cnNumber(cards.length)+'张牌').set('ai',function(card){ + target.chooseToDiscard(cards.length,'弃置'+get.cnNumber(cards.length)+'张牌并失去1点体力,或点取消将武将牌翻面并摸'+get.cnNumber(cards.length)+'张牌','he').set('ai',function(card){ var player=_status.event.player; if(player.isTurnedOver()) return -1; return (player.hp*player.hp)-get.value(card); @@ -9420,7 +9837,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 2' player.chooseCardTarget({ filterCard:function(card){ - return !card.hasGaintag('reyiji_tag'); + return get.itemtype(card)=='card'&&!card.hasGaintag('reyiji_tag'); }, filterTarget:lib.filter.notMe, selectCard:[1,event.num], @@ -9688,16 +10105,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, - "new_yijue2":{ + new_yijue2:{ trigger:{ player:"damageBegin1", }, filter:function(event){ - return event.source&&event.source.hasSkill('new_yijue')&&event.card&&event.card.name=='sha'&&get.suit(event.card)=='heart'&&event.notLink(); + return event.source&&event.source==_status.currentPhase&&event.card.name=='sha'&&get.suit(event.card)=='heart'&&event.notLink(); }, - silent:true, popup:false, forced:true, + charlotte:true, content:function(){ trigger.num++; }, @@ -12503,7 +12920,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xinleiji_misa:'雷击', xinguidao:'鬼道', xinleiji_info:'①当你使用或打出【闪】或【闪电】时,你可以进行判定。②当你的判定的判定牌生效后,若结果为:黑桃,你可对一名其他角色造成2点雷电伤害;梅花:你回复1点体力并可对一名其他其他角色造成1点雷电伤害。', - xinleiji_append:'不能触发〖雷击〗的判定:〖暴虐〗、〖助祭〗、
    〖弘仪〗、〖孤影〗。
    ', + xinleiji_append:'不能触发〖雷击〗的判定:〖暴虐〗、〖助祭〗、
    〖弘仪〗、〖孤影〗。
    ', xinleiji_faq:'不能触发〖雷击〗的判定', xinleiji_faq_info:'
    董卓/界董卓〖暴虐〗
    黄巾雷使〖助祭〗
    羊徽瑜〖弘仪〗
    鸣濑白羽〖孤影〗', xinguidao_info:'一名角色的判定牌生效前,你可以打出一张黑色牌作为判定牌并获得原判定牌。若你以此法打出的牌为黑桃2-9,则你摸一张牌。', @@ -12943,7 +13360,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ reweimu_info:'锁定技。①你不能成为黑色锦囊牌的目标。②当你于回合内受到伤害时,你防止此伤害并摸2X张牌(X为伤害值)。', ol_lusu:'界鲁肃', olhaoshi:'好施', - olhaoshi_info:'摸牌阶段开始时,你可以多摸两张牌。然后摸牌阶段结束时,若你的手牌数大于5,则你将手牌数的一半(向下取整)交给一名手牌最少其他角色并获得如下效果直到你下回合开始:当你成为【杀】或普通锦囊牌的目标后,其可以交给你一张手 牌。', + olhaoshi_info:'摸牌阶段开始时,你可以多摸两张牌。然后摸牌阶段结束时,若你的手牌数大于5,则你将手牌数的一半(向下取整)交给一名手牌最少其他角色并获得如下效果直到你下回合开始:当你成为【杀】或普通锦囊牌的目标后,其可以交给你一张手牌。', oldimeng:'缔盟', oldimeng_info:'出牌阶段限一次,你可令两名满足X≤Y的其他角色交换手牌并获得如下效果:出牌阶段结束时,你弃置X张牌(X为这两名角色手牌数之差的绝对值;Y为你的手牌数)。', @@ -13058,6 +13475,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcfencheng_info:'限定技。出牌阶段,你可以指定一名其他角色,令从其开始的其他角色依次选择一项:⒈弃置至少X张牌(X为上一名角色弃置的牌数+1)。⒉你对其造成2点伤害。', oljiang:'激昂', oljiang_info:'①当你使用【决斗】或红色【杀】指定第一个目标后,或成为【决斗】或红色【杀】的目标后,你可以摸一张牌。②当有【决斗】或红色【杀】于每回合内首次因弃置而进入弃牌堆后,你可以失去1点体力并获得这些牌。', + re_xunyou:'界荀攸', + reqice:'奇策', + reqice_info:'出牌阶段限X次(X为你的“奇策”数+1),你可以将所有手牌当做任意一张普通锦囊牌使用。', + rezhiyu:'智愚', + rezhiyu_info:'当你受到伤害后,你可以摸一张牌,然后展示所有手牌,令伤害来源弃置一张手牌。若你展示的牌颜色均相同,你获得1枚“奇策”直到下回合结束且获得来源弃置的牌。', + re_caiyong:'界蔡邕', + rebizhuan:'辟撰', + rebizhuan_bg:'书', + rebizhuan_info:'①当你使用♠牌时,或成为其他角色使用♠牌的目标后,你可以将牌堆顶的一张牌置于武将牌上,称为“书”(你至多拥有四张“书”)。②你的手牌上限+X(X为“书”数)。', + retongbo:'通博', + retongbo_info:'摸牌阶段结束时,你可以用任意手牌交换等量“书”。然后若“书”数至少为4,你可以将四张“书”任意交给其他角色。若你交出的牌花色各不相同,你回复1点体力且“书”的上限+1(至多增加等同存活角色数的上限)。', + re_chengong:'界陈宫', + remingce:'明策', + remingce_info:'出牌阶段限一次。你可以将一张【杀】或装备牌交给一名其他角色,其选择一项:1.视为对你选择的另一名角色使用一张【杀】,且若此牌造成伤害,则执行选项2;2.你与其各摸一张牌。', + re_sundeng:'界孙登', + rekuangbi:'匡弼', + rekuangbi_info:'出牌阶段开始时,你可以令一名其他角色将至多三张牌置于你的武将牌上直到此阶段结束。然后当你使用牌时,若你:有与此牌花色相同的“匡弼”牌,你移去其中一张并与其各摸一张牌;没有与此牌花色相同的“匡弼”牌,你随机移去一张“匡弼”牌并摸一张牌。', refresh_standard:'界限突破·标', refresh_feng:'界限突破·风', diff --git a/character/sb.js b/character/sb.js index 76da350ca..54683ebc5 100644 --- a/character/sb.js +++ b/character/sb.js @@ -10,8 +10,1844 @@ game.import('character',function(lib,game,ui,get,ai,_status){ liucheng:['female','qun',3,['splveying','spyingwu']], sp_yangwan:['female','shu',3,['spmingxuan','spxianchou']], sb_huangzhong:['male','shu',4,['sbliegong']], + sb_lvmeng:['male','wu',4,['sbkeji','sbdujiang']], + sb_sunshangxiang:['female','shu',4,['sbjieyin','sbliangzhu','sbxiaoji']], + sb_sunquan:['male','wu',4,['sbzhiheng','sbtongye','sbjiuyuan'],['zhu']], + sb_huanggai:['male','wu',4,['sbkurou','sbzhaxiang']], + sb_zhouyu:['male','wu',3,['sbyingzi','sbfanjian']], + sb_caoren:['male','wei',4,['sbjushou','sbjiewei']], + sb_xiahoushi:['female','shu',3,['sbqiaoshi','sbyanyu']], + sb_zhangjiao:['male','qun',3,['sbleiji','sbguidao','sbhuangtian'],['zhu']], + sb_caocao:['male','wei',4,['sbjianxiong','sbqingzheng','sbhujia'],['zhu']], + sb_zhenji:['female','wei',3,['sbluoshen','qingguo']], + sb_ganning:['male','wu',4,['sbqixi','sbfenwei']], + sb_machao:['male','shu',4,['mashu','sbtieji']], + sb_xuhuang:['male','wei',4,['sbduanliang','sbshipo']], + }, + characterSort:{ + sb:{ + sb_zhi:['sb_sunquan','sb_zhouyu','sb_zhangjiao','sb_caocao','sb_zhenji'], + sb_shi:['sb_xuhuang','sb_machao'], + sb_tong:['liucheng','sp_yangwan','sb_xiahoushi'], + sb_yu:['sb_yujin','sb_lvmeng','sb_huangzhong','sb_huanggai','sb_zhouyu','sb_caoren','sb_ganning'], + sb_neng:['sb_huaxiong','sb_sunshangxiang'], + } }, skill:{ + //徐晃 + sbduanliang:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:lib.filter.notMe, + content:function(){ + 'step 0' + player.chooseToDuiben(target).set('title','谋弈').set('namelist',[ + '固守城池','突出重围','围城断粮','擂鼓进军' + ]).set('ai',button=>{ + var source=_status.event.getParent().player,target=_status.event.getParent().target; + if(get.effect(target,{name:'juedou'},source,source)>=10&&button.link[2]=='db_def2'&&Math.random()<0.5) return 10; + return 1+Math.random(); + }); + 'step 1' + if(result.bool){ + if(result.player=='db_def1'){ + if(target.hasJudge('bingliang')) player.gainPlayerCard(target,'he',true); + else{ + if(ui.cardPile.childNodes.length>0) { + if(player.canUse(get.autoViewAs({name:'bingliang'},[ui.cardPile.firstChild]),target,false)){ + player.useCard({name:'bingliang'},target,get.cards()); + } + } + } + } + else{ + var card={name:'juedou',isCard:true}; + if(player.canUse(card,target)) player.useCard(card,target); + } + } + }, + ai:{ + threaten:1.2, + order:5.5, + result:{ + player:1, + target:-1 + } + } + }, + sbshipo:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + direct:true, + filter:function(event,player){ + return game.hasPlayer(current=>{ + return current.hp{ + if(current.hp'; + if(bool2) list.push('选项二'); + else choiceList[1]=''+choiceList[1]+''; + if(_status.connectMode) game.broadcastAll(function(){_status.noclearcountdown=true}); + player.chooseControl(list,'cancel2').set('prompt',get.prompt2('sbshipo')).set('choiceList',choiceList).set('ai',()=>{ + return _status.event.choice; + }).set('choice',(function(){ + var eff=0,eff2=0; + if(!list.contains('选项一')) eff=Infinity; + if(!list.contains('选项二')) eff2=Infinity; + game.countPlayer(current=>{ + if(current.hp0&&eff2>0) return 'cancel2'; + return efftarget.hp-get.attitude(player,target)/Math.sqrt(Math.max(0.1,2*target.hp+target.countCards('h')))); + } + else{ + event._result={bool:true,targets:game.filterPlayer(current=>current.hasJudge('bingliang'))}; + } + 'step 2' + game.broadcastAll(function(){delete _status.noclearcountdown;game.stopCountChoose()}); + if(result.bool){ + var targets=result.targets; + player.logSkill('sbshipo',targets); + event.targets=targets.sortBySeat(); + event.cards=[]; + } + else event.finish(); + 'step 3' + var target=event.targets.shift(); + event.target=target; + target.chooseCard('交给'+get.translation(player)+'一张手牌,或受到1点伤害').set('ai',card=>{ + var player=_status.event.player,source=_status.event.getParent().player; + if(get.damageEffect(player,source,player)>0) return 0; + if(get.attitude(player,source)>0) return 1; + if(get.tag(card,'recover')>0) return 0; + return (player.hp<2?7:5.5)-get.value(card); + }); + 'step 4' + if(result.bool){ + event.cards.addArray(result.cards); + target.give(result.cards,player); + } + else{ + target.damage(); + } + 'step 5' + if(event.targets.length) event.goto(3); + else{ + var cards=event.cards.filter(card=>get.owner(card)==player&&get.position(card)=='h'); + if(!cards.length) event.finish(); + else event.cards=cards; + } + 'step 6' + player.chooseCardTarget({ + filterCard:function(card,player,target){ + return _status.event.getParent().cards.contains(card); + }, + filterTarget:lib.filter.notMe, + selectCard:[1,event.cards.length], + prompt:'是否将任意张获得的牌交给一名其他角色?', + ai1:function(card){ + var player=_status.event.player; + var val=player.getUseValue(card); + if(val>0) return 2; + if(player.hp<=2&&val==0&&get.value(card)>5) return 0; + return Math.random()>0.5?1:0; + }, + ai2:function(target){ + var player=_status.event.player,cards=ui.selected.cards; + var val=0; + for(var card of cards){ + val+=target.getUseValue(card); + } + if(val>0) return val*get.attitude(player,target)*2; + return get.value(card,target)*get.attitude(player,target); + }, + }); + 'step 7' + if(result.bool){ + var cards=result.cards,target=result.targets[0]; + player.give(cards,target); + } + } + }, + //马超 + sbtieji:{ + audio:2, + trigger:{player:'useCardToPlayered'}, + logTarget:'target', + filter:function(event,player){ + return player!=event.target&&event.card.name=='sha'&&event.target.isIn(); + }, + check:function(event,player){ + return get.attitude(player,event.target)<0; + }, + content:function(){ + 'step 0' + var target=trigger.target; + event.target=target; + target.addTempSkill('fengyin'); + trigger.directHit.add(target); + player.chooseToDuiben(target).set('title','谋弈').set('namelist',[ + '出阵迎战','拱卫中军','直取敌营','扰阵疲敌' + ]); + 'step 1' + if(result.bool){ + if(result.player=='db_def1') player.gainPlayerCard(target,'he',true); + else player.draw(2); + } + }, + shaRelated:true, + ai:{ + ignoreSkill:true, + skillTagFilter:function(player,tag,arg){ + if(tag=='directHit_ai'){ + return get.attitude(player,arg.target)<=0; + } + if(!arg||arg.isLink||!arg.card||arg.card.name!='sha') return false; + if(!arg.target||get.attitude(player,arg.target)>=0) return false; + if(!arg.skill||!lib.skill[arg.skill]||lib.skill[arg.skill].charlotte||get.is.locked(arg.skill)||!arg.target.getSkills(true,false).contains(arg.skill)) return false; + }, + directHit_ai:true, + } + }, + //甘宁 + sbqixi:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('h')>0; + }, + filterTarget:lib.filter.notMe, + content:function(){ + 'step 0' + event.list=lib.suit.slice(); + event.suits=[]; + event.num=0; + var cards=player.getCards('h'),map={},max=-Infinity; + for(var card of cards){ + var suit=get.suit(card,player); + if(!map[suit]) map[suit]=0; + map[suit]++; + if(map[suit]>max) max=map[suit]; + } + for(var i in map){ + if(map[i]==max) event.suits.push(i); + } + 'step 1' + target.chooseControl(event.list).set('prompt','奇袭:猜测'+get.translation(player)+'手牌中最多的花色').set('ai',()=>{ + var player=_status.event.getParent().player,controls=_status.event.controls; + if(player.countCards('h')<=3&&controls.contains('diamond')&&Math.random()<0.3) return 'diamond'; + return controls.randomGet(); + }); + 'step 2' + var control=result.control; + target.chat('我猜是'+get.translation(control)+'!'); + game.log(target,'猜测为','#y'+control); + if(!event.isMine()&&!event.isOnline()) game.delayx(); + 'step 3' + var control=result.control; + if(!event.suits.contains(control)){ + player.chat('猜错了!'); + game.log(target,'猜测','#y错误'); + event.num++; + event.list.remove(control); + player.chooseBool('是否令其重新选择一个花色继续猜测?').set('ai',()=>1); + } + else { + player.chat(event.num==0?'这么准?':'猜对了!'); + game.log(target,'猜测','#g正确'); + player.showHandcards(); + event.goto(4); + } + 'step 4' + if(result.bool){ + event.goto(1); + } + 'step 5' + if(event.num>0&&target.countDiscardableCards(player,'hej')){ + player.line(target); + player.discardPlayerCard(target,event.num,true,'hej'); + } + }, + ai:{ + order:10, + result:{ + player:1, + target:function(player,target){ + return get.effect(target,{name:'guohe'},player,target)*(5-get.attitude(player,target)/2); + } + } + } + }, + sbfenwei:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return player.countCards('he')>0; + }, + skillAnimation:true, + animationColor:'wood', + limited:true, + position:'he', + filterCard:true, + selectCard:[1,3], + filterTarget:true, + selectTarget:function(){ + return ui.selected.cards.length; + }, + delay:false, + discard:false, + lose:false, + complexSelect:true, + filterOk:function(){ + return ui.selected.targets.length==ui.selected.cards.length; + }, + multitarget:true, + multiline:true, + check:function(card){ + return 7-get.value(card); + }, + content:function(){ + 'step 0' + player.awakenSkill('sbfenwei'); + for(var i=0; i{ + return get.rawAttitude(player,current)>0&¤t!=player&&get.attitude(player,current)<=0; + })&&game.countPlayer(current=>{ + return get.attitude(player,current)>0; + })<=2) return 0; + return 1; + }, + } + }, + subSkill:{ + effect:{ + audio:'sbfenwei', + trigger:{ + global:'useCardToTarget', + }, + charlotte:true, + forced:true, + filter:function(event,player){ + return event.target.getExpansions('sbfenwei_effect').length>0&&get.type2(event.card)=='trick'; + }, + content:function(){ + 'step 0' + var choiceList=['令'+get.translation(trigger.target)+'获得其“威”','移去'+ get.translation(trigger.target) +'的“威”,取消'+get.translation(trigger.card)+'对其的目标']; + player.chooseControl().set('choiceList',choiceList).set('prompt','奋威:请选择一项').set('ai',()=>{ + var player=_status.event.player,evt=_status.event.getTrigger(); + if(get.effect(evt.target,evt.card,evt.player,player)<-10) return 1; + return 0; + }); + 'step 1' + var cards=trigger.target.getExpansions('sbfenwei_effect'); + if(result.index==0){ + trigger.target.gain(cards,'gain2','fromStorage'); + } + else { + trigger.target.loseToDiscardpile(cards); + trigger.targets.remove(player); + trigger.getParent().triggeredTargets2.remove(player); + trigger.untrigger(); + } + }, + marktext:'威', + intro:{ + name:'威', + markcount:'expansion', + content:'expansion', + }, + } + } + }, + //甄宓 + sbluoshen:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('sbluoshen')).set('ai',target=>{ + var eff=0; + var num=Math.ceil(game.countPlayer()/2),players=game.filterPlayer(current=>current!=player).sortBySeat(target).slice(0,num); + for(var targetx of players){ + eff+=get.attitude(player,targetx)*Math.sqrt(targetx.countCards('h')); + } + return 1-eff; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('sbluoshen',target); + player.addTempSkill('sbluoshen_add'); + event.targets=game.filterPlayer(current=>current!=player).sortBySeat(target).slice(0,Math.ceil(game.countPlayer()/2)); + } else event.finish(); + 'step 2' + var target=event.targets.shift(); + event.target=target; + player.line(target); + if(!target.countCards('h')) event._result={bool:false}; + else target.chooseCard('展示一张手牌',true).set('ai',card=>{ + var val=_status.event.goon?15:5; + if(get.color(card)=='black') return val-get.value(card); + return 7-get.value(card); + }).set('goon',get.attitude(target,player)>0); + 'step 3' + if(result.bool){ + var card=result.cards[0]; + target.showCards(card,get.translation(target)+'【洛神】展示'); + if(get.color(card)=='black'){ + player.gain(card,target,'giveAuto','bySelf').gaintag.add('sbluoshen'); + } + else if(get.color(card)=='red'){ + target.discard(card); + } + } + 'step 4' + if(targets.length) event.goto(2); + }, + subSkill:{ + add:{ + mod:{ + ignoredHandcard:function(card,player){ + if(card.hasGaintag('sbluoshen')){ + return true; + } + }, + cardDiscardable:function(card,player,name){ + if(name=='phaseDiscard'&&card.hasGaintag('sbluoshen')){ + return false; + } + }, + }, + onremove:function(player){ + player.removeGaintag('sbluoshen'); + }, + } + } + }, + //曹操 + sbjianxiong:{ + audio:2, + trigger:{player:'damageEnd'}, + group:'sbjianxiong_mark', + filter:function(event,player){ + return get.itemtype(event.cards)=='cards'&&event.cards.some(i=>get.position(i,true)=='o')||1-player.countMark('sbjianxiong')>0; + }, + prompt2:function(event,player){ + var gain=get.itemtype(event.cards)=='cards'&&event.cards.some(i=>get.position(i,true)=='o'),draw=1-player.countMark('sbjianxiong'); + var str=''; + if(gain) str+='获得'+get.translation(event.cards); + if(gain&&draw>0) str+='并'; + if(draw>0) str+='摸'+get.cnNumber(1-player.countMark('sbjianxiong'))+'张牌'; + if(player.countMark('sbjianxiong')) str+=',然后可以弃1枚“治世”'; + return str; + }, + content:function(){ + 'step 0' + if(get.itemtype(trigger.cards)=='cards'&&trigger.cards.some(i=>get.position(i,true)=='o')){ + player.gain(trigger.cards,'gain2'); + } + var num=player.countMark('sbjianxiong'); + if(1-num>0){ + player.draw(1-num,'nodelay'); + } + if(!num) event.finish(); + 'step 1' + player.chooseBool('是否弃1枚“治世”?').set('ai',()=>{ + var player=_status.event.player,current=_status.currentPhase; + if(get.distance(current,player,'absolute')>3&&player.hp<=2) return true; + return false; + }); + 'step 2' + if(result.bool){ + player.removeMark('sbjianxiong',1); + } + }, + ai:{ + maixie:true, + maixie_hp:true, + effect:{ + target:function(card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-1]; + if(get.tag(card,'damage')&&player!=target){ + var cards=card.cards,evt=_status.event; + if(evt.player==target&&card.name=='damage'&&evt.getParent().type=='card') cards=evt.getParent().cards.filterInD(); + if(target.hp<=1) return; + if(get.itemtype(cards)!='cards') return; + for(var i of cards){ + if(get.name(i,target)=='tao') return [1,5]; + } + if(get.value(cards,target)>=(7+target.getDamagedHp())) return [1,3]; + return [1,0.55+0.05*Math.max(0,1-target.countMark('sbjianxiong'))]; + } + } + } + }, + marktext:'治', + intro:{ + name:'治世', + name2:'治世', + content:'mark', + }, + subSkill:{ + mark:{ + audio:'sbjianxiong', + trigger:{global:'phaseBefore',player:'enterGame'}, + forced:true, + filter:function(event,player){ + return (event.name!='phase'||game.phaseNumber==0); + }, + content:function(){ + 'step 0' + var map={}; + var list=[]; + for(var i=1; i<=2; i++){ + var cn=get.cnNumber(i,true); + map[cn]=i; + list.push(cn); + } + event.map=map; + list.push('cancel2'); + player.chooseControl(list,function(){ + return get.cnNumber(2,true); + }).set('prompt','奸雄:获得任意枚“治世”标记'); + 'step 1' + if(result.control!='cancel2') player.addMark('sbjianxiong',event.map[result.control]); + } + } + }, + }, + sbqingzheng:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + filter:function(event,player){ + return player.countCards('h')>0; + }, + direct:true, + content:function(){ + 'step 0' + var num=3-player.countMark('sbjianxiong'); + var prompt='###'+get.prompt('sbqingzheng')+'###弃置'+get.cnNumber(num)+'种花色的所有牌'; + var next=player.chooseButton([prompt,[lib.suit.map(i=>['','','lukai_'+i]),'vcard']],num); + next.set('filterButton',button=>{ + var player=_status.event.player; + var cards=player.getCards('h',{suit:button.link[2].slice(6)}); + return cards.length>0&&cards.filter(card=>lib.filter.cardDiscardable(card,player,'sbqingzheng')).length==cards.length; + }); + next.set('ai',button=>{ + var player=_status.event.player; + return player.countMark('sbjianxiong')*15-player.getCards('h',{suit:button.link[2].slice(6)}).map(i=>get.value(i)).reduce((p,c)=>p+c,0); + }); + next.set('custom',{ + replace:{ + button:function(button){ + if(!_status.event.isMine()) return; + if(button.classList.contains('selectable')==false) return; + var cards=_status.event.player.getCards('h',{suit:button.link[2].slice(6)}); + if(cards.length){ + var chosen=cards.filter(i=>ui.selected.cards.contains(i)).length==cards.length; + if(chosen){ + ui.selected.cards.removeArray(cards); + cards.forEach(card=>{ + card.classList.remove('selected'); + card.updateTransform(false); + }); + }else{ + ui.selected.cards.addArray(cards); + cards.forEach(card=>{ + card.classList.add('selected'); + card.updateTransform(true); + }); + } + } + if(button.classList.contains('selected')){ + ui.selected.buttons.remove(button); + button.classList.remove('selected'); + if(_status.multitarget||_status.event.complexSelect){ + game.uncheck(); + game.check(); + } + } + else{ + button.classList.add('selected'); + ui.selected.buttons.add(button); + } + var custom=_status.event.custom; + if(custom&&custom.add&&custom.add.button){ + custom.add.button(); + } + game.check(); + } + }, + add:next.custom.add + }); + 'step 1' + if(result.bool){ + var cards=result.cards; + if(!cards.length){ + var suits=result.links.map(i=>i[2].slice(6)); + cards=player.getCards('h',card=>suits.contains(get.suit(card,player))); + } + event.cards=cards; + if(!cards.length) event.finish(); + else player.chooseTarget('清正:观看一名其他角色的手牌并弃置其中一种花色的所有牌',(card,player,target)=>{ + return target!=player&&target.countCards('h'); + }).set('ai',target=>{ + var player=_status.event.player,att=get.attitude(player,target); + if(att>=0) return 0; + return 1-att/2+Math.sqrt(target.countCards('h')); + }); + } else event.finish(); + 'step 2' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('sbqingzheng',target); + player.discard(cards); + var list=[]; + var dialog=['清正:弃置'+get.translation(target)+'一种花色的所有牌']; + for(var suit of lib.suit.concat('none')){ + if(target.countCards('h',{suit:suit})){ + dialog.push('
    '+get.translation(suit+'2')+'牌
    '); + dialog.push(target.getCards('h',{suit:suit})); + list.push(suit); + } + } + if(list.length){ + player.chooseControl(list).set('dialog',dialog).set('ai',()=>{ + return _status.event.control; + }).set('control',(()=>{ + var getv=(cards)=>cards.map(i=>get.value(i)).reduce((p,c)=>p+c,0); + return list.sort((a,b)=>{ + return getv(target.getCards('h',{suit:b}))-getv(target.getCards('h',{suit:a})); + })[0]; + })()); + } + } else event.finish(); + 'step 3' + var cards2=target.getCards('h',{suit:result.control}); + event.cards2=cards2; + target.discard(cards2,'notBySelf').set('discarder',player); + 'step 4' + if(event.cards2.lengthMath.random()<0.5?0:1); + } else event.finish(); + 'step 6' + if(result.bool){ + player.addMark('sbjianxiong',1); + } + }, + ai:{combo:'sbjianxiong'} + }, + sbhujia:{ + audio:2, + trigger:{player:'damageBegin4'}, + zhuSkill:true, + direct:true, + filter:function(event,player){ + return !player.hasSkill('sbhujia_used')&&game.hasPlayer(current=>{ + return current!=player&¤t.group=='wei'&&player.hasZhuSkill('sbhujia',current); + }); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt('sbhujia'),'将'+get.translation(trigger.source)+'即将对你造成的'+trigger.num+'点伤害转移给一名其他魏势力角色',(card,player,target)=>{ + return target!=player&&target.group=='wei'&&player.hasZhuSkill('sbhujia',target); + }).set('ai',target=>{ + var player=_status.event.player,evt=_status.event.getTrigger(); + return get.damageEffect(target,evt.source,player,evt.nature); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('sbhujia',target); + player.addTempSkill('sbhujia_used','roundStart'); + trigger.cancel(); + target.damage(trigger.source,trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards); + } + }, + ai:{ + maixie_defend:true, + effect:{ + target:function(card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return; + if(get.tag(card,'damage')&&!target.hasSkill('sbhujia_used')&&game.hasPlayer(current=>{ + return current!=target&¤t.group=='wei'&&target.hasZhuSkill('sbhujia',current); + })) return 0.8; + } + }, + threaten:function(player,target){ + if(target.countCards('h')==0) return 2; + } + }, + subSkill:{ + used:{charlotte:true}, + }, + }, + //张角 + sbleiji:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + return player.countMark('sbguidao')>=4; + }, + filterTarget:lib.filter.notMe, + content:function(){ + player.removeMark('sbguidao',4); + target.damage('thunder'); + }, + ai:{ + order:9, + result:{ + target:function(player,target){ + return get.damageEffect(target,player,target,'thunder'); + } + } + } + }, + sbguidao:{ + audio:2, + trigger:{ + global:['phaseBefore','damageEnd'], + player:'enterGame', + }, + forced:true, + group:'sbguidao_defend', + filter:function(event,player){ + if(player.countMark('sbguidao')>=8) return false; + if(event.name=='damage') return event.nature&&!player.hasSkill('sbguidao_forbid'); + return (event.name!='phase'||game.phaseNumber==0); + }, + content:function(){ + var num=2; + if(trigger.name!='damage') num+=2; + num=Math.min(8-player.countMark('sbguidao'),num); + player.addMark('sbguidao',num); + }, + marktext:'兵', + intro:{ + name:'道兵', + name2:'道兵', + content:'共有$枚“道兵”', + }, + subSkill:{ + defend:{ + audio:'sbguidao', + trigger:{player:'damageBegin4'}, + filter:function(event,player){ + return player.countMark('sbguidao')>=2; + }, + prompt2:'弃2枚“道兵”,防止伤害', + check:function(event,player){ + return event.num>=2||player.hp<=event.num; + }, + content:function(){ + trigger.cancel(); + player.removeMark('sbguidao',2); + if(player!=_status.currentPhase){ + player.addTempSkill('sbguidao_forbid',{player:'phaseBegin'}); + } + }, + }, + forbid:{charlotte:true}, + } + }, + sbhuangtian:{ + audio:2, + trigger:{ + player:'phaseBegin', + }, + forced:true, + zhuSkill:true, + group:'sbhuangtian_mark', + filter:function(event,player){ + if(player.phaseNumber>1||game.phaseNumber>1) return false; + if(!player.hasZhuSkill('sbhuangtian')) return false; + return !game.hasPlayer(function(current){ + return current.countCards('hej','taipingyaoshu'); + })&&!Array.from(ui.cardPile.childNodes).concat(Array.from(ui.discardPile.childNodes)).concat(Array.from(ui.ordering.childNodes)).map(i=>i.name).contains('taipingyaoshu'); + }, + content:function(){ + 'step 0' + if(!lib.inpile.contains('taipingyaoshu')){ + lib.inpile.push('taipingyaoshu'); + } + event.card=game.createCard2('taipingyaoshu','heart',3); + 'step 1' + if(card) player.equip(card); + }, + subSkill:{ + mark:{ + trigger:{ + global:'damageSource', + }, + forced:true, + zhuSkill:true, + filter:function(event,player){ + if(!player.hasZhuSkill('sbhuangtian')||!player.hasSkill('sbguidao',null,false,false)) return false; + if(player==event.source||event.source.group!='qun') return false; + if(player.hasSkill('sbguidao')&&player.countMark('sbguidao')>=8) return false; + if(player.countMark('sbhuangtian_count')>999) return false; + return true; + }, + content:function(){ + player.addMark('sbguidao',1); + player.addTempSkill('sbhuangtian_count','roundStart'); + player.addMark('sbhuangtian_count',1,false); + } + }, + count:{onremove:true} + } + }, + //夏侯氏 + sbqiaoshi:{ + audio:2, + trigger:{player:'damageEnd'}, + usable:1, + direct:true, + filter:function(event,player){ + return event.source&&event.source!=player&&event.source.isIn(); + }, + content:function(){ + 'step 0' + trigger.source.chooseBool('樵拾:是否令'+get.translation(player)+'回复'+trigger.num+'点体力,然后你摸两张牌?').set('ai',()=>{ + return _status.event.bool; + }).set('bool',get.recoverEffect(player,trigger.source,trigger.source)+get.effect(trigger.source,{name:'wuzhong'},trigger.source)>5); + 'step 1' + if(result.bool){ + player.logSkill('sbqiaoshi'); + trigger.source.line(player,'green'); + player.recover(trigger.num); + trigger.source.draw(2); + } + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(get.tag(card,'damage')){ + if(get.attitude(target,player)<=0||target==player) return; + if(target.storage.counttrigger&&target.storage.counttrigger.sbqiaoshi) return; + if(target.hp<=1&&!player.canSave(target)) return; + return [0,0.5,0,0.5]; + } + }, + }, + } + }, + sbyanyu:{ + enable:'phaseUse', + usable:2, + filterCard:{name:'sha'}, + selectCard:1, + group:'sbyanyu_draw', + check:()=>1, + content:function(){ + player.draw(); + }, + subSkill:{ + draw:{ + trigger:{player:'phaseUseEnd'}, + filter:function(event,player){ + return player.getHistory('useSkill',evt=>{ + if(evt.skill!='sbyanyu') return false; + var evtx=evt.event.getParent('phaseUse'); + if(!evtx||evtx!=_status.event.getParent('phaseUse')) return; + return true; + }).length; + }, + direct:true, + content:function(){ + 'step 0' + event.num=3*player.getHistory('useSkill',evt=>{ + if(evt.skill!='sbyanyu') return false; + var evtx=evt.event.getParent('phaseUse'); + if(!evtx||evtx!=_status.event.getParent('phaseUse')) return; + return true; + }).length; + player.chooseTarget(get.prompt('sbyanyu'),'令一名其他角色摸'+get.cnNumber(event.num)+'张牌',lib.filter.notMe).set('ai',target=>{ + var player=_status.event.player; + return get.effect(target,{name:'wuzhong'},player,player); + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('sbyanyu_draw',target); + target.draw(num); + } + } + } + }, + ai:{ + order:function(obj,player){ + if(game.hasPlayer(current=>current!=player&&get.attitude(player,current)>0)&&player.getHistory('useSkill',evt=>{ + if(evt.skill!='sbyanyu') return false; + var evtx=evt.event.getParent('phaseUse'); + if(!evtx||evtx!=_status.event.getParent('phaseUse')) return; + return true; + }).length<2) return 9; + return 2; + }, + result:{ + player:1 + }, + } + }, + //曹仁 + sbjushou:{ + audio:3, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return !player.isTurnedOver(); + }, + filterCard:true, + selectCard:[1,2], + position:'he', + group:['sbjushou_damage','sbjushou_draw'], + content:function(){ + player.turnOver(); + player.changeHujia(cards.length); + }, + ai:{ + order:5, + result:{ + player:1, + } + }, + subSkill:{ + damage:{ + audio:'sbjushou', + trigger:{ + player:'damageEnd', + }, + filter:function(event,player){ + return player.isTurnedOver(); + }, + direct:true, + content:function(){ + 'step 0' + player.chooseControl('翻面','获得1点护甲','cancel2').set('ai',()=>{ + if(_status.event.player.hujia>=3) return 0; + return 1; + }).set('prompt',get.prompt('sbjushou')).set('prompt2','选择一项'); + 'step 1' + if(result.control=='cancel2'){ + event.finish(); + return; + } + player.logSkill('sbjushou'); + if(result.control=='翻面'){ + player.turnOver(); + } + else { + player.changeHujia(1); + } + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(!target.isTurnedOver()) return; + if(get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + if((card.name=='sha'&&!player.hasSkill('jiu'))||target.hasSkillTag('filterDamage',null,{ + player:player, + card:card, + })) return 'zerotarget'; + } + }, + }, + }, + }, + draw:{ + audio:'sbjushou', + trigger:{player:'turnOverAfter'}, + forced:true, + locked:false, + filter:function(event,player){ + return !player.isTurnedOver()&&player.hujia>0; + }, + content:function(){ + player.draw(player.hujia); + }, + } + } + }, + sbjiewei:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.hujia>0; + }, + filterTarget:function(card,player,target){ + return target!=player&&target.countCards('h'); + }, + content:function(){ + player.changeHujia(-1); + player.gainPlayerCard(target,'visible',true,'h').set('ai',function(button){ + return get.value(button.link,_status.event.target); + }); + }, + ai:{ + order:8, + result:{ + target:-1, + } + } + }, + //周瑜 + sbyingzi:{ + audio:2, + audioname:['heqi','sunce','gexuan','re_sunben','re_sunce','re_heqi'], + trigger:{player:'phaseDrawBegin2'}, + forced:true, + getNum:function(player){ + return (player.countCards('h')>=2)+(player.hp>=2)+(player.countCards('e')>=1); + }, + filter:function(event,player){ + return !event.numFixed&&lib.skill.sbyingzi.getNum(player)>0; + }, + content:function(){ + var num=lib.skill.sbyingzi.getNum(player); + trigger.num+=num; + player.addTempSkill('sbyingzi_limit'); + player.addMark('sbyingzi_limit',num,false); + }, + ai:{ + threaten:2 + }, + subSkill:{ + limit:{ + charlotte:true, + forced:true, + onremove:true, + marktext:'英', + intro:{ + content:'本回合手牌上限+#', + }, + mod:{ + maxHandcard:function(player,num){ + return num+player.countMark('sbyingzi_limit'); + } + }, + } + } + }, + sbfanjian:{ + audio:2, + enable:'phaseUse', + usable:5, + filter:function(event,player){ + return !player.hasSkill('sbfanjian_ban'); + }, + chooseButton:{ + dialog:function(){ + return ui.create.dialog('###反间###'+get.translation('sbfanjian_info')); + }, + chooseControl:function(event,player){ + var suits=lib.suit.slice(); + suits.push('cancel2'); + return suits; + }, + check:function(event,player){ + var suits=lib.suit.slice(); + suits=suits.filter(suit=>!player.getStorage('sbfanjian_guessed').contains(suit)); + return suits.randomGet(); + }, + backup:function(result,player){ + return { + audio:'sbfanjian', + filterCard:function(card,player){ + return !player.getStorage('sbfanjian_guessed').contains(get.suit(card,player)); + }, + suit:result.control, + position:'h', + filterTarget:lib.filter.notMe, + check:function(card){ + return 6-get.value(card); + }, + discard:false, + lose:false, + delay:false, + content:function(){ + 'step 0' + var suit=get.suit(cards,player); + event.claimSuit=lib.skill.sbfanjian_backup.suit; + event.cardSuit=suit; + player.addTempSkill('sbfanjian_guessed'); + player.markAuto('sbfanjian_guessed',[suit]); + var claim=get.translation(event.claimSuit+'2'); + player.chat('我声明'+claim); + game.log(player,'声明了','#y'+claim); + var choiceList=['猜测此牌花色为'+claim,'猜测此牌花色不为'+claim,'不猜测,你翻面并令其〖反间〗失效']; + target.chooseControl().set('choiceList',choiceList).set('prompt',get.translation(player)+'对你发动了【反间】并选择了一张牌,请选择一项').set('ai',()=>{ + var player=_status.event.player,user=_status.event.getParent().player,claim=_status.event.getParent().claimSuit,suit=_status.event.getParent().cardSuit; + if(player.isTurnedOver()) return 2; + var lose=get.effect(player,{name:'losehp'},user,player); + if(user.getStorage('sbfanjian_guessed').contains(claim)&&claim==suit) return lose>0?0:1; + if(get.attitude(player,user)>0) return 0; + var list=[0,1]; + if(player.hp<=1&&player.getFriends().length>0) list.push(2); + return list.randomGet(); + }); + 'step 1' + if(result.index==2){ + game.log(target,'选择','#y不猜测'); + target.chat('不猜!'); + target.turnOver(); + } + else { + var claim=get.translation(event.claimSuit+'2'); + target.chat('我猜花色'+(result.index==1?'不':'')+'为'+claim); + game.log(target,'猜测花色','#g'+(result.index==1?'不':'')+'为'+claim); + } + if(event.isMine()&&!event.isOnline()) game.delayx(); + 'step 2' + target.gain(cards,player,'giveAuto','bySelf'); + 'step 3' + if(result.index==0&&event.claimSuit!=event.cardSuit||result.index==1&&event.claimSuit==event.cardSuit){ + game.log(target,'猜测','#y错误'); + target.loseHp(); + } + else { + if(result.index!=2) game.log(target,'猜测','#g正确'); + player.addTempSkill('sbfanjian_ban'); + } + }, + ai:{ + result:{ + target:function(player,target){ + if(!ui.selected.cards.length) return 0; + var val=get.value(ui.selected.cards,target); + if(val<0) return val+get.effect(target,{name:'losehp'},player,target); + if(val>5||get.value(ui.selected.cards,player)>5) return target.isTurnedOver()?5:0; + return get.effect(target,{name:'losehp'},player,target); + }, + }, + }, + } + }, + prompt:function(result){ + return '你选择了'+get.translation(result.control)+',请选择一张手牌和【反间】的目标'; + }, + }, + subSkill:{ + guessed:{onremove:true,charlotte:true}, + ban:{charlotte:true}, + backup:{}, + }, + ai:{ + order:4, + result:{player:1} + } + }, + //黄盖 + sbkurou:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + direct:true, + group:'sbkurou_gain', + content:function(){ + 'step 0' + player.chooseCardTarget({ + prompt:get.prompt('sbkurou'), + prompt2:'交给其他角色一张牌,若此牌为【桃】或【酒】,你失去2点体力,否则你失去1点体力', + filterCard:true, + position:'he', + filterTarget:lib.filter.notMe, + ai1:function(card){ + if(player.hp<=1&&!player.canSave(player)) return 0; + if(get.value(card,player)>=5&&!game.hasPlayer(current=>{ + return current!=player&&get.attitude(current,player)>0&&!current.hasSkillTag('nogain'); + })) return 0; + if(player.hp>=2&&(card.name=='tao'||(card.name=='jiu'&&player.countCards('hs',cardx=>{ + return cardx!=card&&get.tag(cardx,'save'); + })))) return 10; + if(player.hp<=1&&!player.canSave(player)) return 0; + return 1/Math.max(0.1,get.value(card)); + }, + ai2:function(target){ + var player=_status.event.player,att=get.attitude(player,target); + if(ui.selected.cards.length){ + var val=get.value(ui.selected.cards[0]); + att*=val>=0?1:-1; + } + if(target.hasSkillTag('nogain')) att/=9; + return 4+att; + }, + }); + 'step 1' + if(result.bool){ + var target=result.targets[0],card=result.cards[0]; + player.logSkill('sbkurou',target); + player.give(card,target); + player.loseHp(['tao','jiu'].contains(get.name(card,target))?2:1); + } + }, + subSkill:{ + gain:{ + audio:'sbkurou', + trigger:{player:'loseHpEnd'}, + forced:true, + locked:false, + filter:function(event,player){ + return player.isIn(); + }, + content:function(){ + 'step 0' + event.count=trigger.num; + 'step 1' + player.changeHujia(2); + 'step 2' + if(--event.count>0){ + player.logSkill('sbkurou_gain'); + event.goto(1); + } + }, + ai:{ + maihp:true, + effect:function(card,player,target){ + if(get.tag(card,'damage')){ + if(player.hasSkillTag('jueqing',false,target)) return [1,1]; + return 1.2; + } + if(get.tag(card,'loseHp')){ + if(target.hp<=1) return; + return [1,1]; + } + } + } + }, + } + }, + sbzhaxiang:{ + audio:2, + trigger:{player:'useCard'}, + forced:true, + group:'sbzhaxiang_draw', + filter:function(event,player){ + return player.getHistory('useCard').length<=player.getDamagedHp(); + }, + content:function(){ + trigger.directHit.addArray(game.filterPlayer()); + }, + ai:{ + threaten:1.5, + directHit_ai:true, + skillTagFilter:function(player,tag,arg){ + return player.countUsed()=player.getDamagedHp()) return; + var numx=get.info(card).usable; + if(typeof numx=='function') numx=num(card,player); + if(typeof numx=='number') return num+10; + }, + }, + subSkill:{ + draw:{ + audio:'sbzhaxiang', + trigger:{player:'phaseDrawBegin2'}, + forced:true, + filter:function(event,player){ + return !event.numFixed&&player.getDamagedHp()>0; + }, + content:function(){ + trigger.num+=player.getDamagedHp(); + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(get.tag(card,'recover')&&player.hp>=player.maxHp-1&&player.maxHp>1) return [0,0]; + } + } + } + } + } + }, + //孙权 + sbzhiheng:{ + audio:2, + audioname:['shen_caopi'], + enable:'phaseUse', + usable:1, + position:'he', + filterCard:lib.filter.cardDiscardable, + discard:false, + lose:false, + delay:false, + selectCard:[1,Infinity], + prompt:function(event){ + var count=_status.event.player.countMark('sbtongye'); + var str='出牌阶段限一次。你可以弃置任意张牌并摸等量的牌,若你以此法弃置的牌包括你所有手牌,则你多摸'+get.cnNumber(count+1)+'张牌'; + if(count>0) str+=',并弃1枚“业”'; + str+='。'; + return str; + }, + check:function(card){ + var player=_status.event.player; + if(get.position(card)=='h'&&!player.countCards('h','du')&&(player.hp>2||!player.countCards('h',function(card){ + return get.value(card)>=8; + }))){ + return 1; + } + return 6-get.value(card); + }, + content:function(){ + 'step 0' + player.discard(cards); + event.num=1; + var hs=player.getCards('h'); + if(!hs.length) event.num=0; + for(var i=0; i(game.countPlayer()<=4?Math.random():1)<0.4?0:1); + 'step 1' + if(result.control=='变化'){ + player.addSkill('sbtongye_change',1); + player.chat('变!'); + }else{ + player.addSkill('sbtongye_nochange',1); + player.chat('不变!'); + } + var num=game.filterPlayer().map(i=>i.countCards('e')).reduce((p,c)=>p+c,0); + player.removeMark('sbtongye_count',player.countMark('sbtongye_count'),false); + if(num>0) player.addMark('sbtongye_count',num,false); + player.addSkill('sbtongye_settle'); + }, + marktext:'业', + intro:{ + name:'统业', + name2:'业', + content:'mark', + }, + subSkill:{ + broadcast:{ + trigger:{ + global:['loseAfter','equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], + }, + charlotte:true, + silent:true, + filter:function(event,player){ + var num=0; + game.countPlayer(function(current){ + var evt=event.getl(current); + if(evt&&evt.es) num+=evt.es.length; + }); + if(event.name=='equip') num--; + return num!=0; + }, + content:function(){ + if(player.hasSkill('sbtongye_change')) player.markSkill('sbtongye_change'); + if(player.hasSkill('sbtongye_nochange')) player.markSkill('sbtongye_nochange'); + }, + }, + settle:{ + audio:'sbtongye', + init:function(player){ + player.addSkill('sbtongye_broadcast'); + }, + trigger:{player:'phaseZhunbeiBegin'}, + forced:true, + charlotte:true, + filter:function(event,player){ + return player.hasSkill('sbtongye_change')||player.hasSkill('sbtongye_nochange'); + }, + content:function(){ + var delta=game.filterPlayer().map(i=>i.countCards('e')).reduce((p,c)=>p+c,0)-player.countMark('sbtongye_count'); + if(player.hasSkill('sbtongye_change')&&delta!=0||player.hasSkill('sbtongye_nochange')&&delta==0){ + game.log(player,'猜测','#g正确'); + if(player.countMark('sbtongye')<2) player.addMark('sbtongye',1); + }else{ + game.log(player,'猜测','#y错误'); + player.removeMark('sbtongye',1); + } + player.removeSkill('sbtongye_change'); + player.removeSkill('sbtongye_nochange'); + player.removeSkill('sbtongye_settle'); + player.removeSkill('sbtongye_broadcast'); + } + }, + change:{ + charlotte:true, + mark:true, + marktext:'变', + intro:{ + markcount:function(storage,player){ + return game.filterPlayer().map(i=>i.countCards('e')).reduce((p,c)=>p+c,0)-player.countMark('sbtongye_count'); + }, + mark:function(dialog,storage,player){ + dialog.addText(get.translation(player)+'猜测场上装备数发生变化'); + var delta=game.filterPlayer().map(i=>i.countCards('e')).reduce((p,c)=>p+c,0)-player.countMark('sbtongye_count'); + if(delta==0) dialog.addText('(当前未发生变化)'); + else dialog.addText('(当前已'+(delta>0?'增加':'减少')+get.cnNumber(Math.abs(delta))+'张装备牌)'); + } + } + }, + nochange:{ + charlotte:true, + mark:true, + marktext:'', + intro:{ + markcount:function(storage,player){ + return game.filterPlayer().map(i=>i.countCards('e')).reduce((p,c)=>p+c,0)-player.countMark('sbtongye_count'); + }, + mark:function(dialog,storage,player){ + dialog.addText(get.translation(player)+'猜测场上装备数不发生变化'); + var delta=game.filterPlayer().map(i=>i.countCards('e')).reduce((p,c)=>p+c,0)-player.countMark('sbtongye_count'); + if(delta==0) dialog.addText('(当前未发生变化)'); + else dialog.addText('(当前已'+(delta>0?'增加':'减少')+get.cnNumber(Math.abs(delta))+'张装备牌)'); + } + } + }, + } + }, + sbjiuyuan:{ + audio:2, + usable:1, + trigger:{global:'useCard'}, + forced:true, + zhuSkill:true, + group:'sbjiuyuan_recover', + filter:function(event,player){ + return event.card.name=='tao'&&player!=event.player&&event.player.group=='wu' && + event.player.isIn()&&player.hasZhuSkill('zhushi',event.player); + }, + content:function(){ + player.draw(); + }, + subSkill:{ + recover:{ + audio:'sbjiuyuan', + trigger:{target:'taoBegin'}, + zhuSkill:true, + forced:true, + filter:function(event,player){ + if(event.player==player) return false; + if(!player.hasZhuSkill('sbjiuyuan')) return false; + if(event.player.group!='wu') return false; + return true; + }, + content:function(){ + trigger.baseDamage++; + } + } + }, + }, + //孙尚香 + sbjieyin:{ + trigger:{player:'phaseUseBegin'}, + forced:true, + locked:false, + dutySkill:true, + group:['sbjieyin_init','sbjieyin_fail'], + filter:function(event,player){ + return game.hasPlayer(current=>current.hasMark('sbjieyin_mark')); + }, + content:function(){ + 'step 0' + var targets=game.filterPlayer(current=>current.hasMark('sbjieyin_mark')); + event.targets=targets; + 'step 1' + var target=targets.shift(); + event.target=target; + var str=target.hasSkill('sbjieyin_marked')?'移去':'移动或移去'; + var num=Math.min(2,Math.max(1,target.countCards('h'))); + target.chooseCard('交给'+get.translation(player)+get.cnNumber(num)+'张手牌,然后获得1点护甲;或令其'+str+'你的所有“助”标记',num).set('ai',card=>{ + if(_status.event.goon) return 100-get.value(card); + return 0; + }).set('goon',get.attitude(target,player)>1); + 'step 2' + if(result.bool){ + target.give(result.cards,player); + target.changeHujia(1); + event.goto(4); + }else{ + if(!game.hasPlayer(current=>current!=player&¤t!=target)||target.hasSkill('sbjieyin_marked')) event._result={bool:false}; + else player.chooseTarget('结姻:是否移动'+get.translation(target)+'的“助”?',(card,player,target)=>{ + return target!=player&&target!=_status.event.getParent().target; + }).set('ai',target=>get.attitude(_status.event.player,target)-1); + target.addSkill('sbjieyin_marked'); + } + 'step 3' + if(result.bool){ + var targetx=result.targets[0]; + var num=target.countMark('sbjieyin_mark'); + target.removeSkill('sbjieyin_mark'); + targetx.addSkill('sbjieyin_mark'); + targetx.addMark('sbjieyin_mark',num,false); + player.line2([target,targetx],'green'); + game.log(player,'将',target,'的'+get.cnNumber(num)+'枚“助”移动至',targetx); + }else{ + target.removeSkill('sbjieyin_mark'); + game.log(player,'移去了',target,'的'+get.cnNumber(num)+'枚“助”'); + game.createEvent('sbjieyin_fail').setContent(lib.skill.sbjieyin_fail.content).player=player; + } + 'step 4' + if(targets.length) event.goto(1); + }, + subSkill:{ + fail:{ + trigger:{global:'dieAfter'}, + dutySkill:true, + forced:true, + locked:false, + direct:true, + filter:function(event,player){ + return event.player.hasMark('sbjieyin_mark'); + }, + content:function(){ + player.logSkill('sbjieyin_fail'); + player.awakenSkill('sbjieyin'); + game.log(player,'使命失败'); + player.changeGroup('wu'); + player.recover(); + player.gain(player.getExpansions('sbliangzhu'),'gain2','fromStorage'); + player.loseMaxHp(); + } + }, + mark:{ + charlotte:true, + mark:true, + marktext:'助', + onremove:true, + intro:{ + name:'结姻(助)', + name2:'助', + content:'mark' + } + }, + marked:{charlotte:true}, + init:{ + audio:'sbjieyin', + trigger:{ + global:'phaseBefore', + player:'enterGame', + }, + forced:true, + locked:false, + direct:true, + dutySkill:true, + filter:function(event,player){ + return (event.name!='phase'||game.phaseNumber==0); + }, + content:function(){ + 'step 0' + player.chooseTarget('结姻:令一名其他角色获得1枚“助”',lib.filter.notMe,true).set('ai',target=>get.attitude(_status.event.player,target)); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('sbjieyin_init',target); + target.addSkill('sbjieyin_mark'); + target.addMark('sbjieyin_mark',1); + } + 'step 2' + game.delayx(); + } + }, + } + }, + sbliangzhu:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.group=='shu'&&game.hasPlayer(current=>current!=player&¤t.countCards('e')); + }, + groupSkill:true, + filterTarget:function(card,player,target){ + return target.countCards('e')&&target!=player; + }, + content:function(){ + 'step 0' + player.choosePlayerCard(target,'e',true); + 'step 1' + if(result.bool){ + player.addToExpansion(result.cards,target,'give').gaintag.add('sbliangzhu'); + } else event.finish(); + 'step 2' + for(var target of game.filterPlayer(current=>current.hasMark('sbjieyin_mark'))){ + target.chooseDrawRecover(2,true); + } + }, + marktext:'妆', + intro:{ + name:'良助(妆)', + name2:'妆', + content:'expansion', + markcount:'expansion', + }, + onremove:function(player,skill){ + var cards=player.getExpansions(skill); + if(cards.length) player.loseToDiscardpile(cards); + }, + ai:{ + order:9, + result:{ + player:function(player){ + var num=0,targets=game.filterPlayer(current=>current.hasMark('sbjieyin_mark')); + for(var current of targets){ + num+=get.effect(current,{name:'wuzhong'},player,player); + } + if(num>0) return 3; + return 1; + }, + target:-1, + } + } + }, + sbxiaoji:{ + audio:2, + audioname:['sp_sunshangxiang','re_sunshangxiang','db_sunshangxiang'], + trigger:{ + player:'loseAfter', + global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], + }, + forced:true, + locked:false, + groupSkill:true, + filter:function(event,player){ + if(player.group!='wu') return false; + var evt=event.getl(player); + return evt&&evt.player==player&&evt.es&&evt.es.length>0; + }, + content:function(){ + 'step 0' + event.count=trigger.getl(player).es.length; + 'step 1' + event.count--; + player.draw(2); + player.chooseTarget('是否弃置场上的一张牌?',(card,player,target)=>{ + return target.countDiscardableCards(player,'ej'); + }).set('ai',target=>{ + var player=_status.event.player; + var att=get.attitude(player,target); + if(att>0&&(target.countCards('j')>0||target.countCards('e',function(card){ + return get.value(card,target)<0; + }))) return 2; + if(att<0&&target.countCards('e')>0&&!target.hasSkillTag('noe')) return -1; + return 0; + }); + 'step 2' + if(result.bool){ + player.discardPlayerCard(result.targets[0],'ej',true); + } + 'step 3' + if(event.count>0){ + player.logSkill('sbxiaoji'); + event.goto(1); + } + }, + ai:{ + noe:true, + reverseEquip:true, + effect:{ + target:function(card,player,target,current){ + if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3]; + } + } + }, + }, + //吕蒙 + sbkeji:{ + audio:2, + enable:'phaseUse', + filterCard:true, + selectCard:function(){ + var player=_status.event.player; + if(player.hasSkill('sbkeji_discard')) return [0,0]; + if(player.hasSkill('sbkeji_losehp')) return [1,1]; + return [0,1]; + }, + locked:false, + usable:2, + prompt:function(event){ + var player=_status.event.player,str='出牌阶段'+(player.storage.sbkeji?'':'各')+'限一次。你可以'; + var discard=player.hasSkill('sbkeji_discard'),losehp=player.hasSkill('sbkeji_losehp'); + if(!discard) str+='弃置一张手牌并获得1点护甲'; + if(!losehp) str+=(!discard?',或':'')+'点击“确定”失去1点体力并获得2点护甲'; + return str; + }, + filter:function(event,player){ + return (player.getStat('skill').sbkeji||0)<(player.storage.sbkeji?1:2); + }, + check:function(card){ + var player=_status.event.player; + if(_status.event.player.hp==1&&player.canSave(player)) return 0; + return 6-get.value(card); + }, + content:function(){ + if(cards.length){ + player.changeHujia(1); + player.addTempSkill('sbkeji_discard','phaseUseAfter'); + }else{ + player.loseHp(); + player.changeHujia(2); + player.addTempSkill('sbkeji_losehp','phaseUseAfter'); + } + }, + mod:{ + maxHandcard:function(player,num){ + return num+player.hujia; + }, + cardEnabled:function(card,player){ + if(player!=_status.event.dying&&card.name=='tao') return false; + }, + cardSavable:function(card,player){ + if(player!=_status.event.dying&&card.name=='tao') return false; + }, + }, + ai:{ + order:1, + result:{ + player:function(player,target){ + if(player.hp==1&&!player.canSave(player)&&!player.hasCard(card=>{ + return lib.filter.cardDiscardable(card,player,'sbkeji')&&get.value(card)<6; + },'h')){ + return 0; + } + return 1; + } + }, + }, + subSkill:{ + discard:{charlotte:true}, + losehp:{charlotte:true}, + } + }, + sbdujiang:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + derivation:'sbduojing', + juexingji:true, + forced:true, + skillAnimation:true, + animationColor:'wood', + filter:function(event,player){ + return player.hujia>=3; + }, + content:function(){ + player.awakenSkill('sbdujiang'); + player.addSkillLog('sbduojing'); + player.storage.sbkeji=true; + } + }, + sbduojing:{ + audio:2, + trigger:{player:'useCardToPlayer'}, + filter:function(event,player){ + return player.hujia>0&&event.card.name=='sha'; + }, + check:function(event,player){ + return event.target.countGainableCards(player,'he')>0||player.countCards('hs',{name:'sha'})>0; + }, + content:function(){ + 'step 0' + player.changeHujia(-1); + if(!trigger.card.storage) trigger.card.storage={}; + trigger.card.storage.sbduojing=true; + 'step 1' + var target=trigger.target; + if(target.countGainableCards(player,'he')>0) player.gainPlayerCard(target,'he',true); + player.addTempSkill('sbduojing_add','phaseUseAfter'); + player.addMark('sbduojing_add',1,false); + player.markSkill('sbduojing_add'); + }, + subSkill:{ + add:{ + charlotte:true, + marktext:'夺', + onremove:true, + intro:{ + content:'本阶段使用杀次数上限+$' + }, + mod:{ + cardUsable:function(card,player,num){ + if(card.name=='sha') return num+player.countMark('sbduojing_add'); + }, + }, + }, + }, + ai:{ + unequip:true, + unequip_ai:true, + skillTagFilter:function(player,tag,arg){ + if(player.hujia<=0) return; + if(tag=='unequip'&&(!arg||!arg.card||!arg.card.storage||!arg.card.storage.sbduojing)) return false; + if(tag=='unequip_ai'&&(!arg||arg.name!='sha')) return false; + }, + }, + }, //于禁 sbxiayuan:{ audio:2, @@ -481,6 +2317,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, + dynamicTranslate:{ + sbkeji:function (player) { + return '①出牌阶段' + (player.storage.sbkeji ? '' :'各') + '限一次。你可以选择一项:1.弃置一张手牌,然后获得1点护甲;2.失去1点体力,然后获得2点护甲。②你的手牌上限+X(X为你的护甲数)。③若你不为正在结算濒死流程的角色,你不能使用【桃】。'; + }, + }, translate:{ sp_yangwan:'手杀杨婉', spmingxuan:'瞑昡', @@ -503,6 +2344,83 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sbxiayuan_info:'每轮限一次。其他角色受到伤害后,若其因此伤害触发过护甲效果且其没有护甲,则你可弃置两张手牌,令其获得X点护甲(X为其因此伤害触发护甲效果而失去的护甲数量)。', sbjieyue:'节钺', sbjieyue_info:'结束阶段,你可以令一名其他角色获得1点护甲。然后其可以交给你一张牌。', + sb_lvmeng:'谋吕蒙', + sbkeji:'克己', + sbkeji_info:'①出牌阶段各限一次。你可以选择一项:1.弃置一张手牌,然后获得1点护甲;2.失去1点体力,然后获得2点护甲。②你的手牌上限+X(X为你的护甲数)。③若你不为正在结算濒死流程的角色,你不能使用【桃】。', + sbdujiang:'渡江', + sbdujiang_info:'觉醒技。准备阶段,若你的护甲数不少于3,你获得〖夺荆〗,修改〖克己①〗为“出牌阶段限一次”。', + sbduojing:'夺荆', + sbduojing_info:'当你使用【杀】指定目标时,你可以失去1点护甲。然后令此【杀】无视防具,你获得目标角色一张牌,本回合使用【杀】的次数上限+1。', + sb_sunshangxiang:'谋孙尚香', + sbjieyin:'结姻', + sbjieyin_info:'使命技。①游戏开始时,你令一名其他角色获得1枚“助”。②出牌阶段开始时,有“助”的角色选择一项:1.交给你X张手牌(X=min(2,其手牌数)且至少为1),然后获得1点护甲;2.令你将“助”移动给另一名其他角色,或移去其“助”(若其此前获得过“助”,则只能移去)。③失败:当一名角色死亡后,若其于死亡时有“助”,或当你因〖结姻②〗移去“助”后,你将势力改为吴,回复1点体力,获得所有“妆”并减1点体力上限。', + sbliangzhu:'良助', + sbliangzhu_info:'蜀势力技。出牌阶段限一次,你可以将一名其他角色装备区里的一张牌置于武将牌上,称为“妆”,然后有“助”的角色须选择回复1点体力或摸两张牌。', + sbxiaoji:'枭姬', + sbxiaoji_info:'吴势力技。当你失去装备区里的一张牌后,你摸两张牌,然后可以弃置场上的一张牌。', + sb_sunquan:'谋孙权', + sbzhiheng:'制衡', + sbzhiheng_info:'出牌阶段限一次。你可以弃置任意张牌并摸等量的牌,若你以此法弃置的牌包括你所有手牌,则你多摸X张牌(X为你的“业”数+1),并弃1枚“业”。', + sbtongye:'统业', + sbtongye_info:'锁定技。结束阶段,你猜测场上装备牌数与你下一个准备阶段的场上装备牌数是否相等,并获得以下效果:你下一个准备阶段,若你猜对且“业”数小于2,你获得1枚“业”;若你猜错,你弃1枚“业”。', + sbjiuyuan:'救援', + sbjiuyuan_info:'主公技,锁定技。①其他吴势力角色使用【桃】时,你摸一张牌。②其他吴势力角色对你使用的【桃】的回复量+1。', + sb_huanggai:'谋黄盖', + sbkurou:'苦肉', + sbkurou_info:'①出牌阶段开始时,你可以交给其他角色一张牌,若此牌为【桃】或【酒】,你失去2点体力,否则你失去1点体力。②当你失去1点体力后,你获得2点护甲。', + sbzhaxiang:'诈降', + sbzhaxiang_info:'锁定技。①摸牌阶段,你多摸X张牌。②你每回合使用的前X张牌无距离与次数限制且不能被响应(X为你已损失的体力值)。', + sb_zhouyu:'谋周瑜', + sbyingzi:'英姿', + sbyingzi_info:'锁定技。摸牌阶段,你多摸X张牌,且令你本回合手牌上限+X(X为以下条件中你满足的项数:手牌数不小于2、体力值不小于2、装备区里的牌数不小于1)。', + sbfanjian:'反间', + sbfanjian_info:'出牌阶段,你可以声明一个花色并选择一张牌和一名其他角色(每种花色的牌每回合限一次)。其须选择一项:1.猜测此牌花色与你所声明花色是否相同;2.翻面。然后其正面向上获得此牌。若其选择猜测且猜测错误,其失去1点体力,否则其令你〖反间〗于本回合失效。', + sb_caoren:'谋曹仁', + sbjushou:'据守', + sbjushou_info:'①出牌阶段限一次。若你的武将牌正面朝上,你可以弃置至多两张牌,然后你翻面并获得等量护甲。②当你受到伤害后,若你的武将牌背面朝上,你选择一项:1.翻面;2.获得1点护甲。③当你翻面后,若你的武将牌正面朝上,你摸X张牌(X为你的护甲数)。', + sbjiewei:'解围', + sbjiewei_info:'出牌阶段限一次。你可以失去1点护甲并选择一名其他角色。你观看其手牌并获得其中一张。', + sb_xiahoushi:'谋夏侯氏', + sbqiaoshi:'樵拾', + sbqiaoshi_info:'每回合限一次。当你受到其他角色造成的伤害后,其可以令你回复等同于此次伤害值的体力,然后其摸两张牌。', + sbyanyu:'燕语', + sbyanyu_info:'①出牌阶段限两次。你可以弃置一张【杀】,然后摸一张牌。②出牌阶段结束时,你可以令一名其他角色摸3X张牌(X为你于此阶段发动〖燕语①〗的次数)。', + sb_zhangjiao:'谋张角', + sbleiji:'雷击', + sbleiji_info:'出牌阶段,你可以选择一名其他角色并弃4枚“道兵”,对其造成1点雷电伤害。', + sbguidao:'鬼道', + sbguidao_info:'①游戏开始时,你获得4枚“道兵”标记。②“道兵”上限为8。③一名角色受到属性伤害后,你获得2枚“道兵”。④当你受到伤害时,你可以弃2枚“道兵”并防止此伤害。然后若当前回合角色不为你,〖鬼道③〗于你下回合开始前无效。', + sbhuangtian:'黄天', + sbhuangtian_info:'主公技,锁定技。①回合开始时,若本回合为你的第一个回合且游戏轮数为1,且游戏内没有【太平要术】,你装备【太平要术】。②其他群势力角色造成伤害后,若你于本轮因〖黄天②〗获得的“道兵”数不超过999且你有〖鬼道〗,你获得1枚“道兵”。', + sb_caocao:'谋曹操', + sbjianxiong:'奸雄', + sbjianxiong_info:'①游戏开始时,你可获得至多2枚“治世”标记。②当你受到伤害后,你可获得伤害牌,摸1-X张牌(X为“治世”数),然后你可弃1枚“治世”。', + sbqingzheng:'清正', + sbqingzheng_info:'出牌阶段开始时,你可以弃置3-X种花色的所有手牌(X为“治世”数),并观看一名有手牌的其他角色的手牌,你弃置其中一种花色的所有牌。若其被弃置的牌数小于你以此法弃置的牌数,你对其造成1点伤害。然后若X小于2且你拥有技能〖奸雄〗,你可以获得1枚“治世”。', + sbhujia:'护驾', + sbhujia_info:'主公技,每轮限一次。当你受到伤害时,你可以将此伤害转移给一名其他魏势力角色。', + sb_zhenji:'谋甄宓', + sbluoshen:'洛神', + sbluoshen_info:'准备阶段,你可以选择一名角色。从其开始按逆时针方向的X名其他角色依次执行(X为角色数的一半,向上取整):展示一张手牌,若此牌为黑色,你获得之且此牌不计入本回合手牌上限;若此牌为红色,其弃置之。', + sb_ganning:'谋甘宁', + sbqixi:'奇袭', + sbqixi_info:'出牌阶段限一次。若你有手牌,你可以令一名其他角色猜测你手牌中最多的花色。若其猜对,你展示所有手牌;若其猜错,你可令其从其未选择过的花色中再次猜测,重复此流程。然后你弃置其区域内的X张牌(X为其于本次〖奇袭〗中猜错的次数)。', + sbfenwei:'奋威', + sbfenwei_info:'限定技。①出牌阶段,你可以将至多三张牌分别置于等量名角色的武将牌上,称为“威”,然后你摸等量牌。②当一名角色成为锦囊牌的目标时,若其有“威”,你须选择:1.令其获得其“威”;2.令其移去“威”,并取消此目标。', + sb_machao:'谋马超', + sbtieji:'铁骑', + sbtieji_info:'当你使用【杀】指定其他角色为目标后,你可以令目标角色不能响应此【杀】,且其所有非锁定技失效直到回合结束。然后你与其进行谋弈。若你赢,且你选择的选项为:“直取敌营”,则你获得其一张牌;“扰阵疲敌”,你摸两张牌。', + sb_xuhuang:'谋徐晃', + sbduanliang:'断粮', + sbduanliang_info:'出牌阶段限一次。你可以与一名其他角色进行谋奕。若你赢,且你选择的选项为:“围城断粮”,若其判定区没有【兵粮寸断】,你将牌堆顶牌当【兵粮寸断】对其使用,否则你获得其一张牌;“擂鼓进军”,你视为对其使用一张【决斗】。', + sbshipo:'势迫', + sbshipo_info:'结束阶段,你可以令一名体力少于你的角色或所有判定区有【兵粮寸断】的其他角色选择一项:1.交给你一张手牌;2.受到1点伤害。所有目标角色选择完成后,你可以将任意张你以此法获得的牌交给一名其他角色。', + + sb_zhi:'谋攻篇·知', + sb_shi:'谋攻篇·识', + sb_tong:'谋攻篇·同', + sb_yu:'谋攻篇·虞', + sb_neng:'谋攻篇·能', }, }; }); diff --git a/character/sp.js b/character/sp.js index 127ef3047..bf07d7023 100755 --- a/character/sp.js +++ b/character/sp.js @@ -7,11 +7,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp:{ sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji",'caoxiancaohua'], sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan'], - sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda"], + sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan"], sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao","jin_guohuai"], - sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','ol_puyuan'], - sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong'], - sp_liesi:['mizhu','weizi'], + sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','ol_puyuan','zhangzhi'], + sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong'], + sp_liesi:['mizhu','weizi','ol_liuba'], sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'], sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'], sp_wanglang:['wanglang'], @@ -28,6 +28,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, character:{ + zhangzhi:['male','qun',3,['olbixin','olximo']], + ol_liuba:['male','shu',3,['oltongduo','olzhubi']], + ol_furong:['male','shu',4,['olxiaosi']], + ahuinan:['male','qun',4,['jueman']], jin_guohuai:['female','jin',3,['zhefu','yidu']], xiahouxuan:['male','wei',3,['olhuanfu','olqingyi','olzeyue']], dengzhong:['male','wei',4,['dzkanpo','dzgengzhan']], @@ -178,6 +182,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ //kaisa:["male","western",4,["zhengfu"]], }, characterIntro:{ + zhangzhi:'张芝(?—192年),字伯英,敦煌郡渊泉县(今甘肃省瓜州县)人。东汉书法家、“草书之祖”,大司农张奂的儿子。出身名门,拒绝朝廷征召,潜心研习书法。擅长草书中的章草,将古代当时字字区别、笔画分离的草法,改为上下牵连富于变化的新写法,富有独创性,在当时影响很大。李志敏评价:“张芝创造了草书问世以来的第一座高峰,精熟神妙,兼善章今”。 没有真迹传世,仅存《八月帖》等刻帖。汉献帝初平三年,去世于家中,著有《笔心论》,与钟繇、王羲之和王献之并称“书中四贤”。', + ahuinan:'阿会喃,小说《三国演义》及其衍生作品中的角色,南蛮王孟获属下大将,第三洞元帅;与董荼那等人一起担任孟获的援军出征,但是被俘虏,又被诸葛亮释放,再次出战时,被唾骂不知羞耻,面红耳赤的退军。后同董荼那共同绑架孟获献于蜀军,却被诸葛亮在其二人与孟获的重要性间权衡后出卖了他们,放走了孟获,使其为孟获所杀。', xiahouxuan:'夏侯玄(209年~254年),字泰初(《三国志》等作太初),沛国谯县(今安徽省亳州市)人。三国时期曹魏大臣、思想家、文学家,征南大将军夏侯尚之子,大将军曹爽的表弟。夏侯玄少年有名望,仪表出众,时人称为“朗朗如日月之入怀”。魏文帝黄初六年(225年),袭封昌陵乡侯。魏明帝时,历任散骑黄门侍郎、羽林监。少帝曹芳继位后,拜散骑常侍、中护军,保卫皇宫。后任征西将军,任内与曹爽策划骆谷之役,大失人心。高平陵政变后,被夺去兵权,改任大鸿胪、太常卿。嘉平六年(254年),中书令李丰与外戚张缉密谋杀死大将军司马师,改以夏侯玄执政。事泄被杀,夷灭三族,夏侯玄死时年仅四十六岁。著有文集三卷,如今已佚。政治上,提出了“审官择人”、“除重官”、“改服制”等制度,被太傅司马懿评价“皆大善”。博学多识,才华出众,精通玄学,成为“四聪”之一,与何晏等人开创了魏晋玄学的先河,是早期的玄学领袖人物。', dengzhong:'邓忠(不详-264年),三国时期曹魏名将邓艾之子。景元五年(264年),钟会谋反事败,士兵哗变,钟会被杀,邓艾部将想追还邓艾父子,但卫瓘却派田续追邓艾,于绵竹西相遇,将邓艾和邓忠等人杀死。直至泰始九年(273年)才恢复名节。', wangyan:'王衍(256年~311年),字夷甫,琅邪郡临沂县(今山东省临沂市)人。西晋末年重臣,玄学清谈领袖,曹魏幽州刺史王雄之孙、平北将军王乂之子、司徒王戎堂弟。王衍出身琅琊王氏。外表清明俊秀,风姿安详文雅,笃好老庄学说,颇有时名。步入仕途后,历任黄门侍郎、中领军、尚书令、尚书仆射等职。光熙元年(307年),升任司空。次年,又任司徒。王衍位高权重,却不思为国,为保全自己,还让弟弟王澄、族弟王敦分任荆州、青州刺史,遭时人鄙夷。王弥进攻洛阳时,王衍率军抵抗。其后转任太尉兼尚书令,又兼领太傅军司。永嘉五年(311年),东海王司马越去世,王衍奉其灵柩返回东海,途中为羯人石勒所俘获。王衍在与石勒交谈时,仍推脱责任,并劝其称帝,石勒大怒,将其与西晋旧臣一同活埋,时年五十六岁。王衍工书法,尤擅行书,《宣和书谱》有其作品《尊夫人帖》。', @@ -657,6 +663,522 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, skill:{ + //刘巴 + oltongduo:{ + audio:2, + trigger:{player:'phaseZhunbeiBegin'}, + direct:true, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('oltongduo'),function(card,player,target){ + return target!=player&&target.countCards('h')>0; + }).set('ai',function(target){ + var att=get.attitude(_status.event.player,target); + if(att>0) return Math.sqrt(att)/10; + return 5-att; + }); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + event.target=target; + player.logSkill('oltongduo',target); + target.chooseCard('h',true,'统度:将一张手牌交给'+get.translation(player)+',然后其于此阶段结束时将此牌置于牌堆顶'); + } + else{ + event.finish(); + } + 'step 2' + if(result.bool){ + player.addTempSkill('oltongduo_put'); + event.target.give(result.cards,player,true).gaintag.add('oltongduo'); + } + }, + subSkill:{ + put:{ + trigger:{player:'phaseUseEnd'}, + charlotte:true, + forced:true, + filter:function(event,player){ + return player.hasCard(card=>card.hasGaintag('oltongduo'),'h'); + }, + content:function(){ + var cards=player.getCards('h',card=>card.hasGaintag('oltongduo')); + player.lose(cards,ui.cardPile,'insert'); + game.log(player,'将',get.cnNumber(cards.length)+'张牌','置于牌堆顶'); + game.broadcastAll(function(player){ + var cardx=ui.create.card(); + cardx.classList.add('infohidden'); + cardx.classList.add('infoflip'); + player.$throw(cardx,1000,'nobroadcast'); + },player); + }, + onremove:function(player){ + player.removeGaintag('oltongduo'); + }, + } + } + }, + olzhubi:{ + audio:2, + enable:'phaseUse', + group:'olzhubi_replace', + filter:function(event,player){ + return (player.getStat('skill').olzhubi||0)0; + }, + content:function(){ + 'step 0' + target.chooseCard('he',true,'铸币:请重铸一张牌',(card,player,target)=>{ + var mod=game.checkMod(card,player,'unchanged','cardChongzhuable',player); + if(mod!='unchanged') return mod; + return true; + }); + 'step 1' + if(result.bool){ + var cards=result.cards; + target.loseToDiscardpile(cards); + target.draw().gaintag=['olzhubi_tag']; + } + }, + ai:{ + order:6, + result:{ + target:function(player,target){ + if(target.hasCard(card=>card.hasGaintag('olzhubi_tag'),'h')) return 0.5; + return 1; + } + } + }, + subSkill:{ + replace:{ + trigger:{global:'phaseJieshuBegin'}, + filter:function(event,player){ + return event.player.hasCard(card=>card.hasGaintag('olzhubi_tag'),'h'); + }, + forced:true, + locked:false, + logTarget:'player', + content:function(){ + 'step 0' + var cards=get.bottomCards(5); + event.cards2=cards; + game.cardsGotoOrdering(cards); + var next=player.chooseToMove('铸币:用任意“币”交换牌堆底等量张牌'); + var hs=player.getCards('h',card=>card.hasGaintag('olzhubi_tag')); + next.set('filterMove',function(from,to){ + return typeof to!='number'; + }); + next.set('list',[ + ['牌堆底',cards], + ['你的手牌',hs,'olzhubi_tag'] + ]); + next.set('processAI',function(list){ + var all=list[0][1].concat(list[1][1]),cards=all.slice(0); + var num=_status.event.num; + cards.sort(function(a,b){ + return get.value(b)-get.value(a); + }); + return [cards.slice(num),cards.slice(0,num)]; + }); + next.set('num',hs.length); + 'step 1' + if(result.bool){ + event.forceDie=true; + var cards=result.moved[0]; + event.cards=cards; + var hs=player.getCards('h'); + var lose=[],gain=event.cards2; + for(var i of cards){ + if(hs.contains(i)) lose.push(i); + else gain.remove(i); + } + if(lose.length) player.lose(lose,ui.cardPile); + if(gain.length) player.gain(gain,'draw'); + } + else event.finish(); + 'step 2' + for(var i of cards){ + if(!(('hejsdx').includes(get.position(i,true)))){ + i.fix(); + ui.cardPile.appendChild(i); + } + } + game.updateRoundNumber(); + } + }, + } + }, + //傅肜 + olxiaosi:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:function(card,player,target){ + return target.countCards('h')>0&&player!=target; + }, + filterCard:function(card,player,target){ + return get.type(card)=='basic'; + }, + check:function(card){ + var player=_status.event.player; + if(player.hasValueTarget(card)) return 10-get.value(card); + return 0.1; + }, + content:function(){ + 'step 0' + if(target.countCards('h',card=>{ + return get.type(card)=='basic'&&lib.filter.cardDiscardable(card,target,'olxiaosi'); + })==0) event.draw=true; + else{ + target.chooseToDiscard('h',true,'效死:弃置一张基本牌',{type:'basic'}); + } + 'step 1' + var cards2=cards.filterInD('d'); + if(result.bool){ + cards2=cards2.addArray(result.cards.filterInD('d')); + } + event.cards2=cards2; + 'step 2' + if (!event.cards2.length) event.finish(); + else player.chooseButton(['效死:是否使用其中的一张牌?',event.cards2]).set('filterButton',button=>{ + return _status.event.player.hasUseTarget(button.link,false,false); + }).set('ai',button=>{ + if(button.link.name=='jiu') return 10; + return _status.event.player.getUseValue(button.link); + }); + 'step 3' + if(result.bool){ + var card=result.links[0]; + event.cards2.remove(card); + player.$gain2(card,false); + game.delayx(); + player.chooseUseTarget(true,card,false,'nodistance'); + } + 'step 4' + if(event.cards2.filter(i=>player.hasUseTarget(i,false,false)).length) event.goto(2); + 'step 5' + if(event.draw) player.draw(); + }, + ai:{ + order:4.5, + result:{ + player:1, + target:-1 + } + } + }, + //阿会喃 + jueman:{ + audio:2, + trigger:{global:'phaseEnd'}, + forced:true, + direct:true, + filter:function(event,player){ + var history=game.getGlobalHistory('useCard',evt=>{ + return get.type(evt.card)=='basic'; + }); + if(history.length<2) return false; + var users=history.slice(0,2).map(i=>i.player); + var list=users.filter(user=>user==player); + if(list.length==1) return true; + if(list.length==0){ + var evtx=history[2]; + if(evtx){ + var name=evtx.card.name,nature=evtx.card.nature; + if(evtx&&player.hasUseTarget({name:name,nature:nature,isCard:true})) return true; + } + } + return false; + }, + content:function(){ + 'step 0' + var history=game.getGlobalHistory('useCard',evt=>{ + return get.type(evt.card)=='basic'; + }); + var list=history.slice(0,2).map(i=>i.player).filter(user=>user==player); + if(list.length==1) { + player.logSkill('jueman'); + player.draw(); + } + else if(list.length==0){ + var evtx=history[2],name=evtx.card.name,nature=evtx.card.nature; + player.chooseUseTarget({name:name,nature:nature,isCard:true},true).set('logSkill','jueman'); + } + } + }, + //张芝 + olbixin:{ + audio:2, + trigger:{ + global:['phaseZhunbeiBegin','phaseJieshuBegin'], + }, + direct:true, + onremove:['olbixin','olbixin_basic','olbixin_trick','olbixin_equip'], + group:'olbixin_full', + map:{基本:'basic',锦囊:'trick',装备:'equip'}, + filter:function(event,player){ + var count=player.countMark('olbixin'); + if(count>0&&event.player!=player) return false; + if(count>1&&event.name=='phaseZhunbei') return false; + if(count>2) return false; + var num=count>=3?3:1; + var types=['basic','trick','equip'].filter(type=>{ + return player.countMark('olbixin_'+type)0; + }, + getList:function(player,event){ + var natures=lib.inpile_nature.slice(0),used=[]; + var history=player.actionHistory; + for(var i=history.length-1;i>=0;i--){ + var info=history[i]; + for(var evt of info.useCard){ + var name=evt.card.name; + if(get.type(name)!='basic') continue; + if(name=='sha'){ + if(evt.card.nature) natures.remove(evt.card.nature); + else used.push(name); + } + else used.push(name); + }; + if(info.isRound) break; + } + var vcards=[]; + for(var name of lib.inpile){ + if(get.type(name)!='basic') continue; + if(!event){ + if(name=='sha'){ + if(!used.contains('sha')&&player.hasUseTarget({name:'sha'})) vcards.push(['基本','','sha']); + for(var nature of natures) { + if(player.hasUseTarget({name:'sha',nature:nature})) vcards.push(['基本','','sha',nature]); + } + } + else if(!used.contains(name)&&player.hasUseTarget({name:name})) vcards.push(['基本','',name]); + } + else{ + if(name=='sha'){ + if(!used.contains('sha')&&event.filterCard({name:'sha'},player,event)) vcards.push(['基本','','sha']); + for(var nature of natures) { + if(event.filterCard({name:'sha',nature:nature},player,event)) vcards.push(['基本','','sha',nature]); + } + } + else if(!used.contains(name)&&event.filterCard({name:name},player,event)) vcards.push(['基本','',name]); + } + } + return vcards; + }, + content:function(){ + 'step 0' + var types=['basic','trick','equip']; + var list=lib.skill.olbixin.getList(player); + if(list.length){ + var dialog=['###'+get.prompt('olbixin')+'###
    摸'+get.cnNumber(player.countMark('olbixin')>=3?1:3)+'张牌,然后将所有指定类型的手牌当一张基本牌使用
    ']; + dialog.push([types.map(i=>get.translation(i)),'tdnodes']); + dialog.push([list,'vcard']); + player.chooseButton(dialog,2).set('filterButton',button=>{ + var player=_status.event.player,count=player.countMark('olbixin'),num=count>=3?3:1; + var type=typeof button.link; + if(ui.selected.buttons.length&&type==typeof ui.selected.buttons[0].link) return false; + if(type=='string'&&player.countMark('olbixin_'+lib.skill.olbixin.map[button.link])>=num) return false; + if(type!='string'&&!player.hasUseTarget({name:button.link[2],nature:button.link[3]})) return false; + return true; + }).set('ai',button=>{ + var list=_status.event.list; + var type=typeof button.link; + if(type=='string') return (1.2-list.indexOf(lib.skill.olbixin.map[button.link]))*10; + return _status.event.player.getUseValue({name:button.link[2],nature:button.link[3]}); + }).set('list',types.map(i=>[i,player.getCards('h',{type:i}).map(i=>get.value(i)).reduce((p,c)=>p+c,0)]).sort((a,b)=>a[1]-b[1]).map(i=>i[0])); + }else event.finish(); + 'step 1' + if(result.bool){ + if(typeof result.links[0]!='string') result.links.reverse(); + var type=result.links[0],name=result.links[1][2],nature=result.links[1][3]; + player.logSkill('olbixin'); + game.log(player,'声明了',type+'牌'); + type=lib.skill.olbixin.map[type]; + event.type=type; + event.card={name:name,nature:nature}; + player.addMark('olbixin_'+type,1,false); + player.draw(player.countMark('olbixin')>=3?1:3); + game.delayx(); + }else event.finish(); + 'step 2' + if(player.hasCard(card=>get.type2(card)==event.type,'h')){ + var cards=player.getCards('h',card=>get.type2(card)==event.type); + var cardx=get.autoViewAs(card,cards); + if(player.hasUseTarget(cardx,true,false)){ + player.chooseUseTarget(cardx,cards,true,false).set('prompt','选择'+get.translation(cardx)+'('+get.translation(cards)+')的目标'); + } + } + }, + subSkill:{ + full:{ + enable:'chooseToUse', + filter:function(event,player){ + if(event.olbixin) return false; + var count=player.countMark('olbixin'); + if(count<=2) return false; + var num=count>=3?3:1; + var types=['basic','trick','equip'].filter(type=>{ + return player.countMark('olbixin_'+type)0; + }, + chooseButton:{ + dialog:function(event,player){ + var list=lib.skill.olbixin.getList(player,event); + var types=['basic','trick','equip']; + return ui.create.dialog( + '###笔心###
    摸一张牌,然后将所有指定类型的手牌当一张基本牌使用
    ', + [types.map(i=>get.translation(i)),'tdnodes'], + [list,'vcard'] + ); + }, + filter:function(button,player){ + var player=_status.event.player,count=player.countMark('olbixin'),num=count>=3?3:1; + var type=typeof button.link; + if(ui.selected.buttons.length&&type==typeof ui.selected.buttons[0].link) return false; + if(type=='string'&&player.countMark('olbixin_'+lib.skill.olbixin.map[button.link])>=num) return false; + if(type!='string'&&!_status.event.getParent().filterCard({name:button.link[2],nature:button.link[3]},player,_status.event.getParent())) return false; + return true; + }, + select:2, + check:function(button){ + var types=['basic','trick','equip']; + var type=typeof button.link; + var player=_status.event.player; + var list=types.map(i=>[i,player.getCards('h',{type:i}).map(i=>get.value(i)).reduce((p,c)=>p+c,0)]).sort((a,b)=>a[1]-b[1]).map(i=>i[0]); + if(type=='string') return (1.2-list.indexOf(button.link)+Math.sqrt(3-player.countMark('olbixin_'+lib.skill.olbixin.map[button.link])))*10; + if(_status.event.getParent().type!='phase') return 1; + return player.getUseValue({name:button.link[2],nature:button.link[3]}); + }, + backup:function(links,player){ + if(typeof links[0]!='string') links.reverse(); + return { + popname:true, + position:'h', + filterCard:()=>false, + selectCard:-1, + type:lib.skill.olbixin.map[links[0]], + viewAs:{name:links[1][2],nature:links[1][3]}, + precontent:function(){ + 'step 0' + player.logSkill('olbixin'); + var type=lib.skill.olbixin_full_backup.type; + game.log(player,'声明了',type,'牌'); + delete event.result.skill; + player.addMark('olbixin_'+type,1,false); + player.draw(player.countMark('olbixin')>=3?1:3); + 'step 1' + var cards=player.getCards('h',card=>get.type2(card)==lib.skill.olbixin_full_backup.type); + var cardsx=cards.filter(i=>game.checkMod(i,player,'unchanged','cardEnabled2',player)!==false); + if(cardsx.length&&cardsx.length==cards.length){ + event.result.cards=cards; + game.delayx(); + } + else{ + event.cancel(); + event.getParent().set('olbixin',true); + event.getParent().goto(0); + } + }, + } + }, + prompt:function(links,player){ + return '摸一张牌,然后将所有'+get.translation(links[0])+'牌当做'+(get.translation(links[1][3])||'')+get.translation(links[1][2])+'使用'; + } + }, + hiddenCard:function(player,name){ + var count=player.countMark('olbixin'); + if(!lib.inpile.contains(name)||get.type(name)!='basic'||count<3) return false; + var types=['basic','trick','equip'].filter(type=>{ + return player.countMark('olbixin_'+type)<3; + }); + return types.length; + }, + ai:{ + fireAttack:true, + respondSha:true, + respondShan:true, + skillTagFilter:function(player){ + var count=player.countMark('olbixin'); + if(count<3) return; + var types=['basic','trick','equip'].filter(type=>{ + return player.countMark('olbixin_'+type)<3; + }); + if(types.length) return true; + }, + order:1, + result:{ + player:function(player){ + if(_status.event.dying) return get.attitude(player,_status.event.dying); + return 1; + }, + }, + }, + }, + full_backup:{}, + } + }, + olximo:{ + audio:2, + trigger:{player:'logSkill'}, + derivation:'olfeibai', + filter:function(event,player){ + return event.skill=='olbixin'&&player.countMark('olbixin')<3; + }, + forced:true, + content:function(){ + player.addMark('olbixin',1,false); + game.log(player,'删除了','#g【笔心】','描述的前五个字符'); + if(player.countMark('olbixin')==3){ + game.log(player,'交换了','#g【笔心】','方括号中的两个数字'); + player.removeSkill('olximo'); + game.log(player,'失去了技能','#g【洗墨】'); + player.addSkillLog('olfeibai'); + } + }, + ai:{ + combo:'olbixin', + } + }, + olfeibai:{ + audio:2, + trigger:{ + source:'damageBegin1', + player:'recoverBegin', + }, + filter:function(event,player){ + var storage=player.storage.olfeibai; + var evt=event.getParent(),card=event.card; + if(evt.player!=player||!card) return false; + if(storage&&event.name=='recover'){ + return get.color(card)!='red'; + } + if(!storage&&event.name=='damage'){ + return get.color(card)!='black'; + } + return false; + }, + content:function(){ + player.changeZhuanhuanji('olfeibai'); + trigger.num++; + }, + zhuanhuanji:true, + forced:true, + mark:true, + marktext:'☯', + intro:{ + content:function(storage,player){ + if(storage) return '转换技。当你因执行你使用的非红色牌的效果而回复体力时,此回复值+1。'; + return '转换技。当你因执行你使用的非黑色牌的效果而造成伤害时,此伤害值+1。'; + }, + }, + }, //新诸葛瑾 olhuanshi:{ audio:'huanshi', @@ -7632,7 +8154,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } else event.finish(); 'step 3' - targets[0].gain(card,result.targets[0],'give'); + result.targets[0].gain(card,result.targets[0],'give').giver=player; }, ai:{ order:4, @@ -19496,6 +20018,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(num<4) str+=''; return str; }, + olbixin:function(player){ + var count=player.countMark('olbixin'); + if(count<3) return lib.translate.olbixin_info.slice(count*5); + return '你可以声明一种牌的类型(每种类型限[3]次),并选择一种你本轮未使用过且有合法目标的的基本牌。你摸[1]张牌,然后若你有此类型的手牌,你将所有此类型的手牌当此基本牌使用。'; + }, + olfeibai:function(player){ + if(player.storage.olfeibai) return '转换技,锁定技。阴:当你因执行你使用的非黑色牌的效果而造成伤害时,此伤害值+1;阳:当你因执行你使用的非红色牌的效果而回复体力时,此回复值+1。'; + return '转换技,锁定技。阴:当你因执行你使用的非黑色牌的效果而造成伤害时,此伤害值+1;阳:当你因执行你使用的非红色牌的效果而回复体力时,此回复值+1。' + }, }, characterReplace:{ caoshuang:['caoshuang','ns_caoshuang'], @@ -19537,6 +20068,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ huangzu:['dc_huangzu','huangzu'], huojun:['huojun','tw_huojun'], zhaoyǎn:['dc_zhaoyǎn','zhaoyǎn'], + furong:['ol_furong','furong'], }, translate:{ "xinfu_lingren":"凌人", @@ -20535,11 +21067,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xindiaodu:"调度", xindiaodu_info:"①每回合限一次,与你势力相同的角色使用装备牌时,其可以摸一张牌。②出牌阶段开始时,你可以获得与你势力相同的一名角色装备区内的一张牌,然后你可以将此牌交给另一名与你势力相同的其他角色。", olhuanshi:'缓释', - olhuanshi_info:'一名角色的判定牌生效前,你可以令其观看你的牌并其中的一张牌,你打出此牌代替判定牌。然后你可以重铸任意张牌(每回合限重铸一次)。', + olhuanshi_info:'一名角色的判定牌生效前,你可以令其观看你的牌并选择其中的一张牌,你打出此牌代替判定牌。然后你可以重铸任意张牌(每回合限重铸一次)。', olhongyuan:'弘援', olhongyuan_info:'每阶段限一次。当你一次性获得至少两张牌以后,你可以将至多两张牌交给等量名角色。', olmingzhe:'明哲', olmingzhe_info:'锁定技。当你于出牌阶段外失去红色牌后,你展示这些牌中所有背面朝上移动的牌(没有则不展示),然后摸一张牌。', + ahuinan:'阿会喃', + jueman:'蟨蛮', + jueman_info:'锁定技。一名角色的回合结束时,若本回合被使用过的基本牌数不小于2,且前两张基本牌的使用者:均不为你,你视为使用本回合被使用的第三张基本牌;有且仅有其中之一为你,你摸一张牌。', + ol_liuba:'刘巴', + oltongduo:'统度', + oltongduo_info:'准备阶段,你可以令一名角色交给你一张手牌,然后出牌阶段结束时,你将此牌置于牌堆顶。', + olzhubi:'铸币', + olzhubi_tag:'币', + olzhubi_info:'①出牌阶段限X次(X为你的体力上限)。你可以令一名角色重铸一张牌,以此法获得的牌称为“币”。②一名角色的结束阶段,若其有“币”,其观看牌堆底的五张牌,然后可以用任意“币”交换其中等量张牌。', + ol_furong:'傅肜', + olxiaosi:'效死', + olxiaosi_info:'出牌阶段限一次。你可以选择一名有手牌的其他角色并弃置一张基本牌。若其有可被弃置的基本牌,其弃置一张基本牌。然后你可以以任意顺序使用你与其以此法弃置的牌(无距离和次数限制)。最后若其未以此法弃置牌,你摸一张牌。', + zhangzhi:'张芝', + olbixin:'笔心', + olbixin_info:'一名角色的准备阶段或结束阶段,你可以声明一种牌的类型(每种类型限[1]次),并选择一种你本轮未使用过且有合法目标的的基本牌。你摸[3]张牌,然后若你有此类型的手牌,你将所有此类型的手牌当此基本牌使用。', + olximo:'洗墨', + olximo_info:'锁定技。当你发动〖笔心〗后,你移除其描述的前五个字符。若你已发动三次〖笔心〗,交换中括号中的两个数字,失去〖洗墨〗并获得〖飞白〗。', + olfeibai:'飞白', + olfeibai_info:'转换技,锁定技。阴:当你因执行你使用的非黑色牌的效果而造成伤害时,此伤害值+1;阳:当你因执行你使用的非红色牌的效果而回复体力时,此回复值+1。', sp_tianji:'天极·皇室宗亲', sp_sibi:'四弼·辅国文曲', diff --git a/character/sp2.js b/character/sp2.js index f08aebd9a..1538defe4 100644 --- a/character/sp2.js +++ b/character/sp2.js @@ -4,6 +4,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'sp2', connect:true, character:{ + leibo:['male','qun',4,['dcsilve','dcshuaijie']], + chengbing:['male','wu',3,['dcjingzao','dcenyu']], + dongguiren:['female','qun',3,['dclianzhi','dclingfang','dcfengying']], + sunlang:['male','shu',4,['dctingxian','dcbenshi']], + yuanji:['female','wu',3,['dcmengchi','dcjiexing']], + zhujianping:['male','qun',3,['dcxiangmian','dctianji']], + shiyi:['male','wu',3,['dccuichuan','dczhengxu']], + gongsundu:['male','qun',4,['dczhenze','dcanliao']], + zhaozhi:['male','shu',3,['dctongguan','dcmengjie']], + dc_hujinding:['female','shu','3/6',['dcdeshi','dcwuyuan','huaizi']], + panghui:['male','wei',5,['dcyiyong']], + dc_yuejiu:['male','qun',4,['dccuijin']], + liyixiejing:['male','wu',4,['dcdouzhen']], + chenjiao:['male','wei',3,['dcxieshou','dcqingyan','dcqizi']], + wanglie:['male','qun',3,['dcchongwang','dchuagui']], mushun:['male','qun',4,['dcjinjian','dcshizhao']], dc_zhaoyǎn:['male','wei',3,['dcfuning','dcbingji']], wangwei:['male','qun',4,['dcruizhan','dcshilie']], @@ -72,7 +87,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ hanmeng:['male','qun',4,['jieliang','quanjiu']], xinping:['male','qun',3,['fuyuan','zhongjie','yongdi']], wanniangongzhu:['female','qun',3,['zhenge','xinghan']], - re_xunchen:['male','qun',3,['refenglve','anyong']], + re_xunchen:['male','qun',3,['refenglve','anyong'],['clan:颍川荀氏']], zhangning:['female','qun',3,['tianze','difa']], liuyong:['male','shu',3,['zhuning','fengxiang']], tongyuan:['male','qun',4,['chaofeng','chuanshu']], @@ -156,7 +171,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhangchangpu:["female","wei",3,["yanjiao","xingshen"],[]], gaolan:['male','qun',4,['xiying']], sp_shenpei:['male','qun',3,['gangzhi','beizhan']], - xunchen:['male','qun',3,['fenglve','mouzhi']], + xunchen:['male','qun',3,['fenglve','mouzhi'],['clan:颍川荀氏']], sp_zhanghe:['male','qun',4,['yuanlve']], sp_xuyou:['male','qun',3,['spshicai','spfushi']], chunyuqiong:['male','qun',5,['cangchu','sushou','liangying']], @@ -172,15 +187,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_zizouqi:["mangyachang","xugong","zhangchangpu"], sp_sbfm:["lisu","xinpi","zhangwen"], sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou","xinping","hanmeng"], - sp_qihuan:['zhaozhong','re_hejin','fengfang'], - sp_binglin:['re_niujin',"sp_mifangfushiren",'licaiwei'], - sp_danqi:['dufuren','qinyilu','bianxi'], + sp_qihuan:['zhaozhong','re_hejin','fengfang','mushun'], + sp_binglin:['re_niujin',"sp_mifangfushiren",'licaiwei','dc_zhaoyan','shiyi','sunlang'], + sp_danqi:['dufuren','qinyilu','bianxi','dc_huban','dc_hujinding','dc_zhaoyǎn','wangwei','liyixiejing'], sp_fenghuo:['re_nanhualaoxian','tongyuan','zhangning','re_pangdegong'], sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie','dc_caiyang'], sp_caizijiaren:['re_dongbai','re_sunluyu','heyan','zhaoyan','wangtao','wangyue','zhangxuan','tengyin','zhangyao','xiahoulingnv','dc_sunru'], - sp_zhilan:['liuyong','wanniangongzhu','zhanghu','lvlingqi','tenggongzhu'], - sp_guixin:['re_kanze','re_chendeng','caimaozhangyun','dc_lvkuanglvxiang','dc_gaolan'], - sp_daihan:['mamidi','dc_jiling','zhangxun'], + sp_zhilan:['liuyong','wanniangongzhu','zhanghu','lvlingqi','tenggongzhu','panghui'], + sp_guixin:['re_kanze','re_chendeng','caimaozhangyun','dc_lvkuanglvxiang','dc_gaolan','yinfuren','chengui','chenjiao'], + sp_daihan:['mamidi','dc_jiling','zhangxun','dc_yuejiu','wanglie','leibo'], sp_jianghu:['guanning','huzhao','dc_huangchengyan'], sp_zongheng:['huaxin','luyusheng','re_xunchen','re_miheng','fengxi','re_dengzhi','dc_yanghu','zongyu'], sp_huangjin:['liuhong','zhujun','re_hansui',"xushao"], @@ -189,15 +204,1955 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp_zhongyuan:['re_hucheer','re_zoushi','caoanmin','re_dongcheng'], sp_xiaohu:['haomeng','yanfuren','yanrou','dc_zhuling'], sp2_huben:['wangshuang','wenyang','re_liuzan','dc_huangzu','wulan','leitong'], - sp2_shengun:["puyuan","guanlu","gexuan",'wufan','re_zhangbao','dukui'], - sp2_bizhe:['dc_luotong','dc_wangchang'], - sp2_huangjia:['caomao','liubian','dc_liuyu'], + sp2_shengun:["puyuan","guanlu","gexuan",'wufan','re_zhangbao','dukui','zhaozhi','zhujianping'], + sp2_bizhe:['dc_luotong','dc_wangchang','chengbing'], + sp2_huangjia:['caomao','liubian','dc_liuyu','quanhuijie','dingshangwan'], sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'], sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen'], - sp_decade:['huaman','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','zhouyi','dc_jiben','zhaoang','dc_liuba','liuhui','guanhai','quanhuijie','yinfuren','dc_huangquan','dc_huban','chengui','dingshangwan','luyi','dc_liuye','wangwei','dc_zhaoyǎn','mushun'], + sp_decade:['huaman','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','zhouyi','dc_jiben','zhaoang','dc_liuba','liuhui','guanhai','dc_huangquan','luyi','dc_liuye','gongsundu','dongguiren','yuanji'], } }, skill:{ + //周宣 + dcwumei:{ + trigger:{player:'phaseBegin'}, + filter:function(){ + return !player.hasSkill('dcwumei_used'); + }, + content:function(){ + 'step 0' + player.chooseTarget(get.prompt2('dcwumei')); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('dcwumei',target); + player.addTempSkill('dcwumei_used','roundStart'); + //tbc + } + }, + subSkill:{ + used:{onremove:true,charlotte:true}, + } + }, + //雷普 + dcsilve:{ + audio:2, + trigger:{ + player:'enterGame', + global:'phaseBefore', + }, + forced:true, + direct:true, + onremove:['dcsilve','dcsilve_self'], + filter:function(event,player){ + return (event.name!='phase'||game.phaseNumber==0); + }, + content:function(){ + 'step 0' + player.chooseTarget('私掠:请选择一名其他角色','选择一名其他角色(暂时仅你可见),称为“私掠”角色,且你获得后续效果',true,(card,player,target)=>{ + return target!=player&&!player.getStorage('dcsilve').contains(target); + }).set('ai',target=>{ + var att=get.attitude(_status.event.player,target); + if(att>0) return att+1; + if(att==0) return Math.random(); + return att; + }).set('animate',false); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('dcsilve'); + player.markAuto('dcsilve',[target]); + player.addSkill('dcsilve_rob'); + player.addSkill('dcsilve_revenge'); + target.addSkill('dcsilve_target'); + if(!target.storage.dcsilve_target) target.storage.dcsilve_target=[]; + target.storage.dcsilve_target.push(player); + } + }, + subSkill:{ + rob:{ + audio:'dcsilve', + trigger:{global:'damageSource'}, + filter:function(event,player){ + if(!player.getStorage('dcsilve').contains(event.source)) return false; + if(!event.player.isIn()||event.player==player) return false; + if(player.getStorage('dcsilve_robbed').contains(event.player)) return false; + return event.player.countCards('he')>0; + }, + charlotte:true, + prompt2:function(event,player){ + return '获得'+get.translation(event.player)+'一张牌'; + }, + logTarget:'player', + content:function(){ + player.addTempSkill('dcsilve_robbed'); + player.markAuto('dcsilve_self',[trigger.player]); + if(trigger.player.countGainableCards(player,'he')>0){ + player.markAuto('dcsilve_robbed',[trigger.player]); + player.gainPlayerCard(trigger.player,'he',true); + } + if(trigger.source&&trigger.source!=player) trigger.source.markSkill('dcsilve_target'); + } + }, + revenge:{ + audio:'dcsilve', + trigger:{global:'damageEnd'}, + filter:function(event,player){ + if(!player.getStorage('dcsilve').contains(event.player)) return false; + if(!event.player.isIn()||!event.source||!event.source.isIn()||event.source==player) return false; + return true; + }, + forced:true, + locked:false, + charlotte:true, + direct:true, + content:function(){ + 'step 0' + if(trigger.player&&trigger.player!=player) trigger.player.markSkill('dcsilve_target'); + player.markAuto('dcsilve_self',[trigger.player]); + player.chooseToUse('私掠:对'+get.translation(trigger.source)+'使用一张【杀】,或随机弃置一张手牌',function(card,player,event){ + if(get.name(card)!='sha') return false; + return lib.filter.filterCard.apply(this,arguments); + }).set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){ + if(target!=_status.event.source&&!ui.selected.targets.contains(_status.event.source)) return false; + return lib.filter.targetEnabled.apply(this,arguments); + }).set('source',trigger.source).set('logSkill','dcsilve_revenge'); + 'step 1' + if(!result.bool){ + var cards=player.getCards('h',card=>lib.filter.cardDiscardable(card,player,'dcsilve_revenge')); + if(cards.length>0){ + player.logSkill('dcsilve_revenge'); + player.discard(cards.randomGet()); + } + } + } + }, + self:{ + marktext:'私', + intro:{ + name:'私掠', + content:function(storage,player){ + if(!storage||!storage.length) return '没有打劫对象'; + if(storage[0]==player) return '已绑定'+get.translation(player)+'自己'; + return '打劫对象:'+get.translation(storage); + } + }, + }, + target:{ + marktext:'掠', + intro:{ + name:'私掠', + content:function(storage,player){ + return '被'+get.translation(storage)+'盯上了!'; + } + } + }, + robbed:{onremove:true,charlotte:true}, + } + }, + dcshuaijie:{ + audio:2, + enable:'phaseUse', + limited:true, + skillAnimation:true, + animationColor:'thunder', + filter:function(event,player){ + var targets=player.getStorage('dcsilve').filter(i=>i.isIn()); + if(!targets.length) return true; + return targets.filter(target=>{ + return player.hp>target.hp&&player.countCards('e')>target.countCards('e'); + }).length==targets.length; + }, + content:function(){ + 'step 0' + player.awakenSkill('dcshuaijie'); + player.loseMaxHp(); + var targets=player.getStorage('dcsilve').filter(i=>i.isIn()); + if(targets.length){ + for(var target of targets){ + if(target.countGainableCards(player,'he')>0) { + player.line(target); + player.gainPlayerCard(target,'he',true,[1,3]); + } + } + } + else{ + var cards=[]; + for(var i=0;i<3;i++){ + var card=get.cardPile(cardx=>{ + return cards.filter(cardxx=>get.type2(cardxx)==get.type2(cardx)).length==0; + }); + if(card) cards.push(card); + } + if(cards.length) player.gain(cards,'gain2'); + } + 'step 1' + var targets=player.getStorage('dcsilve').filter(i=>i.isIn()); + for(var target of targets){ + target.unmarkAuto('dcsilve_target',[player]); + } + delete player.storage.dcsilve; + delete player.storage.dcsilve_self; + player.markAuto('dcsilve',[player]); + player.markAuto('dcsilve_self',[player]); + }, + ai:{ + combo:'dcsilve', + order:8, + result:{ + player:function(player){ + var targets=player.getStorage('dcsilve').filter(i=>i.isIn()); + if(!targets.length) return 1; + var att=0; + targets.forEach(i=>att+=get.attitude(player,i)); + if(att<0) return 1; + return 0; + } + } + } + }, + //程秉 + dcjingzao:{ + audio:2, + enable:'phaseUse', + filter:function(event,player) { + return !player.hasSkill('dcjingzao_ban')&&game.hasPlayer(current=>lib.skill.dcjingzao.filterTarget(null,player,current)); + }, + filterTarget:function(card,player,target){ + return player!=target&&!target.hasSkill('dcjingzao_temp'); + }, + content:function(){ + 'step 0' + target.addTempSkill('dcjingzao_temp'); + var cards=game.cardsGotoOrdering(get.cards(3+player.countMark('dcjingzao_add'))).cards; + event.cards=cards; + game.log(player,'亮出了',event.cards); + event.videoId=lib.status.videoId++; + game.broadcastAll(function(player,target,id,cards){ + var str=get.translation(player)+'对'+(target==game.me?'你':get.translation(target))+'发动了【经造】'; + var dialog=ui.create.dialog(str,cards); + dialog.videoId=id; + },player,target,event.videoId,event.cards); + game.addVideo('showCards',player,[get.translation(player)+'发动了【经造】',get.cardsInfo(event.cards)]); + game.delay(cards.length-1); + 'step 1' + target.chooseToDiscard('he').set('prompt',false).set('filterCard',card=>{ + var names=_status.event.getParent().cards.map(i=>i.name); + return names.contains(get.name(card)); + }).set('ai',card=>{ + var target=_status.event.player,player=_status.event.getParent().player; + var att=get.attitude(target,player),val=get.value(card); + if(!lib.skill.dcjingzao.filter(null,player)){ + if(att>0) return 0; + return 6-val; + } + else{ + if(att>0) return 4-val; + return 0; + } + }); + var update=function(id,source){ + var dialog=get.idDialog(id); + if(dialog){ + var div=ui.create.div('',dialog.content,1); + var name=get.translation(source); + div.innerHTML='弃置一张满足条件的牌,然后'+name+'〖经造〗本回合亮出牌数+1;或点“取消”令'+name+'随机获得每种牌名的牌各一张,且〖经造〗本回合失效'; + ui.update(); + } + }; + if(target==game.me) update(event.videoId,player); + else if(target.isOnline()) target.send(update,event.videoId,player); + 'step 2' + game.broadcastAll('closeDialog',event.videoId); + if(result.bool){ + player.addTempSkill('dcjingzao_add'); + player.addMark('dcjingzao_add',1,false); + } + else{ + var cards=cards.randomSort(),cards2=[]; + for(var card of cards){ + if(!cards2.map(i=>i.name).contains(card.name)) cards2.push(card); + } + if(cards2.length) player.gain(cards2,'gain2'); + player.addTempSkill('dcjingzao_ban'); + } + }, + ai:{ + order:7, + result:{ + player:1, + } + }, + subSkill:{ + add:{charlotte:true,onremove:true}, + ban:{charlotte:true}, + temp:{charlotte:true} + } + }, + dcenyu:{ + audio:2, + trigger:{target:'useCardToTargeted'}, + forced:true, + filter:function(event,player){ + return event.player!=player&&game.countPlayer2(current=>{ + return current.hasHistory('useCard',evt=>{ + return evt.card.name==event.card.name&&evt!=event.getParent(); + }); + })>0; + }, + content:function(){ + trigger.getParent().excluded.add(player); + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(player==target) return; + if(game.countPlayer2(current=>{ + return current.hasHistory('useCard',evt=>evt.card.name==card.name); + })>0) return 'zerotarget'; + } + } + } + }, + //董贵人 + dclianzhi:{ + audio:2, + trigger:{player:'dying'}, + usable:1, + forced:true, + derivation:'dcshouze', + group:['dclianzhi_connect','dclianzhi_reproach'], + filter:function(event,player){ + return player.getStorage('dclianzhi').filter(i=>i&&i.isIn()).length; + }, + content:function(){ + player.recover(); + game.asyncDraw([player].concat(player.getStorage('dclianzhi').filter(i=>i&&i.isIn())).sortBySeat()); + }, + ai:{ + threaten:0.6, + }, + subSkill:{ + connect:{ + audio:'dclianzhi', + trigger:{ + player:'enterGame', + global:'phaseBefore', + }, + forced:true, + direct:true, + filter:function(event,player){ + return (event.name!='phase'||game.phaseNumber==0); + }, + content:function(){ + 'step 0' + player.chooseTarget('连枝:请选择一名其他角色',lib.translate.dclianzhi_info,true,(card,player,target)=>{ + return target!=player&&!player.getStorage('dclianzhi').contains(target); + }).set('ai',target=>{ + var att=get.attitude(_status.event.player,target); + if(att>0) return att+1; + if(att==0) return Math.random(); + return att; + }).set('animate',false); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('dclianzhi'); + player.markAuto('dclianzhi',[target]); + } + }, + }, + reproach:{ + audio:'dclianzhi', + trigger:{global:'dieAfter'}, + filter:function(event,player){ + return player.getStorage('dclianzhi').contains(event.player); + }, + content:function(){ + 'step 0' + var num=Math.max(1,player.countMark('dclingfang')); + player.chooseTarget(get.prompt('dclianzhi'),'选择一名其他角色,你与其各获得〖受责〗,且其获得'+num+'枚“绞”标记',(card,player,target)=>{ + return target!=player; + }).set('ai',target=>-get.attitude(_status.event.player,target)); + 'step 1' + if(result.bool){ + var target=result.targets[0]; + player.addSkillLog('dcshouze'); + target.addSkillLog('dcshouze'); + target.addMark('dclingfang',Math.max(1,player.countMark('dclingfang'))); + } + }, + } + } + }, + dclingfang:{ + audio:2, + trigger:{ + global:'useCardAfter', + }, + forced:true, + filter:function(event,player){ + if(get.color(event.card)!='black') return false; + if(event.player==player) return !event.targets||!event.targets.contains(player); + return event.targets&&event.targets.contains(player); + }, + content:function(){ + player.addMark('dclingfang',1); + }, + marktext:'绞', + intro:{ + name:'绞', + name2:'绞', + content:'mark' + } + }, + dcfengying:{ + audio:2, + enable:'chooseToUse', + group:'dcfengying_record', + filter:function(event,player){ + return player.storage.dcfengying&&player.storage.dcfengying.length&&player.storage.dcfengying.filter(name=>{ + return event.filterCard({name:name},player,event); + }).length&&!player.hasSkill('dcfengying_used'); + }, + hiddenCard:function(player,name){ + var list=player.getStorage('dcfengying'); + return list.contains(name)&&player.hasCard((card)=>(get.number(card)<=player.countMark('dclingfang')),'hs'); + }, + chooseButton:{ + dialog:function(event,player){ + var list=[]; + for(var name of player.storage.dcfengying){ + if(get.type(name)=='basic') list.push(['基本','',name]); + if(get.type(name)=='trick') list.push(['锦囊','',name]); + } + return ui.create.dialog('风影',[list,'vcard']); + }, + filter:function(button,player){ + return _status.event.getParent().filterCard({name:button.link[2],storage:{dcfengying:true}},player,_status.event.getParent()); + }, + check:function(button){ + var player=_status.event.player; + if(player.countCards('hs',button.link[2])>0) return 0; + if(button.link[2]=='wugu') return; + var effect=player.getUseValue(button.link[2]); + if(effect>0) return effect; + return 0; + }, + backup:function(links,player){ + return { + filterCard:function(card,player,event){ + return get.number(card)<=player.countMark('dclingfang'); + }, + audio:'dcfengying', + selectCard:1, + popname:true, + check:function(card){ + return 6-get.value(card)+get.number(card)/15; + }, + position:'hs', + viewAs:{ + name:links[0][2], + storage:{dcfengying:true}, + }, + precontent:function(){ + player.logSkill('dcfengying'); + player.addTempSkill('dcfengying_used'); + event.getParent().addCount=false; + delete event.result.skill; + } + } + }, + prompt:function(links,player){ + return '将一张点数不大于'+get.strNumber(player.countMark('dclingfang'))+'的手牌当做'+get.translation(links[0][2])+'使用(无距离和次数限制)'; + } + }, + mod:{ + targetInRange:function(card){ + if(card.storage&&card.storage.dcfengying) return true; + }, + cardUsable:function(card,player){ + if(card.storage&&card.storage.dcfengying) return Infinity; + }, + }, + ai:{ + order:4, + result:{ + player:function(player){ + if(_status.event.dying) return get.attitude(player,_status.event.dying); + return 1; + } + }, + threaten:2, + }, + subSkill:{ + record:{ + trigger:{global:'phaseBegin'}, + filter:function(event,player){ + return ui.discardPile.childNodes.length>0; + }, + forced:true, + popup:false, + content:function(){ + player.storage.dcfengying=[]; + for(var card of ui.discardPile.childNodes){ + if(get.color(card,false)!='black') continue; + if(!['basic','trick'].contains(get.type(card))) continue; + player.storage.dcfengying.add(card.name); + } + player.storage.dcfengying.sort((a,b)=>{ + return lib.inpile.indexOf(a)-lib.inpile.indexOf(b); + }); + } + }, + used:{charlotte:true} + } + }, + dcshouze:{ + audio:2, + trigger:{player:'phaseJieshuBegin'}, + forced:true, + filter:function(event,player){ + return player.countMark('dclingfang')>0; + }, + content:function(){ + 'step 0' + player.removeMark('dclingfang',1); + 'step 1' + var card=get.discardPile(card=>get.color(card,false)=='black'); + if(card) player.gain(card,'gain2'); + player.loseHp(); + } + }, + //孙狼 + dctingxian:{ + audio:2, + trigger:{player:'useCardToPlayered'}, + usable:1, + filter:function(event,player){ + return player.countCards('e')>0&&event.card.name=='sha'&&event.getParent().triggeredTargets3.length==event.targets.length; + }, + check:function(event,player){ + return true; + }, + content:function(){ + 'step 0' + var num=player.countCards('e'); + event.num=num; + player.draw(num); + 'step 1' + var num=Math.min(trigger.targets.length,num); + player.chooseTarget('铤险:令此杀对其中至多'+get.cnNumber(num)+'个目标无效',[1,num],true,(card,player,target)=>{ + return _status.event.getTrigger().targets.contains(target); + }).set('ai',target=>{ + return 1-get.effect(target,_status.event.getTrigger().card,_status.event.player,_status.event.player); + }); + 'step 2' + if(result.bool){ + player.line(result.targets); + trigger.getParent().excluded.addArray(result.targets); + } + } + }, + dcbenshi:{ + audio:2, + forced:true, + trigger:{player:'useCard1'}, + filter:function(event,player){ + if(event.card.name!='sha') return false; + var card=event.card; + var range; + var select=get.copy(get.info(card).selectTarget); + if(select==undefined){ + if(get.info(card).filterTarget==undefined) return false; + 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); + return range[1]==-1; + }, + content:function(){}, + mod:{ + attackRangeBase:function(player,num){ + if(num!=='unchanged') return num; + var range=1; + var equips=player.getCards('e',function(card){ + return get.subtype(card)!='equip1'&&(!ui.selected.cards||!ui.selected.cards.contains(card)); + }); + for(var i=0;i0) return false; + if(event.name=='link') return !player.isLinked(); + return !event.nature; + }, + content:function(){ + if(trigger.name=='link') trigger.cancel(); + else player.recover(); + }, + ai:{ + effect:{ + target:function(card,player,target,current){ + if(target.getStat('gain')) return; + if(get.tag(card,'natureDamage')) return; + if(target.hp==1) return 0.75; + if(card.name=='sha'&&!player.hasSkill('jiu')||target.hasSkillTag('filterDamage',null,{ + player:player, + card:card, + })) return [1,Math.min(1.5,0.75+0.25*target.hp)]; + }, + }, + }, + mod:{ + cardEnabled:function(card,player){ + if(!player.getStat('gain')) return false; + }, + cardSavable:function(card,player){ + if(!player.getStat('gain')) return false; + }, + }, + }, + dcjiexing:{ + audio:2, + trigger:{player:['recoverEnd','damageEnd','loseHpEnd']}, + check:function(event,player){ + var current=_status.currentPhase; + if(!player.hasSkill('dcmengchi')||get.attitude(player,current)>=0) return true; + var num=player.getStat('gain'); + if(num&&num>0) return true; + if(current.countCards('hs',card=>current.canUse(card,player)&&get.effect(player,card,current,player)<0)>=2) return false; + return true; + }, + content:function(){ + player.draw().gaintag=['dcjiexing']; + player.addTempSkill('dcjiexing_add'); + }, + subSkill:{ + add:{ + charlotte:true, + mod:{ + ignoredHandcard:function(card,player){ + if(card.hasGaintag('dcjiexing')) return true; + }, + cardDiscardable:function(card,player,name){ + if(name=='phaseDiscard'&&card.hasGaintag('dcjiexing')) return false; + }, + }, + onremove:function(player){ + player.removeGaintag('dcjiexing'); + }, + } + } + }, + //朱建平 + dcxiangmian:{ + audio:2, + trigger:{global:'phaseJieshuBegin'}, + filter:function(event,player){ + return !player.getStorage('dcxiangmian').contains(event.player)&&player!=event.player; + }, + logTarget:'player', + check:function(event,player){ + return get.attitude(player,event.player)<0; + }, + content:function(){ + 'step 0' + player.judge(card=>2/Math.sqrt(get.number(card,false))).set('judge2',result=>result.bool); + 'step 1' + player.markAuto('dcxiangmian',[trigger.player]); + trigger.player.addSkill('dcxiangmian_countdown'); + if (!trigger.player.storage['dcxiangmian_countdown']) trigger.player.storage['dcxiangmian_countdown'] = []; + [player.playerid, result.suit, result.number].forEach(i => trigger.player.storage['dcxiangmian_countdown'].push(i)); + trigger.player.markSkill('dcxiangmian_countdown'); + }, + intro:{content:'已对$发动过技能'}, + ai:{ + expose:0.3, + }, + subSkill:{ + countdown:{ + trigger:{player:'useCardAfter'}, + mark:true, + marktext:'💀', + silent:true, + forced:true, + charlotte:true, + intro:{ + markcount:function(storage){ + if(storage){ + var list=storage.filter((_,i)=>i%3==2); + return Math.min.apply(null,list); + } + }, + content:function(storage,player){ + var str='使用' + for(var i=0;ii%3==1)).contains(get.suit(event.card,player)); + }, + content:function(){ + 'step 0' + var storage=player.getStorage('dcxiangmian_countdown'); + for(var i=0;i0) player.loseHp(player.hp); + i--; + } + } + }, + ai:{ + effect:{ + player_use:function(card,player,target){ + if(typeof card!='object') return; + var storage=player.getStorage('dcxiangmian_countdown'); + for(var i=0;i{ + if(get[fn](card,player)==get[fn](cardxx,player)&&!cards.contains(cardxx)){ + return true; + } + }); + if(cardx) cards.push(cardx); + } + if(!cards.length||player.isMaxHandcard(true)) player.draw(); + else if(cards.length) player.gain(cards,'gain2') + } + }, + //是仪 + dccuichuan:{ + audio:2, + enable:'phaseUse', + usable:1, + filterTarget:true, + filterCard:true, + derivation:'dczuojian', + filter:function(event,player){ + return player.countCards('h')>0; + }, + content:function(){ + 'step 0' + event.num=target.countCards('e'); + var subtypes=[]; + for(var i=1;i<7;i++){ + if(player.isEmpty(i)) subtypes.push('equip'+i); + } + if(subtypes.length){ + subtypes.randomSort(); + for(var subtype of subtypes){ + var card=get.cardPile2(card=>get.subtype(card)==subtype); + if(card&&player.canUse(card,player)){ + target.chooseUseTarget(card,true,'nopopup'); + break; + } + } + } + 'step 1' + var numx=target.countCards('e'); + if(numx>0) player.draw(numx); + game.delayx(); + 'step 2' + event.num2=target.countCards('e'); + if(event.num2==4&&num!=4){ + player.trySkillAnimate('dccuichuan_animate','dccuichuan_animate',player.checkShow('dccuichuan')); + player.removeSkill('dccuichuan'); + game.log(player,'失去了技能','#g【榱椽】'); + player.addSkillLog('dczuojian'); + target.insertPhase(); + game.delayx(); + } + }, + subSkill:{ + animate:{ + skillAnimation:true, + animationColor:'wood', + } + }, + ai:{ + order:7, + result:{ + target:function(player,target){ + if(target.countCards('e')==3) return 2; + return 1; + }, + player:function(player,target){ + if(target.countCards('e')==3) return 0.5; + return target.countCards('e')+1; + } + } + } + }, + dczhengxu:{ + audio:2, + group:['dczhengxu_lose','dczhengxu_damage'], + subSkill:{ + lose:{ + audio:'dczhengxu', + trigger:{ + player:'loseAfter', + global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'], + }, + prompt2:function(event,player){ + return '当你失去牌后,若你本回合受到过伤害,你可以摸等量的牌('+get.cnNumber(event.getl(player).cards2.length)+'张)'; + }, + check:()=>true, + filter:function(event,player){ + if(event.name=='gain'&&event.player==player) return false; + if(!player.getHistory('damage').length||player.hasHistory('useSkill',evt=>evt.skill=='dczhengxu_lose')) return false; + var evt=event.getl(player); + return evt&&evt.cards2&&evt.cards2.length>0; + }, + content:function(){ + player.draw(trigger.getl(player).cards2.length); + } + }, + damage:{ + audio:'dczhengxu', + trigger:{ + player:'damageBegin4', + }, + prompt2:'当你受到伤害时,若你本回合失去过牌,你可以防止之', + check:()=>true, + filter:function(event,player){ + if(!player.hasHistory('lose',evt=>evt.cards2&&evt.cards2.length)||player.hasHistory('useSkill',evt=>evt.skill=='dczhengxu_damage')) return false; + return true; + }, + content:function(){ + trigger.cancel(); + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return; + if(target.hasHistory('useSkill',evt=>evt.skill=='dczhengxu_damage')) return; + if(get.tag(card,'damage')) return 0.6; + } + } + } + }, + } + }, + dczuojian:{ + audio:2, + trigger:{player:'phaseUseEnd'}, + filter:function(event,player){ + return player.getHistory('useCard',evt=>{ + var evtx=evt.getParent('phaseUse'); + if(evtx&&evtx==event) return true; + return false; + }).length>=player.hp; + }, + direct:true, + content:function(){ + 'step 0' + var choices=[]; + var choiceList=['令装备区牌数多于你的角色各摸一张牌','令装备区牌数少于你的角色各弃置一张手牌']; + var num=player.countCards('e'); + var targets=[],targets2=[]; + var eff=0,eff2=0; + for(var target of game.filterPlayer()){ + if(target.countCards('e')>num) { + targets.push(target); + eff+=get.attitude(player,target); + } + if(target.countCards('e')'; + if(targets2.length){ + choices.push('选项二'); + choiceList[1]+='('+get.translation(targets2)+')'; + } else choiceList[1]=''+choiceList[1]+''; + if(!choices.length) event.finish(); + else player.chooseControl(choices,'cancel2').set('prompt',get.prompt('dczuojian')).set('choiceList',choiceList).set('ai',()=>{ + var controls=_status.event.controls,choice=_status.event.choice; + if(!controls.contains('选项一')||controls.contains('选项二')&&choice==1) return '选项二'; + return '选项一'; + }).set('choice',eff<0&&eff2<0?'cancel2':(eff>eff2?0:1)); + 'step 1' + if(result.control=='选项一'){ + player.logSkill('dczuojian',targets); + game.asyncDraw(targets,1); + } + else if(result.control=='选项二'){ + player.logSkill('dczuojian',event.targets2); + for(var target of event.targets2){ + player.discardPlayerCard('h',target,true); + } + } + } + }, + //赵直 + dctongguan:{ + trigger:{ + global:'phaseBegin', + }, + filter:function(event,player){ + return event.player.phaseNumber==1&&lib.skill.dctongguan.derivation.some(i=>{ + return (player.getStorage('dctongguan')[i]||0)<2; + }); + }, + forced:true, + locked:false, + logTarget:'player', + derivation:['dctongguan_wuyong','dctongguan_gangying','dctongguan_duomou','dctongguan_guojue','dctongguan_renzhi'], + content:function(){ + 'step 0' + var skills=lib.skill.dctongguan.derivation.slice(); + player.chooseControl(skills.filter(i=>{ + return (player.getStorage('dctongguan')[i]||0)<2; + })).set('choiceList',skills.map(i=>{ + var info=''; + switch (player.getStorage('dctongguan')[i]){ + case 1: + info=' style="opacity:0.65;"'; + break; + case 2: + info=' style="text-decoration:line-through; opacity:0.3;"'; + break; + } + return '
    「'+get.translation(lib.translate[i+'_ab']||get.translation(i).slice(0,2))+'」
    ' + + ''+get.skillInfoTranslation(i,player)+'(已选过'+get.cnNumber(player.getStorage('dctongguan')[i]||0)+'次)'+''; + })).set('displayIndex',false).set('prompt','统观:为'+get.translation(trigger.player)+'选择一个属性').set('ai',function(){ + var controls=_status.event.controls,target=_status.event.getTrigger().player; + var str=target.getSkills(null,false,false).map(i=>get.skillInfoTranslation(i)).join(''); + var choices=[]; + if(controls.contains('dctongguan_wuyong')&&/你对\S{1,15}造成\S{1,10}伤害/.test(str)) choices.push('dctongguan_wuyong'); + if(controls.contains('dctongguan_gangying')&&/回复\S{1,5}体力/.test(str)) choices.push('dctongguan_gangying'); + if(controls.contains('dctongguan_duomou')&&/你(可|可以)?摸\S{1,3}张牌/.test(str)) choices.push('dctongguan_duomou'); + if(controls.contains('dctongguan_guojue')&&/(当【过河拆桥】使用|((弃置|获得)\S{1,5}其他角色\S{1,7}牌|))/.test(str)) choices.push('dctongguan_guojue'); + if(controls.contains('dctongguan_renzhi')&&/交给\S{0,5}其他角色/.test(str)&&_status.event.player.getFriends().length) choices.push('dctongguan_renzhi'); + if(choices.length) return choices.randomGet(); + return _status.event.controls.randomGet(); + }); + 'step 1' + if(result.control){ + var skill=result.control; + var func=lib.skill.dctongguan.localMark; + if(event.isMine()) func(skill,trigger.player) + else if(event.isOnline()) player.send(func,skill,trigger.player) + // game.log(player,'为',trigger.player,'选择了','#g「'+get.translation(skill)+'」','属性'); + game.log(player,'为',trigger.player,'选择了','#g一个属性'); + // player.popup(skill); + trigger.player.addSkill(skill); + if(!player.storage.dctongguan) player.storage.dctongguan={}; + if(!player.storage.dctongguan[skill]) player.storage.dctongguan[skill]=0; + player.storage.dctongguan[skill]++; + } + }, + localMark:function(skill,player){ + var name=skill,info; + if(player.marks[name]){ + player.updateMarks(); + } + if(lib.skill[name]){ + info=lib.skill[name].intro; + } + if(!info){ + return; + } + if(player.marks[name]){ + player.marks[name].info=info; + } + else { + player.marks[name]=player.mark(name,info); + } + player.updateMarks(); + }, + subSkill:{ + forceFinish:{charlotte:true}, + wuyong:{ + marktext:'勇', + intro:{ + name:'武勇', + content:'属性目标:造成伤害', + }, + charlotte:true, + silent:true, + nopop:true, + }, + gangying:{ + marktext:'刚', + intro:{ + name:'刚硬', + content:'属性目标:回复体力,或手牌数大于体力值', + }, + charlotte:true, + silent:true, + forced:true, + nopop:true, + }, + duomou:{ + marktext:'谋', + intro:{ + name:'多谋', + content:'属性目标:于摸牌阶段外摸牌', + }, + charlotte:true, + silent:true, + nopop:true, + }, + guojue:{ + marktext:'决', + intro:{ + name:'果决', + content:'属性目标:弃置或获得其他角色牌', + }, + charlotte:true, + silent:true, + nopop:true, + }, + renzhi:{ + marktext:'仁', + intro:{ + name:'仁智', + content:'属性目标:交给其他角色牌', + }, + charlotte:true, + silent:true, + nopop:true, + }, + } + }, + dcmengjie:{ + trigger:{ + global:'phaseJieshuBegin', + }, + forced:true, + direct:true, + locked:false, + filter:function(event,player){ + var target=event.player; + if((target.hasSkill('dctongguan_gangying')&&(target.countCards('h')>target.hp||game.getGlobalHistory('changeHp',function(evt){ + return evt.player==target&&evt.getParent().name=='recover'; + }).length>0)) || + target.hasSkill('dctongguan_wuyong')&&target.getHistory('sourceDamage').length || + target.hasSkill('dctongguan_duomou')&&target.getHistory('gain',evt=>evt.getParent().name=='draw'&&evt.getParent('phaseDraw').name!='phaseDraw').length){ + return true; + } + var guojue=false,renzhi=false; + game.getGlobalHistory('cardMove',evt=>{ + if(guojue&&renzhi) return; + var evtx=evt.getParent(); + if(evtx.name=='gain'&&evtx.source&&evtx.source!=target&&evtx.player==target || + evtx.name=='discard'&&evtx.getParent().player==target&&evtx.player!=target){ + guojue=true; + } + if(evtx.name=='gain'&&evtx.giver==target&&evtx.getg(evtx.player).length || + evtx.name=='loseAsync'&&evtx.giver==target&&game.hasPlayer(current=>evtx.getg(current).length)){ + renzhi=true; + } + }); + return target.hasSkill('dctongguan_guojue')&&guojue||target.hasSkill('dctongguan_renzhi')&&renzhi; + }, + rules:[ + (target)=>target.getHistory('sourceDamage').length, + (target)=>game.getGlobalHistory('changeHp',function(evt){ + return evt.player==target&&evt.getParent().name=='recover'; + }).length>0||target.countCards('h')>target.hp, + (target)=>target.getHistory('gain',evt=>evt.getParent().name=='draw'&&evt.getParent('phaseDraw').name!='phaseDraw').length, + (target,bool)=>bool, + (target,bool)=>bool + ], + content:function(){ + 'step 0' + event.nowProperty=0; + var target=trigger.player; + var guojue=false,renzhi=false; + game.getGlobalHistory('cardMove',evt=>{ + if(guojue||renzhi) return; + var evtx=evt.getParent(); + if(evtx.name=='gain'&&evtx.source&&evtx.source!=target&&evtx.player==target || + evtx.name=='discard'&&evtx.getParent().player==target&&evtx.player!=target){ + guojue=true; + } + if(evtx.name=='gain'&&evtx.giver==target&&evtx.getg(evtx.player).length || + evtx.name=='loseAsync'&&evtx.giver==target&&game.hasPlayer(current=>evtx.getg(current).length)){ + renzhi=true; + } + }); + event.guojue=guojue; event.renzhi=renzhi; + 'step 1' + if(event.nowProperty>=5){ + event.finish(); + return; + } + var skills=lib.skill.dctongguan.derivation; + if(trigger.player.hasSkill(skills[event.nowProperty])&&lib.skill.dcmengjie.rules[event.nowProperty](trigger.player,event[event.nowProperty==3?'guojue':'renzhi'])){ + event.goto(2+event.nowProperty*2); + } else event.redo(); + event.nowProperty++; + 'step 2' + player.chooseTarget('梦解:对一名其他角色造成1点伤害',true,lib.filter.notMe).set('ai',target=>get.damageEffect(target,player,player)); + 'step 3' + if(result.bool){ + player.logSkill('dcmengjie',result.targets[0]); + result.targets[0].damage(); + } + game.delayx(); + event.goto(1); + 'step 4' + player.chooseTarget('梦解:令一名角色回复1点体力',true).set('ai',target=>get.recoverEffect(target,player,player)); + 'step 5' + if(result.bool){ + player.logSkill('dcmengjie',result.targets[0]); + result.targets[0].recover(); + } + game.delayx(); + event.goto(1); + 'step 6' + player.logSkill('dcmengjie'); + player.draw(2); + 'step 7' + game.delayx(); + event.goto(1); + 'step 8' + player.chooseTarget('梦解:弃置一名角色区域内至多两张牌',true,(card,player,target)=>{ + return target.countDiscardableCards(player,'hej'); + }).set('ai',target=>get.effect(target,{name:'guohe'},player,target)); + 'step 9' + if(result.bool){ + player.logSkill('dcmengjie',result.targets[0]); + player.discardPlayerCard(result.targets[0],true,'hej',[1,2]); + } + game.delayx(); + event.goto(1); + 'step 10' + player.chooseTarget('梦解:令一名其他角色将手牌补至上限',true,(card,player,target)=>{ + return target!=player; + }).set('ai',target=>{ + var att=get.attitude(_status.event.player,target); + if(target.hasSkillTag('nogain')) att/=6; + if(att>2){ + return Math.min(5,target.maxHp)-target.countCards('h'); + } + return att/3; + }); + 'step 11' + if(result.bool){ + var target=result.targets[0]; + player.logSkill('dcmengjie',target); + var num=Math.min(5,target.maxHp-target.countCards('h')); + target.draw(num); + } + game.delayx(); + event.goto(1); + } + }, + //胡金定 + dcdeshi:{ + audio:2, + trigger:{player:'damageBegin4'}, + forced:true, + filter:function(event,player){ + return player.isDamaged()&&event.card&&event.card.name=='sha'; + }, + content:function(){ + 'step 0' + trigger.cancel(); + for(var func of ['discardPile','cardPile2']){ + var card=get[func](card=>card.name=='sha'); + if(card){ + player.gain(card,'gain2'); + break; + } + } + 'step 1' + player.loseMaxHp(); + }, + ai:{ + filterDamage:true, + skillTagFilter:function(player,tag,arg){ + if(arg&&arg.card&&arg.card.name=='sha') return true; + return false; + }, + }, + }, + dcwuyuan:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + return player.countCards('h','sha')>0; + }, + filterCard:{name:'sha'}, + filterTarget:lib.filter.notMe, + check:function(card){ + var player=_status.event.player; + if(get.color(card)=='red'&&game.hasPlayer(function(current){ + return current!=player&¤t.isDamaged()&&get.attitude(player,current)>2; + })) return 2; + if(get.nature(card)) return 1.5; + return 1; + }, + discard:false, + lose:false, + delay:false, + content:function(){ + 'step 0' + player.give(cards,target,'give'); + player.recover(); + 'step 1' + var num=1; + if(get.nature(cards[0])) num++; + player.draw('nodelay'); + target.draw(num); + if(get.color(cards[0])=='red') target.recover(); + }, + ai:{ + order:1, + result:{ + player:function(player,target){ + if(player.isDamaged()) return 1; + return 0; + }, + target:function(player,target){ + if(ui.selected.cards.length){ + var num=1; + if(get.nature(ui.selected.cards[0])) num++; + if(target.hasSkillTag('nogain')) num=0; + if(get.color(ui.selected.cards[0])=='red') return num+2 + else return num+1; + } + return 1; + }, + }, + }, + }, + // 庞会 + dcyiyong:{ + audio:2, + trigger:{ + source:'damageBegin1', + }, + usable:2, + filter:function(event,player){ + return player.countDiscardableCards(player,'he')>0; + }, + check:function(event,player){ + return get.attitude(player,event.player)<0&&player.countCards('he',card=>lib.filter.cardDiscardable(card,player,'dcyiyong')&&get.value(card,player)<7)>0; + }, + logTarget:'player', + content:function(){ + 'step 0' + event.list=[player]; + event.cards0=[];event.cards1=[]; + if(trigger.player.countDiscardableCards(trigger.player,'he')>0){ + event.list.push(trigger.player); + } + player.chooseCardOL(event.list,'he',true,[1,Infinity],'异勇:弃置任意张牌',(card,player,target)=>{ + return lib.filter.cardDiscardable(card,player,'dcyiyong'); + }).set('ai',card=>{ + var source=_status.event.getParent().player,player=_status.event.player,target=_status.event.getParent().list[1]; + if(!target) return get.unuseful(card); + if(player==source){ + var val=6; + if(target.hp<=2&&!target.hasSkillTag('filterDamage',null,{ + player:player, + card:_status.event.getTrigger().card, + })) val+=2+get.number(card)/5; + if(target.countCards('he',card=>get.value(card)<5)>=3) val-=3+get.number(card)/5; + return val-get.value(card); + } + if(ui.selected.cards.length>1&&ui.selected.cards.length+2 >= source.countCards('he')) return 0; + if(player.hp<=2&&!target.hasSkillTag('filterDamage',null,{ + player:player, + card:_status.event.getTrigger().card, + })) return 10-get.value(card); + return 5-get.value(card); + }); + 'step 1' + var lose_list=[],cards=[]; + for(var i=0; iget.number(i,false)).reduce((p,c)=>p+c,0) + } + var num0=getn(event.cards0),num1=getn(event.cards1); + if(num0<=num1){ + player.draw(event.cards1.length); + } + if(num0 >= num1){ + trigger.num++; + } + } + }, + // 乐就 + dccuijin:{ + audio:2, + trigger:{global:'useCard'}, + direct:true, + filter:function(event,player){ + return event.card.name=='sha'&&(event.player==player||player.inRange(event.player))&&player.countCards('h')>0; + }, + content:function(){ + 'step 0' + if(player!=game.me&&!player.isOnline()) game.delayx(); + var target=trigger.player; + event.target=target; + player.chooseToDiscard('he',get.prompt('dccuijin',target),'弃置一张牌并令'+get.translation(trigger.player)+'使用的【杀】伤害+1,但若其未造成伤害,则你摸一张牌并对其造成1点伤害。').set('ai',function(card){ + if(_status.event.goon) return 7-get.value(card); + return 0; + }).set('goon',function(){ + var d1=true; + if(trigger.player.hasSkill('jueqing')||trigger.player.hasSkill('gangzhi')) d1=false + for(var target of trigger.targets){ + if(!target.mayHaveShan()||trigger.player.hasSkillTag('directHit_ai',true,{ + target:target, + card:trigger.card, + },true)){ + if(!target.hasSkill('gangzhi')) d1=false; + if(!target.hasSkillTag('filterDamage',null,{ + player:trigger.player, + card:trigger.card, + })&&get.attitude(player,target)<0) return true; + } + } + if(d1) return get.damageEffect(trigger.player,player,player)>0; + return false; + }()).logSkill=['dccuijin',target]; + 'step 1' + if(result.bool){ + if(typeof trigger.baseDamage!='number') trigger.baseDamage=1; + trigger.baseDamage++; + player.addSkill('dccuijin_damage'); + player.markAuto('dccuijin_damage',[trigger.card]); + if(!player.storage.dccuijin_map) player.storage.dccuijin_map={}; + player.storage.dccuijin_map[trigger.card.cardid]=trigger.targets.slice(); + } + }, + subSkill:{ + damage:{ + trigger:{ + global:['damage','damageCancelled','damageZero','shaMiss','useCardToExcluded','useCardToEnd','eventNeutralized','useCardAfter'], + }, + forced:true, + silent:true, + firstDo:true, + charlotte:true, + onremove:true, + filter:function(event,player,name){ + if(!event.card) return false; + var cards=player.getStorage('dccuijin_damage'); + if(!cards.contains(event.card)) return false; + return true; + }, + content:function(){ + 'step 0' + var card=trigger.card; + if(event.triggername=='useCardAfter'){ + var cards=player.getStorage('dccuijin_damage'); + cards=cards.remove(card); + if(!cards.length){ + player.removeSkill('dccuijin_damage'); + delete player.storage.dccuijin_map; + } + else delete player.storage.dccuijin_map[card.cardid]; + event.finish(); + }else{ + var target,source; + if(trigger.name.indexOf('damage')==0){ + target=trigger.player; + source=trigger.source; + } + else { + target=trigger.target; + source=trigger.player; + } + if(player.storage.dccuijin_map[card.cardid].contains(target)&&!target.hasHistory('damage',evt=>{ + return evt.card==card; + })){ + player.logSkill('dccuijin_damage',source); + player.storage.dccuijin_map[card.cardid].remove(target); + player.draw(); + if(source&&source.isIn()){ + player.line(trigger.player,'green'); + trigger.player.damage(); + } + } + } + 'step 1' + game.delayx(); + }, + }, + }, + }, + // 陈矫 + dcxieshou:{ + trigger:{ + global:'damageEnd', + }, + usable:1, + filter:function(event,player){ + return get.distance(player,event.player)<=2&&event.player.isIn(); + }, + check:function(event,player){ + return get.attitude(player,event.player)>4; + }, + locked:false, + logTarget:'player', + onremove:true, + change:function(player,num){ + if(typeof player.storage.dcxieshou!=='number') player.storage.dcxieshou=0; + if(!num) return; + player.storage.dcxieshou+=num; + player.markSkill('dcxieshou'); + game.log(player,'的手牌上限',(num>0?'+':'')+num); + }, + content:function(){ + 'step 0' + lib.skill.dcxieshou.change(player,-1); + 'step 1' + var list=[],target=trigger.player; + event.target=target; + var choiceList=['回复1点体力','复原,摸两张牌']; + if(target.getDamagedHp()==0) choiceList[0]=''+choiceList[0]+''; + else list.push('选项一'); + list.push('选项二'); + target.chooseControl(list).set('choiceList',choiceList).set('prompt',get.translation(player)+'对你发动了【协守】,请选择一项'); + 'step 2' + if(result.control=='选项一'){ + target.recover(); + } + else { + target.link(false); + target.draw(2); + } + }, + marktext:'协', + intro:{ + content:function(storage,player){ + var num=player.storage.dcxieshou; + return '手牌上限'+(num >= 0?'+':'')+num; + } + }, + ai:{ + expose:0.3, + }, + mod:{ + maxHandcard:function(player,num){ + return num+player.countMark('dcxieshou'); + } + }, + }, + dcqingyan:{ + trigger:{ + target:'useCardToTargeted', + }, + filter:function(event,player){ + return event.player!=player&&get.color(event.card)=='black'; + }, + usable:2, + direct:true, + content:function(){ + 'step 0' + if(player.countCards('h')1); + }else{ + player.chooseToDiscard(get.prompt('dcqingyan'),'弃置一张手牌令你的手牌上限+1').set('ai',card=>6-get.value(card)).set('logSkill','dcqingyan'); + } + 'step 1' + if(result.bool){ + if(result.cards&&result.cards.length){ + lib.skill.dcxieshou.change(player,1); + }else{ + player.logSkill('dcqingyan'); + player.drawTo(player.maxHp); + } + } else player.storage.counttrigger.dcqingyan--; + } + }, + dcqizi:{ + mod:{ + playerEnabled:function(card,player,target){ + if(get.distance(player,target)>2&&card.name=='tao'&&target==_status.event.dying) return false; + }, + } + }, + //李异谢旌 + dcdouzhen:{ + audio:2, + trigger:{ + player:['useCard','respond'], + }, + forced:true, + zhuanhuanji:'number', + mark:true, + marktext:'☯', + intro:{ + content:function(storage,player){ + var str='
  • 已转换过'+get.cnNumber(storage||0)+'次。
  • 你的回合内,'; + str+=player.countMark('dcdouzhen')%2?'你的红色基本牌均视为普【杀】且无次数限制。':'你的黑色基本牌均视为【决斗】且使用时获得目标的一张牌。'; + return str; + }, + }, + filter:function(event,player){ + if(player !=_status.currentPhase||!event.card.isCard||!event.cards||event.cards.length!=1||get.type(event.cards[0])!='basic') return false; + if(player.countMark('dcdouzhen')%2) return get.color(event.cards[0])=='red'&&event.card.name=='sha'; + return event.name!='respond'&&get.color(event.cards[0])=='black'&&event.card.name=='juedou'; + }, + content:function(){ + if(player.countMark('dcdouzhen')%2){ + // if(trigger.addCount!==false){ + // trigger.addCount=false; + // if(player.stat[player.stat.length-1].card.sha>0){ + // player.stat[player.stat.length-1].card.sha--; + // } + // } + }else{ + if(trigger.targets.length&&trigger.targets.filter(i=>i.countGainableCards(player,'he')>0).length) player.gainMultiple(trigger.targets.sortBySeat(),'he'); + } + player.changeZhuanhuanji('dcdouzhen'); + }, + ai:{ + effect:{ + player:function(card,player,target){ + if(card.name!='juedou') return; + if(player.hasSkillTag('directHit_ai',true,{ + target:target, + card:card, + },true)){ + return [1,1]; + } + var hs1=target.getCards('h','sha'); + var hs2=player.getCards('h',card=>(get.color(card)=='red'&&get.type(card)=='basic')||get.name(card)=='sha'); + var hsx=target.getCards('h'); + if(hs1.length>hs2.length+1||hsx.length>2&&hs2.length==0&&hsx[0].number<6||hsx.length>3&&hs2.length==0||hs1.length>hs2.length&&(!hs2.length||hs1[0].number>hs2[0].number)){ + return [1,-2]; + } + return [1,-0.5]; + } + } + }, + mod:{ + cardname:function(card,player){ + if(get.type(card,null,false)!='basic'||player!=_status.currentPhase) return; + if(player.countMark('dcdouzhen')%2){ + if(get.color(card)=='red') return 'sha'; + }else{ + if(get.color(card)=='black') return 'juedou'; + } + }, + cardnature:function(card,player){ + if(get.type(card,null,false)!='basic'||player!=_status.currentPhase) return; + if(player.countMark('dcdouzhen')%2){ + if(get.color(card)=='red') return false; + } + }, + cardUsable:function(card,player){ + if(_status.currentPhase==player&&card.name=='sha'&&player.countMark('dcdouzhen')%2&&get.color(card)=='red'&&card.isCard) return Infinity; + } + } + }, + //公孙度 + dczhenze:{ + audio:2, + trigger:{player:'phaseDiscardBegin'}, + direct:true, + content:function(){ + 'step 0' + var getCond=(player)=>Math.sign(player.countCards('h')-Math.max(0,player.hp)); + var me=getCond(player); + var recovers=game.filterPlayer(current=>getCond(current)==me),loses=game.filterPlayer().removeArray(recovers); + event.recovers=recovers; event.loses=loses; + var list=[]; + if(loses.length) list.push('选项一'); + if(recovers.length) list.push('选项二'); + list.push('cancel2'); + var sign=[['≥','<'],['≠','='],['≤','>']]; + var choiceList=[ + '令所有手牌数'+sign[me+1][0]+'体力值的角色失去1点体力'+(loses.length?'('+get.translation(loses)+')':''), + '令所有手牌数'+sign[me+1][1]+'体力值的角色回复1点体力'+(recovers.length?'('+get.translation(recovers)+')':'') + ]; + if(!loses.length) choiceList[0]=''+choiceList[0]+''; + if(!recovers.length) choiceList[1]=''+choiceList[1]+''; + player.chooseControl(list).set('choiceList',choiceList).set('prompt',get.prompt('dczhenze')).set('ai',()=>_status.event.choice).set('choice',(()=>{ + var effect=0; + if(list.length==2){ + if(list.contains('选项一')){ + loses.forEach(i=>effect+=get.effect(i,{name:'losehp'},player,player)); + if(effect>0) return '选项一'; + }else{ + recovers.forEach(i=>effect+=get.recoverEffect(i,player,player)); + if(effect>0) return '选项二'; + } + }else{ + loses.forEach(i=>effect-=get.effect(i,{name:'losehp'},player,player)); + recovers.forEach(i=>effect+=get.recoverEffect(i,player,player)); + if(effect>0) return '选项二'; + return '选项一'; + } + })()); + 'step 1' + if(result.control=='cancel2'){ + event.finish(); + } + else { + var lose=result.control=='选项一',targets=event[lose?'loses':'recovers']; + player.logSkill('dczhenze',targets); + for(var i of targets){ + i[lose?'loseHp':'recover'](); + } + } + } + }, + dcanliao:{ + audio:2, + enable:'phaseUse', + filter:function(event,player){ + if((player.getStat().skill.dcanliao||0)>=game.countPlayer(current=>current.group=='qun')) return false; + return true; + }, + filterTarget:function(card,player,target){ + return target.countCards('he'); + }, + content:function(){ + 'step 0' + player.choosePlayerCard(target,'he',true).set('filterButton',function(button){ + var player=_status.event.player,card=button.link; + if(get.owner(card)==player){ + var mod=game.checkMod(card,player,'unchanged','cardChongzhuable',player); + if(mod!='unchanged') return mod; + } + return true; + }).set('ai',function(card){ + if(get.attitude(_status.event.player,_status.event.getParent().target)>=0) return -get.buttonValue(card); + return get.buttonValue(card); + }); + 'step 1' + if(result.bool){ + target.loseToDiscardpile(result.links); + target.draw(); + } + } + }, + //王烈 + dcchongwang:{ + audio:2, + trigger:{global:'useCard'}, + direct:true, + filter:function(event,player){ + if(player==event.player) return false; + var type=get.type(event.card); + if(type!='basic'&&type!='trick') return false; + var history=game.getAllGlobalHistory('useCard'); + var index=history.indexOf(event); + if(index>0) return history[index-1].player==player; + return false; + }, + content:function(){ + 'step 0' + var source=trigger.player; + var list=[['exclude','令'+get.translation(trigger.card)+'无效']]; + var cards=trigger.cards.filterInD(); + if(source.isIn()&&cards.length>0) list.push(['gain','令'+get.translation(source)+'收回'+get.translation(cards)]); + player.chooseButton([ + get.prompt('dcchongwang',source), + [list,'textbutton'], + 'noforcebutton', + ]).set('ai',function(button){ + var player=_status.event.player,choice=button.link; + var evt=_status.event.getTrigger(); + if(choice=='exclude'){ + var effect=0; + if(!evt.targets.length&&get.info(evt.card,false).notarget) effect-=get.effect(evt.player,evt.card,evt.player,player); + for(var i of evt.targets){ + effect-=get.effect(i,evt.card,evt.player,player); + } + return effect; + } + else{ + var cards=evt.cards.filterInD(); + return get.value(cards,evt.player)*get.attitude(player,evt.player); + } + return 0; + }) + 'step 1' + if(result.bool){ + if(!event.isMine()&&!event.isOnline()) game.delayx(); + } + else event.finish(); + 'step 2' + if(result.bool){ + player.logSkill('dcchongwang',trigger.player); + if(result.links[0]=='gain'){ + trigger.player.gain(trigger.cards.filterInD(),'gain2'); + } + else{ + trigger.targets.length=0; + trigger.all_excluded=true; + game.log(trigger.card,'被无效了'); + } + } + }, + ai:{ + threaten:3.5, + directHit_ai:true, + }, + }, + dchuagui:{ + audio:2, + trigger:{player:'phaseUseBegin'}, + direct:true, + filter:function(event,player){ + return game.hasPlayer(function(current){ + return current!=player&¤t.countCards('he')>0; + }); + }, + content:function(){ + 'step 0' + var min=Math.max.apply(Math,game.filterPlayer().map(function(current){ + return 1+current.getFriends().length; + })); + var max=Math.min(min,game.countPlayer(function(current){ + return current!=player&¤t.countCards('he')>0; + })); + player.chooseTarget(get.prompt('dchuagui'),'令至多'+get.cnNumber(max)+'名角色进行囚徒困境选择',[1,max],function(card,player,target){ + return target!=player&&target.countCards('he')>0; + }).set('animate',false).set('ai',function(target){ + return -get.attitude(_status.event.player,target); + }); + 'step 1' + if(result.bool){ + player.logSkill('dchuagui'); + event.players=result.targets.slice(0); + event._global_waiting=true; + } + else event.finish(); + 'step 2' + var send=function(source){ + var next=game.createEvent('dchuagui_choose',false); + next.player=game.me; + next.source=source; + next.setContent(lib.skill.dchuagui.contentx); + game.resume(); + }; + var sendback=function(result,player){ + if(!Array.isArray(result)){ + result=[ + Math.random()<0.5?'仅展示牌':'交出牌', + player.getCards('he').randomGet() + ]; + } + event.results.push([player,result]); + }; + event.ai_targets=[]; + event.results=[]; + var players=game.filterPlayer(function(current){ + return current!=player; + }).sortBySeat(); + var time=10000; + if(lib.configOL&&lib.configOL.choose_timeout) time=parseInt(lib.configOL.choose_timeout)*1000; + for(var i=0;iget.value(b,target)-get.value(a,target)); + var choice='仅展示牌',card=hs[0]; + if(att<-2&&get.value(card,target)<=5) choice='交出牌'; + sendback([choice,card],target); + if(!event.ai_targets.length){ + clearInterval(event.interval); + if(event.withai) game.resume(); + } + },_status.connectMove?750:75); + },500) + } + 'step 3' + if(event.withme){ + if(_status.connectMode) game.me.unwait(result,game.me); + else{ + if(!Array.isArray(result)){ + result=[ + Math.random()<0.5?'仅展示牌':'交出牌', + player.getCards('he').randomGet() + ]; + } + event.results.push([player,result]); + } + } + 'step 4' + if(event.withol&&!event.resultOL){ + game.pause(); + } + 'step 5' + if(event.ai_targets.length>0){ + event.withai=true; + game.pause(); + } + 'step 6' + delete event._global_waiting; + for(var i of game.players) i.hideTimer(); + event.videoId=lib.status.videoId++; + game.broadcastAll(function(name,id,results){ + var dialog=ui.create.dialog(name+'发动了技能【化归】','hidden','forcebutton'); + dialog.videoId=id; + dialog.classList.add('scroll1'); + dialog.classList.add('scroll2'); + dialog.classList.add('fullwidth'); + dialog.buttonss=[]; + + var list=['仅展示牌的玩家','交出牌的玩家'] + for(var i=0;i'+list[i]+''); + var buttons=ui.create.div('.buttons',dialog.content); + dialog.buttonss.push(buttons); + buttons.classList.add('popup'); + buttons.classList.add('guanxing'); + } + dialog.open(); + + var getx=function(){ + var item=results.shift(); + var card=item[1][1],index=item[1][0]=='仅展示牌'?0:1; + var button=ui.create.button(card,'card',dialog.buttonss[index]); + button.querySelector('.info').innerHTML=(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); + }(item[0])); + if(results.length>0) setTimeout(getx,500); + } + setTimeout(getx,500); + },get.translation(player),event.videoId,event.results.slice(0)); + game.delay(0,2000+event.results.length*500) + 'step 7' + game.broadcastAll('closeDialog',event.videoId); + var shown=[],given=[]; + for(var i of event.results){ + (i[1][0]=='仅展示牌'?shown:given).push(i); + } + var list=given.length>0?given:shown; + var cards=[],targets=[]; + for(var i of list){ + cards.push(i[1][1]); + targets.push(i[0]); + i[0].$give(i[1][1],player); + } + player.line(targets); + player.gain(cards,'give'); + 'step 8' + game.delayx(); + }, + contentx:function(){ + 'step 0' + event._global_waiting=true; + event.result=['仅展示牌',player.getCards('he').randomGet()]; + var str=get.translation(source); + player.chooseControl('仅展示牌','交出牌').set('choiceList',[ + '仅展示一张牌。但如果所有人都选择了仅展示,则'+str+'获得这张牌', + '将一张牌交给'+str, + ]).set('_global_waiting',true); + 'step 1' + event.result[0]=result.control; + player.chooseCard('he',true).set('_global_waiting',true); + 'step 2' + event.result[1]=result.cards[0]; + }, + }, //穆顺 dcjinjian:{ audio:2, @@ -442,7 +2397,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var bool1=result.bool; var bool2=(get.name(result.player,player)=='sha'||get.name(result.target,target)=='sha'); if(bool1||bool2){ - if(player.canUse('sha',target)){ + if(player.canUse('sha',target,false)){ player.useCard({name:'sha',isCard:true},target,false); if(!bool1||!bool2) event.finish(); } @@ -613,7 +2568,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var eff1=0,eff2=0; for(var i of zheng) eff1+=get.value(i,target); for(var i of fu) eff2+=(1-get.value(i,target)); - return -att*Math.max(effe1,eff2); + return -att*Math.max(eff1,eff2); }); } else{ @@ -762,6 +2717,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(state1=='none') return; if(lib.skill.dcyaoyi.getZhuanhuanji(target,true)==state1) return false; }, + cardSavable:function(card,player,target){ + if(player==target||!game.hasPlayer(function(current){ + return current.hasSkill('dcyaoyi'); + })) return; + var state1=lib.skill.dcyaoyi.getZhuanhuanji(player,true); + if(state1=='none') return; + if(lib.skill.dcyaoyi.getZhuanhuanji(target,true)==state1) return false; + }, }, }, }, @@ -2121,7 +4084,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ popup:false, onremove:true, filter:function(event,player){ - var type=get.type(event.card,false); + var type=get.type(event.card,null,false); return type=='basic'||type=='trick'; }, content:function(){ @@ -2722,6 +4685,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ player.choosePlayerCard(target,true,'he',[1,target.maxHp],'选择'+get.translation(target)+'的至多'+get.cnNumber(target.maxHp)+'张牌'); 'step 1' if(result.bool){ + player.showCards(result.cards,get.translation(player)+'对'+get.translation(target)+'发动了【索粮】') var cards=result.cards.filter(function(card){ var suit=get.suit(card,target); if(suit!='heart'&&suit!='club') return false; @@ -3654,7 +5618,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ mark:true, marktext:'☯', intro:{ - content:(storage)=>('转换技。出牌阶段限一次,你可以'+(storage?'摸X张牌':'弃置至多X张牌')+'(X为你的体力上限且至多为5)。'), + content:(storage)=>('转换技。出牌阶段限一次,你可以'+(storage?'弃置至多X张牌':'摸X张牌')+'(X为你的体力上限且至多为5)。'), }, ai:{ threaten:1.6, @@ -3678,15 +5642,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, filter:function(event,player){ return lib.skill.dcpingxi.getNum()>0&&game.hasPlayer(function(current){ - return current!=player&¤t.countCards('he')>0; + return current!=player; }); }, content:function(){ 'step 0' var num=lib.skill.dcpingxi.getNum(); player.chooseTarget([1,num],function(card,player,target){ - return target!=player&&target.countCards('he')>0; - },get.prompt('dcpingxi'),'选择至多'+get.cnNumber(num)+'名有牌的其他角色。弃置这些角色的各一张牌,然后视为对这些角色使用一张【杀】').set('ai',function(target){ + return target!=player; + },get.prompt('dcpingxi'),'选择至多'+get.cnNumber(num)+'名其他角色。弃置这些角色的各一张牌,然后视为对这些角色使用一张【杀】').set('ai',function(target){ var player=_status.event.player; return get.effect(target,{name:'guohe_copy2'},player,player)+get.effect(target,{name:'sha'},player,player); }); @@ -4088,7 +6052,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var storage=player.storage.caiyi_info[event.index]; for(var i=0;i<4;i++){ if(storage.contains(i)){ - choiceList[i]=(''+choiceList[i]+''); + choiceList[i]=(''+choiceList[i]+''); } else if(!lib.skill.caiyi.filterx[event.index][i](target)||(i==3&&!storage.length)){ choiceList[i]=(''+choiceList[i]+''); @@ -4165,7 +6129,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var storage=player.storage.caiyi_info[event.index]; for(var i=0;i<4;i++){ if(storage.contains(i)){ - choiceList[i]=(''+choiceList[i]+''); + choiceList[i]=(''+choiceList[i]+''); } else if(!lib.skill.caiyi.filterx[event.index][i](target)||(i==3&&!storage.length)){ choiceList[i]=(''+choiceList[i]+''); @@ -5998,8 +7962,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(!storage||!storage[0].length) return false; if(player.getStat('skill').dunshi) return false; switch(tag){ - case 'respondSha': return (_status.event.type!='phase'||(player==game.me||player.isUnderControl()||player.isOnline()))&&storage[0].contains('sha'); - case 'respondShan': return storage[0].contains('shan'); + case 'respondSha':return (_status.event.type!='phase'||(player==game.me||player.isUnderControl()||player.isOnline()))&&storage[0].contains('sha'); + case 'respondShan':return storage[0].contains('shan'); case 'save': if(arg==player&&storage[0].contains('jiu')) return true; return storage[0].contains('tao'); @@ -7608,7 +9572,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ usable:2, content:function(){ 'step 0' - player.chooseToDiscard('he',[2,Infinity],get.prompt('reshejian',trigger.player),'
    弃置至少两张手牌,然后选择一项:
    ⒈弃置其等量的牌。⒉对其造成1点伤害。
    ').set('',function(card){ + player.chooseToDiscard('he',[2,Infinity],get.prompt('reshejian',trigger.player),'
    弃置至少两张手牌,然后选择一项:
    ⒈弃置其等量的牌。⒉对其造成1点伤害。
    ').set('ai',function(card){ if(_status.event.goon&&ui.selected.cards.length<2) return 5.6-get.value(card); return 0; }).set('goon',function(){ @@ -15614,11 +17578,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' player.judge(function(card){ var type=get.subtype(card); - return ['equip1','equip4','equip3','equip6'].contains(type)?6: -6; + return ['equip1','equip4','equip3','equip6'].contains(type)?6:-6; switch(type){ - case 'equip': return 4; - case 'trick': return -4; - default: return 0; + case 'equip':return 4; + case 'trick':return -4; + default:return 0; } }).judge2=function(result){ return result.bool; @@ -20058,6 +22022,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dingshangwan:'丁尚涴,又名丁夫人。东汉末年权臣曹操的原配夫人。丁尚涴嫁给曹操时,曹操另有刘夫人,生长子曹昂和清河长公主。后刘夫人早亡,曹昂便由丁尚涴抚养,丁尚涴视其为己出。
    建安二年(公元197年),曹昂随军出征宛城,战死沙场。丁尚涴悲痛欲绝,口出怨言数落曹操,又悲啼不止。曹操恼羞成怒,将其打发回了娘家。不久之后,心生悔意的曹操亲自前往丁家,打算将丁尚涴接回。然而丁尚涴却只是闷头织布。曹操手抚其背,说:“顾我共载归乎!”丁尚涴依旧不理不睬。曹操走到门口,又回过头:“得无尚可邪!”然而依旧得不到回应,只得感叹:“真诀矣。”于是与之和离,并让丁家允许她改嫁,丁家不敢为之。
    丁尚涴去世后,卞夫人请求曹操安葬她,于是葬在许城以南。后来曹操病重,知道自己时日无多,临终前叹道:“我前后行意,于心未曾有所负也。假令死而有灵,子修若问‘我母所在’,我将何辞以答!”', luyi:'卢弈,游卡桌游《三国杀》中虚构的人物。设定为卢植之女。至情至孝。其人虽体弱多病,然而却天资聪颖,有过目不忘、出口成章之才。先后拜蔡邕、王允等人为师,纳诸家之长融会贯通。又善弈棋,曾与当时国手山子道、王九真、郭凯对弈,不分胜负,一时之间名动京华,被太学征辟为女博士,世人皆称其为“女先生”。董卓之乱后,卢弈随父亲隐居乡野,创办上谷学宫,邀天下士子论道。相传诸葛亮、曹植、荀彧、张昭等人都参加过。各学派在卢弈主持下论道,成为一时佳话。后上谷学宫遭曹魏所忌,卢弈为请求曹叡赦免学宫,与司马懿对无棋之弈。卢弈破指凝血,以血为棋,终胜司马懿半子。但却旧伤复发,局终而陨。', wangwei:'王威,东汉末年人。荆州刺史刘表部下将领,乃忠义之士。刘表亡后,刘琮投降曹操,王威向刘琮献计偷袭曹操,刘琮没有采纳。小说《三国演义》中,曹操表刘琮为青州刺史,使远离故乡,时只有王威追随,曹操复遣于禁追杀刘琮等人,王威亦于乱军中殉主。', + wanglie:'王烈,字彦方(141-219),平原县(今山东德州平原)人。生于永和六年(公元141年),卒于建安二十三年(公元218年)。王烈少时师从陈寔,闻名遐迩。董卓作乱时避乱辽东,并多次拒绝曹操的聘请。七十八岁时病死于辽东。', + zhaozhi:'赵直,豫章人,生于公元175年左右,死年不详,字不详。为蜀汉官方占梦者。曾预言蒋琬位极人臣、何祗48岁去世、魏延离死期不远,后果一一应验。', + liyixiejing:'李异(生卒年不详),三国时吴将领,曾随陆逊大败蜀军。谢旌(生卒年不详),三国时期吴国名将,会稽(今属浙江)人。建安末,李异与谢旌率水陆三千,破蜀将詹晏、陈凤。刘备领兵攻孙权,李异与陆议等屯巫、秭归,为蜀将所破。黄武元年(222),陆逊破刘备于猇亭,他追踪蜀军,屯驻南山。建安二十四年,陆逊击败关羽后,遣李异、谢旌二人将水陆军三千,进攻蜀将詹晏、陈凤。李异率水军,谢旌率陆军,于险要之地设防,击败詹晏,生擒陈凤。其后进攻房陵太守邓辅、南乡太守郭睦,大破之。又攻秭归大姓文布、邓凯等所合夷兵数千人,大胜,文布、邓凯落荒而逃。在《三国演义》中,两人为孙桓麾下部将,皆有“万夫不当之勇”。刘备攻吴时,谢旌迎战张苞,不敌败走。李异接战,被关兴所斩。次日,谢旌于乱军中被张苞一矛刺死。', + panghui:'庞会,(214—?),三国时期曹魏名将,庞德之子。曹丕即位后,思庞德忠烈,遂赐庞会等兄弟四人爵关内侯,邑各百户。庞会勇烈,有先父之风,官至中尉将军,封列侯。', + chenjiao:'陈矫(?-237年7月11日),字季弼,广陵郡东阳县(治今安徽省天长市西北,今地属江苏省如皋市)人。三国时期曹魏名臣。陈矫本姓刘,因过继与母族而改姓陈。早年避乱江东,后广陵太守陈登请为功曹。曹操辟为丞相掾属,迁任相县令,转任征南长史。又为彭城、乐陵太守,迁任魏郡西部都尉。曹操东征,拜丞相长史,转西曹属、尚书。曹丕称帝,领吏部事,封高陵亭侯,迁尚书令。明帝继位后,进爵东乡侯,后转侍中,加光禄大夫,又拜司徒。景初元年(237年),陈矫去世,谥贞侯。', + shiyi:'是仪(生卒年不详),本名氏仪,字子羽,北海郡营陵县(今山东昌乐)人,三国时期吴国官员。仕东汉、东吴两朝,早年曾在本县营陵县及本郡北海郡任官,后在东吴历任骑都尉、忠义校尉、裨将军、偏将军、侍中、中执法、尚书仆射等官。先封都亭侯,后进封都乡侯。年八十一岁时病逝,死前要求节葬。', + sunlang:'孙狼(生卒年不详),东汉末农民起义军首领。建安二十三年(218)陆浑(今河南嵩县东北)县长张固发民服徭役,百姓惶俱,狼等乘机发动起义,杀县主簿,攻破县城,后南下投奔蜀将关羽。', + dongguiren:'董贵人(?—200年),父董承,汉献帝刘协妃嫔之一。董贵人父亲被曹操所杀,自己也受牵连。董贵人虽有身孕,汉献帝数次为她向曹操求情,仍被杀。', + zhujianping: '朱建平(生卒年不详),汉末三国时期沛国(今安徽省)人。精通相术,于街巷之间为人相面,效果非常灵验。三国时,他在街头巷尾给人们看相。曹丕做五官将时,请他看相,朱建平说:将军寿命80,40会有小难,愿您多多保护。 又说曹彪:您居于自己的封国,到57当遭兵灾,要好好提防此事。 结果曹丕40去世,曹彪57岁时,犯了与王凌合谋罪,被赐死。他的妙算,都这么准确,即使是唐举,许负也比不上。时人将他与平原郡相士管公明并称为“朱”、“管”。', + yuanji:'袁氏(生卒年不详),汝南郡汝阳县(今河南商水)人,袁术之女,孙权妃嫔。袁夫人出身世家大族汝南袁氏,其父袁术败亡后,入吴宫拜为夫人,以节操品行着称。', + chengbing:'程秉(生卒年不详),字德枢,汝南南顿(今河南项城西)人。三国时期吴国官员、儒学家。起初跟随郑玄,后来北方荒乱而到交州避难,期间与刘熙考究五经大义,因此通绕五经。后来交趾太守士燮任命程秉为长史。吴大帝孙权听闻程秉的名声,于是以礼征召他,程秉到后,被任命为太子太傅。黄武四年(225年),孙权为太子孙登娶周瑜之女为妃,程秉以太常身份于吴郡迎候,孙权亲身上程秉的船,可见孙权对他的极为礼待。程秉又教诲孙登对婚后相处要尊重儒家礼教。后来因病在任职期间逝世。著有《周易摘》、《尚书驳》、《论语弼》,凡三万余言。', + gongsundu:'公孙度 (?-204年),字升济,辽东襄平(今辽宁辽阳)人,东汉末年辽东太守。少随父迁居玄菟郡。初为玄菟小吏,建宁二年(169年),继升尚书郎、冀州刺史,后被免官。初平元年(190年),经同乡徐荣推荐,被董卓任命为辽东太守。公孙度到任后,厉行严刑峻法,打击豪强势力,使令行政通,羽翼渐丰。不久,中原地区董卓乱起,各地军阀无暇东顾。公孙度趁机自立为辽东侯、平州牧。继则东伐高句丽,西击乌桓,南取辽东半岛,越海取胶东半岛北部东莱诸县,开疆扩土;又招贤纳士,设馆开学,广招流民,威行海外,俨然以辽东王自居。建安九年(204年)病逝,子公孙康继承其位由于公孙度的锐意进取和苦心经营,使辽东地区在汉末三国的战乱年代,获得了暂时的安宁,推动了当地生产技术和封建文化的发展。', + leibo:'雷薄(生卒年不详),本为东汉末年袁术麾下部将。离开称帝后昏庸奢侈的袁术,与陈兰一起占据嵩山为山贼。后来袭击兵败的袁术,抢夺财宝。同时在《三国演义》中也有出场。', }, characterTitle:{ wulan:'#b对决限定武将', @@ -20123,7 +22100,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var list=['sha','shan','tao','jiu']; for(var i of list){ var strx='【'+get.translation(i)+'】'; - if(!info||!info[0].contains(i)) strx=(''+strx+''); + if(!info||!info[0].contains(i)) strx=(''+strx+''); str+=strx; if(i!='jiu') str+='/'; } @@ -20145,8 +22122,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var list1=['⒈回复X点体力。','⒉摸X张牌。','⒊复原武将牌。','⒋随机执行一个已经移除过的阴选项;'],list2=['⒈受到X点伤害。','⒉弃置X张牌。','⒊翻面并横置。','⒋随机执行一个已经移除过的阳选项。'],str1='阴:',str2='阳:'; for(var i=0;i<4;i++){ var clip1=list1[i],clip2=list2[i]; - if(list[0].contains(i)) clip1=(''+clip1+''); - if(list[1].contains(i)) clip2=(''+clip2+''); + if(list[0].contains(i)) clip1=(''+clip1+''); + if(list[1].contains(i)) clip2=(''+clip2+''); str1+=clip1; str2+=clip2; } @@ -20162,6 +22139,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(player.storage.dcshoutan) return '转换技。出牌阶段限一次,阴:你可以弃置一张不为黑色的手牌。阳:你可以弃置一张黑色手牌。'; return '转换技。出牌阶段限一次,阴:你可以弃置一张不为黑色的手牌。阳:你可以弃置一张黑色手牌。'; }, + dcdouzhen:function(player){ + var str='锁定技。①转换技。你的回合内,'; + if(player.countMark('dcdouzhen')%2) str+='阴:当你使用非转化且对应的实体牌为一张黑色基本牌的【决斗】时,你获得目标角色各一张牌并获得1枚“☯”;阳:当你使用或打出非转化且对应的实体牌为一张红色基本牌的【杀】时,你获得1枚“☯”。②若你的“☯”数为:偶数,你的黑色基本牌均视为【决斗】;奇数,你的红色基本牌均视为无次数限制的普【杀】。'; + else str+='阴:当你使用非转化且对应的实体牌为一张黑色基本牌的【决斗】时,你获得目标角色各一张牌并获得1枚“☯”;阳:当你使用或打出非转化且对应的实体牌为一张红色基本牌的【杀】时,你获得1枚“☯”。②若你的“☯”数为:偶数,你的黑色基本牌均视为【决斗】;奇数,你的红色基本牌均视为无次数限制的普【杀】。'; + return str; + }, }, perfectPair:{}, characterReplace:{ @@ -20198,9 +22181,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){ luotong:['luotong','dc_luotong'], mamidi:['mamidi','xin_mamidi'], dc_wangchang:['dc_wangchang','tw_wangchang'], - liuba:['dc_liuba','liuba'], + liuba:['ol_liuba','dc_liuba','liuba'], lvkuanglvxiang:['lvkuanglvxiang','dc_lvkuanglvxiang'], dc_huangquan:['dc_huangquan','xf_huangquan'], + yuejiu:['dc_yuejiu','yuejiu'], + hujinding:['dc_hujinding','hujinding'], + caosong:['caosong','sp_caosong'], }, translate:{ lijue:"李傕", @@ -21049,7 +23035,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ xianwang_info:'锁定技。若你有被废除的装备栏,则其他角色至你的距离+1;若废除的装备栏数大于2,则改为距离+2。', guanhai:'管亥', suoliang:'索粮', - suoliang_info:'每回合限一次。当你对其他角色造成伤害后,你可以选择其的至多X张牌(X为其体力上限且至多为5)。若这些牌中有♥或♣牌,则你获得这些牌;否则你弃置这些牌。', + suoliang_info:'每回合限一次。当你对其他角色造成伤害后,你可以选择并展示其的至多X张牌(X为其体力上限且至多为5)。若这些牌中有♥或♣牌,则你获得这些牌;否则你弃置这些牌。', qinbao:'侵暴', qinbao_info:'锁定技。当你使用【杀】或普通锦囊牌时,你令所有手牌数不小于你的角色不能响应此牌。', liuhui:'刘徽', @@ -21144,7 +23130,94 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcjinjian:'劲坚', dcjinjian_info:'①当你受到其他角色造成的伤害后或造成伤害后,你获得一枚“劲”。然后你可以和伤害来源拼点,若你赢,你恢复1点体力。②你的攻击范围+X(X为“劲”数)。', dcshizhao:'失诏', - dcshizhao_info:'锁定技。每回合限一次,当你于回合外失去手牌后,若你没有手牌,且你:有“劲”,则你移去一枚“劲”并摸两张牌;没有“劲”,则你本回合下一次受到的伤害+1。', + dcshizhao_info:'锁定技。每回合限一次,当你于回合外失去手牌后,若你没有手牌,且你:有“劲”,则你移去一枚“劲”并摸两张牌;没有“劲”,则你本回合下一次受到的伤害+1。', + wanglie:'王烈', + dcchongwang:'崇望', + dcchongwang_info:'其他角色使用基本牌或普通锦囊牌时,若你是本局游戏内上一张被使用的牌的使用者,则你可以选择一项:⒈令其收回此牌对应的所有实体牌;⒉取消此牌的所有目标。', + dchuagui:'化归', + dchuagui_info:'出牌阶段开始时,你可以选择至多X名有牌的其他角色(X为场上每个阵营中最大阵营的人数,且你的选择结果不展示)。这次角色同时选择一项:⒈交给你一张牌,⒉展示一张牌。若这些角色均选择选项二,则你获得所有展示牌。', + gongsundu:'公孙度', + dczhenze:'震泽', + dczhenze_info:'弃牌阶段开始时,你可以选择一项:1.令所有手牌数与体力值大小关系与你不同的角色失去1点体力;2.令所有手牌数和体力值关系与你相同的角色回复1点体力。', + dcanliao:'安辽', + dcanliao_info:'出牌阶段限X次(X为群势力角色数)。你可以重铸一名角色的一张牌。', + liyixiejing:'李异谢旌', + dcdouzhen:'斗阵', + dcdouzhen_info:'锁定技。①转换技。你的回合内,阴:当你使用非转化且对应的实体牌为一张黑色基本牌的【决斗】时,你获得目标角色各一张牌并获得1枚“☯”;阳:当你使用或打出非转化且对应的实体牌为一张红色基本牌的【杀】时,你获得1枚“☯”。②若你的“☯”数为:偶数,你的黑色基本牌均视为【决斗】;奇数,你的红色基本牌均视为无次数限制的普【杀】。', + dc_yuejiu:'乐就', + dccuijin:'催进', + dccuijin_info:'当你或你攻击范围内的角色使用【杀】时,你可以弃置一张牌,令此【杀】的伤害基数+1。然后当此杀被目标角色抵消或无效或防止伤害后,你摸一张牌,对使用者造成1点伤害。', + panghui:'庞会', + dcyiyong:'异勇', + dcyiyong_info:'每回合限两次。当你对其他角色造成伤害时,若你有牌,你可以与其同时弃置至少一张牌。若你以此法弃置的牌的点数之和:不大于其,你摸X张牌;不小于其,此伤害+1(X为其以此法弃置的牌数)。', + chenjiao:'陈矫', + dcxieshou:'协守', + dcxieshou_info:'每回合限一次。当一名角色受到伤害后,若你至其的距离不大于2,你可以令你的手牌上限-1,然后其选择一项:1.回复1点体力;2.复原,摸两张牌。', + dcqingyan:'清严', + dcqingyan_info:'每回合限两次。当你成为其他角色使用黑色牌的目标后,若你的手牌数:小于体力值,你可以将手牌补至体力上限;不小于体力值,你可以弃置一张牌令你的手牌上限+1。', + dcqizi:'弃子', + dcqizi_info:'锁定技。你不能对至其的距离大于2且正在进行濒死流程的角色使用【桃】。', + dc_hujinding:'胡金定', + dcdeshi:'仁释', + dcdeshi_info:'锁定技。当你受到【杀】的伤害时,若你已受伤,则你防止此伤害并令系统从弃牌堆/牌堆中检索一张【杀】,你获得此【杀】,然后减1点体力上限。', + dcwuyuan:'武缘', + dcwuyuan_info:'出牌阶段限一次。你可将一张【杀】交给一名其他角色,然后你回复1点体力,你与其各摸一张牌。若此【杀】为:红色【杀】,其回复1点体力;属性【杀】,其改为摸两张牌。', + zhaozhi:'赵直', + dctongguan:'统观', + dctongguan_info:'一名角色的第一个回合开始时,你为其选择一项属性(每个属性至多选两次,且仅对你可见)。', + dcmengjie:'梦解', + dcmengjie_info:'一名角色的结束阶段开始时,若其本回合完成了其〖统观〗属性,你执行对应效果:
  • 「武勇」造成伤害:对一名其他角色造成1点伤害;
  • 「刚硬」回复体力,或手牌数大于体力值:令一名其他角色回复1点体力;
  • 「多谋」于摸牌阶段外摸牌:摸两张牌;
  • 「果决」弃置或获得其他角色的牌:弃置一名角色区域内至多两张牌;
  • 「仁智」交给其他角色牌:令一名其他角色将手牌补至体力上限(至多摸五张)。', + dctongguan_wuyong:'武勇', + dctongguan_wuyong_info:'任务目标:造成伤害。', + dctongguan_gangying:'刚硬', + dctongguan_gangying_info:'任务目标:回复体力,或手牌数大于体力值。', + dctongguan_duomou:'多谋', + dctongguan_duomou_info:'任务目标:于摸牌阶段外摸牌。', + dctongguan_guojue:'果决', + dctongguan_guojue_info:'任务目标:弃置或获得其他角色的牌。', + dctongguan_renzhi:'仁智', + dctongguan_renzhi_info:'任务目标:交给其他角色牌。', + shiyi:'是仪', + dccuichuan:'榱椽', + dccuichuan_info:'出牌阶段限一次。你可以弃置一张手牌并选择一名角色,其随机使用牌堆里一张其空置装备栏对应副类别且其能对其使用的装备牌,你摸X张牌(X为其装备区里的牌数)。然后若其装备区里的牌数增加至四张,你失去〖榱椽〗,获得〖佐谏〗,且令其获得一个额外回合。', + dczhengxu:'正序', + dczhengxu_info:'每回合每项限一次。①当你受到伤害时,若你本回合失去过牌,你可以防止此伤害。②当你失去牌后,若你本回合受到过伤害,你可以摸等量的牌。', + dczuojian:'佐谏', + dczuojian_info:'出牌阶段结束时,若你于此阶段使用过的牌数不小于体力值,你可以选择一项:1.令装备区牌数多于你的角色各摸一张牌;2.弃置装备区牌数少于你的角色各一张手牌。', + zhujianping:'朱建平', + dcxiangmian:'相面', + dcxiangmian_info:'其他角色的结束阶段,你可以判定。然后你不能再对其发动此技能,其获得以下效果:当其使用第X张结果的花色的牌后(X为结果的点数),其失去等同于其体力值的体力。', + dctianji:'天机', + dctianji_info:'锁定技。当判定牌进入弃牌堆后,系统从牌堆随机选出分别与该牌类型、花色和点数相同的牌各一张。若未选出任何符合条件的牌或你的手牌数为全场唯一最多,你摸一张牌。否则你获得这些牌。', + yuanji:'袁姬', + dcmengchi:'蒙斥', + dcmengchi_info:'锁定技。若你未于当前回合获得过牌:你不能使用牌;当你横置前,取消之;当你受到无属性伤害后,回复1点体力。', + dcjiexing:'节行', + dcjiexing_info:'当你受到伤害后、失去体力后或回复体力后,你可以摸一张牌,且此牌不计入本回合的手牌上限。', + dongguiren:'董贵人', + dclianzhi:'连枝', + dclianzhi_info:'①游戏开始时,你选择一名其他角色(仅你可见)。②每回合限一次。当你进入濒死状态时,若〖连枝①〗角色存活,你回复1点体力并与其各摸一张牌。③当〖连枝①〗角色死亡后,你可以与一名其他角色各获得〖受责〗,且其获得与你拥有的等量枚“绞”标记(至少获得1枚)。', + dclingfang:'凌芳', + dclingfang_info:'锁定技。当其他角色使用黑色牌结算结束后,若你是此牌的目标,或你使用黑色牌结算结束后,若你不是此牌目标,你获得1枚“绞”。', + dcfengying:'风影', + dcfengying_info:'①一名角色的回合开始时,你记录弃牌堆中所有黑色基本牌或黑色普通锦囊牌的牌名。②每回合限一次。你可以将一张点数不大于“绞”数的手牌当做任意一张〖风影①〗记录中的牌使用。', + dcshouze:'受责', + dcshouze_info:'锁定技。结束阶段,若你有“绞”,你弃1枚“绞”,随机获得弃牌堆中的一张黑色牌,失去1点体力。', + sunlang:'孙狼', + dctingxian:'铤险', + dctingxian_info:'每回合限一次。当你使用【杀】指定最后一个目标后,你可以摸X张牌,然后令此【杀】对其中至多X个目标无效(X为你装备区的牌数)。', + dcbenshi:'奔矢', + dcbenshi_info:'锁定技。①你的攻击范围+1。②你的攻击范围基数不受装备区内武器牌的影响。③由你使用的【杀】的牌面信息中的“使用目标”产生的规则改为“攻击范围内的所有角色”。', + chengbing:'程秉', + dcjingzao:'经造', + dcjingzao_info:'出牌阶段每名角色限一次。你可以选择一名其他角色并亮出牌堆顶三张牌,其选择一项:1.弃置一张牌名与这些牌的其中一张牌名相同的牌,然后你〖经造〗本回合亮出的牌数+1;2.令你随机获得这些牌中每种牌名的牌各一张,然后你本回合不能再发动〖经造〗。', + dcenyu:'恩遇', + dcenyu_info:'锁定技。当你成为其他角色使用牌的目标后,若你本回合成为过此牌名的牌的目标,此牌对你无效。', + leibo:'雷薄', + dcsilve:'私掠', + dcsilve_info:'游戏开始时,你选择一名其他角色(对其他角色不可见),称为“私掠”角色。然后你获得以下效果:①当“私掠”角色造成伤害后,若你本回合未因此效果得到过受伤角色的牌,你可以获得受伤角色一张牌;②当“私掠”角色受到其他角色造成的伤害后,若伤害来源存活,你须对伤害来源使用一张【杀】(无距离限制),否则你随机弃置一张手牌。', + dcshuaijie:'衰劫', + dcshuaijie_info:'限定技。出牌阶段,若你的体力值与装备区里的牌数均大于“私掠”角色,或没有角色有“私掠”,你可以减1点体力上限。然后若存活角色中:有“私掠”角色,你获得“私掠”角色至多三张牌;没有“私掠”角色,你从牌堆/弃牌堆随机获得三张类型各不同的牌。最后将你的“私掠”角色改为你。', sp_whlw:"文和乱武", sp_zlzy:"逐鹿中原", diff --git a/character/standard.js b/character/standard.js index ef74d3031..2de3a83fc 100755 --- a/character/standard.js +++ b/character/standard.js @@ -775,6 +775,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, locked:false, audio:2, + audioname:['sb_zhenji'], enable:['chooseToRespond','chooseToUse'], filterCard:function(card){ return get.color(card)=='black'; @@ -2420,10 +2421,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ if(event.name=='dying') return true; if(event.giver!=player) return false; if(event.name=='gain'){ - return event.getg(event.player).length>0; + return event.player!=player&&event.getg(event.player).length>0; } return game.hasPlayer(function(current){ - return event.getg(current).length>0; + return current!=player&&event.getg(current).length>0; }); }, direct:true, @@ -2431,7 +2432,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ 'step 0' if(trigger.name!='loseAsync') event.targets=[trigger.player]; else event.targets=game.filterPlayer(function(current){ - return trigger.getg(current).length>0; + return current!=player&&trigger.getg(current).length>0; }); 'step 1' var target=event.targets.shift(); diff --git a/character/tw.js b/character/tw.js index c95ef3abf..6aaac9f8e 100644 --- a/character/tw.js +++ b/character/tw.js @@ -889,7 +889,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, order:10, result:{ - player:1, + player:function(player){ + if(_status.event.dying) return get.attitude(player,_status.event.dying)>0; + return 1; + }, }, }, group:['twyingji_wuxie'], diff --git a/character/xinghuoliaoyuan.js b/character/xinghuoliaoyuan.js index 98a4fb438..5d1268590 100755 --- a/character/xinghuoliaoyuan.js +++ b/character/xinghuoliaoyuan.js @@ -1529,7 +1529,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ "weilu_effect2":"威虏", "weilu_effect2_info":"", "xinfu_zengdao":"赠刀", - "xinfu_zengdao_info":"限定技,出牌阶段,你可以将装备牌内的任意张牌置于一名其他角色的武将牌旁,称之为「刀」。该角色造成伤害时,其须移去一张「刀」,然后此伤害+1。", + "xinfu_zengdao_info":"限定技,出牌阶段,你可以将装备区内的任意张牌置于一名其他角色的武将牌旁,称之为“刀”。该角色造成伤害时,其须移去一张“刀”,然后此伤害+1。", "xinfu_zengdao2":"赠刀", "xinfu_zengdao2_info":"", "xinfu_guanwei":"观微", diff --git a/character/yijiang.js b/character/yijiang.js index 36a68c5cd..fa741cedd 100755 --- a/character/yijiang.js +++ b/character/yijiang.js @@ -13,10 +13,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yijiang_2015:['caoxiu','caorui','zhongyao','xiahoushi','liuchen','zhangyi','zhuzhi','quancong','sunxiu','gongsunyuan','guotufengji'], yijiang_2016:['guohuanghou','sunziliufang','huanghao','liyan','sundeng','cenhun','zhangrang','liuyu'], yijiang_2017:['xinxianying','jikang','wuxian','qinmi','xuezong','xushi','caiyong','caojie'], - yijiang_2022:['lukai','kebineng','zhugeshang'], + yijiang_2022:['lukai','kebineng','zhugeshang','liwan'], }, }, character:{ + liwan:['female','wei',3,['liandui','biejun']], zhugeshang:['male','shu',3,['sangu','yizu']], kebineng:['male','qun',4,['kousheng']], lukai:['male','wu',4,['lkbushi','lkzhongzhuang']], @@ -28,7 +29,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhangchunhua:['female','wei',3,['jueqing','shangshi']], caozhi:['male','wei',3,['luoying','jiushi']], caochong:['male','wei',3,['chengxiang','renxin']], - xunyou:['male','wei',3,['qice','zhiyu']], + xunyou:['male','wei',3,['qice','zhiyu'],['clan:颍川荀氏']], xin_xushu:['male','shu',3,['xinwuyan','xinjujian']], xin_masu:['male','shu',3,['olsanyao','rezhiman']], zhuran:['male','wu',4,['danshou']], @@ -103,6 +104,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ yujin:["male","wei",4,["yizhong"],[]], }, characterIntro:{ + liwan:'李婉(生卒年不详),字淑文,里居不详,贾充之妻,魏晋时期才女,约景元年间(260年前后)在世。著有《典戒》。《隋书·经籍志》载李婉有文集一卷,今失传。', zhugeshang:'诸葛尚(244年2月-263年11月),琅琊阳都(今山东沂南)人,诸葛瞻长子,诸葛亮之孙。诸葛尚博览兵书且精通武艺。炎兴元年(公元263年),出任先锋,抗拒魏国大将邓艾,与其父诸葛瞻同战死于绵竹,时年十九岁。', kebineng:'轲比能(?~235年),为中国三国时期的鲜卑首领之一。轲比能出身鲜卑支部,因他作战勇敢,执法公平,不贪财物,所以被鲜卑民众推举为大人。轲比能因其部落近塞,所以他抓住有利条件积极学习汉族先进技术和文化,促进了鲜卑族的进步和北方的民族融合。轲比能统率下的部众,战守有法,战斗力相当强大。自曹操北征后向曹氏进贡表示效忠。魏文帝时,轲比能受封附义王。轲比能在进行部落统一战争时,受魏国干涉,受沉重打击,于是对魏怀贰,献书魏帝表忠,以麻痹魏庭,使之放松警惕。此后,轲比能的部众变得强盛,控弦十余万骑,为害魏国边境。每次钞略得财物,轲比能都公开透明地均平分配,所以得部众死力,各部大人都敬畏之。实力强大后,他继续部落统一战争,于是威行诸部落,建立起强大的鲜卑族政权。深感威胁的魏国幽州刺史王雄派刺客韩龙将其刺杀,其政权立刻崩溃,鲜卑民族再次陷入混战。', lukai:'陆凯(198-269年),字敬风,吴郡吴县(今江苏省苏州市)人。三国时期吴国重臣,丞相陆逊的族侄,大司马陆抗的族兄。黄武年间,举孝廉出身,曾任永兴县长、诸暨县长,颇有治绩。拜建武都尉、儋耳太守,与聂友率军讨伐朱崖和儋耳,迁建武校尉。五凤二年(255年),讨斩零陵山贼陈毖,拜偏将军、巴丘督,册封都乡侯。迁武昌右部督,随军进入寿春。后拜荡魏将军,加号绥远将军。吴景帝孙休继位,拜征北将军、假节、领豫州牧。孙皓即位,迁任镇西大将军,都督巴丘,又领荆州牧,进封嘉兴侯。宝鼎元年(266年),迁左丞相。以正直及屡次劝谏孙皓而闻名。建衡元年(269年),去世,时年七十二。', @@ -201,6 +203,131 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhonghui:['jiangwei'], }, skill:{ + //李婉 + liandui:{ + audio:2, + trigger:{global:'useCard'}, + filter:function(event,player){ + var history=game.getAllGlobalHistory('useCard'); + var index=history.indexOf(event); + if(index<=0) return false; + var previous=history[index-1].player; + if(event.player==player&&previous!=player&&previous.isIn()) return true; + if(event.player!=player&&previous==player) return true; + return false; + }, + direct:true, + content:function(){ + 'step 0' + var history=game.getAllGlobalHistory('useCard'); + var index=history.indexOf(trigger); + var previous=history[index-1].player; + var user=trigger.player,target=previous; + event.user=user;event.target=target; + if(user){ + user.chooseBool('是否对'+get.translation(target)+'发动【联对】?','令'+get.translation(target)+'摸两张牌').set('ai',()=>_status.event.bool).set('bool',get.effect(target,{name:'wuzhong'},user,user)>0); + } + 'step 1' + if(result.bool){ + event.user.logSkill('liandui',target); + target.draw(2); + } + } + }, + biejun:{ + audio:2, + global:'biejun_give', + trigger:{player:'damageBegin4'}, + filter:function(event,player){ + return !player.hasSkill('biejun_used')&&player.countCards('h',card=>{ + return card.hasGaintag('biejun'); + })==0; + }, + prompt2:'翻面并防止此伤害', + check:function(event,player){ + return player.isTurnedOver()||event.num>=player.hp||get.distance(_status.currentPhase,player,'absolute')>=3; + }, + content:function(){ + player.addTempSkill('biejun_used'); + player.turnOver(); + trigger.cancel(); + }, + ai:{ + effect:{ + target:function(card,player,target){ + if(player.hasSkillTag('jueqing',false,target)) return [1,-2]; + if(get.tag(card,'damage')){ + if(player.getNext()==target&&lib.skill.biejun.filter(null,target)&&target.isTurnedOver()) return [0,1]; + } + } + } + }, + subSkill:{ + used:{charlotte:true}, + give:{ + audio:2, + enable:'phaseUse', + usable:1, + filter:function(event,player){ + if(!player.countCards('h')) return false; + var targets=game.filterPlayer(function(current){ + return current!=player&¤t.hasSkill('biejun'); + }); + if(!targets.length) return false; + return true; + }, + selectCard:1, + filterCard:true, + filterTarget:function(card,player,target){ + return target.hasSkill('biejun'); + }, + selectTarget:function(){ + var player=_status.event.player; + var targets=game.filterPlayer(function(current){ + return current!=player&¤t.hasSkill('biejun'); + }); + return targets.length>1?1:-1; + }, + complexSelect:true, + prompt:function(){ + var player=_status.event.player; + var targets=game.filterPlayer(function(current){ + return current!=player&¤t.hasSkill('biejun'); + }); + return '将一张手牌交给'+get.translation(targets)+(targets.length>1?'中的一人':''); + }, + position:'h', + discard:false, + lose:false, + delay:false, + check:function(card){ + var player=_status.event.player; + if(game.hasPlayer(function(current){ + return lib.skill.biejun_give.filterTarget(null,player,current)&&get.attitude(player,current)>0; + })){ + return 5-get.value(card); + } + return -get.value(card); + }, + content:function(){ + game.trySkillAudio('biejun',target); + player.give(cards,target).gaintag.add('biejun'); + target.addTempSkill('biejun_tag'); + }, + ai:{ + order:2, + result:{target:1}, + }, + }, + tag:{ + charlotte:true, + forced:true, + onremove:function(player){ + player.removeGaintag('biejun'); + } + } + } + }, //诸葛尚 sangu:{ audio:2, @@ -469,7 +596,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ trigger:{source:'damageSource'}, forced:true, filter:function(event,player){ - if(!event.card.storage||!event.card.storage.kousheng||event.getParent().type!='card') return false; + if(!event.card||!event.card.storage||!event.card.storage.kousheng||event.getParent().type!='card') return false; var target=event.player; return target.isIn()&&player.hasCard(function(card){ return card.hasGaintag('kousheng'); @@ -2337,11 +2464,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, fenli:{ audio:2, + audioname:['xin_zhuhuan'], group:['fenli_draw','fenli_use','fenli_discard'], subfrequent:['discard'], subSkill:{ draw:{ audio:'fenli', + audioname:['xin_zhuhuan'], trigger:{player:'phaseDrawBefore'}, prompt:'是否发动【奋励】跳过摸牌阶段?', filter:function(event,player){ @@ -2359,6 +2488,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, use:{ audio:'fenli', + audioname:['xin_zhuhuan'], trigger:{player:'phaseUseBefore'}, prompt:'是否发动【奋励】跳过出牌阶段?', filter:function(event,player){ @@ -2377,6 +2507,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, discard:{ audio:'fenli', + audioname:['xin_zhuhuan'], trigger:{player:'phaseDiscardBefore'}, prompt:'是否发动【奋励】跳过弃牌阶段?', frequent:true, @@ -10554,6 +10685,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ zhichi:{ audio:2, trigger:{player:'damageEnd'}, + audioname:['re_chengong'], forced:true, filter:function(event,player){ return _status.currentPhase!=player; @@ -12672,13 +12804,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){ caozhen:['re_caozhen','xin_caozhen','caozhen','old_caozhen'], wuyi:['re_wuyi','wuyi'], sunluban:['re_sunluban','xin_sunluban','sunluban'], - zhuhuan:['re_zhuhuan','zhuhuan','old_zhuhuan'], + zhuhuan:['re_zhuhuan','xin_zhuhuan','zhuhuan','old_zhuhuan'], caoxiu:['re_caoxiu','caoxiu','old_caoxiu'], xiahoushi:['re_xiahoushi','xiahoushi'], zhangyi:['re_zhangyi','zhangyi'], quancong:['old_quancong','re_quancong','xin_quancong','quancong'], sunxiu:['re_sunxiu','xin_sunxiu','sunxiu'], - zhuzhi:['zhuzhi','old_zhuzhi'], + zhuzhi:['zhuzhi','xin_zhuzhi','old_zhuzhi'], liuyu:['dc_liuyu','liuyu','ol_liuyu'], zhangrang:['zhangrang','ol_zhangrang','junk_zhangrang'], jikang:['re_jikang','jikang'], @@ -12693,6 +12825,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){ guohuanghou:['re_guohuanghou','guohuanghou'], liuchen:['re_liuchen','liuchen'], liufeng:['re_liufeng','liufeng'], + sundeng:['re_sundeng','sundeng'], + caiyong:['re_caiyong','caiyong'], + chengong:['re_chengong','chengong'], }, translate:{ old_huaxiong:'华雄', @@ -13293,6 +13428,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sangu_info:'出牌阶段结束时,你可以选择至多三个{【杀】或不为notarget或singleCard的普通锦囊牌}中的牌名,然后令一名其他角色记录这些牌名。该角色的下个出牌阶段开始时,其的手牌均视为其记录中的第一张牌直到此阶段结束,且当其使用或打出牌时,移除这些牌中的第一张牌。若你以此法选择过的牌名中包含你本阶段内未使用过的牌名,则你失去1点体力。', yizu:'轶祖', yizu_info:'锁定技。每回合限一次,当你成为【杀】或【决斗】的目标后,若你的体力值不大于使用者的体力值,则你回复1点体力。', + liwan:'李婉', + liandui:'联对', + liandui_info:'①当你使用牌时,若本局游戏内上一张被使用的牌的使用者不为你,你可以令其摸两张牌。②其他角色使用牌时,若本局游戏内上一张被使用的牌的使用者为你,其可以令你摸两张牌。', + biejun:'别君', + biejun_info:'①其他角色的出牌阶段限一次。其可以将一张手牌交给你。②每回合限一次。当你受到伤害时,若你手牌中没有本回合因〖别君①〗获得的牌,你可以翻面并防止此伤害。', yijiang_2011:'一将成名2011', yijiang_2012:'一将成名2012', diff --git a/game/asset.js b/game/asset.js index f383dcb4e..17b5a1484 100644 --- a/game/asset.js +++ b/game/asset.js @@ -1,5 +1,5 @@ window.noname_asset_list=[ - 'v1.9.118', + 'v1.9.120', 'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_online.mp3', 'audio/background/aozhan_rewrite.mp3', @@ -4773,69 +4773,26 @@ window.noname_asset_list=[ 'image/background/xinsha_bg.jpg', 'image/background/xiaowu_bg.jpg', - 'image/card/minguangkai.png', - 'image/card/db_atk1.jpg', - 'image/card/db_atk2.jpg', - 'image/card/db_def1.jpg', - 'image/card/db_def2.jpg', - 'image/card/pss_paper.png', - 'image/card/pss_scissor.png', - 'image/card/pss_stone.png', - 'image/card/pyzhuren_spade.png', - 'image/card/pyzhuren_heart.png', - 'image/card/pyzhuren_club.png', - 'image/card/pyzhuren_diamond.png', - 'image/card/pyzhuren_shandian.png', - 'image/card/monkey.png', - 'image/card/xuelunyang.png', - 'image/card/kuwu.png', - 'image/card/jiuwei.png', - 'image/card/mianju.png', - 'image/card/shoulijian.png', - 'image/card/rewrite_bagua.png', - 'image/card/rewrite_baiyin.png', - 'image/card/rewrite_lanyinjia.png', - 'image/card/rewrite_renwang.png', - 'image/card/rewrite_tengjia.png', - 'image/card/rewrite_zhuge.png', - 'image/card/group_wei.png', - 'image/card/group_shu.png', - 'image/card/group_wu.png', - 'image/card/group_qun.png', - 'image/card/group_key.png', - 'image/card/tunliang.png', - 'image/card/yuanjun.png', - 'image/card/kamome_suitcase.png', - 'image/card/miki_hydrogladiator.png', - 'image/card/miki_binoculars.png', - 'image/card/zhaoshu.png', - 'image/card/tiaojiyanmei.png', - 'image/card/binglinchengxiax.png', - 'image/card/dz_mantianguohai.png', - 'image/card/gx_chongyingshenfu.png', - 'image/card/gx_lingbaoxianhu.png', - 'image/card/gx_taijifuchen.png', - 'image/card/bintieshuangji.png', - 'image/card/sanlve.png', - 'image/card/zhaogujing.png', - 'image/card/changandajian_equip1.png', - 'image/card/lukai_club.png', - 'image/card/lukai_diamond.png', - 'image/card/lukai_heart.png', - 'image/card/lukai_spade.png', - 'image/card/dagongche.png', - 'image/card/handcard.png', - 'image/card/bagua.png', 'image/card/baihupifeng.png', 'image/card/baishouzhihu.png', + 'image/card/baiyidujiang.png', 'image/card/baiyin.png', 'image/card/bingliang.png', + 'image/card/binglinchengxia.png', + 'image/card/binglinchengxiax.png', 'image/card/bingpotong.png', + 'image/card/bintieshuangji.png', 'image/card/cangchizhibi.png', + 'image/card/caochuan.png', 'image/card/caochuanjiejian.png', 'image/card/caomu.png', 'image/card/caoyao.png', + 'image/card/changandajian_equip1.png', + 'image/card/cheliji_feilunzhanyu.png', + 'image/card/cheliji_sichengliangyu.png', + 'image/card/cheliji_tiejixuanyu.png', + 'image/card/chenghuodajie.png', 'image/card/chenhuodajie.png', 'image/card/chiling.png', 'image/card/chilongya.png', @@ -4843,17 +4800,36 @@ window.noname_asset_list=[ 'image/card/chiyuxi.png', 'image/card/chuansongmen.png', 'image/card/chunbing.png', + 'image/card/chuqibuyi.png', + 'image/card/cisha.png', 'image/card/cixiong.png', + 'image/card/dagongche.png', 'image/card/daihuofenglun.png', 'image/card/dawan.png', + 'image/card/db_atk1.jpg', + 'image/card/db_atk1_出阵迎战.jpg', + 'image/card/db_atk1_固守城池.jpg', + 'image/card/db_atk2.jpg', + 'image/card/db_atk2_拱卫中军.jpg', + 'image/card/db_atk2_突出重围.jpg', + 'image/card/db_def1.jpg', + 'image/card/db_def1_围城断粮.jpg', + 'image/card/db_def1_直取敌营.jpg', + 'image/card/db_def2.jpg', + 'image/card/db_def2_擂鼓进军.jpg', + 'image/card/db_def2_扰阵疲敌.jpg', 'image/card/diaobingqianjiang.png', 'image/card/diaohulishan.png', 'image/card/dilu.png', 'image/card/dinglanyemingzhu.png', 'image/card/dinvxuanshuang.png', + 'image/card/diqi.png', 'image/card/donghuangzhong.png', + 'image/card/dongzhuxianji.png', 'image/card/du.png', + 'image/card/duanjian.png', 'image/card/dunpaigedang.png', + 'image/card/dz_mantianguohai.png', 'image/card/fangtian.png', 'image/card/feibiao.png', 'image/card/feilongduofeng.png', @@ -4864,7 +4840,14 @@ window.noname_asset_list=[ 'image/card/fulei.png', 'image/card/fuxiqin.png', 'image/card/geanguanhuo.png', + 'image/card/gongshoujianbei.png', 'image/card/gouhunluo.png', + 'image/card/group_key.png', + 'image/card/group_qun.png', + 'image/card/group_shu.png', + 'image/card/group_wei.png', + 'image/card/group_wu.png', + 'image/card/guaguliaodu.png', 'image/card/guangshatianyi.png', 'image/card/guanshi.png', 'image/card/guding.png', @@ -4916,9 +4899,19 @@ window.noname_asset_list=[ 'image/card/gw_zirankuizeng.jpg', 'image/card/gw_zuihouyuanwang.jpg', 'image/card/gw_zumoshoukao.jpg', + 'image/card/gx_chongyingshenfu.png', + 'image/card/gx_lingbaoxianhu.png', + 'image/card/gx_taijifuchen.png', + 'image/card/gz_guguoanbang.png', + 'image/card/gz_haolingtianxia.png', + 'image/card/gz_kefuzhongyuan.png', + 'image/card/gz_wenheluanwu.png', 'image/card/hanbing.png', + 'image/card/handcard.png', 'image/card/haotianta.png', + 'image/card/heiguangkai.png', 'image/card/heilonglinpian.png', + 'image/card/hina_shenji.png', 'image/card/hongshui.png', 'image/card/hsbaowu_cangbaotu.jpg', 'image/card/hsbaowu_huangjinyuanhou.jpg', @@ -4974,6 +4967,7 @@ window.noname_asset_list=[ 'image/card/huoshaolianying.png', 'image/card/huxinjing.png', 'image/card/jiedao.png', + 'image/card/jiejia.png', 'image/card/jiguanfeng.png', 'image/card/jiguanshu.png', 'image/card/jiguantong.png', @@ -4983,12 +4977,20 @@ window.noname_asset_list=[ 'image/card/jinchan.png', 'image/card/jingfanma.png', 'image/card/jingleishan.png', + 'image/card/jinhe.png', 'image/card/jinlianzhu.png', + 'image/card/jintuiziru.png', 'image/card/jiu.png', + 'image/card/jiuwei.png', + 'image/card/jiwangkailai.png', 'image/card/juedou.png', 'image/card/jueying.png', + 'image/card/kaihua.png', + 'image/card/kamome_suitcase.png', + 'image/card/kano_paibingbuzhen.png', 'image/card/kongdongyin.png', 'image/card/kunlunjingc.png', + 'image/card/kuwu.png', 'image/card/langeguaiyi.png', 'image/card/lanyinjia.png', 'image/card/lebu.png', @@ -5003,13 +5005,23 @@ window.noname_asset_list=[ 'image/card/liuxinghuoyu.png', 'image/card/liyutang.png', 'image/card/longxugou.png', + 'image/card/lukai_club.png', + 'image/card/lukai_diamond.png', + 'image/card/lukai_heart.png', + 'image/card/lukai_spade.png', 'image/card/lulitongxin.png', + 'image/card/luojingxiashi.png', 'image/card/luyugeng.png', 'image/card/ly_piliche.png', 'image/card/mapodoufu.png', + 'image/card/mianju.png', 'image/card/mianlijinzhen.png', + 'image/card/miki_binoculars.png', + 'image/card/miki_hydrogladiator.png', + 'image/card/minguangkai.png', 'image/card/mizhilianou.png', 'image/card/molicha.png', + 'image/card/monkey.png', 'image/card/mtg_bingheyaosai.jpg', 'image/card/mtg_cangbaohaiwan.jpg', 'image/card/mtg_duzhao.jpg', @@ -5026,11 +5038,27 @@ window.noname_asset_list=[ 'image/card/muniu.png', 'image/card/mutoumianju.png', 'image/card/nanman.png', + 'image/card/numa.png', 'image/card/nvwashi.png', + 'image/card/nvzhuang.png', 'image/card/pangufu.png', 'image/card/pantao.png', + 'image/card/pss_paper.png', + 'image/card/pss_scissor.png', + 'image/card/pss_stone.png', + 'image/card/pyzhuren_club.png', + 'image/card/pyzhuren_diamond.png', + 'image/card/pyzhuren_heart.png', + 'image/card/pyzhuren_shandian.png', + 'image/card/pyzhuren_spade.png', 'image/card/qiankunbiao.png', 'image/card/qiankundai.png', + 'image/card/qiaosi_card1.png', + 'image/card/qiaosi_card2.png', + 'image/card/qiaosi_card3.png', + 'image/card/qiaosi_card4.png', + 'image/card/qiaosi_card5.png', + 'image/card/qiaosi_card6.png', 'image/card/qibaodao.png', 'image/card/qijia.png', 'image/card/qilin.png', @@ -5040,9 +5068,19 @@ window.noname_asset_list=[ 'image/card/qinglonglingzhu.png', 'image/card/qinglongzhigui.png', 'image/card/qingtuan.png', + 'image/card/qixingbaodao.png', + 'image/card/qizhengxiangsheng.png', 'image/card/renwang.png', + 'image/card/rewrite_bagua.png', + 'image/card/rewrite_baiyin.png', + 'image/card/rewrite_lanyinjia.png', + 'image/card/rewrite_renwang.png', + 'image/card/rewrite_tengjia.png', + 'image/card/rewrite_zhuge.png', 'image/card/sadengjinhuan.png', 'image/card/sanjian.png', + 'image/card/sanlve.png', + 'image/card/serafuku.png', 'image/card/sha.png', 'image/card/shan.png', 'image/card/shandian.png', @@ -5060,6 +5098,7 @@ window.noname_asset_list=[ 'image/card/shihuawuqi.png', 'image/card/shihuifen.png', 'image/card/shijieshu.png', + 'image/card/shoulijian.png', 'image/card/shuchui.png', 'image/card/shuijing_card.png', 'image/card/shuiyanqijun.png', @@ -5067,18 +5106,26 @@ window.noname_asset_list=[ 'image/card/shujinsan.png', 'image/card/shunshou.png', 'image/card/sifeizhenmian.png', + 'image/card/suijiyingbian.png', 'image/card/suolianjia.png', + 'image/card/taigongyinfu.png', 'image/card/taipingyaoshu.png', 'image/card/tanhuadong.png', 'image/card/tanshezhiren.png', 'image/card/tao.png', 'image/card/taoyuan.png', 'image/card/tengjia.png', + 'image/card/tianjitu.png', 'image/card/tianxianjiu.png', + 'image/card/tiaojiyanmei.png', 'image/card/tiesuo.png', 'image/card/tiesuo_mark.png', + 'image/card/tongque.png', 'image/card/toulianghuanzhu.png', + 'image/card/toushiche.png', 'image/card/tuhunsha.png', + 'image/card/tuixinzhifu.png', + 'image/card/tunliang.png', 'image/card/tuteng1.jpg', 'image/card/tuteng2.jpg', 'image/card/tuteng3.jpg', @@ -5091,9 +5138,12 @@ window.noname_asset_list=[ 'image/card/wanjian.png', 'image/card/wenhuangsan.png', 'image/card/wolong_card.png', + 'image/card/wufengjian.png', 'image/card/wugu.png', 'image/card/wuliu.png', + 'image/card/wutiesuolian.png', 'image/card/wuxie.png', + 'image/card/wuxinghelingshan.png', 'image/card/wuxingpan.png', 'image/card/wuzhong.png', 'image/card/wy_meirenji.png', @@ -5103,6 +5153,7 @@ window.noname_asset_list=[ 'image/card/xiaolicangdao.png', 'image/card/xiayuncailing.png', 'image/card/xietianzi.png', + 'image/card/xinge.png', 'image/card/xingjiegoutong.png', 'image/card/xingjunyan.png', 'image/card/xionghuangjiu.png', @@ -5111,18 +5162,26 @@ window.noname_asset_list=[ 'image/card/xuanwuzhihuang.png', 'image/card/xuanyuanjian.png', 'image/card/xuejibingbao.png', + 'image/card/xuelunyang.png', + 'image/card/yajiaoqiang.png', 'image/card/yangpijuan.png', 'image/card/yanjiadan_club.png', 'image/card/yanjiadan_diamond.png', 'image/card/yanjiadan_heart.png', 'image/card/yanjiadan_spade.png', + 'image/card/yexingyi.png', 'image/card/yihuajiemu.png', + 'image/card/yinfengjia.png', + 'image/card/yinfengyi.png', 'image/card/yinyueqiang.png', + 'image/card/yitianjian.png', 'image/card/yiyi.png', + 'image/card/yonglv.png', 'image/card/youdishenru.png', 'image/card/yougeng.png', 'image/card/yuanbaorou.png', 'image/card/yuanjiao.png', + 'image/card/yuanjun.png', 'image/card/yuansuhuimie.png', 'image/card/yuchandui.png', 'image/card/yuchangen.png', @@ -5138,792 +5197,126 @@ window.noname_asset_list=[ 'image/card/yuruyi.png', 'image/card/yuxi.png', 'image/card/zengbin.png', + 'image/card/zhadan.png', 'image/card/zhangba.png', + 'image/card/zhanxiang.png', + 'image/card/zhaogujing.png', 'image/card/zhaomingdan.png', + 'image/card/zhaoshu.png', + 'image/card/zheji.png', 'image/card/zhibi.png', 'image/card/zhiliaobo.png', 'image/card/zhiluxiaohu.png', 'image/card/zhuahuang.png', + 'image/card/zhuangshu_basic.png', + 'image/card/zhuangshu_equip.png', + 'image/card/zhuangshu_trick.png', 'image/card/zhufangshenshi.png', 'image/card/zhuge.png', + 'image/card/zhujinqiyuan.png', + 'image/card/zhulu_card.png', 'image/card/zhungangshuo.png', 'image/card/zhuque.png', 'image/card/zhuquezhizhang.png', 'image/card/zixin.png', 'image/card/ziyangdan.png', 'image/card/zong.png', - - 'image/card/caochuan.png', - 'image/card/jiejia.png', - 'image/card/jinhe.png', - 'image/card/kaihua.png', - 'image/card/numa.png', - 'image/card/nvzhuang.png', - 'image/card/wufengjian.png', - 'image/card/yajiaoqiang.png', - 'image/card/yexingyi.png', - 'image/card/yinfengjia.png', - 'image/card/zheji.png', - 'image/card/zhulu_card.png', - 'image/card/qiaosi_card1.png', - 'image/card/qiaosi_card2.png', - 'image/card/qiaosi_card3.png', - 'image/card/qiaosi_card4.png', - 'image/card/qiaosi_card5.png', - 'image/card/qiaosi_card6.png', - 'image/card/chuqibuyi.png', - 'image/card/dongzhuxianji.png', - 'image/card/heiguangkai.png', - 'image/card/suijiyingbian.png', - 'image/card/taigongyinfu.png', - 'image/card/tianjitu.png', - 'image/card/tongque.png', - 'image/card/wutiesuolian.png', - 'image/card/wuxinghelingshan.png', - 'image/card/zhujinqiyuan.png', - 'image/card/diqi.png', - 'image/card/gongshoujianbei.png', - 'image/card/jintuiziru.png', - 'image/card/jiwangkailai.png', - 'image/card/zhadan.png', - 'image/card/cheliji_feilunzhanyu.png', - 'image/card/cheliji_sichengliangyu.png', - 'image/card/cheliji_tiejixuanyu.png', - 'image/card/gz_guguoanbang.png', - 'image/card/gz_haolingtianxia.png', - 'image/card/gz_kefuzhongyuan.png', - 'image/card/gz_wenheluanwu.png', - 'image/card/baiyidujiang.png', - 'image/card/binglinchengxia.png', - 'image/card/luojingxiashi.png', - 'image/card/toushiche.png', - 'image/card/kano_paibingbuzhen.png', - 'image/card/qizhengxiangsheng.png', - 'image/card/chenghuodajie.png', - 'image/card/cisha.png', - 'image/card/duanjian.png', - 'image/card/guaguliaodu.png', - 'image/card/qixingbaodao.png', - 'image/card/serafuku.png', - 'image/card/tuixinzhifu.png', - 'image/card/xinge.png', - 'image/card/yinfengyi.png', - 'image/card/yitianjian.png', - 'image/card/yonglv.png', - 'image/card/zhanxiang.png', - 'image/card/zhuangshu_basic.png', - 'image/card/zhuangshu_trick.png', - 'image/card/zhuangshu_equip.png', - - 'image/character/guanhai.jpg', - 'image/character/huojun.jpg', - 'image/character/bianxi.jpg', - 'image/character/huzhao.jpg', - 'image/character/niufu.jpg', - 'image/character/re_liufeng.jpg', - 'image/character/re_sp_taishici.jpg', - 'image/character/sp_jiben.jpg', - 'image/character/shenpei.jpg', - 'image/character/re_menghuo.jpg', - 'image/character/re_zhurong.jpg', - 'image/character/diy_wenyang.jpg', - 'image/character/jsp_caoren.jpg', - 'image/character/old_caoren.jpg', - 'image/character/old_guanzhang.jpg', - 'image/character/old_huatuo.jpg', - 'image/character/old_zhangfei.jpg', - 'image/character/old_zhoutai.jpg', - 'image/character/wenyang.jpg', - 'image/character/re_wangyun.jpg', - 'image/character/key_yuri.jpg', - 'image/character/key_kyousuke.jpg', - 'image/character/key_lucia.jpg', - 'image/character/key_kagari.jpg', - 'image/character/re_yujin.jpg', - 'image/character/re_caopi.jpg', - 'image/character/re_dongzhuo.jpg', - 'image/character/re_sunjian.jpg', - 'image/character/ol_guansuo.jpg', - 'image/character/ol_guohuai.jpg', - 'image/character/ol_liaohua.jpg', - 'image/character/ol_manchong.jpg', - 'image/character/ol_xinxianying.jpg', - 'image/character/ol_yujin.jpg', - 'image/character/ol_zhangrang.jpg', - 'image/character/ol_zhuran.jpg', - 'image/character/ol_liuyu.jpg', - 'image/character/ol_wuyi.jpg', - 'image/character/guanlu.jpg', - 'image/character/gexuan.jpg', - 'image/character/re_huangzhong.jpg', - 'image/character/re_pangde.jpg', - 'image/character/re_weiyan.jpg', - 'image/character/re_xiahouyuan.jpg', - 'image/character/re_xiaoqiao.jpg', - 'image/character/re_xuhuang.jpg', - 'image/character/key_haruko.jpg', - 'image/character/hejin.jpg', - 'image/character/hansui.jpg', - 'image/character/niujin.jpg', - 'image/character/lisu.jpg', - 'image/character/re_zhangjiao.jpg', - 'image/character/zhangwen.jpg', - 'image/character/re_zuoci.jpg', - 'image/character/xinpi.jpg', - 'image/character/puyuan.jpg', - 'image/character/re_sunben.jpg', - 'image/character/re_zhangzhang.jpg', - 'image/character/re_liushan.jpg', - 'image/character/hujinding.jpg', - 'image/character/re_baosanniang.jpg', - 'image/character/re_dengai.jpg', - 'image/character/re_caiwenji.jpg', - 'image/character/re_jiangwei.jpg', - 'image/character/key_umi.jpg', - 'image/character/key_rei.jpg', - 'image/character/hhzz_kanade.jpg', - 'image/character/hhzz_shiona.jpg', - 'image/character/hhzz_takaramono1.jpg', - 'image/character/hhzz_takaramono2.jpg', - 'image/character/old_zhangxingcai.jpg', - 'image/character/key_komari.jpg', - 'image/character/xujing.jpg', - 'image/character/old_fuhuanghou.jpg', - 'image/character/old_caochong.jpg', - 'image/character/huaman.jpg', - 'image/character/re_zhanggong.jpg', - 'image/character/re_weiwenzhugezhi.jpg', - 'image/character/re_xugong.jpg', - 'image/character/yuantanyuanshang.jpg', - 'image/character/old_majun.jpg', - 'image/character/key_yukine.jpg', - 'image/character/old_guanqiujian.jpg', - 'image/character/old_huangfusong.jpg', - 'image/character/ol_liushan.jpg', - 'image/character/ol_yuanshao.jpg', - 'image/character/re_sunce.jpg', - 'image/character/ol_maliang.jpg', - 'image/character/ns_zhangwei.jpg', - 'image/character/jiakui.jpg', - 'image/character/re_gaoshun.jpg', - 'image/character/re_wuguotai.jpg', - 'image/character/re_xusheng.jpg', - 'image/character/zhangyì.jpg', - 'image/character/xin_xiahoudun.jpg', - 'image/character/key_yusa.jpg', - 'image/character/sp_gongsunzan.jpg', - 'image/character/sp_liuxie.jpg', - 'image/character/sp_simazhao.jpg', - 'image/character/sp_wangyuanji.jpg', - 'image/character/sp_xinxianying.jpg', - 'image/character/key_misa.jpg', - 'image/character/key_masato.jpg', - 'image/character/ol_xiahouyuan.jpg', - 'image/character/key_iwasawa.jpg', - 'image/character/key_kengo.jpg', - 'image/character/ol_sp_zhugeliang.jpg', - 'image/character/chendeng.jpg', - 'image/character/re_heqi.jpg', - 'image/character/re_zhangyi.jpg', - 'image/character/yangbiao.jpg', - 'image/character/re_guanqiujian.jpg', - 'image/character/ol_pangtong.jpg', - 'image/character/key_yui.jpg', - 'image/character/key_tsumugi.jpg', - 'image/character/key_yoshino.jpg', - 'image/character/gaolan.jpg', - 'image/character/key_harukakanata.jpg', - 'image/character/key_saya.jpg', - 'image/character/sp_shenpei.jpg', - 'image/character/sp_zhanghe.jpg', - 'image/character/xunchen.jpg', - 'image/character/key_inari.jpg', - 'image/character/key_shiina.jpg', - 'image/character/ns_chendao.jpg', - 'image/character/ol_zhangliao.jpg', - 'image/character/sunshao.jpg', - 'image/character/key_rin.jpg', - 'image/character/key_sasami.jpg', - 'image/character/key_sunohara.jpg', - 'image/character/ol_weiyan.jpg', - 'image/character/ol_xiaoqiao.jpg', - 'image/character/re_caozhi.jpg', - 'image/character/re_panfeng.jpg', - 'image/character/wangshuang.jpg', - 'image/character/yj_caoang.jpg', - 'image/character/dongcheng.jpg', - 'image/character/key_akane.jpg', - 'image/character/key_doruji.jpg', - 'image/character/key_riki.jpg', - 'image/character/key_yuiko.jpg', - 'image/character/re_liuzan.jpg', - 'image/character/re_caozhang.jpg', - 'image/character/re_chengpu.jpg', - 'image/character/re_guohuai.jpg', - 'image/character/re_liaohua.jpg', - 'image/character/re_lingtong.jpg', - 'image/character/re_quancong.jpg', - 'image/character/re_wuyi.jpg', - 'image/character/re_zhuran.jpg', - 'image/character/shen_caopi.jpg', - 'image/character/shen_zhenji.jpg', - 'image/character/yangyi.jpg', - 'image/character/yujin_yujin.jpg', - 'image/character/key_hinata.jpg', - 'image/character/key_hisako.jpg', - 'image/character/key_noda.jpg', - 'image/character/key_ayato.jpg', - 'image/character/key_nagisa.jpg', - 'image/character/key_tomoya.jpg', - 'image/character/key_ao.jpg', - 'image/character/key_yuzuru.jpg', - 'image/character/old_wangyun.jpg', - 'image/character/old_zhaoyun.jpg', - 'image/character/sp_key_kanade.jpg', - 'image/character/key_mio.jpg', - 'image/character/re_handang.jpg', - 'image/character/re_zhonghui.jpg', - 'image/character/xin_chengpu.jpg', - 'image/character/key_midori.jpg', - 'image/character/dengzhi.jpg', - 'image/character/zhengxuan.jpg', - 'image/character/key_kyoko.jpg', - 'image/character/key_shizuru.jpg', - 'image/character/ol_sunjian.jpg', - 'image/character/key_shiorimiyuki.jpg', - 'image/character/ol_huaxiong.jpg', - 'image/character/yj_xuhuang.jpg', - 'image/character/yj_zhanghe.jpg', - 'image/character/ol_pangde.jpg', - 'image/character/re_masu.jpg', - 'image/character/re_sunluban.jpg', - 'image/character/re_taishici.jpg', - 'image/character/xushao.jpg', - 'image/character/chunyuqiong.jpg', - 'image/character/lvkuanglvxiang.jpg', - 'image/character/re_sunluyu.jpg', - 'image/character/sp_xuyou.jpg', - 'image/character/xingdaorong.jpg', - 'image/character/key_kamome.jpg', - 'image/character/key_kud.jpg', - 'image/character/key_misuzu.jpg', - 'image/character/key_nao.jpg', - 'image/character/ns_caoshuang.jpg', - 'image/character/ns_huangchengyan.jpg', - 'image/character/ns_sunchensunjun.jpg', - 'image/character/ns_yuanxi.jpg', - 'image/character/yj_ganning.jpg', - 'image/character/yj_zhangliao.jpg', - 'image/character/key_miki.jpg', - 'image/character/key_shiki.jpg', - 'image/character/caiyang.jpg', - 'image/character/huban.jpg', - 'image/character/pujing.jpg', - 'image/character/leitong.jpg', - 'image/character/old_jiakui.jpg', - 'image/character/sp_sufei.jpg', - 'image/character/wulan.jpg', - 'image/character/ol_zhangchangpu.jpg', - 'image/character/re_jianyong.jpg', - 'image/character/sp_key_yuri.jpg', - 'image/character/xin_xusheng.jpg', - 'image/character/key_kaori.jpg', - 'image/character/key_shiori.jpg', - 'image/character/ol_dongzhuo.jpg', - 'image/character/caobuxing.jpg', - 'image/character/key_akiko.jpg', - 'image/character/re_maliang.jpg', - 'image/character/caoshuang.jpg', - 'image/character/furong.jpg', - 'image/character/key_abyusa.jpg', - 'image/character/re_bulianshi.jpg', - 'image/character/re_hanhaoshihuan.jpg', - 'image/character/re_liubiao.jpg', - 'image/character/re_panzhangmazhong.jpg', - 'image/character/xin_caozhang.jpg', - 'image/character/xin_gongsunzan.jpg', - 'image/character/xin_liaohua.jpg', - 'image/character/key_godan.jpg', - 'image/character/shen_diaochan.jpg', - 'image/character/key_yuu.jpg', - 'image/character/dingyuan.jpg', - 'image/character/re_liru.jpg', - 'image/character/re_manchong.jpg', - 'image/character/re_yufan.jpg', - 'image/character/sp_zhangliao.jpg', - 'image/character/xin_jianyong.jpg', - 'image/character/ol_yuanshu.jpg', - 'image/character/key_kotori.jpg', - 'image/character/key_ryoichi.jpg', - 'image/character/re_caoxiu.jpg', - 'image/character/re_hejin.jpg', - 'image/character/re_sunxiu.jpg', - 'image/character/xin_baosanniang.jpg', - 'image/character/key_jojiro.jpg', - 'image/character/junk_zhangrang.jpg', - 'image/character/key_shiroha.jpg', - 'image/character/ns_caimao.jpg', - 'image/character/caoxing.jpg', - 'image/character/ns_jiaxu.jpg', - 'image/character/liubian.jpg', - 'image/character/ns_fanchou.jpg', - 'image/character/ns_lijue.jpg', - 'image/character/ns_zhangji.jpg', - 'image/character/simashi.jpg', - 'image/character/xin_zhuran.jpg', - 'image/character/yanghuiyu.jpg', - 'image/character/key_shizuku.jpg', - 'image/character/mini_lvbu.jpg', - 'image/character/mini_sunquan.jpg', - 'image/character/mini_zhugeliang.jpg', - 'image/character/mini_zuoci.jpg', - 'image/character/mini_zhangchunhua.jpg', - 'image/character/mini_jiangwei.jpg', - 'image/character/mini_diaochan.jpg', - 'image/character/key_hiroto.jpg', - 'image/character/xin_lingtong.jpg', - 'image/character/xin_liubiao.jpg', - 'image/character/re_xinxianying.jpg', - 'image/character/jin_zhangchunhua.jpg', - 'image/character/dongxie.jpg', - 'image/character/jin_simayi.jpg', - 'image/character/liuhong.jpg', - 'image/character/ol_dingyuan.jpg', - 'image/character/re_hansui.jpg', - 'image/character/wangrong.jpg', - 'image/character/zhujun.jpg', - 'image/character/hanfu.jpg', - 'image/character/db_key_hina.jpg', - 'image/character/re_quyi.jpg', - 'image/character/hucheer.jpg', - 'image/character/xin_hansui.jpg', - 'image/character/duyu.jpg', - 'image/character/jin_simashi.jpg', - 'image/character/jin_simazhao.jpg', - 'image/character/jin_wangyuanji.jpg', - 'image/character/jin_xiahouhui.jpg', - 'image/character/zhanghuyuechen.jpg', - 'image/character/zhangling.jpg', - 'image/character/xin_zhangfei.jpg', - 'image/character/junk_simayi.jpg', - 'image/character/huaxin.jpg', - 'image/character/key_sakuya.jpg', - 'image/character/re_fazheng.jpg', - 'image/character/re_fuhuanghou.jpg', - 'image/character/wolongfengchu.jpg', - 'image/character/guozhao.jpg', - 'image/character/key_chihaya.jpg', - 'image/character/key_rumi.jpg', - 'image/character/key_youta.jpg', - 'image/character/gongsunkang.jpg', - 'image/character/xin_fuhuanghou.jpg', - 'image/character/xin_guohuai.jpg', - 'image/character/xin_panzhangmazhong.jpg', - 'image/character/mini_lvmeng.jpg', - 'image/character/boss_zhaoyun.jpg', - 'image/character/re_chunyuqiong.jpg', - 'image/character/ns_caoanmin.jpg', - 'image/character/ol_dengai.jpg', - 'image/character/re_caozhen.jpg', - 'image/character/re_gongsunyuan.jpg', - 'image/character/luyusheng.jpg', - 'image/character/ns_luyusheng.jpg', - 'image/character/sp_chenzhen.jpg', - 'image/character/sp_sunshao.jpg', - 'image/character/sp_wangcan.jpg', - 'image/character/sp_xunchen.jpg', - 'image/character/liuqi.jpg', - 'image/character/mengda.jpg', - 'image/character/mifangfushiren.jpg', - 'image/character/tangzi.jpg', - 'image/character/key_yukito.jpg', - 'image/character/fanyufeng.jpg', - 'image/character/ol_lisu.jpg', - 'image/character/zhaozhong.jpg', - 'image/character/caosong.jpg', - 'image/character/re_taoqian.jpg', - 'image/character/re_zhangchunhua.jpg', - 'image/character/xin_handang.jpg', - 'image/character/zongyu.jpg', - 'image/character/key_ushio.jpg', - 'image/character/feiyi.jpg', - 'image/character/luotong.jpg', - 'image/character/sp_bianfuren.jpg', - 'image/character/sp_duyu.jpg', - 'image/character/jin_yanghuiyu.jpg', - 'image/character/noname.jpg', - 'image/character/noname_machao.png', - 'image/character/noname_sunce.png', - 'image/character/simazhou.jpg', - 'image/character/nanhualaoxian.jpg', - 'image/character/key_asara.jpg', - 'image/character/key_kotomi.jpg', - 'image/character/ns_chengpu.jpg', - 'image/character/re_zhoucang.jpg', - 'image/character/sp_fuhuanghou.jpg', - 'image/character/sp_fuwan.jpg', - 'image/character/sp_jiben.jpg', - 'image/character/xiahoujie.jpg', - 'image/character/ruanyu.jpg', - 'image/character/dongzhao.jpg', - 'image/character/gz_liuqi.jpg', - 'image/character/gz_re_xushu.jpg', - 'image/character/gz_shixie.jpg', - 'image/character/gz_tangzi.jpg', - 'image/character/gz_wujing.jpg', - 'image/character/gz_yanbaihu.jpg', - 'image/character/gz_zhanglu.jpg', - 'image/character/sp_mifuren.jpg', - 'image/character/sp_xinpi.jpg', - 'image/character/wujing.jpg', - 'image/character/cheliji.jpg', - 'image/character/panshu.jpg', - 'image/character/shibao.jpg', - 'image/character/weiguan.jpg', - 'image/character/zhangmiao.jpg', - 'image/character/huangzu.jpg', - 'image/character/ns_chentai.jpg', - 'image/character/ns_huangwudie.jpg', - 'image/character/ns_sunyi.jpg', - 'image/character/ns_zhangning.jpg', - 'image/character/ns_yanghu.jpg', - 'image/character/re_chenqun.jpg', - 'image/character/gz_miheng.jpg', - 'image/character/key_kyouko.jpg', - 'image/character/key_yuuki.jpg', - 'image/character/re_niujin.jpg', - 'image/character/duanwei.jpg', - 'image/character/huangchengyan.jpg', - 'image/character/key_tenzen.jpg', - 'image/character/ol_jiangwei.jpg', - 'image/character/ol_zhurong.jpg', - 'image/character/re_guotufengji.jpg', - 'image/character/shen_guojia.jpg', - 'image/character/zhongyan.jpg', - 'image/character/jsp_liubei.jpg', - 'image/character/liangxing.jpg', - 'image/character/sp_kongrong.jpg', - 'image/character/wangfuzhaolei.jpg', - 'image/character/wangling.jpg', - 'image/character/zhouchu.jpg', - 'image/character/zhouqun.jpg', - 'image/character/key_kotarou.jpg', - 'image/character/re_dongcheng.jpg', - 'image/character/re_guanping.jpg', - 'image/character/re_hucheer.jpg', - 'image/character/sp_mifangfushiren.jpg', - 'image/character/tangji.jpg', - 'image/character/yangwan.jpg', - 'image/character/zhangheng.jpg', - 'image/character/key_kyou.jpg', - 'image/character/ol_huaxin.jpg', - 'image/character/gaogan.jpg', - 'image/character/caizhenji.jpg', - 'image/character/shen_taishici.jpg', - 'image/character/sp_huaxin.jpg', - 'image/character/sp_xujing.jpg', - 'image/character/xiangchong.jpg', - 'image/character/xin_zhoucang.jpg', - 'image/character/duxi.jpg', - 'image/character/heyan.jpg', - 'image/character/key_mia.jpg', - 'image/character/liuba.jpg', - 'image/character/longyufei.jpg', - 'image/character/qiuliju.jpg', - 'image/character/re_caifuren.jpg', - 'image/character/re_dongbai.jpg', - 'image/character/wenqin.jpg', - 'image/character/pengyang.jpg', - 'image/character/tw_dongzhao.jpg', - 'image/character/tw_gexuan.jpg', - 'image/character/liuzhang.jpg', - 'image/character/qiaogong.jpg', - 'image/character/sp_yanghu.jpg', - 'image/character/sp_zhangwen.jpg', - 'image/character/xin_caifuren.jpg', - 'image/character/xin_guyong.jpg', - 'image/character/zhangzhongjing.jpg', - 'image/character/re_guyong.jpg', - 'image/character/re_zoushi.jpg', - 'image/character/xin_zhonghui.jpg', - 'image/character/caoanmin.jpg', - 'image/character/gz_dengzhi.jpg', - 'image/character/re_panshu.jpg', - 'image/character/zhanghu.jpg', - 'image/character/key_kano.jpg', - 'image/character/duosidawang.jpg', - 'image/character/jiachong.jpg', - 'image/character/wuban.jpg', - 'image/character/yuejiu.jpg', - 'image/character/gz_xiahouba.jpg', - 'image/character/ol_lusu.jpg', - 'image/character/re_jiaxu.jpg', - 'image/character/tw_zhaoxiang.jpg', - 'image/character/yuejiu.jpg', - 'image/character/db_wenyang.jpg', - 'image/character/gz_panjun.jpg', - 'image/character/gz_pengyang.jpg', - 'image/character/gz_wenqin.jpg', - 'image/character/gz_xf_sufei.jpg', - 'image/character/gz_xuyou.jpg', - 'image/character/gz_zhonghui.jpg', - 'image/character/gz_zhuling.jpg', - 'image/character/qiaozhou.jpg', - 'image/character/shen_xunyu.jpg', - 'image/character/xin_caozhen.jpg', - 'image/character/xin_sunluban.jpg', - 'image/character/ol_dengzhi.jpg', - 'image/character/dufuren.jpg', - 'image/character/lvlingqi.jpg', - 'image/character/ol_wangrong.jpg', - 'image/character/fuqian.jpg', - 'image/character/gz_gongsunyuan.jpg', - 'image/character/gz_huangzu.jpg', - 'image/character/gz_liuba.jpg', - 'image/character/gz_simazhao.jpg', - 'image/character/gz_zhugeke.jpg', - 'image/character/re_nanhualaoxian.jpg', - 'image/character/shen_sunce.jpg', - 'image/character/sp_chendong.jpg', - 'image/character/sp_zongyu.jpg', - 'image/character/sunchen.jpg', - 'image/character/tw_fuwan.jpg', - 'image/character/yuanhuan.jpg', - 'image/character/zhouyi.jpg', - 'image/character/yangyan.jpg', - 'image/character/yangzhi.jpg', - 'image/character/zuofen.jpg', - 'image/character/re_kanze.jpg', - 'image/character/liuyong.jpg', - 'image/character/re_xunchen.jpg', - 'image/character/tongyuan.jpg', - 'image/character/tw_yujin.jpg', - 'image/character/wanniangongzhu.jpg', - 'image/character/zhangning.jpg', - 'image/character/mayuanyi.jpg', - 'image/character/re_wangyi.jpg', - 'image/character/simafu.jpg', - 'image/character/sp_gaolan.jpg', - 'image/character/sp_huaman.jpg', - 'image/character/sp_wangshuang.jpg', - 'image/character/sunyi.jpg', - 'image/character/yanpu.jpg', - 'image/character/fengfangnv.jpg', - 'image/character/hanmeng.jpg', - 'image/character/ol_bianfuren.jpg', - 'image/character/ol_yangyi.jpg', - 'image/character/sp_cuiyan.jpg', - 'image/character/sp_jiangqing.jpg', - 'image/character/sp_jiangwan.jpg', - 'image/character/sp_zhangchangpu.jpg', - 'image/character/sunhanhua.jpg', - 'image/character/xinping.jpg', - 'image/character/yj_caocao.jpg', - 'image/character/caojinyu.jpg', - 'image/character/ol_dongzhao.jpg', - 'image/character/sp_ol_zhanghe.jpg', - 'image/character/tw_hejin.jpg', - 'image/character/tw_hucheer.jpg', - 'image/character/tw_mayunlu.jpg', - 'image/character/tw_re_caohong.jpg', - 'image/character/xin_yufan.jpg', - 'image/character/xinchang.jpg', - 'image/character/xuangongzhu.jpg', - 'image/character/liucheng.jpg', - 'image/character/re_chendeng.jpg', - 'image/character/re_xiahoushi.jpg', - 'image/character/sp_huangfusong.jpg', - 'image/character/sp_lvfan.jpg', - 'image/character/sp_yangwan.jpg', - 'image/character/xin_jushou.jpg', - 'image/character/yj_huangzhong.jpg', - 'image/character/db_key_liyingxia.jpg', - 'image/character/re_pangdegong.jpg', - 'image/character/sp_maojie.jpg', - 'image/character/sp_zhujun.jpg', - 'image/character/wangtao.jpg', - 'image/character/wangyue.jpg', - 'image/character/wuyan.jpg', - 'image/character/xin_sunxiu.jpg', - 'image/character/ol_chendeng.jpg', - 'image/character/ol_xuhuang.jpg', - 'image/character/ol_zhuling.jpg', - 'image/character/re_sunyi.jpg', - 'image/character/tianyu.jpg', - 'image/character/fanjiangzhangda.jpg', - 'image/character/diy_hanlong.jpg', - 'image/character/re_guohuanghou.jpg', - 'image/character/re_madai.jpg', - 'image/character/tw_caocao.jpg', - 'image/character/tw_huojun.jpg', - 'image/character/tw_liuhong.jpg', - 'image/character/tw_zangba.jpg', - 'image/character/zhaoyan.jpg', - 'image/character/fengxi.jpg', - 'image/character/gz_fengxi.jpg', - 'image/character/key_erika.jpg', - 'image/character/key_satomi.jpg', - 'image/character/re_dengzhi.jpg', - 'image/character/re_miheng.jpg', - 'image/character/re_zhangbao.jpg', - 'image/character/tw_chengpu.jpg', - 'image/character/tw_zhangmancheng.jpg', - 'image/character/xin_wuguotai.jpg', - 'image/character/dc_xushu.jpg', - 'image/character/jin_yanghu.jpg', - 'image/character/peixiu.jpg', - 'image/character/qinghegongzhu.jpg', - 'image/character/re_zhanghe.jpg', - 'image/character/sp_jianggan.jpg', - 'image/character/xin_gaoshun.jpg', - 'image/character/haomeng.jpg', - 'image/character/mamidi.jpg', - 'image/character/re_fengfangnv.jpg', - 'image/character/tw_caozhao.jpg', - 'image/character/tw_guohuai.jpg', - 'image/character/wufan.jpg', - 'image/character/yanfuren.jpg', - 'image/character/dc_jiben.jpg', - 'image/character/jin_jiachong.jpg', - 'image/character/licaiwei.jpg', - 'image/character/tw_wangcan.jpg', - 'image/character/tw_wangchang.jpg', - 'image/character/tw_wujing.jpg', - 'image/character/caomao.jpg', - 'image/character/dc_gaolan.jpg', - 'image/character/dc_luotong.jpg', - 'image/character/dc_zhuling.jpg', - 'image/character/guanning.jpg', - 'image/character/ol_caiwenji.jpg', - 'image/character/shen_jiangwei.jpg', - 'image/character/tengyin.jpg', - 'image/character/dc_bulianshi.jpg', - 'image/character/dc_huangchengyan.jpg', - 'image/character/jin_guohuai.jpg', - 'image/character/laiyinger.jpg', - 'image/character/old_yangyan.jpg', - 'image/character/old_yangzhi.jpg', - 'image/character/sp_menghuo.jpg', - 'image/character/tengfanglan.jpg', - 'image/character/tenggongzhu.jpg', - 'image/character/tw_puyangxing.jpg', - 'image/character/tw_tianyu.jpg', - 'image/character/caimaozhangyun.jpg', - 'image/character/ol_puyuan.jpg', - 'image/character/ruiji.jpg', - 'image/character/wangxiang.jpg', - 'image/character/weizi.jpg', - 'image/character/yanrou.jpg', - 'image/character/zhangyao.jpg', - 'image/character/re_jushou.jpg', - 'image/character/sb_huangzhong.jpg', - 'image/character/sb_huaxiong.jpg', - 'image/character/sb_yujin.jpg', - 'image/character/shen_machao.jpg', - 'image/character/shen_sunquan.jpg', - 'image/character/dc_gongsunzan.jpg', - 'image/character/dc_huangzu.jpg', - 'image/character/dc_yanghu.jpg', - 'image/character/ns_ruanji.jpg', - 'image/character/ns_zanghong.jpg', - 'image/character/re_duji.jpg', - 'image/character/re_liuchen.jpg', - 'image/character/caohua.jpg', - 'image/character/dc_liuyu.jpg', - 'image/character/ns_limi.jpg', - 'image/character/ol_xunyu.jpg', - 'image/character/qinyilu.jpg', - 'image/character/ruanhui.jpg', - 'image/character/xin_mamidi.jpg', - 'image/character/xin_quancong.jpg', - 'image/character/zhangxuan.jpg', - 'image/character/dc_jiling.jpg', - 'image/character/dc_sunru.jpg', - 'image/character/dc_wangchang.jpg', - 'image/character/fengfang.jpg', - 'image/character/jin_zhouchu.jpg', - 'image/character/ns_zhonglimu.jpg', - 'image/character/tw_shen_guanyu.jpg', - 'image/character/zhangxun.jpg', - 'image/character/zhaoang.jpg', - 'image/character/zhaoyǎn.jpg', - 'image/character/caoxiancaohua.jpg', - 'image/character/dc_liuba.jpg', - 'image/character/key_seira.jpg', - 'image/character/lukai.jpg', - 'image/character/prp_zhugeliang.jpg', - 'image/character/xiahoulingnv.jpg', - 'image/character/dc_caiyang.jpg', - 'image/character/dc_lvkuanglvxiang.jpg', - 'image/character/dengzhong.jpg', - 'image/character/dukui.jpg', - 'image/character/key_kiyu.jpg', - 'image/character/liuhui.jpg', - 'image/character/ol_dianwei.jpg', - 'image/character/wangyan.jpg', - 'image/character/xiahouxuan.jpg', - 'image/character/zhangfen.jpg', - 'image/character/chengui.jpg', - 'image/character/dc_huangquan.jpg', - 'image/character/dc_huban.jpg', - 'image/character/dc_liru.jpg', - 'image/character/dingshangwan.jpg', - 'image/character/junk_sunquan.jpg', - 'image/character/kebineng.jpg', - 'image/character/quanhuijie.jpg', - 'image/character/re_zhuhuan.jpg', - 'image/character/yinfuren.jpg', - 'image/character/clan_wuban.jpg', - 'image/character/clan_wuxian.jpg', - 'image/character/dc_liuye.jpg', - 'image/character/dc_zhaoyǎn.jpg', - 'image/character/luyi.jpg', - 'image/character/shen_zhangfei.jpg', - 'image/character/wangwei.jpg', - 'image/character/zhugeshang.jpg', - 'image/character/mushun.jpg', - + + 'image/character/ahuinan.jpg', 'image/character/baiwuchang.jpg', 'image/character/baosanniang.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/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/chengong.jpg', 'image/character/chengpu.jpg', 'image/character/chengyu.jpg', + 'image/character/chenjiao.jpg', 'image/character/chenlin.jpg', 'image/character/chenqun.jpg', + 'image/character/chunyuqiong.jpg', + 'image/character/clan_wuban.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/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_gaolan.jpg', + 'image/character/dc_gongsunzan.jpg', + 'image/character/dc_huangchengyan.jpg', + 'image/character/dc_huangzu.jpg', + 'image/character/dc_hujinding.jpg', + 'image/character/dc_jiben.jpg', + 'image/character/dc_jiling.jpg', + 'image/character/dc_liuba.jpg', + 'image/character/dc_liuye.jpg', + 'image/character/dc_liuyu.jpg', + 'image/character/dc_luotong.jpg', + 'image/character/dc_lvkuanglvxiang.jpg', + 'image/character/dc_sunru.jpg', + 'image/character/dc_wangchang.jpg', + 'image/character/dc_xushu.jpg', + 'image/character/dc_yanghu.jpg', + 'image/character/dc_yuejiu.jpg', + 'image/character/dc_zhaoyǎn.jpg', + 'image/character/dc_zhuling.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/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', @@ -5932,6 +5325,7 @@ window.noname_asset_list=[ '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', @@ -5940,16 +5334,37 @@ window.noname_asset_list=[ 'image/character/diy_zhenji.jpg', 'image/character/diy_zhouyu.jpg', 'image/character/dongbai.jpg', + 'image/character/dongcheng.jpg', + 'image/character/dongguiren.jpg', + 'image/character/dongxie.jpg', 'image/character/dongyun.jpg', + 'image/character/dongzhao.jpg', 'image/character/dongzhuo.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/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/fuwan.jpg', 'image/character/ganfuren.jpg', 'image/character/ganning.jpg', + 'image/character/gaogan.jpg', + 'image/character/gaolan.jpg', 'image/character/gaoshun.jpg', + 'image/character/gexuan.jpg', 'image/character/gjqt_aruan.jpg', 'image/character/gjqt_bailitusu.jpg', 'image/character/gjqt_beiluo.jpg', @@ -5968,8 +5383,13 @@ window.noname_asset_list=[ '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/guanping.jpg', 'image/character/guanqiujian.jpg', 'image/character/guansuo.jpg', @@ -5982,6 +5402,7 @@ window.noname_asset_list=[ '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', @@ -6036,53 +5457,86 @@ window.noname_asset_list=[ '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_dengai.jpg', + 'image/character/gz_dengzhi.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_guojia.jpg', 'image/character/gz_hetaihou.jpg', 'image/character/gz_huangyueying.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_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_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_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_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/gw_yisilinni.jpg', - 'image/character/gw_zhangyujushou.jpg', - 'image/character/gw_zhuoertan.jpg', 'image/character/hanba.jpg', 'image/character/handang.jpg', + 'image/character/hanfu.jpg', 'image/character/hanhaoshihuan.jpg', + 'image/character/hanmeng.jpg', + 'image/character/hansui.jpg', + 'image/character/haomeng.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', @@ -6206,14 +5660,25 @@ window.noname_asset_list=[ 'image/character/hs_zhihuanhua.jpg', 'image/character/hs_zhishigushu.jpg', 'image/character/hs_zhouzhuo.jpg', + 'image/character/huaman.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', @@ -6222,18 +5687,118 @@ window.noname_asset_list=[ '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/jun_caocao.jpg', 'image/character/jun_liubei.jpg', 'image/character/jun_sunquan.jpg', 'image/character/jun_zhangjiao.jpg', + 'image/character/junk_simayi.jpg', + 'image/character/junk_zhangrang.jpg', 'image/character/kaisa.jpg', 'image/character/kanze.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_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_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_midori.jpg', + 'image/character/key_miki.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/laiyinger.jpg', + 'image/character/leibo.jpg', + 'image/character/leitong.jpg', + 'image/character/liangxing.jpg', 'image/character/liaohua.jpg', + 'image/character/licaiwei.jpg', 'image/character/lifeng.jpg', 'image/character/lijue.jpg', 'image/character/lingcao.jpg', @@ -6242,28 +5807,46 @@ window.noname_asset_list=[ 'image/character/lique.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/liufeng.jpg', + 'image/character/liuhong.jpg', + 'image/character/liuhui.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/liyan.jpg', + 'image/character/liyixiejing.jpg', + 'image/character/longyufei.jpg', 'image/character/luji.jpg', + 'image/character/lukai.jpg', 'image/character/lukang.jpg', + 'image/character/luotong.jpg', 'image/character/lusu.jpg', 'image/character/luxun.jpg', + 'image/character/luyi.jpg', + 'image/character/luyusheng.jpg', 'image/character/luzhi.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', @@ -6272,15 +5855,27 @@ window.noname_asset_list=[ 'image/character/maliang.jpg', 'image/character/mamchong.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/mayuanyi.jpg', 'image/character/mayunlu.jpg', 'image/character/mazhong.jpg', + 'image/character/mengda.jpg', 'image/character/menghuo.jpg', + 'image/character/mifangfushiren.jpg', 'image/character/mifuren.jpg', 'image/character/miheng.jpg', + 'image/character/mini_diaochan.jpg', + 'image/character/mini_jiangwei.jpg', + 'image/character/mini_lvbu.jpg', + 'image/character/mini_lvmeng.jpg', + 'image/character/mini_sunquan.jpg', + 'image/character/mini_zhangchunhua.jpg', + 'image/character/mini_zhugeliang.jpg', + 'image/character/mini_zuoci.jpg', 'image/character/mizhu.jpg', 'image/character/mtg_ayeni.jpg', 'image/character/mtg_jiding.jpg', @@ -6288,56 +5883,151 @@ window.noname_asset_list=[ '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/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_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_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_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_dingyuan.jpg', + 'image/character/ol_dongzhao.jpg', + 'image/character/ol_dongzhuo.jpg', + 'image/character/ol_furong.jpg', + 'image/character/ol_guansuo.jpg', + 'image/character/ol_guohuai.jpg', + 'image/character/ol_huaxin.jpg', + 'image/character/ol_huaxiong.jpg', + 'image/character/ol_jiangwei.jpg', + 'image/character/ol_liaohua.jpg', + 'image/character/ol_lisu.jpg', + 'image/character/ol_liuba.jpg', + 'image/character/ol_liushan.jpg', + 'image/character/ol_liuyu.jpg', + 'image/character/ol_lusu.jpg', + 'image/character/ol_maliang.jpg', + 'image/character/ol_manchong.jpg', + 'image/character/ol_pangde.jpg', + 'image/character/ol_pangtong.jpg', + 'image/character/ol_puyuan.jpg', + 'image/character/ol_sp_zhugeliang.jpg', + 'image/character/ol_sunjian.jpg', + 'image/character/ol_wangrong.jpg', + 'image/character/ol_weiyan.jpg', + 'image/character/ol_wuyi.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_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_zhuling.jpg', + 'image/character/ol_zhuran.jpg', + 'image/character/ol_zhurong.jpg', 'image/character/old_bulianshi.jpg', + 'image/character/old_caochong.jpg', 'image/character/old_caochun.jpg', + 'image/character/old_caoren.jpg', 'image/character/old_caoxiu.jpg', 'image/character/old_caozhen.jpg', 'image/character/old_chenqun.jpg', + 'image/character/old_fuhuanghou.jpg', + 'image/character/old_guanqiujian.jpg', + 'image/character/old_guanzhang.jpg', + 'image/character/old_huangfusong.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_liushan.jpg', + 'image/character/old_liuzan.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_wangyi.jpg', + 'image/character/old_wangyun.jpg', 'image/character/old_xusheng.jpg', + 'image/character/old_yangyan.jpg', + 'image/character/old_yangzhi.jpg', + 'image/character/old_yuanshao.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', @@ -6406,99 +6096,307 @@ window.noname_asset_list=[ '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/peixiu.jpg', + 'image/character/pengyang.jpg', + 'image/character/prp_zhugeliang.jpg', + 'image/character/pujing.jpg', + 'image/character/puyuan.jpg', + 'image/character/qiaogong.jpg', + 'image/character/qiaozhou.jpg', + 'image/character/qinghegongzhu.jpg', 'image/character/qinmi.jpg', + 'image/character/qinyilu.jpg', + 'image/character/qiuliju.jpg', 'image/character/quancong.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_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_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_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_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_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_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_zhoucang.jpg', 'image/character/re_zhouyu.jpg', 'image/character/re_zhugeliang.jpg', + 'image/character/re_zhuran.jpg', + 'image/character/re_zhurong.jpg', + 'image/character/re_zoushi.jpg', + 'image/character/re_zuoci.jpg', + 'image/character/ruanhui.jpg', + 'image/character/ruanyu.jpg', + 'image/character/ruiji.jpg', + 'image/character/sb_caocao.jpg', + 'image/character/sb_caoren.jpg', + 'image/character/sb_ganning.jpg', + 'image/character/sb_huanggai.jpg', + 'image/character/sb_huangzhong.jpg', + 'image/character/sb_huaxiong.jpg', + 'image/character/sb_lvmeng.jpg', + 'image/character/sb_machao.jpg', + 'image/character/sb_sunquan.jpg', + 'image/character/sb_sunshangxiang.jpg', + 'image/character/sb_xiahoushi.jpg', + 'image/character/sb_xuhuang.jpg', + 'image/character/sb_yujin.jpg', + 'image/character/sb_zhangjiao.jpg', + 'image/character/sb_zhenji.jpg', + 'image/character/sb_zhouyu.jpg', 'image/character/shamoke.jpg', 'image/character/shen_caocao.jpg', + 'image/character/shen_caopi.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_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/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_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/sunce.jpg', + 'image/character/sunchen.jpg', 'image/character/sundeng.jpg', + 'image/character/sunhanhua.jpg', 'image/character/sunhao.jpg', 'image/character/sunjian.jpg', + 'image/character/sunlang.jpg', 'image/character/sunliang.jpg', 'image/character/sunluban.jpg', 'image/character/sunluyu.jpg', @@ -6506,7 +6404,9 @@ window.noname_asset_list=[ 'image/character/sunquan.jpg', 'image/character/sunru.jpg', 'image/character/sunshangxiang.jpg', + 'image/character/sunshao.jpg', 'image/character/sunxiu.jpg', + 'image/character/sunyi.jpg', 'image/character/sunziliufang.jpg', 'image/character/swd_anka.jpg', 'image/character/swd_chenfu.jpg', @@ -6592,28 +6492,80 @@ window.noname_asset_list=[ '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/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_beimihu.jpg', 'image/character/tw_caoang.jpg', + 'image/character/tw_caocao.jpg', 'image/character/tw_caohong.jpg', + 'image/character/tw_caozhao.jpg', + 'image/character/tw_chengpu.jpg', 'image/character/tw_dingfeng.jpg', + 'image/character/tw_dongzhao.jpg', + 'image/character/tw_fuwan.jpg', + 'image/character/tw_gexuan.jpg', + 'image/character/tw_guohuai.jpg', + 'image/character/tw_hejin.jpg', + 'image/character/tw_hucheer.jpg', + 'image/character/tw_huojun.jpg', + 'image/character/tw_liuhong.jpg', 'image/character/tw_maliang.jpg', + 'image/character/tw_mayunlu.jpg', + 'image/character/tw_puyangxing.jpg', + 'image/character/tw_re_caohong.jpg', + 'image/character/tw_shen_guanyu.jpg', + 'image/character/tw_tianyu.jpg', + 'image/character/tw_wangcan.jpg', + 'image/character/tw_wangchang.jpg', + 'image/character/tw_wujing.jpg', 'image/character/tw_xiahouba.jpg', + 'image/character/tw_yujin.jpg', + 'image/character/tw_zangba.jpg', + 'image/character/tw_zhangmancheng.jpg', + 'image/character/tw_zhaoxiang.jpg', 'image/character/tw_zumao.jpg', 'image/character/wangcan.jpg', + 'image/character/wangfuzhaolei.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/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', @@ -6621,43 +6573,110 @@ window.noname_asset_list=[ 'image/character/xf_yiji.jpg', 'image/character/xiahouba.jpg', 'image/character/xiahoudun.jpg', + 'image/character/xiahoujie.jpg', + 'image/character/xiahoulingnv.jpg', 'image/character/xiahoushi.jpg', + 'image/character/xiahouxuan.jpg', 'image/character/xiahouyuan.jpg', + 'image/character/xiangchong.jpg', 'image/character/xiaoqiao.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_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_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_zhonghui.jpg', + 'image/character/xin_zhoucang.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/xizhicai.jpg', + 'image/character/xuangongzhu.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/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/yj_caoang.jpg', + 'image/character/yj_caocao.jpg', + 'image/character/yj_ganning.jpg', + 'image/character/yj_huangzhong.jpg', 'image/character/yj_jushou.jpg', + 'image/character/yj_xuhuang.jpg', + 'image/character/yj_zhanghe.jpg', + 'image/character/yj_zhangliao.jpg', 'image/character/yl_luzhi.jpg', 'image/character/yl_yuanshu.jpg', + 'image/character/yuanhuan.jpg', + 'image/character/yuanji.jpg', 'image/character/yuanshao.jpg', 'image/character/yuanshu.jpg', + 'image/character/yuantanyuanshang.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', @@ -6707,46 +6726,75 @@ window.noname_asset_list=[ 'image/character/zhangchangpu.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/zhanghuyuechen.jpg', 'image/character/zhangji.jpg', 'image/character/zhangjiao.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/zhangsong.jpg', + 'image/character/zhangwen.jpg', 'image/character/zhangxingcai.jpg', 'image/character/zhangxiu.jpg', + 'image/character/zhangxuan.jpg', + 'image/character/zhangxun.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/zhengxuan.jpg', 'image/character/zhenji.jpg', 'image/character/zhonghui.jpg', + 'image/character/zhongyan.jpg', 'image/character/zhongyao.jpg', 'image/character/zhoucang.jpg', + 'image/character/zhouchu.jpg', 'image/character/zhoufang.jpg', 'image/character/zhoufei.jpg', + 'image/character/zhouqun.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/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/zhuzhi.jpg', + 'image/character/zongyu.jpg', 'image/character/zoushi.jpg', 'image/character/zumao.jpg', 'image/character/zuoci.jpg', + 'image/character/zuofen.jpg', 'image/emotion/shibing_emotion/1.gif', 'image/emotion/shibing_emotion/2.gif', diff --git a/game/game.js b/game/game.js index 67887cfc7..b22efe121 100644 --- a/game/game.js +++ b/game/game.js @@ -26,6 +26,7 @@ cardMove:[], custom:[], useCard:[], + changeHp:[], }], cardtag:{ yingbian_zhuzhan:[], @@ -7163,9 +7164,6 @@ } return list; }; - Array.prototype.find=function(item){ - return this.indexOf(item); - }; Array.prototype.contains=function(item){ return this.indexOf(item)!=-1; }; @@ -7189,7 +7187,7 @@ for(var i=0;i0&&event.getParent().name=='damage'&&!player.hasSkillTag('nohujia')){ event.hujia=Math.min(-num,player.hujia); @@ -22691,12 +22693,14 @@ if(this.skills.contains(skill)) return; var info=lib.skill[skill]; if(!info) return; - if(!nobroadcast){ - game.broadcast(function(player,skill){ - player.skills.add(skill); - },this,skill); + if(!addToSkills){ + this.skills.add(skill); + if(!nobroadcast){ + game.broadcast(function(player,skill){ + player.skills.add(skill); + },this,skill); + } } - if(!addToSkills) this.skills.add(skill); this.addSkillTrigger(skill); if(this.awakenedSkills.contains(skill)){ this.awakenSkill(skill); @@ -23047,9 +23051,7 @@ }, addTempSkill:function(skill,expire,checkConflict){ if(this.hasSkill(skill)&&this.tempSkills[skill]==undefined) return; - var noremove=this.skills.contains(skill); - this.addSkill(skill,checkConflict,true); - if(!noremove) this.skills.remove(skill); + this.addSkill(skill,checkConflict,true,true); if(!expire){ expire='phaseAfter'; @@ -23088,16 +23090,6 @@ } } - for(var i in expire){ - if(typeof expire[i]=='string'){ - lib.hookmap[expire[i]]=true; - } - else if(Array.isArray(expire[i])){ - for(var j=0;j