'use strict'; mode.stone={ element:{ player:{ init:function(player){ if(!player.isMin()||player.forcemin){ if(!player.node.actcount){ player.node.actcount=ui.create.div('.actcount.hp',player); } if(typeof player.actcount!=='number'){ player.actcount=2; } player.actused=0; if(!player.actcharacterlist){ player.actcharacterlist=[]; } player.updateActCount(); } }, updateActCount:function(used,countx,current){ if(_status.video){ this.actcount=countx||2; } else{ game.addVideo('updateActCount',this,[used,this.actcount,this.getActCount()]); } for(var i=0;i<10;i++){ if(this.actcount>this.node.actcount.childElementCount){ ui.create.div(this.node.actcount); } else if(this.actcount=0){ this.actcharacterlist[index]=null; } return this; }, dieAfter:function(source){ var dead=this; if(game.me.isDead()){ if(!_status.mylist.length){ _status.friendCount.innerHTML='我方兵力:'+get.cnNumber(0); game.over(false); } else{ game.pause(); _status.deadfriend.push(this); game.additionaldead.push(this); setTimeout(function(){ var player=ui.create.player(); player.classList.add('noidentity'); player.dataset.position=dead.dataset.position; player.side=dead.side; player.actcharacterlist=dead.actcharacterlist; player.animate('replaceme'); player.actcount=game.enemy.actcount; player.actcount=dead.actcount; if(_status.double_character){ player.init(_status.mylist.shift(),_status.mylist.shift()); } else{ player.init(_status.mylist.shift()); } game.players.push(player); ui.arena.appendChild(player); game.addVideo('stoneSwap',null,{ name:player.name, name2:player.name2, position:player.dataset.position, actcount:player.actcount, me:true }); game.swapControl(player); game.arrangePlayers(); player.draw(2+game.enemy.countFellow(),false); game.resume(); game.updateStatusCount(); },lib.config.duration); } } else if(game.enemy.isDead()){ if(!_status.enemylist.length){ _status.enemyCount.innerHTML='敌方兵力:'+get.cnNumber(0); game.over(true); } else{ game.pause(); _status.deadenemy.push(this); game.additionaldead.push(this); setTimeout(function(){ var player=ui.create.player(); player.classList.add('noidentity'); player.dataset.position=dead.dataset.position; player.side=dead.side; player.actcharacterlist=dead.actcharacterlist; player.animate('replaceenemy'); player.actcount=dead.actcount; if(_status.double_character){ player.init(_status.enemylist.shift(),_status.enemylist.shift()); } else{ player.init(_status.enemylist.shift()); } game.players.push(player); game.enemy=player; ui.arena.appendChild(player); game.addVideo('stoneSwap',null,{ name:player.name, name2:player.name2, position:player.dataset.position, actcount:player.actcount, }); game.arrangePlayers(); player.draw(2+game.me.countFellow(),false); game.resume(); game.updateStatusCount(); },lib.config.duration); } } if(source&&source.side!=this.side&&!source.isMin()){ source.draw(2); if(source.getActCount()>0){ source.actused--; } source.updateActCount(); } game.dead.remove(this); game.arrangePlayers(); this.getLeader().removeFellow(this); setTimeout(function(){ dead.delete(); },500); } } }, game:{ reserveDead:true, getVideoName:function(){ var str=get.translation(game.me.name); if(game.me.name2){ str+='/'+get.translation(game.me.name2); } var name=[ str,'炉石 - '+get.config('battle_number')+'人' ]; return name; }, updateStatusCount:function(){ _status.friendCount.innerHTML='我方兵力:'+get.cnNumber(1+_status.mylist.length/(_status.double_character?2:1),true); _status.enemyCount.innerHTML='敌方兵力:'+get.cnNumber(1+_status.enemylist.length/(_status.double_character?2:1),true); }, stoneLoop:function(player){ var next=game.createEvent('phaseLoop'); next.player=player; next.content=function(){ "step 0" player.phase(); event.num=0; "step 1" if(event.num1||target.num('he')>0); }, content:function(){ "step 0" target.discard(target.get('he')); "step 1" if(target.maxHp>1){ target.loseMaxHp(target.maxHp-1); } }, ai:{ result:{ target:function(player,target){ return 1-target.hp-target.num('h')/2; } }, order:5 } }, liumangxingzhen:{ fullskin:true, type:'stonecard', enable:true, filterTarget:function(card,player,target){ return target.isMin(); }, selectTarget:-1, multiline:true, multitarget:true, content:function(){ 'step 0' targets.sort(lib.sort.seat); for(var i=0;i1; }, selectTarget:-1, content:function(){ target.loseMaxHp(target.maxHp-1); }, ai:{ order:9, result:{ target:function(player,target){ if(target.hp>1) return -1; if(target.maxHp>1) return -0.1; return 0; } } } }, emofengdi:{ fullskin:true, type:'stonecard', enable:function(event,player){ if(player.isMin()) return false; return player.canAddFellow(); }, stoneact:5, filterTarget:function(card,player,target){ return target.isMin()&&target.side!=player.side; }, content:function(){ target.getLeader().removeFellow(target); target.side=player.side; player.addFellow(target); }, ai:{ order:9, result:{ target:function(player,target){ return -target.hp; } } } }, konghunshi:{ type:'stonecard', fullskin:true, enable:function(event,player){ if(player.isMin()) return false; return player.canAddFellow(); }, stoneact:4, filterTarget:function(card,player,target){ return target.isMin()&&target.side!=player.side; }, content:function(){ target.getLeader().removeFellow(target); target.side=player.side; player.addFellow(target); target.addSkill('konghunshi_die'); }, ai:{ order:9, result:{ target:function(player,target){ return -target.hp; } } } }, mindieyi:{ fullskin:true, type:'stonecard', enable:true, stoneact:3, filterTarget:function(card,player,target){ return target.isMin(); }, selectTarget:-1, content:function(){ target.turnOver(); }, ai:{ order:7, result:{ target:function(player,target){ if(target.isTurnedOver()) return 1; return -1; } } } }, miefafu:{ type:'stonecard', enable:true, stoneact:1, fullskin:true, filterTarget:function(card,player,target){ return target.isMin(); }, content:function(){ target.turnOver(); }, ai:{ order:6, result:{ target:function(player,target){ if(target.isTurnedOver()) return 1; return -1; } } } }, dianhaishenzhu:{ fullskin:true, type:'stonecard', enable:true, stoneact:1, filterTarget:function(card,player,target){ return target.isMin()&&target.side==player.side&&!target.skills.contains('chaofeng'); }, content:function(){ target.addSkill('chaofeng'); target.markSkill('chaofeng'); game.log(get.translation(target)+'获得了嘲讽'); target.popup('嘲讽'); }, ai:{ order:2, result:{ target:function(player,target){ if(target.hp>=3) return target.hp; return 0; } } } }, yesushengxue:{ fullskin:true, type:'stonecard', enable:true, stoneact:4, filterTarget:function(card,player,target){ return target.isMin()&&target.hp<5; }, content:function(){ if(target.maxHp<5){ target.gainMaxHp(Math.min(2,5-target.maxHp)); } target.recover(2); }, ai:{ order:7, result:{ target:function(player,target){ return 5-target.hp; } } } }, sanghunzhao:{ type:'stonecard', fullskin:true, enable:true, stoneact:3, filterTarget:function(card,player,target){ return target.isMin(); }, selectTarget:-1, multitarget:true, multiline:true, content:function(){ targets.sort(lib.sort.seat); for(var i=0;i0; }).ai=function(target){ return target.num('he'); }; player.line(event.chooser); "step 1" if(result.bool){ event.chooser.line(result.targets[0]); game.delay(); result.targets[0].discard(result.targets[0].get('he')); } } }, stone_weijiang:{ trigger:{source:'fellow'}, forced:true, unique:true, filter:function(event,player){ for(var i=0;i0; }, content:function(){ var enemy=player.getEnemy(); var es=enemy.get('e'); if(es.length){ player.getLeader().line(enemy); game.delay(); enemy.discard(es.randomGet()); // game.log(get.translation(event.enemy)+'将'+get.translation(es)+'收入手牌') } } }, stone_wuguan:{ trigger:{source:'fellow'}, forced:true, unique:true, content:function(){ player.getLeader().addTempSkill('stone_wuguan2','phaseAfter'); } }, stone_wuguan2:{ mod:{ maxHandcard:function(player,num){ return num+2; } }, }, stone_wujiang:{ trigger:{source:'fellow'}, forced:true, unique:true, content:function(){ player.getLeader().draw(2); } }, stone_qunbing:{ trigger:{source:'fellow'}, forced:true, unique:true, content:function(){ player.addSkill('stone_qunbing2'); } }, stone_qunbing2:{ trigger:{player:'phaseDrawBegin'}, forced:true, content:function(){ trigger.num++; player.removeSkill('stone_qunbing2'); } }, stone_qunguan:{ trigger:{source:'fellow'}, forced:true, unique:true, content:function(){ var targets=[]; for(var i=0;iplayer.getLeader().countFellow(); }, content:function(){ "step 0" event.chooser=player.getEnemy(); event.chooser.chooseTarget('皇后:选择己方一名随从令其死亡',function(card,playerx,target){ return target.isMin()&&target.side!=player.side; },true).ai=function(target){ return -target.hp; }; player.line(event.chooser); "step 1" if(result.bool){ event.chooser.line(result.targets[0]); game.delay(); result.targets[0].die(); } } }, stone_yiji:{ trigger:{player:'dieBegin'}, forced:true, filter:function(event){ return event.source!=undefined&&event.source.isMin(); }, content:function(){ trigger.source.addSkill('stone_yiji2'); }, }, stone_yiji2:{ trigger:{global:'dieAfter'}, forced:true, popup:false, unique:true, filter:function(event,player){ return player.skills.contains('stone_yiji2'); }, content:function(){ player.loseHp(); player.removeSkill('stone_yiji2'); } }, _actcount:{ mod:{ cardEnabled:function(card,player){ if(player.isMin()){ return; } if(_status.currentPhase!=player) return; var stoneact=get.info(card).stoneact; if(typeof stoneact!='number'){ stoneact=1; } if(player.getActCount()+stoneact>player.actcount) return false; } }, trigger:{player:'phaseBegin'}, forced:true, popup:false, filter:function(event,player){ return !player.isMin(); }, content:function(){ player.actused=0; if(player.side){ player.actcount=player.getEnemy().actcount; } else{ player.actcount=player.getEnemy().actcount+1; } if(player.actcount>6){ player.actcount-=5; } player.updateActCount(); } }, _actcount2:{ trigger:{player:'useCard'}, forced:true, popup:false, filter:function(event,player){ return !player.isMin(); }, content:function(){ var stoneact=get.info(trigger.card).stoneact; if(typeof stoneact==='number'){ player.actused+=stoneact-1; } player.updateActCount(); } }, stonesha:{ unique:true, enable:['chooseToUse','chooseToRespond'], filterCard:{type:'equip'}, viewAs:{name:'sha'}, check:function(){return 1}, filter:function(event,player){ return player.num('h',{type:'equip'})>0; }, viewAsFilter:function(player){ return player.num('h',{type:'equip'})>0; }, ai:{ skillTagFilter:function(player){ return player.num('h',{type:'equip'})>0; }, respondSha:true, order:4, useful:-1, value:-1 } }, stoneshan:{ unique:true, enable:['chooseToRespond'], viewAs:{name:'shan'}, filterCard:{type:'stonecharacter'}, check:function(){return 1}, filter:function(event,player){ return player.num('h',{type:'stonecharacter'})>0; }, viewAsFilter:function(player){ return player.num('h',{type:'stonecharacter'})>0; }, ai:{ skillTagFilter:function(player){ return player.num('h',{type:'stonecharacter'})>0; }, respondShan:true, order:4, useful:-1, value:-1 } }, stonedraw:{ trigger:{player:'phaseDrawBegin'}, forced:true, popup:false, content:function(){ trigger.num--; } } }, translate:{ stone_weibing:'魏兵', stone_weibing_info:'你出场时,已方主将可以弃置对方一名随从的所有牌', stone_weiguan:'魏官', stone_weiguan_info:'你出场时,已方主将可以令已方一名其他角色摸一张牌', stone_weijiang:'魏将', stone_weijiang_info:'你出场时,已方主将可以对对方一名随从造成一点伤害', stone_shubing:'蜀兵', stone_shubing_info:'你出场时,立即将武将牌翻至正面', stone_shuguan:'蜀官', stone_shuguan2:'蜀官', stone_shuguan_info:'你出场时,已方主将于本回合结束阶段摸一张牌', stone_shujiang:'蜀将', stone_shujiang_info:'你出场时,已方主将可视为对一名敌方角色使用一张杀', stone_wubing:'吴兵', stone_wubing_info:'你出场时,敌方主将随机弃置一张装备牌', stone_wuguan:'吴官', stone_wuguan_info:'你出场时,已方主将本回合手牌上限+2', stone_wujiang:'吴将', stone_wujiang_info:'你出场时,已方主将摸两张牌', stone_qunbing:'群兵', stone_qunbing2:'群兵', stone_qunbing_info:'你出场后的第一个摸牌阶段摸牌数+1', stone_qunguan:'群官', stone_qunguan_info:'你出场时,所有其他随从各摸一张牌', stone_qunjiang:'群将', stone_qunjiang_info:'你出场时,敌方随从弃置所有牌', stone_daoshi:'道士', stone_daoshi_info:'回合开始阶段,若你没有手牌,你摸一张牌', stone_sanxian:'散仙', stone_sanxian_info:'你死亡前,已方主将可令一名敌方随从失去1点体力', stone_banxian:'半仙', stone_banxian_info:'你死亡后,场上所有其他随从失去1点体力', stone_yisheng:'医生', stone_yinshi:'隐士', stone_yinshi_info:'在你的回合开始前,不能成为任何卡牌的目标', stone_gongzhu:'公主', stone_genv:'歌女', stone_wunv:'舞女', stone_huanghou:'皇后', stone_huanghou_info:'你出场时,若敌方随从数多于己方,敌方主将须选择一名随从令其死亡', stone_feipin:'王妃', stone_yiji:'艺伎', stone_yiji_info:'杀死你的随从失去一点体力', stone_daogu:'道姑', stone_daogu_info:'回合结束阶段,若你没有手牌,你摸一张牌', stonesha:'冲锋', stonesha_info:'锁定技,你的装备牌均视为杀', stoneshan:'格挡', stoneshan_info:'锁定技,你的随从牌均视为闪', stonecharacter:'随从', shengerpingdeng:'生而平等', shengerpingdeng_info:'将所有随从体力上限降为1', emofengdi:'恶魔之眼', emofengdi_info:'限主将使用,将一名敌方随从吸收为已方', konghunshi:'控魂石', konghunshi_info:'限主将使用,将一名敌方随从吸收为已方,并令其于下个回合结束后死亡', konghunshi_die:'控魂石', konghunshi_die_info:'下个回合结束后死亡', mindieyi:'冥蝶翼', mindieyi_info:'将场上所有随从翻面', miefafu:'灭法符', miefafu_info:'将目标随从翻面', liumangxingzhen:'六芒星阵', liumangxingzhen_info:'令场上所有随从立即死亡(无法触发死亡技能),回复两点体力', dianhaishenzhu:'颠海神珠', dianhaishenzhu_info:'令目标随从获得嘲讽', chaofeng:'嘲讽', chaofeng_info:'同阵营的无嘲讽角色不以能成为杀或决斗的目标', yesushengxue:'耶稣圣血', yesushengxue_info:'令一名随从增加两点体力上限(不能超过5)并回复两点体力', sanghunzhao:'丧魂爪', sanghunzhao_info:'令场上所有随从失去一点体力', jintiao:'荆条', jintiao_info:'弃置一名随从的所有牌,并令其体力上限减至1', zhaohunfan:'招魂幡', zhaohunfan_info:'令双方各一名随从立即死亡', fengraozhijiao:'丰饶之角', fengraozhijiao_info:'令一名随从回复全部体力', stonecard:'法术' }, ai:{ get:{ attitude:function(from,to){ var num; if(to.isMin()&&!to.skills.contains('chaofeng')){ num=5; } else{ num=6; } return num*(from.side==to.side?1:-1); } } }, config:['battle_number','double_character','double_hp','ban_weak','free_choose','change_choice'], help:{ '炉石模式':'
  • 游戏流程类似1v1,场上有两名主将进行对抗'+ '
  • 主将出牌阶段的出牌数量(行动值)有上限,先手为2,后手为3,装备牌不计入出牌上限
  • 游戏每进行一轮,主将的出牌上限+1,超过6时减至2并重新累加'+ '
  • 牌堆中随机加入总量1/3的随从牌,使用之可召唤一个随从,随从出场时背面朝上。每一方在场的随从数不能超过4
  • 随从于摸牌阶段摸牌基数为1,随从的随从牌均视为闪,装备牌均视为杀
  • '+ '随从与其他所有角色相互距离基数为1
  • '+ '主将杀死对方随从后获得一个额外的行动值并摸两张牌,杀死己方随从无惩罚,随从杀死随从无效果'+ '
  • 牌堆中随机加入总量1/6的法术牌,效果主要与随从有关,法术牌根据强度不同可能会消耗额外的行动值'+ '
  • 主将可重铸随从牌,但回合内总的重铸次数不能超过3,随从不能重铸任何牌(包括铁索等默认可以重铸的牌)'+ '
  • 嘲讽:若一方阵营中有嘲讽角色,则同阵营的无嘲讽角色不以能成为杀或决斗的目标'+ '
  • 行动顺序为先主将后随从。主将或随从死亡后立即移出游戏,主将死亡后替补登场,替补登场时摸2+X张牌,X为对方存活的随从数,无替补时游戏结束' } }