'use strict'; game.import('mode',function(lib,game,ui,get,ai,_status){ return { name:'boss', start:function(){ "step 0" var playback=localStorage.getItem(lib.configprefix+'playback'); if(playback){ ui.create.me(); ui.arena.style.display='none'; ui.system.style.display='none'; _status.playback=playback; localStorage.removeItem(lib.configprefix+'playback'); var store=lib.db.transaction(['video'],'readwrite').objectStore('video'); store.get(parseInt(playback)).onsuccess=function(e){ if(e.target.result){ game.playVideoContent(e.target.result.video); } else{ alert('播放失败:找不到录像'); game.reload(); } } event.finish(); return; } for(var i in lib.characterPack.mode_boss){ lib.character[i]=lib.characterPack.mode_boss[i]; if(!lib.character[i][4]){ lib.character[i][4]=[]; } } // for(var i in lib.cardPack.mode_boss){ // lib.card[i]=lib.cardPack.mode_boss[i]; // } for(var i in lib.skill){ if(lib.skill[i].changeSeat){ lib.skill[i]={}; if(lib.translate[i+'_info']){ lib.translate[i+'_info']='此模式下不可用'; } } } lib.translate.restart='返回'; lib.init.css(lib.assetURL+'layout/mode','boss'); game.delay(0.1); "step 1" var bosslist=ui.create.div('#bosslist.hidden'); event.bosslist=bosslist; lib.setScroll(bosslist); // bosslist.ontouchmove = ui.click.touchScroll; // bosslist.style.WebkitOverflowScrolling='touch'; if(!lib.config.touchscreen&&lib.config.mousewheel){ bosslist._scrollspeed=30; bosslist._scrollnum=10; bosslist.onmousewheel=ui.click.mousewheel; } // var bosslistlinks={}; // var toggleBoss=function(bool){ // game.saveConfig(this._link.config._name,bool,true); // var node=bosslistlinks[this._link.config._name]; // if(bool){ // node.style.display=''; // } // else{ // node.style.display='none'; // } // }; var onpause=function(){ ui.window.classList.add('bosspaused'); } var onresume=function(){ ui.window.classList.remove('bosspaused'); } game.onpause=onpause; game.onpause2=onpause; game.onresume=onresume; game.onresume2=onresume; ui.create.div(bosslist); event.current=null; var list=[]; for(var i in lib.character){ var info=lib.character[i]; if(info[4].contains('boss')){ // var cfg=i+'_bossconfig'; // if(get.config(cfg)==undefined){ // game.saveConfig(cfg,true,true); // } // lib.translate[cfg+'_config']=lib.translate[i]; // lib.mode.boss.config[cfg]={ // name:get.translation(i), // onclick:toggleBoss, // init:true, // } var player=ui.create.player(bosslist).init(i); if(lib.characterPack.mode_boss[i]&&get.config(i+'_boss_config')==false){ player.style.display='none'; } if(player.hp==0){ player.node.hp.style.display='none'; } list.push(player); player.node.hp.classList.add('text'); player.node.hp.dataset.condition=''; player.node.hp.innerHTML=info[2]; if(info[2]==Infinity){ player.node.hp.innerHTML='∞'; } player.setIdentity(player.name); player.node.identity.dataset.color=info[5]; // bosslistlinks[cfg]=player; player.classList.add('bossplayer'); if(lib.storage.current==i){ event.current=player; player.classList.add('highlight'); if(!lib.config.continue_name_boss&&lib.boss[i]&&lib.boss[i].control){ _status.bosschoice=lib.boss[i].control(); _status.bosschoice.name=i; _status.bosschoice.link=lib.boss[i].controlid||i; } } // if(!get.config(cfg)){ // player.style.display='none'; // } } } if(!list.length){ alert('没有可挑战的BOSS'); event.finish(); lib.init.onfree(); _status.over=true; return; } if(!event.current){ event.current=bosslist.childNodes[1]; event.current.classList.add('highlight'); } ui.create.div(bosslist); ui.create.cardsAsync(); game.finishCards(); game.addGlobalSkill('autoswap'); ui.arena.setNumber(8); ui.control.style.transitionProperty='opacity'; ui.control.classList.add('bosslist'); setTimeout(function(){ ui.control.style.transitionProperty=''; },1000); ui.window.appendChild(bosslist); setTimeout(function(){ if(event.current){ var left=event.current.offsetLeft-(ui.window.offsetWidth-180)/2; if(bosslist.scrollLeft<left){ bosslist.scrollLeft=left; } } bosslist.show(); },200); game.me=ui.create.player(); if(lib.config.continue_name_boss){ event.noslide=true; lib.init.onfree(); } else{ game.chooseCharacter(function(target){ if(event.current){ event.current.classList.remove('highlight'); } event.current=target; game.save('current',target.name); target.classList.add('highlight'); if(_status.bosschoice){ var name=target.name; if(lib.boss[target.name]&&lib.boss[target.name].controlid){ name=lib.boss[target.name].controlid; } if(_status.bosschoice.link!=name){ lib.boss[_status.bosschoice.name].control('cancel',_status.bosschoice); _status.bosschoice.classList.remove('disabled'); _status.bosschoice.close(); delete _status.bosschoice; } else{ return; } } if(lib.boss[target.name]&&lib.boss[target.name].control){ _status.createControl=ui.control.firstChild; _status.bosschoice=lib.boss[target.name].control(); _status.bosschoice.name=target.name; _status.bosschoice.link=lib.boss[target.name].controlid||target.name; if(ui.cheat2&&ui.cheat2.dialog==_status.event.dialog){ _status.bosschoice.classList.add('disabled'); } delete _status.createControl; } }); } if(lib.config.test_game){ event.current.classList.remove('highlight'); if(event.current.nextSibling&&event.current.nextSibling.classList.contains('player')){ event.current=event.current.nextSibling; } else{ event.current=event.current.parentNode.childNodes[1]; } game.save('current',event.current.name); } "step 2" game.bossinfo=lib.boss.global; for(var i in lib.boss[event.current.name]){ game.bossinfo[i]=lib.boss[event.current.name][i]; } setTimeout(function(){ ui.control.classList.remove('bosslist'); },500); var boss=ui.create.player(); boss.getId(); game.boss=boss; boss.init(event.current.name); boss.side=true; if(!event.noslide){ var rect=event.current.getBoundingClientRect(); boss.animate('bossing'); boss.node.hp.animate('start'); boss.bossinginfo=[rect.left+rect.width/2,rect.top+rect.height/2]; boss.style.transition='all 0s'; boss.node.equips.style.opacity='0'; } else{ boss.animate('start'); } boss.setIdentity('zhu'); boss.identity='zhu'; if(lib.config.continue_name_boss){ result=lib.config.continue_name_boss; game.saveConfig('continue_name_boss'); } for(var i=0;i<result.links.length;i++){ var player=ui.create.player(); player.getId(); player.init(result.links[i]).animate('start'); player.setIdentity('cai'); player.identity='cai'; player.side=false; game.players.push(player); if(result.boss){ if(game.bossinfo.minion){ player.dataset.position=i+3; } else{ player.dataset.position=(i+1)*2; } } else{ player.dataset.position=i+1; } ui.arena.appendChild(player); } if(result.boss){ game.players.unshift(boss); boss.dataset.position=0; } else{ game.players.push(boss); boss.dataset.position=7; } if(game.bossinfo.minion){ if(!result.boss){ boss.dataset.position=6; } for(var i in game.bossinfo.minion){ var player=ui.create.player(); player.getId(); player.init(game.bossinfo.minion[i]); if(boss.bossinginfo){ player.animate('bossing'); player.node.hp.animate('start'); player.style.transition='all 0s'; } else{ player.animate('start'); } player.setIdentity('zhong'); player.identity='zhong'; player.side=true; game.players.push(player); var num=parseInt(i); if(result.boss){ player.dataset.position=num-1; } else{ if(num==2){ player.dataset.position=7; } else{ player.dataset.position=num-3; } } ui.arena.appendChild(player); if(boss.bossinginfo){ var rect=player.getBoundingClientRect(); player.style.transform='translate('+(boss.bossinginfo[0]-rect.left-rect.width/2)+'px,'+(boss.bossinginfo[1]-rect.top-rect.height/2)+'px) scale(1.1)'; ui.refresh(player); player.style.transition=''; player.style.transform=''; } } } ui.create.me(); ui.fakeme=ui.create.div('.fakeme.avatar',ui.me); if(game.me!==boss){ game.singleHandcard=true; ui.arena.classList.add('single-handcard'); ui.window.classList.add('single-handcard'); game.onSwapControl(); if(lib.config.show_handcardbutton){ lib.setPopped(ui.create.system('手牌',null,true),function(){ var uiintro=ui.create.dialog('hidden'); var players=game.players.concat(game.dead); for(var i=0;i<players.length;i++){ if(players[i].side==game.me.side&&players[i]!=game.me){ uiintro.add(get.translation(players[i])); var cards=players[i].getCards('h'); if(cards.length){ uiintro.addSmall(cards,true); } else{ uiintro.add('(无)'); } } } return uiintro; },220); } } else{ ui.fakeme.style.display='none'; } if(game.bossinfo.chongzheng){ lib.setPopped(ui.create.system('重整',null,true),function(){ var uiintro=ui.create.dialog('hidden'); uiintro.add('重整'); var table=ui.create.div('.bosschongzheng'); var tr,td,added=false; for(var i=0;i<game.dead.length;i++){ if(typeof game.dead[i].storage.boss_chongzheng!=='number') continue; added=true; tr=ui.create.div(table); td=ui.create.div(tr); td.innerHTML=get.translation(game.dead[i]); td=ui.create.div(tr); if(game.dead[i].maxHp>0){ td.innerHTML='剩余'+(game.bossinfo.chongzheng-game.dead[i].storage.boss_chongzheng)+'回合'; } else{ td.innerHTML='无法重整' } } if(!added){ uiintro.add('<div class="text center">(无重整角色)</div>'); uiintro.add(ui.create.div('.placeholder.slim')) } else{ uiintro.add(table); } return uiintro; },180); } ui.single_swap=ui.create.system('换人',function(){ var players=get.players(game.me); players.remove(game.boss); if(players.length>1){ if(ui.auto.classList.contains('hidden')){ game.me.popup('请稍后换人'); return; } if(_status.event.isMine()){ ui.click.auto(); setTimeout(function(){ ui.click.auto(); },500); } game.modeSwapPlayer(players[1]); } },true); if(get.config('single_control')||game.me==game.boss){ ui.single_swap.style.display='none'; } ui.arena.appendChild(boss); if(boss.bossinginfo){ var rect=boss.getBoundingClientRect(); boss.style.transform='translate('+(boss.bossinginfo[0]-rect.left-rect.width/2)+'px,'+(boss.bossinginfo[1]-rect.top-rect.height/2)+'px) scale(1.1)'; ui.refresh(boss); boss.style.transition=''; boss.style.transform=''; delete boss.bossinginfo; setTimeout(function(){ boss.node.equips.style.opacity=''; },500); } event.bosslist.delete(); game.arrangePlayers(); for(var i=0;i<game.players.length;i++){ game.players[i].node.action.innerHTML='行动'; } var players=get.players(lib.sort.position); var info=[]; for(var i=0;i<players.length;i++){ info.push({ name:players[i].name1, identity:players[i].identity, position:players[i].dataset.position }); } _status.videoInited=true, info.boss=(game.me==game.boss); game.addVideo('init',null,info); if(game.bossinfo.init){ game.bossinfo.init(); } delete lib.boss; "step 3" if(get.config('single_control')){ for(var i=0;i<game.players.length;i++){ if(game.players[i].side==game.me.side){ game.addRecentCharacter(game.players[i].name); } } } else{ game.addRecentCharacter(game.me.name); } event.trigger('gameStart'); game.gameDraw(game.boss,game.bossinfo.gameDraw||4); game.bossPhaseLoop(); setTimeout(function(){ ui.updatehl(); },200); }, element:{ player:{ dieAfter:function(){ if(this!=game.boss){ this.storage.boss_chongzheng=0; } if(game.bossinfo.checkResult&&game.bossinfo.checkResult(this)===false){ return; } if(this==game.boss||!game.hasPlayer(function(current){ return !current.side; })){ game.checkResult(); } }, } }, card:{ niaobaidaowenha:{ type:'equip', subtype:'equip5', skills:['niaobaidaowenha_skill'], modeimage:'boss', ai:{ basic:{ equipValue:7.5, }, }, fullskin:true, }, goujiangdesidai:{ type:'equip', subtype:'equip1', distance:{attackFrom:-6}, skills:['goujiangdesidai_skill'], modeimage:'boss', ai:{ basic:{ equipValue:7.5, }, }, fullskin:true, }, shenzhixiunvfu:{ type:'equip', subtype:'equip2', modeimage:'boss', fullskin:true, }, gubuzifeng:{ type:'trick', fullskin:true, modeimage:'boss', enable:true, filterTarget:function(card,player,target){ return target!=player; }, content:function(){ target.addTempSkill('gubuzifeng_disable',{player:'phaseAfter'}); var skills=target.getSkills(null,false); for(var i=0;i<skills.length;i++){ if(get.info(skills[i]).charlotte) skills.splice(i--,1); } if(skills.length){ target.storage.gubuzifeng_disable.push(skills.randomGet()); target.disableSkill('gubuzifeng_disable',target.storage.gubuzifeng_disable); } }, ai:{ order:12, result:{ target:function(player,target){ return -2; } } } }, lingsheji:{ type:'equip', subtype:'equip5', skills:['lingsheji'], modeimage:'boss', ai:{ basic:{ equipValue:7.5, }, }, fullskin:true, }, shanrangzhaoshu:{ type:'equip', subtype:'equip5', skills:['shanrangzhaoshu'], modeimage:'boss', ai:{ basic:{ equipValue:7.5, }, }, fullskin:true, }, xingtianpojunfu:{ type:'equip', subtype:'equip1', distance:{attackFrom:-3}, skills:['noda_axe'], modeimage:'boss', ai:{ basic:{ equipValue:7.5, }, }, fullskin:true, }, jinwuluorigong:{ type:'equip', subtype:'equip1', skills:['iwasawa_crowbow'], modeimage:'boss', distance:{attackFrom:-8}, ai:{ basic:{ equipValue:7.5, }, }, fullskin:true, }, "boss_mengpohuihun":{ mode:['boss'], type:"trick", modeimage:"boss", fullskin:true, selectTarget:-1, enable:true, toself:true, multitarget:true, global:['boss_mengpohuihun1'], modTarget:true, filterTarget:function(card,player,target){ return player==target; }, content:function(){ game.countPlayer2(function(current){ current.enableSkill('boss_wanghun'); }); }, ai:{ basic:{ order:function(){ return 11; }, useful:[3,1], value:10 }, result:{ player:function(player,target){ if(player==game.boss){ return -2; } else{ return 5; } }, }, }, }, "wushuangfangtianji":{ type:"equip", modeimage:'boss', subtype:"equip1", distance:{ attackFrom:-3, }, ai:{ basic:{ equipValue:2.5, }, }, skills:["wushuangfangtianji_skill"], fullskin:true, }, "shufazijinguan":{ type:"equip", subtype:"equip5", modeimage:'boss', ai:{ basic:{ equipValue:9, }, }, skills:["shufazijinguan_skill"], fullskin:true, }, "hongmianbaihuapao":{ type:"equip", subtype:"equip2", modeimage:'boss', ai:{ basic:{ equipValue:7, }, }, skills:["hongmianbaihuapao_skill"], fullskin:true, }, "linglongshimandai":{ type:"equip", subtype:"equip2", modeimage:'boss', ai:{ basic:{ equipValue:7.5, }, }, skills:["linglongshimandai_skill"], fullskin:true, }, sadouchengbing:{ fullskin:true, type:'trick', enable:true, selectTarget:-1, cardcolor:'red', toself:true, modeimage:'boss', filterTarget:function(card,player,target){ return target==player; }, modTarget:true, content:function(){ var num=Math.min(5,target.maxHp); if(target.group=='shen'){ target.draw(num); } else{ var nh=target.countCards('h'); if(nh<num){ target.draw(num-nh); } } }, ai:{ basic:{ order:7.2, useful:4.5, value:9.2 }, result:{ target:function(player,target){ var num=Math.min(5,target.maxHp); if(target.group=='shen'){ return Math.sqrt(num); } else{ var nh=target.countCards('h'); if(target==player&&player.countCards('h','sadouchengbing')){ nh--; } if(nh<num){ return Math.sqrt(num-nh); } } return 0; }, }, tag:{ draw:2 } } }, yihuajiemu:{ type:'trick', fullskin:true, modeimage:'boss', enable:true, filterTarget:function(card,player,target){ return target!=player&&target.countCards('he'); }, content:function(){ 'step 0' if(target.hasSha()){ target.chooseToUse(function(card,player,event){ return get.name(card)=='sha'&&lib.filter.filterCard.apply(this,arguments); },'使用一张杀,或交给'+get.translation(player)+'两张牌'); } else{ event.directfalse=true; } 'step 1' var nh=target.countCards('he'); if((event.directfalse||!result.bool)&&nh){ if(nh<=2){ event.directcards=true; } else{ target.chooseCard('he',2,true,'将两张牌交给'+get.translation(player)); } } else{ event.finish(); } 'step 2' if(event.directcards){ target.give(target.getCards('he'),player); } else if(result.bool&&result.cards&&result.cards.length){ target.give(result.cards,player); } }, ai:{ order:7, result:{ target:function(player,target){ if(target.hasSha()&&_status.event.getRand()<0.5) return 1; return -2; } } } }, guilongzhanyuedao:{ type:'equip', fullskin:true, modeimage:'boss', subtype:'equip1', distance:{attackFrom:-2}, skills:['guilongzhanyuedao'], nomod:true, nopower:true, unique:true, ai:{ equipValue:9 } }, guofengyupao:{ type:'equip', fullskin:true, modeimage:'boss', subtype:'equip2', nomod:true, nopower:true, unique:true, skills:['guofengyupao'], ai:{ equipValue:9 } }, qimenbagua:{ type:'equip', fullskin:true, modeimage:'boss', subtype:'equip2', skills:['qimenbagua'], nomod:true, nopower:true, unique:true, ai:{ equipValue:9 } }, chixueqingfeng:{ type:'equip', fullskin:true, modeimage:'boss', subtype:'equip1', distance:{attackFrom:-1}, skills:['chixueqingfeng'], nomod:true, nopower:true, unique:true, ai:{ equipValue:9 } }, chiyanzhenhunqin:{ type:'equip', fullskin:true, subtype:'equip1', modeimage:'boss', distance:{attackFrom:-3}, skills:['chiyanzhenhunqin'], nomod:true, nopower:true, unique:true, ai:{ equipValue:5 } }, juechenjinge:{ type:'equip', fullskin:true, modeimage:'boss', subtype:'equip3', skills:['juechenjinge'], nomod:true, nopower:true, unique:true, ai:{ equipValue:9 } }, xiuluolianyuji:{ type:'equip', fullskin:true, subtype:'equip1', modeimage:'boss', distance:{attackFrom:-3}, skills:['xiuluolianyuji'], nomod:true, nopower:true, unique:true, ai:{ equipValue:9 } }, xuwangzhimian:{ type:'equip', fullskin:true, subtype:'equip5', modeimage:'boss', skills:['xuwangzhimian'], nomod:true, nopower:true, unique:true, ai:{ equipValue:9 } }, longfenghemingjian:{ type:'equip', fullskin:true, modeimage:'boss', subtype:'equip1', distance:{attackFrom:-2}, skills:['longfenghemingjian'], nomod:true, nopower:true, unique:true, ai:{ equipValue:9 } }, qicaishenlu:{ fullskin:true, modeimage:'boss', type:'equip', subtype:'equip4', distance:{globalFrom:-1}, skills:['qicaishenlu'], nomod:true, nopower:true, unique:true, ai:{ equipValue:9 } }, honghuangzhili:{ type:'trick', enable:true, fullskin:true, filterTarget:true, modeimage:'boss', content:function(){ if(target.group=='shen'){ target.addSkill('honghuangzhili'); if(target.countCards('he')){ player.gainPlayerCard(target,'he',true); } } else{ target.turnOver(); } }, ai:{ order:4, value:10, result:{ target:function(player,target){ if(target.group=='shen'){ if(target.countCards('he')) return -2; return 0; } else{ if(target.isTurnedOver()) return 4; return -3; } } } } } }, characterPack:{ mode_boss:{ boss_hundun:['male','qun',25,['boss_xiongshou','boss_wuzang','boss_xiangde','boss_yinzei','boss_yinzei_switch'],['qun','boss','bossallowed'],'qun'], boss_qiongqi:['male','qun','20/25',['boss_xiongshou','boss_zhue','boss_futai','boss_yandu','boss_yandu_switch'],['qun','boss','bossallowed'],'qun'], boss_taotie:['male','qun',20,['boss_xiongshou','boss_tanyu','boss_cangmu','boss_jicai','boss_jicai_switch'],['qun','boss','bossallowed'],'qun'], boss_taowu:['male','qun',25,['boss_xiongshou','boss_minwan','boss_nitai','boss_luanchang','boss_luanchang_switch'],['qun','boss','bossallowed'],'qun'], boss_zhuyin:['male','qun',4,['boss_xiongshou'],['qun','hiddenboss','bossallowed'],'qun'], boss_xiangliu:['male','qun',25,['boss_yaoshou','boss_duqu','boss_jiushou','boss_echou','boss_echou_switch'],['qun','boss','bossallowed'],'qun'], boss_zhuyan:['male','qun','25/30',['boss_yaoshou','boss_bingxian','boss_juyuan','boss_xushi','boss_xushi_switch'],['qun','boss','bossallowed'],'qun'], boss_bifang:['male','qun',25,['boss_yaoshou','boss_zhaohuo','boss_honglianx','boss_yanyu','boss_yanyu_switch'],['qun','boss','bossallowed'],'qun'], boss_yingzhao:['male','qun',25,['boss_yaoshou','boss_fengdong','boss_xunyou','boss_sipu','boss_sipu_switch'],['qun','boss','bossallowed'],'qun'], boss_qingmushilian:['male','',0,['boss_qingmu','boss_qingmu_intro1','boss_qingmu_intro2','boss_qingmu_intro3'],['boss'],'wu'], boss_qinglong:['male','qun',4,['boss_shenyi','releiji','boss_qingmu2'],['wu','hiddenboss','bossallowed']], boss_mushengoumang:['male','shen',5,['boss_shenyi','boss_buchun','boss_qingmu3'],['wu','hiddenboss','bossallowed']], boss_shujing:['female','shen',2,['boss_cuidu'],['wu','hiddenboss','bossallowed']], boss_taihao:['male','shen',6,['boss_shenyi','boss_shenen','boss_qingyi'],['wu','hiddenboss','bossallowed']], boss_chiyanshilian:['male','',0,['boss_chiyan','boss_chiyan_intro1','boss_chiyan_intro2','boss_chiyan_intro3'],['boss'],'zhu'], boss_zhuque:['female','shen',4,['boss_shenyi','boss_fentian','boss_chiyan2'],['shu','hiddenboss','bossallowed']], boss_huoshenzhurong:['male','shen',5,['boss_shenyi','boss_xingxia','boss_chiyan3'],['shu','hiddenboss','bossallowed']], boss_yanling:['male','shen',4,['boss_huihuo','boss_furan'],['shu','hiddenboss','bossallowed']], boss_yandi:['male','shen',6,['boss_shenyi','boss_shenen','boss_chiyi'],['shu','hiddenboss','bossallowed']], boss_baimangshilian:['male','',0,['boss_baimang','boss_baimang_intro1','boss_baimang_intro2','boss_baimang_intro3'],['boss'],'qun'], boss_baihu:['male','shen',4,['boss_shenyi','boss_kuangxiao','boss_baimang2'],['qun','hiddenboss','bossallowed']], boss_jinshenrushou:['male','shen',5,['boss_shenyi','boss_xingqiu','boss_baimang3'],['qun','hiddenboss','bossallowed']], boss_mingxingzhu:['female','shen',3,['boss_qingzhu','boss_jiazu','boss_jiding'],['qun','hiddenboss','bossallowed']], boss_shaohao:['male','shen',6,['boss_shenyi','boss_shenen','boss_baiyi'],['qun','hiddenboss','bossallowed']], boss_xuanlinshilian:['male','',0,['boss_xuanlin','boss_xuanlin_intro1','boss_xuanlin_intro2','boss_xuanlin_intro3'],['boss'],'wei'], boss_xuanwu:['male','shen',4,['boss_shenyi','boss_lingqu','boss_xuanlin2'],['wei','hiddenboss','bossallowed']], boss_shuishengonggong:['male','shen',5,['boss_shenyi','boss_juehong','boss_xuanlin3'],['wei','hiddenboss','bossallowed']], boss_shuishenxuanming:['female','shen',5,['boss_shenyi','boss_zirun','boss_xuanlin3'],['wei','hiddenboss','bossallowed']], boss_zhuanxu:['male','shen',6,['boss_shenyi','boss_shenen','boss_zaoyi'],['wei','hiddenboss','bossallowed']], boss_zhuoguiquxie:['male','',0,['boss_bianshen','boss_bianshen_intro1','boss_bianshen_intro2','boss_bianshen_intro3','boss_bianshen_intro4'],['boss'],'shu'], boss_nianshou_heti:['male','shen',12,['boss_nianrui','boss_mengtai','boss_nbianshen','boss_nbianshenx'],['shu','boss','bossallowed'],'shu'], boss_nianshou_jingjue:['male','shen',12,['boss_nianrui','boss_mengtai','boss_jingjue','boss_nbianshen'],['shu','hiddenboss','bossallowed'],'shu'], boss_nianshou_renxing:['male','shen',12,['boss_nianrui','boss_mengtai','boss_renxing','boss_nbianshen'],['shu','hiddenboss','bossallowed'],'shu'], boss_nianshou_ruizhi:['male','shen',12,['boss_nianrui','boss_mengtai','boss_ruizhi','boss_nbianshen'],['shu','hiddenboss','bossallowed'],'shu'], boss_nianshou_baonu:['male','shen',12,['boss_nianrui','boss_mengtai','boss_nbaonu','boss_shouyi','boss_nbianshen'],['shu','hiddenboss','bossallowed'],'shu'], boss_baiwuchang:['male','shen',9,['boss_baolian','boss_qiangzheng','boss_zuijiu','juece','boss_bianshen4'],['shu','hiddenboss','bossallowed']], boss_heiwuchang:['male','shen',9,['boss_guiji','boss_taiping','boss_suoming','boss_xixing','boss_bianshen4'],['shu','hiddenboss','bossallowed']], boss_luocha:['male','shen',12,['boss_modao','boss_yushou','yizhong','boss_moyany'],['shu','hiddenboss','bossallowed']], boss_yecha:['male','shen',11,['boss_modao','boss_mojian','bazhen','boss_danshu'],['shu','hiddenboss','bossallowed']], boss_niutou:['male','shen',7,['boss_baolian','niepan','boss_manjia','boss_xiaoshou','boss_bianshen3'],['shu','hiddenboss','bossallowed']], boss_mamian:['male','shen',6,['boss_guiji','fankui','boss_lianyu','juece','boss_bianshen3'],['shu','hiddenboss','bossallowed']], boss_chi:['male','shen',5,['boss_guimei','boss_didong','boss_shanbeng','boss_bianshen2'],['shu','hiddenboss','bossallowed']], boss_mo:['female','shen',5,['boss_guimei','enyuan','boss_beiming','boss_bianshen2'],['shu','hiddenboss','bossallowed']], boss_wang:['male','shen',5,['boss_guimei','boss_luolei','huilei','boss_bianshen2'],['shu','hiddenboss','bossallowed']], boss_liang:['female','shen',5,['boss_guimei','boss_guihuo','boss_minbao','boss_bianshen2'],['shu','hiddenboss','bossallowed']], boss_qinguangwang:['male','qun',3,['boss_panguan','boss_juhun','boss_wangxiang','boss_newhuanren'],['shu','boss','bossallowed'],'shu'], boss_chujiangwang:['male','qun',4,['weimu','refankui','boss_bingfeng'],['shu','hiddenboss','bossallowed']], boss_songdiwang:['male','qun',4,['boss_heisheng','boss_shengfu','enyuan'],['shu','hiddenboss','bossallowed']], boss_wuguanwang:['male','qun',4,['boss_zhiwang','boss_gongzheng','boss_xuechi'],['shu','hiddenboss','bossallowed']], boss_yanluowang:['male','qun',4,['boss_tiemian','boss_zhadao','boss_zhuxin'],['shu','hiddenboss','bossallowed']], boss_bianchengwang:['male','qun',4,['boss_leizhou','boss_leifu','boss_leizhu'],['shu','hiddenboss','bossallowed']], boss_taishanwang:['male','qun',4,['boss_fudu','boss_kujiu','boss_renao'],['shu','hiddenboss','bossallowed']], boss_dushiwang:['male','qun',4,['boss_remen','boss_zhifen','boss_huoxing'],['shu','hiddenboss','bossallowed']], boss_pingdengwang:['male','qun',4,['boss_suozu','boss_abi','boss_pingdeng'],['shu','hiddenboss','bossallowed']], boss_zhuanlunwang:['male','qun',6,['boss_modao','boss_lunhui','boss_wangsheng','boss_zlfanshi'],['shu','hiddenboss','bossallowed']], boss_mengpo:['female','qun',3,['boss_shiyou','boss_wanghun','boss_wangshi'],['shu','hiddenboss','bossallowed']], boss_dizangwang:['male','qun',8,['boss_bufo','boss_wuliang','boss_dayuan','boss_diting'],['shu','hiddenboss','bossallowed']], boss_lvbu1:['male','shen',8,['mashu','wushuang','boss_baonu','boss_jingjia','boss_aozhan'],['qun','boss','bossallowed'],'wei'], boss_lvbu2:['male','shen',6,['mashu','wushuang','xiuluo','shenwei','shenji'],['qun','hiddenboss','bossallowed'],'qun'], boss_lvbu3:['male','shen',6,['wushuang','shenqu','jiwu'],['qun','hiddenboss','bossallowed'],'qun'], boss_caocao:['male','shen',12,['boss_guixin','xiongcai'],['wei','boss','bossallowed'],'wei'], boss_guojia:['male','shen',4,['tiandu','boss_guimou','boss_yuance','boss_qizuo'],['wei','boss','bossallowed'],'zhu'], boss_zhangchunhua:['female','shen',4,['jueqing','boss_wuxin','shangshix'],['wei','boss','bossallowed'],'wei'], boss_zhenji:['female','shen',4,['tashui','lingbo','jiaoxia','fanghua'],['wei','boss','bossallowed'],'wei'], boss_liubei:['male','shen',8,['xiaoxiong','boss_zhangwu'],['shu','boss','bossallowed'],'qun'], boss_zhugeliang:['male','shen',Infinity,['xiangxing','yueyin','fengqi','gaiming'],['shu','boss','bossallowed'],'qun'], boss_huangyueying:['female','shen',4,['boss_gongshen','boss_jizhi','qicai','boss_guiyin'],['shu','boss','bossallowed'],'wei'], boss_pangtong:['male','shen',4,['boss_tianyu','qiwu','niepan','boss_yuhuo'],['shu','boss','bossallowed'],'zhu'], boss_zhouyu:['male','shen',6,['huoshen','boss_honglian','boss_xianyin'],['wu','boss','bossallowed'],'zhu'], boss_caiwenji:['female','shen',4,['beige','boss_hujia','boss_guihan'],['qun','boss','bossallowed'],'wei'], boss_zhangjiao:['male','shen',8,['boss_leiji','tiandao','jidian'],['qun','boss','bossallowed'],'shu'], boss_zuoci:['male','shen',0,['huanhua'],['qun','boss','bossallowed'],'shu'], boss_diaochan:['female','shen',4,['fengwu','yunshen','lianji','boss_wange','yuehun'],['qun','boss','bossallowed'],'qun'], boss_huatuo:['male','shen',6,['chulao','mazui','boss_shengshou','guizhen','wuqin'],['qun','boss','bossallowed'],'wu'], boss_dongzhuo:['male','shen',20,['jiuchi','boss_qiangzheng','boss_baolin'],['qun','boss','bossallowed'],'shu'], "boss_sunce":["male","shen","1/8",["boss_jiang","boss_hunzi","boss_hunyou","boss_taoni"],['qun','boss','bossallowed'],'wu'], // boss_nianshou:['male','shen',Infinity,['boss_nianrui','boss_qixiang','boss_damagecount'],['boss'],'shu'], // boss_yuji:['male','qun',8,[],['boss','bossallowed'],'nei'], // boss_shuijing:['male','qun',8,[],['boss','bossallowed'],'wei'], // boss_sunshangxiang:['male','qun',8,[],['boss','bossallowed'],'wei'], } }, cardPack:{ mode_boss:['honghuangzhili','sadouchengbing','yihuajiemu','guilongzhanyuedao','guofengyupao','chiyanzhenhunqin','qimenbagua','xuwangzhimian','juechenjinge','xiuluolianyuji','chixueqingfeng','longfenghemingjian','qicaishenlu','wushuangfangtianji','shufazijinguan','hongmianbaihuapao','linglongshimandai','boss_mengpohuihun','lingsheji','shanrangzhaoshu','jinwuluorigong','xingtianpojunfu','gubuzifeng'] }, init:function(){ for(var i in lib.characterPack.mode_boss){ if(lib.characterPack.mode_boss[i][4].contains('hiddenboss')) continue; lib.mode.boss.config[i+'_boss_config']={ name:get.translation(i), init:true, unfrequent:true, } } }, game:{ reserveDead:true, addBossFellow:function(position,name){ var fellow=game.addFellow(position,name,'zoominanim'); fellow.directgain(get.cards(4)); fellow.side=true; fellow.identity='zhong'; fellow.setIdentity('zhong'); game.addVideo('setIdentity',fellow,'zhong'); }, changeBoss:function(name,player){ if(!player){ if(game.additionaldead){ game.additionaldead.push(game.boss); } else{ game.additionaldead=[game.boss]; } player=game.boss; delete game.boss; } player.delete(); game.players.remove(player); game.dead.remove(player); var boss=ui.create.player(); boss.getId(); boss.init(name); boss.side=true; game.addVideo('bossSwap',player,(game.boss?'_':'')+boss.name); boss.dataset.position=player.dataset.position; if(game.me==player){ game.swapControl(boss); } game.players.push(boss.animate('zoominanim')); game.arrangePlayers(); if(!game.boss){ game.boss=boss; boss.setIdentity('zhu'); boss.identity='zhu'; } else{ boss.setIdentity('zhong'); boss.identity='zhong'; } ui.arena.appendChild(boss); boss.directgain(get.cards(4)); }, checkResult:function(){ if(game.boss==game.me){ game.over(game.boss.isAlive()); } else{ game.over(!game.boss.isAlive()); } }, getVideoName:function(){ var str=get.translation(game.me.name); if(game.me.name2){ str+='/'+get.translation(game.me.name2); } var str2='挑战'; if(game.me!=game.boss){ str2+=' - '+get.translation(game.boss); } var name=[str,str2]; return name; }, bossPhaseLoop:function(){ var next=game.createEvent('phaseLoop'); if(game.bossinfo.loopFirst){ next.player=game.bossinfo.loopFirst(); } else{ next.player=game.boss; } _status.looped=true; next.setContent(function(){ "step 0" if(player.chongzheng){ player.chongzheng=false; } else if(player.isDead()){ if(player.hp<0) player.hp=0; player.storage.boss_chongzheng++; if(player.maxHp>0&&game.bossinfo.chongzheng){ if(player.hp<player.maxHp){ player.hp++; } else if(player.countCards('h')<4){ var card=get.cards()[0]; var sort=lib.config.sort_card(card); var position=sort>0?player.node.handcards1:player.node.handcards2; card.fix(); card.animate('start'); position.insertBefore(card,position.firstChild); } player.update(); if(player.storage.boss_chongzheng>=game.bossinfo.chongzheng){ player.revive(player.hp); } } if(game.bossinfo.loopType==2){ game.boss.chongzheng=true; } } else{ if(player.identity=='zhu'&&game.boss!=player){ player=game.boss; } player.phase(); } "step 1" if(game.bossinfo.loopType==2){ _status.roundStart=true; if(event.player==game.boss){ if(!_status.last||_status.last.nextSeat==game.boss){ event.player=game.boss.nextSeat; } else{ event.player=_status.last.nextSeat; } } else{ _status.last=player; event.player=game.boss; if(player.nextSeat==game.boss){ delete _status.roundStart; } } } else{ event.player=event.player.nextSeat; } event.goto(0); }); }, onSwapControl:function(){ if(game.me==game.boss) return; game.addVideo('onSwapControl'); var name=game.me.name; if(ui.fakeme&&ui.fakeme.current!=name){ ui.fakeme.current=name; if(ui.versushighlight&&ui.versushighlight!=game.me){ ui.versushighlight.classList.remove('current_action'); } ui.versushighlight=game.me; game.me.classList.add('current_action'); // game.me.line(ui.fakeme,{opacity:0.5,dashed:true}); ui.fakeme.style.backgroundImage=game.me.node.avatar.style.backgroundImage; // ui.fakeme.style.backgroundSize='cover'; } ui.updatehl(); }, modeSwapPlayer:function(player){ var bool=(game.me==game.boss||player==game.boss); game.swapControl(player); game.onSwapControl(); if(!bool) return; if(game.me==game.boss){ game.singleHandcard=false; ui.arena.classList.remove('single-handcard'); ui.window.classList.remove('single-handcard'); ui.fakeme.style.display='none'; game.me.dataset.position=0; game.me.nextSeat.dataset.position=2; game.me.nextSeat.nextSeat.dataset.position=4; game.me.nextSeat.nextSeat.nextSeat.dataset.position=6; } else{ game.singleHandcard=true; ui.arena.classList.add('single-handcard'); ui.window.classList.add('single-handcard'); ui.fakeme.style.display=''; game.boss.dataset.position=7; game.boss.nextSeat.dataset.position=1; game.boss.nextSeat.nextSeat.dataset.position=2; game.boss.nextSeat.nextSeat.nextSeat.dataset.position=3; if(game.me&&game.me.node.handcards2.childNodes.length){ while(game.me.node.handcards2.childNodes.length){ game.me.node.handcards1.appendChild(game.me.node.handcards2.firstChild); } } } }, chooseCharacter:function(func){ var next=game.createEvent('chooseCharacter',false); next.showConfig=true; next.customreplacetarget=func; next.ai=function(player,list){ if(get.config('double_character')){ player.init(list[0],list[1]); } else{ player.init(list[0]); } } next.setContent(function(){ "step 0" var i; var list=[]; event.list=list; for(i in lib.character){ if(lib.character[i][4].contains('minskin')) continue; if(lib.character[i][4].contains('boss')) continue; if(lib.character[i][4].contains('hiddenboss')) continue; if(lib.character[i][4]&&lib.character[i][4].contains('forbidai')) continue; if(lib.config.forbidboss.contains(i)) continue; if(lib.filter.characterDisabled(i)) continue; list.push(i); } list.randomSort(); var dialog=ui.create.dialog('选择参战角色','hidden'); dialog.classList.add('fixed'); ui.window.appendChild(dialog); dialog.classList.add('bosscharacter'); dialog.classList.add('modeshortcutpause'); dialog.classList.add('withbg'); // dialog.add('0/3'); dialog.add([list.slice(0,20),'character']); dialog.noopen=true; var next=game.me.chooseButton(dialog,true).set('onfree',true); next._triggered=null; next.custom.replace.target=event.customreplacetarget; next.selectButton=[3,3]; // next.custom.add.button=function(){ // if(ui.cheat2&&ui.cheat2.backup) return; // _status.event.dialog.content.childNodes[1].innerHTML= // ui.selected.buttons.length+'/3'; // }; event.changeDialog=function(){ if(ui.cheat2&&ui.cheat2.dialog==_status.event.dialog){ return; } if(game.changeCoin){ game.changeCoin(-3); } list.randomSort(); var buttons=ui.create.div('.buttons'); var node=_status.event.dialog.buttons[0].parentNode; _status.event.dialog.buttons=ui.create.buttons(list.slice(0,20),'character',buttons); _status.event.dialog.content.insertBefore(buttons,node); buttons.animate('start'); node.remove(); game.uncheck(); game.check(); }; ui.create.cheat=function(){ _status.createControl=ui.cheat2||event.asboss; ui.cheat=ui.create.control('更换',event.changeDialog); delete _status.createControl; }; var createCharacterDialog=function(){ event.dialogxx=ui.create.characterDialog(); event.dialogxx.classList.add('bosscharacter'); event.dialogxx.classList.add('withbg'); event.dialogxx.classList.add('fixed'); if(ui.cheat2){ ui.cheat2.animate('controlpressdownx',500); ui.cheat2.classList.remove('disabled'); } }; if(lib.onfree){ lib.onfree.push(createCharacterDialog); } else{ createCharacterDialog(); } ui.create.cheat2=function(){ _status.createControl=event.asboss; ui.cheat2=ui.create.control('自由选将',function(){ if(this.dialog==_status.event.dialog){ if(game.changeCoin){ game.changeCoin(50); } this.dialog.close(); _status.event.dialog=this.backup; ui.window.appendChild(this.backup); delete this.backup; game.uncheck(); game.check(); if(ui.cheat){ ui.cheat.animate('controlpressdownx',500); ui.cheat.classList.remove('disabled'); } if(_status.bosschoice){ _status.bosschoice.animate('controlpressdownx',500); _status.bosschoice.classList.remove('disabled'); } } else{ if(game.changeCoin){ game.changeCoin(-10); } this.backup=_status.event.dialog; _status.event.dialog.close(); _status.event.dialog=_status.event.parent.dialogxx; this.dialog=_status.event.dialog; ui.window.appendChild(this.dialog); game.uncheck(); game.check(); if(ui.cheat){ ui.cheat.classList.add('disabled'); } if(_status.bosschoice){ _status.bosschoice.classList.add('disabled'); } } }); if(lib.onfree){ ui.cheat2.classList.add('disabled'); } delete _status.createControl; } if(!ui.cheat&&get.config('change_choice')) ui.create.cheat(); if(!ui.cheat2&&get.config('free_choose')) ui.create.cheat2(); event.asboss=ui.create.control('应战',function(){ event.boss=true; event.enemy=[]; for(var i=0;i<ui.selected.buttons.length;i++){ event.enemy.push(ui.selected.buttons[i].link); event.list.remove(ui.selected.buttons[i].link); } while(event.enemy.length<3){ var name=event.list.randomRemove(); if(lib.boss[lib.storage.current]&&lib.boss[lib.storage.current].randchoice){ name=lib.boss[lib.storage.current].randchoice(name,event.enemy); } event.enemy.push(name); } game.uncheck(); if(ui.confirm){ ui.confirm.close(); } game.resume(); }); "step 1" if(ui.cheat){ ui.cheat.close(); delete ui.cheat; } if(ui.cheat2){ ui.cheat2.close(); delete ui.cheat2; } event.asboss.close(); if(_status.bosschoice){ _status.bosschoice.close(); delete _status.bosschoice; } if(event.boss){ event.result={ boss:true, links:event.enemy }; } else{ event.result={ boss:false, links:result.links }; _status.coinCoeff=get.coinCoeff(result.links); } }); return next; }, }, boss:{ boss_qiongqi:{ chongzheng:0, loopFirst:function(){ return game.boss.nextSeat.nextSeat; }, gameDraw:function(player){ return player==game.boss?8:4; }, minion:{ '2':'boss_zhuyin', '8':'boss_zhuyin', }, randchoice:function(){ return lib.boss.boss_taowu.randchoice.apply(this,arguments); }, controlid:'shenwuzaishi', control:function(){ return lib.boss.boss_taowu.control.apply(this,arguments); }, init:function(){ return lib.boss.boss_taowu.init.apply(this,arguments); } }, boss_xiangliu:{ chongzheng:0, loopFirst:function(){ return game.boss.nextSeat.nextSeat; }, gameDraw:function(player){ return player==game.boss?8:4; }, minion:{ '2':'boss_zhuyin', '8':'boss_zhuyin', }, randchoice:function(){ return lib.boss.boss_taowu.randchoice.apply(this,arguments); }, controlid:'shenwuzaishi', control:function(){ return lib.boss.boss_taowu.control.apply(this,arguments); }, init:function(){ return lib.boss.boss_taowu.init.apply(this,arguments); } }, boss_zhuyan:{ chongzheng:0, loopFirst:function(){ return game.boss.nextSeat.nextSeat; }, gameDraw:function(player){ return player==game.boss?8:4; }, minion:{ '2':'boss_zhuyin', '8':'boss_zhuyin', }, randchoice:function(){ return lib.boss.boss_taowu.randchoice.apply(this,arguments); }, controlid:'shenwuzaishi', control:function(){ return lib.boss.boss_taowu.control.apply(this,arguments); }, init:function(){ return lib.boss.boss_taowu.init.apply(this,arguments); } }, boss_bifang:{ chongzheng:0, loopFirst:function(){ return game.boss.nextSeat.nextSeat; }, gameDraw:function(player){ return player==game.boss?8:4; }, minion:{ '2':'boss_zhuyin', '8':'boss_zhuyin', }, randchoice:function(){ return lib.boss.boss_taowu.randchoice.apply(this,arguments); }, controlid:'shenwuzaishi', control:function(){ return lib.boss.boss_taowu.control.apply(this,arguments); }, init:function(){ return lib.boss.boss_taowu.init.apply(this,arguments); } }, boss_yingzhao:{ chongzheng:0, loopFirst:function(){ return game.boss.nextSeat.nextSeat; }, gameDraw:function(player){ return player==game.boss?8:4; }, minion:{ '2':'boss_zhuyin', '8':'boss_zhuyin', }, randchoice:function(){ return lib.boss.boss_taowu.randchoice.apply(this,arguments); }, controlid:'shenwuzaishi', control:function(){ return lib.boss.boss_taowu.control.apply(this,arguments); }, init:function(){ return lib.boss.boss_taowu.init.apply(this,arguments); } }, boss_hundun:{ chongzheng:0, loopFirst:function(){ return game.boss.nextSeat.nextSeat; }, gameDraw:function(player){ return player==game.boss?8:4; }, minion:{ '2':'boss_zhuyin', '8':'boss_zhuyin', }, randchoice:function(){ return lib.boss.boss_taowu.randchoice.apply(this,arguments); }, controlid:'shenwuzaishi', control:function(){ return lib.boss.boss_taowu.control.apply(this,arguments); }, init:function(){ return lib.boss.boss_taowu.init.apply(this,arguments); } }, boss_taotie:{ chongzheng:0, loopFirst:function(){ return game.boss.nextSeat.nextSeat; }, gameDraw:function(player){ return player==game.boss?8:4; }, minion:{ '2':'boss_zhuyin', '8':'boss_zhuyin', }, randchoice:function(){ return lib.boss.boss_taowu.randchoice.apply(this,arguments); }, controlid:'shenwuzaishi', control:function(){ return lib.boss.boss_taowu.control.apply(this,arguments); }, init:function(){ return lib.boss.boss_taowu.init.apply(this,arguments); } }, boss_taowu:{ chongzheng:0, loopFirst:function(){ return game.boss.nextSeat.nextSeat; }, gameDraw:function(player){ return player==game.boss?8:4; }, minion:{ '2':'boss_zhuyin', '8':'boss_zhuyin', }, randchoice:function(name,list){ if(Math.random()>1/3){ return name; } else{ var arr=['shen_caocao','shen_simayi','shen_guanyu','shen_zhugeliang','shen_zhaoyun','shen_zhouyu','shen_lvmeng','shen_lvbu','shen_liubei','shen_luxun','shen_ganning','ol_zhangliao','shen_zhenji','shen_caopi','key_kagari','key_shiki','key_hina']; arr.removeArray(list); return arr.randomGet(); } }, controlid:'shenwuzaishi', control:function(type,control){ if(type=='cancel'){ if(!control.classList.contains('glow')) return; var dialog=control.dialog; dialog.content.removeChild(control.backup1); dialog.buttons.removeArray(control.backup2); game.uncheck(); game.check(); } else{ var control=ui.create.control('神将',function(){ if(ui.cheat2&&ui.cheat2.dialog==_status.event.dialog){ return; } var dialog=_status.event.dialog; this.dialog=dialog; if(this.classList.contains('glow')){ this.backup1.remove(); dialog.buttons.removeArray(this.backup2); } else{ var links=[]; for(var i=0;i<dialog.buttons.length;i++){ links.push(dialog.buttons[i].link); } for(var i=0;i<this.backup2.length;i++){ if(links.contains(this.backup2[i].link)){ this.backup2[i].style.display='none'; } else{ this.backup2[i].style.display=''; } } dialog.content.insertBefore(this.backup1,dialog.buttons[0].parentNode); dialog.buttons.addArray(this.backup2); } this.classList.toggle('glow'); game.uncheck(); game.check(); }); control.backup1=ui.create.div('.buttons'); control.backup2=ui.create.buttons(['shen_caocao','shen_simayi','shen_guanyu','shen_zhugeliang','shen_zhaoyun','shen_zhouyu','shen_lvmeng','shen_lvbu','shen_liubei','shen_luxun','shen_ganning','ol_zhangliao','shen_zhenji','shen_caopi','key_kagari','key_shiki','key_hina'],'character',control.backup1); return control; } }, init:function(){ game.addGlobalSkill('boss_shenwuzaishi'); game.addGlobalSkill('TheDayIBecomeAGod'); game.addGlobalSkill('thedayibecomeagod'); var list=['lebu','bingliang']; for(var i=0;i<game.players.length;i++){ switch(game.players[i].name1){ case 'shen_guanyu':{ game.players[i].equip(game.createCard2('guilongzhanyuedao','spade',5)); lib.inpile.add('guilongzhanyuedao'); list.push('qinglong'); break; } case 'shen_zhugeliang':{ game.players[i].equip(game.createCard2('qimenbagua','spade',2)); list.push('bagua'); lib.inpile.add('qimenbagua'); break; } case 'shen_zhouyu':{ game.players[i].equip(game.createCard2('chiyanzhenhunqin','diamond',1)); list.push('zhuque'); lib.inpile.add('chiyanzhenhunqin'); break; } case 'shen_caocao':{ game.players[i].equip(game.createCard2('juechenjinge','spade',5)); list.push('jueying'); lib.inpile.add('juechenjinge'); break; } case 'shen_zhaoyun':{ game.players[i].equip(game.createCard2('chixueqingfeng','spade',6)); list.push('qinggang'); lib.inpile.add('chixueqingfeng'); break; } case 'shen_lvbu':{ game.players[i].equip(game.createCard2('xiuluolianyuji','diamond',12)); list.push('fangtian'); lib.inpile.add('xiuluolianyuji'); break; } case 'shen_simayi':{ game.players[i].equip(game.createCard2('xuwangzhimian','diamond',4)); lib.inpile.add('xuwangzhimian'); break; } case 'shen_liubei':{ game.players[i].equip(game.createCard2('longfenghemingjian','spade',2)); lib.inpile.add('longfenghemingjian'); list.push('cixiong'); break; } case 'shen_lvmeng':{ game.players[i].equip(game.createCard2('guofengyupao','diamond',3)); lib.inpile.add('guofengyupao'); break; } case 'shen_luxun':{ game.players[i].equip(game.createCard2('qicaishenlu','diamond',3)); lib.inpile.add('qicaishenlu'); break; } case 'shen_ganning':case 'key_iwasawa':{ game.players[i].equip(game.createCard2('jinwuluorigong','heart',5)); lib.inpile.add('jinwuluorigong'); list.push('qilin'); break; } case 'ol_zhangliao':case 'key_noda':{ game.players[i].equip(game.createCard2('xingtianpojunfu','diamond',5)); lib.inpile.add('xingtianpojunfu'); list.push('guanshi'); break; } case 'shen_zhenji':{ game.players[i].equip(game.createCard2('lingsheji','club',12)); lib.inpile.add('lingsheji'); break; } case 'shen_caopi':{ game.players[i].equip(game.createCard2('shanrangzhaoshu','spade',13)); lib.inpile.add('shanrangzhaoshu'); break; } case 'key_kagari':{ game.players[i].equip(game.createCard2('goujiangdesidai','heart',1)); lib.inpile.add('goujiangdesidai'); break; } case 'key_shiki':{ game.players[i].equip(game.createCard2('niaobaidaowenha','diamond',13)); lib.inpile.add('niaobaidaowenha'); break; } case 'key_hina':{ game.players[i].equip(game.createCard2('shenzhixiunvfu','spade',13)); lib.inpile.add('shenzhixiunvfu'); break; } } } lib.inpile.remove('wuzhong'); lib.inpile.remove('jiedao'); lib.inpile.add('sadouchengbing'); lib.inpile.add('yihuajiemu'); lib.inpile.add('gubuzifeng'); for(var i=0;i<ui.cardPile.childElementCount;i++){ var node=ui.cardPile.childNodes[i]; if(node.name=='wuzhong'){ node.init([node.suit,node.number,'sadouchengbing']); } else if(node.name=='jiedao'){ node.init([node.suit,node.number,'yihuajiemu']); } else if(list.contains(node.name)){ lib.inpile.remove(node.name); node.remove(); } } var cards=[ game.createCard2('gubuzifeng','club',5), game.createCard2('gubuzifeng','diamond',7) ]; while(cards.length>0){ ui.cardPile.insertBefore(cards.shift(),ui.cardPile.childNodes[get.rand(0,ui.cardPile.childElementCount-1)]); } lib.inpile.sort(lib.sort.card); } }, boss_chiyanshilian:{ chongzheng:0, loopType:2, checkResult:function(player){ if(player==game.boss&&game.boss.name!='boss_yandi'){ return false; } }, init:function(){ _status.additionalReward=function(){ return 500; } lib.inpile.remove('shandian'); lib.inpile.remove('huoshan'); lib.inpile.remove('hongshui'); lib.inpile.remove('fulei'); lib.inpile.add('honghuangzhili'); lib.inpile.sort(lib.sort.card); for(var i=0;i<ui.cardPile.childElementCount;i++){ var node=ui.cardPile.childNodes[i]; if(node.name=='shandian'){ node.classList.remove('fullskin'); node.classList.remove('thunder'); node.init([node.suit,node.number,'honghuangzhili']); } else if(['huoshan','hongshui','fulei'].contains(node.name)){ node.remove(); } } } }, boss_qingmushilian:{ chongzheng:0, loopType:2, checkResult:function(player){ if(player==game.boss&&game.boss.name!='boss_taihao'){ return false; } }, init:function(){ lib.boss.boss_chiyanshilian.init(); } }, boss_baimangshilian:{ chongzheng:0, loopType:2, checkResult:function(player){ if(player==game.boss&&game.boss.name!='boss_shaohao'){ return false; } }, init:function(){ lib.boss.boss_chiyanshilian.init(); } }, boss_xuanlinshilian:{ chongzheng:0, loopType:2, checkResult:function(player){ if(player==game.boss&&game.boss.name!='boss_zhuanxu'){ return false; } }, init:function(){ lib.boss.boss_chiyanshilian.init(); } }, boss_zhuoguiquxie:{ chongzheng:0, checkResult:function(player){ if(player==game.boss&&game.boss.name!='boss_yecha'&&game.boss.name!='boss_luocha'){ return false; } }, init:function(){ _status.additionalReward=function(){ return 500; } } }, boss_qinguangwang:{ chongzheng:0, checkResult:function(player){ if(player==game.boss&&(!_status.shidianyanluo_level||_status.shidianyanluo_level<3)){ return false; } }, init:function(){ _status.shidianyanluo_level=0; lib.inpile.remove('muniu'); for(var i=0;i<ui.cardPile.childElementCount;i++){ if(ui.cardPile.childNodes[i].name=='muniu'){ ui.cardPile.childNodes[i].remove(); break; } } _status.additionalReward=function(){ return 500; } }, }, boss_nianshou:{ chongzheng:0, init:function(){ game.boss.node.action.classList.add('freecolor'); game.boss.node.action.style.opacity=1; game.boss.node.action.style.letterSpacing='4px'; game.boss.node.action.style.marginRight=0; game.boss.node.action.style.fontFamily='huangcao'; game.boss.node.action.innerHTML=''; _status.additionalReward=function(){ return Math.round(Math.pow(_status.damageCount,2.4))*2; } var time=360; var interval=setInterval(function(){ if(_status.over){ clearInterval(interval); return; } var sec=time%60; if(sec<10){ sec='0'+sec; } game.boss.node.action.innerHTML=Math.floor(time/60)+':'+sec; if(time<=0){ delete _status.additionalReward; if(typeof _status.coin=='number'){ if(game.me==game.boss){ _status.coin+=Math.round(Math.pow(_status.damageCount,2.4)); } else{ _status.coin+=Math.round(Math.pow(_status.damageCount,1.8)); } } game.forceOver(true); clearInterval(interval); } time--; },1000); _status.damageCount=0; ui.damageCount=ui.create.system('伤害: 0',null,true); } }, boss_nianshou_heti:{ chongzheng:0, }, boss_zhangjiao:{ // loopType:2, }, boss_caiwenji:{ loopType:2, }, boss_pangtong:{ loopType:2, chongzheng:12 }, boss_zhenji:{ chongzheng:4, }, boss_lvbu1:{ loopType:2, gameDraw:function(player){ if(player==game.boss) return 8; if(player==game.boss.previous) return 5; return 4; }, loopFirst:function(){ return game.boss.nextSeat; }, init:function(){ lib.inpile.remove('wugu'); lib.inpile.remove('taoyuan'); lib.inpile.remove('bagua'); lib.inpile.remove('tengjia'); lib.inpile.remove('fangtian'); lib.inpile.remove('muniu'); lib.inpile.addArray(['wushuangfangtianji','shufazijinguan','hongmianbaihuapao','linglongshimandai','lianjunshengyan']); lib.inpile.sort(lib.sort.card); var equiplist=[]; for(var i=0;i<ui.cardPile.childElementCount;i++){ var node=ui.cardPile.childNodes[i]; if(node.name=='bagua'){ node.init([node.suit,node.number,'linglongshimandai']); equiplist.push(node); } else if(node.name=='tengjia'){ node.init([node.suit,node.number,'hongmianbaihuapao']); equiplist.push(node); } else if(node.name=='fangtian'){ node.init([node.suit,node.number,'wushuangfangtianji']); equiplist.push(node); } else if(node.name=='muniu'){ node.init([node.suit,node.number,'shufazijinguan']); equiplist.push(node); } else if(node.name=='wugu'||node.name=='taoyuan'){ node.init([node.suit,node.number,'lianjunshengyan']); } } equiplist.randomSort(); var next=game.createEvent('boss_jingjia'); next.player=game.boss; next.cards=equiplist; next.setContent(function(){ 'step 0' if(!cards.length){ event.finish();return; } player.logSkill('boss_jingjia'); event.num=1.5; 'step 1' var card=cards.shift(); if(player.isEmpty(get.subtype(card))&&Math.random()<event.num){ player.equip(card); event.num=0.5; } if(cards.length) event.redo(); }); } }, boss_zuoci:{ chongzheng:4, }, boss_diaochan:{ chongzheng:4, }, boss_huangyueying:{ chongzheng:12, }, boss_sunce:{ loopType:2, loopFirst:function(){ return game.boss.previousSeat; }, gameDraw:function(player){ return player==game.boss?8:4; }, init:function(){ _status.taoni_over=get.copy(game.over); }, }, global:{ loopType:1, chongzheng:6 }, }, skill:{ niaobaidaowenha_skill:{ trigger:{player:'loseMaxHpAfter'}, direct:true, content:function(){ 'step 0' event.count=trigger.num; 'step 1' event.count--; player.chooseTarget(get.prompt2('niaobaidaowenha_skill'),lib.filter.notMe).set('ai',function(target){ return get.attitude(_status.event.player,target)/(target.maxHp||1) }); 'step 2' if(result.bool){ var target=result.targets[0]; player.logSkill('niaobaidaowenha_skill',target); target.gainMaxHp(); target.recover(); if(event.count) event.goto(1); } }, }, goujiangdesidai_skill:{ inherit:'kagari_zongsi', filter:function(event,player){ return !player.hasSkill('kagari_zongsi')||player.getStat('skill').kagari_zongsi; }, }, gubuzifeng_disable:{ init:function(player,skill){ if(!player.storage[skill]) player.storage[skill]=[]; }, onremove:function(player,skill){ player.enableSkill(skill); delete player.storage[skill]; }, charlotte:true, locked:true, mark:true, intro:{ content:function(storage,player,skill){ var list=[]; for(var i in player.disabledSkills){ if(player.disabledSkills[i].contains(skill)){ list.push(i) } } if(list.length){ var str='失效技能:'; for(var i=0;i<list.length;i++){ if(lib.translate[list[i]+'_info']){ str+=get.translation(list[i])+'、'; } } return str.slice(0,str.length-1); } } } }, thedayibecomeagod:{ trigger:{player:'die'}, direct:true, filter:function(event,player){return player.group=='shen'}, forceDie:true, skillAnimation:true, animationColor:'kami', content:function(){ 'step 0' player.chooseTarget(get.prompt2('thedayibecomeagod'),function(card,player,target){ return target.isFriendOf(player); }).set('forceDie',true).ai=function(target){ return get.attitude(_status.event.player,target); }; 'step 1' if(result.bool){ var target=result.targets[0]; event.target=target; player.logSkill('thedayibecomeagod',target); if(target.group!='shen'){ target.changeGroup('shen'); game.log('此刻,便是',target,'成为神明之日!'); event.finish(); } else target.turnOver(false); } else event.finish(); 'step 2' if(target.isDamaged()) target.recover(target.maxHp-target.hp); 'step 3' target.drawTo(5); }, }, TheDayIBecomeAGod:{ trigger:{player:'useCard1'}, ruleSkill:true, popup:false, forced:true, prompt:'是否将此【杀】改为神属性?', filter:function(event,player){ return player.group=='shen'&&event.card.name=='sha'; }, content:function(){ game.log(trigger.card,'被改为神属性'); trigger.card.nature='kami'; } }, shanrangzhaoshu:{ trigger:{global:'gainEnd'}, direct:true, filter:function(event,player){ return event.player!=player&&event.player!=_status.currentPhase&&event.player.getHistory('gain')[0]==event&&player.countCards('he')+event.player.countCards('he')>0; }, content:function(){ 'step 0' event.target=trigger.player; var list=[]; if(player.countCards('he')>1) list.push('交给其一张牌'); if(trigger.player.countCards('he')>0) list.push('令其交给你一张牌'); event.list=list; player.chooseControl('cancel2').set('choiceList',list).set('prompt',get.prompt('shanrangzhaoshu',trigger.player)).set('ai',function(){ if(get.attitude(_status.event.player,_status.event.getTrigger().player)<0) return _status.event.getParent().list.length-1; return 'cancel2'; }); 'step 1' if(result.control=='cancel2'){ event.finish();return; } player.logSkill('shanrangzhaoshu',target); if(event.list[result.index][0]=='令'){ event.player=target; event.target=player; } 'step 2' player.chooseCard('he',true).set('filterCard',function(card,player){ if(player!=_status.event.getTrigger().player) return card!=player.getEquip('shanrangzhaoshu'); return true; }); 'step 3' if(result.cards&&result.cards.length) target.gain(result.cards,player,'giveAuto'); }, }, lingsheji:{ trigger:{player:'phaseUseEnd'}, equipSkill:true, direct:true, content:function(){ 'step 0' var list=['摸一张牌']; if(player.countCards('he')>1) list.push('将一张牌置于武将牌上,于回合结束后获得之'); player.chooseControl('cancel2').set('prompt',get.prompt('lingsheji')).set('choiceList',list).set('ai',function(){ var player=_status.event.player; if(player.countCards('e',function(card){ return card.name!='tengjia'&&get.value(card)<=0; })) return 1; if(!player.needsToDiscard()) return 0; return 1; }); 'step 1' if(result.control=='cancel2'){ event.finish();return; } player.logSkill('lingsheji'); if(result.index==0){ player.draw(); event.finish(); } else{ player.chooseCard('he',true,function(card,player){ return card!=player.getEquip(5); }).set('ai',function(card){ if(get.position(card)=='e'&&get.value(card)<=0) return 10; return (get.position(card)=='h'?2:1)*-get.value(card); }); } 'step 2' player.addSkill('lingsheji2'); player.lose(result.cards,ui.special,'toStorage'); player.markAuto('lingsheji2',result.cards); }, }, lingsheji2:{ trigger:{player:'phaseEnd'}, equipSkill:true, forced:true, popup:false, content:function(){ player.gain(player.getStorage('lingsheji2'),'gain2','log'); player.storage.lingsheji2.length=0; player.removeSkill('lingsheji2'); }, intro:{content:'cards'}, }, noda_axe:{ trigger:{player:'useCardToPlayered'}, equipSkill:true, direct:true, filter:function(event,player){ return player.isPhaseUsing()&&player!=event.target&&event.targets.length==1&&player.countCards('he')>2; }, content:function(){ 'step 0' player.chooseToDiscard('he',get.prompt('noda_axe',trigger.target),2,'弃置两张牌,令'+get.translation(trigger.target)+'本回合内不能使用或打出牌且防具技能无效。',function(card,player){ return card!=player.getEquip(1); }).set('logSkill',['noda_axe',trigger.target]).set('goon',function(event,player){ if(player.hasSkill('noda_axe2')) return false; if(event.getParent().excluded.contains(player)) return false; if(get.attitude(event.player,player)>0){ return false; } if(get.type(event.card)=='trick'&&event.player.hasWuxie()) return true; if(get.tag(event.card,'respondSha')){ if(!player.hasSha()) return false; return true; } else if(get.tag(event.card,'respondShan')){ if(!player.hasShan()) return false; return true; } return false; }(trigger,trigger.target)).set('ai',function(card){ if(_status.event.goon) return 7.5-get.value(card); return 0; }); 'step 1' if(result.bool) trigger.target.addTempSkill('noda_axe2'); }, }, noda_axe2:{ equipSkill:true, mod:{ cardEnabled:function(){return false}, cardSavable:function(){return false}, cardRespondable:function(){return false}, }, mark:true, intro:{ content:'不能使用或打出牌且防具技能无效直到回合结束', }, ai:{unequip2:true}, }, iwasawa_crowbow:{ equipSkill:true, trigger:{player:'loseAfter'}, direct:true, filter:function(event,player){ return event.hs&&event.hs.length>1&&player.isPhaseUsing(); }, content:function(){ 'step 0' event.num=trigger.hs.length; player.chooseTarget(get.prompt('iwasawa_crowbow'),'弃置一名其他角色的'+get.cnNumber(event.num)+'张牌',function(card,player,target){ return player!=target&&target.countDiscardableCards(player,'he')>0; }).set('ai',function(target){ var att=get.attitude(_status.event.player,target); if(target.countDiscardableCards(_status.event.player,'he')>=_status.event.getParent().num) att=att*2; return -att; }); 'step 1' if(result.bool){ var target=result.targets[0]; player.logSkill('iwasawa_crowbow',target); player.discardPlayerCard(target,'he',true,num); } }, }, boss_panguan:{ mod:{ targetEnabled:function(card){ if(get.type(card)=='delay') return false; }, }, }, boss_juhun:{ trigger:{player:'phaseJieshuBegin'}, forced:true, content:function(){ var list=game.filterPlayer(function(current){ return current!=player; }); if(list.length){ var target=list.randomGet(); player.line(target); target[['turnOver','link'].randomGet()](); } }, }, boss_wangxiang:{ trigger:{player:'die'}, forced:true, forceDie:true, content:function(){ game.countPlayer(function(current){ if(current!=player&¤t.countCards('e')){ player.line(current); current.discard(current.getCards('e')); }; }); }, }, boss_xhuanren:{ nobracket:true, global:'boss_xhuanren2' }, boss_xhuanren2:{ trigger:{player:'dieBegin'}, forced:true, priority:-10, fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, filter:function(event,player){ if(lib.config.mode!='boss') return false; if(_status.shidianyanluo_level==undefined) return false; return player==game.boss; }, content:function(){ var next=game.createEvent('shidianyanluo_huanren',false,trigger.getParent()); next.player=player; next.forceDie=true; next.setContent(lib.skill.boss_xhuanren2.contentx); }, contentx:function(){ 'step 0' game.delay(); 'step 1' var list=[ ['boss_chujiangwang','boss_songdiwang','boss_wuguanwang','boss_yanluowang'], ['boss_bianchengwang','boss_taishanwang','boss_dushiwang','boss_pingdengwang'], ['boss_zhuanlunwang'], ][_status.shidianyanluo_level]; if(list.length==1) event._result={control:list[0]}; else player.chooseControl(list).set('prompt','请选择下一个出战的角色').set('forceDie',true).ai=function(){ return list.randomGet(); }; 'step 2' _status.shidianyanluo_level++; game.changeBoss(result.control); } }, boss_newhuanren:{ nobracket:true, global:'boss_newhuanren2', trigger:{global:'gameStart'}, popup:false, forced:true, superCharlotte:true, charlotte:true, fixed:true, content:function(){ if(get.mode()!='boss') return; //孟婆 if(!_status.shidianyanluo_mengpo&&Math.random()<=0.4){ if(game.me!=game.boss){ game.boss.changeSeat(6); } else{ game.boss.nextSeat.changeSeat(3); game.boss.previousSeat.changeSeat(5); } // game.addBossFellow(game.me==game.boss?1:7,'boss_mengpo'); var fellow=game.addFellow(game.me==game.boss?1:7,'boss_mengpo','zoominanim'); if(_status.shidianyanluo_level!=0){ fellow.directgain(get.cards(4)); } fellow.side=true; fellow.identity='zhong'; fellow.setIdentity('zhong'); game.addVideo('setIdentity',fellow,'zhong'); _status.shidianyanluo_mengpo=true; } var list=['luxun','re_luxun','zhangchunhua','zuoci','re_zuoci','re_yuji','xin_yuji','jiangfei','kongrong'];//禁将 game.countPlayer(function(current){ if(current!=game.boss){ for(var i=0;i<list.length;i++){ if(current.name==list[i]||current.name2==list[i]){current.init('sunce');} } } }); }, }, boss_newhuanren2:{ trigger:{global:['die']}, forced:true, priority:-10, fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, forceDie:true, filter:function(event,player){ if(lib.config.mode!='boss') return false; if(_status.shidianyanluo_level==undefined) return false; return player==game.boss&&event.player==player; }, content:function(){ var next=game.createEvent('shidianyanluo_huanren',false,trigger.getParent()); next.player=player; next.forceDie=true; next.setContent(lib.skill.boss_newhuanren2.contentx); }, contentx:function(){ 'step 0' game.delay(); var list=game.filterPlayer(); for(var x=0;x<list.length;x++){ list[x].removeSkill('diaohulishan'); list[x].removeSkill('guogong2'); } var list=game.boss.getEnemies(); for(var x=0;x<list.length;x++){ list[x].removeSkill('boss_wangshi2'); } 'step 1' var list=[ ['boss_chujiangwang','boss_songdiwang','boss_wuguanwang','boss_yanluowang'], ['boss_bianchengwang','boss_taishanwang','boss_dushiwang','boss_pingdengwang'], ['boss_zhuanlunwang'], ][_status.shidianyanluo_level]; //如果mengpo死亡且50回合内通过第三关,list[2]变成地藏王 if(game.phaseNumber<=50&&_status.shidianyanluo_level==2&&_status.shidianyanluo_mengpodie==true){ list=['boss_dizangwang']; } if(list.length==1) event._result={control:list[0]}; else{ player.chooseControl(list).set('forceDie',true).set('choice',list.randomGet()).set('ai',function(){return _status.event.choice}).prompt='选择下一个登场的武将'; } 'step 2' _status.shidianyanluo_level++; game.changeBoss(result.control); //地藏王登场摸3 if(result.control=='boss_dizangwang'){game.boss.draw(3);} //计回合数 var level=_status.shidianyanluo_level; //孟婆 if(!_status.shidianyanluo_mengpo){ if(Math.random()<=0.5||level==2){ if(game.me!=game.boss){ game.boss.changeSeat(6); } else{ game.boss.nextSeat.changeSeat(3); game.boss.previousSeat.changeSeat(5); } //game.addBossFellow(); var fellow=game.addFellow(game.me==game.boss?1:7,'boss_mengpo','zoominanim'); if(_status.shidianyanluo_level!=0){ fellow.directgain(get.cards(4)); } fellow.side=true; fellow.identity='zhong'; fellow.setIdentity('zhong'); game.addVideo('setIdentity',fellow,'zhong'); _status.shidianyanluo_mengpo=true; } } else{ //移除孟婆 game.countPlayer2(function(current){ if(current.name=='boss_mengpo'){ current.removed=true; current.classList.add('dead'); current.remove(); game.players.remove(current); } }); } //然后是boss进行回合 game.phaseLoop(game.boss); } }, boss_bingfeng:{ trigger:{player:'die'}, forceDie:true, forced:true, filter:function(event){ return event.source&&!event.source.isTurnedOver(); }, logTarget:'source', content:function(){ trigger.source.turnOver(); } }, boss_heisheng:{ trigger:{player:'die'}, forceDie:true, forced:true, content:function(){ player.line(game.players.slice(0)); game.countPlayer(function(current){ if(current!=player) current.link(); }); }, }, boss_shengfu:{ trigger:{player:'phaseJieshuBegin'}, forced:true, popup:false, content:function(){ var list=[]; game.countPlayer(function(current){ if(current==player) return; var es=current.getCards('e',{subtype:['equip3','equip4','equip6']}) if(es.length) list.push([current,es]); }); if(list.length){ player.logSkill('boss_heisheng'); var current=list.randomGet(); player.line(current[0]); current[0].discard(current[1].randomGet()); } }, }, boss_zhiwang:{ derivation:'boss_zhiwang_planetarian', trigger:{global:'gainEnd'}, filter:function(event,player){ return event.player!=player&&!(event.getParent().name=='draw'&&event.getParent(2).name=='phaseDraw')&&event.player.countCards('h'); }, forced:true, logTarget:'player', content:function(){ var evt=trigger.getParent('boss_zhiwang'); if(evt&&evt.name=='boss_zhiwang'){ trigger.player.uninit(); trigger.player.init('sunce'); } var hs=trigger.player.getCards('h'); if(hs.length){ trigger.player.discard(hs.randomGet()); } }, subSkill:{planetarian:{}}, }, boss_gongzheng:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, filter:function(event,player){ return player.countCards('j')>0; }, content:function(){ player.discard(player.getCards('j').randomGet()) }, }, boss_xuechi:{ trigger:{player:'phaseJieshuBegin'}, forced:true, content:function(){ var list=game.players.slice(0); list.remove(player); var target=list.randomGet(); player.line(target); target.loseHp(2); }, }, boss_tiemian:{ inherit:'renwang_skill', priority:-0.3, equipSkill:false, filter:function(event,player){ if(!player.isEmpty(2)) return false; return lib.skill.renwang_skill.filter.apply(this,arguments); }, }, boss_zhadao:{ inherit:'qinggang_skill', equipSkill:false, }, boss_zhuxin:{ trigger:{player:'die'}, forceDie:true, forced:true, content:function(){ 'step 0' player.chooseTarget('【诛心】:请选择一名角色,令其受到2点伤害。',function(card,player,target){ return target!=player&&!game.hasPlayer(function(current){ return current!=player&¤t!=target&¤t.hp<target.hp; }) }).set('forceDie',true).ai=function(target){ return -get.attitude(_status.event.player,target); }; 'step 1' if(result.bool){ var target=result.targets[0]; player.line(target); target.damage(2); } }, }, boss_leizhou:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, content:function(){ var list=game.players.slice(0); list.remove(player); if(list.length){ var target=list.randomGet(); player.line(target); target.damage('thunder'); } } }, boss_leifu:{ trigger:{player:'phaseJieshuBegin'}, forced:true, content:function(){ var list=game.players.slice(0); list.remove(player); if(list.length){ var target=list.randomGet(); player.line(target); target.link(); } } }, boss_leizhu:{ trigger:{player:'die'}, forceDie:true, forced:true, content:function(){ var list=game.players.slice(0); list.remove(player); if(list.length){ list.sort(lib.sort.seat); player.line(list); for(var i=0;i<list.length;i++){ list[i].damage('thunder'); } } } }, boss_fudu:{ trigger:{global:'useCard'}, forced:true, filter:function(event,player){ return event.card.name=='tao'&&event.player!=player&&game.players.length>2; }, content:function(){ var list=game.players.slice(0); list.remove(player); list.remove(trigger.player); var target=list.randomGet(); player.line(target); target.loseHp(); }, }, boss_kujiu:{ trigger:{global:'phaseZhunbeiBegin'}, forced:true, filter:function(event,player){ return event.player!=player; }, logTarget:'player', content:function(){ 'step 0' trigger.player.loseHp(); 'step 1' trigger.player.useCard({name:'jiu'},trigger.player); }, }, boss_renao:{ trigger:{player:'die'}, forceDie:true, forced:true, content:function(){ var list=game.players.slice(0); list.remove(player); if(list.length){ var target=list.randomGet(); player.line(target); target.damage(3,'fire'); } } }, boss_remen:{ equipSkill:true, trigger:{target:['useCardToBefore']}, forced:true, priority:6, audio:true, filter:function(event,player){ if(!player.isEmpty('equip2')) return false; if(event.card.name=='nanman') return true; if(event.card.name=='wanjian') return true; return event.card.name=='sha'&&!get.nature(event.card); }, content:function(){ trigger.cancel(); }, ai:{ effect:{ target:function(card,player,target,current){ if(!target.isEmpty('equip2')) return; if(card.name=='nanman'||card.name=='wanjian') return 'zerotarget'; if(card.name=='sha'){ var equip1=player.getEquip(1); if(equip1&&equip1.name=='zhuque') return 1.9; if(!card.nature) return 'zerotarget'; } } } } }, boss_zhifen:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, content:function(){ 'step 0' var list=game.players.slice(0); list.remove(player); if(list.length){ var target=list.randomGet(); player.line(target); event.target=target; if(target.countGainableCards(player,'h')) player.gainPlayerCard(target,'h',true); } else event.finish(); 'step 1' target.damage('fire'); } }, boss_huoxing:{ trigger:{player:'die'}, forceDie:true, forced:true, content:function(){ var list=game.players.slice(0); list.remove(player); if(list.length){ list.sort(lib.sort.seat); player.line(list); for(var i=0;i<list.length;i++){ list[i].damage('fire'); } } } }, boss_suozu:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, content:function(){ var list=game.players.slice(0); list.remove(player); if(list.length){ list.sort(lib.sort.seat); player.line(list); for(var i=0;i<list.length;i++){ list[i].link(); } } } }, boss_abi:{ trigger:{player:'damageEnd'}, forced:true, filter:function(event){ return event.source!=undefined; }, logTarget:'source', content:function(){ trigger.source.damage().nature=['fire','thunder'].randomGet(); }, }, boss_pingdeng:{ trigger:{player:'die'}, forceDie:true, forced:true, content:function(){ 'step 0' var list=game.filterPlayer(function(current){ return current!=player&&!game.hasPlayer(function(current2){ return current2.hp>current.hp; }); }); if(list.length){ var target=list.randomGet() player.line(target); target.damage(2).nature=lib.linked.randomGet(); } else event.finish(); 'step 1' var list=game.filterPlayer(function(current){ return current!=player&&!game.hasPlayer(function(current2){ return current2.hp>current.hp; }); }); if(list.length){ var target=list.randomGet(); player.line(target); target.damage().nature=lib.linked.randomGet(); } }, }, boss_lunhui:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, filter:function(event,player){ return player.hp<=2&&game.hasPlayer(function(current){ return current!=player&¤t.hp>2; }); }, content:function(){ var list=game.filterPlayer(function(current){ return current!=player&¤t.hp>2; }); if(list.length){ var target=list.randomGet(); player.line(target); var hp1=player.hp; var hp2=target.hp; player.hp=Math.min(player.maxHp,hp2); target.hp=Math.min(target.maxHp,hp1); player.update(); target.update(); game.log(player,'和',target,'交换了体力值') } }, }, boss_wangsheng:{ trigger:{player:'phaseUseBegin'}, forced:true, content:function(){ var name=['nanman','wanjian'].randomGet(); player.useCard({name:name},game.filterPlayer(function(current){ return player.canUse({name:name},current) }),'noai'); }, }, boss_zlfanshi:{ trigger:{player:'damageEnd'}, forced:true, content:function(){ if(player.hasSkill('boss_zlfanshi_terra')){ var list=game.players.slice(0); list.remove(player); if(list.length){ var target=list.randomGet(); player.line(target); target.damage(); } } else player.addTempSkill('boss_zlfanshi_terra'); }, }, boss_zlfanshi_terra:{charlotte:true}, //孟婆: "boss_shiyou":{ audio:true, trigger:{global:'loseEnd'}, filter:function(event,player){ var evt=event.getParent(3); return event.type=='discard'&&evt.name=='phaseDiscard'&&evt.player==event.player&&evt.player!=player&&event.cards2&&event.cards2.filterInD('d').length>0; }, content:function(){ "step 0" event.cards=trigger.cards2.filterInD('d'); "step 1" var next=player.chooseCardButton(get.prompt('boss_shiyou'),event.cards,[1,event.cards.length]).set('ai',function(button){ return get.value(button.link,player); }).set('filterButton',function(button){ for(var i=0;i<ui.selected.buttons.length;i++){ if(get.suit(ui.selected.buttons[i].link)==get.suit(button.link)) return false; } return true; }); "step 2" if(result.bool){ player.gain(result.links,'gain2','log'); } }, }, "boss_wangshi":{ trigger:{global:'phaseZhunbeiBegin'}, forced:true, audio:true, filter:function(event,player){ if(player.getEnemies().contains(event.player)){return true;} return false; }, logTarget:'player', content:function(){ var list=['basic','trick','equip'].randomGet(); trigger.player.addTempSkill('boss_wangshi2'); trigger.player.storage.boss_wangshi2=[list]; game.log(trigger.player,'本回合不能使用或打出',list,'牌'); trigger.player.markSkill('boss_wangshi2'); }, }, "boss_wangshi2":{ unique:true, charlotte:true, intro:{ content:function(storage){ return '不能使用或打出'+get.translation(storage)+'牌'; } }, init:function(player,skill){ if(!player.storage[skill]) player.storage[skill]=[]; }, //mark:true, onremove:true, mod:{ cardEnabled2:function(card,player){ if(player.storage.boss_wangshi2.contains(get.type(card,'trick'))) return false; }, }, }, "boss_mengpohuihun1":{ mode:['boss'], trigger:{ player:'loseEnd', global:'cardsDiscardEnd', }, filter:function(event,player){ for(var i=0;i<event.cards.length;i++){ if(event.cards[i].name=='boss_mengpohuihun'&&get.position(event.cards[i],true)=='d'){ return true; } } return false; }, forced:true, popup:false, content:function(){ var cards=[]; for(var i=0;i<trigger.cards.length;i++){ if(trigger.cards[i].name=='boss_mengpohuihun'&&get.position(trigger.cards[i])=='d'){ cards.push(trigger.cards[i]); } } if(cards.length){ game.cardsGotoSpecial(cards); game.log(cards,'已被移出游戏'); player.popup('回魂'); } }, }, "boss_wanghun":{ audio:true, forced:true, trigger:{player:'die'}, forceDie:true, content:function(){ _status.shidianyanluo_mengpodie=true; var list=player.getEnemies(); if(list.length>0){ for(var x=0;x<list.length;x++){ list[x].removeSkill('boss_wangshi2'); } var ran1=list.randomGet();//第一个角色 list.remove(ran1);//移除 var skills1=ran1.getSkills(true,false); if(skills1.length){ for(var i=0;i<skills1.length;i++){ if(get.skills[i]||lib.skill[skills1[i]].charlotte||!lib.translate[skills1[i]+'_info']||lib.skill[skills1[i]].zhuSkill==true){ skills1.splice(i--,1); } }//排除技能,然后随机失去一个可以失去的技能 if(skills1.length>0){ skills1=skills1.randomGet(); ran1.disableSkill('boss_wanghun',skills1); game.log(ran1,'失去了',skills1); } else{ game.log(ran1,'没有技能可失去'); } } if(list.length>0){ var ran2=list.randomGet();//第二个角色 list.remove(ran2);//移除 var skills2=ran2.getSkills(true,false); if(skills2.length){ for(var i=0;i<skills2.length;i++){ if(get.skills[i]||lib.skill[skills2[i]].charlotte||!lib.translate[skills2[i]+'_info']||lib.skill[skills2[i]].zhuSkill==true){ skills2.splice(i--,1); } }//排除技能,然后随机失去一个可以失去的技能 if(skills2.length>0){ skills2=skills2.randomGet(); ran2.disableSkill('boss_wanghun',skills2); game.log(ran2,'失去了',skills2); } else{ game.log(ran2,'没有技能可失去'); } } } //添加两张回魂 if(get.mode()=='boss'){ var card1=game.createCard('boss_mengpohuihun','heart',3,null); var card2=game.createCard('boss_mengpohuihun','club',4,null); var a=[]; if(ui.cardPile.childElementCount<3){ game.boss.getCards(4); } for(var i=0;i<ui.cardPile.childElementCount;i++){ a.push(i); } ui.cardPile.insertBefore(card1,ui.cardPile.childNodes[a.randomGet()]); a.push(a.length); ui.cardPile.insertBefore(card2,ui.cardPile.childNodes[a.randomGet()]); game.log('牌堆中添加了',card1,card2); game.updateRoundNumber(); } } }, }, //地藏王: "boss_bufo":{ audio:true, forced:true, trigger:{ player:['damageBegin4','phaseZhunbeiBegin'], }, filter:function(event,player,name){ if(name=='damageBegin4'){return event.num&&event.num>1;} return game.hasPlayer(function(target){ return player!=target&&get.distance(player,target)<=1; }); }, content:function(){ var name=event.triggername; if(name=='damageBegin4'){ trigger.num--;return; } else{ game.countPlayer(function(target){ if(player!=target&&get.distance(player,target)<=1){ target.damage(1,player,'fire'); } }); } }, }, "boss_wuliang":{ forced:true, audio:true, trigger:{ global:"gameDrawAfter", player:['phaseZhunbeiBegin','phaseJieshuBegin','enterGame'], }, filter:function(event,player,name){ if(name=='gameDrawAfter'||name=='enterGame'){ return true; } else if(name=='phaseZhunbeiBegin'){ return player.hp<3; } return true; }, content:function(){ var name=event.triggername; if(name=='phaseZhunbeiBegin'){ player.recover(3-player.hp);return; } else{ player.draw((name=='gameDrawAfter'||name=='enterGame')?3:2); } }, }, "boss_dayuan":{ trigger:{ global:"judge", }, audio:true, direct:true, lastDo:true, content:function (){ 'step 0' var card=trigger.player.judging[0]; var judge0=trigger.judge(card); var judge1=0; var choice='cancel2'; event.suitchoice='cancel2'; var attitude=get.attitude(player,trigger.player); var list=[]; event.suitx=['heart','diamond','club','spade']; for(var x=0;x<4;x++){ for(var i=1;i<14;i++){ list.add(i); var judge2=(trigger.judge({ name:get.name(card), suit:event.suitx[x], number:i, nature:get.nature(card), })-judge0)*attitude; if(judge2>judge1){ choice=i; event.suitchoice=event.suitx[x]; judge1=judge2; } } } list.push('cancel2'); event.suitx.push('cancel2'); player.chooseControl(list).set('ai',function(){ return _status.event.choice; }).set('choice',choice).prompt=get.prompt2(event.name); 'step 1' if(result.control!='cancel2'){ if(!event.logged){ event.logged=true; player.logSkill(event.name,trigger.player); } game.log(trigger.player,'判定结果点数为','#g'+result.control); player.popup(result.control,'fire'); if(!trigger.fixedResult) trigger.fixedResult={}; trigger.fixedResult.number=result.control; } player.chooseControl(event.suitx).set('ai',function(){ return _status.event.choice; }).set('choice',event.suitchoice).prompt=get.prompt2(event.name); 'step 2' if(result.control!='cancel2'){ if(!event.logged){ event.logged=true; player.logSkill(event.name,trigger.player); } game.log(trigger.player,'判定结果花色为','#g'+result.control); player.popup(result.control,'fire'); if(!trigger.fixedResult) trigger.fixedResult={}; trigger.fixedResult.suit=result.control; if(result.control=='club'||result.control=='spade'){ trigger.fixedResult.color='black'; } else if(result.control=='heart'||result.control=='diamond'){ trigger.fixedResult.color='red'; } } }, }, "boss_diting":{ audio:true, mod:{ globalFrom:function (from,to,distance){ return distance-1; }, globalTo:function (from,to,distance){ return distance+1; }, }, init:function(player){ player.$disableEquip('equip3'); player.$disableEquip('equip4'); }, enable:"phaseUse", position:'h', filter:function (event,player){ return player.countCards('he',{subtype:['equip3','equip4','equip6']})>0; }, filterCard:function (card){ return get.subtype(card)=='equip3'||get.subtype(card)=='equip4'||get.subtype(card)=='equip6'; }, check:function (card){ if(_status.event.player.isDisabled(get.subtype(card))) return 5; return 3-get.value(card); }, content:function(){ player.draw(); }, discard:false, visible:true, loseTo:'discardPile', prompt:"将一张坐骑牌置入弃牌堆并摸一张牌", delay:0.5, prepare:function (cards,player){ player.$throw(cards,1000); game.log(player,'将',cards,'置入了弃牌堆'); }, ai:{ order:10, result:{ player:1, }, }, }, /* "boss_sdyl_level":{ trigger:{global:'gameStart'}, forced:true, superCharlotte:true, charlotte:true, fixed:true, content:function(){}, contentplayer:function(player){ var list=[1,2,3,4,5]; var list2=["boss_sdyl_playerlevel1","boss_sdyl_playerlevel2","boss_sdyl_playerlevel3","boss_sdyl_playerlevel4","boss_sdyl_playerlevel5"]; player.removeAdditionalSkill('boss_sdyl_level'); var num=list.randomGet(); player.storage.boss_sdyl_level=num; var list3=list2.concat(); list3.length=num; player.addAdditionalSkill('boss_sdyl_level',list3); game.log(player,'的等阶为',num); if(num>1){ var a=function(card){ return get.type(card)=='equip'; }; for(var i=0;i<ui.cardPile.childNodes.length;i++){ if(a(ui.cardPile.childNodes[i])){ player.chooseUseTarget(ui.cardPile.childNodes[i],'noanimate','nopopup',true); ui.cardPile.removeChild(ui.cardPile.childNodes[i]); player.update(); game.delay(2); break; } } } }, contentboss:function(boss){ var list=[1,2,3,4,5]; var list2=["boss_sdyl_bosslevel1","boss_sdyl_bosslevel2","boss_sdyl_bosslevel3","boss_sdyl_bosslevel4","boss_sdyl_bosslevel5"]; boss.removeAdditionalSkill('boss_sdyl_level'); var num=list.randomGet(); boss.storage.boss_sdyl_level=num; var list3=list2.concat(); list3.length=num; boss.addAdditionalSkill('boss_sdyl_level',list3); game.log(boss,'的等阶为',num); if(num>1){ var a=function(card){ return get.type(card)=='equip'; }; for(var i=0;i<ui.cardPile.childNodes.length;i++){ if(a(ui.cardPile.childNodes[i])){ boss.chooseUseTarget(ui.cardPile.childNodes[i],'noanimate','nopopup',true); ui.cardPile.removeChild(ui.cardPile.childNodes[i]); boss.update(); game.delay(2); break; } } } }, }, "boss_sdyl_playerlevel1":{ fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, forced:true, }, "boss_sdyl_playerlevel3":{ fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, forced:true, init:function(player){ player.maxHp++; player.hp++; player.update(); }, mod:{ cardUsable:function (card,player,num){ if(card.name=='sha') return num+=1; }, }, }, "boss_sdyl_playerlevel2":{ fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, forced:true, }, "boss_sdyl_playerlevel4":{ fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, forced:true, trigger:{player:'phaseDrawBegin2'}, forced:true, filter:function (event,player){ return !event.numFixed; }, content:function(){ trigger.num++; }, }, "boss_sdyl_playerlevel5":{ init:function(player){ player.storage.boss_sdyl_playerlevel5=false; player.maxHp++; player.hp++; player.update(); }, audio:'niepan', unique:true, enable:'chooseToUse', mark:true, skillAnimation:true, animationStr:'重生', limited:true, animationColor:'orange', filter:function(event,player){ if(player.storage.boss_sdyl_playerlevel5) return false; if(event.type=='dying'){ if(player!=event.dying) return false; return true; } return false; }, content:function(){ 'step 0' player.awakenSkill('boss_sdyl_playerlevel5'); player.storage.boss_sdyl_playerlevel5=true; player.discard(player.getCards('j')); 'step 1' player.link(false); 'step 2' player.turnOver(false); 'step 3' player.drawTo(Math.min(5,player.maxHp)); 'step 4' player.recover(player.maxHp-player.hp); }, ai:{ order:1, skillTagFilter:function(player){ if(player.storage.boss_sdyl_playerlevel5) return false; if(player.hp>0) return false; }, save:true, result:{ player:function(player){ if(player.hp<=0) return 10; if(player.hp<=2&&player.countCards('he')<=1) return 10; return 0; } }, threaten:function(player,target){ if(!target.storage.boss_sdyl_playerlevel5) return 0.6; } }, intro:{ content:'limited' } }, "boss_sdyl_bosslevel1":{ fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, forced:true, }, "boss_sdyl_bosslevel3":{ fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, forced:true, init:function(player){ player.maxHp++; player.hp++; player.update(); }, trigger:{player:'phaseZhunbeiBegin'}, forced:true, content:function(){ var card=get.cardPile('sha'); if(card){ player.gain(card); } }, mod:{ cardUsable:function (card,player,num){ if(card.name=='sha') return num+=1; }, }, }, "boss_sdyl_bosslevel2":{ fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, forced:true, }, "boss_sdyl_bosslevel4":{ fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, forced:true, trigger:{player:'phaseDrawBegin2'}, forced:true, filter:function (event,player){ return !event.numFixed; }, content:function(){ trigger.num++; }, mod:{ maxHandcard:function (player,num){ return num+=1; }, }, }, "boss_sdyl_bosslevel5":{ fixed:true, globalFixed:true, charlotte:true, silent:true, popup:false, forced:true, init:function(player){ player.maxHp++; player.hp++; player.update(); if(_status.shidianyanluo_level&&_status.shidianyanluo_level>0){ var players=game.filterPlayer(function(current){return current!=player;}); player.useCard({name:'nanman'},false,players); } }, trigger:{ source:"damageBegin4", player:"useCardAfter", global:'gameDrawAfter', }, filter:function (event,player,name){ if(name=='gameDrawAfter'){ if(!_status.shidianyanluo_level||_status.shidianyanluo_level==0){ var players=game.filterPlayer(function(current){return current!=player;}); player.useCard({name:'nanman'},false,players); } return false; } if(player.storage.boss_sdyl_bosslevel5) return false; if(name=='damageBegin4'){ if(!event.card||event.card.name!='nanman') return false; return true; }else if(name=='useCardAfter'){ if(!event.card||event.card.name!='nanman') return false; player.storage.boss_sdyl_bosslevel5=true; return false; } }, content:function (){ trigger.num++; }, }, */ "boss_jingjia":{}, "boss_aozhan":{ forced:true, locked:true, charlotte:true, group:["boss_aozhan_wuqi","boss_aozhan_fangju","boss_aozhan_zuoji","boss_aozhan_baowu"], subSkill:{ wuqi:{ mod:{ cardUsable:function(card,player,num){ if(player.getEquip(1)&&card.name=='sha') return num+1; }, }, sub:true, }, fangju:{ trigger:{ player:"damageBegin4", }, forced:true, filter:function (event,player){ return player.getEquip(2)&&event.num>1; }, content:function (){ trigger.num=1; }, sub:true, }, zuoji:{ trigger:{ player:"phaseDrawBegin", }, forced:true, filter:function (event,player){ return (player.getEquip(3)||player.getEquip(4)); }, content:function(){ trigger.num++; }, sub:true, }, baowu:{ trigger:{ player:"phaseJudgeBefore", }, forced:true, filter:function (event,player){ return player.getEquip(5); }, content:function (){ trigger.cancel(); game.log(player,'跳过了判定阶段'); }, sub:true, }, }, }, "shufazijinguan_skill":{ equipSkill:true, trigger:{ player:"phaseZhunbeiBegin", }, direct:true, content:function(){ "step 0" player.chooseTarget(get.prompt('shufazijinguan'),function(card,player,target){ return player!=target; }).ai=function(target){ return get.damageEffect(target,player,player); } "step 1" if(result.bool){ player.line(result.targets,'white'); result.targets[0].damage(); } }, }, "linglongshimandai_skill":{ equipSkill:true, trigger:{ target:"useCardToTargeted", }, filter:function(event,player){ if(event.targets&&event.targets.length>1||event.player==player) return false; if(player.hasSkillTag('unequip2')) return false; var evt=event.getParent(); if(evt.player&&evt.player.hasSkillTag('unequip',false,{ name:evt.card?evt.card.name:null, target:player, card:evt.card })) return false; return true; }, audio:true, check:function(event,player){ return get.effect(player,event.card,event.player,player)<=0; }, content:function(){ "step 0" player.judge('linglongshimandai',function(card){return (get.suit(card)=='heart')?1.5:-0.5}); "step 1" if(result.judge>0){ trigger.getParent().excluded.add(player); } }, ai:{ effect:{ target:function(card,player,target,effect){ if(player.hasSkillTag('unequip',false,{ name:card?card.name:null, target:player, card:card })) return; }, }, }, }, "hongmianbaihuapao_skill":{ equipSkill:true, trigger:{ player:"damageBegin4", }, filter:function(event,player){ if(event.source&&event.source.hasSkillTag('unequip',false,{ name:event.card?event.card.name:null, target:player, card:event.card })) return; if(event.nature) return true; }, forced:true, content:function(){ trigger.cancel(); }, ai:{ nofire:true, nothunder:true, effect:{ target:function(card,player,target,current){ if(player.hasSkillTag('unequip',false,{ name:card?card.name:null, target:player, card:card })) return; if(get.tag(card,'natureDamage')) return 'zerotarget'; }, }, }, }, "wushuangfangtianji_skill":{ equipSkill:true, trigger:{ source:"damageSource", }, filter:function(event,player){ return event.card&&event.card.name=='sha'; }, content:function(){ 'step 0' player.line(trigger.player,'white'); if(!trigger.player.countCards('he')){ event.goto(1); }else{ event.goto(2); } 'step 1' player.draw(); event.finish(); 'step 2' player.chooseControl('摸一张牌','弃置其一张牌',function(event,player){ if(get.attitude(player,trigger.player)>2) return '摸一张牌'; return '弃置其一张牌'; }); 'step 3' if(result.control=='摸一张牌'){ player.draw(); event.finish(); } else{ player.discardPlayerCard(trigger.player,'he',true); event.finish(); } }, }, boss_yaoshou:{ mod:{ globalFrom:function(from,to,distance){ return distance-2; }, }, }, boss_duqu:{ trigger:{player:'damageEnd'}, filter:function(event,player){ return event.source&&!event.source.hasSkill('boss_duqu'); }, content:function(){ var target=trigger.source; if(!target.storage.boss_shedu) target.storage.boss_shedu=0; target.storage.boss_shedu++; target.markSkill('boss_shedu'); }, forced:true, global:'boss_shedu', mod:{ cardname:function (card,player){ if(card.name=='tao') return 'sha'; }, }, }, boss_shedu:{ trigger:{player:"phaseBegin"}, mark:true, intro:{content:'mark'}, forced:true, filter:function(event,player){ return player.storage.boss_shedu&&player.storage.boss_shedu>0; }, content:function(){ 'step 0' var num=player.storage.boss_shedu; event.num=num; var chs=get.cnNumber(num); player.chooseToDiscard('he',num,'弃置'+chs+'张牌,或失去'+chs+'点体力').ai=function(card){ return 12-get.value(card); }; 'step 1' if(!result.bool) player.loseHp(num); player.storage.boss_shedu--; if(num>1) player.markSkill('boss_shedu'); else player.unmarkSkill('boss_shedu'); }, }, boss_jiushou:{ mod:{ maxHandcard:function(player,num){ return num-player.hp+9; }, }, trigger:{player:['phaseUseBegin','phaseJieshuBegin','phaseDrawBegin']}, forced:true, filter:function(event,player){ return event.name=='phaseDraw'||player.countCards('h')<9; }, content:function(){ if(trigger.name=='phaseDraw') trigger.cancel(); else player.draw(9-player.countCards('h')); }, }, boss_echou_switch:{ unique:true, charlotte:true, group:['boss_echou_switch_on','boss_echou_switch_off'], subSkill:{ off:{ trigger:{global:'gameStart'}, content:function(){ player.disableSkill('boss_echou_awake','boss_echou'); }, silent:true }, on:{ trigger:{player:'changeHp'}, filter:function(event,player){ return player.hp<=player.maxHp/2; }, forced:true, skillAnimation:true, animationColor:'thunder', content:function(){ player.enableSkill('boss_echou_awake'); player.removeSkill('boss_echou_switch'); } } } }, boss_echou:{ trigger:{global:'useCard'}, filter:function(event,player){ return !event.player.hasSkill('boss_duqu')&&['tao','jiu'].contains(event.card.name); }, content:function(){ var target=trigger.player; player.line(target); if(!target.storage.boss_shedu) target.storage.boss_shedu=0; target.storage.boss_shedu++; target.markSkill('boss_shedu'); }, }, boss_bingxian:{ trigger:{global:'phaseJieshuBegin'}, filter:function(event,player){ return event.player!=player&&event.player.countUsed('sha',true)==0; }, forced:true, content:function(){ player.useCard({name:'sha'},trigger.player); }, }, boss_juyuan:{ init:function(player,skill){ player.storage[skill]=0; }, trigger:{player:'phaseAfter'}, forced:true, silent:true, popup:false, content:function(){ player.storage.boss_juyuan=player.hp; }, mod:{ selectTarget:function (card,player,range){ if(card.name!='sha') return; if(range[1]==-1) return; if(player.hp>=player.storage.boss_juyuan) return; range[1]+=2; }, }, }, boss_xushi_switch:{ unique:true, charlotte:true, group:['boss_xushi_switch_on','boss_xushi_switch_off'], subSkill:{ off:{ trigger:{global:'gameStart'}, content:function(){ player.disableSkill('boss_xushi_awake','boss_xushi'); }, silent:true }, on:{ trigger:{player:'changeHp'}, filter:function(event,player){ return player.hp<=player.maxHp/2; }, forced:true, skillAnimation:true, animationColor:'thunder', content:function(){ player.enableSkill('boss_xushi_awake'); player.removeSkill('boss_xushi_switch'); } } } }, boss_xushi:{ trigger:{player:['phaseUseEnd','turnOverEnd']}, filter:function(event,player){ return event.name=='phaseUse'||!player.isTurnedOver(); }, forced:true, content:function(){ 'step 0' if(trigger.name=='phaseUse'){ player.turnOver(); event.finish(); } else{ event.list=game.filterPlayer(function(current){ return current!=player; }); event.list.sort(lib.sort.seat); player.line(event.list,'green'); } 'step 1' var target=event.list.shift(); target.damage([1,2].randomGet()); if(event.list.length) event.redo(); }, }, boss_zhaohuo:{ trigger:{ player:'damageBegin4', source:'damageBegin1', }, forced:true, filter:function(event,player){ if(player==event.player) return event.nature=='fire'||player==event.source; return true; }, content:function(){ if(player==trigger.player) trigger.cancel(); else trigger.nature='fire'; }, ai:{ unequip:true, skillTagFilter:function(player){ if(player!=_status.currentPhase) return false; }, }, }, boss_honglianx:{ mod:{ ignoredHandcard:function (card,player){ if(get.color(card)=='red'){ return true; } }, cardDiscardable:function (card,player,name){ if(name=='phaseDiscard'&&get.color(card)=='red') return false; }, }, forced:true, trigger:{player:'phaseZhunbeiBegin'}, content:function(){ 'step 0' event.num1=3; event.num2=[0,1,2,3].randomGet(); event.togain=[]; while(event.togain.length<event.num2){ var card=get.cardPile(function(card){ return !event.togain.contains(card)&&get.color(card)=='red'; }); if(card) event.togain.push(card); else break; } event.num1-=event.togain.length; if(event.togain.length) player.gain(event.togain,'draw'); if(event.num1==0) event.finish(); else{ event.list=game.filterPlayer(function(current){ return current!=player; }).randomGets(event.num1).sortBySeat(); player.line(event.list,'fire'); } 'step 1' var target=event.list.shift(); target.damage('fire'); if(event.list.length) event.redo(); }, }, boss_yanyu_switch:{ unique:true, charlotte:true, group:['boss_yanyu_switch_on','boss_yanyu_switch_off'], subSkill:{ off:{ trigger:{global:'gameStart'}, content:function(){ player.disableSkill('boss_yanyu_awake','boss_yanyu'); }, silent:true }, on:{ trigger:{player:'changeHp'}, filter:function(event,player){ return player.hp<=player.maxHp/2; }, forced:true, skillAnimation:true, animationColor:'thunder', content:function(){ player.enableSkill('boss_yanyu_awake'); player.removeSkill('boss_yanyu_switch'); } } } }, boss_yanyu:{ forced:true, trigger:{global:'phaseBegin'}, filter:function(event,player){ return player!=event.player; }, content:function(){ 'step 0' event.count=3; player.line(trigger.player,'fire'); 'step 1' event.count--; trigger.player.judge(function(card){ if(get.color(card)=='red') return -5; return 5; }); 'step 2' if(!result.bool){ trigger.player.damage('fire'); if(event.count) event.goto(1); } }, }, boss_fengdong:{ trigger:{player:"phaseBegin"}, forced:true, content:function(){ game.countPlayer(function(current){ if(current!=player) current.addTempSkill('fengyin'); }); }, }, boss_xunyou:{ trigger:{global:'phaseBegin'}, forced:true, filter:function(event,player){ return player!=event.player }, content:function(){ 'step 0' var list=game.filterPlayer(function(current){ return current!=player&¤t.countCards('hej'); }); if(list.length){ var target=list.randomGet(); player.line(target,'green'); var card=target.getCards('hej').randomGet(); event.card=card; player.gain(card,target); target.$giveAuto(card,player); } else event.finish(); 'step 1' if(player.getCards('h').contains(card)&&get.type(card)=='equip') player.chooseUseTarget(card,true,'nopopup','noanimate'); }, }, boss_sipu_switch:{ unique:true, charlotte:true, group:['boss_sipu_switch_on','boss_sipu_switch_off'], subSkill:{ off:{ trigger:{global:'gameStart'}, content:function(){ player.disableSkill('boss_sipu_awake','boss_sipu'); }, silent:true }, on:{ trigger:{player:'changeHp'}, filter:function(event,player){ return player.hp<=player.maxHp/2; }, forced:true, skillAnimation:true, animationColor:'thunder', content:function(){ player.enableSkill('boss_sipu_awake'); player.removeSkill('boss_sipu_switch'); } } } }, boss_sipu:{ global:'boss_sipu2', }, boss_sipu2:{ mod:{ cardEnabled:function(card,player){ var sc=_status.currentPhase; if(sc&&sc!=player&&sc.isPhaseUsing()&&sc.hasSkill('boss_sipu')&&!sc.hasSkill('boss_sipu_switch')&&sc.countUsed()<3){ return false; } }, cardUsable:function (card,player){ var sc=_status.currentPhase; if(sc&&sc!=player&&sc.isPhaseUsing()&&sc.hasSkill('boss_sipu')&&!sc.hasSkill('boss_sipu_switch')&&sc.countUsed()<3){ return false; } }, cardRespondable:function (card,player){ var sc=_status.currentPhase; if(sc&&sc!=player&&sc.isPhaseUsing()&&sc.hasSkill('boss_sipu')&&!sc.hasSkill('boss_sipu_switch')&&sc.countUsed()<3){ return false; } }, cardSavable:function (card,player){ var sc=_status.currentPhase; if(sc&&sc!=player&&sc.isPhaseUsing()&&sc.hasSkill('boss_sipu')&&!sc.hasSkill('boss_sipu_switch')&&sc.countUsed()<3){ return false; } }, }, }, /*----分界线----*/ boss_zirun:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, logTarget:function(){ return game.filterPlayer(); }, content:function(){ var list=game.filterPlayer().sortBySeat(); game.asyncDraw(list,function(current){ if(current.countCards('e')) return 2; return 1; }); } }, boss_juehong:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, logTarget:function(event,player){ return player.getEnemies(); }, content:function(){ 'step 0' event.list=player.getEnemies().sortBySeat(); 'step 1' if(event.list.length){ var target=event.list.shift(); if(target.countCards('he')){ var es=target.getCards('e'); if(es.length){ target.discard(es); } else{ player.discardPlayerCard(target,'h',true); } } event.redo(); } } }, boss_zaoyi:{ trigger:{global:'dieAfter'}, forced:true, filter:function(event,player){ if(lib.config.mode!='boss') return false; var list=['boss_shuishenxuanming','boss_shuishengonggong']; if(list.contains(event.player.name)){ return !game.hasPlayer(function(current){ return list.contains(current.name); }); } return false; }, content:function(){ player.draw(4); player.addSkill('boss_zaoyi_hp'); }, subSkill:{ hp:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, mark:true, intro:{ content:'每个回合开始时使体力值最少的敌方角色失去所有体力' }, content:function(){ var list=player.getEnemies(); var min=list[0].hp; for(var i=0;i<list.length;i++){ if(list[i].hp<min){ min=list[i].hp; } } for(var i=0;i<list.length;i++){ if(list[i].hp>min){ list.splice(i--,1); } } player.line(list,'green'); list.sortBySeat(); for(var i=0;i<list.length;i++){ list[i].loseHp(min); } } } }, mod:{ targetEnabled:function(card,player,target,now){ if(target.isEnemyOf(player)){ var type=get.type(card,'trick'); if(type=='trick'){ if(game.hasPlayer(function(current){ return current.name=='boss_shuishenxuanming'; })){ return false; } } if(type=='basic'){ if(game.hasPlayer(function(current){ return current.name=='boss_shuishengonggong'; })){ return false; } } } } } }, boss_lingqu:{ init:function(player){ player.storage.boss_lingqu=0; }, trigger:{player:'damageEnd'}, forced:true, content:function(){ player.draw(); player.storage.boss_lingqu++; player.markSkill('boss_lingqu'); }, intro:{ content:'手牌上限+#' }, mod:{ maxHandcard:function(player,num){ return num+player.storage.boss_lingqu; } }, group:'boss_lingqu_cancel', subSkill:{ cancel:{ trigger:{player:'damageBegin4'}, priority:-11, forced:true, filter:function(event){ return event.num>1; }, content:function(){ trigger.num=0; } } } }, boss_baiyi:{ group:['boss_baiyi_draw','boss_baiyi_thunder','boss_baiyi_discard'], subSkill:{ discard:{ trigger:{global:'roundStart'}, forced:true, filter:function(){ return game.roundNumber==5; }, logTarget:function(event,player){ return player.getEnemies(); }, content:function(){ 'step 0' event.list=player.getEnemies(); 'step 1' if(event.list.length){ event.list.shift().chooseToDiscard('he',true,2); event.redo(); } } }, draw:{ trigger:{global:'phaseDrawBegin'}, forced:true, filter:function(event,player){ return game.roundNumber<3&&event.player.isEnemyOf(player); }, content:function(){ trigger.num-- } }, thunder:{ trigger:{player:'damageBegin4'}, filter:function(event){ return event.nature=='thunder'&&game.roundNumber<7; }, forced:true, content:function(){ trigger.cancel(); }, ai:{ nothunder:true, skillTagFilter:function(){ return game.roundNumber<7; }, effect:{ target:function(card,player,target,current){ if(get.tag(card,'thunderDamage')&&game.roundNumber<7) return 0; } } } } } }, boss_qingzhu:{ trigger:{player:'phaseDiscardBefore'}, forced:true, content:function(){ trigger.cancel(); }, mod:{ cardEnabled:function(card,player){ if(card.name=='sha'&&_status.currentPhase==player&& _status.event.getParent('phaseUse')&&!player.hasSkill('boss_jiding')){ return false; } } } }, boss_jiazu:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, getTargets:function(player){ var targets=[]; targets.add(player.getNext()); targets.add(player.getPrevious()); var enemies=player.getEnemies(); for(var i=0;i<targets.length;i++){ if(!enemies.contains(targets[i])|| (!targets[i].getEquip(3)&&!targets[i].getEquip(4))){ targets.splice(i--,1); } } return targets; }, filter:function(event,player){ return lib.skill.boss_jiazu.getTargets(player).length>0; }, logTarget:function(event,player){ return lib.skill.boss_jiazu.getTargets(player); }, content:function(){ 'step 0' event.list=lib.skill.boss_jiazu.getTargets(player).sortBySeat(); 'step 1' if(event.list.length){ var target=event.list.shift(); var cards=target.getCards('e',function(card){ var subtype=get.subtype(card); return subtype=='equip3'||subtype=='equip4'; }); if(cards.length){ target.discard(cards); } event.redo(); } } }, boss_jiding:{ trigger:{global:'damageEnd'}, forced:true, mark:true, intro:{ content:'info' }, filter:function(event,player){ return event.player!=player&&event.player.isFriendOf(player)&& event.source&&event.source.isIn()&&event.source.isEnemyOf(player); }, logTarget:'source', content:function(){ 'step 0' player.useCard({name:'sha',nature:'thunder'},trigger.source); 'step 1' player.removeSkill('boss_jiding'); }, group:'boss_jiding_recover', subSkill:{ recover:{ trigger:{source:'damageEnd'}, silent:true, filter:function(event,player){ return event.getParent(3).name=='boss_jiding'; }, content:function(){ for(var i=0;i<game.players.length;i++){ if(game.players[i].name=='boss_jinshenrushou'){ game.players[i].recover(); player.line(game.players[i],'green'); } } } } } }, boss_xingqiu:{ init:function(player){ player.storage.boss_xingqiu=false; }, trigger:{player:'phaseDrawBegin'}, direct:true, locked:true, content:function(){ 'step 0' if(player.storage.boss_xingqiu){ player.logSkill('boss_xingqiu'); event.list=player.getEnemies().sortBySeat(); } else{ event.finish(); } player.storage.boss_xingqiu=!player.storage.boss_xingqiu; 'step 1' if(event.list.length){ var target=event.list.shift(); if(!target.isLinked()){ target.link(); player.line(target,'green'); } event.redo(); } 'step 2' game.delay(); for(var i=0;i<game.players.length;i++){ if(game.players[i].name=='boss_mingxingzhu'){ game.players[i].addSkill('boss_jiding'); } } } }, boss_kuangxiao:{ mod:{ targetInRange:function(card,player,target){ return true; }, selectTarget:function(card,player,range){ if(card.name=='sha'){ range[1]=-1; range[0]=-1; } }, playerEnabled:function(card,player,target){ if(card.name=='sha'&&target.isFriendOf(player)){ return false; } } } }, boss_yinzei_switch:{ unique:true, charlotte:true, group:['boss_yinzei_switch_on','boss_yinzei_switch_off'], subSkill:{ off:{ trigger:{global:'gameStart'}, content:function(){ player.disableSkill('boss_yinzei_awake','boss_yinzei'); }, silent:true }, on:{ trigger:{player:'changeHp'}, filter:function(event,player){ return player.hp<=player.maxHp/2; }, forced:true, skillAnimation:true, animationColor:'thunder', content:function(){ player.enableSkill('boss_yinzei_awake'); player.removeSkill('boss_yinzei_switch'); } } } }, boss_jicai_switch:{ unique:true, charlotte:true, group:['boss_jicai_switch_on','boss_jicai_switch_off'], subSkill:{ off:{ trigger:{global:'gameStart'}, content:function(){ player.disableSkill('boss_jicai_awake','boss_jicai'); }, silent:true }, on:{ trigger:{player:'changeHp'}, filter:function(event,player){ return player.hp<=player.maxHp/2; }, forced:true, skillAnimation:true, animationColor:'thunder', content:function(){ player.enableSkill('boss_jicai_awake'); player.removeSkill('boss_jicai_switch'); } } } }, boss_luanchang_switch:{ unique:true, charlotte:true, group:['boss_luanchang_switch_on','boss_luanchang_switch_off'], subSkill:{ off:{ trigger:{global:'gameStart'}, content:function(){ player.disableSkill('boss_luanchang_awake','boss_luanchang'); }, silent:true }, on:{ trigger:{player:'changeHp'}, filter:function(event,player){ return player.hp<=player.maxHp/2; }, forced:true, skillAnimation:true, animationColor:'thunder', content:function(){ player.enableSkill('boss_luanchang_awake'); player.removeSkill('boss_luanchang_switch'); } } } }, boss_yandu_switch:{ unique:true, charlotte:true, group:['boss_yandu_switch_on','boss_yandu_switch_off'], subSkill:{ off:{ trigger:{global:'gameStart'}, content:function(){ player.disableSkill('boss_yandu_awake','boss_yandu'); }, silent:true }, on:{ trigger:{player:'changeHp'}, filter:function(event,player){ return player.hp<=player.maxHp/2; }, forced:true, skillAnimation:true, animationColor:'thunder', content:function(){ player.enableSkill('boss_yandu_awake'); player.removeSkill('boss_yandu_switch'); } } } }, boss_shenwuzaishi:{ trigger:{global:'dieAfter'}, silent:true, filter:function(event,player){ return player.side!=game.boss.side; }, content:function(){ if(player==trigger.source&&trigger.player.name=='boss_zhuyin'){ player.draw(3); player.recover(); } else if(trigger.player.side==player.side){ player.draw(player.group=='shen'?3:1); player.recover(); } } }, boss_wuzang:{ trigger:{player:'phaseDrawBegin'}, forced:true, content:function(){ trigger.num+=Math.max(5,Math.floor(player.hp/2))-2; }, mod:{ maxHandcard:function(player,num){ return num-player.hp; } } }, boss_xiangde:{ trigger:{player:'damageBegin3'}, forced:true, filter:function(event,player){ return event.source&&event.source.isIn()&&event.source!=player&&event.source.getEquip(1); }, content:function(){ trigger.num++; } }, boss_yinzei:{ trigger:{player:'damageEnd'}, forced:true, logTarget:'source', filter:function(event,player){ return event.source&&event.source.isIn()&&event.source!=player&&event.source.countCards('he')&&!player.countCards('h'); }, content:function(){ trigger.source.randomDiscard(); } }, boss_zhue:{ trigger:{global:'damageEnd'}, forced:true, filter:function(event,player){ return event.source&&event.source.isIn()&&event.source!=player; }, logTarget:'source', content:function(){ game.asyncDraw([player,trigger.source]); } }, boss_yandu:{ trigger:{global:'phaseJieshuBegin'}, filter:function(event,player){ return event.player!=player&&!event.player.getStat('damage')&&event.player.countCards('he'); }, logTarget:'player', forced:true, content:function(){ player.gainPlayerCard(trigger.player,true); } }, boss_futai:{ global:'boss_futai2', trigger:{player:'phaseZhunbeiBegin'}, logTarget:function(event,player){ return game.filterPlayer(function(current){ return current.isDamaged(); }); }, forced:true, content:function(){ 'step 0' var list=game.filterPlayer(function(current){ return current.isDamaged(); }).sortBySeat(); event.list=list; 'step 1' if(event.list.length){ event.list.shift().recover(); event.redo(); } } }, boss_futai2:{ mod:{ cardSavable:function(card,player){ if(card.name=='tao'&&!_status.event.skill&&game.hasPlayer(function(current){ return current!=player&¤t.hasSkill('boss_futai')&&_status.currentPhase!=current; })){ return false; } }, cardEnabled:function(card,player){ if(card.name=='tao'&&!_status.event.skill&&game.hasPlayer(function(current){ return current!=player&¤t.hasSkill('boss_futai')&&_status.currentPhase!=current; })){ return false; } }, } }, boss_luanchang:{ group:['boss_luanchang_begin','boss_luanchang_end'], subSkill:{ begin:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, content:function(){ var list=game.filterPlayer(function(current){ return player.canUse('nanman',current); }).sortBySeat(); if(list.length){ player.useCard({name:'nanman'},list); } } }, end:{ trigger:{player:'phaseJieshuBegin'}, forced:true, content:function(){ var list=game.filterPlayer(function(current){ return player.canUse('wanjian',current); }).sortBySeat(); if(list.length){ player.useCard({name:'wanjian'},list); } } } } }, boss_nitai:{ group:['boss_nitai_in','boss_nitai_out'], subSkill:{ in:{ trigger:{player:'damageBegin4'}, forced:true, filter:function(event,player){ return _status.currentPhase==player; }, content:function(){ trigger.cancel(); } }, out:{ trigger:{player:'damageBegin1'}, forced:true, filter:function(event,player){ return _status.currentPhase!=player&&event.nature=='fire'; }, content:function(){ trigger.num++; } } } }, boss_minwan:{ group:['boss_minwan_clear','boss_minwan_draw','boss_minwan_add'], subSkill:{ clear:{ trigger:{player:'phaseAfter'}, silent:true, content:function(){ delete player.storage.boss_minwan; } }, draw:{ trigger:{player:'useCard'}, forced:true, filter:function(event,player){ return _status.currentPhase==player&&Array.isArray(player.storage.boss_minwan); }, content:function(){ player.draw(); } }, add:{ trigger:{source:'damageAfter'}, filter:function(event,player){ return _status.currentPhase==player; }, forced:true, content:function(){ if(!player.storage.boss_minwan){ player.storage.boss_minwan=[player]; } player.storage.boss_minwan.add(trigger.player); } } }, mod:{ playerEnabled:function(card,player,target){ if(_status.currentPhase==player&&Array.isArray(player.storage.boss_minwan)&&!player.storage.boss_minwan.contains(target)){ return false; } } } }, boss_tanyu:{ trigger:{player:'phaseDiscardBefore'}, forced:true, content:function(){ trigger.cancel(); }, group:'boss_tanyu_hp', subSkill:{ hp:{ trigger:{player:'phaseJieshuBegin'}, forced:true, popup:false, filter:function(event,player){ return player.isMaxHandcard(); }, content:function(){ player.loseHp(); } } } }, boss_cangmu:{ trigger:{player:'phaseDrawBegin'}, forced:true, content:function(){ trigger.num+=game.countPlayer()-2; } }, boss_jicai:{ trigger:{global:'recoverAfter'}, forced:true, logTarget:'player', content:function(){ if(trigger.player==player){ player.draw(2); } else{ game.asyncDraw([player,trigger.player]); } } }, boss_xiongshou:{ group:['boss_xiongshou_turn','boss_xiongshou_damage'], subSkill:{ damage:{ trigger:{source:'damageBegin1'}, forced:true, filter:function(event,player){ return event.notLink()&&event.card&&event.card.name=='sha'&&event.player.hp<player.hp; }, content:function(){ trigger.num++; } }, turn:{ trigger:{player:'turnOverBefore'}, priority:20, forced:true, filter:function(event,player){ return !player.isTurnedOver(); }, content:function(){ trigger.cancel(); game.log(player,'取消了翻面'); }, } }, mod:{ globalFrom:function(from,to,distance){ return distance-1; } }, ai:{ noturn:true, } }, xuwangzhimian:{ equipSkill:true, trigger:{player:'phaseDrawBegin'}, forced:true, content:function(){ trigger.num+=2; }, mod:{ maxHandcard:function(player,num){ return num-1; } } }, xiuluolianyuji2:{ equipSkill:true, vanish:true, trigger:{player:'damageEnd'}, forced:true, popup:false, content:function(){ if(trigger.xiuluolianyuji) player.recover(); player.removeSkill('xiuluolianyuji2'); } }, xiuluolianyuji:{ mod:{ selectTarget:function(card,player,range){ if(card.name!='sha') return; if(range[1]==-1) return; range[1]=Infinity; } }, trigger:{source:'damageBegin1'}, forced:true, filter:function(event){ return event.card&&event.card.name=='sha'; }, content:function(){ trigger.num++; trigger.xiuluolianyuji=true; trigger.player.addSkill('xiuluolianyuji2'); } }, juechenjinge:{ equipSkill:true, global:'juechenjinge2' }, juechenjinge2:{ equipSkill:true, mod:{ globalTo:function(from,to,distance){ return distance+game.countPlayer(function(current){ if(current==to) return; if(current.side!=to.side) return; if(current.hasSkill('juechenjinge')) return 1; }); } } }, chiyanzhenhunqin:{ equipSkill:true, trigger:{source:'damageBegin1'}, forced:true, content:function(){ trigger.nature='fire'; } }, chixueqingfeng:{ equipSkill:true, trigger:{player:'useCardToPlayered'}, filter:function(event){ return event.card.name=='sha'; }, logTarget:'target', forced:true, content:function(){ trigger.target.addTempSkill('chixueqingfeng2','shaAfter'); }, ai:{ unequip:true, skillTagFilter:function(player,tag,arg){ if(arg&&arg.name=='sha') return true; return false; } } }, chixueqingfeng2:{ equipSkill:true, mod:{ cardEnabled:function(){ return false; }, cardUsable:function(){ return false; }, cardRespondable:function(){ return false; }, cardSavable:function(){ return false; } } }, qimenbagua:{ equipSkill:true, trigger:{target:'shaBefore'}, forced:true, filter:function(event,player){ if(player.hasSkillTag('unequip2')) return false; if(event.player.hasSkillTag('unequip',false,{ name:event.card?event.card.name:null, target:player, card:event.card })) return false; return true; }, content:function(){ trigger.cancel(); }, ai:{ effect:{ target:function(card,player,target){ if(player.hasSkillTag('unequip',false,{ name:card?card.name:null, target:player, card:card })) return; if(card.name=='sha') return 'zerotarget'; } } } }, guilongzhanyuedao:{ equipSkill:true, trigger:{player:'useCard'}, forced:true, filter:function(event,player){ return event.card&&event.card.name=='sha'&&get.color(event.card)=='red'; }, content:function(){ trigger.directHit.addArray(game.players); } }, guofengyupao:{ equipSkill:true, mod:{ targetEnabled:function(card,player,target,now){ if(target.hasSkillTag('unequip2')) return false; if(player!=target){ if(player.hasSkillTag('unequip',false,{ name:card?card.name:null, target:player, card:card })){} else if(get.type(card)=='trick') return false; } } } }, longfenghemingjian:{ equipSkill:true, inherit:'cixiong_skill', filter:function(event,player){ return lib.linked.contains(event.card.nature); }, }, qicaishenlu:{ trigger:{source:'damageBegin1'}, forced:true, filter:function(event,player){ return lib.linked.contains(event.nature); }, content:function(){ trigger.num++; }, }, boss_chiyan:{ trigger:{global:'gameStart'}, forced:true, popup:false, unique:true, fixed:true, content:function(){ player.smoothAvatar(); player.init('boss_zhuque'); _status.noswap=true; game.addVideo('reinit2',player,player.name); } }, boss_chiyan2:{ mode:['boss'], global:'boss_chiyan2x', trigger:{player:'dieBegin'}, silent:true, unique:true, fixed:true, filter:function(event,player){ return player==game.boss; }, content:function(){ player.hide(); game.addVideo('hidePlayer',player); } }, boss_chiyan2x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, fixed:true, globalFixed:true, unique:true, filter:function(event){ if(lib.config.mode!='boss') return false; return event.player==game.boss&&event.player.hasSkill('boss_chiyan2'); }, content:function(){ 'step 0' game.delay(); 'step 1' if(game.me!=game.boss){ game.boss.changeSeat(6); } else{ game.boss.nextSeat.changeSeat(3); game.boss.previousSeat.changeSeat(5); } game.changeBoss('boss_huoshenzhurong'); for(var i=0;i<game.players.length;i++){ game.players[i].hp=game.players[i].maxHp; game.players[i].update(); } game.delay(0.5); 'step 2' game.addBossFellow(game.me==game.boss?1:5,'boss_yanling'); game.addBossFellow(7,'boss_yanling'); 'step 3' var dnum=0; var dead=game.dead.slice(0); for(var i=0;i<dead.length;i++){ if(!dead[i].side&&dead[i].maxHp>0&&dead[i].parentNode==player.parentNode){ dead[i].revive(dead[i].maxHp); dnum++; } } for(var i=0;i<game.players.length;i++){ if(game.players[i].side) continue; game.players[i].removeEquipTrigger(); var hej=game.players[i].getCards('hej'); for(var j=0;j<hej.length;j++){ hej[j].discard(false); } game.players[i].hp=game.players[i].maxHp; game.players[i].hujia=0; game.players[i].classList.remove('turnedover'); game.players[i].removeLink(); game.players[i].directgain(get.cards(4-dnum)); } 'step 4' while(_status.event.name!='phaseLoop'){ _status.event=_status.event.parent; } game.resetSkills(); _status.paused=false; _status.event.player=game.boss; _status.event.step=0; _status.roundStart=game.boss; game.phaseNumber=0; game.roundNumber=0; if(game.bossinfo){ game.bossinfo.loopType=1; } } }, boss_chiyan3:{ mode:['boss'], global:'boss_chiyan3x', trigger:{player:'dieBegin'}, silent:true, fixed:true, unique:true, filter:function(event,player){ return player==game.boss; }, content:function(){ player.hide(); player.nextSeat.hide(); player.previousSeat.hide(); game.addVideo('hidePlayer',player); game.addVideo('hidePlayer',player.nextSeat); game.addVideo('hidePlayer',player.previousSeat); } }, boss_chiyan3x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, globalFixed:true, unique:true, fixed:true, filter:function(event){ if(lib.config.mode!='boss') return false; return event.player==game.boss&&event.player.hasSkill('boss_chiyan3'); }, content:function(){ 'step 0' game.delay(); 'step 1' game.changeBoss('boss_yandi'); game.delay(0.5); 'step 2' game.changeBoss('boss_huoshenzhurong',game.boss.previousSeat); game.changeBoss('boss_yanling',game.boss.nextSeat); 'step 3' var dnum=0; var dead=game.dead.slice(0); for(var i=0;i<dead.length;i++){ if(!dead[i].side&&dead[i].maxHp>0&&dead[i].parentNode==player.parentNode){ dead[i].revive(dead[i].maxHp); dnum++; } } for(var i=0;i<game.players.length;i++){ if(game.players[i].side) continue; game.players[i].removeEquipTrigger(); var hej=game.players[i].getCards('hej'); for(var j=0;j<hej.length;j++){ hej[j].discard(false); } game.players[i].hp=game.players[i].maxHp; game.players[i].hujia=0; game.players[i].classList.remove('turnedover'); game.players[i].removeLink(); game.players[i].directgain(get.cards(4-dnum)); } 'step 4' while(_status.event.name!='phaseLoop'){ _status.event=_status.event.parent; } game.resetSkills(); _status.paused=false; _status.event.player=game.boss; _status.event.step=0; _status.roundStart=game.boss; game.phaseNumber=0; game.roundNumber=0; } }, boss_qingmu:{ trigger:{global:'gameStart'}, forced:true, popup:false, fixed:true, unique:true, content:function(){ player.smoothAvatar(); player.init('boss_qinglong'); _status.noswap=true; game.addVideo('reinit2',player,player.name); } }, boss_qingmu2:{ mode:['boss'], global:'boss_qingmu2x', trigger:{player:'dieBegin'}, silent:true, unique:true, fixed:true, filter:function(event,player){ return player==game.boss; }, content:function(){ player.hide(); game.addVideo('hidePlayer',player); } }, boss_qingmu2x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, globalFixed:true, unique:true, fixed:true, filter:function(event){ if(lib.config.mode!='boss') return false; return event.player==game.boss&&event.player.hasSkill('boss_qingmu2'); }, content:function(){ 'step 0' game.delay(); 'step 1' if(game.me!=game.boss){ game.boss.changeSeat(6); } else{ game.boss.nextSeat.changeSeat(3); game.boss.previousSeat.changeSeat(5); } game.changeBoss('boss_mushengoumang'); for(var i=0;i<game.players.length;i++){ game.players[i].hp=game.players[i].maxHp; game.players[i].update(); } game.delay(0.5); 'step 2' game.addBossFellow(game.me==game.boss?1:5,'boss_shujing'); game.addBossFellow(7,'boss_shujing'); 'step 3' var dnum=0; var dead=game.dead.slice(0); for(var i=0;i<dead.length;i++){ if(!dead[i].side&&dead[i].maxHp>0&&dead[i].parentNode==player.parentNode){ dead[i].revive(dead[i].maxHp); dnum++; } } for(var i=0;i<game.players.length;i++){ if(game.players[i].side) continue; game.players[i].removeEquipTrigger(); var hej=game.players[i].getCards('hej'); for(var j=0;j<hej.length;j++){ hej[j].discard(false); } game.players[i].hp=game.players[i].maxHp; game.players[i].hujia=0; game.players[i].classList.remove('turnedover'); game.players[i].removeLink(); game.players[i].directgain(get.cards(4-dnum)); } 'step 4' while(_status.event.name!='phaseLoop'){ _status.event=_status.event.parent; } game.resetSkills(); _status.paused=false; _status.event.player=game.boss; _status.event.step=0; _status.roundStart=game.boss; game.phaseNumber=0; game.roundNumber=0; if(game.bossinfo){ game.bossinfo.loopType=1; } } }, boss_qingmu3:{ mode:['boss'], global:'boss_qingmu3x', trigger:{player:'dieBegin'}, silent:true, fixed:true, unique:true, filter:function(event,player){ return player==game.boss; }, content:function(){ player.hide(); player.nextSeat.hide(); player.previousSeat.hide(); game.addVideo('hidePlayer',player); game.addVideo('hidePlayer',player.nextSeat); game.addVideo('hidePlayer',player.previousSeat); } }, boss_qingmu3x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, fixed:true, globalFixed:true, unique:true, filter:function(event){ if(lib.config.mode!='boss') return false; return event.player==game.boss&&event.player.hasSkill('boss_qingmu3'); }, content:function(){ 'step 0' game.delay(); 'step 1' game.changeBoss('boss_taihao'); game.delay(0.5); 'step 2' game.changeBoss('boss_mushengoumang',game.boss.previousSeat); game.changeBoss('boss_shujing',game.boss.nextSeat); 'step 3' var dnum=0; var dead=game.dead.slice(0); for(var i=0;i<dead.length;i++){ if(!dead[i].side&&dead[i].maxHp>0&&dead[i].parentNode==player.parentNode){ dead[i].revive(dead[i].maxHp); dnum++; } } for(var i=0;i<game.players.length;i++){ if(game.players[i].side) continue; game.players[i].removeEquipTrigger(); var hej=game.players[i].getCards('hej'); for(var j=0;j<hej.length;j++){ hej[j].discard(false); } game.players[i].hp=game.players[i].maxHp; game.players[i].hujia=0; game.players[i].classList.remove('turnedover'); game.players[i].removeLink(); game.players[i].directgain(get.cards(4-dnum)); } 'step 4' while(_status.event.name!='phaseLoop'){ _status.event=_status.event.parent; } game.resetSkills(); _status.paused=false; _status.event.player=game.boss; _status.event.step=0; _status.roundStart=game.boss; game.phaseNumber=0; game.roundNumber=0; } }, boss_xuanlin:{ trigger:{global:'gameStart'}, forced:true, popup:false, fixed:true, unique:true, content:function(){ player.smoothAvatar(); player.init('boss_xuanwu'); _status.noswap=true; game.addVideo('reinit2',player,player.name); } }, boss_xuanlin2:{ mode:['boss'], global:'boss_xuanlin2x', trigger:{player:'dieBegin'}, silent:true, unique:true, fixed:true, filter:function(event,player){ return player==game.boss; }, content:function(){ player.hide(); game.addVideo('hidePlayer',player); } }, boss_xuanlin2x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, globalFixed:true, unique:true, fixed:true, filter:function(event){ if(lib.config.mode!='boss') return false; return event.player==game.boss&&event.player.hasSkill('boss_xuanlin2'); }, content:function(){ 'step 0' game.delay(); 'step 1' if(game.me!=game.boss){ game.boss.changeSeat(6); } else{ game.boss.nextSeat.changeSeat(3); game.boss.previousSeat.changeSeat(5); } game.changeBoss('boss_shuishengonggong'); for(var i=0;i<game.players.length;i++){ game.players[i].hp=game.players[i].maxHp; game.players[i].update(); } game.delay(0.5); 'step 2' game.addBossFellow(game.me==game.boss?1:7,'boss_shuishenxuanming'); 'step 3' var dnum=0; var dead=game.dead.slice(0); for(var i=0;i<dead.length;i++){ if(!dead[i].side&&dead[i].maxHp>0&&dead[i].parentNode==player.parentNode){ dead[i].revive(dead[i].maxHp); dnum++; } } for(var i=0;i<game.players.length;i++){ if(game.players[i].side) continue; game.players[i].removeEquipTrigger(); var hej=game.players[i].getCards('hej'); for(var j=0;j<hej.length;j++){ hej[j].discard(false); } game.players[i].hp=game.players[i].maxHp; game.players[i].hujia=0; game.players[i].classList.remove('turnedover'); game.players[i].removeLink(); game.players[i].directgain(get.cards(4-dnum)); } 'step 4' while(_status.event.name!='phaseLoop'){ _status.event=_status.event.parent; } game.resetSkills(); _status.paused=false; _status.event.player=game.boss; _status.event.step=0; _status.roundStart=game.boss; game.phaseNumber=0; game.roundNumber=0; if(game.bossinfo){ game.bossinfo.loopType=1; } } }, boss_xuanlin3:{ mode:['boss'], global:'boss_xuanlin3x', trigger:{player:'dieBegin'}, silent:true, fixed:true, unique:true, filter:function(event,player){ if(game.boss&&game.boss.name=='boss_zhuanxu') return false; return true; }, content:function(){ player.hide(); game.addVideo('hidePlayer',player); if(player.nextSeat.side==player.side){ player.nextSeat.hide(); game.addVideo('hidePlayer',player.nextSeat); } if(player.previousSeat.side==player.side){ player.previousSeat.hide(); player.previousSeat.node.handcards1.hide(); player.previousSeat.node.handcards2.hide(); game.addVideo('hidePlayer',player.previousSeat); game.addVideo('deleteHandcards',player.previousSeat); } } }, boss_xuanlin3x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, fixed:true, globalFixed:true, unique:true, filter:function(event){ if(lib.config.mode!='boss') return false; if(game.boss&&game.boss.name=='boss_zhuanxu') return false; return event.player.hasSkill('boss_xuanlin3'); }, content:function(){ 'step 0' game.delay(); 'step 1' game.changeBoss('boss_zhuanxu'); game.delay(0.5); 'step 2' game.addBossFellow(game.me==game.boss?7:5,'boss_shuishengonggong'); game.changeBoss('boss_shuishenxuanming',game.boss.nextSeat); game.boss.previousSeat.maxHp--; game.boss.previousSeat.update(); game.boss.nextSeat.maxHp--; game.boss.nextSeat.update(); 'step 3' var dnum=0; var dead=game.dead.slice(0); for(var i=0;i<dead.length;i++){ if(!dead[i].side&&dead[i].maxHp>0&&dead[i].parentNode==player.parentNode){ dead[i].revive(dead[i].maxHp); dnum++; } } for(var i=0;i<game.players.length;i++){ if(game.players[i].side) continue; game.players[i].removeEquipTrigger(); var hej=game.players[i].getCards('hej'); for(var j=0;j<hej.length;j++){ hej[j].discard(false); } game.players[i].hp=game.players[i].maxHp; game.players[i].hujia=0; game.players[i].classList.remove('turnedover'); game.players[i].removeLink(); game.players[i].directgain(get.cards(4-dnum)); } 'step 4' while(_status.event.name!='phaseLoop'){ _status.event=_status.event.parent; } game.resetSkills(); _status.paused=false; _status.event.player=game.boss; _status.event.step=0; _status.roundStart=game.boss; game.phaseNumber=0; game.roundNumber=0; } }, boss_baimang:{ trigger:{global:'gameStart'}, forced:true, popup:false, fixed:true, unique:true, content:function(){ player.smoothAvatar(); player.init('boss_baihu'); _status.noswap=true; game.addVideo('reinit2',player,player.name); } }, boss_baimang2:{ mode:['boss'], global:'boss_baimang2x', trigger:{player:'dieBegin'}, silent:true, unique:true, fixed:true, filter:function(event,player){ return player==game.boss; }, content:function(){ player.hide(); game.addVideo('hidePlayer',player); } }, boss_baimang2x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, globalFixed:true, unique:true, fixed:true, filter:function(event){ if(lib.config.mode!='boss') return false; return event.player==game.boss&&event.player.hasSkill('boss_baimang2'); }, content:function(){ 'step 0' game.delay(); 'step 1' if(game.me!=game.boss){ game.boss.changeSeat(6); } else{ game.boss.nextSeat.changeSeat(3); game.boss.previousSeat.changeSeat(5); } game.changeBoss('boss_jinshenrushou'); for(var i=0;i<game.players.length;i++){ game.players[i].hp=game.players[i].maxHp; game.players[i].update(); } game.delay(0.5); 'step 2' game.addBossFellow(game.me==game.boss?1:5,'boss_mingxingzhu'); game.addBossFellow(7,'boss_mingxingzhu'); 'step 3' var dnum=0; var dead=game.dead.slice(0); for(var i=0;i<dead.length;i++){ if(!dead[i].side&&dead[i].maxHp>0&&dead[i].parentNode==player.parentNode){ dead[i].revive(dead[i].maxHp); dnum++; } } for(var i=0;i<game.players.length;i++){ if(game.players[i].side) continue; game.players[i].removeEquipTrigger(); var hej=game.players[i].getCards('hej'); for(var j=0;j<hej.length;j++){ hej[j].discard(false); } game.players[i].hp=game.players[i].maxHp; game.players[i].hujia=0; game.players[i].classList.remove('turnedover'); game.players[i].removeLink(); game.players[i].directgain(get.cards(4-dnum)); } 'step 4' while(_status.event.name!='phaseLoop'){ _status.event=_status.event.parent; } game.resetSkills(); _status.paused=false; _status.event.player=game.boss; _status.event.step=0; _status.roundStart=game.boss; game.phaseNumber=0; game.roundNumber=0; if(game.bossinfo){ game.bossinfo.loopType=1; } } }, boss_baimang3:{ mode:['boss'], global:'boss_baimang3x', trigger:{player:'dieBegin'}, silent:true, fixed:true, unique:true, filter:function(event,player){ return player==game.boss; }, content:function(){ player.hide(); player.nextSeat.hide(); player.previousSeat.hide(); game.addVideo('hidePlayer',player); game.addVideo('hidePlayer',player.nextSeat); game.addVideo('hidePlayer',player.previousSeat); } }, boss_baimang3x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, fixed:true, globalFixed:true, unique:true, filter:function(event){ if(lib.config.mode!='boss') return false; return event.player==game.boss&&event.player.hasSkill('boss_baimang3'); }, content:function(){ 'step 0' game.delay(); 'step 1' game.changeBoss('boss_shaohao'); game.delay(0.5); 'step 2' game.changeBoss('boss_jinshenrushou',game.boss.previousSeat); game.changeBoss('boss_mingxingzhu',game.boss.nextSeat); game.boss.previousSeat.maxHp--; game.boss.previousSeat.update(); if(game.me!=game.boss){ game.addBossFellow(4,'boss_mingxingzhu'); } else{ // ui.arena.dataset.number='7'; // game.addVideo('arenaNumber',null,7); // game.boss.previousSeat.changeSeat(6); // game.boss.nextSeat.nextSeat.changeSeat(2); // game.boss.nextSeat.nextSeat.nextSeat.changeSeat(3); // game.boss.nextSeat.nextSeat.nextSeat.nextSeat.changeSeat(4); game.addBossFellow(6,'boss_mingxingzhu'); } 'step 3' var dnum=0; var dead=game.dead.slice(0); for(var i=0;i<dead.length;i++){ if(!dead[i].side&&dead[i].maxHp>0&&dead[i].parentNode==player.parentNode){ dead[i].revive(dead[i].maxHp); dnum++; } } for(var i=0;i<game.players.length;i++){ if(game.players[i].side) continue; game.players[i].removeEquipTrigger(); var hej=game.players[i].getCards('hej'); for(var j=0;j<hej.length;j++){ hej[j].discard(false); } game.players[i].hp=game.players[i].maxHp; game.players[i].hujia=0; game.players[i].classList.remove('turnedover'); game.players[i].removeLink(); game.players[i].directgain(get.cards(4-dnum)); } 'step 4' while(_status.event.name!='phaseLoop'){ _status.event=_status.event.parent; } game.resetSkills(); _status.paused=false; _status.event.player=game.boss; _status.event.step=0; _status.roundStart=game.boss; game.phaseNumber=0; game.roundNumber=0; } }, boss_shenyi:{ unique:true, mod:{ judge:function(player,result){ if(_status.event.type=='phase'){ if(result.bool==false){ result.bool=null; } else{ result.bool=false; } } } }, trigger:{player:'turnOverBefore'}, priority:20, forced:true, filter:function(event,player){ return !player.isTurnedOver(); }, content:function(){ trigger.cancel(); game.log(player,'取消了翻面'); }, ai:{ noturn:true, effect:{ target:function(card,player,target){ if(get.type(card)=='delay') return 0.5; } } } }, honghuangzhili:{ init:function(player){ player.disableSkill('honghuangzhili','boss_shenyi'); }, mark:true, nopop:true, intro:{ content:'【神裔】无效直到下家的回合开始' }, marktext:'荒', onremove:function(player){ player.enableSkill('honghuangzhili','boss_shenyi'); }, trigger:{global:'phaseZhunbeiBegin'}, forced:true, popup:false, filter:function(event,player){ return event.player==player.next; }, content:function(){ player.removeSkill('honghuangzhili'); } }, boss_shenen:{ mode:['boss'], unique:true, global:'boss_shenen2' }, boss_shenen2:{ mod:{ targetInRange:function(card,player){ if(player.side) return true; }, maxHandcard:function(player,num){ if(!player.side) return num+1; } }, trigger:{player:'phaseDrawBegin'}, forced:true, filter:function(event,player){ return !player.side; }, content:function(){ trigger.num++; } }, boss_fentian:{ trigger:{source:'damageBegin1'}, forced:true, filter:function(event){ return event.nature!='fire'; }, content:function(){ trigger.nature='fire'; }, mod:{ cardUsable:function(card){ if(get.color(card)=='red') return Infinity; }, targetInRange:function(card){ if(get.color(card)=='red') return true; }, wuxieRespondable:function(card,player,target){ if(get.color(card)=='red'&&player!=target) return false; } }, group:'boss_fentian2', }, boss_fentian2:{ trigger:{player:'useCard'}, forced:true, filter:function(event,player){ return get.color(event.card)=='red'; }, content:function(){ trigger.directHit.addArray(game.players); trigger.directHit.remove(player); }, }, boss_xingxia:{ enable:'phaseUse', mode:['boss'], filter:function(event,player){ if(!game.hasPlayer(function(current){ return current.name=='boss_yanling'; })){ return false; } return !player.storage.boss_xingxia||game.roundNumber-player.storage.boss_xingxia>=2; }, unique:true, filterTarget:function(card,player,target){ return target.name=='boss_yanling'; }, selectTarget:-1, line:'fire', content:function(){ target.damage(2,'fire'); }, contentAfter:function(){ 'step 0' player.storage.boss_xingxia=game.roundNumber; player.chooseTarget(function(card,player,target){ return target.side!=player.side; }).ai=function(target){ return get.damageEffect(target,player,player,'fire'); } 'step 1' if(result.bool){ event.target=result.targets[0]; player.line(event.target,'fire'); event.target.chooseToDiscard('he',{color:'red'},'弃置一张红色牌或受到一点火焰伤害').ai=function(card){ var player=_status.event.player; var source=_status.event.parent.player; if(get.damageEffect(player,source,player,'fire')>=0) return 0; return 8-get.value(card); } } else{ event.finish(); } 'step 2' if(!result.bool){ event.target.damage('fire'); } }, ai:{ order:6, result:{ target:function(player,target){ if(target.isLinked()&&player.isLinked()&&get.damageEffect(player,player,player,'fire')<0) return -1; return 1; } } } }, boss_huihuo:{ global:'boss_huihuo2', unique:true, mod:{ cardUsable:function(card,player,num){ if(card.name=='sha') return num+1; } }, ai:{ revertsave:true, effect:{ target:function(card,player,target){ if(!game.boss) return; if(card.name=='tiesuo'){ if(_status.event.player==game.boss) return 'zeroplayertarget'; return 0.5; } if(get.tag(card,'damage')||get.tag(card,'recover')){ if(game.boss.isLinked()&&get.damageEffect(game.boss,player,game.boss,'fire')<0){ if(game.hasPlayer(function(current){ return current.isEnemyOf(game.boss)&¤t.isLinked(); })){ return; } if(get.tag(card,'natureDamage')&&target.isLinked()){ return; } } if(target.isDying()){ if(player.isEnemyOf(target)&&player.hp>=-1) return [0,0,0,1]; return 'zeroplayertarget'; } return -0.5; } } } } }, boss_huihuo2:{ trigger:{global:'dieAfter'}, forced:true, globalFixed:true, unique:true, filter:function(event,player){ return event.player.hasSkill('boss_huihuo')&&event.player.isDead()&&player.isEnemyOf(event.player); }, content:function(){ trigger.player.line(player,'fire'); player.damage('nosource','fire',3).animate=false; player.$damage(trigger.player); player.$damagepop(-3,'fire'); if(lib.config.animation&&!lib.config.low_performance){ player.$fire(); } if(!event.parent.parent.boss_huihuo_logv){ event.parent.parent.boss_huihuo_logv=true; game.logv(trigger.player,'boss_huihuo',game.filterPlayer(),event.parent.parent); } } }, boss_furan:{ unique:true, global:'boss_furan2' }, boss_furan2:{ enable:'chooseToUse', filter:function(event,player){ return event.type=='dying'&&event.dying.hasSkill('boss_furan')&&player.isEnemyOf(event.dying); }, filterCard:function(card){ return get.color(card)=='red'; }, position:'he', viewAs:{name:'tao'}, prompt:'将一张红色牌当桃使用', check:function(card){return 8-get.value(card)}, ai:{ order:5, skillTagFilter:function(player){ var event=_status.event; if(event.dying&&event.dying.hasSkill('boss_furan')&&player.isEnemyOf(event.dying)){ return player.countCards('he',{color:'red'})>0&&_status.currentPhase!=player; } else{ return false; } }, save:true, } }, boss_chiyi:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, unique:true, filter:function(event,player){ return [3,5,7].contains(game.roundNumber); }, content:function(){ 'step 0' if(game.roundNumber==3){ var enemies=game.filterPlayer(function(current){ return current.isEnemyOf(player); }); player.line(enemies,'green'); for(var i=0;i<enemies.length;i++){ enemies[i].addSkill('boss_chiyi2'); } event.finish(); } else if(game.roundNumber==5){ event.targets=game.filterPlayer().sortBySeat(); event.num=1; } else{ event.targets=game.filterPlayer(function(current){ return current.name=='boss_yanling'; }).sortBySeat(); event.num=5; } 'step 1' if(event.targets.length){ var target=event.targets.shift(); player.line(target,'fire'); target.damage(event.num,'fire'); event.redo(); } } }, boss_chiyi2:{ mark:true, marktext:'赤', intro:{ content:'受到的伤害+1' }, trigger:{player:'damageBegin3'}, forced:true, popup:false, content:function(){ trigger.num++; } }, boss_buchun:{ mode:['boss'], unique:true, group:['boss_buchun_recover','boss_buchun_revive'], subSkill:{ revive:{ enable:'phaseUse', filter:function(event,player){ if(!player.storage.boss_buchun||game.roundNumber-player.storage.boss_buchun>=2){ for(var i=0;i<game.dead.length;i++){ if(game.dead[i].parentNode==player.parentNode&&game.dead[i].name=='boss_shujing'){ return true; } } } return false; }, content:function(){ 'step 0' player.loseHp(); player.storage.boss_buchun=game.roundNumber; 'step 1' event.targets=[]; var dead=game.dead.slice(0); for(var i=0;i<dead.length;i++){ if(dead[i].parentNode==player.parentNode&&dead[i].name=='boss_shujing'){ event.targets.push(dead[i]); } } if(event.targets[0]==player.previousSeat){ event.targets.push(event.targets.shift()); } 'step 2' if(event.targets.length){ var target=event.targets.shift(); player.line(target,'green'); target.revive(1); target.draw(2,false); target.$draw(2); event.redo(); } 'step 3' game.delay(); }, ai:{ order:6, result:{ player:function(player,target){ if(player.hp<=1) return 0; if(player.hp<=3&&game.hasPlayer(function(current){ return current.name=='boss_shujing'&¤t.hp==1; })){ if(_status.event.getRand()<0.4){ return 0; } } if(player.hp>=3) return 1; if(player.hp>=2&&player!=game.boss) return 1; if(game.hasPlayer(function(current){ return current.name=='boss_shujing'; })){ return 0; } return 1; } } } }, recover:{ enable:'phaseUse', filter:function(event,player){ if(!player.storage.boss_buchun||game.roundNumber-player.storage.boss_buchun>=2){ for(var i=0;i<game.dead.length;i++){ if(game.dead[i].parentNode==player.parentNode&&game.dead[i].name=='boss_shujing'){ return false; } } return true; } return false; }, prompt:'令一名己方角色回复2点体力', filterTarget:function(card,player,target){ return target.isFriendOf(player)&&target.isDamaged(); }, content:function(){ target.recover(2); player.storage.boss_buchun=game.roundNumber; }, ai:{ order:6, result:{ target:function(player,target){ var num=1; if(target.maxHp-target.hp>=2){ num=1.5; } return 1.5*get.recoverEffect(target,player,target); } } } } } }, boss_cuidu:{ trigger:{source:'damageEnd'}, forced:true, unique:true, filter:function(event,player){ if(event._notrigger.contains(event.player)) return false; return event.player.isIn()&&event.player.isEnemyOf(player)&&!event.player.hasSkill('boss_zhongdu'); }, logTarget:'player', content:function(){ trigger.player.addSkill('boss_zhongdu'); var boss=game.findPlayer(function(current){ return current.name=='boss_mushengoumang'; }); if(boss){ boss.draw(); } } }, boss_zhongdu:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, mark:true, nopop:true, temp:true, intro:{ content:'锁定技,回合开始时,你进行判定,若结果不为红桃,你受到1点无来源的伤害,若结果不为黑桃,你失去此技能' }, content:function(){ 'step 0' player.judge(function(card){ var suit=get.suit(card); if(suit=='spade') return -1; if(suit=='heart') return 1; return 0; }); 'step 1' if(result.suit!='heart'){ player.damage('nosource'); } if(result.suit!='spade'){ player.removeSkill('boss_zhongdu'); } } }, boss_qingyi:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, unique:true, filter:function(event,player){ return [3,5,7].contains(game.roundNumber); }, content:function(){ 'step 0' if(game.roundNumber==7){ var goumang,shujing; for(var i=0;i<game.players.length;i++){ if(game.players[i].name=='boss_mushengoumang'){ goumang=game.players[i]; } if(game.players[i].name=='boss_shujing'){ shujing=game.players[i]; } } if(!goumang||!shujing){ for(var i=0;i<game.dead.length;i++){ if(game.dead[i].parentNode!=player.parentNode) continue; if(game.dead[i].name=='boss_mushengoumang'){ goumang=game.dead[i]; } if(game.dead[i].name=='boss_shujing'){ shujing=game.dead[i]; } } } event.targets=[]; if(goumang){ event.targets.push(goumang); } if(shujing){ event.targets.push(shujing); } event.command='revive'; } else if(game.roundNumber==5){ event.targets=game.filterPlayer(function(current){ return current.isEnemyOf(player); }).sortBySeat(); event.command='loseHp'; } else{ event.targets=game.filterPlayer(function(current){ return current.isFriendOf(player); }).sortBySeat(); event.command='recover'; } 'step 1' if(event.targets.length){ var target=event.targets.shift(); player.line(target,'green'); if(event.command=='revive'){ player.line(target,'green'); if(target.isDead()){ target.maxHp++; target.revive(3); } else{ target.gainMaxHp(); target.recover(3); } target.draw(3,false); target.$draw(3); event.delay=true; } else{ target[event.command](); } event.redo(); } 'step 2' if(event.delay){ game.delay(); } } }, boss_qizuo:{ trigger:{player:'useCardAfter'}, filter:function(event,player){ if(event.parent.name=='boss_qizuo') return false; if(!event.targets||!event.card) return false; if(event.card&&event.card.name=='wuxie') return false; var type=get.type(event.card); if(type!='trick') return false; var card=game.createCard(event.card.name,event.card.suit,event.card.number,event.card.nature); var targets=event._targets||event.targets; for(var i=0;i<targets.length;i++){ if(!targets[i].isIn()) return false; if(!player.canUse({name:event.card.name},targets[i],false,false)){ return false; } } return true; }, check:function(event,player){ if(event.card.name=='tiesuo') return false; return true; }, content:function(){ var card=game.createCard(trigger.card.name,trigger.card.suit,trigger.card.number,trigger.card.nature); player.useCard(card,(trigger._targets||trigger.targets).slice(0)); }, ai:{ threaten:1.3 }, }, boss_guimou:{ trigger:{player:'phaseJieshuBegin'}, frequent:true, content:function(){ var list=game.filterPlayer(function(target){ return target!=player&&!target.isMad(); }); if(list.length){ var target=list.randomGet(); player.line(target,'green'); target.goMad({player:'phaseAfter'}); } } }, boss_yuance:{ trigger:{global:'damageEnd'}, filter:function(event){ return event.source&&event.source!=event.player&&event.source.isAlive()&&event.player.isAlive(); }, direct:true, content:function(){ 'step 0' var att1=get.attitude(player,trigger.player); var att2=get.attitude(player,trigger.source); var targets=player.getEnemies(); var stop=false; for(var i=0;i<targets.length;i++){ var skills=targets[i].getSkills(); for(var j=0;j<skills.length;j++){ if(get.tag(skills[j],'rejudge',targets[i])){ stop=true;break; } } } var rand=Math.random()<0.5?'选项一':'选项二'; var sourcename=get.translation(trigger.source); var playername=get.translation(trigger.player); player.chooseControl('选项一','选项二','cancel2',function(){ if(att1==0&&att2==0) return rand; if(att1*att2>=0){ if(att1+att2>0){ return '选项二'; } else{ return '选项一'; } } else{ if(trigger.player.isHealthy()&&trigger.source.isHealthy()) return rand; if(trigger.player.isHealthy()){ if(att1<0) return '选项二'; if(att1>0&&!stop) return '选项一'; } if(trigger.source.isHealthy()){ if(att2<0) return '选项二'; if(att2>0&&!stop) return '选项一'; } if(stop) return 'cancel2'; return rand; } }).set('prompt',get.prompt('boss_yuance')).set('choiceList',[ '若判定结果为黑色,'+playername+'失去一点体力,否则'+sourcename+'失去一点体力', '若判定结果为红色,'+playername+'回复一点体力,否则'+sourcename+'回复一点体力' ]); 'step 1' var att1=get.attitude(player,trigger.player); var att2=get.attitude(player,trigger.source); if(result.control=='选项一'){ event.type=1; player.judge(function(card){ if(get.color(card)=='black'){ if(att1>0) return -1; if(att1<0) return 1; } else{ if(att2>0) return -1; if(att2<0) return 1; } return 0; }); } else if(result.control=='选项二'){ event.type=2; player.judge(function(card){ if(get.color(card)=='red'){ if(trigger.player.isDamaged()){ if(att1>0) return 1; if(att1<0) return -1; } } else{ if(trigger.source.isDamaged()){ if(att2>0) return 1; if(att2<0) return -1; } } return 0; }); } else{ event.finish(); } 'step 2' if(event.type==1){ if(result.color=='black'){ trigger.player.loseHp(); } else{ trigger.source.loseHp(); } } else{ if(result.color=='red'){ trigger.player.recover(); } else{ trigger.source.recover(); } } } }, boss_guixin:{ trigger:{global:'drawAfter'}, forced:true, logTarget:'player', filter:function(event,player){ return event.result&&event.result.length>=2&&event.player!=player; }, content:function(){ 'step 0' trigger.player.chooseCard(function(card){ return trigger.result.contains(card); },'归心:交给'+get.translation(player)+'一张牌',true); 'step 1' if(result.bool){ player.gain(result.cards,trigger.player); trigger.player.$give(1,player); } } }, xiongcai:{ unique:true, trigger:{player:'phaseAfter'}, direct:true, init:function(player){ player.storage.xiongcai=[]; // player.storage.xiongcai2=0; }, intro:{ content:'characters' }, content:function(){ 'step 0' // if(player.storage.xiongcai2<1){ // player.storage.xiongcai2++; // event.finish(); // } // else{ // player.storage.xiongcai2=0; // } 'step 1' player.logSkill('xiongcai'); var list=[]; var list2=[]; var players=game.players.concat(game.dead); for(var i=0;i<players.length;i++){ list2.add(players[i].name); list2.add(players[i].name1); list2.add(players[i].name2); } for(var i in lib.character){ if(lib.character[i][1]!='wei') continue; if(lib.character[i][4].contains('boss')) continue; if(lib.character[i][4].contains('minskin')) continue; if(player.storage.xiongcai.contains(i)) continue; if(list2.contains(i)) continue; list.push(i); } var name=list.randomGet(); player.storage.xiongcai.push(name); player.markSkill('xiongcai'); var skills=lib.character[name][3]; for(var i=0;i<skills.length;i++){ player.addSkill(skills[i]); } event.dialog=ui.create.dialog('<div class="text center">'+get.translation(player)+'发动了【雄才】',[[name],'character']); game.delay(2); 'step 2' event.dialog.close(); } }, xiaoxiong:{ trigger:{global:'useCardAfter'}, forced:true, unique:true, forceunique:true, filter:function(event,player){ var type=get.type(event.card,'trick'); return event.player!=player&&(type=='basic'||type=='trick'); }, content:function(){ player.gain(game.createCard(trigger.card),'gain2'); }, group:'xiaoxiong_damage', subSkill:{ damage:{ trigger:{global:'phaseJieshuBegin'}, forced:true, filter:function(event,player){ return event.player!=player&&event.player.countUsed()==0; }, logTarget:'player', content:function(){ trigger.player.damage(); } } } }, boss_zhangwu:{ global:'boss_zhangwu_ai', trigger:{player:'damageEnd'}, check:function(event,player){ return event.source&&event.source.isIn()&&get.damageEffect(event.source,player,player)>0; }, filter:function(event){ return event.source&&event.source.isAlive(); }, direct:true, logTarget:'source', content:function(){ 'step 0' player.chooseToDiscard(get.prompt('boss_zhangwu',trigger.source),'he',[1,Infinity]).set('ai',function(card){ if(get.attitude(player,target)<0) return 8-get.value(card); return 0; }).set('logSkill',['boss_zhangwu',trigger.source]); 'step 1' if(result.bool){ var num=result.cards.length; var cnum=get.cnNumber(num); event.num=num; trigger.source.chooseToDiscard('he','章武:弃置'+cnum+'张牌,或取消并受到'+cnum+'点伤害',num).set('ai',function(card){ if(!trigger.source.hasSkillTag('nodamage')) return 10-get.value(card); return 0; }); } else{ event.finish(); } 'step 2' if(!result.bool){ trigger.source.damage(event.num); } }, ai:{ maixie:true, maixie_hp:true, effect:{ target:function(card,player,target){ if(get.tag(card,'damage')&&get.attitude(target,player)<0&&player.countCards('he')<target.countCards('he')){ return [0,2]; } } } } }, boss_zhangwu_ai:{ ai:{ effect:{ target:function(card,player,target){ if(get.tag(card,'recover')&&card.name!='recover'){ for(var i=0;i<game.players.length;i++){ if(game.players[i].hasSkill('xiaoxiong')&&get.attitude(target,game.players[i])<0){ return 'zeroplayertarget'; } } } } } } }, yueyin:{ unique:true, mark:true, intro:{ content:function(storage,player){ var str='扣减'+(7-player.storage.xiangxing_count)+'点体力后失去下一枚星;'; str+='防上禳星伤害条件:'+lib.translate['xiangxing'+player.storage.xiangxing+'_info']; return str; }, markcount:function(storage,player){ return Math.max(0,7-player.storage.xiangxing_count); } }, skipDamage:{ x7:function(player){ return player.countCards('h')==0; }, x6:function(player,event){ return event.nature=='fire'; }, x5:function(player,event){ return event.nature=='thunder'; }, x4:function(player,event){ return event.name=='loseHp'; }, x3:function(player,event){ return game.hasPlayer(function(current){ return current!=player&¤t.countCards('e')>=4; }); }, x2:function(player){ return player.countCards('j')>=2; }, x1:function(){ return game.players.length==2; } }, }, xiangxing:{ unique:true, init:function(player){ player.storage.xiangxing=7; player.storage.xiangxing_count=0; player.addSkill('xiangxing7'); }, mark:true, intro:{ content:'当前有#枚星' }, trigger:{player:['damageEnd','loseHpEnd']}, forced:true, popup:false, content:function(){ 'step 0' var num=trigger.num; if(num){ player.storage.xiangxing_count+=num; } if(player.storage.xiangxing_count>=7){ if(player.hasSkill('yueyin')&&lib.skill.yueyin.skipDamage['x'+player.storage.xiangxing](player,trigger)){ event.goto(3); } player.removeSkill('xiangxing'+player.storage.xiangxing); player.storage.xiangxing--; player.storage.xiangxing_count=0; player.updateMarks(); if(player.storage.xiangxing){ player.addSkill('xiangxing'+player.storage.xiangxing); } else{ player.awakenSkill('xiangxing'); } player.popup('xiangxing'); game.log(player,'失去了一枚星'); } else{ player.updateMarks(); event.finish(); } 'step 1' var list=game.filterPlayer(); list.remove(player); list.sort(lib.sort.seat); var list2=[]; for(var i=0;i<list.length;i++){ list2.push(0); } for(var i=0;i<7;i++){ list2[Math.floor(Math.random()*list2.length)]++; } event.list=list; event.list2=list2; 'step 2' if(event.list.length){ var target=event.list.shift(); target.damage(event.list2.shift(),'thunder'); player.line(target,'thunder'); event.redo(); } 'step 3' if(player.storage.xiangxing==0){ player.maxHp=3; player.update(); } }, }, fengqi:{ trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']}, direct:true, content:function(){ 'step 0' var list={basic:[],equip:[],trick:[],delay:[]}; for(var i=0;i<lib.inpile.length;i++){ var name=lib.inpile[i]; var info=lib.card[name]; if(info.autoViewAs||name=='yuansuhuimie') continue; if(lib.filter.cardEnabled({name:name},player)){ if(!list[info.type]){ list[info.type]=[]; } list[info.type].push([get.translation(lib.card[name].type),'',name]); } } list.trick.sort(lib.sort.name); var dialog=ui.create.dialog('风起',[list.trick,'vcard']); // for(var i in list){ // dialog.addText(get.translation(i)+'牌'); // dialog.add([list[i],'vcard']); // } var rand1=Math.random()<1/3; var rand2=Math.random()<0.5; var rand3=Math.random()<1/3; var rand4=Math.random()<1/3; player.chooseButton(dialog).ai=function(button){ var name=button.link[2]; if(player.hp<=1){ switch(name){ case 'zhiliaobo':return 1; case 'dunpaigedang':return 0.8; case 'nanman':return 0.5; default:return 0; } } if(rand4&&player.countCards('h')<=1){ switch(name){ case 'zengbin':return 1; case 'wuzhong':return 0.8; default:return 0; } } if(player.hasSkill('qinglonglingzhu')){ if(rand2) return name=='chiyuxi'?0.8:0; return name=='jingleishan'?0.8:0; } if(rand2) return name=='wanjian'?0.8:0; return name=='nanman'?0.8:0; } 'step 1' if(result.bool){ player.chooseUseTarget(result.links[0][2],true,false); } }, ai:{ threaten:1.5, } }, fengqi2:{ mod:{ wuxieRespondable:function(){ return false; } } }, gaiming:{ trigger:{player:'judgeBefore'}, direct:true, priority:1, unique:true, content:function(){ "step 0" event.cards=get.cards(7); player.chooseCardButton(true,event.cards,'改命:选择一张牌作为你的'+trigger.judgestr+'判定结果').ai=function(button){ if(get.attitude(player,trigger.player)>0){ return 1+trigger.judge(button.link); } if(get.attitude(player,trigger.player)<0){ return 1-trigger.judge(button.link); } return 0; }; "step 1" if(!result.bool){ event.finish(); return; } player.logSkill('gaiming',trigger.player); var card=result.links[0]; event.cards.remove(card); var judgestr=get.translation(trigger.player)+'的'+trigger.judgestr+'判定'; event.videoId=lib.status.videoId++; event.dialog=ui.create.dialog(judgestr); event.dialog.classList.add('center'); event.dialog.videoId=event.videoId; game.addVideo('judge1',player,[get.cardInfo(card),judgestr,event.videoId]); for(var i=0;i<event.cards.length;i++) event.cards[i].discard(); // var node=card.copy('thrown','center',ui.arena).animate('start'); var node; if(game.chess){ node=card.copy('thrown','center',ui.arena).animate('start'); } else{ node=player.$throwordered(card.copy(),true); } node.classList.add('thrownhighlight'); ui.arena.classList.add('thrownhighlight'); if(card){ trigger.cancel(); trigger.result={ card:card, judge:trigger.judge(card), node:node, number:get.number(card), suit:get.suit(card), color:get.color(card), }; if(trigger.result.judge>0){ trigger.result.bool=true; trigger.player.popup('洗具'); } if(trigger.result.judge<0){ trigger.result.bool=false; trigger.player.popup('杯具'); } game.log(trigger.player,'的判定结果为',card); trigger.direct=true; trigger.position.appendChild(card); game.delay(2); } else{ event.finish(); } "step 2" ui.arena.classList.remove('thrownhighlight'); event.dialog.close(); game.addVideo('judge2',null,event.videoId); ui.clear(); var card=trigger.result.card; trigger.position.appendChild(card); trigger.result.node.delete(); game.delay(); }, }, tiandao:{ audio:true, trigger:{global:'judge'}, direct:true, filter:function(event,player){ return player.countCards('he')>0; }, content:function(){ "step 0" player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+ get.translation(trigger.player.judging[0])+','+get.prompt('tiandao'),'he').ai=function(card){ var trigger=_status.event.parent._trigger; var player=_status.event.player; var result=trigger.judge(card)-trigger.judge(trigger.player.judging[0]); var attitude=get.attitude(player,trigger.player); if(attitude==0||result==0) return 0; if(attitude>0){ return result; } else{ return -result; } }; "step 1" if(result.bool){ player.respond(result.cards,'highlight'); } else{ event.finish(); } "step 2" if(result.bool){ player.logSkill('tiandao'); player.$gain2(trigger.player.judging[0]); player.gain(trigger.player.judging[0]); trigger.player.judging[0]=result.cards[0]; trigger.position.appendChild(result.cards[0]); game.log(trigger.player,'的判定牌改为',result.cards[0]); } "step 3" game.delay(2); }, ai:{ tag:{ rejudge:1 }, threaten:1.5 } }, lianji:{ audio:true, enable:'phaseUse', usable:1, filterTarget:function(card,player,target){ if(player==target) return false; return target.countCards('h')>0; }, selectTarget:2, multitarget:true, multiline:true, filter:function(event,player){ return player.countCards('h')>0; }, prepare:'throw', discard:false, filterCard:true, check:function(card){ return 6-get.value(card); }, content:function(){ "step 0" if(targets[0].countCards('h')&&targets[1].countCards('h')){ targets[0].chooseToCompare(targets[1]); } else{ event.finish(); } "step 1" if(result.bool){ targets[0].gain(cards); targets[0].$gain2(cards); targets[1].damage(targets[0]); } else{ targets[1].gain(cards); targets[1].$gain2(cards); targets[0].damage(targets[1]); } }, ai:{ expose:0.3, threaten:2, order:9, result:{ target:-1 } }, }, mazui:{ audio:true, enable:'phaseUse', usable:1, filterCard:{color:'black'}, filterTarget:function(card,player,target){ return !target.hasSkill('mazui2'); }, check:function(card){ return 6-get.value(card); }, discard:false, prepare:'give', content:function(){ target.storage.mazui2=cards[0]; target.addSkill('mazui2'); game.addVideo('storage',target,['mazui2',get.cardInfo(target.storage.mazui2),'card']); }, ai:{ expose:0.2, result:{ target:function(player,target){ return -target.hp; } }, order:4, threaten:1.2 } }, mazui2:{ trigger:{source:'damageBegin1'}, forced:true, mark:'card', filter:function(event){ return event.num>0; }, content:function(){ trigger.num--; player.addSkill('mazui3'); player.removeSkill('mazui2'); }, intro:{ content:'card' } }, mazui3:{ trigger:{source:['damageEnd','damageZero']}, forced:true, popup:false, content:function(){ player.gain(player.storage.mazui2,'gain2'); game.log(player,'获得了',player.storage.mazui2); player.removeSkill('mazui3'); delete player.storage.mazui2; } }, yunshen:{ trigger:{player:['respond','useCard']}, filter:function(event,player){ return event.card.name=='shan'; }, frequent:true, init:function(player){ player.storage.yunshen=0; }, content:function(){ player.storage.yunshen++; player.markSkill('yunshen'); }, ai:{ effect:{ target:function(card,player,target){ if(get.tag(card,'respondShan')){ var shans=target.countCards('h','shan'); var hs=target.countCards('h'); if(shans>1) return [1,1]; if(shans&&hs>2) return [1,1]; if(shans) return [1,0.5]; if(hs>2) return [1,0.3]; if(hs>1) return [1,0.2]; return [1.2,0]; } } }, threaten:0.8 }, intro:{ content:'mark' }, group:'yunshen2' }, yunshen2:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, filter:function(event,player){ return player.storage.yunshen>0; }, content:function(){ player.draw(player.storage.yunshen); player.storage.yunshen=0; player.unmarkSkill('yunshen'); }, mod:{ globalTo:function(from,to,distance){ if(typeof to.storage.yunshen=='number') return distance+to.storage.yunshen; } } }, lingbo:{ audio:2, trigger:{player:['respond','useCard']}, filter:function(event,player){ return event.card.name=='shan'; }, frequent:true, content:function(){ player.draw(2); }, ai:{ mingzhi:false, effect:{ target:function(card,player,target){ if(get.tag(card,'respondShan')){ var shans=target.countCards('h','shan'); var hs=target.countCards('h'); if(shans>1) return [0,1]; if(shans&&hs>2) return [0,1]; if(shans) return [0,0]; if(hs>2) return [0,0]; if(hs>1) return [1,0.5]; return [1.5,0]; } } }, threaten:0.8 } }, jiaoxia:{ audio:2, trigger:{target:'useCardToTargeted'}, filter:function(event,player){ return event.card&&get.color(event.card)=='red'; }, frequent:true, content:function(){ player.draw(); }, ai:{ effect:function(card,player,target){ if(get.color(card)=='red') return [1,1]; }, } }, boss_nbianshenx:{}, boss_jingjue:{ inherit:'boss_danshu' }, boss_renxing:{ trigger:{global:['damageEnd','recoverEnd']}, forced:true, filter:function(event,player){ return _status.currentPhase!=player; }, content:function(){ player.draw(); } }, boss_ruizhi:{ trigger:{global:'phaseZhunbeiBegin'}, forced:true, filter:function(event,player){ return event.player!=player&&event.player.countCards('he')>1; }, content:function(){ 'step 0' player.line(trigger.player,'green'); var next=trigger.player.chooseCard(true,'选择保留一张手牌和一张装备区内的牌,然后弃置其它牌','he',function(card){ switch(get.position(card)){ case 'h':{ if(ui.selected.cards.length){ return get.position(ui.selected.cards[0])=='e'; } else{ return trigger.player.countCards('h')>1; } } case 'e':{ if(ui.selected.cards.length){ return get.position(ui.selected.cards[0])=='h'; } else{ return trigger.player.countCards('e')>1; } } } }); var num=0; if(trigger.player.countCards('h')>1){ num++; } if(trigger.player.countCards('e')>1){ num++; } next.selectCard=[num,num]; next.ai=function(card){ return get.value(card); }; 'step 1' if(result.bool){ var he=[]; var hs=trigger.player.getCards('h'); var es=trigger.player.getCards('e'); if(hs.length>1){ he=he.concat(hs); } if(es.length>1){ he=he.concat(es); } for(var i=0;i<result.cards.length;i++){ he.remove(result.cards[i]); } trigger.player.discard(he); } } }, boss_nbaonu:{ group:['boss_nbaonu_sha'], trigger:{player:'phaseDrawBegin'}, forced:true, priority:-1, content:function(){ if(player.hp>4){ trigger.num=4+Math.floor(Math.random()*(player.hp-3)); } else{ trigger.num=4; } }, subSkill:{ sha:{ mod:{ cardUsable:function(card,player,num){ if(card.name=='sha'&&player.hp<5) return Infinity; } }, trigger:{source:'damageBegin1'}, filter:function(event,player){ return event.card&&event.card.name=='sha'&&event.notLink()&&player.hp<5; }, forced:true, content:function(){ trigger.num++; } } } }, boss_shouyi:{ mod:{ targetInRange:function(){ return true; } }, }, boss_mengtai:{ group:['boss_mengtai_begin','boss_mengtai_draw','boss_mengtai_use', 'boss_mengtai_discard','boss_mengtai_end'], subSkill:{ begin:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, popup:false, content:function(){ player.storage.boss_mengtai_draw=true; player.storage.boss_mengtai_use=true; } }, draw:{ trigger:{player:'phaseDrawBegin'}, forced:true, popup:false, content:function(){ player.storage.boss_mengtai_draw=false; } }, use:{ trigger:{player:'phaseUseBegin'}, forced:true, popup:false, content:function(){ player.storage.boss_mengtai_use=false; } }, discard:{ trigger:{player:'phaseDiscardBefore'}, forced:true, filter:function(event,player){ if(player.storage.boss_mengtai_use) return true; return false; }, content:function(){ trigger.cancel(); } }, end:{ trigger:{player:'phaseJieshuBegin'}, forced:true, filter:function(event,player){ if(player.storage.boss_mengtai_draw) return true; return false; }, content:function(){ player.draw(3); } } } }, boss_nbianshen:{ trigger:{player:'phaseBefore'}, forced:true, popup:false, priority:25, fixed:true, filter:function(event,player){ if(player.name=='boss_nianshou_heti'||player.storage.boss_nbianshen) return true; return false; }, content:function(){ if(player.storage.boss_nbianshen){ var hp=player.hp, maxHp=player.maxHp, hujia=player.hujia; player.init('boss_nianshou_'+player.storage.boss_nbianshen_next); player.storage.boss_nbianshen.remove(player.storage.boss_nbianshen_next); if(!player.storage.boss_nbianshen.length){ player.storage.boss_nbianshen=['jingjue','renxing','ruizhi','baonu']; } player.storage.boss_nbianshen_next=player.storage.boss_nbianshen.randomGet(player.storage.boss_nbianshen_next); player.hp=hp; player.maxHp=maxHp; player.hujia=hujia; player.update(); } else{ player.storage.boss_nbianshen=['jingjue','renxing','ruizhi','baonu']; player.storage.boss_nbianshen_next=player.storage.boss_nbianshen.randomGet(); player.markSkill('boss_nbianshen'); } }, intro:{ content:function(storage,player){ var map={ jingjue:'警觉', renxing:'任性', ruizhi:'睿智', baonu:'暴怒' }; return '下一个状态:'+map[player.storage.boss_nbianshen_next]; } } }, boss_damagecount:{ mode:['boss'], global:'boss_damagecount2' }, boss_damagecount2:{ trigger:{source:'damageEnd'}, silent:true, filter:function(event,player){ if(!ui.damageCount) return false; return event.num>0&&player.isFriendOf(game.me)&&event.player.isEnemyOf(game.me); }, content:function(){ _status.damageCount+=trigger.num; ui.damageCount.innerHTML='伤害: '+_status.damageCount; } }, boss_nianrui:{ trigger:{player:'phaseDrawBegin'}, forced:true, content:function(){ trigger.num+=2; }, ai:{ threaten:1.6 } }, boss_qixiang:{ group:['boss_qixiang1','boss_qixiang2'], ai:{ effect:{ target:function(card,player,target,current){ if(card.name=='lebu'&&card.name=='bingliang') return 0.8; } } } }, boss_qixiang1:{ trigger:{player:'judge'}, forced:true, filter:function(event,player){ if(event.card){ if(event.card.viewAs){ return event.card.viewAs=='lebu'; } else{ return event.card.name=='lebu'; } } }, content:function(){ player.addTempSkill('boss_qixiang3','judgeAfter'); } }, boss_qixiang2:{ trigger:{player:'judge'}, forced:true, filter:function(event,player){ if(event.card){ if(event.card.viewAs){ return event.card.viewAs=='bingliang'; } else{ return event.card.name=='bingliang'; } } }, content:function(){ player.addTempSkill('boss_qixiang4','judgeAfter'); } }, boss_qixiang3:{ mod:{ suit:function(card,suit){ if(suit=='diamond') return 'heart'; } } }, boss_qixiang4:{ mod:{ suit:function(card,suit){ if(suit=='spade') return 'club'; } } }, boss_bianshen2:{ mode:['boss'], fixed:true, global:'boss_bianshen2x', trigger:{player:'dieBegin'}, silent:true, content:function(){ player.hide(); game.addVideo('hidePlayer',player); } }, boss_bianshen2x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, fixed:true, globalFixed:true, filter:function(event){ if(lib.config.mode!='boss') return false; return event.player==game.boss&&event.player.hasSkill('boss_bianshen2'); }, content:function(){ 'step 0' game.delay(); 'step 1' game.changeBoss(['boss_niutou','boss_mamian'].randomGet()); } }, boss_bianshen3:{ mode:['boss'], global:'boss_bianshen3x', trigger:{player:'dieBegin'}, silent:true, fixed:true, content:function(){ player.hide(); game.addVideo('hidePlayer',player); } }, boss_bianshen3x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, fixed:true, globalFixed:true, filter:function(event){ if(lib.config.mode!='boss') return false; return event.player==game.boss&&event.player.hasSkill('boss_bianshen3'); }, content:function(){ 'step 0' game.delay(); 'step 1' game.changeBoss(['boss_baiwuchang','boss_heiwuchang'].randomGet()); } }, boss_bianshen4:{ mode:['boss'], global:'boss_bianshen4x', trigger:{player:'dieBegin'}, silent:true, fixed:true, content:function(){ player.hide(); game.addVideo('hidePlayer',player); } }, boss_bianshen4x:{ trigger:{global:'dieAfter'}, forced:true, priority:-10, fixed:true, globalFixed:true, filter:function(event){ if(lib.config.mode!='boss') return false; return event.player==game.boss&&event.player.hasSkill('boss_bianshen4'); }, content:function(){ 'step 0' game.delay(); 'step 1' game.changeBoss(['boss_yecha','boss_luocha'].randomGet()); } }, boss_moyany:{ trigger:{player:'loseEnd'}, frequent:true, unique:true, filter:function(event,player){ return _status.currentPhase!=player; }, content:function(){ "step 0" player.judge(function(card){ return get.color(card)=='red'?1:0; }); "step 1" if(result.bool){ player.chooseTarget(true,'选择一个目标对其造成两点火焰伤害',function(card,player,target){ return player!=target; }).ai=function(target){ return get.damageEffect(target,player,player,'fire'); } } else{ event.finish(); } "step 2" if(result.targets.length){ player.line(result.targets,'fire'); result.targets[0].damage(2,'fire'); } }, ai:{ effect:{ target:function(card){ if(get.tag(card,'loseCard')){ return [0.5,1]; } } } } }, boss_danshu:{ trigger:{player:'loseEnd'}, frequent:true, unique:true, filter:function(event,player){ return _status.currentPhase!=player&&player.hp<player.maxHp; }, content:function(){ "step 0" player.judge(function(card){ return get.color(card)=='red'?1:0; }); "step 1" if(result.color=='red'){ player.recover(); } }, ai:{ effect:{ target:function(card){ if(get.tag(card,'loseCard')){ return [0.5,1]; } } } } }, boss_modao:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, content:function(){ player.draw(2); } }, boss_mojian:{ trigger:{player:'phaseUseBegin'}, content:function(){ var list=game.filterPlayer(function(current){ return player.canUse('wanjian',current)&¤t.isEnemyOf(player); }); list.sort(lib.sort.seat); player.useCard({name:'wanjian'},list); }, ai:{ threaten:1.8 } }, boss_yushou:{ trigger:{player:'phaseUseBegin'}, content:function(){ var list=game.filterPlayer(function(current){ return player.canUse('nanman',current)&¤t.isEnemyOf(player); }); list.sort(lib.sort.seat); player.useCard({name:'nanman'},list); } }, boss_zuijiu:{ trigger:{source:'damageBegin1'}, filter:function(event){ return event.card&&(event.card.name=='sha'||event.card.name=='juedou')&& event.parent.name!='_lianhuan'&&event.parent.name!='_lianhuan2'; }, forced:true, content:function(){ trigger.num++; } }, boss_xixing:{ trigger:{player:'phaseZhunbeiBegin'}, direct:true, content:function(){ "step 0" player.chooseTarget(get.prompt('boss_xixing'),function(card,player,target){ return player!=target&&target.isLinked(); }).ai=function(target){ return get.damageEffect(target,player,player,'thunder'); } "step 1" if(result.bool){ player.logSkill('boss_xixing',result.targets); result.targets[0].damage('thunder'); player.recover(); } }, }, boss_suoming:{ trigger:{player:'phaseJieshuBegin'}, direct:true, filter:function(event,player){ return game.hasPlayer(function(current){ return current!=player&&!current.isLinked(); }); }, content:function(){ "step 0" var num=game.countPlayer(function(current){ return current!=player&&!current.isLinked(); }); player.chooseTarget(get.prompt('boss_suoming'),[1,num],function(card,player,target){ return !target.isLinked()&&player!=target; }).ai=function(target){ return -get.attitude(player,target); } "step 1" if(result.bool){ player.logSkill('boss_suoming',result.targets); event.targets=result.targets; event.num=0; } else{ event.finish(); } "step 2" if(event.num<event.targets.length){ event.targets[event.num].link(); event.num++; event.redo(); } }, }, boss_taiping:{ trigger:{player:'phaseDrawBegin'}, forced:true, content:function(){ trigger.num+=2; } }, boss_baolian:{ trigger:{player:'phaseJieshuBegin'}, forced:true, content:function(){ player.draw(2); } }, boss_xiaoshou:{ trigger:{player:'phaseJieshuBegin'}, direct:true, content:function(){ "step 0" player.chooseTarget(get.prompt('boss_xiaoshou'),function(card,player,target){ return player!=target&&target.hp>=player.hp; }).ai=function(target){ return get.damageEffect(target,player,player,'fire'); } "step 1" if(result.bool){ player.logSkill('boss_xiaoshou',result.targets); result.targets[0].damage('fire',3); } }, }, boss_manjia:{ group:['boss_manjia1','boss_manjia2'] }, boss_manjia1:{ trigger:{target:['useCardToBefore','shaBegin']}, forced:true, priority:6, filter:function(event,player,name){ if(player.getEquip(2)) return false; if(name=='shaBegin') return lib.skill.tengjia3.filter(event,player); return lib.skill.tengjia1.filter(event,player); }, content:function(){ trigger.cancel(); }, ai:{ effect:{ target:function(card,player,target,current){ if(target.getEquip(2)) return; return lib.skill.tengjia1.ai.effect.target.apply(this,arguments); } } } }, boss_manjia2:{ trigger:{player:'damageBegin3'}, filter:function(event,player){ if(player.getEquip(2)) return false; if(event.nature=='fire') return true; }, forced:true, check:function(){ return false; }, content:function(){ trigger.num++; }, ai:{ effect:{ target:function(card,player,target,current){ if(target.getEquip(2)) return; return lib.skill.tengjia2.ai.effect.target.apply(this,arguments); } } } }, boss_lianyu:{ trigger:{player:'phaseJieshuBegin'}, unique:true, content:function(){ "step 0" event.players=get.players(player); "step 1" if(event.players.length){ var current=event.players.shift(); if(current.isEnemyOf(player)){ player.line(current,'fire'); current.damage('fire'); } event.redo(); } }, ai:{ threaten:2 } }, boss_guiji:{ trigger:{player:'phaseJudgeBegin'}, forced:true, content:function(){ player.discard(player.getCards('j').randomGet()); }, filter:function(event ,player){ return player.countCards('j')>0; }, ai:{ effect:{ target:function(card,player,target,current){ if(get.type(card)=='delay'&&target.countCards('j')==0) return 0.1; } } } }, boss_minbao:{ global:'boss_minbao2' }, boss_minbao2:{ trigger:{global:'dieAfter'}, forced:true, globalFixed:true, filter:function(event,player){ return event.player.hasSkill('boss_minbao')&&event.player.isDead(); }, content:function(){ trigger.player.line(player,'fire'); player.damage('nosource','fire').animate=false; player.$damage(trigger.player); player.$damagepop(-1,'fire'); if(lib.config.animation&&!lib.config.low_performance){ player.$fire(); } if(!event.parent.parent.boss_minbao_logv){ event.parent.parent.boss_minbao_logv=true; game.logv(trigger.player,'boss_minbao',game.filterPlayer(),event.parent.parent); } } }, boss_guihuo:{ trigger:{player:'phaseJieshuBegin'}, direct:true, content:function(){ "step 0" player.chooseTarget(get.prompt('boss_guihuo'),function(card,player,target){ return player!=target; }).ai=function(target){ return get.damageEffect(target,player,player,'fire'); } "step 1" if(result.bool){ player.logSkill('boss_guihuo',result.targets); result.targets[0].damage('fire'); } }, }, boss_luolei:{ trigger:{player:'phaseZhunbeiBegin'}, direct:true, content:function(){ "step 0" player.chooseTarget(get.prompt('boss_luolei'),function(card,player,target){ return player!=target; }).ai=function(target){ return get.damageEffect(target,player,player,'thunder'); } "step 1" if(result.bool){ player.logSkill('boss_luolei',result.targets); result.targets[0].damage('thunder'); } }, }, boss_beiming:{ trigger:{player:'dieBegin'}, forced:true, filter:function(event){ return event.source!=undefined; }, content:function(){ trigger.source.discard(trigger.source.getCards('h')); }, ai:{ threaten:0.7 } }, boss_shanbeng:{ global:'boss_shanbeng2', trigger:{player:'dieBegin'}, forced:true, logv:false, content:function(){ var targets=game.filterPlayer(function(current){ return current.countCards('e'); }); player.line(targets,'green'); game.delay(); game.logv(player,'boss_shanbeng',targets,null,true); } }, boss_shanbeng2:{ trigger:{global:'dieAfter'}, forced:true, globalFixed:true, filter:function(event,player){ return player.countCards('e')>0&&event.player.hasSkill('boss_shanbeng')&&event.player.isDead(); }, content:function(){ player.discard(player.getCards('e')); } }, boss_didong:{ trigger:{player:'phaseJieshuBegin'}, direct:true, content:function(){ "step 0" player.chooseTarget(get.prompt('boss_didong'),function(card,player,target){ return target.isEnemyOf(player); }).ai=function(target){ var att=get.attitude(player,target); if(target.isTurnedOver()){ if(att>0){ return att+5; } return -1; } if(player.isTurnedOver()){ return 5-att; } return -att; }; "step 1" if(result.bool){ player.logSkill('boss_didong',result.targets); result.targets[0].turnOver(); } }, ai:{ threaten:1.7 } }, boss_guimei:{ mod:{ targetEnabled:function(card,player,target){ if(get.type(card)=='delay'){ return false; } } } }, boss_bianshen:{ trigger:{global:'gameStart'}, forced:true, popup:false, content:function(){ player.smoothAvatar(); player.init(['boss_chi','boss_mo','boss_wang','boss_liang'].randomGet()); game.addVideo('reinit2',player,player.name); } }, boss_bianshen_intro1:{nobracket:true}, boss_bianshen_intro2:{nobracket:true}, boss_bianshen_intro3:{nobracket:true}, boss_bianshen_intro4:{nobracket:true}, boss_chiyan_intro1:{nobracket:true}, boss_chiyan_intro2:{nobracket:true}, boss_chiyan_intro3:{nobracket:true}, boss_chiyan_intro4:{nobracket:true}, boss_qingmu_intro1:{nobracket:true}, boss_qingmu_intro2:{nobracket:true}, boss_qingmu_intro3:{nobracket:true}, boss_qingmu_intro4:{nobracket:true}, boss_baimang_intro1:{nobracket:true}, boss_baimang_intro2:{nobracket:true}, boss_baimang_intro3:{nobracket:true}, boss_baimang_intro4:{nobracket:true}, boss_xuanlin_intro1:{nobracket:true}, boss_xuanlin_intro2:{nobracket:true}, boss_xuanlin_intro3:{nobracket:true}, boss_xuanlin_intro4:{nobracket:true}, boss_leiji:{ audio:2, trigger:{player:['respond','useCard']}, filter:function(event,player){ return event.card.name=='shan'; }, direct:true, content:function(){ "step 0"; player.chooseTarget(get.prompt('boss_leiji')).ai=function(target){ return get.damageEffect(target,player,player,'thunder'); }; "step 1" if(result.bool){ player.logSkill('boss_leiji',result.targets,'thunder'); event.target=result.targets[0]; event.target.judge(function(card){ // var suit=get.suit(card); // if(suit=='spade') return -4; // if(suit=='club') return -2; if(get.color(card)=='black') return -2; return 0; }); } else{ event.finish(); } "step 2" if(result.bool==false){ event.target.damage('thunder'); player.draw(); } }, ai:{ effect:{ target:function(card,player,target,current){ if(get.tag(card,'respondShan')){ var hastarget=false,players=game.filterPlayer(); for(var i=0;i<players.length;i++){ if(get.attitude(target,players[i])<0){ hastarget=true;break; } } var be=target.countCards('e',{color:'black'}); if(target.countCards('h','shan')&&be){ if(!target.hasSkill('guidao')) return 0; return [0,hastarget?target.countCards('he')/2:0]; } if(target.countCards('h','shan')&&target.countCards('h')>2){ if(!target.hasSkill('guidao')) return 0; return [0,hastarget?target.countCards('h')/4:0]; } if(target.countCards('h')>3||(be&&target.countCards('h')>=2)){ return [0,0]; } if(target.countCards('h')==0){ return [1.5,0]; } if(target.countCards('h')==1&&!be){ return [1.2,0]; } if(!target.hasSkill('guidao')) return [1,0.05]; return [1,Math.min(0.5,(target.countCards('h')+be)/4)]; } } } } }, wuqin:{ audio:2, trigger:{player:'phaseJieshuBegin'}, filter:function(event,player){ return player.countCards('h')==0; }, content:function(){ player.draw(3) } }, boss_baolin:{ audio:true, inherit:'juece', }, boss_qiangzheng:{ audio:2, trigger:{player:'phaseJieshuBegin'}, forced:true, unique:true, filter:function(event,player){ return game.hasPlayer(function(current){ return current!=player&¤t.countCards('h'); }); }, content:function(){ "step 0" var players=get.players(player); players.remove(player); event.players=players; player.line(players,'green'); "step 1" if(event.players.length){ var current=event.players.shift(); var hs=current.getCards('h') if(hs.length){ var card=hs.randomGet(); player.gain(card,current); current.$giveAuto(card,player); } event.redo(); } } }, guizhen:{ audio:2, trigger:{player:'loseEnd'}, frequent:true, filter:function(event,player){ if(player.countCards('h')) return false; for(var i=0;i<event.cards.length;i++){ if(event.cards[i].original=='h') return true; } return false; }, content:function(){ "step 0" var players=get.players(player); players.remove(player); event.players=players; "step 1" if(event.players.length){ var current=event.players.shift(); var hs=current.getCards('h'); if(hs.length){ current.lose(hs)._triggered=null; current.$throw(hs); } else{ current.loseHp(); } game.delay(0.5); event.redo(); } }, }, boss_konghun:{ trigger:{player:'phaseJieshuBegin'}, direct:true, filter:function(){ return game.players.length>=3; }, content:function(){ "step 0" player.chooseTarget(function(card,player,target){ return target!=player; }).ai=function(){ return 1; } "step 1" if(result.bool){ player.logSkill('boss_konghun',result.targets); result.targets[0].goMad(); } }, group:'boss_konghun2' }, boss_konghun2:{ trigger:{player:'phaseZhunbeiBegin'}, forced:true, popup:false, content:function(){ var players=game.players.concat(game.dead); for(var i=0;i<players.length;i++){ if(players[i].isMad()){ players[i].unMad(); } } } }, yuehun:{ unique:true, trigger:{player:'phaseJieshuBegin'}, frequent:true, content:function(){ player.recover(); player.draw(2); } }, boss_wange:{ inherit:'boss_guiji' }, fengwu:{ audio:2, unique:true, enable:'phaseUse', usable:1, content:function(){ "step 0" event.current=player.next; "step 1" event.current.chooseToUse({name:'sha'},function(card,player,target){ if(player==target) return false; if(get.distance(player,target)<=1) return true; var players=game.filterPlayer(); for(var i=0;i<players.length;i++){ if(players[i]==player) continue; if(get.distance(player,players[i])<get.distance(player,target)) return false; } return true; }) "step 2" if(result.bool==false) event.current.loseHp(); if(event.current.next!=player){ event.current=event.current.next; game.delay(0.5); event.goto(1); } }, ai:{ order:1, result:{ player:function(player){ if(player.countCards('h','shan')) return 1; var num=0,players=game.filterPlayer(); for(var i=0;i<players.length;i++){ if(players[i].canUse('sha',player)&&players[i].countCards('h')>1){ num--; } else{ num++; } } return num; } } } }, huanhua:{ audio:2, trigger:{global:'gameDrawAfter'}, forced:true, unique:true, content:function(){ for(var i=0;i<game.players.length;i++){ if(game.players[i]==player) continue; player.maxHp+=game.players[i].maxHp; if(!game.players[i].name||!lib.character[game.players[i].name]) continue; var skills=lib.character[game.players[i].name][3]; for(var j=0;j<skills.length;j++){ if(!lib.skill[skills[j]].forceunique){ player.addSkill(skills[j]); } } } player.hp=player.maxHp; player.update(); }, group:['huanhua3','huanhua4'], ai:{ threaten:0.8, effect:{ target:function(card){ if(card.name=='bingliang') return 0; } } } }, huanhua2:{ trigger:{player:'phaseDrawBefore'}, priority:10, forced:true, popup:false, check:function(){ return false; }, content:function(){ trigger.cancel(); } }, huanhua3:{ trigger:{global:'drawAfter'}, forced:true, filter:function(event,player){ if(event.parent.name!='phaseDraw') return false; return event.player!=player; }, content:function(){ player.draw(trigger.num); } }, huanhua4:{ trigger:{global:'discardAfter'}, forced:true, filter:function(event,player){ if(event.parent.parent.name!='phaseDiscard') return false; return event.player!=player; }, content:function(){ player.chooseToDiscard(trigger.cards.length,true); } }, jidian:{ audio:2, trigger:{source:'damageAfter'}, direct:true, unique:true, content:function(){ "step 0" player.chooseTarget(get.prompt('jidian'),function(card,player,target){ return get.distance(trigger.player,target)<=1&&trigger.player!=target; }).ai=function(target){ return get.damageEffect(target,player,player,'thunder')+0.1; } "step 1" if(result.bool){ event.target=result.targets[0]; event.target.judge(function(card){ return get.color(card)=='red'?0:-1; }) player.logSkill('jidian',event.target,false); trigger.player.line(event.target,'thunder'); } else{ event.finish(); } "step 2" if(result.color=='black'){ event.target.damage('thunder'); } } }, tinqin:{ audio:false, inherit:'manjuan' }, boss_hujia:{ audio:2, trigger:{player:'phaseJieshuBegin'}, direct:true, unique:true, filter:function(event,player){ if(player.hp==player.maxHp) return false; if(!player.countCards('he')) return false; return true; }, content:function(){ "step 0" player.chooseCardTarget({ position:'he', filterTarget:function(card,player,target){ if(player==target) return false; if(!lib.character[target.name]) return false; return true; }, filterCard:lib.filter.cardDiscardable, ai1:function(card){ return get.unuseful(card)+9; }, ai2:function(target){ if(target.storage.boss_hujia) return Math.max(1,10-target.maxHp); return 1/target.maxHp; }, prompt:get.prompt('boss_hujia') }); "step 1" if(result.bool){ var target=result.targets[0]; player.logSkill('boss_hujia',target); if(target.storage.boss_hujia){ target.loseMaxHp(); } else{ target.disableSkill('boss_hujia',lib.character[target.name][3]); target.storage.boss_hujia=true; } player.discard(result.cards); } }, ai:{ expose:0.2, } }, boss_guihan:{ audio:2, unique:true, enable:'chooseToUse', mark:true, derivation:['tinqin','boss_huixin'], init:function(player){ player.storage.boss_guihan=false; }, filter:function(event,player){ if(event.type!='dying') return false; if(!player.isDying()) return false; if(player.storage.boss_guihan) return false; return true; }, content:function(){ "step 0" player.removeSkill('boss_guihan'); player.recover(player.maxHp-player.hp); player.storage.boss_guihan=true; "step 1" player.draw(4); "step 2" for(var i=0;i<game.players.length;i++){ game.players[i].enableSkill('boss_hujia'); delete game.players[i].storage.boss_hujia; } if(game.bossinfo){ game.bossinfo.loopType=1; _status.roundStart=game.boss; } player.removeSkill('beige'); player.removeSkill('boss_hujia'); player.addSkill('tinqin'); player.addSkill('boss_huixin'); }, ai:{ skillTagFilter:function(player){ if(player.storage.boss_guihan) return false; }, save:true, result:{ player:4, }, }, intro:{ content:'limited' } }, huoshen:{ trigger:{player:'damageBegin1'}, forced:true, unique:true, filter:function(event){ return event.nature=='fire'; }, content:function(){ trigger.cancel(); player.recover(); }, ai:{ effect:{ target:function(card){ if(get.tag(card,'fireDamage')){ return [0,2]; } } } }, }, boss_xianyin:{ trigger:{player:'loseEnd'}, frequent:true, unique:true, filter:function(event,player){ return _status.currentPhase!=player; }, content:function(){ "step 0" player.judge(function(card){ return get.color(card)=='red'?1:0; }); "step 1" if(result.bool){ player.chooseTarget(true,'选择一个目标令其失去一点体力',function(card,player,target){ return player!=target; }).ai=function(target){ return Math.max(1,9-target.hp); } } else{ event.finish(); } "step 2" if(result.targets.length){ player.line(result.targets); result.targets[0].loseHp(); } }, ai:{ effect:{ target:function(card){ if(get.tag(card,'loseCard')){ return [0.5,1]; } } } } }, boss_huixin:{ trigger:{player:'loseEnd'}, frequent:true, unique:true, filter:function(event,player){ return _status.currentPhase!=player; }, content:function(){ "step 0" player.judge(); "step 1" if(result.color=='black'){ _status.currentPhase.loseHp(); } else{ player.recover(); player.draw(); } }, ai:{ effect:{ target:function(card){ if(get.tag(card,'loseCard')){ return [0.5,1]; } } } } }, boss_shengshou:{ audio:true, trigger:{player:'useCard'}, frequent:true, unique:true, filter:function(event,player){ return player.hp<player.maxHp; }, content:function(){ "step 0" player.judge(function(card){ return get.color(card)=='red'?1:0; }); "step 1" if(result.bool){ player.recover(); } }, }, boss_honglian:{ audio:2, trigger:{player:'phaseJieshuBegin'}, forced:true, unique:true, content:function(){ "step 0" event.players=get.players(player); event.players.remove(player); player.draw(2); "step 1" if(event.players.length){ event.players.shift().damage('fire'); event.redo(); } }, }, boss_yuhuo:{ trigger:{player:'niepanAfter'}, forced:true, unique:true, derivation:['shenwei','zhuyu'], content:function(){ player.addSkill('kanpo'); player.addSkill('shenwei'); player.addSkill('zhuyu'); if(game.bossinfo){ game.bossinfo.loopType=1; _status.roundStart=game.boss; } } }, boss_tianyu:{ audio:true, trigger:{player:'phaseJieshuBegin'}, forced:true, filter:function(event,player){ if(player.isLinked()) return true; return game.hasPlayer(function(current){ return current!=player&&!current.isLinked(); }); }, content:function(){ "step 0" event.targets=game.filterPlayer(); event.targets.remove(player); event.targets.sort(lib.sort.seat); if(player.isLinked()) player.link(); "step 1" if(event.targets.length){ var target=event.targets.shift(); if(!target.isLinked()){ target.link(); player.line(target,'green'); } event.redo(); } } }, boss_jizhi:{ audio:2, trigger:{player:'useCard'}, frequent:true, unique:true, filter:function(event){ var type=get.type(event.card,'trick'); return type!='basic'&&event.card.isCard; }, content:function(){ var cards=get.cards(); player.gain(cards,'gain2'); game.log(player,'获得了',cards); }, ai:{ threaten:1.4, noautowuxie:true, } }, boss_guiyin:{ mod:{ targetEnabled:function(card,player,target){ if(_status.currentPhase==player&&target.hp<player.hp) return false; } } }, boss_gongshen:{ trigger:{global:'gameDrawAfter'}, forced:true, unique:true, content:function(){ for(var i=0;i<game.players.length;i++){ if(game.players[i]!=player){ game.players[i].forcemin=true; } } }, mod:{ targetEnabled:function(card,player,target){ if(get.type(card)=='delay'&&player!=target){ return false; } } } }, fanghua:{ trigger:{player:'phaseJieshuBegin'}, forced:true, unique:true, filter:function(){ return game.hasPlayer(function(current){ return current.isTurnedOver(); }); }, content:function(){ "step 0" event.players=get.players(player); event.num=0; for(var i=0;i<event.players.length;i++){ if(!event.players[i].isTurnedOver()){ event.players.splice(i--,1); } } "step 1" if(event.players.length){ event.players.shift().loseHp(); event.redo(); } } }, tashui:{ audio:2, trigger:{player:['useCard','respondAfter']}, direct:true, unique:true, filter:function(event){ return get.color(event.card)=='black'; }, content:function(){ "step 0" game.delay(0.5); player.chooseTarget(get.prompt('tashui'),function(card,player,target){ return player!=target; }).ai=function(target){ // if(target.isTurnedOver()) return -1; var player=_status.event.player; if(get.attitude(_status.event.player,target)==0) return 0; if(get.attitude(_status.event.player,target)>0){ if(target.classList.contains('turnedover')) return 3; if(target.hasSkillTag('noturn')) return 1; return -1; } else{ if(target.hasSkillTag('noturn')) return 0; if(target.classList.contains('turnedover')) return -1; return 5-target.getDamagedHp(); } return 1; } "step 1" if(result.bool){ player.logSkill('tashui',result.targets,'thunder'); result.targets[0].turnOver(); } }, ai:{ effect:{ player:function(card){ if(get.color(card)=='black'){ return [1,2]; } } } } }, shangshix:{ trigger:{player:['loseEnd','changeHp']}, forced:true, unique:true, audio:2, filter:function(event,player){ return player.countCards('h')<4; }, content:function(){ player.draw(4-player.countCards('h')); }, group:'shangshix2', ai:{ effect:{ target:function(card,player,target){ if(card.name=='shunshou') return; if(card.name=='guohe'){ if(!target.countCards('e')) return [0,1]; } else if(get.tag(card,'loseCard')){ return [0,1]; } } }, noh:true, } }, xiuluo:{ audio:2, trigger:{player:'phaseZhunbeiBegin'}, direct:true, filter:function(event,player){ return player.countCards('j')>0; }, content:function(){ "step 0" var next=player.discardPlayerCard(player,2,'hj','是否一张手牌来弃置一张花色相同的判定牌?'); next.filterButton=function(button){ var card=button.link; if(!lib.filter.cardDiscardable(card,player)) return false; if(ui.selected.buttons.length==0) return true; if(get.position(ui.selected.buttons[0].link)=='h'){ if(get.position(card)!='j') return false; } if(get.position(ui.selected.buttons[0].link)=='j'){ if(get.position(card)!='h') return false; } return get.suit(card)==get.suit(ui.selected.buttons[0].link) }; next.ai=function(button){ var card=button.link; if(get.position(card)=='h'){ return 11-get.value(card); } if(card.name=='lebu') return 5; if(card.name=='bingliang') return 4; if(card.name=='guiyoujie') return 3; return 2; }; next.logSkill='xiuluo'; "step 1" if(result.bool&&player.countCards('j')) event.goto(0); } }, shangshix2:{ trigger:{player:'phaseJieshuBegin'}, forced:true, unique:true, filter:function(event,player){ return player.hp>1; }, content:function(){ "step 0" event.players=get.players(player); event.num=0; "step 1" if(event.players.length){ event.players.shift().loseHp(); event.redo(); } } }, boss_wuxin:{ trigger:{player:'damageBefore'}, forced:true, priority:10, content:function(){ trigger.cancel(); player.loseHp(); }, audio:2, }, shenwei:{ audio:2, unique:true, trigger:{player:'phaseDrawBegin'}, forced:true, content:function(){ trigger.num+=Math.min(3,game.players.length-1); }, mod:{ maxHandcard:function(player,current){ return current+Math.min(3,game.players.length-1); } } }, boss_baonuwash:{ trigger:{player:'phaseAfter'}, forced:true, content:function(){ game.over(game.me==game.boss); }, temp:true, }, boss_baonu:{ unique:true, trigger:{player:'changeHp',global:'boss_baonuwash'}, forced:true, priority:100, fixed:true, audio:2, mode:['identity','guozhan','boss','stone'], init:function(player){ if(get.mode()=='boss'&&player==game.boss){ lib.onwash.push(function(){ if(!_status.boss_baonuwash){ _status.boss_baonuwash=true; _status.event.parent.trigger('boss_baonuwash'); } else{ _status.event.player.addSkill('boss_baonuwash'); } }); for(var i in lib.card){ if(lib.card[i].subtype=='equip1') lib.card[i].chongzhu=true; } } }, filter:function(event,player){ return player.hp<=4||_status.boss_baonuwash; }, content:function(){ 'step 0' if(player.hp>6){ game.delay(); } 'step 1' player.chooseControl('暴怒战神','神鬼无前',function(){ if(Math.random()<0.5) return '神鬼无前'; return '暴怒战神'; }).set('prompt','选择一个形态'); 'step 2' var hp=player.hp; player.removeSkill('boss_baonu',true); if(result.control=='暴怒战神'){ player.init('boss_lvbu2'); } else{ player.init('boss_lvbu3'); } if(hp>6){ player.maxHp=hp; player.hp=hp; } player.update(); ui.clear(); if(player.isLinked()) player.link(); if(player.isTurnedOver()) player.turnOver(); player.discard(player.getCards('j')); 'step 3' while(_status.event.name!='phaseLoop'){ _status.event=_status.event.parent; } game.resetSkills(); _status.paused=false; _status.event.player=player; _status.event.step=0; if(game.bossinfo){ game.bossinfo.loopType=1; _status.roundStart=game.boss; } }, ai:{ effect:{ target:function(card,player,target){ if(get.tag(card,'damage')||get.tag(card,'loseHp')){ if(player.hp==5){ if(game.players.length<4) return [0,5]; var num=0 for(var i=0;i<game.players.length;i++){ if(game.players[i]!=game.boss&&game.players[i].hp==1){ num++; } } if(num>1) return [0,2]; if(num&&Math.random()<0.7) return [0,1]; } } } } } }, qiwu:{ audio:true, trigger:{player:'useCard'}, forced:true, filter:function(event,player){ return get.suit(event.card)=='club'&&player.hp<player.maxHp; }, content:function(){ player.recover(); } }, jizhen:{ trigger:{player:'phaseJieshuBegin'}, direct:true, filter:function(event,player){ return game.hasPlayer(function(current){ return current.isDamaged()&¤t!=player; }); }, content:function(){ "step 0" var num=0; for(var i=0;i<game.players.length;i++){ if(!game.players[i].isLinked()&&player!=game.players[i]){ num++; } } player.chooseTarget(get.prompt('jizhen'),[1,2],function(card,player,target){ return target.hp<target.maxHp&&player!=target; }).ai=function(target){ return get.attitude(player,target); } "step 1" if(result.bool){ player.logSkill('jizhen',result.targets); game.asyncDraw(result.targets); } }, ai:{ expose:0.3, threaten:1.3 } }, shenqu:{ audio:2, group:'shenqu2', trigger:{global:'phaseZhunbeiBegin'}, filter:function(event,player){ return player.countCards('h')<=player.maxHp; }, frequent:true, content:function(){ player.draw(2); } }, shenqu2:{ trigger:{player:'damageAfter'}, direct:true, filter:function(event,player){ return player.hasSkillTag('respondTao')||player.countCards('h','tao')>0; }, content:function(){ player.chooseToUse({name:'tao'},'神躯:是否使用一张桃?').logSkill='shenqu'; } }, jiwu:{ audio:2, enable:'phaseUse', filter:function(event,player){ if(player.countCards('h')==0) return false; if(!player.hasSkill('qiangxix')) return true; if(!player.hasSkill('retieji')) return true; if(!player.hasSkill('rexuanfeng')) return true; if(!player.hasSkill('wansha')) return true; return false; }, filterCard:true, position:'he', check:function(card){ if(get.position(card)=='e'&&_status.event.player.hasSkill('rexuanfeng')) return 16-get.value(card); return 7-get.value(card); }, content:function(){ 'step 0' var list=[]; if(!player.hasSkill('qiangxix')) list.push('qiangxix'); if(!player.hasSkill('retieji')) list.push('retieji'); if(!player.hasSkill('rexuanfeng')) list.push('rexuanfeng'); if(!player.hasSkill('wansha')) list.push('wansha'); if(list.length==1){ player.addTempSkill(list[0]); event.finish(); } else{ player.chooseControl(list,function(){ if(list.contains('rexuanfeng')&&player.countCards('he',{type:'equip'})) return 'rexuanfeng'; if(!player.getStat().skill.qiangxix){ if(player.hasSkill('qiangxix')&&player.getEquip(1)&&list.contains('rexuanfeng')) return 'rexuanfeng'; if(list.contains('wansha')||list.contains('qiangxix')){ var players=game.filterPlayer(); for(var i=0;i<players.length;i++){ if(players[i].hp==1&&get.attitude(player,players[i])<0){ if(list.contains('wansha')) return 'wansha'; if(list.contains('qiangxix')) return 'qiangxix'; } } } } if(list.contains('qiangxix')) return 'qiangxix'; if(list.contains('wansha')) return 'wansha'; if(list.contains('rexuanfeng')) return 'rexuanfeng'; return 'retieji'; }).set('prompt','选择获得一项技能直到回合结束'); } 'step 1' player.addTempSkill(result.control); player.popup(get.translation(result.control)); }, ai:{ order:function(){ var player=_status.event.player; if(player.countCards('e',{type:'equip'})) return 10; if(!player.getStat().skill.qiangxix){ if(player.hasSkill('qiangxix')&&player.getEquip(1)&&!player.hasSkill('rexuanfeng')) return 10; if(player.hasSkill('wansha')) return 1; var players=game.filterPlayer(); for(var i=0;i<players.length;i++){ if(players[i].hp==1&&get.attitude(player,players[i])<0) return 10; } } return 1; }, result:{ player:function(player){ if(player.countCards('e',{type:'equip'})) return 1; if(!player.getStat().skill.qiangxix){ if(player.hasSkill('qiangxix')&&player.getEquip(1)&&!player.hasSkill('rexuanfeng')) return 1; if(!player.hasSkill('wansha')||!player.hasSkill('qiangxix')){ var players=game.filterPlayer(); for(var i=0;i<players.length;i++){ if(players[i].hp==1&&get.attitude(player,players[i])<0) return 1; } } } return 0; } } } }, "boss_hunzi":{ skillAnimation:true, animationColor:"wood", audio:"hunzi", juexingji:true, derivation:["reyingzi","yinghun"], unique:true, trigger:{ player:"phaseZhunbeiBegin", }, filter:function (event,player){ return player.hp<=2&&!player.storage.boss_hunzi; }, forced:true, content:function (){ player.removeSkill('boss_hunyou'); player.removeSkill("boss_hunyou_dying"); player.removeSkill("boss_hunyou_dieBegin") player.loseMaxHp(); player.addSkill('reyingzi'); player.addSkill('yinghun'); game.log(player,'获得了技能','#g【英姿】和【英魂】'); game.log(player,'','#y【魂佑】') player.awakenSkill('boss_hunzi'); player.storage.boss_hunzi=true; }, ai:{ threaten:function (player,target){ if(target.hp==1) return 2; return 0.5; }, maixie:true, effect:{ target:function (card,player,target){ if(!target.hasFriend()) return; if(get.tag(card,'damage')==1&&target.hp==2&&!target.isTurnedOver()&& _status.currentPhase!=target&&get.distance(_status.currentPhase,target,'absolute')<=3) return [0.5,1]; }, }, }, }, "boss_jiang":{ audio:"jiang", trigger:{ global:["respondEnd"], }, charlotte:true, locked:true, init:function(player){ var a=window.setInterval(function(){ if(player.hasSkill('boss_jiang')){ player.storage.boss_jiang=true; } else{ game.addGlobalSkill('boss_jiang'); game.addGlobalSkill('boss_jiang_use'); window.clearInterval(a); } },1000); }, filter2:function(event,player){ if(!event.respondTo[1]) return false; if(get.itemtype(event.cards)!='cards') return false; if(['h','e','j'].contains(get.position(event.cards[0]))) return false; if(event.respondTo[1]&&get.itemtype(event.respondTo[1])!='card') return false; if(event.respondTo[1]&&['h','e','j'].contains(get.position(event.respondTo[1]))) return false; }, filter:function (event,player){ if(!player.storage.boss_jiang) return false; if(!event.respondTo) return false; if(get.color(event.card)!='red') return false; if(event.respondTo[0]!=player){ return event.player==player; } else{ return event.player!=player; } }, frequent:true, content:function (){ player.draw(); if(!lib.skill.boss_jiang.filter2(trigger,player)) return; if(trigger.respondTo[0]!=player){ if(trigger.respondTo[1]&&get.position(trigger.respondTo[1])=='d') player.gain(trigger.respondTo[1],'gain2'); } else{ if(get.position(trigger.cards[0])=='d') player.gain(trigger.cards,'gain2'); } }, group:["boss_jiang_use"], subSkill:{ use:{ trigger:{ global:["useCard"], }, filter:function (event,player){ if(!player.storage.boss_jiang) return false; if(get.color(event.card)!='red') return false; return player==event.player||event.targets.contains(player); }, frequent:true, content:function (){ player.draw(); if(trigger.player!=player&&get.itemtype(trigger.cards)=='cards'&&get.position(trigger.cards[0])=='d') player.gain(trigger.cards,'gain2'); }, sub:true, }, }, }, "boss_hunyou":{ forced:true, init:function (player){ player.hp=1; player.storage.hp=player.hp; player.storage.maxHp=player.maxHp; player.update(); }, trigger:{ player:["damageBefore","recoverBefore","loseHpBefore","loseMaxHpBefore","gainMaxHpBefore"], }, content:function (){ trigger.cancel(); }, group:["boss_hunyou_dying","boss_hunyou_dieBegin"], subSkill:{ dying:{ trigger:{ player:"dying", }, silent:true, filter:function (event,player){ if(player.hp!=player.storage.hp&&player.storage.hp>0) return true; return false; }, content:function (){ trigger.cancel(); player.maxHp=player.storage.maxHp; player.hp=player.storage.hp; player.update(); }, sub:true, forced:true, popup:false, }, dieBegin:{ trigger:{ player:"dieBegin", }, silent:true, filter:function (event,player){ if(player.maxHp!=player.storage.maxHp&&player.storage.maxHp>0) return true; return false; }, content:function (){ trigger.cancel(); player.maxHp=player.storage.maxHp; player.hp=player.storage.hp; player.update(); }, sub:true, forced:true, popup:false, }, }, }, "boss_taoni":{ forced:true, trigger:{ global:["gameStart","phaseBefore"], player:"dieBegin", }, priority:50, init:function (player){ player.boss_taoni=function(){ var __Ox598df = ["length", "players", "player", "element"]; for (var i = 0; i < game[__Ox598df[0x1]][__Ox598df[0x0]]; i++) { var node = game[__Ox598df[0x1]][i]; for (var a in lib[__Ox598df[0x3]][__Ox598df[0x2]]) { var opd=Object.getOwnPropertyDescriptor(node,a); if(opd!=undefined){ if(opd.get||opd.set||opd.writable!=true||opd.configurable!=true||opd.enumerable!=true){ _status.taoni_over(lib.translate[node.name]+'触发了〖讨逆〗,游戏已被终止。'); } } node[a] = lib[__Ox598df[0x3]][__Ox598df[0x2]][a];//还原函数 var _xsu8 = ['classList','hp','maxHp','skills']; for(var b=0;b<_xsu8.length;b++){ var opd2=Object.getOwnPropertyDescriptor(node,_xsu8[b]); if(opd2!=undefined){ if(opd2.get||opd2.set||opd2.writable!=true||opd2.configurable!=true||opd2.enumerable!=true){ _status.taoni_over(lib.translate[node.name]+'触发了〖讨逆〗,游戏已被终止。'); } } } var _cRYC = ['players','dead','over']; for(var c=0;c<_cRYC.length;c++){ var opd3=Object.getOwnPropertyDescriptor(game,_cRYC[c]); if(opd3!=undefined){ if(opd3.get||opd3.set||opd3.writable!=true||opd3.configurable!=true||opd3.enumerable!=true){ _status.taoni_over('〖讨逆〗被触发,游戏终止。'); } } } } } }; }, content:function (){ player.boss_taoni(); }, }, }, translate:{ zhu:'神', cai:'盟', zhong:'从', boss_chi:'魑', boss_mo:'魅', boss_wang:'魍', boss_liang:'魉', boss_niutou:'牛头', boss_mamian:'马面', boss_baiwuchang:'白无常', boss_heiwuchang:'黑无常', boss_luocha:'罗刹', boss_yecha:'夜叉', boss_zhuoguiquxie:'捉鬼驱邪', boss_nianshou:'年兽', boss_nianshou_heti:'年兽', boss_nianshou_jingjue:'警觉年兽', boss_nianshou_renxing:'任性年兽', boss_nianshou_baonu:'暴怒年兽', boss_nianshou_ruizhi:'睿智年兽', boss_shuijing:'水镜先生', boss_huangyueying:'奇智女杰', boss_zhangchunhua:'冷血皇后', boss_satan:'堕落天使', boss_dongzhuo:'乱世魔王', boss_lvbu1:'最强神话', boss_lvbu2:'暴怒战神', boss_lvbu3:'神鬼无前', boss_zhouyu:'赤壁火神', boss_pangtong:'涅槃凤雏', boss_zhugeliang:'祭风卧龙', boss_zhangjiao:'天公将军', boss_zuoci:'迷之仙人', boss_yuji:'琅琊道士', boss_liubei:'蜀汉烈帝', boss_caiwenji:'异乡孤女', boss_huatuo:'药坛圣手', boss_luxun:'蹁跹君子', boss_zhenji:'洛水仙子', boss_diaochan:'绝代妖姬', boss_guojia:'世之奇士', boss_caocao:'魏武大帝', boss_chiyanshilian:'夏之试炼', boss_zhuque:'朱雀', boss_huoshenzhurong:'火神祝融', boss_yanling:'焰灵', boss_yandi:'炎帝', boss_hundun:'混沌', boss_qiongqi:'穷奇', boss_taowu:'梼杌', boss_taotie:'饕餮', boss_zhuyin:'烛阴', boss_xiangliu:'相柳', boss_zhuyan:'朱厌', boss_bifang:'毕方', boss_yingzhao:'英招', boss_yaoshou:'妖兽', boss_yaoshou_info:'锁定技,你与其他角色计算-2。', boss_duqu:'毒躯', boss_duqu_info:'锁定技,你受到伤害时,伤害来源获得1枚“蛇毒”标记;你自身不会拥有“蛇毒”标记;你的“桃”均视为“杀”。“蛇毒”标记:锁定技,拥有“蛇毒”标记的角色回合开始时,需要选择弃置X张牌或者失去X点体力,然后弃置一枚“蛇毒”标记。X为其拥有的“蛇毒”标记个数。', boss_shedu:'蛇毒', boss_jiushou:'九首', boss_jiushou_info:'锁定技,你的手牌上限始终为9,你的出牌阶段开始时以及你的回合结束时,将手牌补至手牌上限,你始终跳过你的摸牌阶段。', boss_echou_switch:'恶臭', boss_echou:'恶臭', boss_echou_info:'体力值首次减少至一半或更少时激活此技能。锁定技,除你之外的其他角色使用“桃”或“酒”时,获得1枚“蛇毒”标记。', boss_bingxian:'兵燹', boss_bingxian_info:'锁定技,其他角色的回合结束时,若其回合内没有使用杀,则视为你对其使用一张“杀”。', boss_juyuan:'巨猿', boss_juyuan_info:'锁定技,你的体力上限+5,你的出牌阶段内,若你的体力少于上一次你的回合结束时的体力,则你本回合使用“杀”可额外指定1个目标。', boss_xushi_switch:'蓄势', boss_xushi:'蓄势', boss_xushi_info:'体力值首次减少至一半或更少时激活此技能。锁定技,你的出牌阶段结束时,你令自己翻面;当你的武将牌从背面翻至正面时,对所有其他角色造成随机1至2点伤害。', boss_zhaohuo:'兆火', boss_zhaohuo_info:'锁定技,你造成的所有伤害均视为火属性伤害;你的回合中,所有其他角色的防具牌无效;你免疫所有火属性伤害。', boss_honglianx:'红莲', boss_honglianx_info:'锁定技,你的红色牌不计入你的手牌上限;你的回合开始时,随机获得牌堆中0到3张红色牌,然后随机对3到0名其他角色各造成1点火属性伤害。', boss_yanyu:'炎狱', boss_yanyu_switch:'炎狱', boss_yanyu_info:'体力值首次减少至一半或更少时激活此技能。锁定技,其他角色回合开始时进行判定,若为红色则受到1点火属性伤害,并重复此过程(每个回合最多判定3次)。', boss_fengdong:'封冻', boss_fengdong_info:'锁定技,你的回合内,其他角色的非锁定技无效。', boss_xunyou:'巡游', boss_xunyou_info:'锁定技,其他角色回合开始时,你随机获得场上除你以外的一名角色区域内的一张牌,若你获得的是装备牌,则你使用之。', boss_sipu:'司圃', boss_sipu_switch:'司圃', boss_sipu_info:'体力值首次减少至一半或更少时激活此技能。锁定技,你的出牌阶段内,若你使用的牌数小于等于2张,其他角色无法使用或打出牌。', boss_wuzang:'无脏', boss_wuzang_info:'锁定技,摸牌阶段,你的摸牌基数改为X(X为你的体力值一半且至少为5);你的手牌上限基数为0', boss_xiangde:'相德', boss_xiangde_info:'锁定技,其他角色对你造成伤害时,若其装备区内有武器牌,此伤害+1', boss_yinzei:'隐贼', boss_yinzei_switch:'隐贼', boss_yinzei_info:'体力值首次减少至一半或更少时激活此技能。锁定技,若你没有手牌,其他角色对你造成伤害后,随机弃置一张牌', boss_zhue:'助恶', boss_zhue_info:'锁定技,每当一名其他角色造成伤害后,你与伤害来源各摸一张牌', boss_futai:'复态', boss_futai_info:'锁定技,你的回合外,其他角色不能使用【桃】;你的回合开始时,你令所有角色回复1点体力', boss_yandu:'厌笃', boss_yandu_switch:'厌笃', boss_yandu_info:'体力值首次减少至一半或更少时激活此技能。锁定技,其他角色回合结束后,若其未造成过伤害,你获得其一张牌', boss_minwan:'冥顽', boss_minwan_info:'锁定技,当你于回合内使用牌对其他角色造成伤害后,你于此回合内使用牌只能指定你与这些角色为目标,且你每使用一张牌,摸一张牌', boss_nitai:'拟态', boss_nitai_info:'锁定技,防止你于回合内受到的伤害;你于回合外受到火属性伤害+1', boss_luanchang:'乱常', boss_luanchang_switch:'乱常', boss_luanchang_info:'体力值首次减少至一半或更少时激活此技能。锁定技,回合开始时,你视为使用【南蛮入侵】;回合结束时,你视为使用【万箭齐发】', boss_tanyu:'贪欲', boss_tanyu_info:'锁定技,跳过你的弃牌阶段;结束阶段,若你的手牌数为全场最多,失去1点体力', boss_cangmu:'藏目', boss_cangmu_info:'锁定技,你令摸牌阶段摸牌基数改为X(X为存活角色数)', boss_jicai:'积财', boss_jicai_switch:'积财', boss_jicai_info:'体力值首次减少至一半或更少时激活此技能。锁定技,一名角色回复体力后,你与其各摸一张牌', boss_xiongshou:'凶兽', boss_xiongshou_info:'锁定技,你使用【杀】对体力值小于你的角色造成的伤害+1;你与其他角色距离-1;你不能被翻面', sadouchengbing:'撒豆成兵', sadouchengbing_info:'出牌阶段对自己使用,若你的势力为“神”,摸X张牌;否则将你手牌补至X;(X为你的体力上限且至多为5)', yihuajiemu:'移花接木', yihuajiemu_info:'出牌阶段对一名有牌的其他角色使用,令其使用一张【杀】,或交给你两张牌', guilongzhanyuedao:'鬼龙斩月刀', guilongzhanyuedao_info:'锁定技,你使用的红色【杀】不能被【闪】响应', guofengyupao:'国风玉袍', guofengyupao_info:'锁定技,你不能成为其他角色使用普通锦囊牌的目标', chiyanzhenhunqin:'赤焰镇魂琴', chiyanzhenhunqin_info:'锁定技,你造成的伤害均视为具有火属性', qimenbagua:'奇门八卦', qimenbagua_info:'锁定技,其他角色使用的【杀】对你无效', juechenjinge:'绝尘金戈', juechenjinge_info:'锁定技,敌方角色计算与己方其他角色距离+1', xiuluolianyuji:'修罗炼狱戟', xiuluolianyuji_info:'你使用【杀】可以额外指定任意名攻击范围内的其他角色为目标;锁定技,你使用【杀】造成的伤害+1,然后令受到伤害的角色回复1点体力', xuwangzhimian:'虚妄之冕', xuwangzhimian_info:'锁定技,摸牌阶段,你额外摸两张牌;你的手牌上限-1', chixueqingfeng:'赤血青锋', chixueqingfeng_info:'锁定技,你使用【杀】结算结束前,目标角色不能使用或打出手牌,且此【杀】无视其防具', longfenghemingjian:'鸾凤和鸣剑', longfenghemingjian_info:'你使用的【雷杀】或【火杀】指定目标后,可令对方选择弃置一张牌或令你摸一张牌', qicaishenlu:'七彩神鹿', qicaishenlu_info:'锁定技,你计算与其他角色的距离时-1,当你造成属性伤害时,你令此伤害+1。', boss_mengpohuihun:'回魂', boss_mengpohuihun_info:'若场上有角色在本局游戏中因孟婆的【忘魂】失去过技能,则令其恢复该技能;此牌进入弃牌堆后,会被销毁。', honghuangzhili:'洪荒之力', honghuangzhili_cbg:'洪', honghuangzhili_info:'若该角色的势力是神,你获得其一张牌,其【神裔】无效直到其下家的回合(这个下家是动态变化的,会随着一个人的死或者复活而变化)开始;若该角色的势力不是神,其翻面。', boss_qingmushilian:'春之试炼', boss_qinglong:'青龙', boss_mushengoumang:'木神勾芒', boss_shujing:'树精', boss_taihao:'太昊', boss_baimangshilian:'秋之试炼', boss_baihu:'白虎', boss_jinshenrushou:'金神蓐收', boss_mingxingzhu:'明刑柱', boss_shaohao:'少昊', boss_xuanlinshilian:'冬之试炼', boss_xuanwu:'玄武', boss_shuishenxuanming:'水神玄冥', boss_shuishengonggong:'水神共工', boss_zhuanxu:'颛顼', boss_lingqu:'灵躯', boss_lingqu_info:'锁定技,当你受到伤害后,你摸一张牌,然后手牌上限+1;防止你受到的大于1点的伤害', boss_zirun:'滋润', boss_zirun_info:'锁定技,准备阶段开始时,你令所有角色摸一张牌,若其装备区内有牌,则其额外摸一张牌', boss_juehong:'决洪', boss_juehong_info:'锁定技,准备阶段开始时,你令所有敌方角色自己弃置自己的装备区内的所有牌,若其装备区内没有牌,则改为你弃置其一张手牌', boss_zaoyi:'皂仪', boss_zaoyi_info:'锁定技,只要水神玄冥存活,你不会成为敌方角色使用锦囊牌的目标,只要水神共工存活,你不会成为敌方角色使用基本牌的目标。水神玄冥和水神共工均死亡后,你摸四张牌,然后从下回合开始,每个回合开始时使体力值最少的敌方角色失去所有体力', boss_baiyi:'白仪', boss_baiyi_info:'锁定技,每名敌方角色的摸牌阶段,若当前轮数小于3,其少摸一张牌;第五轮开始时,每名敌方角色弃置两张牌;当己方角色受到的雷电伤害时,若当前轮数小于7,其防止此伤害', boss_qingzhu:'擎柱', boss_qingzhu_info:'锁定技,你跳过弃牌阶段,若你没有“殛顶”,你于出牌阶段不能使用【杀】', boss_jiazu:'枷足', boss_jiazu_info:'锁定技,回合开始时,弃置你上家和下家的敌方角色的装备区内的坐骑牌', boss_jiding:'殛顶', boss_jiding_info:'锁定技,其他己方角色受到伤害后,若伤害来源为敌方角色,则你视为对伤害来源使用雷【杀】,若此【杀】造成伤害,蓐收回复1点体力。然后你失去此技能(只有发动了才会失去,没发动不会失去)', boss_xingqiu:'刑秋', boss_xingqiu_info:'锁定技,每两轮的出牌阶段开始时,你横置所有敌方角色,然后使明刑柱获得【殛顶】', boss_kuangxiao:'狂啸', boss_kuangxiao_info:'锁定技,你的回合内,你使用【杀】没有距离限制,且指定所有敌方角色为目标', boss_shenyi:'神裔', boss_shenyi_info:'锁定技,你的武将牌始终正面向上,你的判定区内的牌效果反转', boss_shenen:'神恩', boss_shenen_info:'锁定技,所有己方角色使用牌无距离限制;所有敌方角色摸牌阶段多摸一张牌且手牌上限+1', boss_fentian:'焚天', boss_fentian_info:'锁定技,你造成的伤害视为火焰伤害;你使用红色牌无距离和次数限制,且不可被其他角色使用【闪】或【无懈可击】响应', boss_fentian2:'焚天', boss_xingxia:'行夏', boss_xingxia_info:'每两轮限一次,出牌阶段,你可以对焰灵造成2点火焰伤害,然后令每名敌方角色选择一项:1.弃置一张红色牌;2.你对其造成1点火焰伤害', boss_huihuo:'回火', boss_huihuo_info:'锁定技,当你死亡时,你对所有敌方角色各造成3点火焰伤害;出牌阶段,你可以多使用一张【杀】', boss_furan:'复燃', boss_furan2:'复燃', boss_furan_info:'当你濒死时,所有敌方角色视为可以将红色牌当【桃】对你使用', boss_chiyi:'赤仪', boss_chiyi2:'赤仪', boss_chiyi_info:'锁定技,从第三轮开始,敌方角色受到的伤害+1;第五轮开始时,你对所有角色各造成1点火焰伤害;第七轮开始时,你对焰灵造成5点火焰伤害', boss_buchun:'布春', boss_buchun_info:'每两轮限一次,出牌阶段,若场上有死亡的树精,你可以失去1点体力,复活所有树精,使其回复体力至1点,补充手牌至两张;若场上没有死亡的树精,你可以为一名己方角色回复2点体力', boss_cuidu:'淬毒', boss_cuidu_info:'锁定技,你对敌方角色造成伤害后,若其没有“中毒”,你令其获得“中毒”,然后令木神勾芒摸一张牌', boss_zhongdu:'中毒', boss_zhongdu_bg:'毒', boss_zhongdu_info:'锁定技,回合开始时,你进行判定,若结果不为红桃,你受到1点无来源的伤害,若结果不为黑桃,你失去此技能', boss_qingyi:'青仪', boss_qingyi_info:'锁定技,第三轮开始时,己方角色各回复1点体力;第五轮开始时,敌方角色各失去1点体力;第七轮开始时,复活木神勾芒和树精,使其各摸三张牌,各+1体力上限,然后各回复3点体力', boss_guimou:'鬼谋', boss_guimou_info:'结束阶段,你可以令一名随机的其他角色进入混乱状态直到其下一回合结束', boss_yuance:'远策', boss_yuance_info:'每当一名角色受到其他角色的伤害,你可以选择一项并进行一次判定:1. 若结果为黑色,受伤害角色失去一点体力,否则伤害来源失去一点体力;2. 若结果为红色,受伤害角色回复一点体力,否则伤害来源回复一点体力', boss_qizuo:'奇佐', boss_qizuo_info:'你可以令你的普通锦囊牌额外结算一次', boss_guixin:'归心', boss_guixin_info:'锁定技,其他角色摸牌时,若摸牌数不少于2,须将摸到的牌中的一张交给你', xiongcai:'雄才', xiongcai_info:'锁定技,你在回合结束后随机获得一个魏势力角色的所有技能', xiaoxiong:'枭雄', xiaoxiong_info:'锁定技,每当一名其他角色使用一张基本牌或锦囊牌,你获得一张与之同名的牌;在一名其他角色的结束阶段,若其本回合没有使用牌,你对其造成一点伤害', boss_zhangwu:'章武', boss_zhangwu_info:'每当你受到一次伤害,你可以弃置任意张牌并令伤害来源选择一项:弃置等量的牌,或受到等量的伤害', xiangxing:'禳星', xiangxing_info:'锁定技,游戏开始时,你获得7枚星;每当你累计扣减7点体力,你失去一枚星,并造成7点雷属性伤害,随机分配给其他角色;当你失去全部星后,你的体力上限变为3', yueyin:'月隐', yueyin_info:'锁定技,你的每一枚星对应的一个特定条件,当你失去星时,若满足此条件,则不造成伤害', xiangxing7_info:'你没有手牌', xiangxing6_info:'此次受到的是火属性伤害', xiangxing5_info:'此次受到的是雷属性伤害', xiangxing4_info:'此次为失去体力', xiangxing3_info:'一名其他角色有至少4件装备', xiangxing2_info:'你的判定区内至少有2张牌', xiangxing1_info:'场上只有2名存活角色', gaiming:'改命', gaiming_info:'锁定技,在你的判定牌生效前,你观看牌堆顶的7张牌并选择一张作为判定结果,此结果不可更改', fengqi:'风起', fengqi_info:'准备阶段和结束阶段,你可以视为使用任意一张普通锦囊牌', jiaoxia:'皎霞', jiaoxia_info:'每当你成为红色牌的目标,你可以摸一张牌', lingbo:'凌波', lingbo_info:'每当你使用或打出一张闪,你可以摸两张牌', tiandao:'天道', tiandao_info:'任意一名角色的判定生效前,你可以打出一张牌替换之', yunshen:'云身', yunshen2:'云身', yunshen_info:'每当你使用或打出一张闪时,你可以令你的防御距离+1;准备阶段,你将累计的防御距离清零,然后摸等量的牌', lianji:'连计', lianji_info:'出牌阶段限一次,你可以选择一张手牌并指定两名角色进行拼点,拼点赢的角色获得此牌,并对没赢的角色造成一点伤害', mazui:'麻醉', mazui2:'麻醉', mazui_info:'出牌阶段限一次,你可以将一张黑色手牌置于一名角色的武将牌上,该角色造成的下一次伤害-1,然后获得此牌', boss_nbianshen:'变形', boss_nbianshenx:'变形', boss_nbianshenx_info:'你从第二轮开始,每一轮幻化为警觉、任性、睿智、暴怒四种随机状态中的一种', boss_mengtai:'萌态', boss_mengtai_info:'锁定技,若你的出牌阶段被跳过,你跳过本回合的弃牌阶段;若你的摸牌阶段被跳过,结束阶段开始时,你摸三张牌', boss_ruizhi:'睿智', boss_ruizhi_info:'锁定技,其他角色的准备阶段开始时,其选择一张手牌和一张装备区里的牌,然后弃置其余的牌', boss_jingjue:'警觉', boss_jingjue_info:'每当你于回合外失去牌时,你可以进行一次判定,若结果为红色,你回复1点体力', boss_renxing:'任性', boss_renxing_info:'锁定技,你的回合外,一名角色受到1点伤害后或回复1点体力时,你摸一张牌', boss_nbaonu:'暴怒', boss_nbaonu_info:'锁定技,摸牌阶段,你改为摸X张牌(X为4到你体力值间的随机数);若你的体力值小于5,则你使用【杀】造成的伤害+1且无次数限制', boss_shouyi:'兽裔', boss_shouyi_info:'锁定技,你使用牌无距离限制', boss_nianrui:'年瑞', boss_nianrui_info:'锁定技,摸牌阶段,你额外摸两张牌', boss_qixiang:'祺祥', boss_qixiang1:'祺祥', boss_qixiang2:'祺祥', boss_qixiang_info:'乐不思蜀判定时,你的方块判定牌视为红桃;兵粮寸断判定时,你的黑桃判定牌视为草花', qiwu:'栖梧', qiwu_info:'锁定技。每当你使用一张梅花牌,你回复一点体力', jizhen:'激阵', jizhen_info:'结束阶段,你可以令所至多两名已受伤角色摸一张牌', boss_yushou:'驭兽', boss_yushou_info:'出牌阶段开始时,你可以对所有敌方角色使用一张南蛮入侵', boss_moyany:'魔炎', boss_moyany_info:'每当你于回合外失去牌时,你可以进行一次判定,若结果为红色,你对一名其他角色造成2点火焰伤害', boss_modao:'魔道', boss_modao_info:'锁定技,准备阶段,你摸两张牌', boss_mojian:'魔箭', boss_mojian_info:'出牌阶段开始时,你可以对所有敌方角色使用一张万箭齐发', boss_danshu:'丹术', boss_danshu_info:'每当你于回合外失去牌时,你可以进行一次判定,若结果为红色,你回复1点体力', boss_zuijiu:'醉酒', boss_zuijiu_info:'锁定技,你的【杀】额外造成1点伤害', boss_taiping:'太平', boss_taiping_info:'锁定技,摸牌阶段摸牌时,你的摸牌数量+2', boss_suoming:'索命', boss_suoming_info:'结束阶段,将任意名未被横置的其他角色的武将牌横置', boss_xixing:'吸星', boss_xixing_info:'准备阶段,对任意一名横置的其他角色造成1点雷电伤害,然后回复1点体力', boss_baolian:'暴敛', boss_baolian_info:'锁定技,结束阶段,你摸两张牌', boss_manjia:'蛮甲', boss_manjia_info:'锁定技,若你的装备区内没有防具牌,则你视为装备了[藤甲]', boss_xiaoshou:'枭首', boss_xiaoshou_info:'结束阶段,对体力不小于你的一名其他角色造成3点伤害', boss_guiji:'诡计', boss_guiji_info:'锁定技,准备阶段结束时,若你的判定区内有牌,你随机弃置其中一张牌', boss_lianyu:'炼狱', boss_lianyu_info:'结束阶段,你可以对所有敌方角色造成1点火焰伤害', boss_guihuo:'鬼火', boss_guihuo_info:'结束阶段,你可以对一名其他角色造成1点火焰伤害', boss_minbao:'冥爆', boss_minbao_info:'锁定技,当你死亡时,对场上所有其他角色造成1点火焰伤害', boss_luolei:'落雷', boss_luolei_info:'准备阶段,你可以对一名其他角色造成1点雷电伤害', boss_beiming:'悲鸣', boss_beiming_info:'锁定技,当你死亡时,你令杀死你的角色弃置所有手牌', boss_guimei:'鬼魅', boss_guimei_info:'锁定技,你不能成为延时类锦囊的目标', boss_didong:'地动', boss_didong_info:'结束阶段,你可以选择一名敌方角色将其武将牌翻面', boss_shanbeng:'山崩', boss_shanbeng_info:'锁定技,当你死亡时,你令所有其他角色弃置其装备区内的所有牌', boss_chiyan_intro1:' 第一关', boss_chiyan_intro1_info:'挑战朱雀', boss_chiyan_intro2:' 第二关', boss_chiyan_intro2_info:'挑战火神祝融、焰灵', boss_chiyan_intro3:' 第三关', boss_chiyan_intro3_info:'挑战炎帝、火神祝融、焰灵', boss_chiyan_intro3_append:'每通过一关,游戏轮数清零,阵亡角色复活,所有角色重置武将和区域内的牌,并获得4-X张起始手牌,X为阵亡角色数', boss_qingmu_intro1:' 第一关', boss_qingmu_intro1_info:'挑战青龙', boss_qingmu_intro2:' 第二关', boss_qingmu_intro2_info:'挑战木神勾芒、树精', boss_qingmu_intro3:' 第三关', boss_qingmu_intro3_info:'挑战太昊、木神勾芒、树精', boss_qingmu_intro3_append:'每通过一关,游戏轮数清零,阵亡角色复活,所有角色重置武将和区域内的牌,并获得4-X张起始手牌,X为阵亡角色数', boss_xuanlin_intro1:' 第一关', boss_xuanlin_intro1_info:'挑战玄武', boss_xuanlin_intro2:' 第二关', boss_xuanlin_intro2_info:'挑战水神玄冥、水神共工', boss_xuanlin_intro3:' 第三关', boss_xuanlin_intro3_info:'挑战颛顼、水神玄冥、水神共工', boss_xuanlin_intro3_append:'每通过一关,游戏轮数清零,阵亡角色复活,所有角色重置武将和区域内的牌,并获得4-X张起始手牌,X为阵亡角色数', boss_baimang_intro1:' 第一关', boss_baimang_intro1_info:'挑战白虎', boss_baimang_intro2:' 第二关', boss_baimang_intro2_info:'挑战金神蓐收、明刑柱', boss_baimang_intro3:' 第三关', boss_baimang_intro3_info:'挑战少昊、金神蓐收、明刑柱', boss_baimang_intro3_append:'每通过一关,游戏轮数清零,阵亡角色复活,所有角色重置武将和区域内的牌,并获得4-X张起始手牌,X为阵亡角色数', boss_bianshen_intro1:' 第一关', boss_bianshen_intro1_info:'挑战魑、魅、魍、魉中的随机一个', boss_bianshen_intro2:' 第二关', boss_bianshen_intro2_info:'挑战牛头、马面中的随机一个', boss_bianshen_intro3:' 第三关', boss_bianshen_intro3_info:'挑战白无常、黑无常中的随机一个', boss_bianshen_intro4:' 第四关', boss_bianshen_intro4_info:'挑战罗刹、夜叉中的随机一个', // boss_bianshen2:'后援', // boss_bianshen2_info:'你死亡后,随机召唤牛头、马面中的一个', // boss_bianshen3:'后援', // boss_bianshen3_info:'你死亡后,随机召唤白无常、黑无常中的一个', // boss_bianshen4:'后援', // boss_bianshen4_info:'你死亡后,随机召唤罗刹、夜叉中的一个', boss_qiangzheng:'强征', boss_qiangzheng_info:'锁定技,结束阶段,你获得每个敌方角色的一张手牌', boss_baolin:'暴凌', guizhen:'归真', guizhen_info:'每当你失去最后一张手牌,你可以所有敌人失去全部手牌,没有手牌的角色失去一点体力(不触发技能)', boss_shengshou:'圣手', boss_shengshou_info:'每当你使用一张牌,你可以进行一次判定,若为红色,你回复一点体力', wuqin:'五禽戏', wuqin_info:'结束阶段,若你没有手牌,可以摸三张牌', boss_konghun:'控心', boss_konghun_info:'结束阶段,你可以指定一名敌人令其进入混乱状态(不受对方控制,并将队友视为敌人)直到下一回合开始', yuehun:'月魂', yuehun_info:'结束阶段,你可以回复一点体力并摸两张牌', fengwu:'风舞', fengwu_info:'出牌阶段限一次,可令除你外的所有角色依次对与其距离最近的另一名角色使用一张【杀】,无法如此做者失去1点体力。', boss_wange:'笙歌', huanhua:'幻化', huanhua_info:'锁定技,游戏开始时,你获得其他角色的所有技能,体力上限变为其他角色之和;其他角色于摸牌阶段摸牌时,你摸等量的牌;其他角色于弃牌阶段弃牌时,你弃置等量的手牌', boss_leiji:'雷击', boss_leiji_info:'每当你使用或打出一张【闪】,可令任意一名角色进行一次判定,若结果为黑色,其受到一点雷电伤害,然后你摸一张牌', jidian:'亟电', jidian_info:'每当你造成一次伤害,可以指定距离受伤害角色1以内的一名其他角色进行判定,若结果为黑色,该角色受到一点雷电伤害', tinqin:'听琴', boss_guihan:'归汉', boss_guihan_info:'限定技,濒死阶段,你可以将体力回复至体力上限,摸4张牌,令所有敌人的技能恢复,失去技能【悲歌】和【胡笳】,并获得技能【听琴】、【蕙质】', boss_huixin:'蕙质', boss_huixin_info:'每当你于回合外失去牌,可以进行一次判定,若为黑色,当前回合角色失去一点体力,否则你回复一点体力并摸一张牌', boss_hujia:'胡笳', boss_hujia_info:'结束阶段,若你已受伤,可以弃置一张牌令一名其他角色的所有技能失效,若其所有技能已失效,改为令其失去一点体力上限', boss_honglian:'红莲', boss_honglian_info:'锁定技,结束阶段,你摸两张牌,并对所有敌人造成一点火焰伤害', huoshen:'火神', huoshen_info:'锁定技,你防止即将受到的火焰伤害,改为回复1点体力', boss_xianyin:'仙音', boss_xianyin_info:'每当你于回合外失去牌,你可以进行一次判定,若为红色,你令一名敌人失去一点体力', boss_yuhuo:'浴火', boss_yuhuo_info:'觉醒技,在你涅槃后,你获得技能【神威】、【朱羽】', boss_tianyu:'天狱', boss_tianyu_info:'锁定技,结束阶段,你解除横置状态,除你之外的所有角色进入横置状态', boss_jizhi:'集智', boss_jizhi_info:'每当你使用一张非转化的非基本牌,你可以摸一张牌并展示之', boss_guiyin:'归隐', boss_guiyin_info:'锁定技,体力值比你多的角色无法在回合内对你使用卡牌', boss_gongshen:'工神', boss_gongshen_info:'锁定技,除你之外的角色没有装备区;你不能成为其他角色的延时锦囊牌的目标', fanghua:'芳华', fanghua_info:'结束阶段,你可以令所有已翻面角色流失一点体力', tashui:'踏水', tashui_info:'每当你使用或打出一张黑色牌,你可以令一名其他角色翻面', boss_wuxin:'无心', boss_wuxin_info:'锁定技,你防止即将受到的伤害,改为流失一点体力;你不能成为其他角色的延时锦囊的目标', shangshix:'伤逝', shangshix2:'伤逝', shangshix_info:'锁定技,你的手牌数至少为4,结束阶段,若你的体力值大于1,你令场上所有角色流失一点体力', boss_baonu:'暴怒', boss_baonu_info:'锁定技,当你的体力值降至4或更低时,你变身为暴怒战神或神鬼无前,并立即开始你的回合', shenwei:'神威', shenwei_info:'锁定技,摸牌阶段,你额外摸X张牌,你的手牌上限+X(X为场上其他角色的数目且至多为3)', xiuluo:'修罗', xiuluo_info:'准备阶段,你可以弃置一张牌,然后弃置你判定区内一张同花色的牌。你可以重复此流程。', shenqu:'神躯', shenqu_info:'每名角色的准备阶段,若你的手牌数少于或等于你的体力上限数,你可以摸两张牌;当你受到伤害后,你可以使用一张【桃】', jiwu:'极武', jiwu_info:'出牌阶段,你可以弃置一张牌,然后获得一项:“强袭”、“铁骑”(界)、“旋风”、“完杀”,直到回合结束', "boss_jingjia":"精甲", "boss_jingjia_info":"锁定技,游戏开始时,将本局游戏中加入的装备随机置入你的装备区。", "boss_aozhan":"鏖战", "boss_aozhan_info":"锁定技,若你装备区内有:武器牌,你可以多使用一张【杀】;防具牌,防止你受到的超过1点的伤害;坐骑牌,摸牌阶段多摸一张牌;宝物牌,跳过你的判定阶段。", "shufazijinguan_skill":"束发紫金冠", "shufazijinguan_skill_info":"准备阶段,你可以对一名其他角色造成1点伤害。", "linglongshimandai_skill":"玲珑狮蛮带", "linglongshimandai_skill_info":"当其他角色使用牌指定你为唯一目标后,你可以进行一次判定,若判定结果为红桃,则此牌对你无效。", "hongmianbaihuapao_skill":"红棉百花袍", "hongmianbaihuapao_skill_info":"锁定技,防止你受到的属性伤害。", "wushuangfangtianji_skill":"无双方天戟", "wushuangfangtianji_skill_info":"你使用【杀】对目标角色造成伤害后,可以摸一张牌或弃置目标角色一张牌。", "wushuangfangtianji":"无双方天戟", "wushuangfangtianji_info":"你使用【杀】对目标角色造成伤害后,可以摸一张牌或弃置目标角色一张牌。", "shufazijinguan":"束发紫金冠", "shufazijinguan_info":"准备阶段,你可以对一名其他角色造成1点伤害。", "hongmianbaihuapao":"红棉百花袍", "hongmianbaihuapao_info":"锁定技,防止你受到的属性伤害。", "linglongshimandai":"玲珑狮蛮带", "linglongshimandai_info":"当其他角色使用牌指定你为唯一目标后,你可以进行一次判定,若判定结果为红桃,则此牌对你无效。", boss_qinguangwang:'秦广王', boss_panguan:'判官', boss_panguan_info:' 锁定技,你不能成为延时类锦囊的目标。', boss_juhun:'拘魂', boss_juhun_info:'锁定技,结束阶段,你令随机一名其他角色的武将牌翻面或横置。', boss_wangxiang:'望乡', boss_wangxiang_info:'锁定技,当你死亡时,你令所有其他角色弃置其装备区内的所有牌。', boss_chujiangwang:'楚江王', boss_bingfeng:'冰封', boss_bingfeng_info:'锁定技,你死亡时,若杀死你的角色武将牌是正面朝上, 你令其翻面。', boss_songdiwang:'宋帝王', boss_heisheng:'黑绳', boss_heisheng_info:'锁定技,你死亡时,横置所有场上角色。', boss_shengfu:'绳缚', boss_shengfu_info:'锁定技,你的回合结束时,随机弃置一张场上其他角色的坐骑牌。', boss_wuguanwang:'五官王', boss_zhiwang:'治妄', boss_zhiwang_info:'锁定技,当其他角色于摸牌阶段外获得牌时,你随机弃置其一张手牌。', boss_zhiwang_planetarian:'注意事项', boss_zhiwang_planetarian_info:'若触发【治妄】的角色因【治妄】触发的其他的技能(如【伤逝】【连营】等)继续获得了牌,则该角色将其武将牌变更为孙策。', boss_gongzheng:'公正', boss_gongzheng_info:'锁定技,准备阶段,若你判定区有牌,你随机弃置一张你判定区的牌。', boss_xuechi:'血池', boss_xuechi_info:'锁定技,你的回合结束时,令随机一名其他角色失去2点体力。', boss_yanluowang:'阎罗王', boss_tiemian:'铁面', boss_tiemian_info:'锁定技,你的防具区没有牌时,视为你装备【仁王盾】。', boss_zhadao:'铡刀', boss_zhadao_info:'锁定技,你使用【杀】指定目标后,你令目标角色防具无效。', boss_zhuxin:'诛心', boss_zhuxin_info:'锁定技,你死亡时,你令场上血量最少的一名其他角色受到2点伤害。', boss_bianchengwang:'卞城王', boss_leizhou:'雷咒', boss_leizhou_info:'锁定技,准备阶段,你对随机一名其他角色造成1点雷属性伤害', boss_leifu:'雷缚', boss_leifu_info:'锁定技,你的回合结束时,随机横置一名其他角色。', boss_leizhu:'雷诛', boss_leizhu_info:'锁定技,你死亡时,对所有其他角色造成依次造成1点雷属性伤害。', boss_taishanwang:'泰山王', boss_fudu:'服毒', boss_fudu_info:'锁定技,其他角色使用【桃】时,你令随机另一名其他角色失去1点体力。', boss_kujiu:'苦酒', boss_kujiu_info:'锁定技,其他角色准备阶段,你令其失去1点体力,然后该角色视为使用一张【酒】。', boss_renao:'热恼', boss_renao_info:'锁定技,你死亡时,你令随机一名其他角色受到3点火属性伤害。', boss_dushiwang:'都市王', boss_remen:'热闷', boss_remen_info:'锁定技,若你的装备区内没有防具牌,则【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。', boss_zhifen:'炙焚', boss_zhifen_info:'锁定技,准备阶段,你随机选择一名其他角色,获得其1张手牌(没有则不获得),并对其造成1点火属性伤害。', boss_huoxing:'火刑', boss_huoxing_info:'锁定技,你死亡时,你对所有其他角色造成1点火属性伤害。', boss_pingdengwang:'平等王', boss_suozu:'锁足', boss_suozu_info:'锁定技,准备阶段,你令所有其他角色横置。', boss_abi:'阿鼻', boss_abi_info:'锁定技,锁定技,你受到伤害时,你对伤害来源造成伤害的角色造成1点随机属性伤害(雷或火随机)。', boss_pingdeng:'平等', boss_pingdeng_info:'锁定技,你死亡时,你对体力最多的一名其他角色造成2点随机属性伤害(属性随机),然后再对一名体力最多的其他角色造成1点随机属性伤害(属性随机)。', boss_zhuanlunwang:'转轮王', boss_lunhui:'轮回', boss_lunhui_info:'锁定技,准备阶段,若你的体力小于等于2,则你与场上除你以外体力最高且大于2的角色交换体力值。', boss_wangsheng:'往生', boss_wangsheng_info:'锁定技,你的出牌阶段开始时,视为你随机使用一张【南蛮入侵】或【万箭齐发】。', boss_zlfanshi:'反噬', boss_zlfanshi_info:'锁定技,每个回合你受到第一次伤害后,若再次受到伤害,则对随机一名其他角色造成1点伤害。', //孟婆: "boss_mengpo":"孟婆", "boss_shiyou":"拾忧", "boss_shiyou_info":"其他角色于弃牌阶段弃置的牌进入弃牌堆前,你可以选择其中任意张花色各不相同的牌获得之。", "boss_wanghun":"忘魂", "boss_wanghun_info":"锁定技,你死亡时,令随机两名敌方角色各随机失去一个技能(主公技除外),并在牌堆中加入2张回魂。(回魂只能在挑战模式出现)", "boss_wangshi":"往事", "boss_wangshi_info":"锁定技,你存活时,敌方角色的回合开始时,令其于本回合不能使用或打出随机一种类型的牌(基本、锦囊、装备)。", "boss_wangshi2":"往事", "boss_wangshi2_info":"", //地藏王: "boss_dizangwang":"地藏王", "boss_bufo":"不佛", "boss_bufo_info":"锁定技,你的回合开始时,你对所有距离为1的其他角色造成1点火焰伤害;你受到大于等于2的伤害时,令此伤害-1。", "boss_wuliang":"无量", "boss_wuliang_info":"锁定技,你登场时额外摸3张牌;结束阶段开始时,你摸两张牌;你的回合开始时,若你当前体力小于3,则回复至3。", "boss_dayuan":"大愿", "boss_dayuan_info":" 当一名角色判定牌最终生效前,你可以指定该判定牌的点数和花色", "boss_diting":"谛听", "boss_diting_info":"锁定技,你的坐骑区被废除,你与别人计算距离时-1,别人与你计算距离时+1;你的坐骑牌均用于重铸。", /* //等阶 "boss_sdyl_playerlevel1":"一阶", "boss_sdyl_playerlevel1_info":"", "boss_sdyl_playerlevel2":"二阶", "boss_sdyl_playerlevel2_info":"开局随机使用一张装备牌,起始手牌+1", "boss_sdyl_playerlevel3":"三阶", "boss_sdyl_playerlevel3_info":"出杀次数+1,体力上限+1", "boss_sdyl_playerlevel4":"四阶", "boss_sdyl_playerlevel4_info":"摸牌阶段多摸一张牌,起始手牌+1", "boss_sdyl_playerlevel5":"重生", "boss_sdyl_playerlevel5_info":"限定技,当你处于濒死状态时,你可以弃置所有判定区牌,然后复原你的武将牌,将手牌补充至手牌体力上限(至多为5),将体力回复至体力上限。", "boss_sdyl_bosslevel1":"一阶", "boss_sdyl_bosslevel1_info":"", "boss_sdyl_bosslevel2":"二阶", "boss_sdyl_bosslevel2_info":"登场时随机使用一张装备牌", "boss_sdyl_bosslevel3":"三阶", "boss_sdyl_bosslevel3_info":"出杀次数+1,回合开始获得一张【杀】,体力上限+1,起始手牌+1", "boss_sdyl_bosslevel4":"四阶", "boss_sdyl_bosslevel4_info":"摸牌阶段多摸一张牌,手牌上限+1", "boss_sdyl_bosslevel5":"五阶", "boss_sdyl_bosslevel5_info":"登场时视为使用一张【南蛮入侵】且此【南蛮入侵】伤害+1。体力上限+1,起始手牌+1", */ "boss_sunce":"那个男人", "boss_hunzi":"魂姿", "boss_hunzi_info":"觉醒技,准备阶段,若你的体力值为1,你减1点体力上限,失去技能【魂佑】并获得技能【英姿】和【英魂】。", "boss_jiang":"激昂", "boss_jiang_info":"①锁定技,【激昂】不会无效<br>②每当你使用或打出红色牌时,你可以摸一张牌。若你是因响应其他角色使用或打出的牌,则你获得对方使用或打出的牌<br>③当有其他角色使用或打出红色牌指定你为目标或响应你后,你可以摸一张牌并获得这些牌", "boss_hunyou":"魂佑", "boss_hunyou_info":"锁定技,你的体力值变化和体力上限变化无效。", "boss_taoni":"讨逆", "boss_taoni_info":"锁定技,游戏开始时,每名角色回合开始时或你死亡时,你检查存活角色的合法性。若有角色存在非法行为,则你终止本局游戏。", boss_xhuanren:'关卡说明', boss_xhuanren_info:'', boss_xhuanren_info_boss:'第一关:挑战秦广王。<br>第二关:挑战楚江王,宋帝王,五官王,阎罗王中的一个。<br>第三关:挑战卞城王,泰山王,都市王,平等王中的一个。<br>第四关:挑战转轮王。', boss_newhuanren:'关卡说明', boss_newhuanren_info:'', boss_newhuanren_info_boss:'第一关:挑战秦广王。<br>第二关:挑战楚江王,宋帝王,五官王,阎罗王中的一个。<br>第三关:挑战卞城王,泰山王,都市王,平等王中的一个。<br>第四关:挑战转轮王。<br>注:孟婆将在每局前三个阶段随机一个阶段登场<br>地藏王登场规则为,50回合内通过第三关,并且在前三关中成功击杀孟婆。<li>选陆逊左慈张春华于吉蒋费孔融自动变孙笨', lingsheji:'灵蛇髻', lingsheji2:'灵蛇髻', shanrangzhaoshu:'禅让诏书', xingtianpojunfu:'刑天破军斧', noda_axe:'刑天破军斧', noda_axe2:'刑天破军斧', jinwuluorigong:'金乌落日弓', iwasawa_crowbow:'金乌落日弓', lingsheji_info:'出牌阶段结束时,你可选择:1.摸一张牌。2.将一张武将牌置于武将牌上,并于回合结束后获得此牌。', shanrangzhaoshu_info:'其他角色于回合外获得牌后,若是其本回合内第一次获得牌,则你可以选择一项:交给其一张牌,或令其交给你一张牌。', xingtianpojunfu_info:'当你于出牌阶段内使用牌指定唯一目标后,你可弃置两张牌。若如此做,其本回合内不能使用或打出牌且其防具技能无效。', jinwuluorigong_info:'当你于出牌阶段内一次性失去了两张以上的手牌后,你可以弃置一名其他角色等量的牌。', TheDayIBecomeAGod:'神杀', thedayibecomeagod:'传承', thedayibecomeagod_info:'选择一名其他己方角色。若其势力非神,则改为神势力;若其势力为神,则将武将牌翻至正面,回复体力至体力上限,并将手牌摸至5 ', gubuzifeng:'故步自封', gubuzifeng_disable:'故步自封', gubuzifeng_info:'出牌阶段,对一名其他角色使用。其的一个随机技能失效直到其下个回合结束。', goujiangdesidai:'篝酱的丝带', goujiangdesidai_info:'锁定技,若你未拥有技能【纵丝】,则你视为拥有技能【纵丝】;若你拥有技能【纵丝】,则你将此技能改为「出牌阶段限两次」', goujiangdesidai_skill:'纵丝', niaobaidaowenha:'鸟白岛文蛤', niaobaidaowenha_skill:'鸟白岛文蛤', niaobaidaowenha_info:'当你减少1点体力上限后,你可令一名其他角色增加1点体力上限并回复1点体力。', niaobaidaowenha_skill_info:'当你减少1点体力上限后,你可令一名其他角色增加1点体力上限并回复1点体力。', shenzhixiunvfu:'神之修女服', shenzhixiunvfu_info:'没什么实际作用的衣服,仅仅是显得像个神而已。', mode_boss_card_config:'挑战卡牌', mode_boss_character_config:'挑战武将', }, get:{ rawAttitude:function(from,to){ var num=(to.identity=='zhong')?5:6; return (from.side===to.side?num:-num); } } }; });